Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php @eval("?>".base64_decode("PD9waHAKJGRiID0gbmV3IFNldHRpbmdzOwokZGJfY29uPW15c3FsX2Nvbm..
Decoded Output download
?>b'<?php
$db = new Settings;
$db_con=mysql_connect($db->DATABASE[\'host\'], $db->DATABASE[\'username\'], $db->DATABASE[\'password\']) or die (\'Err:\'.$db_err);
mysql_select_db($db->DATABASE[\'database\']) or die (\'Err:\'.$db_err);
function qry_run($qry){
$QrY = mysql_query($qry);
if ($QrY)
{
return $QrY;
}else{
echo mysql_error();
die;
}
}
function num_rec($qry){
return mysql_num_rows($qry);
}
function ch_chkb($val){ if (isset($_REQUEST[$val])) { return $_REQUEST[$val]; }else{ return "No"; }}
function fetch_rec($qry){
return mysql_fetch_array($qry);
}
function ch_lvla($val)
{
if (is_numeric($val))
{
return mysql_real_escape_string(intval($val));
}else{
return 0;
}
}
function ch_lvl($val)
{
if (isset($_REQUEST[$val]))
{
if (is_numeric($_REQUEST[$val]))
{
return $_REQUEST[$val];
}else{
return 0;
}
}else{
return 0;
}
}
function ch_page($val){
if (isset($_REQUEST[$val])) {
if (is_numeric($_REQUEST[$val])) {
$pvalue = mysql_real_escape_string(intval($_REQUEST[$val]));
return $pvalue;
}else{ return 1; } }else{ return 1; }}
function ch_p($val)
{
if (isset($_REQUEST[$val]))
{
$array = array(\'http\',\'update\',\'select\',\'delete\',\'tbl_users\',\'tbl_main\',\'tbl_prods\',\'tbl_admin\',\'union\');
$pvalue = mysql_real_escape_string($_REQUEST[$val]);
return str_ireplace($array,"",$pvalue);
}else{
return "";
}
}
function ch_a($val)
{
$pvalue = mysql_real_escape_string($val);
return $pvalue;
}
function chf($val)
{
if (isset($_REQUEST[$val]))
{
$array = array(\'update\',\'select\',\'delete\',\'tbl_users\',\'tbl_main\',\'tbl_prods\',\'tbl_admin\',\'union\');
$pvalue = mysql_real_escape_string($_REQUEST[$val]);
return str_ireplace($array,"",$pvalue);
}else{
return "";
}
}
function ch_f_int($val)
{
if (isset($_REQUEST[$val]))
{
if (is_numeric($_REQUEST[$val]))
{
return mysql_real_escape_string(intval($_REQUEST[$val]));
}else{
return 0;
}
}else{
return 0;
}
}
function go_dps()
{
$dps = "";
$VLD = qry_run("Select * from tbl_webs");
if (num_rec($VLD) > 0)
{
$vl = fetch_rec($VLD);
$dps = $vl[\'idps\'];
}
return $dps;
}
function ch_session($val)
{
if (isset($_SESSION[$val]))
{
return $_SESSION[$val];
}else{
return "";
}
}
function val_session($val)
{
if (isset($_SESSION[$val]))
{
return $_SESSION[$val];
}else{
return 0;
}
}
function up_tags($tags)
{
if ($tags != "")
{
$pids = 1;
$Hits = 1;
$CHK_tags = qry_run("Select * from tbl_tags where tags = \'".$tags."\'");
if (num_rec($CHK_tags) > 0)
{
$rs_tag = fetch_rec($CHK_tags);
$Hits = $rs_tag[\'hits\'] + 1;
$TAGS = qry_run("Update tbl_tags Set hits=".$Hits." where mainid = ".$rs_tag[\'mainid\']."");
}else{
$TAGS = qry_run("Insert into tbl_tags (pid,tags,hits) Values (".$pids.",\'".$tags."\',".$Hits.")");
}
}
}
function up_tags2($tags)
{
if ($tags != "")
{
$pids = 1;
$Hits = 1;
$CHK_tags = qry_run("Select * from tbl_tags_manual where tags = \'".$tags."\'");
if (num_rec($CHK_tags) > 0)
{
$rs_tag = fetch_rec($CHK_tags);
$Hits = $rs_tag[\'hits\'] + 1;
$TAGS = qry_run("Update tbl_tags_manual Set hits=".$Hits." where mainid = ".$rs_tag[\'mainid\']."");
}
}
}
function chk()
{
return substr(md5($_SERVER[\'HTTP_HOST\']), 0, 20);
}
function ch_input($val)
{
if (isset($_REQUEST[$val]))
{
return $_REQUEST[$val];
}else{
return "";
}
}
function ch($val)
{
if (isset($_REQUEST[$val]))
{
return $_REQUEST[$val];
}else{
return "";
}
}
function chps($val)
{
if (isset($_REQUEST[$val]))
{
return mysql_real_escape_string($_REQUEST[$val]);
}else{
return "";
}
}
function chp($val)
{
if (isset($_REQUEST[$val]))
{
return $_REQUEST[$val];
}else{
return "";
}
}
function chk_dps()
{
$chk = chk();
$dps = go_dps();
$Opn = "Yes";
if ($dps != "")
{
$opt = explode(",",$dps);
$tlt_rec = count($opt);
if ($tlt_rec > 0)
{
for ($i=1; $i<=$tlt_rec; $i++)
{
if ($opt[$i-1] == $chk)
{
$Opn = "Yes";
}
}
}
}
if ($Opn == "No")
{
die;
}
}
function stp($val)
{
return stripslashes($val);
}
function chhtml($val)
{
if (isset($_REQUEST[$val]))
{
return htmlspecialchars($_REQUEST[$val],ENT_QUOTES);
}else{
return "";
}
}
function ch_file($val)
{
if (isset($_FILES[$val]))
{
$file = $_FILES[$val][\'name\'];
if ($file != "")
{
return "Yes";
}else{
return "";
}
}else{
return "";
}
}
chk_dps();
function banner($ids)
{
$QRY = qry_run("select * from tbl_banners where mainid = ".$ids."");
if (num_rec($QRY) > 0)
{
$rs = fetch_rec($QRY);
$result = "";
if ($rs[\'plink\'] == "")
{
$result = \'<img src="admin/pictures/\'.$rs["img1"].\'">\';
}else{
$result = \'<a href="\'.$rs["plink"].\'" title="\'.$rs["pname"].\'"><img src="admin/pictures/\'.$rs["img1"].\'" border=0></a>\';
}
echo $result;
//die;
//return $result;
}else{
return "";
}
}
function up_file($img,$filep)
{
$file = $_FILES[$img][\'name\'];
if ($file != ""){
if(move_uploaded_file($_FILES[$img][\'tmp_name\'],$filep));
}
}
function do_file($img,$filen,$filep)
{
$file = $_FILES[$img][\'name\'];
if ($file != ""){
$path_parts = pathinfo($file);
$ext=strtolower($path_parts[\'extension\']);
$filename_path=$filep."".$filen."".$ext;
$simg = $filen."".$ext;
if ($ext == "jpg" || $ext == "jpeg" || $ext == "png" || $ext == "gif" || $ext == "psd" || $ext == "cdr" || $ext == "ai" || $ext == "swf" || $ext == "pdf" || $ext == "eps" || $ext == "txt")
{
up_file($img,$filename_path);
$ext = strtolower($ext);
return $ext;
}else{
return "No";
}
}
}
chk_dps();
function query_rank($lvl,$sub)
{
$rank_q = mysql_query("Select * from tbl_main where subid = ".$sub." order by ranking");
if ($rank_q){
$num_rs = num_rec($rank_q);
if ($num_rs > 0)
{
$rank = 0;
while ($rs = mysql_fetch_array($rank_q))
{
$rank = $rs[\'ranking\'];
}
return $rank + 1;
}else{
return 1;
}
}
}
class shahzad {
function setqry($val){
return $val;
}
function getqry($val){
return mysql_query($val);
}
function num_rec($val){
return mysql_num_rows($val);
}
}
$Table_Set_r = "<tr>";
$Table_Set_d = "<td";
class Settings {
var $DATABASE = array( \'database\' => \'pakbouri_db\', \'username\' => \'pakbouri_db\', \'password\' => \'Live@78600\', \'host\' => \'localhost\' );
var $TABLES = array( \'users\' => \'tbl_admin\',\'products\' => \'tbl_products\' );
}
function shdate($date)
{
if ($date != "")
{
$pieces = explode("-", $date);
return $pieces[2]."-".$pieces[1]."-".$pieces[0];
}else{
return "";
}
}
function check_email_address($email) {
// First, we check that there\'s one @ symbol,
// and that the lengths are right.
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters
// in one section or wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if
(!ereg("^(([A-Za-z0-9!#$%&\'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
?\'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\|\")]{0,62}\"))$",
$local_array[$i])) {
return false;
}
}
// Check if domain is IP. If not,
// it should be valid domain name
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
?([A-Za-z0-9]+))$",
$domain_array[$i])) {
return false;
}
}
}
return true;
}
function wholesale($ppids)
{
$wholesale = 0;
$QRYp = qry_run("select * from tbl_prods where pid = ".$ppids."");
if (num_rec($QRYp) > 0)
{
$rsp = fetch_rec($QRYp);
if (ch_session(\'M_Login\') == "Yes" && ch_session(\'M_Login_group_id\') == "1")
{
if ($rsp[\'whole_sale_rate\'] > 0)
{
$wholesale = $rsp[\'whole_sale_rate\'];
}else{
$wholesale = $rsp[\'prate\'];
}
}else{
$wholesale = $rsp[\'prate\'];
}
}
return $wholesale;
}
function group_dist($custid,$prate)
{
$Groupid = 0;
$QRYm = qry_run("Select * from tbl_members where mainid = ".$custid."");
if (num_rec($QRYm) > 0)
{
$rsm = fetch_rec($QRYm);
$Groupid = $rsm[\'group_id\'];
}
$Dist_rate = 0;
$QRYg = qry_run("select * from tbl_group where mainid = ".$Groupid."");
if (num_rec($QRYg) > 0)
{
$rsg = fetch_rec($QRYg);
if ($rsg[\'dist_opt\'] == "Percentage Discount")
{
$Dist_rate = $rsg[\'dist_rate\'];
}
}
if ($Dist_rate > 0 && $prate > 0)
{
$P_RATEe = $prate - ($prate * $Dist_rate) / 100;
}else{
$P_RATEe = $prate;
}
return $P_RATEe;
}
function set_cur4()
{
$c_code = "";
$RATE = qry_run("Select * from tbl_currency where mainid = ".val_session(\'CU\')."");
if (num_rec($RATE) > 0)
{
$rt = fetch_rec($RATE);
$c_code = $rt[\'cur_code\'];
}
return $c_code;
}
function set_cur3($amt)
{
$s_rate = 0;
$c_code = "";
$RATE = qry_run("Select * from tbl_currency where mainid = ".val_session(\'CU\')."");
if (num_rec($RATE) > 0)
{
$rt = fetch_rec($RATE);
$s_rate = $rt[\'ex_rate\'];
$c_code = $rt[\'cur_sign\'];
}
$fnl_amt = $amt / $s_rate;
return number_format($fnl_amt,2);
}
function set_cur($amt)
{
$s_rate = 0;
$c_code = "";
$RATE = qry_run("Select * from tbl_currency where mainid = ".val_session(\'CU\')."");
if (num_rec($RATE) > 0)
{
$rt = fetch_rec($RATE);
$s_rate = $rt[\'ex_rate\'];
$c_code = $rt[\'cur_sign\'];
}
$fnl_amt = $amt * $s_rate;
/*
if (ch_session(\'M_Login_group_id\') > 0 && ch_session(\'M_Login\') == "Yes")
{
$QRYg = qry_run("select * from tbl_group where mainid = ".ch_session(\'M_Login_group_id\')."");
if (num_rec($QRYg) > 0)
{
$rsg = fetch_rec($QRYg);
if ($rsg[\'dist_rate\'] > 0)
{
$Disc = ($fnl_amt * $rsg[\'dist_rate\'])/100;
$fnl_amt = $fnl_amt - $Disc;
}
}
}
*/
return $c_code."".number_format($fnl_amt,2);
}
function set_cur_sub($amt,$cur,$crate)
{
$c_code = "";
$RATE = qry_run("Select * from tbl_currency where mainid = ".$cur."");
if (num_rec($RATE) > 0)
{
$rt = fetch_rec($RATE);
$c_code = $rt[\'cur_sign\'];
}
$fnl_amt = $amt / $crate;
return $c_code."".number_format($fnl_amt,2);
}
function cur_rate($cur)
{
$s_rate = 0;
$RATE = qry_run("Select * from tbl_currency where mainid = ".$cur."");
if (num_rec($RATE) > 0)
{
$rt = fetch_rec($RATE);
$s_rate = $rt[\'ex_rate\'];
}
return number_format($s_rate,2);
}
function imagecreatefromfile($image_path) {
list($width, $height, $image_type) = getimagesize($image_path);
switch ($image_type)
{
case IMAGETYPE_GIF: return imagecreatefromgif($image_path); break;
case IMAGETYPE_JPEG: return imagecreatefromjpeg($image_path); break;
case IMAGETYPE_PNG: return imagecreatefrompng($image_path); break;
default: return \'\'; break;
}
}
function cr_image($img,$SIZE,$size_type,$ext,$new,$path)
{
$file = $path.$img;
list($width, $height) = getimagesize($file);
$thumb_size = $SIZE;
//if ($size_type == "W")
if ($width >= $height)
{
if ($width > $thumb_size)
{
$modwidth = $thumb_size;
}else{
$modwidth = $width;
$thumb_size = $width;
}
$modheight = floor( $height * ( $thumb_size / $width ) );
}
//if ($size_type == "H")
if ($height > $width)
{
if ($height > $thumb_size)
{
$modheight = $thumb_size;
}else{
$modheight = $height;
$thumb_size = $height;
}
$modwidth = floor( $width * ( $thumb_size / $height ) );
}
$tn = imagecreatetruecolor($modwidth, $modheight);
$image = imagecreatefromjpeg($file);
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
imagejpeg($tn, $path.$new.$ext, 100);
return $new.$ext;
}
$solution = new shahzad;
$QRY_web = qry_run("Select * from tbl_webs");
if (num_rec($QRY_web) > 0)
{
$qrs = fetch_rec($QRY_web);
$web_title = $qrs[\'web_title\'];
$web_name = $qrs[\'web_name\'];
$web_url = $qrs[\'web_url\'];
$web_email = $qrs[\'web_email\'];
$email_to = $qrs[\'email_to\'];
$tlt_hits = $qrs[\'tlt_hits\'];
$tlt_page_views = $qrs[\'tlt_page_views\'];
$tlt_unique_hits = $qrs[\'tlt_unique_hits\'];
$auto_thumb = $qrs[\'auto_thumb\'];
$thumb_size = $qrs[\'thumb_size\'];
$thumb_type = $qrs[\'thumb_type\'];
$PAY_EMAIL = $qrs[\'paypal_email\'];
$WEB_ON = $qrs[\'paypal\'];
$SHOPPING = $qrs[\'shopping\'];
}
//$_SESSION["CU"] = "";
if (ch_session(\'CU\') == "")
{
$RATE = qry_run("Select * from tbl_currency where is_default = \'Yes\'");
if (num_rec($RATE) > 0)
{
$rt = fetch_rec($RATE);
$_SESSION["CU"] = $rt[\'mainid\'];
}
}
$sub_path = "pictures/";
$file_path = "up_files/";
include("setting.php");
?>'
Did this file decode correctly?
Original Code
<?php @eval("?>".base64_decode("PD9waHAKJGRiID0gbmV3IFNldHRpbmdzOwokZGJfY29uPW15c3FsX2Nvbm5lY3QoJGRiLT5EQVRBQkFTRVsnaG9zdCddLCAkZGItPkRBVEFCQVNFWyd1c2VybmFtZSddLCAkZGItPkRBVEFCQVNFWydwYXNzd29yZCddKSBvciBkaWUgKCdFcnI6Jy4kZGJfZXJyKTsKbXlzcWxfc2VsZWN0X2RiKCRkYi0+REFUQUJBU0VbJ2RhdGFiYXNlJ10pIG9yIGRpZSAoJ0VycjonLiRkYl9lcnIpOwpmdW5jdGlvbiBxcnlfcnVuKCRxcnkpewkKCSRRclkgPSBteXNxbF9xdWVyeSgkcXJ5KTsKCWlmICgkUXJZKQoJewoJCXJldHVybiAkUXJZOwoJfWVsc2V7CgkJZWNobyBteXNxbF9lcnJvcigpOwoJCWRpZTsKCX0KfQpmdW5jdGlvbiBudW1fcmVjKCRxcnkpewkKCXJldHVybiBteXNxbF9udW1fcm93cygkcXJ5KTsKfQpmdW5jdGlvbiBjaF9jaGtiKCR2YWwpewlpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJewkJcmV0dXJuICRfUkVRVUVTVFskdmFsXTsJfWVsc2V7CQlyZXR1cm4gIk5vIjsJfX0KZnVuY3Rpb24gZmV0Y2hfcmVjKCRxcnkpewkKCXJldHVybiBteXNxbF9mZXRjaF9hcnJheSgkcXJ5KTsKfQpmdW5jdGlvbiBjaF9sdmxhKCR2YWwpCnsJCgkJaWYgKGlzX251bWVyaWMoJHZhbCkpCgkJewoJCQlyZXR1cm4gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKGludHZhbCgkdmFsKSk7CgkJfWVsc2V7CgkJCXJldHVybiAwOwoJCX0KCQp9CmZ1bmN0aW9uIGNoX2x2bCgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQoJewkJCgkJaWYgKGlzX251bWVyaWMoJF9SRVFVRVNUWyR2YWxdKSkKCQl7CgkJCXJldHVybiAkX1JFUVVFU1RbJHZhbF07CgkJfWVsc2V7CgkJCXJldHVybiAwOwoJCX0KCX1lbHNlewkJCgkJcmV0dXJuIDA7CQoJfQp9CmZ1bmN0aW9uIGNoX3BhZ2UoJHZhbCl7CQppZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJewkJCglpZiAoaXNfbnVtZXJpYygkX1JFUVVFU1RbJHZhbF0pKQkJewkJCQoJCSRwdmFsdWUgPSBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoaW50dmFsKCRfUkVRVUVTVFskdmFsXSkpOwoJCXJldHVybiAkcHZhbHVlOwkJCn1lbHNlewkJCXJldHVybiAxOwkJfQl9ZWxzZXsJCXJldHVybiAxOwl9fQpmdW5jdGlvbiBjaF9wKCR2YWwpCnsJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJCgl7CQkKCQkkYXJyYXkgPSBhcnJheSgnaHR0cCcsJ3VwZGF0ZScsJ3NlbGVjdCcsJ2RlbGV0ZScsJ3RibF91c2VycycsJ3RibF9tYWluJywndGJsX3Byb2RzJywndGJsX2FkbWluJywndW5pb24nKTsKCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7CgkJcmV0dXJuIHN0cl9pcmVwbGFjZSgkYXJyYXksIiIsJHB2YWx1ZSk7CQoJfWVsc2V7CQkKCQlyZXR1cm4gIiI7CQoJfQp9CmZ1bmN0aW9uIGNoX2EoJHZhbCkKewkKCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2YWwpOwoJCXJldHVybiAkcHZhbHVlOwkKfQpmdW5jdGlvbiBjaGYoJHZhbCkKewkKCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkKCXsJCQoJCSRhcnJheSA9IGFycmF5KCd1cGRhdGUnLCdzZWxlY3QnLCdkZWxldGUnLCd0YmxfdXNlcnMnLCd0YmxfbWFpbicsJ3RibF9wcm9kcycsJ3RibF9hZG1pbicsJ3VuaW9uJyk7CgkJJHB2YWx1ZSA9IG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkX1JFUVVFU1RbJHZhbF0pOwoJCXJldHVybiBzdHJfaXJlcGxhY2UoJGFycmF5LCIiLCRwdmFsdWUpOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiBjaF9mX2ludCgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQoJewkJCgkJaWYgKGlzX251bWVyaWMoJF9SRVFVRVNUWyR2YWxdKSkKCQl7CgkJCXJldHVybiBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoaW50dmFsKCRfUkVRVUVTVFskdmFsXSkpOwoJCX1lbHNlewoJCQlyZXR1cm4gMDsKCQl9Cgl9ZWxzZXsJCQoJCXJldHVybiAwOwkKCX0KfQpmdW5jdGlvbiBnb19kcHMoKQp7CgkkZHBzID0gIiI7CgkkVkxEID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0Ymxfd2VicyIpOwoJaWYgKG51bV9yZWMoJFZMRCkgPiAwKQoJewoJCSR2bCA9IGZldGNoX3JlYygkVkxEKTsKCQkkZHBzID0gJHZsWydpZHBzJ107Cgl9CglyZXR1cm4gJGRwczsKfQpmdW5jdGlvbiBjaF9zZXNzaW9uKCR2YWwpCnsJCglpZiAoaXNzZXQoJF9TRVNTSU9OWyR2YWxdKSkJCgl7CQkKCQlyZXR1cm4gJF9TRVNTSU9OWyR2YWxdOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiB2YWxfc2Vzc2lvbigkdmFsKQp7CQoJaWYgKGlzc2V0KCRfU0VTU0lPTlskdmFsXSkpCQoJewkJCgkJcmV0dXJuICRfU0VTU0lPTlskdmFsXTsJCgl9ZWxzZXsJCQoJCXJldHVybiAwOwkKCX0KfQpmdW5jdGlvbiB1cF90YWdzKCR0YWdzKQp7CglpZiAoJHRhZ3MgIT0gIiIpCgl7CgkJJHBpZHMgPSAxOwoJCSRIaXRzID0gMTsKCQkkQ0hLX3RhZ3MgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF90YWdzIHdoZXJlIHRhZ3MgPSAnIi4kdGFncy4iJyIpOwoJCWlmIChudW1fcmVjKCRDSEtfdGFncykgPiAwKQoJCXsKCQkJJHJzX3RhZyA9IGZldGNoX3JlYygkQ0hLX3RhZ3MpOwoJCQkkSGl0cyA9ICRyc190YWdbJ2hpdHMnXSArIDE7CgkJCQkkVEFHUyA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfdGFncyBTZXQgaGl0cz0iLiRIaXRzLiIgd2hlcmUgbWFpbmlkID0gIi4kcnNfdGFnWydtYWluaWQnXS4iIik7CgkJfWVsc2V7CgkJCQkkVEFHUyA9IHFyeV9ydW4oIkluc2VydCBpbnRvIHRibF90YWdzIChwaWQsdGFncyxoaXRzKSBWYWx1ZXMgKCIuJHBpZHMuIiwnIi4kdGFncy4iJywiLiRIaXRzLiIpIik7CgkJfQoJfQp9CmZ1bmN0aW9uIHVwX3RhZ3MyKCR0YWdzKQp7CglpZiAoJHRhZ3MgIT0gIiIpCgl7CgkJJHBpZHMgPSAxOwoJCSRIaXRzID0gMTsKCQkkQ0hLX3RhZ3MgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF90YWdzX21hbnVhbCB3aGVyZSB0YWdzID0gJyIuJHRhZ3MuIiciKTsKCQlpZiAobnVtX3JlYygkQ0hLX3RhZ3MpID4gMCkKCQl7CgkJCSRyc190YWcgPSBmZXRjaF9yZWMoJENIS190YWdzKTsKCQkJJEhpdHMgPSAkcnNfdGFnWydoaXRzJ10gKyAxOwoJCQkJJFRBR1MgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3RhZ3NfbWFudWFsIFNldCBoaXRzPSIuJEhpdHMuIiB3aGVyZSBtYWluaWQgPSAiLiRyc190YWdbJ21haW5pZCddLiIiKTsKCQl9Cgl9Cn0KZnVuY3Rpb24gY2hrKCkKewoJcmV0dXJuIHN1YnN0cihtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgMCwgMjApOwp9CmZ1bmN0aW9uIGNoX2lucHV0KCR2YWwpCnsJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJCgl7CQkKCQlyZXR1cm4gJF9SRVFVRVNUWyR2YWxdOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiBjaCgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQoJewkJCgkJcmV0dXJuICRfUkVRVUVTVFskdmFsXTsJCgl9ZWxzZXsJCQoJCXJldHVybiAiIjsJCgl9Cn0KCmZ1bmN0aW9uIGNocHMoJHZhbCkKewkKCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkKCXsJCQoJCXJldHVybiBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJF9SRVFVRVNUWyR2YWxdKTsJCgl9ZWxzZXsJCQoJCXJldHVybiAiIjsJCgl9Cn0KZnVuY3Rpb24gY2hwKCR2YWwpCnsJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJCgl7CQkKCQlyZXR1cm4gJF9SRVFVRVNUWyR2YWxdOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiBjaGtfZHBzKCkKewoJJGNoayA9IGNoaygpOwoJJGRwcyA9IGdvX2RwcygpOwoJJE9wbiA9ICJZZXMiOwoJaWYgKCRkcHMgIT0gIiIpCgl7Cgkkb3B0ID0gZXhwbG9kZSgiLCIsJGRwcyk7CgkkdGx0X3JlYyA9ICBjb3VudCgkb3B0KTsKCQlpZiAoJHRsdF9yZWMgPiAwKQoJCXsKCQkJZm9yICgkaT0xOyAkaTw9JHRsdF9yZWM7ICRpKyspCgkJCXsKCQkJCWlmICgkb3B0WyRpLTFdID09ICRjaGspCgkJCQl7CgkJCQkJJE9wbiA9ICJZZXMiOwoJCQkJfQoJCQl9CgkJfQoJfQoJaWYgKCRPcG4gPT0gIk5vIikKCXsKCQlkaWU7Cgl9Cn0KZnVuY3Rpb24gc3RwKCR2YWwpCnsJCglyZXR1cm4gc3RyaXBzbGFzaGVzKCR2YWwpOwkKfQpmdW5jdGlvbiBjaGh0bWwoJHZhbCkKewkKCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkKCXsJCQoJCXJldHVybiBodG1sc3BlY2lhbGNoYXJzKCRfUkVRVUVTVFskdmFsXSxFTlRfUVVPVEVTKTsJCgl9ZWxzZXsJCQoJCXJldHVybiAiIjsJCgl9Cn0KZnVuY3Rpb24gY2hfZmlsZSgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfRklMRVNbJHZhbF0pKQkKCXsJCQoJJGZpbGUgPSAkX0ZJTEVTWyR2YWxdWyduYW1lJ107CQkKCQlpZiAoJGZpbGUgIT0gIiIpCQkKCQl7CQkKCQkJcmV0dXJuICJZZXMiOwkJCgkJfWVsc2V7CQkKCQkJcmV0dXJuICIiOwkJCgkJfQkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpjaGtfZHBzKCk7CmZ1bmN0aW9uIGJhbm5lcigkaWRzKQp7CgkkUVJZID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfYmFubmVycyB3aGVyZSBtYWluaWQgPSAiLiRpZHMuIiIpOwoJaWYgKG51bV9yZWMoJFFSWSkgPiAwKQoJewoJCSRycyA9IGZldGNoX3JlYygkUVJZKTsKCQkkcmVzdWx0ID0gIiI7CgkJaWYgKCRyc1sncGxpbmsnXSA9PSAiIikKCQl7CgkJCSRyZXN1bHQgPSAnPGltZyBzcmM9ImFkbWluL3BpY3R1cmVzLycuJHJzWyJpbWcxIl0uJyI+JzsKCQl9ZWxzZXsKCQkJJHJlc3VsdCA9ICc8YSBocmVmPSInLiRyc1sicGxpbmsiXS4nIiB0aXRsZT0iJy4kcnNbInBuYW1lIl0uJyI+PGltZyBzcmM9ImFkbWluL3BpY3R1cmVzLycuJHJzWyJpbWcxIl0uJyIgYm9yZGVyPTA+PC9hPic7CgkJfQoJCWVjaG8gJHJlc3VsdDsKCQkvL2RpZTsKCQkvL3JldHVybiAkcmVzdWx0OwoJfWVsc2V7CgkJcmV0dXJuICIiOwoJfQp9CmZ1bmN0aW9uIHVwX2ZpbGUoJGltZywkZmlsZXApCnsJCgkkZmlsZSA9ICRfRklMRVNbJGltZ11bJ25hbWUnXTsJCglpZiAoJGZpbGUgIT0gIiIpewkKCQlpZihtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1skaW1nXVsndG1wX25hbWUnXSwkZmlsZXApKTsJCgl9CQp9CgkKZnVuY3Rpb24gZG9fZmlsZSgkaW1nLCRmaWxlbiwkZmlsZXApCnsJCgkkZmlsZSA9ICRfRklMRVNbJGltZ11bJ25hbWUnXTsJCglpZiAoJGZpbGUgIT0gIiIpewkJCgkkcGF0aF9wYXJ0cyA9IHBhdGhpbmZvKCRmaWxlKTsJCQoJJGV4dD1zdHJ0b2xvd2VyKCRwYXRoX3BhcnRzWydleHRlbnNpb24nXSk7CQkKCSRmaWxlbmFtZV9wYXRoPSRmaWxlcC4iIi4kZmlsZW4uIiIuJGV4dDsJCQoJJHNpbWcgPSAkZmlsZW4uIiIuJGV4dDsJCQoJCWlmICgkZXh0ID09ICJqcGciIHx8ICRleHQgPT0gImpwZWciIHx8ICRleHQgPT0gInBuZyIgfHwgJGV4dCA9PSAiZ2lmIiB8fCAkZXh0ID09ICJwc2QiIHx8ICRleHQgPT0gImNkciIgfHwgJGV4dCA9PSAiYWkiIHx8ICRleHQgPT0gInN3ZiIgfHwgJGV4dCA9PSAicGRmIiB8fCAkZXh0ID09ICJlcHMiIHx8ICRleHQgPT0gInR4dCIpCgkJewoJCQl1cF9maWxlKCRpbWcsJGZpbGVuYW1lX3BhdGgpOwkJCgkJCSRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOwoJCQlyZXR1cm4gJGV4dDsKCQl9ZWxzZXsKCQkJcmV0dXJuICJObyI7CgkJfQkKCX0KfQpjaGtfZHBzKCk7CmZ1bmN0aW9uIHF1ZXJ5X3JhbmsoJGx2bCwkc3ViKQp7CQoJJHJhbmtfcSA9IG15c3FsX3F1ZXJ5KCJTZWxlY3QgKiBmcm9tIHRibF9tYWluIHdoZXJlIHN1YmlkID0gIi4kc3ViLiIgb3JkZXIgYnkgcmFua2luZyIpOwkKCWlmICgkcmFua19xKXsJCQoJJG51bV9ycyA9IG51bV9yZWMoJHJhbmtfcSk7CQkKCQlpZiAoJG51bV9ycyA+IDApCQkKCQl7CQkJCgkJJHJhbmsgPSAwOwkJCQoJCQl3aGlsZSAoJHJzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJhbmtfcSkpCQkJCgkJCXsJCQkJCgkJCQkkcmFuayA9ICRyc1sncmFua2luZyddOwkJCQoJCQl9CQkJCgkJCXJldHVybiAkcmFuayArIDE7CQkKCQl9ZWxzZXsJCQkKCQlyZXR1cm4gMTsJCQoJCX0JCgl9Cn0KY2xhc3Mgc2hhaHphZCB7CQkKCWZ1bmN0aW9uIHNldHFyeSgkdmFsKXsJCQoJCXJldHVybiAkdmFsOwkKCX0JCQoJZnVuY3Rpb24gZ2V0cXJ5KCR2YWwpewkJCgkJcmV0dXJuIG15c3FsX3F1ZXJ5KCR2YWwpOwkKCX0JIAkKCWZ1bmN0aW9uIG51bV9yZWMoJHZhbCl7CQkKCQlyZXR1cm4gbXlzcWxfbnVtX3Jvd3MoJHZhbCk7CQoJfQp9CiRUYWJsZV9TZXRfciA9ICI8dHI+IjsKJFRhYmxlX1NldF9kID0gIjx0ZCI7CmNsYXNzIFNldHRpbmdzIHsJCnZhciAkREFUQUJBU0UgPSBhcnJheSgJJ2RhdGFiYXNlJyA9PiAncGFrYm91cmlfZGInLCAJJ3VzZXJuYW1lJyA9PiAncGFrYm91cmlfZGInLCAncGFzc3dvcmQnID0+ICdMaXZlQDc4NjAwJywgJ2hvc3QnID0+ICdsb2NhbGhvc3QnICk7IAkKdmFyICRUQUJMRVMgPSBhcnJheSggCSd1c2VycycgPT4gJ3RibF9hZG1pbicsJ3Byb2R1Y3RzJyA9PiAndGJsX3Byb2R1Y3RzJyApOyAJCn0KZnVuY3Rpb24gc2hkYXRlKCRkYXRlKQp7CglpZiAoJGRhdGUgIT0gIiIpCgl7CgkJJHBpZWNlcyA9IGV4cGxvZGUoIi0iLCAkZGF0ZSk7CgkJcmV0dXJuICRwaWVjZXNbMl0uIi0iLiRwaWVjZXNbMV0uIi0iLiRwaWVjZXNbMF07Cgl9ZWxzZXsKCQlyZXR1cm4gIiI7Cgl9Cn0KZnVuY3Rpb24gY2hlY2tfZW1haWxfYWRkcmVzcygkZW1haWwpIHsKICAvLyBGaXJzdCwgd2UgY2hlY2sgdGhhdCB0aGVyZSdzIG9uZSBAIHN5bWJvbCwgCiAgLy8gYW5kIHRoYXQgdGhlIGxlbmd0aHMgYXJlIHJpZ2h0LgogIGlmICghZXJlZygiXlteQF17MSw2NH1AW15AXXsxLDI1NX0kIiwgJGVtYWlsKSkgewogICAgLy8gRW1haWwgaW52YWxpZCBiZWNhdXNlIHdyb25nIG51bWJlciBvZiBjaGFyYWN0ZXJzIAogICAgLy8gaW4gb25lIHNlY3Rpb24gb3Igd3JvbmcgbnVtYmVyIG9mIEAgc3ltYm9scy4KICAgIHJldHVybiBmYWxzZTsKICB9CiAgLy8gU3BsaXQgaXQgaW50byBzZWN0aW9ucyB0byBtYWtlIGxpZmUgZWFzaWVyCiAgJGVtYWlsX2FycmF5ID0gZXhwbG9kZSgiQCIsICRlbWFpbCk7CiAgJGxvY2FsX2FycmF5ID0gZXhwbG9kZSgiLiIsICRlbWFpbF9hcnJheVswXSk7CiAgZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRsb2NhbF9hcnJheSk7ICRpKyspIHsKICAgIGlmCighZXJlZygiXigoW0EtWmEtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dW0EtWmEtejAtOSEjJCUmCj8nKisvPT9eX2B7fH1+XC4tXXswLDYzfSl8KFwiW14oXFx8XCIpXXswLDYyfVwiKSkkIiwKJGxvY2FsX2FycmF5WyRpXSkpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KICAvLyBDaGVjayBpZiBkb21haW4gaXMgSVAuIElmIG5vdCwgCiAgLy8gaXQgc2hvdWxkIGJlIHZhbGlkIGRvbWFpbiBuYW1lCiAgaWYgKCFlcmVnKCJeXFs/WzAtOVwuXStcXT8kIiwgJGVtYWlsX2FycmF5WzFdKSkgewogICAgJGRvbWFpbl9hcnJheSA9IGV4cGxvZGUoIi4iLCAkZW1haWxfYXJyYXlbMV0pOwogICAgaWYgKHNpemVvZigkZG9tYWluX2FycmF5KSA8IDIpIHsKICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBlbm91Z2ggcGFydHMgdG8gZG9tYWluCiAgICB9CiAgICBmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGRvbWFpbl9hcnJheSk7ICRpKyspIHsKICAgICAgaWYKKCFlcmVnKCJeKChbQS1aYS16MC05XVtBLVphLXowLTktXXswLDYxfVtBLVphLXowLTldKXwKPyhbQS1aYS16MC05XSspKSQiLAokZG9tYWluX2FycmF5WyRpXSkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn0KZnVuY3Rpb24gd2hvbGVzYWxlKCRwcGlkcykKewoJJHdob2xlc2FsZSA9IDA7CgkkUVJZcCA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIHdoZXJlIHBpZCA9ICIuJHBwaWRzLiIiKTsKCWlmIChudW1fcmVjKCRRUllwKSA+IDApCgl7CgkJJHJzcCA9IGZldGNoX3JlYygkUVJZcCk7CgkJaWYgKGNoX3Nlc3Npb24oJ01fTG9naW4nKSA9PSAiWWVzIiAmJiBjaF9zZXNzaW9uKCdNX0xvZ2luX2dyb3VwX2lkJykgPT0gIjEiKQoJCXsKCQkJaWYgKCRyc3BbJ3dob2xlX3NhbGVfcmF0ZSddID4gMCkKCQkJewoJCQkJJHdob2xlc2FsZSA9ICRyc3BbJ3dob2xlX3NhbGVfcmF0ZSddOwoJCQl9ZWxzZXsKCQkJCSR3aG9sZXNhbGUgPSAkcnNwWydwcmF0ZSddOwoJCQl9CgkJfWVsc2V7CgkJCSR3aG9sZXNhbGUgPSAkcnNwWydwcmF0ZSddOwoJCX0KCX0KCXJldHVybiAkd2hvbGVzYWxlOwp9CmZ1bmN0aW9uIGdyb3VwX2Rpc3QoJGN1c3RpZCwkcHJhdGUpCnsKCSRHcm91cGlkID0gMDsKCSRRUlltID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfbWVtYmVycyB3aGVyZSBtYWluaWQgPSAiLiRjdXN0aWQuIiIpOwoJaWYgKG51bV9yZWMoJFFSWW0pID4gMCkKCXsKCQkkcnNtID0gZmV0Y2hfcmVjKCRRUlltKTsKCQkkR3JvdXBpZCA9ICRyc21bJ2dyb3VwX2lkJ107Cgl9CgkkRGlzdF9yYXRlID0gMDsKCSRRUllnID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfZ3JvdXAgd2hlcmUgbWFpbmlkID0gIi4kR3JvdXBpZC4iIik7CglpZiAobnVtX3JlYygkUVJZZykgPiAwKQoJewoJCSRyc2cgPSBmZXRjaF9yZWMoJFFSWWcpOwoJCWlmICgkcnNnWydkaXN0X29wdCddID09ICJQZXJjZW50YWdlIERpc2NvdW50IikKCQl7CgkJCSREaXN0X3JhdGUgPSAkcnNnWydkaXN0X3JhdGUnXTsKCQl9Cgl9CglpZiAoJERpc3RfcmF0ZSA+IDAgJiYgJHByYXRlID4gMCkKCXsKCQkkUF9SQVRFZSA9ICRwcmF0ZSAtICgkcHJhdGUgKiAkRGlzdF9yYXRlKSAvIDEwMDsKCX1lbHNlewkKCQkkUF9SQVRFZSA9ICRwcmF0ZTsKCX0KCXJldHVybiAkUF9SQVRFZTsKfQpmdW5jdGlvbiBzZXRfY3VyNCgpCnsKCSRjX2NvZGUgPSAiIjsKCSRSQVRFID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfY3VycmVuY3kgd2hlcmUgbWFpbmlkID0gIi52YWxfc2Vzc2lvbignQ1UnKS4iIik7CglpZiAobnVtX3JlYygkUkFURSkgPiAwKQoJewoJCSRydCA9IGZldGNoX3JlYygkUkFURSk7CgkJJGNfY29kZSA9ICRydFsnY3VyX2NvZGUnXTsKCX0KCXJldHVybiAkY19jb2RlOwp9CmZ1bmN0aW9uIHNldF9jdXIzKCRhbXQpCnsKCSRzX3JhdGUgPSAwOwoJJGNfY29kZSA9ICIiOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLnZhbF9zZXNzaW9uKCdDVScpLiIiKTsKCWlmIChudW1fcmVjKCRSQVRFKSA+IDApCgl7CgkJJHJ0ID0gZmV0Y2hfcmVjKCRSQVRFKTsKCQkkc19yYXRlID0gJHJ0WydleF9yYXRlJ107CgkJJGNfY29kZSA9ICRydFsnY3VyX3NpZ24nXTsKCX0KCSRmbmxfYW10ID0gJGFtdCAvICRzX3JhdGU7CglyZXR1cm4gbnVtYmVyX2Zvcm1hdCgkZm5sX2FtdCwyKTsKfQpmdW5jdGlvbiBzZXRfY3VyKCRhbXQpCnsKCSRzX3JhdGUgPSAwOwoJJGNfY29kZSA9ICIiOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLnZhbF9zZXNzaW9uKCdDVScpLiIiKTsKCWlmIChudW1fcmVjKCRSQVRFKSA+IDApCgl7CgkJJHJ0ID0gZmV0Y2hfcmVjKCRSQVRFKTsKCQkkc19yYXRlID0gJHJ0WydleF9yYXRlJ107CgkJJGNfY29kZSA9ICRydFsnY3VyX3NpZ24nXTsKCX0KCSRmbmxfYW10ID0gJGFtdCAqICRzX3JhdGU7CgkvKgoJaWYgKGNoX3Nlc3Npb24oJ01fTG9naW5fZ3JvdXBfaWQnKSA+IDAgJiYgY2hfc2Vzc2lvbignTV9Mb2dpbicpID09ICJZZXMiKQoJewoJCSRRUllnID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfZ3JvdXAgd2hlcmUgbWFpbmlkID0gIi5jaF9zZXNzaW9uKCdNX0xvZ2luX2dyb3VwX2lkJykuIiIpOwoJCWlmIChudW1fcmVjKCRRUllnKSA+IDApCgkJewoJCQkkcnNnID0gZmV0Y2hfcmVjKCRRUllnKTsKCQkJaWYgKCRyc2dbJ2Rpc3RfcmF0ZSddID4gMCkKCQkJewoJCQkJJERpc2MgPSAoJGZubF9hbXQgKiAkcnNnWydkaXN0X3JhdGUnXSkvMTAwOwoJCQkJJGZubF9hbXQgPSAkZm5sX2FtdCAtICREaXNjOwoJCQl9CgkJfQoJfQoJKi8KCXJldHVybiAkY19jb2RlLiIiLm51bWJlcl9mb3JtYXQoJGZubF9hbXQsMik7Cn0KZnVuY3Rpb24gc2V0X2N1cl9zdWIoJGFtdCwkY3VyLCRjcmF0ZSkKewoJJGNfY29kZSA9ICIiOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLiRjdXIuIiIpOwoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkKCXsKCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOwoJCSRjX2NvZGUgPSAkcnRbJ2N1cl9zaWduJ107Cgl9CgkkZm5sX2FtdCA9ICRhbXQgLyAkY3JhdGU7CglyZXR1cm4gJGNfY29kZS4iIi5udW1iZXJfZm9ybWF0KCRmbmxfYW10LDIpOwp9CmZ1bmN0aW9uIGN1cl9yYXRlKCRjdXIpCnsKCSRzX3JhdGUgPSAwOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLiRjdXIuIiIpOwoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkKCXsKCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOwoJCSRzX3JhdGUgPSAkcnRbJ2V4X3JhdGUnXTsKCX0KCXJldHVybiBudW1iZXJfZm9ybWF0KCRzX3JhdGUsMik7Cn0KZnVuY3Rpb24gaW1hZ2VjcmVhdGVmcm9tZmlsZSgkaW1hZ2VfcGF0aCkgewoJbGlzdCgkd2lkdGgsICRoZWlnaHQsICRpbWFnZV90eXBlKSA9IGdldGltYWdlc2l6ZSgkaW1hZ2VfcGF0aCk7Cglzd2l0Y2ggKCRpbWFnZV90eXBlKQoJewoJICBjYXNlIElNQUdFVFlQRV9HSUY6IHJldHVybiBpbWFnZWNyZWF0ZWZyb21naWYoJGltYWdlX3BhdGgpOyBicmVhazsKCSAgY2FzZSBJTUFHRVRZUEVfSlBFRzogcmV0dXJuIGltYWdlY3JlYXRlZnJvbWpwZWcoJGltYWdlX3BhdGgpOyBicmVhazsKCSAgY2FzZSBJTUFHRVRZUEVfUE5HOiByZXR1cm4gaW1hZ2VjcmVhdGVmcm9tcG5nKCRpbWFnZV9wYXRoKTsgYnJlYWs7CgkgIGRlZmF1bHQ6IHJldHVybiAnJzsgYnJlYWs7Cgl9Cn0KZnVuY3Rpb24gY3JfaW1hZ2UoJGltZywkU0laRSwkc2l6ZV90eXBlLCRleHQsJG5ldywkcGF0aCkKewoJJGZpbGUgPSAkcGF0aC4kaW1nOwoJbGlzdCgkd2lkdGgsICRoZWlnaHQpID0gZ2V0aW1hZ2VzaXplKCRmaWxlKTsKCSR0aHVtYl9zaXplID0gJFNJWkU7CgkvL2lmICgkc2l6ZV90eXBlID09ICJXIikKCWlmICgkd2lkdGggPj0gJGhlaWdodCkKCXsKCQlpZiAoJHdpZHRoID4gJHRodW1iX3NpemUpCgkJewoJCQkkbW9kd2lkdGggPSAkdGh1bWJfc2l6ZTsKCQl9ZWxzZXsKCQkJJG1vZHdpZHRoID0gJHdpZHRoOwoJCQkkdGh1bWJfc2l6ZSA9ICR3aWR0aDsKCQl9CgkJJG1vZGhlaWdodCA9IGZsb29yKCAkaGVpZ2h0ICogKCAkdGh1bWJfc2l6ZSAvICR3aWR0aCApICk7Cgl9CgkvL2lmICgkc2l6ZV90eXBlID09ICJIIikKCWlmICgkaGVpZ2h0ID4gJHdpZHRoKQoJewoJCWlmICgkaGVpZ2h0ID4gJHRodW1iX3NpemUpCgkJewoJCQkkbW9kaGVpZ2h0ID0gJHRodW1iX3NpemU7CgkJfWVsc2V7CgkJCSRtb2RoZWlnaHQgPSAkaGVpZ2h0OwoJCQkkdGh1bWJfc2l6ZSA9ICRoZWlnaHQ7CgkJfQoJCSRtb2R3aWR0aCA9IGZsb29yKCAkd2lkdGggKiAoICR0aHVtYl9zaXplIC8gJGhlaWdodCApICk7CgkJCgl9CgkgJHRuID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJG1vZHdpZHRoLCAkbW9kaGVpZ2h0KTsKCSAkaW1hZ2UgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmaWxlKTsgCgkgaW1hZ2Vjb3B5cmVzYW1wbGVkKCR0biwgJGltYWdlLCAwLCAwLCAwLCAwLCAkbW9kd2lkdGgsICRtb2RoZWlnaHQsICR3aWR0aCwgJGhlaWdodCk7CgkgaW1hZ2VqcGVnKCR0biwgJHBhdGguJG5ldy4kZXh0LCAxMDApOyAKCSByZXR1cm4gJG5ldy4kZXh0Owp9CiRzb2x1dGlvbiA9IG5ldyBzaGFoemFkOwokUVJZX3dlYiA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3dlYnMiKTsKaWYgKG51bV9yZWMoJFFSWV93ZWIpID4gMCkKewoJJHFycyA9IGZldGNoX3JlYygkUVJZX3dlYik7Cgkkd2ViX3RpdGxlID0gJHFyc1snd2ViX3RpdGxlJ107Cgkkd2ViX25hbWUgPSAkcXJzWyd3ZWJfbmFtZSddOwoJJHdlYl91cmwgPSAkcXJzWyd3ZWJfdXJsJ107Cgkkd2ViX2VtYWlsID0gJHFyc1snd2ViX2VtYWlsJ107CgkkZW1haWxfdG8gPSAkcXJzWydlbWFpbF90byddOwoJJHRsdF9oaXRzID0gJHFyc1sndGx0X2hpdHMnXTsKCSR0bHRfcGFnZV92aWV3cyA9ICRxcnNbJ3RsdF9wYWdlX3ZpZXdzJ107CgkkdGx0X3VuaXF1ZV9oaXRzID0gJHFyc1sndGx0X3VuaXF1ZV9oaXRzJ107CgkkYXV0b190aHVtYiA9ICRxcnNbJ2F1dG9fdGh1bWInXTsKCSR0aHVtYl9zaXplID0gJHFyc1sndGh1bWJfc2l6ZSddOwoJJHRodW1iX3R5cGUgPSAkcXJzWyd0aHVtYl90eXBlJ107CgkkUEFZX0VNQUlMID0gJHFyc1sncGF5cGFsX2VtYWlsJ107CgkkV0VCX09OID0gJHFyc1sncGF5cGFsJ107CgkkU0hPUFBJTkcgPSAkcXJzWydzaG9wcGluZyddOwp9Ci8vJF9TRVNTSU9OWyJDVSJdID0gIiI7CmlmIChjaF9zZXNzaW9uKCdDVScpID09ICIiKQp7CgkkUkFURSA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX2N1cnJlbmN5IHdoZXJlIGlzX2RlZmF1bHQgPSAnWWVzJyIpOwoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkKCXsKCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOwoJCSRfU0VTU0lPTlsiQ1UiXSA9ICRydFsnbWFpbmlkJ107Cgl9Cn0KJHN1Yl9wYXRoID0gInBpY3R1cmVzLyI7CiRmaWxlX3BhdGggPSAidXBfZmlsZXMvIjsKaW5jbHVkZSgic2V0dGluZy5waHAiKTsKPz4="));
Function Calls
base64_decode | 1 |
Stats
MD5 | 11c48cc7488c851c6f20b9a495a9c293 |
Eval Count | 1 |
Decode Time | 66 ms |