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 $_F=__FILE__;$_C816270277='Pz48P2dkZwp4Q0dUV3hDKCIuLi9XNVlfRkN4T0N4LmdkZyIpOwp4Q0dUV..

Decoded Output download

?><?php
require("../inc_server.php");
require("../class/class_order.php");
require("../class/class_customer.php");
page::$o->check("sale-print-invoice");
if(page::$o->status == "Y"){

	$order_rowid = get_num("rowid",0);
	customer::$o = new customer_; //use to format customer name in order
	order::$o = new order_($order_rowid);
	$sale_list = order::$o->get_sale_list("weight", "DESC");// ORDER BY WEIGHT DESC
	$pay_list = order::$o->get_pay_list();

	//--- PAPER SIZE
	$paper = "A4";
	if($paper=="A4"){
		$page_size = "A4";
		$page_product = "17";
		$string_length = 38;
	}else if($paper=="CUSTOM9X5.5"){
		$page_size = array(229, 140);
		$page_product = "3";
		$string_length = 10;
	}
	//---

	/*
	//FOR TESTING
	for($i=0;$i<=22;$i++){
		$sale_list[$i]["product_name"] = " Cockneys VS Zombies  2012   ";
		$sale_list[$i]["barcode"] = $i.".8850123254000001414552";
		$sale_list[$i]["price"] = 15;
		$sale_list[$i]["rowid"] = $i;
		$sale_list[$i]["unit_count_title"] = " 4 x 8";
		$sale_list[$i]["product_rowid"] = 2;
		$sale_list[$i]["qty"] = 1;
		$sale_list[$i]["cost"] = 0;
		$sale_list[$i]["discount_amount"] = 0;
		$sale_list[$i]["total"] = "15";
		$sale_list[$i]["qty_text"] = "1";
		$sale_list[$i]["cost_text"] = "$0.00";
		$sale_list[$i]["discount_amount_text"] = "$0.00";
		$sale_list[$i]["price_text"] = "$15.00";
		$sale_list[$i]["total_text"] = "$15.00";
	}
	// END FOR TESTING
	*/

	//--- USE STORE PRIMARY LANGUAGE -------
	$money_word = "";
	if(store::$o->primary_language == "thai"){
		require("../language/lang_thai.php");
		$money_word = (store::$o->inv_show_money_word == "Y") ? "(".money2word_thai(order::$o->grand_total).")" : "-";
	}else{
		require("../language/lang_eng.php");
		$money_word = (store::$o->inv_show_money_word == "Y") ? "(".money2word_eng(order::$o->grand_total).")" : "-";
	}
	//---

	//--- LOGO
	$root_path = $_SERVER['DOCUMENT_ROOT'];
	$logo = $root_path."/images/invoice_logo.png";
	if(isset(store::$o->invoice_logo[0])){
		$logo = (file_exists($root_path."/data/".store::$o->invoice_logo)) ? $root_path."/data/".store::$o->invoice_logo : $root_path."/images/invoice_logo.png";
	}

	//---

	//--- HTML & STYLE
	$css = "<style>.bl {border-left:1px solid #555555} .bt {border-top:1px solid #555555} .br {border-right:1px solid #555555} .bb {border-bottom:1px solid #555555} .btl {border-top:1px solid #BEBEBE} .sm{font-size:15px;} .md{font-size:16px;} .lg{font-size:18px;} .mat10{border-top:1px solid #555555}</style>";
	//---



	// HEAD OF INVOICE
	$store_info = "<b class=\"md\">".store::$o->name."</b><span class=\"sm\">";
	$store_info .= (store::$o->inv_show_address == "Y") ? "<br>".sub(store::$o->address1,0,40) : "";
	$store_info .= (store::$o->inv_show_address_ext == "Y") ? "<br>".sub(store::$o->address2,0,40) : "";
	$store_info .= (store::$o->inv_show_tel == "Y") ? "<br>".lang::$o["tel"].":&nbsp;".sub(store::$o->tel,0,25) : "";
	$store_info .= (store::$o->inv_show_mobile == "Y") ? "<br>".lang::$o["tel_mobile"].":&nbsp;".sub(store::$o->mobile,0,25) : "";
	$store_info .= (store::$o->inv_show_fax == "Y") ? "<br>".lang::$o["fax"].":&nbsp;".sub(store::$o->fax,0,30) : "";
	$store_info .= (store::$o->inv_show_email == "Y") ? "<br>".lang::$o["email"].":&nbsp;".sub(store::$o->email,0,30) : "";
	$store_info .= (store::$o->inv_show_tax_number == "Y") ? "<br>".lang::$o["tax_number"].":&nbsp;".sub(store::$o->tax_number,0,25) : "";
	$store_info .= "</span>";

	//-----------------------------------
	//	sub_header1
	//-----------------------------------

	//-----
	$dynamic_colmun_width = "45%";
	$dynamic_colspan = "2";
	$tax_info1 = "";
	$tax_info2 = "";
	if(store::$o->inv_show_tax=="Y"){
		$dynamic_colmun_width = "30%";
		$dynamic_colspan = "3";
		$tax_info1 = "<td width=\"30%\" class=\"bt bl br sm\">".lang::$o["tax"]."</td>";
		$tax_info2 = "<td class=\"bl bb lg br\">".order::$o->tax_text."</td>";
	}
	//---

	$invoice_sub_header1 = "<table width=\"100%\" border=\"0\">
	<tr>
		<td width=\"10%\" class=\"\">&nbsp;</td>
		<td width=\"".$dynamic_colmun_width."\" class=\"bt bl sm\">".lang::$o["date_time"]."</td>
		<td width=\"".$dynamic_colmun_width."\" class=\"bt bl br sm\">".lang::$o["sell"]["total"]."</td>
		".$tax_info1."
	</tr>
	<tr>
		<td>&nbsp;</td>
		<td class=\"bl bb md\" style=\"font-weight:bold\">".order::$o->created."</td>
		<td class=\"bl bb lg br\" style=\"font-weight:bold;font-size:18px;\">".order::$o->grand_total_text."</td>
		".$tax_info2."
	</tr>";
	$invoice_sub_header1 .= "<tr><td height=\"30\">&nbsp;</td><td colspan=\"".$dynamic_colspan."\" class=\" bl br sm\" align=\"right\">".$money_word."&nbsp;</td></tr></table>";
	//-----------------------------------
	//	end sub_header1
	//-----------------------------------

	$invoice_sub_header2 = "";
	if(store::$o->inv_show_paid_info == "Y"){
		$debt_amount_text = (order::$o->have_debt=="Y") ? order::$o->debt_amount_text : "-";
		$debt_due_date = (order::$o->have_debt=="Y") ? order::$o->debt_due_date : "-";
		$invoice_sub_header2 = "<table width=\"100%\" border=\"0\">
		<tr>
			<td width=\"10%\" class=\"bt\">&nbsp;</td>
			<td width=\"30%\" class=\"bt bl sm\">".lang::$o["invoice"]["already_paid"]."</td>
			<td width=\"30%\" class=\"bt bl sm\">".lang::$o["unpaid"]."</td>
			<td width=\"30%\" class=\"bl bt br sm\">".lang::$o["invoice"]["due_date"]."</td>
		</tr>
		<tr>
			<td>&nbsp;</td>
			<td class=\"bl bb md\" style=\"font-weight:bold\">".order::$o->total_pay_text."</td>
			<td class=\"bl bb md\" style=\"font-weight:bold\">".$debt_amount_text."</td>
			<td class=\"bl br bb md\" style=\"font-weight:bold\">".$debt_due_date."</td>
		</tr></table>";
	}

	$billing_address = "-";
	/*
	old version compatible
	if no sale_stats_billing record use shipping address to billing address
	*/
	$arr_billing_address = array("fname"=>"", "lname"=>"", "address1"=>"", "address2"=> "", "address3"=>"", "tel"=>"", "email"=>"", "vat_number"=>"", "remark"=>"");
	if(order::$o->sale_stats_billing_rowid > 0){
		$billing_address = store::$o->shipping_customer_prefix.format_customer_fullname(order::$o->billing_fname, order::$o->billing_lname, "")."<br>";
		$billing_address .= (isset(order::$o->billing_address1[0])) ? order::$o->billing_address1."<br>" : "";
		$billing_address .= (isset(order::$o->billing_address2[0])) ? order::$o->billing_address2."<br>" : "";
		$billing_address .= (isset(order::$o->billing_address3[0])) ? order::$o->billing_address3."<br>" : "";
		$billing_address .= (isset(order::$o->billing_tel[0])) ? lang::$o["tel"].": ".order::$o->billing_tel."<br>" : "";
		$billing_address .= (isset(order::$o->billing_email[0])) ? lang::$o["email"].": ".order::$o->billing_email."<br>" : "";
		$billing_address .= (isset(order::$o->billing_vat_number[0])) ? lang::$o["tax_number"].": ".order::$o->billing_vat_number : "";
	}else{
		//check is shipping?
		if(order::$o->shipping){
			$billing_address = store::$o->shipping_customer_prefix.format_customer_fullname(order::$o->shipping_fname, order::$o->shipping_lname, "")."<br>";
			$billing_address .= (isset(order::$o->shipping_address1[0])) ? order::$o->shipping_address1."<br>" : "";
			$billing_address .= (isset(order::$o->shipping_address2[0])) ? order::$o->shipping_address2."<br>" : "";
			$billing_address .= (isset(order::$o->shipping_address3[0])) ? order::$o->shipping_address3."<br>" : "";
			$billing_address .= (isset(order::$o->shipping_tel[0])) ? lang::$o["tel"].": ".order::$o->shipping_tel."<br>" : "";
			$billing_address .= (isset(order::$o->shipping_email[0])) ? lang::$o["email"].": ".order::$o->shipping_email : "";
		}
	}
	//-------------------

	$arr_param = array();
	$arr_param["logo"] = $logo;
	$arr_param["store_info"] = $store_info;
	$arr_param["order_id_text"] = order::$o->id_text;
	$arr_param["invoice_title"] = store::$o->invoice_title;
	$arr_param["invoice_sub_header1"] = $invoice_sub_header1;
	$arr_param["billing_address"] = $billing_address;
	$arr_param["invoice_sub_header2"] = $invoice_sub_header2;

	function get_invoice_header($arr_param){
		return "<table width=\"100%\" border=\"0\"><tr><td rowspan=\"2\" width=\"20%\" align=\"left\"><div style=\"font-size:9px;\">&nbsp;</div><img src=\"".$arr_param["logo"]."\" width=\"128\" height=\"128\" /></td><td rowspan=\"2\" width=\"30%\">".$arr_param["store_info"]."</td><td height=\"75\" width=\"50%\" style=\"text-align:right;\"><span style=\"font-size:20px;font-weight:bold;\"># ".$arr_param["order_id_text"]."<br></span><span style=\"font-size:28px;font-weight:bold\">".$arr_param["invoice_title"]."</span><br></td></tr>
		<tr><td style=\"text-align:center;\">".$arr_param["invoice_sub_header1"]."</td></tr>
		<tr><td colspan=\"2\" class=\"bt\" style=\"font-size:15px;\">".$arr_param["billing_address"]."</td><td class=\"bt\" style=\"text-align:center\">".$arr_param["invoice_sub_header2"]."</td></tr></table>";
	}

	// INVOICE PRODUCT
	$invoice_product_table_header = "<br><br><table width=\"100%\" border=\"0\"><tr style=\"color:black;font-size:16px;font-weight:bold;\"><td width=\"15%\" style=\"font-weight:bold;\" class=\"bb\">".lang::$o["barcode"]."</td><td width=\"35%\" style=\"font-weight:bold;\" class=\"bb\">".lang::$o["product"]."</td><td width=\"10%\" style=\"text-align:center;font-weight:bold;\" class=\"bb\">".lang::$o["sell"]["qty"]."</td><td width=\"10%\" style=\"font-weight:bold;\" class=\"bb\">".lang::$o["unit_count"]."</td><td width=\"10%\" style=\"text-align:right;font-weight:bold;\" class=\"bb\">".lang::$o["price"]."</td><td width=\"10%\" style=\"text-align:right;font-weight:bold;\" class=\"bb\">".lang::$o["sell"]["discount"]."</td><td width=\"10%\" style=\"text-align:right;font-weight:bold;\" class=\"bb\">".lang::$o["sell"]["amount"]."</td></tr>";
	$invoice_product_table_footer = "</table>";

	//INVOICE FOOTER
	//$invoice_footer1 = "<br><table width=\"100%\" border=\"0\"><tr><td width=\"51%\" rowspan=\"2\" style=\"font-size:16px;\">".order::$o->note."</td><td width=\"25%\" style=\"text-align:right\" class=\"bb\">".lang::$o["sell"]["total"].":&nbsp;</td><td width=\"24%\" class=\"bb\" style=\"text-align:right;font-weight:bold;font-size:20px;\">".order::$o->grand_total_text."</td></tr><tr><td width=\"25%\" class=\"bb\" style=\"text-align:right\">".lang::$o["tax"].":&nbsp;</td><td width=\"24%\" class=\"bb\" style=\"text-align:right\">".order::$o->tax_text."</td></tr></table><div align=\"right\">(".$money_word.")</div>";

	$invoice_footer2 = "<br><table width=\"100%\" border=\"0\"><tr><td width=\"51%\" rowspan=\"3\" style=\"font-size:16px;\">&nbsp;</td><td width=\"10%\">&nbsp;</td><td width=\"27%\" style=\"text-align:right\">&nbsp;</td><td width=\"12%\" style=\"text-align:right\">&nbsp;</td></tr> <tr><td width=\"10%\">&nbsp;</td><td width=\"27%\" style=\"text-align:right\">&nbsp;</td><td width=\"12%\" style=\"text-align:right\">&nbsp;</td></tr> <tr><td width=\"10%\">&nbsp;</td><td width=\"27%\" style=\"text-align:right\">&nbsp;</td><td width=\"12%\" style=\"text-align:right\">&nbsp;</td></tr></table>";

	$html = "";
	for($ix=1;$ix <= store::$o->inv_multiple_page;$ix++){
		//--HEADER TITLE FOR EACH SET
		if($ix > 1){
			if($ix==2){
				$arr_param["invoice_title"] = store::$o->inv_invoice_title2;
			}else if($ix==3){
				$arr_param["invoice_title"] = store::$o->inv_invoice_title3;
			}else if($ix==4){
				$arr_param["invoice_title"] = store::$o->inv_invoice_title4;
			}
			$invoice_header = get_invoice_header($arr_param);
			$html .= "<br pagebreak=\"true\"/>".$invoice_header.$invoice_product_table_header;
		}else{
			$html .= $css; //add css for first page
			$html .= get_invoice_header($arr_param).$invoice_product_table_header;
		}
		//--/HEADER TITLE FOR EACH SET


		//--- ITEMS ---
		$total_item = count($sale_list);
		$i = 1;
		$item_remain = $total_item;
		foreach ($sale_list as $row){
			$barcode = dirty($row["barcode"]);
			$barcode = sub($barcode,0,15);

			$product_name = dirty($row["product_name"]);
			$product_name = sub($product_name,0,$string_length);

			$unit_count_title = dirty($row["unit_count_title"]);
			$unit_count_title = sub($unit_count_title,0,9);

			$html .= "<tr style=\"font-size:17px;\"><td class=\"btl\" style=\"height:35px;\">".$barcode."</td><td class=\"btl\">".$product_name."</td><td style=\"text-align:center\" class=\"btl\">".$row["qty"]."</td><td class=\"btl\">".$unit_count_title."</td><td style=\"text-align:right\" class=\"btl\">".$row["price_text"]."</td><td style=\"text-align:right\" class=\"btl\">".$row["discount_amount_text"]."</td><td style=\"text-align:right\" class=\"btl\">".$row["total_text"]."</td></tr>";
			$result = $i % $page_product;
			if($result == 0){
				$html .= $invoice_product_table_footer;

				//check is last page
				if($item_remain>1){
					$html .= "<br pagebreak=\"true\"/>".get_invoice_header($arr_param).$invoice_product_table_header;
				}else{
					if($item_remain==1){
						//$html .= "END";
					}
				}
				$i = 1;
			}else{
				$i++;
			}
			//
			$item_remain--;
		}
		if($item_remain == 0 && $result != 0){
			$html .= $invoice_product_table_footer;
		}
		//---
	}

	//echo $html;

	//---------------------------------- PDF -----------------------------------------------
	ob_clean();
	require_once('../tcpdf/config/lang/eng.php');
	require_once('../tcpdf/tcpdf.php');

	class MYPDF extends TCPDF {
		public $receiver;
		public $sender;
		public $collector;
		public $manager;
		public $dateword;
		public $money_word;
		public $grand_total_text;

		//Page header
		public function Header() {

		}

		// Page footer
		public function Footer() {
			// Set font
			$this->SetFont('angsanaupc', '', 13);

			$this->SetY(-25);
			//$temp = "<div align=\"right\">Total: ".$this->grand_total_text." (".$this->money_word.")</div>";
			$temp = "<table border=\"0\"><tr><td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->receiver."</td>";
			$temp .= "<td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->sender."</td>";
			$temp .= "<td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->collector."</td>";
			$temp .= "<td width=\"25%\" align=\"center\" style=\"border-top:1px solid black;\">".$this->manager."</td></tr>";

			$temp .= "<tr><td align=\"center\"><br><br>.............................................</td>";
			$temp .= "<td align=\"center\"><br><br>.............................................</td>";
			$temp .= "<td align=\"center\"><br><br>.............................................</td>";
			$temp .= "<td align=\"center\"><br><br>.............................................</td></tr>";

			$temp .= "<tr><td align=\"center\"><br>".$this->dateword." .............................................</td>";
			$temp .= "<td align=\"center\"><br>".$this->dateword." .............................................</td>";
			$temp .= "<td align=\"center\"><br>".$this->dateword." .............................................</td>";
			$temp .= "<td align=\"center\"><br>".$this->dateword." .............................................</td></tr></table>";
			$this->writeHTML($temp, true, 0, true, true);
		}
	}
	// create new PDF document
	//$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
	$pdf = new MYPDF('V', 'mm', $page_size, true, 'UTF-8', false);

	$pdf->receiver = lang::$o["receiver"];
	$pdf->sender = lang::$o["sender"];
	$pdf->collector = lang::$o["collector"];
	$pdf->manager = lang::$o["authorized"];
	$pdf->dateword = lang::$o["date"];
	//$pdf->money_word = $money_word;
	//$pdf->grand_total_text = order::$o->grand_total_text;

	// set document information
	$pdf->SetCreator(PDF_CREATOR);
	$pdf->SetAuthor('POS++');
	$pdf->SetTitle('POS++');
	$pdf->SetSubject('POS++');
	$pdf->SetKeywords('POS++');

	// set header and footer fonts
	$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
	$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

	// set default monospaced font
	$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

	//set margins
	//$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
	$pdf->SetMargins(5, 5, 5);
	$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
	$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

	//set auto page breaks
	$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

	//set image scale factor
	$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

	//set some language-dependent strings
	$pdf->setLanguageArray($l);

	// ---------------------------------------------------------

	// set font
	$pdf->SetFont('angsanaupc', '', 14);

	// add a page
	//$pdf->AddPage("V","A4");
	$pdf->AddPage("V");

	//write output
	$pdf->writeHTML($html, true, 0, true, true, "");
	//$pdf->writeHTML($html, true, false, false, false, '');


	// reset pointer to the last page
	$pdf->lastPage();

	// ---------------------------------------------------------

	//Close and output PDF document
	$output_mode = (store::$o->open_pdf_in_browser=="Y") ? "I" : "D";
	$pdf->Output('full_receipt_'.order::$o->id_text.'.pdf', $output_mode);

	//============================================================+
	// END OF FILE
	//============================================================+

}else{
	echo lang::$o["page_status"][page::$o->status];
}
?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C816270277='Pz48P2dkZwp4Q0dUV3hDKCIuLi9XNVlfRkN4T0N4LmdkZyIpOwp4Q0dUV3hDKCIuLi9ZbUhGRi9ZbUhGRl9zeHBDeC5nZGciKTsKeENHVFd4QygiLi4vWW1IRkYvWW1IRkZfWVRGMnNrQ3guZ2RnIik7CmdIekM6OiRzLT5ZZENZNygiRkhtQy1neFc1Mi1XNU9zV1lDIik7CldVKGdIekM6OiRzLT5GMkgyVEYgPT0gInQiKXsKCgkkc3hwQ3hfeHNRV3AgPSB6QzJfNVRrKCJ4c1FXcCIsYSk7CglZVEYyc2tDeDo6JHMgPSA1Q1EgWVRGMnNrQ3hfOyAvL1RGQyAycyBVc3hrSDIgWVRGMnNrQ3ggNUhrQyBXNSBzeHBDeAoJc3hwQ3g6OiRzID0gNUNRIHN4cEN4Xygkc3hwQ3hfeHNRV3ApOwoJJEZIbUNfbVdGMiA9IHN4cEN4Ojokcy0+ekMyX0ZIbUNfbVdGMigiUUNXemQyIiwgIk5uMFMiKTsvLyBMaU5uaSBsdCBNblpYSzYgTm4wUwoJJGdIRF9tV0YyID0gc3hwQ3g6OiRzLT56QzJfZ0hEX21XRjIoKTsKCgkvLy0tLSBqQWpuaSAwWkpuCgkkZ0hnQ3ggPSAiQXkiOwoJV1UoJGdIZ0N4PT0iQXkiKXsKCQkkZ0h6Q19GV2ZDID0gIkF5IjsKCQkkZ0h6Q19neHNwVFkyID0gIjllIjsKCQkkRjJ4VzV6X21DNXoyZCA9IDN1OwoJfUNtRkMgV1UoJGdIZ0N4PT0iU3cwNkw0RXFjLmMiKXsKCQkkZ0h6Q19GV2ZDID0gSHh4SEQoYmJFLCA5eWEpOwoJCSRnSHpDX2d4c3BUWTIgPSAiMyI7CgkJJEYyeFc1el9tQzV6MmQgPSA5YTsKCX0KCS8vLS0tCgoJLyoKCS8vUkxpIDZuMDZaVlgKCVVzeCgkVz1hOyRXPD1iYjskVysrKXsKCQkkRkhtQ19tV0YyWyRXXVsiZ3hzcFRZMl81SGtDIl0gPSAi4LiE4Lil4Li04Lib4LiI4Liy4LiB4Lir4LiZ4Lix4LiHIFNzWTc1Q0RGIHIwIEpza29XQ0Yg4LmA4Lih4Li34LmI4Lit4Lib4Li1IGJhOWIg4LiB4Lix4Lia4LiJ4Liy4LiB4Lin4Li04LmI4LiH4Lir4LiZ4Li14LiL4Lit4Lih4Lia4Li14LmJ4LiX4Li14LmI4Lil4Li44LmJ4LiZ4LiX4Li14LmI4Liq4Li44LiUIOC5gOC4l+C5iOC4suC4l+C4teC5iOC5gOC4hOC4ouC4oeC4teC4oeC4suC5g+C4meC4m+C4o+C4sOC4p+C4seC4leC4tOC4qOC4suC4quC4leC4o+C5jOC4p+C4h+C4geC4suC4o+C4oOC4suC4nuC4ouC4meC4leC4o+C5jOC5gOC4peC4ouC4geC5h+C4p+C5iOC4suC5hOC4lOC5iSDguKXguLjguYnguJnguIjguJnguIrguLLguKfguYDguJnguYfguJXguJnguLXguYjguYHguIrguKPguYzguKrguJnguLHguYjguJnguYLguIvguYDguIrguLXguKLguKXguYDguKXguKLguJfguLXguYDguJTguLXguKLguKciOwoJCSRGSG1DX21XRjJbJFddWyJvSHhZc3BDIl0gPSAkVy4iLnV1Y2E5YjNiY3lhYWFhYTl5OXljY2IiOwoJCSRGSG1DX21XRjJbJFddWyJneFdZQyJdID0gOWM7CgkJJEZIbUNfbVdGMlskV11bInhzUVdwIl0gPSAkVzsKCQkkRkhtQ19tV0YyWyRXXVsiVDVXMl9Zc1Q1Ml8yVzJtQyJdID0gIuC4guC4p+C4lOC5guC4q+C4peC5g+C4q+C4jeC5iCB5IEIgdSI7CgkJJEZIbUNfbVdGMlskV11bImd4c3BUWTJfeHNRV3AiXSA9IGI7CgkJJEZIbUNfbVdGMlskV11bIkcyRCJdID0gOTsKCQkkRkhtQ19tV0YyWyRXXVsiWXNGMiJdID0gYTsKCQkkRkhtQ19tV0YyWyRXXVsicFdGWXNUNTJfSGtzVDUyIl0gPSBhOwoJCSRGSG1DX21XRjJbJFddWyIyczJIbSJdID0gIjljIjsKCQkkRkhtQ19tV0YyWyRXXVsiRzJEXzJDQjIiXSA9ICI5IjsKCQkkRkhtQ19tV0YyWyRXXVsiWXNGMl8yQ0IyIl0gPSAiJGEuYWEiOwoJCSRGSG1DX21XRjJbJFddWyJwV0ZZc1Q1Ml9Ia3NUNTJfMkNCMiJdID0gIiRhLmFhIjsKCQkkRkhtQ19tV0YyWyRXXVsiZ3hXWUNfMkNCMiJdID0gIiQ5Yy5hYSI7CgkJJEZIbUNfbVdGMlskV11bIjJzMkhtXzJDQjIiXSA9ICIkOWMuYWEiOwoJfQoJLy8gblZOIFJMaSA2bjA2WlZYCgkqLwoKCS8vLS0tIHcwbiAwNkxpbiBqaVo0QWl0IHZBVlh3QVhuIC0tLS0tLS0KCSRrczVDRF9Rc3hwID0gIiI7CglXVShGMnN4Qzo6JHMtPmd4V2tIeERfbUg1elRIekMgPT0gIjJkSFciKXsKCQl4Q0dUV3hDKCIuLi9tSDV6VEh6Qy9tSDV6XzJkSFcuZ2RnIik7CgkJJGtzNUNEX1FzeHAgPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV9rczVDRF9Rc3hwID09ICJ0IikgPyAiKCIua3M1Q0RiUXN4cF8yZEhXKHN4cEN4Ojokcy0+enhINXBfMnMySG0pLiIpIiA6ICItIjsKCX1DbUZDewoJCXhDR1RXeEMoIi4uL21INXpUSHpDL21INXpfQzV6LmdkZyIpOwoJCSRrczVDRF9Rc3hwID0gKEYyc3hDOjokcy0+VzVPX0Zkc1Ffa3M1Q0RfUXN4cCA9PSAidCIpID8gIigiLmtzNUNEYlFzeHBfQzV6KHN4cEN4Ojokcy0+enhINXBfMnMySG0pLiIpIiA6ICItIjsKCX0KCS8vLS0tCgoJLy8tLS0gdkxYTAoJJHhzczJfZ0gyZCA9ICRfMG5pcm5pWydOTFN3NG5WNl9pTEw2J107CgkkbXN6cyA9ICR4c3MyX2dIMmQuIi9Xa0h6Q0YvVzVPc1dZQ19tc3pzLmc1eiI7CglXVShXRkZDMihGMnN4Qzo6JHMtPlc1T3NXWUNfbXN6c1thXSkpewoJCSRtc3pzID0gKFVXbUNfQ0JXRjJGKCR4c3MyX2dIMmQuIi9wSDJILyIuRjJzeEM6OiRzLT5XNU9zV1lDX21zenMpKSA/ICR4c3MyX2dIMmQuIi9wSDJILyIuRjJzeEM6OiRzLT5XNU9zV1lDX21zenMgOiAkeHNzMl9nSDJkLiIvV2tIekNGL1c1T3NXWUNfbXN6cy5nNXoiOwoJfQoKCS8vLS0tCgoJLy8tLS0gSzY0diAmIDA2dHZuCgkkWUZGID0gIjxGMkRtQz4ub20ge29zeHBDeC1tQ1UyOjlnQiBGc21XcCAjY2NjY2NjfSAubzIge29zeHBDeC0yc2c6OWdCIEZzbVdwICNjY2NjY2N9IC5veCB7b3N4cEN4LXhXemQyOjlnQiBGc21XcCAjY2NjY2NjfSAub28ge29zeHBDeC1vczIyc2s6OWdCIEZzbVdwICNjY2NjY2N9IC5vMm0ge29zeHBDeC0yc2c6OWdCIEZzbVdwICNsbmxubG59IC5Ga3tVczUyLUZXZkM6OWNnQjt9IC5rcHtVczUyLUZXZkM6OThnQjt9IC5tentVczUyLUZXZkM6OXVnQjt9IC5rSDI5YXtvc3hwQ3gtMnNnOjlnQiBGc21XcCAjY2NjY2NjfTwvRjJEbUM+IjsKCS8vLS0tCgoKCgkvLyBLbkFOIExSIFpWckxaU24KCSRGMnN4Q19XNVVzID0gIjxvIFltSEZGPVwia3BcIj4iLkYyc3hDOjokcy0+NUhrQy4iPC9vPjxGZ0g1IFltSEZGPVwiRmtcIj4iOwoJJEYyc3hDX1c1VXMgLj0gKEYyc3hDOjokcy0+VzVPX0Zkc1FfSHBweENGRiA9PSAidCIpID8gIjxveD4iLkZUbyhGMnN4Qzo6JHMtPkhwcHhDRkY5LGEseWEpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV9IcHB4Q0ZGX0NCMiA9PSAidCIpID8gIjxveD4iLkZUbyhGMnN4Qzo6JHMtPkhwcHhDRkZiLGEseWEpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV8yQ20gPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siMkNtIl0uIjomNW9GZzsiLkZUbyhGMnN4Qzo6JHMtPjJDbSxhLGJjKSA6ICIiOwoJJEYyc3hDX1c1VXMgLj0gKEYyc3hDOjokcy0+VzVPX0Zkc1Ffa3NvV21DID09ICJ0IikgPyAiPG94PiIubUg1ejo6JHNbIjJDbV9rc29XbUMiXS4iOiY1b0ZnOyIuRlRvKEYyc3hDOjokcy0+a3NvV21DLGEsYmMpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAoRjJzeEM6OiRzLT5XNU9fRmRzUV9VSEIgPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siVUhCIl0uIjomNW9GZzsiLkZUbyhGMnN4Qzo6JHMtPlVIQixhLDNhKSA6ICIiOwoJJEYyc3hDX1c1VXMgLj0gKEYyc3hDOjokcy0+VzVPX0Zkc1FfQ2tIV20gPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siQ2tIV20iXS4iOiY1b0ZnOyIuRlRvKEYyc3hDOjokcy0+Q2tIV20sYSwzYSkgOiAiIjsKCSRGMnN4Q19XNVVzIC49IChGMnN4Qzo6JHMtPlc1T19GZHNRXzJIQl81VGtvQ3ggPT0gInQiKSA/ICI8b3g+Ii5tSDV6Ojokc1siMkhCXzVUa29DeCJdLiI6JjVvRmc7Ii5GVG8oRjJzeEM6OiRzLT4ySEJfNVRrb0N4LGEsYmMpIDogIiI7CgkkRjJzeENfVzVVcyAuPSAiPC9GZ0g1PiI7CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8JRlRvX2RDSHBDeDkKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvLy0tLS0tCgkkcEQ1SGtXWV9Zc21rVDVfUVdwMmQgPSAieWMlIjsKCSRwRDVIa1dZX1lzbUZnSDUgPSAiYiI7CgkkMkhCX1c1VXM5ID0gIiI7CgkkMkhCX1c1VXNiID0gIiI7CglXVShGMnN4Qzo6JHMtPlc1T19GZHNRXzJIQj09InQiKXsKCQkkcEQ1SGtXWV9Zc21rVDVfUVdwMmQgPSAiM2ElIjsKCQkkcEQ1SGtXWV9Zc21GZ0g1ID0gIjMiOwoJCSQySEJfVzVVczkgPSAiPDJwIFFXcDJkPVwiM2ElXCIgWW1IRkY9XCJvMiBvbSBveCBGa1wiPiIubUg1ejo6JHNbIjJIQiJdLiI8LzJwPiI7CgkJJDJIQl9XNVVzYiA9ICI8MnAgWW1IRkY9XCJvbSBvbyBteiBveFwiPiIuc3hwQ3g6OiRzLT4ySEJfMkNCMi4iPC8ycD4iOwoJfQoJLy8tLS0KCgkkVzVPc1dZQ19GVG9fZENIcEN4OSA9ICI8MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPgoJPDJ4PgoJCTwycCBRV3AyZD1cIjlhJVwiIFltSEZGPVwiXCI+JjVvRmc7PC8ycD4KCQk8MnAgUVdwMmQ9XCIiLiRwRDVIa1dZX1lzbWtUNV9RV3AyZC4iXCIgWW1IRkY9XCJvMiBvbSBGa1wiPiIubUg1ejo6JHNbInBIMkNfMldrQyJdLiI8LzJwPgoJCTwycCBRV3AyZD1cIiIuJHBENUhrV1lfWXNta1Q1X1FXcDJkLiJcIiBZbUhGRj1cIm8yIG9tIG94IEZrXCI+Ii5tSDV6Ojokc1siRkNtbSJdWyIyczJIbSJdLiI8LzJwPgoJCSIuJDJIQl9XNVVzOS4iCgk8LzJ4PgoJPDJ4PgoJCTwycD4mNW9GZzs8LzJwPgoJCTwycCBZbUhGRj1cIm9tIG9vIGtwXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wXCI+Ii5zeHBDeDo6JHMtPll4Q0gyQ3AuIjwvMnA+CgkJPDJwIFltSEZGPVwib20gb28gbXogb3hcIiBGMkRtQz1cIlVzNTItUUNXemQyOm9zbXA7VXM1Mi1GV2ZDOjl1Z0I7XCI+Ii5zeHBDeDo6JHMtPnp4SDVwXzJzMkhtXzJDQjIuIjwvMnA+CgkJIi4kMkhCX1c1VXNiLiIKCTwvMng+IjsKCSRXNU9zV1lDX0ZUb19kQ0hwQ3g5IC49ICI8Mng+PDJwIGRDV3pkMj1cIjNhXCI+JjVvRmc7PC8ycD48MnAgWXNtRmdINT1cIiIuJHBENUhrV1lfWXNtRmdINS4iXCIgWW1IRkY9XCIgb20gb3ggRmtcIiBIbVd6NT1cInhXemQyXCI+Ii4ka3M1Q0RfUXN4cC4iJjVvRmc7PC8ycD48LzJ4PjwvMkhvbUM+IjsKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vCUM1cCBGVG9fZENIcEN4OQoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCSRXNU9zV1lDX0ZUb19kQ0hwQ3hiID0gIiI7CglXVShGMnN4Qzo6JHMtPlc1T19GZHNRX2dIV3BfVzVVcyA9PSAidCIpewoJCSRwQ28yX0hrc1Q1Ml8yQ0IyID0gKHN4cEN4Ojokcy0+ZEhPQ19wQ28yPT0idCIpID8gc3hwQ3g6OiRzLT5wQ28yX0hrc1Q1Ml8yQ0IyIDogIi0iOwoJCSRwQ28yX3BUQ19wSDJDID0gKHN4cEN4Ojokcy0+ZEhPQ19wQ28yPT0idCIpID8gc3hwQ3g6OiRzLT5wQ28yX3BUQ19wSDJDIDogIi0iOwoJCSRXNU9zV1lDX0ZUb19kQ0hwQ3hiID0gIjwySG9tQyBRV3AyZD1cIjlhYSVcIiBvc3hwQ3g9XCJhXCI+CgkJPDJ4PgoJCQk8MnAgUVdwMmQ9XCI5YSVcIiBZbUhGRj1cIm8yXCI+JjVvRmc7PC8ycD4KCQkJPDJwIFFXcDJkPVwiM2ElXCIgWW1IRkY9XCJvMiBvbSBGa1wiPiIubUg1ejo6JHNbIlc1T3NXWUMiXVsiSG14Q0hwRF9nSFdwIl0uIjwvMnA+CgkJCTwycCBRV3AyZD1cIjNhJVwiIFltSEZGPVwibzIgb20gRmtcIj4iLm1INXo6OiRzWyJUNWdIV3AiXS4iPC8ycD4KCQkJPDJwIFFXcDJkPVwiM2ElXCIgWW1IRkY9XCJvbSBvMiBveCBGa1wiPiIubUg1ejo6JHNbIlc1T3NXWUMiXVsicFRDX3BIMkMiXS4iPC8ycD4KCQk8LzJ4PgoJCTwyeD4KCQkJPDJwPiY1b0ZnOzwvMnA+CgkJCTwycCBZbUhGRj1cIm9tIG9vIGtwXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wXCI+Ii5zeHBDeDo6JHMtPjJzMkhtX2dIRF8yQ0IyLiI8LzJwPgoJCQk8MnAgWW1IRkY9XCJvbSBvbyBrcFwiIEYyRG1DPVwiVXM1Mi1RQ1d6ZDI6b3NtcFwiPiIuJHBDbzJfSGtzVDUyXzJDQjIuIjwvMnA+CgkJCTwycCBZbUhGRj1cIm9tIG94IG9vIGtwXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wXCI+Ii4kcENvMl9wVENfcEgyQy4iPC8ycD4KCQk8LzJ4PjwvMkhvbUM+IjsKCX0KCgkkb1dtbVc1el9IcHB4Q0ZGID0gIi0iOwoJLyoKCXNtcCBPQ3hGV3M1IFlza2dIMldvbUMKCVdVIDVzIEZIbUNfRjJIMkZfb1dtbVc1eiB4Q1lzeHAgVEZDIEZkV2dnVzV6IEhwcHhDRkYgMnMgb1dtbVc1eiBIcHB4Q0ZGCgkqLwoJJEh4eF9vV21tVzV6X0hwcHhDRkYgPSBIeHhIRCgiVTVIa0MiPT4iIiwgIm01SGtDIj0+IiIsICJIcHB4Q0ZGOSI9PiIiLCAiSHBweENGRmIiPT4gIiIsICJIcHB4Q0ZGMyI9PiIiLCAiMkNtIj0+IiIsICJDa0hXbSI9PiIiLCAiT0gyXzVUa29DeCI9PiIiLCAieENrSHg3Ij0+IiIpOwoJV1Uoc3hwQ3g6OiRzLT5GSG1DX0YySDJGX29XbW1XNXpfeHNRV3AgPiBhKXsKCQkkb1dtbVc1el9IcHB4Q0ZGID0gRjJzeEM6OiRzLT5GZFdnZ1c1el9ZVEYyc2tDeF9neENVV0IuVXN4a0gyX1lURjJza0N4X1VUbW01SGtDKHN4cEN4Ojokcy0+b1dtbVc1el9VNUhrQywgc3hwQ3g6OiRzLT5vV21tVzV6X201SGtDLCAiIikuIjxveD4iOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el9IcHB4Q0ZGOVthXSkpID8gc3hwQ3g6OiRzLT5vV21tVzV6X0hwcHhDRkY5LiI8b3g+IiA6ICIiOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el9IcHB4Q0ZGYlthXSkpID8gc3hwQ3g6OiRzLT5vV21tVzV6X0hwcHhDRkZiLiI8b3g+IiA6ICIiOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el9IcHB4Q0ZGM1thXSkpID8gc3hwQ3g6OiRzLT5vV21tVzV6X0hwcHhDRkYzLiI8b3g+IiA6ICIiOwoJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+b1dtbVc1el8yQ21bYV0pKSA/IG1INXo6OiRzWyIyQ20iXS4iOiAiLnN4cEN4Ojokcy0+b1dtbVc1el8yQ20uIjxveD4iIDogIiI7CgkJJG9XbW1XNXpfSHBweENGRiAuPSAoV0ZGQzIoc3hwQ3g6OiRzLT5vV21tVzV6X0NrSFdtW2FdKSkgPyBtSDV6Ojokc1siQ2tIV20iXS4iOiAiLnN4cEN4Ojokcy0+b1dtbVc1el9Da0hXbS4iPG94PiIgOiAiIjsKCQkkb1dtbVc1el9IcHB4Q0ZGIC49IChXRkZDMihzeHBDeDo6JHMtPm9XbW1XNXpfT0gyXzVUa29DeFthXSkpID8gbUg1ejo6JHNbIjJIQl81VGtvQ3giXS4iOiAiLnN4cEN4Ojokcy0+b1dtbVc1el9PSDJfNVRrb0N4IDogIiI7Cgl9Q21GQ3sKCQkvL1lkQ1k3IFdGIEZkV2dnVzV6PwoJCVdVKHN4cEN4Ojokcy0+RmRXZ2dXNXopewoJCQkkb1dtbVc1el9IcHB4Q0ZGID0gRjJzeEM6OiRzLT5GZFdnZ1c1el9ZVEYyc2tDeF9neENVV0IuVXN4a0gyX1lURjJza0N4X1VUbW01SGtDKHN4cEN4Ojokcy0+RmRXZ2dXNXpfVTVIa0MsIHN4cEN4Ojokcy0+RmRXZ2dXNXpfbTVIa0MsICIiKS4iPG94PiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjlbYV0pKSA/IHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjkuIjxveD4iIDogIiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRmJbYV0pKSA/IHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRmIuIjxveD4iIDogIiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjNbYV0pKSA/IHN4cEN4Ojokcy0+RmRXZ2dXNXpfSHBweENGRjMuIjxveD4iIDogIiI7CgkJCSRvV21tVzV6X0hwcHhDRkYgLj0gKFdGRkMyKHN4cEN4Ojokcy0+RmRXZ2dXNXpfMkNtW2FdKSkgPyBtSDV6Ojokc1siMkNtIl0uIjogIi5zeHBDeDo6JHMtPkZkV2dnVzV6XzJDbS4iPG94PiIgOiAiIjsKCQkJJG9XbW1XNXpfSHBweENGRiAuPSAoV0ZGQzIoc3hwQ3g6OiRzLT5GZFdnZ1c1el9Da0hXbVthXSkpID8gbUg1ejo6JHNbIkNrSFdtIl0uIjogIi5zeHBDeDo6JHMtPkZkV2dnVzV6X0NrSFdtIDogIiI7CgkJfQoJfQoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tCgoJJEh4eF9nSHhIayA9IEh4eEhEKCk7CgkkSHh4X2dIeEhrWyJtc3pzIl0gPSAkbXN6czsKCSRIeHhfZ0h4SGtbIkYyc3hDX1c1VXMiXSA9ICRGMnN4Q19XNVVzOwoJJEh4eF9nSHhIa1sic3hwQ3hfV3BfMkNCMiJdID0gc3hwQ3g6OiRzLT5XcF8yQ0IyOwoJJEh4eF9nSHhIa1siVzVPc1dZQ18yVzJtQyJdID0gRjJzeEM6OiRzLT5XNU9zV1lDXzJXMm1DOwoJJEh4eF9nSHhIa1siVzVPc1dZQ19GVG9fZENIcEN4OSJdID0gJFc1T3NXWUNfRlRvX2RDSHBDeDk7CgkkSHh4X2dIeEhrWyJvV21tVzV6X0hwcHhDRkYiXSA9ICRvV21tVzV6X0hwcHhDRkY7CgkkSHh4X2dIeEhrWyJXNU9zV1lDX0ZUb19kQ0hwQ3hiIl0gPSAkVzVPc1dZQ19GVG9fZENIcEN4YjsKCglVVDVZMldzNSB6QzJfVzVPc1dZQ19kQ0hwQ3goJEh4eF9nSHhIayl7CgkJeEMyVHg1ICI8MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPjwyeD48MnAgeHNRRmdINT1cImJcIiBRV3AyZD1cImJhJVwiIEhtV3o1PVwibUNVMlwiPjxwV08gRjJEbUM9XCJVczUyLUZXZkM6RWdCO1wiPiY1b0ZnOzwvcFdPPjxXa3ogRnhZPVwiIi4kSHh4X2dIeEhrWyJtc3pzIl0uIlwiIFFXcDJkPVwiOWJ1XCIgZENXemQyPVwiOWJ1XCIgLz48LzJwPjwycCB4c1FGZ0g1PVwiYlwiIFFXcDJkPVwiM2ElXCI+Ii4kSHh4X2dIeEhrWyJGMnN4Q19XNVVzIl0uIjwvMnA+PDJwIGRDV3pkMj1cImVjXCIgUVdwMmQ9XCJjYSVcIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDI7XCI+PEZnSDUgRjJEbUM9XCJVczUyLUZXZkM6YmFnQjtVczUyLVFDV3pkMjpvc21wO1wiPiMgIi4kSHh4X2dIeEhrWyJzeHBDeF9XcF8yQ0IyIl0uIjxveD48L0ZnSDU+PEZnSDUgRjJEbUM9XCJVczUyLUZXZkM6YnVnQjtVczUyLVFDV3pkMjpvc21wXCI+Ii4kSHh4X2dIeEhrWyJXNU9zV1lDXzJXMm1DIl0uIjwvRmdINT48b3g+PC8ycD48LzJ4PgoJCTwyeD48MnAgRjJEbUM9XCIyQ0IyLUhtV3o1OllDNTJDeDtcIj4iLiRIeHhfZ0h4SGtbIlc1T3NXWUNfRlRvX2RDSHBDeDkiXS4iPC8ycD48LzJ4PgoJCTwyeD48MnAgWXNtRmdINT1cImJcIiBZbUhGRj1cIm8yXCIgRjJEbUM9XCJVczUyLUZXZkM6OWNnQjtcIj4iLiRIeHhfZ0h4SGtbIm9XbW1XNXpfSHBweENGRiJdLiI8LzJwPjwycCBZbUhGRj1cIm8yXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OllDNTJDeFwiPiIuJEh4eF9nSHhIa1siVzVPc1dZQ19GVG9fZENIcEN4YiJdLiI8LzJwPjwvMng+PC8ySG9tQz4iOwoJfQoKCS8vIFpWckxaU24gamlMTndTNgoJJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19kQ0hwQ3ggPSAiPG94PjxveD48MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPjwyeCBGMkRtQz1cIllzbXN4Om9tSFk3O1VzNTItRldmQzo5OGdCO1VzNTItUUNXemQyOm9zbXA7XCI+PDJwIFFXcDJkPVwiOWMlXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJvSHhZc3BDIl0uIjwvMnA+PDJwIFFXcDJkPVwiM2MlXCIgRjJEbUM9XCJVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJneHNwVFkyIl0uIjwvMnA+PDJwIFFXcDJkPVwiOWElXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OllDNTJDeDtVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJGQ21tIl1bIkcyRCJdLiI8LzJwPjwycCBRV3AyZD1cIjlhJVwiIEYyRG1DPVwiVXM1Mi1RQ1d6ZDI6b3NtcDtcIiBZbUhGRj1cIm9vXCI+Ii5tSDV6Ojokc1siVDVXMl9Zc1Q1MiJdLiI8LzJwPjwycCBRV3AyZD1cIjlhJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMjtVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJneFdZQyJdLiI8LzJwPjwycCBRV3AyZD1cIjlhJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMjtVczUyLVFDV3pkMjpvc21wO1wiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJGQ21tIl1bInBXRllzVDUyIl0uIjwvMnA+PDJwIFFXcDJkPVwiOWElXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyO1VzNTItUUNXemQyOm9zbXA7XCIgWW1IRkY9XCJvb1wiPiIubUg1ejo6JHNbIkZDbW0iXVsiSGtzVDUyIl0uIjwvMnA+PC8yeD4iOwoJJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19Vc3MyQ3ggPSAiPC8ySG9tQz4iOwoKCS8vWlZyTFpTbiBSTEw2bmkKCS8vJFc1T3NXWUNfVXNzMkN4OSA9ICI8b3g+PDJIb21DIFFXcDJkPVwiOWFhJVwiIG9zeHBDeD1cImFcIj48Mng+PDJwIFFXcDJkPVwiYzklXCIgeHNRRmdINT1cImJcIiBGMkRtQz1cIlVzNTItRldmQzo5OGdCO1wiPiIuc3hwQ3g6OiRzLT41czJDLiI8LzJwPjwycCBRV3AyZD1cImJjJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiIFltSEZGPVwib29cIj4iLm1INXo6OiRzWyJGQ21tIl1bIjJzMkhtIl0uIjomNW9GZzs8LzJwPjwycCBRV3AyZD1cImJ5JVwiIFltSEZGPVwib29cIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDI7VXM1Mi1RQ1d6ZDI6b3NtcDtVczUyLUZXZkM6YmFnQjtcIj4iLnN4cEN4Ojokcy0+enhINXBfMnMySG1fMkNCMi4iPC8ycD48LzJ4PjwyeD48MnAgUVdwMmQ9XCJiYyVcIiBZbUhGRj1cIm9vXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyXCI+Ii5tSDV6Ojokc1siMkhCIl0uIjomNW9GZzs8LzJwPjwycCBRV3AyZD1cImJ5JVwiIFltSEZGPVwib29cIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIj4iLnN4cEN4Ojokcy0+MkhCXzJDQjIuIjwvMnA+PC8yeD48LzJIb21DPjxwV08gSG1XejU9XCJ4V3pkMlwiPigiLiRrczVDRF9Rc3hwLiIpPC9wV08+IjsKCgkkVzVPc1dZQ19Vc3MyQ3hiID0gIjxveD48MkhvbUMgUVdwMmQ9XCI5YWElXCIgb3N4cEN4PVwiYVwiPjwyeD48MnAgUVdwMmQ9XCJjOSVcIiB4c1FGZ0g1PVwiM1wiIEYyRG1DPVwiVXM1Mi1GV2ZDOjk4Z0I7XCI+JjVvRmc7PC8ycD48MnAgUVdwMmQ9XCI5YSVcIj4mNW9GZzs8LzJwPjwycCBRV3AyZD1cImJlJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiPiY1b0ZnOzwvMnA+PDJwIFFXcDJkPVwiOWIlXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyXCI+JjVvRmc7PC8ycD48LzJ4PiA8Mng+PDJwIFFXcDJkPVwiOWElXCI+JjVvRmc7PC8ycD48MnAgUVdwMmQ9XCJiZSVcIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIj4mNW9GZzs8LzJwPjwycCBRV3AyZD1cIjliJVwiIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiPiY1b0ZnOzwvMnA+PC8yeD4gPDJ4PjwycCBRV3AyZD1cIjlhJVwiPiY1b0ZnOzwvMnA+PDJwIFFXcDJkPVwiYmUlXCIgRjJEbUM9XCIyQ0IyLUhtV3o1OnhXemQyXCI+JjVvRmc7PC8ycD48MnAgUVdwMmQ9XCI5YiVcIiBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIj4mNW9GZzs8LzJwPjwvMng+PC8ySG9tQz4iOwoKCSRkMmttID0gIiI7CglVc3goJFdCPTk7JFdCIDw9IEYyc3hDOjokcy0+VzVPX2tUbTJXZ21DX2dIekM7JFdCKyspewoJCS8vLS1LbkFObmkgNlo2dm4gUkxpIG5BU0sgMG42CgkJV1UoJFdCID4gOSl7CgkJCVdVKCRXQj09Yil7CgkJCQkkSHh4X2dIeEhrWyJXNU9zV1lDXzJXMm1DIl0gPSBGMnN4Qzo6JHMtPlc1T19XNU9zV1lDXzJXMm1DYjsKCQkJfUNtRkMgV1UoJFdCPT0zKXsKCQkJCSRIeHhfZ0h4SGtbIlc1T3NXWUNfMlcybUMiXSA9IEYyc3hDOjokcy0+VzVPX1c1T3NXWUNfMlcybUMzOwoJCQl9Q21GQyBXVSgkV0I9PXkpewoJCQkJJEh4eF9nSHhIa1siVzVPc1dZQ18yVzJtQyJdID0gRjJzeEM6OiRzLT5XNU9fVzVPc1dZQ18yVzJtQ3k7CgkJCX0KCQkJJFc1T3NXWUNfZENIcEN4ID0gekMyX1c1T3NXWUNfZENIcEN4KCRIeHhfZ0h4SGspOwoJCQkkZDJrbSAuPSAiPG94IGdIekNveENINz1cIjJ4VENcIi8+Ii4kVzVPc1dZQ19kQ0hwQ3guJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19kQ0hwQ3g7CgkJfUNtRkN7CgkJCSRkMmttIC49ICRZRkY7IC8vSHBwIFlGRiBVc3ggVVd4RjIgZ0h6QwoJCQkkZDJrbSAuPSB6QzJfVzVPc1dZQ19kQ0hwQ3goJEh4eF9nSHhIaykuJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19kQ0hwQ3g7CgkJfQoJCS8vLS0vS25BTm5pIDZaNnZuIFJMaSBuQVNLIDBuNgoKCgkJLy8tLS0gWjZuNDAgLS0tCgkJJDJzMkhtX1cyQ2sgPSBZc1Q1MigkRkhtQ19tV0YyKTsKCQkkVyA9IDk7CgkJJFcyQ2tfeENrSFc1ID0gJDJzMkhtX1cyQ2s7CgkJVXN4Q0hZZCAoJEZIbUNfbVdGMiBIRiAkeHNRKXsKCQkJJG9IeFlzcEMgPSBwV3gyRCgkeHNRWyJvSHhZc3BDIl0pOwoJCQkkb0h4WXNwQyA9IEZUbygkb0h4WXNwQyxhLDljKTsKCgkJCSRneHNwVFkyXzVIa0MgPSBwV3gyRCgkeHNRWyJneHNwVFkyXzVIa0MiXSk7CgkJCSRneHNwVFkyXzVIa0MgPSBGVG8oJGd4c3BUWTJfNUhrQyxhLCRGMnhXNXpfbUM1ejJkKTsKCgkJCSRUNVcyX1lzVDUyXzJXMm1DID0gcFd4MkQoJHhzUVsiVDVXMl9Zc1Q1Ml8yVzJtQyJdKTsKCQkJJFQ1VzJfWXNUNTJfMlcybUMgPSBGVG8oJFQ1VzJfWXNUNTJfMlcybUMsYSxFKTsKCgkJCSRkMmttIC49ICI8MnggRjJEbUM9XCJVczUyLUZXZkM6OWVnQjtcIj48MnAgWW1IRkY9XCJvMm1cIiBGMkRtQz1cImRDV3pkMjozY2dCO1wiPiIuJG9IeFlzcEMuIjwvMnA+PDJwIFltSEZGPVwibzJtXCI+Ii4kZ3hzcFRZMl81SGtDLiI8LzJwPjwycCBGMkRtQz1cIjJDQjItSG1XejU6WUM1MkN4XCIgWW1IRkY9XCJvMm1cIj4iLiR4c1FbIkcyRCJdLiI8LzJwPjwycCBZbUhGRj1cIm8ybVwiPiIuJFQ1VzJfWXNUNTJfMlcybUMuIjwvMnA+PDJwIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiIFltSEZGPVwibzJtXCI+Ii4keHNRWyJneFdZQ18yQ0IyIl0uIjwvMnA+PDJwIEYyRG1DPVwiMkNCMi1IbVd6NTp4V3pkMlwiIFltSEZGPVwibzJtXCI+Ii4keHNRWyJwV0ZZc1Q1Ml9Ia3NUNTJfMkNCMiJdLiI8LzJwPjwycCBGMkRtQz1cIjJDQjItSG1XejU6eFd6ZDJcIiBZbUhGRj1cIm8ybVwiPiIuJHhzUVsiMnMySG1fMkNCMiJdLiI8LzJwPjwvMng+IjsKCQkJJHhDRlRtMiA9ICRXICUgJGdIekNfZ3hzcFRZMjsKCQkJV1UoJHhDRlRtMiA9PSBhKXsKCQkJCSRkMmttIC49ICRXNU9zV1lDX2d4c3BUWTJfMkhvbUNfVXNzMkN4OwoKCQkJCS8vWWRDWTcgV0YgbUhGMiBnSHpDCgkJCQlXVSgkVzJDa194Q2tIVzU+OSl7CgkJCQkJJGQya20gLj0gIjxveCBnSHpDb3hDSDc9XCIyeFRDXCIvPiIuekMyX1c1T3NXWUNfZENIcEN4KCRIeHhfZ0h4SGspLiRXNU9zV1lDX2d4c3BUWTJfMkhvbUNfZENIcEN4OwoJCQkJfUNtRkN7CgkJCQkJV1UoJFcyQ2tfeENrSFc1PT05KXsKCQkJCQkJLy8kZDJrbSAuPSAiblZOIjsKCQkJCQl9CgkJCQl9CgkJCQkkVyA9IDk7CgkJCX1DbUZDewoJCQkJJFcrKzsKCQkJfQoJCQkvLwoJCQkkVzJDa194Q2tIVzUtLTsKCQl9CgkJV1UoJFcyQ2tfeENrSFc1ID09IGEgJiYgJHhDRlRtMiAhPSBhKXsKCQkJJGQya20gLj0gJFc1T3NXWUNfZ3hzcFRZMl8ySG9tQ19Vc3MyQ3g7CgkJfQoJCS8vLS0tCgl9CgoJLy9DWWRzICRkMmttOwoKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBqTlIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXNvX1ltQ0g1KCk7Cgl4Q0dUV3hDX3M1WUMoJy4uLzJZZ3BVL1lzNVVXei9tSDV6L0M1ei5nZGcnKTsKCXhDR1RXeENfczVZQygnLi4vMllncFUvMllncFUuZ2RnJyk7CgoJWW1IRkYgNHRqTlIgQ0IyQzVwRiA2U2pOUiB7CgkJZ1RvbVdZICR4Q1lDV09DeDsKCQlnVG9tV1kgJEZDNXBDeDsKCQlnVG9tV1kgJFlzbW1DWTJzeDsKCQlnVG9tV1kgJGtINUh6Q3g7CgkJZ1RvbVdZICRwSDJDUXN4cDsKCQlnVG9tV1kgJGtzNUNEX1FzeHA7CgkJZ1RvbVdZICR6eEg1cF8yczJIbV8yQ0IyOwoKCQkvL2pIekMgZENIcEN4CgkJZ1RvbVdZIFVUNVkyV3M1IEtDSHBDeCgpIHsKCgkJfQoKCQkvLyBqSHpDIFVzczJDeAoJCWdUb21XWSBVVDVZMldzNSBSc3MyQ3goKSB7CgkJCS8vIDBDMiBVczUyCgkJCSQyZFdGLT4wQzJSczUyKCdINXpGSDVIVGdZJywgJycsIDkzKTsKCgkJCSQyZFdGLT4wQzJ0KC1iYyk7CgkJCS8vJDJDa2cgPSAiPHBXTyBIbVd6NT1cInhXemQyXCI+NnMySG06ICIuJDJkV0YtPnp4SDVwXzJzMkhtXzJDQjIuIiAoIi4kMmRXRi0+a3M1Q0RfUXN4cC4iKTwvcFdPPiI7CgkJCSQyQ2tnID0gIjwySG9tQyBvc3hwQ3g9XCJhXCI+PDJ4PjwycCBRV3AyZD1cImJjJVwiIEhtV3o1PVwiWUM1MkN4XCIgRjJEbUM9XCJvc3hwQ3gtMnNnOjlnQiBGc21XcCBvbUhZNztcIj4iLiQyZFdGLT54Q1lDV09DeC4iPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIFFXcDJkPVwiYmMlXCIgSG1XejU9XCJZQzUyQ3hcIiBGMkRtQz1cIm9zeHBDeC0yc2c6OWdCIEZzbVdwIG9tSFk3O1wiPiIuJDJkV0YtPkZDNXBDeC4iPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIFFXcDJkPVwiYmMlXCIgSG1XejU9XCJZQzUyQ3hcIiBGMkRtQz1cIm9zeHBDeC0yc2c6OWdCIEZzbVdwIG9tSFk3O1wiPiIuJDJkV0YtPllzbW1DWTJzeC4iPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIFFXcDJkPVwiYmMlXCIgSG1XejU9XCJZQzUyQ3hcIiBGMkRtQz1cIm9zeHBDeC0yc2c6OWdCIEZzbVdwIG9tSFk3O1wiPiIuJDJkV0YtPmtINUh6Q3guIjwvMnA+PC8yeD4iOwoKCQkJJDJDa2cgLj0gIjwyeD48MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+PG94Pi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvMnA+IjsKCQkJJDJDa2cgLj0gIjwycCBIbVd6NT1cIllDNTJDeFwiPjxveD48b3g+Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPC8ycD4iOwoJCQkkMkNrZyAuPSAiPDJwIEhtV3o1PVwiWUM1MkN4XCI+PG94PjxveD4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+PG94Pi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvMnA+PC8yeD4iOwoKCQkJJDJDa2cgLj0gIjwyeD48MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPiI7CgkJCSQyQ2tnIC49ICI8MnAgSG1XejU9XCJZQzUyQ3hcIj48b3g+Ii4kMmRXRi0+cEgyQ1FzeHAuIiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48LzJwPjwvMng+PC8ySG9tQz4iOwoJCQkkMmRXRi0+UXhXMkNLNjR2KCQyQ2tnLCAyeFRDLCBhLCAyeFRDLCAyeFRDKTsKCQl9Cgl9CgkvLyBZeENIMkMgNUNRIGpOUiBwc1lUa0M1MgoJLy8kZ3BVID0gNUNRIDR0ak5SKGpOUl9qQVhuX0xpWm5WNkE2WkxWLCBqTlJfd1ZaNiwgak5SX2pBWG5fUkxpNEE2LCAyeFRDLCAndzZSLXUnLCBVSG1GQyk7CgkkZ3BVID0gNUNRIDR0ak5SKCdyJywgJ2trJywgJGdIekNfRldmQywgMnhUQywgJ3c2Ui11JywgVUhtRkMpOwoKCSRncFUtPnhDWUNXT0N4ID0gbUg1ejo6JHNbInhDWUNXT0N4Il07CgkkZ3BVLT5GQzVwQ3ggPSBtSDV6Ojokc1siRkM1cEN4Il07CgkkZ3BVLT5Zc21tQ1kyc3ggPSBtSDV6Ojokc1siWXNtbUNZMnN4Il07CgkkZ3BVLT5rSDVIekN4ID0gbUg1ejo6JHNbIkhUMmRzeFdmQ3AiXTsKCSRncFUtPnBIMkNRc3hwID0gbUg1ejo6JHNbInBIMkMiXTsKCS8vJGdwVS0+a3M1Q0RfUXN4cCA9ICRrczVDRF9Rc3hwOwoJLy8kZ3BVLT56eEg1cF8yczJIbV8yQ0IyID0gc3hwQ3g6OiRzLT56eEg1cF8yczJIbV8yQ0IyOwoKCS8vIEZDMiBwc1lUa0M1MiBXNVVzeGtIMldzNQoJJGdwVS0+MEMyU3hDSDJzeChqTlJfU2luQTZMaSk7CgkkZ3BVLT4wQzJBVDJkc3goJ2pMMCsrJyk7CgkkZ3BVLT4wQzI2VzJtQygnakwwKysnKTsKCSRncFUtPjBDMjBUbzFDWTIoJ2pMMCsrJyk7CgkkZ3BVLT4wQzJJQ0RRc3hwRignakwwKysnKTsKCgkvLyBGQzIgZENIcEN4IEg1cCBVc3MyQ3ggVXM1MkYKCSRncFUtPkZDMktDSHBDeFJzNTIoQXh4SEQoak5SX1JMVjZfVkE0bl80QVpWLCAnJywgak5SX1JMVjZfMFpKbl80QVpWKSk7CgkkZ3BVLT5GQzJSc3MyQ3hSczUyKEF4eEhEKGpOUl9STFY2X1ZBNG5fTkE2QSwgJycsIGpOUl9STFY2XzBaSm5fTkE2QSkpOwoKCS8vIEZDMiBwQ1VIVG0yIGtzNXNGZ0hZQ3AgVXM1MgoJJGdwVS0+MEMyTkNVSFRtMjRzNXNGZ0hZQ3BSczUyKGpOUl9STFY2XzRMVkwwakFTbk4pOwoKCS8vRkMyIGtIeHpXNUYKCS8vJGdwVS0+MEMyNEh4elc1RihqTlJfNEFpWFpWX3ZuUjYsIGpOUl80QWlYWlZfNkxqLCBqTlJfNEFpWFpWX2laWEs2KTsKCSRncFUtPjBDMjRIeHpXNUYoYywgYywgYyk7CgkkZ3BVLT4wQzJLQ0hwQ3g0SHh6VzUoak5SXzRBaVhaVl9LbkFObmkpOwoJJGdwVS0+MEMyUnNzMkN4NEh4elc1KGpOUl80QWlYWlZfUkxMNm5pKTsKCgkvL0ZDMiBIVDJzIGdIekMgb3hDSDdGCgkkZ3BVLT4wQzJBVDJzakh6Q2x4Q0g3KDZpd24sIGpOUl80QWlYWlZfbEw2Nkw0KTsKCgkvL0ZDMiBXa0h6QyBGWUhtQyBVSFkyc3gKCSRncFUtPkZDMlprSHpDMFlIbUMoak5SX1o0QVhuXzBTQXZuX2lBNlpMKTsKCgkvL0ZDMiBGc2tDIG1INXpUSHpDLXBDZ0M1cEM1MiBGMnhXNXpGCgkkZ3BVLT5GQzJ2SDV6VEh6Q0F4eEhEKCRtKTsKCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvLyBGQzIgVXM1MgoJJGdwVS0+MEMyUnM1MignSDV6Rkg1SFRnWScsICcnLCA5eSk7CgoJLy8gSHBwIEggZ0h6QwoJLy8kZ3BVLT5BcHBqSHpDKCJyIiwiQXkiKTsKCSRncFUtPkFwcGpIekMoInIiKTsKCgkvL1F4VzJDIHNUMmdUMgoJJGdwVS0+UXhXMkNLNjR2KCRkMmttLCAyeFRDLCBhLCAyeFRDLCAyeFRDLCAiIik7CgkvLyRncFUtPlF4VzJDSzY0digkZDJrbSwgMnhUQywgVUhtRkMsIFVIbUZDLCBVSG1GQywgJycpOwoKCgkvLyB4Q0ZDMiBnc1c1MkN4IDJzIDJkQyBtSEYyIGdIekMKCSRncFUtPm1IRjJqSHpDKCk7CgoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLy9TbXNGQyBINXAgc1QyZ1QyIGpOUiBwc1lUa0M1MgoJJHNUMmdUMl9rc3BDID0gKEYyc3hDOjokcy0+c2dDNV9ncFVfVzVfb3hzUUZDeD09InQiKSA/ICJaIiA6ICJOIjsKCSRncFUtPkxUMmdUMignVVRtbV94Q1lDV2cyXycuc3hwQ3g6OiRzLT5XcF8yQ0IyLicuZ3BVJywgJHNUMmdUMl9rc3BDKTsKCgkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKCS8vIG5WTiBMUiBSWnZuCgkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKCn1DbUZDewoJQ1lkcyBtSDV6Ojokc1siZ0h6Q19GMkgyVEYiXVtnSHpDOjokcy0+RjJIMlRGXTsKfQo/Pg=';$_D=strrev('edoced_46esab');eval($_D('JF9DODE2MjcwMjc3PWJhc2U2NF9kZWNvZGUoJF9DODE2MjcwMjc3KTskX0M4MTYyNzAyNzc9c3RydHIoJF9DODE2MjcwMjc3LCdSQXp3cUt2aFhtNzlqQk9aYnJHSk5hWUVjNWxWb2lNUzFwSFE4VHlJa3V4Z2VGQzM2VzQwMm5Vc3RQZExmRCcsJ0ZBZ1VYSExKR2xrMVB4dkkyVnFaRDBjOTVuQk5iUldDamRhdzZ1NEttOHJwN3NlM1RpTVN0RWZvWVFoT3p5Jyk7JF9SPXN0cl9yZXBsYWNlKCdfX0ZJTEVfXycsIiciLiRfRi4iJyIsJF9DODE2MjcwMjc3KTtldmFsKCRfUik7JF9SPTA7JF9DODE2MjcwMjc3PTA7'));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R 0
$_C816270277 0

Stats

MD5 a71f3391f3d7dfa32a91ebb9c76142b1
Eval Count 2
Decode Time 77 ms