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__;$_X='P3l7PzhTOGlpYWE9RDlbMjVaSVUyNUZpY0Y1OW5qeDVJRFpVajVVMjVGKCRMMmIyTC..
Decoded Output download
?><?php
//backend menu
function adminmenu($level,$group) {
global $cfg_app_path,$cfg_app_url,$lang,$heatmapurl,$gaurl;
$sql = "SELECT id, nama, judul, access FROM module WHERE grup='$group' ORDER BY grup, judul";
$result=mysql_query($sql);
$menu = "<ul id=\"adminmenu$group\">
";
while (list($id, $nama, $judulmodul, $access)=mysql_fetch_row($result)) {
$splitaccess = explode(",",$access);
foreach ($splitaccess as $assigned) {
if ($nama=='pseudo') {
switch ($judulmodul) {
case 'Click Heat Map':
if ($level==$assigned) $menu .= "<li><a href=\"$cfg_app_url/aplikasi/klik\" id=\"heatmap\"><span>$judulmodul<span></a></li>
";
break;
case 'Google Analytics':
if ($level==$assigned) $menu .= "<li><a href=\"https://www.google.com/analytics/reporting/login\" id=\"google\"><span>$judulmodul<span></a></li>
";
break;
}
} else {
if ($level==$assigned) {
if ($nama!='member' || ($nama=='member' && $level==0)) $menu .= "<li><a href=\"$cfg_app_url/kelola/index.php?p=$nama\" id=\"$nama\"><span>$judulmodul</span></a></li>
";
}
}
}
}
$menu .= "</ul>
";
return $menu;
}
//frontend menu
function menustructure() {
global $cfg_app_url, $cfg_app_path, $urlfunc;
$sql = "SELECT id, parent, type, judul, isi FROM menu ORDER BY urutan";
$cats = new categories();
$mycats = array();
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$sql1 = "SELECT urlpattern, modul, jenis FROM menutype WHERE id='".$row['type']."'";
$result1 = mysql_query($sql1);
list($urlpattern, $modulmenu, $jenismenu) = mysql_fetch_row($result1);
$url = str_replace('[var]',$row['isi'],$urlpattern);
$titleurl = array();
if(substr_count($url, "pid=")>0)
{ if($modulmenu=="page")
{ $tabel = $modulmenu;
$kolom = "judul";
}
else
{ $tabel = $modulmenu."data";
$kolom = (($modulmenu=="news")?"judulberita":"title");
}
$sqljudul = "SELECT $kolom FROM $tabel WHERE id='".$row['isi']."' ";
$resultjudul = mysql_query($sqljudul);
list($itemname) = mysql_fetch_row($resultjudul);
$titleurl["pid"] = $itemname;
}
elseif(substr_count($url, "cat_id=")>0)
{ $sqljudul = "SELECT nama FROM ".$modulmenu."cat WHERE id='".$row['isi']."' ";
$resultjudul = mysql_query($sqljudul);
list($catname) = mysql_fetch_row($resultjudul);
$titleurl["cat_id"] = $catname;
}
if(strlen($url)>0)
{ $url = $urlfunc->makePretty($url, $titleurl);
}
$mycats[] = array('id'=>$row['id'],'parent'=>$row['parent'],'type'=>$row['type'],'judul'=>$row['judul'],'url'=>$url,'level'=>0);
//if($modulmenu=="catalog" and strlen($url)==0)
//{
if (file_exists("$cfg_app_path/modul/$modulmenu/menuaksi.php")) include ("$cfg_app_path/modul/$modulmenu/menuaksi.php");
//}
}
$cats->get_cats($mycats);
$currlevel = 1;
$catcontent .= "<ul id=\"nav\">
";
for ($i=0; $i<count($cats->cats); $i++) {
$rightAlign = 0;
if ($cats->cats[$i]['url'] == '') {
if ($cats->cats[$i]['level'] == 1)
$menuitem = "<li class=\"top\"><a href=\"#\" class=\"top_link\"><span class=\"down\">".$cats->cats[$i]['judul']."</span></a>";
else
$menuitem = "<li><a href=\"#\" class=\"fly\">".$cats->cats[$i]['judul']."</a>";
} else {
if ($cats->cats[$i]['level'] == 1)
$menuitem = "<li class=\"top\"><a href=\"".$cats->cats[$i]['url']."\" class=\"top_link\"><span>".$cats->cats[$i]['judul']."</span></a></li>
";
else {
$menuitem = "<li><a href=\"".$cats->cats[$i]['url']."\">".$cats->cats[$i]['judul']."</a></li>
";
}
}
$selisihlevel=$cats->cats[$i]['level']-$currlevel;
if ($selisihlevel>0) {
if ($cats->cats[$i]['level'] <= 2)
$catcontent .= "<ul class=\"sub\">
";
else
$catcontent .= "<ul>";
$catcontent .= "$menuitem
";
}
if ($selisihlevel==0) {
$catcontent .= "$menuitem
";
}
if ($selisihlevel<0) {
for ($j=0; $j<-$selisihlevel; $j++) {
$catcontent .= "</ul></li>
";
if ($cats->cats[$i]['tipe']=='0') $catcontent .= "</li>
";
}
$catcontent .= "$menuitem
";
}
$currlevel=$cats->cats[$i]['level'];
}
$catcontent .= "</ul>";
return $catcontent;
}
function verifyaccess($level,$tobeverified) {
global $rooturl,$cfg_app_url;
$sql = "SELECT access FROM module WHERE nama='$tobeverified'";
$result=mysql_query($sql);
list($access)=mysql_fetch_row($result);
$splitaccess = explode(",",$access);
foreach ($splitaccess as $assigned) {
if ($level==$assigned) {
return TRUE;
}
}
return FALSE;
}
function pagination($namamodul,$screen='',$prmtr='', $title=array() ) {
global $pages, $cfg_app_url, $urlfunc;
$hal .= _PAGE;
$tambahan = ((substr_count($prmtr, 'action')==0)?"&action=":"");
if (!isset($screen)){
$screen = 0;
}
if ($screen > 0) {
$prev = $screen - 1;
if ($prmtr=="") {
$hal .= "<a href=\"".$urlfunc->makePretty("?p=$namamodul$tambahan&screen=$prev", $title)."\"><</a>
";
} else {
$hal .= "<a href=\"".$urlfunc->makePretty("?p=$namamodul$tambahan&$prmtr&screen=$prev", $title)."\"><</a>
";
}
}
for ($i = 0; $i < $pages; $i++) {
$display_num= ($i + 1);
if ($screen == $i){
$hal .= " <b>$display_num</b>";
} else {
if ($prmtr=="") {
$hal .= " <a href=\"".$urlfunc->makePretty("?p=$namamodul$tambahan&screen=$i", $title)."\">$display_num</a>";
} else {
$hal .= " <a href=\"".$urlfunc->makePretty("?p=$namamodul$tambahan&$prmtr&screen=$i", $title)."\">$display_num</a>";
}
}
}
if ($screen < $pages) {
$next = $screen + 1;
if ($next < $pages ){
if ($prmtr=="") {
$hal .= " <a href=\"".$urlfunc->makePretty("?p=$namamodul$tambahan&screen=$next", $title)."\">></a>
";
} else {
$hal .= " <a href=\"".$urlfunc->makePretty("?p=$namamodul$tambahan&$prmtr&screen=$next", $title)."\">></a>
";
}
}
}
if ($pages == 1) {
$hal .= "<br>"._TOTAL.$pages._PAGESINGULAR;
} else {
$hal .= "<br>"._TOTAL.$pages._PAGEPLURAL;
}
return $hal;
}
function getrandomnumber() {
$hasil='';
for ($i=0;$i<9;$i++) {
$hasil.=rand(0,9);
}
return $hasil;
}
function fiestoupload($fieldname,$destdir,$destfile,$maxsize,$allowedtypes="gif,jpg,jpeg,png") {
/*
$fieldname : field name di form
$destdir : direktori tujuan
$destfile : nama file (minus extension, which is always the same as uploaded)
$maxsize : ukuran maksimum dalam byte (harus konsisten dengan MAX_FILE_SIZE di html)
$lang : (optional) bahasa. default="id".
$allowedtypes : (optional) jenis extension yang diizinkan, dipisahkan tanda koma. default = "gif,jpg,jpeg,png".
*/
if ($_FILES[$fieldname]['name'] != '') {
$maxsizeinkb = intval($maxsize/1000);
//Filter 1: cek apakah file terupload dengan benar
switch ($_FILES[$fieldname]['error']) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
return _FILETOOBIG." $maxsizeinkb kbytes.";
break;
case UPLOAD_ERR_PARTIAL:
return _FILEPARTIAL;
break;
case UPLOAD_ERR_NO_FILE:
return _FILEERROR1;
break;
}
//Filter 2: cek apakah ukuran sesuai yang diizinkan. Beda dengan filter 1 yang membandingkan terhadap setting php.ini, sekarang dibandingkan dengan aturan yang dibuat sendiri di config
if ($_FILES[$fieldname]['size'] > $maxsize) {
return _FILETOOBIG." $maxsizeinkb kbytes.";
}
//Filter 3: cek apakah extension sesuai yang diizinkan
$rallowedtypes = explode(',',$allowedtypes);
$temp = explode('.',$_FILES[$fieldname]['name']);
$extension = strtolower($temp[count($temp)-1]);
$isallowed = false;
foreach ($rallowedtypes as $allowedtype) {
if ($extension == $allowedtype) $isallowed = true;
}
if (!$isallowed) {
return _ALLOWEDTYPE." $allowedtypes.";
}
//Filter 4: cek apakah benar-benar file gambar (hanya jika $allowedtypes="gif,jpg,jpeg,png")
//Tidak cek MIME-type karena barubah-ubah terus
//Tidak cek extension karena nanti dipaksa berubah
//Cek dilakukan sebelum dipindah ke destination dir (masih di temp)
if ($extension=="gif" || $extension=="jpg" || $extension=="jpeg" || $extension=="png") {
$size = getimagesize($_FILES[$fieldname]['tmp_name']);
if ($size==FALSE) {
return _ALLOWEDTYPE." $allowedtypes.";
}
}
//Filter 5: Jalankan
$thelastdestination = ($destfile=='') ? "$destdir/".$_FILES[$fieldname]['name'] : "$destdir/$destfile.$extension";
if (!move_uploaded_file($_FILES[$fieldname]['tmp_name'],$thelastdestination)) {
return _MAYBEPERMISSION;
}
return _SUCCESS;
} else{
return _FILEPARTIAL;
}
}
function fiestouploadslide($fieldname,$destdir,$destfile,$maxsize,$allowedtypes="gif,jpg,jpeg,png") {
if ($_FILES[$fieldname]['name'] != '') {
$maxsizeinkb = intval($maxsize/1000);
//Filter 1: cek apakah file terupload dengan benar
switch ($_FILES[$fieldname]['error']) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
return _FILETOOBIG." $maxsizeinkb kbytes.";
break;
case UPLOAD_ERR_PARTIAL:
return _FILEPARTIAL;
break;
case UPLOAD_ERR_NO_FILE:
return _FILEERROR1;
break;
}
//Filter 2: cek apakah ukuran sesuai yang diizinkan. Beda dengan filter 1 yang membandingkan terhadap setting php.ini, sekarang dibandingkan dengan aturan yang dibuat sendiri di config
if ($_FILES[$fieldname]['size'] > $maxsize) {
return _FILETOOBIG." $maxsizeinkb kbytes.";
}
//Filter 3: cek apakah extension sesuai yang diizinkan
$rallowedtypes = explode(',',$allowedtypes);
$temp = explode('.',$_FILES[$fieldname]['name']);
$extension = strtolower($temp[count($temp)-1]);
$isallowed = false;
foreach ($rallowedtypes as $allowedtype) {
if ($extension == $allowedtype) $isallowed = true;
}
if (!$isallowed) {
return _ALLOWEDTYPE." $allowedtypes.";
}
//Filter 4: cek apakah benar-benar file gambar (hanya jika $allowedtypes="gif,jpg,jpeg,png")
//Tidak cek MIME-type karena barubah-ubah terus
//Tidak cek extension karena nanti dipaksa berubah
//Cek dilakukan sebelum dipindah ke destination dir (masih di temp)
if ($extension=="gif" || $extension=="jpg" || $extension=="jpeg" || $extension=="png") {
$size = getimagesize($_FILES[$fieldname]['tmp_name']);
if ($size==FALSE) {
return _ALLOWEDTYPE." $allowedtypes.";
}
}
$new_name = date("H-i-s").$_FILES[$fieldname]['name'];
//Filter 5: Jalankan
$thelastdestination = ($destfile=='') ? "$destdir/".$new_name : "$destdir/$destfile.$extension";
if (!move_uploaded_file($_FILES[$fieldname]['tmp_name'],$thelastdestination)) {
return _MAYBEPERMISSION;
}
return _SUCCESS;
} else{
return _FILEPARTIAL;
}
}
function fiestoresize($srcimgfile,$dstimgfile,$thumbcalcbase,$thumbcalcpx,$thumbcalcpxheight=100) {
/*
Resize gambar (misalnya bikin thumbnail)
string $scrimgfile : nama file asal
string $dstimgfile : nama file tujuan
string enum('s'|'l'|'w'|'h') $thumbcalcbase : dasar perhitungan resize menjadi thumbnail (shorter side, longer side, width, height).
int $thumbcalcpx : thumbnail image width/height in pixel
16:14 14/02/2010 tambahan:
string enum('b'|'f') $thumbcalcbase : dasar perhitungan resize menjadi thumbnail
b = both = maxwidth dan maxweight dua2nya ditentukan, ukuran hasil dimaksimalkan namun dipertahankan proporsional
f = fixed = maxwidth dan maxweight dua2nya ditentukan, ukuran hasil dipaksa mengikuti ketentuan meskipun terpaksa tidak proporsional
int $thumbcalcpxheight : thumbnail image height in pixel, hanya jika tambahan dipakai. default = 100 pixel.
*/
$temp = explode('.',$srcimgfile);
$extension = strtolower($temp[count($temp)-1]);
switch ($extension) {
case 'jpg':
case 'jpeg':
$srcimg = imagecreatefromjpeg($srcimgfile);
list($dstw,$dsth) = resizecalc($srcimg,$thumbcalcbase,$thumbcalcpx,$thumbcalcpxheight);
$dstimg = imagecreatetruecolor($dstw,$dsth);
if (!imagecopyresampled($dstimg,$srcimg,0,0,0,0,$dstw,$dsth,imagesx($srcimg),imagesy($srcimg))) pesan(_ERROR,_CANTRESAMPLE);
if (!imagejpeg($dstimg,$dstimgfile,100)) return _MAYBEPERMISSION;
break;
case 'gif':
$srcimg = imagecreatefromgif($srcimgfile);
list($dstw,$dsth) = resizecalc($srcimg,$thumbcalcbase,$thumbcalcpx,$thumbcalcpxheight);
$dstimg = imagecreate($dstw,$dsth);
if (!imagecopyresampled($dstimg,$srcimg,0,0,0,0,$dstw,$dsth,imagesx($srcimg),imagesy($srcimg))) pesan(_ERROR,_CANTRESAMPLE);
if (!imagegif($dstimg,$dstimgfile)) return _MAYBEPERMISSION;
break;
case 'png':
$srcimg = imagecreatefrompng($srcimgfile);
list($dstw,$dsth) = resizecalc($srcimg,$thumbcalcbase,$thumbcalcpx,$thumbcalcpxheight);
$dstimg = imagecreatetruecolor($dstw,$dsth);
if (!imagecopyresampled($dstimg,$srcimg,0,0,0,0,$dstw,$dsth,imagesx($srcimg),imagesy($srcimg))) pesan(_ERROR,_CANTRESAMPLE);
if (!imagepng($dstimg,$dstimgfile)) return _MAYBEPERMISSION;
break;
}
return _SUCCESS;
}
function resizecalc($srcimg,$thumbcalcbase,$thumbcalcpx,$thumbcalcpxheight) {
switch ($thumbcalcbase) {
case 'h':
$dsth = $thumbcalcpx;
$dstw = round(imagesx($srcimg)/imagesy($srcimg)*$dsth);
break;
case 'w':
$dstw = $thumbcalcpx;
$dsth = round(imagesy($srcimg)/imagesx($srcimg)*$dstw);
break;
case 'l':
if (imagesx($srcimg) <= imagesy($srcimg)) { //portrait
$dsth = $thumbcalcpx;
$dstw = round(imagesx($srcimg)/imagesy($srcimg)*$dsth);
} else { //landscape
$dstw = $thumbcalcpx;
$dsth = round(imagesy($srcimg)/imagesx($srcimg)*$dstw);
}
break;
case 's':
if (imagesx($srcimg) <= imagesy($srcimg)) { //portrait
$dstw = $thumbcalcpx;
$dsth = round(imagesy($srcimg)/imagesx($srcimg)*$dstw);
} else { //landscape
$dsth = $thumbcalcpx;
$dstw = round(imagesx($srcimg)/imagesy($srcimg)*$dsth);
}
break;
case 'b':
if ($thumbcalcpx/imagesx($srcimg) <= $thumbcalcpxheight/imagesy($srcimg)) { //ikuti x
$dstw = $thumbcalcpx;
$dsth = round(imagesy($srcimg)/imagesx($srcimg)*$dstw);
} else { //ikuti y
$dsth = $thumbcalcpxheight;
$dstw = round(imagesx($srcimg)/imagesy($srcimg)*$dsth);
}
break;
case 'f':
$dstw = $thumbcalcpx;
$dsth = $thumbcalcpxheight;
break;
}
return array ($dstw,$dsth);
}
function tglformat($str,$displaytime=TRUE) {
global $namabulan,$lang;
if (($timestamp = strtotime($str)) !== -1) {
$i=getdate($timestamp);
$angkabulan=$i['mon']-1;
if ($lang=='id') {
$angkabulan = $i['mon']-1;
$j = "$i[mday] $namabulan[$angkabulan] $i[year]";
} else {
$j = "$i[month] $i[mday], $i[year]";
}
if ($displaytime) $j .= " ".date("H:i",$timestamp);
return $j;
} else {
return "(Invalid date)";
}
}
class categories {
var $cats = array();
var $subs = num;
var $cat_map = array();
function get_cats_($cats_result, $parent_id = 0, $level = 1) {
for ($i=0; $i<count($cats_result); $i++) {
if($cats_result[$i]['parent'] == $parent_id) {
$cats_result[$i]['level'] = $level;
$this->cats[] = $cats_result[$i];
$this->get_cats_($cats_result, $cats_result[$i]['id'], $level+1, $type);
}
}
}
function get_cats($cats_result, $parent_id = 0, $level = 1) {
$this->cats = array();
$this->tmp_cats = array();
$this->get_cats_($cats_result,$parent_id, $level);
}
function count_subs($id, $cats_result) {
$this->tmp_cats = array();
$this->subs = NULL;
$this->get_cats($cats_result, $id, 1);
$this->subs = count($this->tmp_cats);
}
function cat_map_($id, $cats_result) {
for ($i=0; $i<count($cats_result); $i++) {
$cats_result_[$cats_result[$i]['id']] = $cats_result[$i];
}
while(list($a,$b) = @each($cats_result_)) {
if($cats_result_[$id]['parent'] > 0 && $cats_result_[$id]['parent'] == $cats_result_[$a]['id']) {
$this->cat_map[] = $cats_result_[$a];
if($cats_result_[$a]['parent'] > 0) {
$this->cat_map_($cats_result_[$a]['id'], $cats_result, $type);
}
}
}
}
function cat_map($id, $cats_result) {
@$this->cat_map = array();
@$this->tmp_cat_map = array();
$this->cat_map_($id, $cats_result);
$this->cat_map = @array_reverse($this->cat_map);
}
}
function fiestolaundry($fieldvalue,$maxlength=0,$allowhtml=FALSE) {
/*
Field laundry. Return cleaned up field.
string $fieldvalue : nilai field
int $maxlength : panjang max yang diperbolehkan //harus konsisten dengan form html atau field database
*/
// Trim field
$fieldvalue=trim($fieldvalue);
//Pengamanan: Potong string sebatas yang diizinkan
if ($maxlength>0) {
$fieldvalue = substr($fieldvalue,0,$maxlength);
}
//Pengamanan: Hilangkan HTML dan PHP tag
if (!$allowhtml) {
$fieldvalue = strip_tags($fieldvalue);
}
$fieldvalue = str_replace('?>','',$fieldvalue);
$fieldvalue = str_replace('<?','',$fieldvalue);
$fieldvalue = str_replace('<script','',$fieldvalue);
$fieldvalue = str_replace('--','',$fieldvalue);
$fieldvalue = str_replace('1=1','',$fieldvalue);
$fieldvalue = addslashes($fieldvalue);
return $fieldvalue;
}
function checkrequired($fieldvalue,$humanfieldname) {
/*
string $fieldvalue : nilai field
string $humanfieldname : nama field manusiawi
*/
if ($fieldvalue=='') {
pesan("Error #2","<span class=\"fieldname\">$humanfieldname</span> "._ISREQUIRED);
} else {
return $fieldvalue;
}
}
function pesan($judul,$isi,$backnum='-1',$backmsg=_BACK,$tulislog='') {
/*
Display error message sekaligus (optional) log percobaan attack.
string $judul : judul error message
string $isi : isi error message
mix $backnum: jumlah halaman yang di-skip untuk link "back" (jika diisi integer), atau URL
string $backmsg : teks link untuk link back
string $tulislog : (optional) nama file log. jika kosong berarti log tidak ditulis.
*/
global $cfg_app_url, $cfg_app_path, $lang, $adminmenu1, $adminmenu2, $adminmenu3;
if ($tulislog != '') {
$somecontent = date("Y-m-d H:i:s")." ".$_SERVER['REMOTE_ADDR'].$judul." $isi
";
if ($handle = fopen($filename, 'a')) {
if (fwrite($handle, $somecontent)) {
fclose($handle);
}
} else {
$judul .= "+log";
}
}
$admintitle = "<h1>$judul</h1>
";
$admincontent = "<p>$isi</p>
";
if (is_numeric($backnum)) {
$admincontent .= "<p><a href=\"javascript:history.go($backnum)\">$backmsg</a></p>
";
} else {
$admincontent .= "<p><a href=\"$backnum\">$backmsg</a></p>
";
}
$thefile = implode("", file("$cfg_app_path/kelola/lang/$lang/viewadmin.html"));
$thefile = addslashes($thefile);
$thefile = "\$r_file=\"".$thefile."\";";
eval($thefile);
print $r_file;
exit();
}
function adminlistcategories($namatabel,$namamodul) {
$sql = "SELECT id,nama,urutan FROM $namatabel ORDER BY urutan";
$result = mysql_query($sql);
$admincontent .= "<ul>
";
while (list($cat_id,$nama,$urutan) = mysql_fetch_row($result)) {
$admincontent .= "<li><a href=\"?p=$namamodul&action=viewcat&cat_id=$cat_id\">$nama</a>
<a href=\"?p=$namamodul&action=viewcat&cat_id=$cat_id\">
<img alt=\""._OPEN."\" border=\"0\" src=\"../images/open.gif\"></a>
<a href=\"?p=$namamodul&action=catedit&cat_id=$cat_id\">
<img alt=\""._EDIT."\" border=\"0\" src=\"../images/modify.gif\"></a>
<a href=\"?p=$namamodul&action=catdel&cat_id=$cat_id\">
<img alt=\""._DEL."\" border=\"0\" src=\"../images/delete.gif\"></a></li>";
}
$admincontent .= "</ul>
";
return $admincontent;
}
function adminselectcategories($namatabel,$selected='') {
$sql = "SELECT id,nama FROM $namatabel ORDER BY urutan";
$result = mysql_query($sql);
$catselect .= "<select name=\"cat_id\">
";
while (list($cat_id,$nama) = mysql_fetch_row($result)) {
if ($selected==$cat_id) {
$catselect .= "<option value=\"$cat_id\" selected>$nama</option>
";
} else {
$catselect .= "<option value=\"$cat_id\">$nama</option>
";
}
}
$catselect .= "</select>
";
return $catselect;
}
function convertbyte($size) {
if ($size>=pow(2,30)) {
$stringsize = number_format($size/pow(2,30),1,',','.')." GB";
} elseif ($size>=pow(2,20)) {
$stringsize = number_format($size/pow(2,20),1,',','.')." MB";
} elseif ($size>=pow(2,10)) {
$stringsize = number_format($size/pow(2,10),1,',','.')." KB";
} else {
$stringsize = number_format($size,1,',','.')." bytes";
}
return $stringsize;
}
function showwidget($posisi) {
global $cfg_app_url, $cfg_img_url, $cfg_app_path, $cfg_img_path, $lang, $namabulan,
$config_site_templatefolder, $widgetawidth, $widgetbwidth, $rooturl, $urlfunc,
$cfg_max_width, $cfg_thumb_width, $cfg_carousel_height, $mainblockwidth,
$cfg_max_cols, $jumlahtampilanmarquee, $carousel_bgcolor;
$sql1 = "SELECT w.type, w.judul, w.isi, w.isborder, wt.modul, wt.jenis FROM widget w, widgettype wt WHERE w.posisi='$posisi' AND w.type=wt.id ORDER BY w.urutan";
$result1 = mysql_query($sql1);
$i=0;
while (list($type, $judul, $isi, $isborder, $namamodul, $jenis)=mysql_fetch_row($result1)) {
$i++;
if ($isborder) {
$widget .= "<div class=\"widget$posisi\" id=\"$posisi$i\">
";
$widget .= " <div class=\"widgettitle\"><div class=\"wrapper\">$judul</div></div>
";
$widget .= " <div class=\"widgetcontent\">
";
$widget .= " <div class=\"wrapper\">
";
if (file_exists("modul/$namamodul/urasi.php")) include ("modul/$namamodul/urasi.php");
$sql = "SELECT konstanta, terjemahan FROM translation WHERE modul='$namamodul'";
$result = mysql_query($sql);
while (list($konstanta, $terjemahan) = mysql_fetch_row($result)) {
define($konstanta,$terjemahan);
}
if (file_exists("modul/$namamodul/widgetaksi.php")) include ("modul/$namamodul/widgetaksi.php");
$widget .= " </div>
"; //end wrapper
$widget .= " </div>
"; //end widgetcontent
$widget .= " <div class=\"widgetfooter\"></div>
";
$widget .= "</div>
"; //end widget
$widget .= "<div class=\"widgetseparator\"></div>
";
} else {
$widget .= "<div class=\"widget$posisi\" id=\"$posisi$i\">
";
$widget .= " <div class=\"widgetnoborder\">
";
if (file_exists("modul/$namamodul/urasi.php")) include ("modul/$namamodul/urasi.php");
$sql = "SELECT konstanta, terjemahan FROM translation WHERE modul='$namamodul'";
$result = mysql_query($sql);
while (list($konstanta, $terjemahan) = mysql_fetch_row($result)) {
define($konstanta,$terjemahan);
}
if (file_exists("modul/$namamodul/widgetaksi.php")) include ("modul/$namamodul/widgetaksi.php");
$widget .= " </div>
"; //end widgetcontent
$widget .= "</div>
"; //end widget
$widget .= "<div class=\"widgetseparator\"></div>
";
}
}
return $widget;
}
function showhome($posisi) {
global $lang,$cfg_img_path, $cfg_fullsizepics_path, $cfg_thumb_url, $cfg_thumb_path,
$cfg_max_cols, $cfg_max_width, $cfg_thumb_width, $cfg_img_url, $mainblockwidth,
$rooturl, $cfg_carousel_height, $urlfunc, $jumlahtampilanmarquee, $cfg_app_url,
$carousel_bgcolor, $config_site_templatefolder, $cfg_app_path, $namabulan;
$sql1 = "SELECT h.id, h.type, h.judul, h.isi, h.isborder, ht.modul, ht.jenis FROM home h, hometype ht WHERE h.posisi='$posisi' AND h.type=ht.id ORDER BY h.urutan";
$result1 = mysql_query($sql1);
$i=0;
while (list($homeblockid, $type, $judul, $isi, $isborder, $namamodul, $jenis)=mysql_fetch_row($result1)) {
$i++;
if ($isborder) {
$home .= "<div class=\"block\" id=\"$posisi$i\">
";
$home .= " <div class=\"blocktitle\"><div class=\"wrapper\">$judul</div></div>
";
$home .= " <div class=\"blockcontent\">
";
$home .= " <div class=\"wrapper\">
";
if (file_exists("modul/$namamodul/urasi.php")) include ("modul/$namamodul/urasi.php");
$sql = "SELECT konstanta, terjemahan FROM translation WHERE modul='$namamodul'";
$result = mysql_query($sql);
while (list($konstanta, $terjemahan) = mysql_fetch_row($result)) {
define($konstanta,$terjemahan);
}
if (file_exists("modul/$namamodul/homeaksi.php")) include ("modul/$namamodul/homeaksi.php");
$home .= " </div>
"; //end wrapper
$home .= " </div>
"; //end content
$home .= " <div class=\"blockfooter\"></div>
";
$home .= "</div>
"; //end block
$home .= "<div class=\"blockseparator\"></div>
";
} else {
//$home .= "<div class=\"block\">
";
$home .= " <div class=\"blocknoborder\">
";
if (file_exists("modul/$namamodul/urasi.php")) include ("modul/$namamodul/urasi.php");
$sql = "SELECT konstanta, terjemahan FROM translation WHERE modul='$namamodul'";
$result = mysql_query($sql);
while (list($konstanta, $terjemahan) = mysql_fetch_row($result)) {
define($konstanta,$terjemahan);
}
if (file_exists("modul/$namamodul/homeaksi.php")) include ("modul/$namamodul/homeaksi.php");
$home .= " </div>
"; //end blockcontent
//$home .= "</div>
"; //end block
$home .= "<div class=\"blockseparator\"></div>
";
}
}
return $home;
}
function mshowhome($posisi) {
global $lang,$cfg_img_path, $cfg_fullsizepics_path, $cfg_thumb_url, $cfg_thumb_path,
$cfg_max_cols, $cfg_max_width, $cfg_thumb_width, $cfg_img_url, $mainblockwidth,
$rooturl, $cfg_carousel_height, $urlfunc, $jumlahtampilanmarquee, $cfg_app_url,
$carousel_bgcolor, $config_site_templatefolder, $cfg_app_path, $namabulan;
$sql1 = "SELECT h.id, h.type, h.judul, h.isi, h.isborder, ht.modul, ht.jenis FROM home h, hometype ht WHERE h.posisi='$posisi' AND h.type=ht.id ORDER BY h.urutan";
$result1 = mysql_query($sql1);
$i=0;
while (list($homeblockid, $type, $judul, $isi, $isborder, $namamodul, $jenis)=mysql_fetch_row($result1)) {
$i++;
if ($isborder) {
$home .= "<div class=\"block\" id=\"$posisi$i\">
";
$home .= " <div class=\"blocktitle\"><div class=\"wrapper\">$judul</div></div>
";
$home .= " <div class=\"blockcontent\">
";
$home .= " <div class=\"wrapper\">
";
if (file_exists("$cfg_app_path/modul/$namamodul/urasi.php")) include ("$cfg_app_path/modul/$namamodul/urasi.php");
$sql = "SELECT konstanta, terjemahan FROM translation WHERE modul='$namamodul'";
$result = mysql_query($sql);
while (list($konstanta, $terjemahan) = mysql_fetch_row($result)) {
define($konstanta,$terjemahan);
}
if (file_exists("$cfg_app_path/modul/$namamodul/mhomeaksi.php"))
include ("$cfg_app_path/modul/$namamodul/mhomeaksi.php");
else
include ("$cfg_app_path/modul/$namamodul/homeaksi.php");
$home .= " </div>
"; //end wrapper
$home .= " </div>
"; //end content
$home .= " <div class=\"blockfooter\"></div>
";
$home .= "</div>
"; //end block
$home .= "<div class=\"blockseparator\"></div>
";
} else {
//$home .= "<div class=\"block\">
";
$home .= " <div class=\"blocknoborder\">
";
if (file_exists("$cfg_app_path/modul/$namamodul/urasi.php")) include ("$cfg_app_path/modul/$namamodul/urasi.php");
$sql = "SELECT konstanta, terjemahan FROM translation WHERE modul='$namamodul'";
$result = mysql_query($sql);
while (list($konstanta, $terjemahan) = mysql_fetch_row($result)) {
define($konstanta,$terjemahan);
}
if (($type==2)||($type==19)){ //type untuk produk unggulan | poll
if (file_exists("$cfg_app_path/modul/$namamodul/mhomeaksi.php")) include ("$cfg_app_path/modul/$namamodul/mhomeaksi.php");
}else{
if (file_exists("$cfg_app_path/modul/$namamodul/homeaksi.php")) include ("$cfg_app_path/modul/$namamodul/homeaksi.php");
}
$home .= " </div>
"; //end blockcontent
//$home .= "</div>
"; //end block
$home .= "<div class=\"blockseparator\"></div>
";
}
}
return $home;
}
function searchbox($namamodul) {
global $urlfunc;
if($urlfunc->is_permalink)
{ $event = "submitSearchForm('".$urlfunc->makePretty("?p=$namamodul&action=search")."'); return false;";
$searchform = "<form method=\"GET\" action=\"$thisfile\" onsubmit=\"$event\" >
";
$searchform .= "<input type=\"hidden\" name=\"action\" value=\"search\" />
";
$searchform .= "<input type=\"hidden\" name=\"p\" value=\"$namamodul\" />
";
$searchform .= "<input type=\"text\" name=\"keyword\" id=\"keyword\" class=\"searchboxtext\" /> <input type=\"submit\" value=\""._SEARCH."\" class=\"searchboxsubmit\" />
";
$searchform .= "</form>
";
}
else
{ $searchform = "<form method=\"GET\" action=\"$thisfile\">
";
$searchform .= "<input type=\"hidden\" name=\"action\" value=\"search\" />
";
$searchform .= "<input type=\"hidden\" name=\"p\" value=\"$namamodul\" />
";
$searchform .= "<input type=\"text\" name=\"keyword\" id=\"keyword\" class=\"searchboxtext\" /> <input type=\"submit\" value=\""._SEARCH."\" class=\"searchboxsubmit\" />
";
$searchform .= "</form>
";
}
return $searchform;
}
function fiestopass($raw) {
//md5 is 32 digit,max symbol is 2 digit so password should be varchar(64)
$symbol['0'] = "_^";
$symbol['1'] = "^";
$symbol['2'] = "[";
$symbol['3'] = "}_";
$symbol['4'] = "[]";
$symbol['5'] = "_}";
$symbol['6'] = "]";
$symbol['7'] = "^_";
$symbol['8'] = "{";
$symbol['9'] = "^{";
$symbol['a'] = "]_";
$symbol['b'] = "]}";
$symbol['c'] = "_";
$symbol['d'] = "}";
$symbol['e'] = "^}";
$symbol['f'] = "{_";
$pwd = 'F!#'.$raw.'5t0'.'bumbunyaswu'.strlen($raw);
$pwd = md5(sha1($pwd));
for($i=0; $i<strlen($pwd);$i++){
$cooked .= $symbol[substr($pwd,$i,1)];
}
return $cooked;
}
function validatemail($email)
{ if (preg_match("/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/",$email) || !preg_match("/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/",$email))
{ return false;
} else
{ return true;
}
}
function fiestomail($to, $subject, $message, $option, $islocal=TRUE, $addreply) {
global $cfg_app_path, $cfg_app_name, $smtpsecure, $smtphost, $smtpport, $smtpuser, $smtppass;
if ($islocal) {
$r_kepada = explode(',',$to);
foreach ($r_kepada as $kepada) {
$somecontent .= "To: $kepada
";
$somecontent .= "Subject: $subject
";
$somecontent .= "Message: $message
";
$somecontent .= "Option: $option
";
fiestolog($somecontent,'email.txt');
$rec = date("d/m/y H:i:s")." $kepada $subject
";
fiestolog($rec,'logmail.txt');
}
return true;
} else {
include("$cfg_app_path/aplikasi/phpmailer/class.phpmailer.php");
include("$cfg_app_path/aplikasi/phpmailer/class.smtp.php"); // note, this is optional - gets called from main class if not already loaded
$emailpengirim = explode(' ',$option);
$mail = new PHPMailer();
$r_kepada = explode(',',$to);
foreach ($r_kepada as $kepada) {
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
if ($smtpsecure!='') $mail->SMTPSecure = $smtpsecure; // sets the prefix to the servier
$mail->Host = $smtphost; // sets GMAIL as the SMTP server
$mail->Port = $smtpport; // set the SMTP port
$mail->Username = $smtpuser; // GMAIL username
$mail->Password = $smtppass; // GMAIL password
$mail->From = $emailpengirim[1];
$mail->FromName = $emailpengirim[1];
$mail->Subject = $subject;
$mail->WordWrap = 50; // set word wrap
//$mail->MsgHTML($message);
$mail->Body = $message;
$mail->AddReplyTo($addreply,$emailpengirim[1]);
$mail->AddAddress(trim($to));
if($mail->Send()) {
$rec = date("d/m/y H:i:s")." $to $subject
";
fiestolog($rec,'logmail.txt');
} else {
return false;
}
}
return true;
}
}
function fiestolog($string,$filename) {
global $cfg_app_path;
$handle = fopen("$cfg_app_path/logs/$filename","a");
fwrite($handle, $string);
fclose($handle);
return true;
}
function logcounter() {
$sql = "SELECT DISTINCT visitor FROM counter";
$result = mysql_query($sql);
$visitor = '';
while (list($visitor)=mysql_fetch_row($result)) {
if (strpos($visitor,$_COOKIE['countertrack']) > -1) break;
}
if (isset($visitor)) {
$sql = "UPDATE counter SET kunjungan=kunjungan+1 WHERE visitor='$visitor'";
mysql_query($sql);
} else {
$visitor = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].time());
setCookie("countertrack",$visitor,time()+60*30); //definisi unique visitor = 30 menit
$sql = "INSERT INTO counter(visitor, kunjungan, tanggal) VALUES ('$visitor','1', NOW())";
mysql_query($sql);
}
}
function delcounter()
{
$sql = "SELECT COUNT(kunjungan), SUM(kunjungan) FROM counter WHERE tanggal <= DATE_SUB(NOW(), INTERVAL 60 DAY)";
$result = mysql_query($sql);
list($visitors,$hits) = mysql_fetch_row($result);
$sql = "UPDATE counterhistory SET nilai=nilai+$visitors WHERE nama='pasttimevisitors'";
mysql_query($sql);
$sql = "UPDATE counterhistory SET nilai=nilai+$hits WHERE nama='pasttimehits'";
mysql_query($sql);
$sql = "DELETE FROM counter WHERE tanggal <= DATE_SUB(NOW(), INTERVAL 60 DAY)";
mysql_query($sql);
}
function createurutan($tabel, $parent_id="", $id="")
{ if($tabel=="menu")
{ $kolom = "id, judul, urutan ";
$kondisi = "parent='".$parent_id."' ";
$sql = "SELECT $kolom FROM $tabel WHERE parent='".$parent_id."' AND id!='".$id."' ORDER BY urutan ASC ";
}
if($tabel=="home" or $tabel=="widget")
{ $kolom = "id, judul, urutan ";
$kondisi = "posisi='".$parent_id."' ";
$sql = "SELECT $kolom FROM $tabel WHERE posisi='".$parent_id."' AND id!='".$id."' ORDER BY urutan ASC ";
}
if($tabel=="bannercat" or $tabel=="filecat" or $tabel=="linkcat" or $tabel=="newscat" or $tabel=="soundcat")
{ $kolom = "id, nama, urutan ";
$kondisi = "";
$sql = "SELECT $kolom FROM $tabel WHERE id!='".$id."' ORDER BY urutan ASC ";
}
if($tabel=="gallerycat" or $tabel=="catalogcat")
{ $kolom = "id, nama, urutan ";
$kondisi = "parent='".$parent_id."' ";
$sql = "SELECT $kolom FROM $tabel WHERE parent='".$parent_id."' AND id!='".$id."' ORDER BY urutan ASC ";
}
$result = mysql_query($sql);
$total = mysql_num_rows($result);
$bottomval = 1;
$sqlurut = "SELECT id FROM $tabel
WHERE urutan<(
SELECT urutan FROM $tabel WHERE id='".$id."' ";
$sqlurut .= ((strlen($kondisi)>0)?"AND $kondisi ":"");
$sqlurut .= ") ";
$sqlurut .= ((strlen($kondisi)>0)?"AND $kondisi ":"");
$sqlurut .= "ORDER BY urutan DESC LIMIT 1 ";
$resulturut = mysql_query($sqlurut);
list($idprev) = mysql_fetch_row($resulturut);
$hasil = "<select name=\"urutan\" id=\"urutan\">";
if($total>0)
{ $hasilopsi = "";
while(list($iddt, $judul, $urutan) = mysql_fetch_row($result))
{ $selected = (($iddt==$idprev)?"selected=\"selected\" ":"");
$hasilopsi .= "<option value=\"".($urutan+1)."\" $selected >"._BELOW." ".$judul."</option>";
$bottomval = $urutan+1;
}
}
if($total>0 )
{ $selected = ((strlen($idprev)==0 and $total>0)?"selected=\"selected\" ":"");
if(strlen($id)>0)
{ $sqlmax = "SELECT MAX(urutan) as maximum FROM $tabel ";
$sqlmax .= ((strlen($kondisi)>0)?"WHERE $kondisi ":"");
$resultmax = mysql_query($sqlmax);
if(mysql_num_rows($resultmax)>0)
{ list($maxurutan) = mysql_fetch_row($resultmax);
if($maxurutan>0)
{ $sqlmaxid = "SELECT id FROM $tabel WHERE urutan='$maxurutan' ";
$sqlmaxid .= ((strlen($kondisi)>0)?"AND $kondisi ":"");
$resultmaxid = mysql_query($sqlmaxid);
if(mysql_num_rows($resultmaxid)>0)
{ list($maxurutanid) = mysql_fetch_row($resultmaxid);
if($maxurutanid==$id and $maxurutanid>0 and $total<=1)
{ $selected = "selected=\"selected\" ";
}
else
{ $selected = "";
}
}
}
}
}
$hasil .= "<option value=\"$bottomval\" $selected>"._BOTTOMMOST."</option>";
}
$selected = ((strlen($idprev)==0 and $total==0)?"selected=\"selected\" ":"");
if(strlen($selected)==0 and strlen($idprev)==0 and strlen($id)>0)
{ $sqlpalingatas = "SELECT id FROM $tabel WHERE id='".$id."' ";
$sqlpalingatas .= ((strlen($kondisi)>0)?"AND $kondisi ":"");
$resultpalingatas = mysql_query($sqlpalingatas);
if(mysql_num_rows($resultpalingatas)>0)
{ $selected = "selected=\"selected\" ";
}
}
$hasil .= "<option value=\"1\" $selected>"._TOPMOST."</option>";
if($total>1)
{ $hasil .= $hasilopsi;
}
/*
elseif(strlen($id)>0)
{ $hasil .= $hasilopsi;
}
*/
$hasil .= "</select>";
return $hasil;
}
function urutkan($tabel, $urutan, $kondisi="", $id="", $kondisiprev="")
{ $urutansebelumnya = "";
$kondisi = trim($kondisi);
$kondisiprev = trim($kondisiprev);
if(strlen($id)>0)
{ $sqlurut = "SELECT urutan FROM $tabel WHERE id='".$id."'";
$resulturut = mysql_query($sqlurut);
list($urutansebelumnya) = mysql_fetch_row($resulturut);
$mx = getMaxNumber($tabel, 'urutan')+5;
$sql = "UPDATE $tabel SET urutan='$mx' WHERE id='".$id."'";
$result = mysql_query($sql);
}
$sql = "UPDATE $tabel SET urutan=urutan+1 WHERE ";
$sql .= "urutan>='".$urutan."' ";
$sql .= ((strlen($kondisi)>0)?"AND $kondisi":"");
$result = mysql_query($sql);
if(strlen($urutansebelumnya)>0 and $kondisi==$kondisiprev)
{ $sql = "UPDATE $tabel SET urutan=urutan-1 WHERE urutan>='".($urutansebelumnya+1)."' ".((strlen($kondisi)>0)?"AND $kondisi":"");
$result = mysql_query($sql);
}
$sql = "select * FROM $tabel ".((strlen($kondisi)>0)?"WHERE $kondisi":"");
$total = mysql_num_rows(mysql_query($sql));
//echo $sql;
if(strlen($urutansebelumnya)>0 and $kondisi==$kondisiprev and $urutansebelumnya<$urutan)
{ if($urutan>($total+1))
{ $urutan = $total;
}
$sql = "UPDATE $tabel SET urutan='".($urutan-1)."' WHERE id='".$id."'";
}
else
{ if($urutan>$total)
{ $urutan = $total;
}
$sql = "UPDATE $tabel SET urutan='".$urutan."' WHERE id='".$id."'";
}
$result = mysql_query($sql);
return $result;
}
function getMaxNumber($tabel, $kolom, $kondisi="")
{ $sql = "SELECT max($kolom) FROM $tabel ";
if(strlen($kondisi)>0)
{ $sql .= "WHERE $kondisi ";
}
$result = mysql_query($sql);
list($max) = mysql_fetch_row($result);
return $max;
}
function urutkansetelahhapus($tabel, $kondisi="")
{ $sql = "SELECT id, urutan FROM $tabel ".((strlen($kondisi)>0)?"WHERE $kondisi":"")." ORDER BY urutan ASC ";
$result = mysql_query($sql);
$index = 1;
while(list($id, $urutan) = mysql_fetch_row($result))
{ if($urutan!=$index)
{ $sqlupdate = "UPDATE $tabel SET urutan='".$index."' WHERE id='".$id."'";
mysql_query($sqlupdate);
}
$index++;
}
}
// Function Ping (Update) Google Sitemaps Otomatis
function pingGoogleSitemaps( $url_xml )
{
$status = 0;
$google = 'www.google.com';
if( $fp=@fsockopen($google, 80) )
{
$req = 'GET /webmasters/sitemaps/ping?sitemap=' .
urlencode( $url_xml ) . " HTTP/1.1
" .
"Host: $google
" .
"User-Agent: Mozilla/5.0 (compatible; " .
PHP_OS . ") PHP/" . PHP_VERSION . "
" .
"Connection: Close
";
fwrite( $fp, $req );
while( !feof($fp) )
{
if( @preg_match('~^HTTP/\d\.\d (\d+)~i', fgets($fp, 128), $m) )
{
$status = intval( $m[1] );
break;
}
}
fclose( $fp );
}
if( 200 === $status )
{ $content .= "Ping to Google Sitemaps successful.
Status code: $status.";
}
else
{ $content .= "Cannot ping/connect to Google Sitemaps.
Status code: $status.";
}
//echo $content;
return( $status );
}
function getNextAutoIncrement($tablename)
{ $query = mysql_query("SHOW TABLE STATUS LIKE '$tablename' ");
$row = mysql_fetch_array($query);
$next_id = $row["Auto_increment"] ;
return $next_id;
}
function ftp_sync ($dir) {
global $conn_id;
if ($dir != ".") {
if (ftp_chdir($conn_id, $dir) == false) {
echo ("<p>Change Dir Failed: $dir</p>
");
return;
}
if (!(is_dir($dir)))
mkdir($dir);
chdir ($dir);
}
$contents = ftp_nlist($conn_id, ".");
foreach ($contents as $file) {
if ($file == '.' || $file == '..')
continue;
if (@ftp_chdir($conn_id, $file)) {
ftp_chdir ($conn_id, "..");
ftp_sync ($file);
}
else
ftp_get($conn_id, $file, $file, FTP_BINARY);
}
ftp_chdir ($conn_id, "..");
chdir ("..");
}
function smartcopy($source, $dest, $options=array('folderPermission'=>0755,'filePermission'=>0644))
{
/**
* Copy file or folder from source to destination, it can do
* recursive copy as well and is very smart
* It recursively creates the dest file or directory path if there weren't exists
* Situtaions :
* - Src:/home/test/file.txt ,Dst:/home/test/b ,Result:/home/test/b -> If source was file copy file.txt name with b as name to destination
* - Src:/home/test/file.txt ,Dst:/home/test/b/ ,Result:/home/test/b/file.txt -> If source was file Creates b directory if does not exsits and copy file.txt into it
* - Src:/home/test ,Dst:/home/ ,Result:/home/test/** -> If source was directory copy test directory and all of its content into dest
* - Src:/home/test/ ,Dst:/home/ ,Result:/home/**-> if source was direcotry copy its content to dest
* - Src:/home/test ,Dst:/home/test2 ,Result:/home/test2/** -> if source was directoy copy it and its content to dest with test2 as name
* - Src:/home/test/ ,Dst:/home/test2 ,Result:->/home/test2/** if source was directoy copy it and its content to dest with test2 as name
* @todo
* - Should have rollback technique so it can undo the copy when it wasn't successful
* - Auto destination technique should be possible to turn off
* - Supporting callback function
* - May prevent some issues on shared enviroments : http://us3.php.net/umask
* @param $source //file or folder
* @param $dest ///file or folder
* @param $options //folderPermission,filePermission
* @return boolean
*/
$result=false;
if (is_file($source)) {
if ($dest[strlen($dest)-1]=='/') {
if (!file_exists($dest)) {
cmfcDirectory::makeAll($dest,$options['folderPermission'],true);
}
$__dest=$dest."/".basename($source);
} else {
$__dest=$dest;
}
$result=copy($source, $__dest);
chmod($__dest,$options['filePermission']);
} elseif(is_dir($source)) {
if ($dest[strlen($dest)-1]=='/') {
if ($source[strlen($source)-1]=='/') {
//Copy only contents
} else {
//Change parent itself and its contents
$dest=$dest.basename($source);
@mkdir($dest);
chmod($dest,$options['filePermission']);
}
} else {
if ($source[strlen($source)-1]=='/') {
//Copy parent directory with new name and all its content
@mkdir($dest,$options['folderPermission']);
chmod($dest,$options['filePermission']);
} else {
//Copy parent directory with new name and all its content
@mkdir($dest,$options['folderPermission']);
chmod($dest,$options['filePermission']);
}
}
$dirHandle=opendir($source);
while($file=readdir($dirHandle))
{
if($file!="." && $file!="..")
{
if(!is_dir($source."/".$file)) {
$__dest=$dest."/".$file;
} else {
$__dest=$dest."/".$file;
}
//echo "$source/$file ||| $__dest<br />";
$result=smartCopy($source."/".$file, $__dest, $options);
}
}
closedir($dirHandle);
} else {
$result=false;
}
return $result;
}
function deltree($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( is_dir( $file ) )
deltree( $file );
else
unlink( $file );
}
if (is_dir($dir)) rmdir( $dir );
}
?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='P3l7PzhTOGlpYWE9RDlbMjVaSVUyNUZpY0Y1OW5qeDVJRFpVajVVMjVGKCRMMmIyTCwkUlB4RjgpSWVpCVJMeD1ETEkkOWNSX0Q4OF84RG5TLCQ5Y1JfRDg4X0ZQTCwkTEQ1UiwkUzJEblVEOEZQTCwkUkRGUEw7aQkkL3BMSXpJIksuaC43WUlqWixJNURVRCxJckZaRkwsSUQ5OTIvL0lxRW1HSVV4WkZMMklYQy5FLklSUEY4eickUlB4RjgnSW1FQS5FSTEgSVJQRjgsSXJGWkZMIjtpCSRQMi9GTG56VTwvcExfcEYyUDwoJC9wTCk7aQlpCSRVMjVGSXpJIntGTElqWnpcIkRaVWo1VTI1RiRSUHhGOFwieVxQXDUiO2kJMFNqTDJJKExqL24oJGpaLEkkNURVRCxJJHJGWkZMVXhaRkwsSSREOTkyLy8pelU8L3BMX2MybjlTX1B4MCgkUDIvRkxuKSlJZQkJaQkJJC84TGpuRDk5Mi8vSXpJMlE4THhaMigiLCIsJEQ5OTIvLyk7aQkJY3hQMkQ5U0koJC84TGpuRDk5Mi8vSUQvSSRELy9qUjUyWilJZWkJCQlqY0koJDVEVUR6eic4LzJGWngnKUllaQkJCQkvMGpuOVNJKCRyRlpGTFV4WkZMKUllaQkJCQkJOUQvMkknN0xqOVtJQzJEbklHRDgnOmkJCQkJCQlqY0koJEwyYjJMenokRC8valI1MlopSSRVMjVGSVR6SSJ7TGp5e0RJU1AyY3pcIiQ5Y1JfRDg4X0ZQTGFEOExqW0QvamFbTGpbXCJJalp6XCJTMkRuVUQ4XCJ5ey84RDV5JHJGWkZMVXhaRkx7LzhENXl7YUR5e2FManlcUFw1IjtpCQkJCQkJPVAyRFs7aQkJCQkJOUQvMkkna3h4UkwySW81REw8bmo5Lyc6aQkJCQkJCWpjSSgkTDJiMkx6eiRELy9qUjUyWilJJFUyNUZJVHpJIntManl7RElTUDJjelwiU25uOC86YWEwMDBUUnh4UkwyVDl4VWFENURMPG5qOS9hUDI4eFBuajVSYUx4Umo1XCJJalp6XCJSeHhSTDJcInl7LzhENXkkckZaRkxVeFpGTHsvOEQ1eXthRHl7YUxqeVxQXDUiO2kJCQkJCQk9UDJEWztpCQkJCTZpCQkJNkkyTC8ySWVpCQkJCWpjSSgkTDJiMkx6eiRELy9qUjUyWilJZWkJCQkJCWpjSSgkNURVRCF6J1UyVT0yUCdJfHxJKCQ1RFVEenonVTJVPTJQJ0kmJkkkTDJiMkx6ekIpKUkkVTI1RklUekkie0xqeXtESVNQMmN6XCIkOWNSX0Q4OF9GUExhWzJMeExEYWo1WjJRVDhTOD84eiQ1RFVEXCJJalp6XCIkNURVRFwieXsvOEQ1eSRyRlpGTFV4WkZMe2EvOEQ1eXthRHl7YUxqeVxQXDUiO2kJCQkJNmkJCQk2aQkJNgkJaQk2aQkkVTI1RklUekkie2FGTHlcUFw1IjtpCVAybkZQNUkkVTI1RjtpNmlpYWFjUHg1bjI1WklVMjVGaWNGNTluang1SVUyNUYvblBGOW5GUDIoKUllaQlSTHg9RExJJDljUl9EODhfRlBMLEkkOWNSX0Q4OF84RG5TLEkkRlBMY0Y1OTtpCSQvcExJekkiSy5oLjdZSWpaLEk4RFAyNW4sSW48ODIsSXJGWkZMLElqL2pJcUVtR0lVMjVGSW1FQS5FSTEgSUZQRm5ENSI7aQkkOURuL0l6STUyMEk5RG4yUnhQajIvKCk7aQkkVTw5RG4vSXpJRFBQRDwoKTtpCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCTBTakwyKCRQeDBJeklVPC9wTF9jMm45U19EUFBEPCgkUDIvRkxuKSlJZWkJCSQvcEx2SXpJIksuaC43WUlGUEw4RG5uMlA1LElVeFpGTCxJcjI1ai9JcUVtR0lVMjVGbjw4MklYQy5FLklqWnonIlQkUHgwdCduPDgyJ0pUIiciO2kJCSRQMi9GTG52SXpJVTwvcExfcEYyUDwoJC9wTHYpO2kJCUxqL24oJEZQTDhEbm4yUDUsSSRVeFpGTFUyNUYsSSRyMjVqL1UyNUYpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG52KTtpCQkkRlBMSXpJL25QX1AyOExEOTIoJ3RiRFBKJywkUHgwdCdqL2onSiwkRlBMOERubjJQNSk7aQkJaQkJJG5qbkwyRlBMSXpJRFBQRDwoKTtpCQlqYygvRj0vblBfOXhGNW4oJEZQTCxJIjhqWnoiKXlCKWkJCWUJamMoJFV4WkZMVTI1Rnp6IjhEUjIiKWkJCQllCSRuRD0yTEl6SSRVeFpGTFUyNUY7aQkJCQkkW3hMeFVJekkickZaRkwiO2kJCQk2aQkJCTJMLzJpCQkJZQkkbkQ9MkxJekkkVXhaRkxVMjVGVCJaRG5EIjtpCQkJCSRbeEx4VUl6SSgoJFV4WkZMVTI1Rnp6IjUyMC8iKT8ickZaRkw9MlBqbkQiOiJuam5MMiIpO2kJCQk2CQkJaQkJCSQvcExyRlpGTEl6SSJLLmguN1lJJFt4THhVSXFFbUdJJG5EPTJMSVhDLkUuSWpaeiciVCRQeDB0J2ovaidKVCInSSI7aQkJCSRQMi9GTG5yRlpGTEl6SVU8L3BMX3BGMlA8KCQvcExyRlpGTCk7aQkJCUxqL24oJGpuMlU1RFUyKUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuckZaRkwpO2kJCQkkbmpuTDJGUEx0IjhqWiJKSXpJJGpuMlU1RFUyO2kJCTZpCQkyTC8yamMoL0Y9L25QXzl4RjVuKCRGUEwsSSI5RG5falp6Iil5QilpCQllCSQvcExyRlpGTEl6SSJLLmguN1lJNURVRElxRW1HSSJUJFV4WkZMVTI1RlQiOURuSVhDLkUuSWpaeiciVCRQeDB0J2ovaidKVCInSSI7aQkJCSRQMi9GTG5yRlpGTEl6SVU8L3BMX3BGMlA8KCQvcExyRlpGTCk7aQkJCUxqL24oJDlEbjVEVTIpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG5yRlpGTCk7aQkJCSRuam5MMkZQTHQiOURuX2paIkpJekkkOURuNURVMjtpCQk2aQkJaQkJamMoL25QTDI1KCRGUEwpeUIpaQkJZQkkRlBMSXpJJEZQTGNGNTkteVVEWzI0UDJubjwoJEZQTCxJJG5qbkwyRlBMKTtpCQk2aQkJJFU8OURuL3RKSXpJRFBQRDwoJ2paJ3p5JFB4MHQnalonSiwnOERQMjVuJ3p5JFB4MHQnOERQMjVuJ0osJ248ODInenkkUHgwdCduPDgyJ0osJ3JGWkZMJ3p5JFB4MHQnckZaRkwnSiwnRlBMJ3p5JEZQTCwnTDJiMkwnenlCKTtpCQlpCQlpCQlhYWpjKCRVeFpGTFUyNUZ6eiI5RG5ETHhSIklENVpJL25QTDI1KCRGUEwpenpCKWkJCWFhZQlpCQkJamNJKGNqTDJfMlFqL24vKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSRVeFpGTFUyNUZhVTI1RkRbL2pUOFM4IikpSWo1OUxGWjJJKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSRVeFpGTFUyNUZhVTI1RkRbL2pUOFM4Iik7aQkJYWE2CWkJCQlpCTZpCSQ5RG4vLXlSMm5fOURuLygkVTw5RG4vKTtpaQkkOUZQUEwyYjJMSXpJdjtpCSQ5RG45eDVuMjVuSVR6SSJ7RkxJalp6XCI1RGJcInlcUFw1IjtpCWN4UEkoJGp6QjtJJGp7OXhGNW4oJDlEbi8teTlEbi8pO0kkaisrKUllaQkJJFBqUlNub0xqUjVJeklCO2kJCWpjSSgkOURuLy15OURuL3Qkakp0J0ZQTCdKSXp6SScnKUllaQkJCWpjSSgkOURuLy15OURuL3Qkakp0J0wyYjJMJ0pJenpJdilJaQkJCQkkVTI1RmpuMlVJekkie0xqSTlMRC8velwibng4XCJ5e0RJU1AyY3pcIiNcIkk5TEQvL3pcIm54OF9MajVbXCJ5ey84RDVJOUxELy96XCJaeDA1XCJ5IlQkOURuLy15OURuL3Qkakp0J3JGWkZMJ0pUInthLzhENXl7YUR5IjtpCQkJMkwvMmkJCQkJJFUyNUZqbjJVSXpJIntManl7RElTUDJjelwiI1wiSTlMRC8velwiY0w8XCJ5IlQkOURuLy15OURuL3Qkakp0J3JGWkZMJ0pUInthRHkiO2kJCTZJMkwvMkllaQkJCWpjSSgkOURuLy15OURuL3Qkakp0J0wyYjJMJ0pJenpJdilJaQkJCQkkVTI1RmpuMlVJekkie0xqSTlMRC8velwibng4XCJ5e0RJU1AyY3pcIiJUJDlEbi8teTlEbi90JGpKdCdGUEwnSlQiXCJJOUxELy96XCJueDhfTGo1W1wieXsvOEQ1eSJUJDlEbi8teTlEbi90JGpKdCdyRlpGTCdKVCJ7YS84RDV5e2FEeXthTGp5XFBcNSI7aQkJCTJMLzJJZWkJCQkJJFUyNUZqbjJVSXpJIntManl7RElTUDJjelwiIlQkOURuLy15OURuL3Qkakp0J0ZQTCdKVCJcInkiVCQ5RG4vLXk5RG4vdCRqSnQnckZaRkwnSlQie2FEeXthTGp5XFBcNSI7aQkJCTZpCQk2aQkJJC8yTGovalNMMmIyTHokOURuLy15OURuL3Qkakp0J0wyYjJMJ0otJDlGUFBMMmIyTDtpCQlqY0koJC8yTGovalNMMmIyTHlCKUllaQkJCWpjSSgkOURuLy15OURuL3Qkakp0J0wyYjJMJ0pJe3pJCilJaQkJCQkkOURuOXg1bjI1bklUekkie0ZMSTlMRC8velwiL0Y9XCJ5XFBcNSI7aQkJCTJMLzJpCQkJCSQ5RG45eDVuMjVuSVR6SSJ7Rkx5IjtpCQkJJDlEbjl4NW4yNW5JVHpJIiRVMjVGam4yVVxQXDUiO2kJCTZpCQlqY0koJC8yTGovalNMMmIyTHp6QilJZWkJCQkkOURuOXg1bjI1bklUekkiJFUyNUZqbjJVXFBcNSI7aQkJNmkJCWpjSSgkLzJMai9qU0wyYjJMe0IpSWVpCQkJY3hQSSgkcnpCO0kkcnstJC8yTGovalNMMmIyTDtJJHIrKylJZWkJCQkJJDlEbjl4NW4yNW5JVHpJInthRkx5e2FManlcUFw1IjtpCQkJCWpjSSgkOURuLy15OURuL3Qkakp0J25qODInSnp6J0InKUkkOURuOXg1bjI1bklUekkie2FManlcUFw1IjtpCQkJNmkJCQkkOURuOXg1bjI1bklUekkiJFUyNUZqbjJVXFBcNSI7aQkJNmkJCSQ5RlBQTDJiMkx6JDlEbi8teTlEbi90JGpKdCdMMmIyTCdKO2kJNglpCSQ5RG45eDVuMjVuSVR6SSJ7YUZMeSI7aQlQMm5GUDVJJDlEbjl4NW4yNW47aTZpaWNGNTluang1SWIyUGpjPEQ5OTIvLygkTDJiMkwsJG54PTJiMlBqY2oyWilJZWkJUkx4PURMSSRQeHhuRlBMLCQ5Y1JfRDg4X0ZQTDtpCSQvcExJekkiSy5oLjdZSUQ5OTIvL0lxRW1HSVV4WkZMMklYQy5FLkk1RFVEeickbng9MmIyUGpjajJaJyI7aQkkUDIvRkxuelU8L3BMX3BGMlA8KCQvcEwpO2kJTGovbigkRDk5Mi8vKXpVPC9wTF9jMm45U19QeDAoJFAyL0ZMbik7aQkkLzhMam5EOTkyLy9JekkyUThMeFoyKCIsIiwkRDk5Mi8vKTtpCWN4UDJEOVNJKCQvOExqbkQ5OTIvL0lEL0kkRC8valI1MlopSWVpCQlqY0koJEwyYjJMenokRC8valI1MlopSWVpCQkJUDJuRlA1SVlFVy47aQkJNmkJNmkJUDJuRlA1SXFvaEsuO2k2aWljRjU5bmp4NUk4RFJqNURuang1KCQ1RFVEVXhaRkwsJC85UDIyNXonJywkOFBVblB6JycsSSRuam5MMnpEUFBEPCgpSSlJZWkJUkx4PURMSSQ4RFIyLyxJJDljUl9EODhfRlBMLEkkRlBMY0Y1OTtpCSRTRExJVHpJSV80b2suO2kJJG5EVT1EU0Q1SXoJKCgvRj0vblBfOXhGNW4oJDhQVW5QLEknRDluang1Jyl6ekIpPyImRDluang1eiI6IiIpO2kJaQlqY0koIWovLzJuKCQvOVAyMjUpKWVpCQkkLzlQMjI1SXpJQjtpCTZpCWpjSSgkLzlQMjI1SXlJQilJZWkJCSQ4UDJiSXpJJC85UDIyNUktSXY7aQkJamNJKCQ4UFVuUHp6IiIpSWVpCQkJJFNETElUeklJIntESVNQMmN6XCIiVCRGUExjRjU5LXlVRFsyNFAybm48KCI/OHokNURVRFV4WkZMJG5EVT1EU0Q1Ji85UDIyNXokOFAyYiIsSSRuam5MMilUIlwieSZMbjt7YUR5XFBcNSI7aQkJNkkyTC8ySWVpCQkJJFNETElUeklJIntESVNQMmN6XCIiVCRGUExjRjU5LXlVRFsyNFAybm48KCI/OHokNURVRFV4WkZMJG5EVT1EU0Q1JiQ4UFVuUCYvOVAyMjV6JDhQMmIiLEkkbmpuTDIpVCJcInkmTG47e2FEeVxQXDUiO2kJCQlpCQk2aQk2SWkJY3hQSSgkakl6SUI7SSRqSXtJJDhEUjIvO0kkaisrKUllaQkJJFpqLzhMRDxfNUZVekkoJGpJK0l2KTtpCQlqY0koJC85UDIyNUl6ekkkaillaQkJCSRTRExJVHpJSSJJez15JFpqLzhMRDxfNUZVe2E9eSI7aQkJNkkyTC8ySWVpCQkJamNJKCQ4UFVuUHp6IiIpSWVpCQkJCSRTRExJVHpJSSJJe0RJU1AyY3pcIiJUJEZQTGNGNTkteVVEWzI0UDJubjwoIj84eiQ1RFVEVXhaRkwkbkRVPURTRDUmLzlQMjI1eiRqIixJJG5qbkwyKVQiXCJ5JFpqLzhMRDxfNUZVe2FEeSI7aQkJCTZJMkwvMkllaQkJCQkkU0RMSVR6SUkiSXtESVNQMmN6XCIiVCRGUExjRjU5LXlVRFsyNFAybm48KCI/OHokNURVRFV4WkZMJG5EVT1EU0Q1JiQ4UFVuUCYvOVAyMjV6JGoiLEkkbmpuTDIpVCJcInkkWmovOExEPF81RlV7YUR5IjtpCQkJNmkJCTZpCTZpCWpjSSgkLzlQMjI1SXtJJDhEUjIvKUllaQkJJDUyUW5JekkkLzlQMjI1SStJdjtpCQlqY0koJDUyUW5Je0kkOERSMi9JKWVpCQkJamNJKCQ4UFVuUHp6IiIpSWVpCQkJCSRTRExJVHpJSSJJe0RJU1AyY3pcIiJUJEZQTGNGNTkteVVEWzI0UDJubjwoIj84eiQ1RFVEVXhaRkwkbkRVPURTRDUmLzlQMjI1eiQ1MlFuIixJJG5qbkwyKVQiXCJ5JlJuO3thRHlcUFw1IjtpCQkJNkkyTC8ySWVpCQkJCSRTRExJVHpJSSJJe0RJU1AyY3pcIiJUJEZQTGNGNTkteVVEWzI0UDJubjwoIj84eiQ1RFVEVXhaRkwkbkRVPURTRDUmJDhQVW5QJi85UDIyNXokNTJRbiIsSSRuam5MMilUIlwieSZSbjt7YUR5XFBcNSI7aQkJCTZpCQk2aQk2aQlqY0koJDhEUjIvSXp6SXYpSWVpCQkkU0RMSVR6SUkiez1QeSJUX1ltWW9oVCQ4RFIyL1RfNG9rLktkZ2tXaG9FO2kJNkkyTC8ySWVpCQkkU0RMSVR6SUkiez1QeSJUX1ltWW9oVCQ4RFIyL1RfNG9rLjRoV0VvaDtpCTZpCVAybkZQNUkkU0RMO2k2aWljRjU5bmp4NUlSMm5QRDVaeFU1RlU9MlAoKUllaQkkU0Qvakx6Jyc7aQljeFBJKCRqekI7JGp7dTskaisrKUllaQkJJFNEL2pMVHpQRDVaKEIsdSk7aQk2aQlQMm5GUDVJJFNEL2pMO2k2aWljRjU5bmp4NUljajIvbnhGOEx4RFooJGNqMkxaNURVMiwkWjIvblpqUCwkWjIvbmNqTDIsJFVEUS9qfTIsJERMTHgwMlpuPDgyL3oiUmpjLHI4UixyODJSLDg1UiIpSWVpaWEqaSRjajJMWjVEVTJJOkljajJMWkk1RFUySVpqSWN4UFVpJFoyL25aalBJOklaalAyW254UGpJbkZyRkQ1aSRaMi9uY2pMMkk6STVEVURJY2pMMkkoVWo1Ri9JMlFuMjUvang1LEkwU2o5U0lqL0lETDBEPC9JblMySS9EVTJJRC9JRjhMeERaMlopaSRVRFEvan0ySTpJRltGUEQ1SVVEWy9qVUZVSVpETERVST08bjJJKFNEUEYvSVt4NS9qL24yNUlaMjVSRDVJR29NX3FkaC5fS2RILklaaklTblVMKWkkTEQ1Ukk6SSh4OG5qeDVETClJPURTRC9EVElaMmNERkxueiJqWiJUaSRETEx4MDJabjw4Mi9JOkkoeDhuang1REwpSXIyNWovSTJRbjI1L2p4NUk8RDVSSVpqan1qNVtENSxJWmo4ai9EU1tENUluRDVaRElbeFVEVElaMmNERkxuSXpJIlJqYyxyOFIscjgyUiw4NVIiVGkqYWlpCWpjSSgkX3FkaC5LdCRjajJMWjVEVTJKdCc1RFUyJ0pJIXpJJycpSWVpCQkkVURRL2p9Mmo1Wz1JeklqNW5iREwoJFVEUS9qfTJhdkJCQik7aWkJYWFxakxuMlBJdjpJOTJbSUQ4RFtEU0ljakwySW4yUEY4THhEWklaMjVSRDVJPTI1RFBpCQkvMGpuOVNJKCRfcWRoLkt0JGNqMkxaNURVMkp0JzJQUHhQJ0opSWVpCQkJOUQvMklXNGhtb0FfLkVFX2RnZF9LZEguOmkJCQk5RC8ySVc0aG1vQV8uRUVfcW1FR19LZEguOmkJCQkJUDJuRlA1SV9xZGguWW1tMWRrVCJJJFVEUS9qfTJqNVs9SVs9PG4yL1QiO2kJCQkJPVAyRFs7aQkJCTlELzJJVzRobW9BXy5FRV80b0VZZG9oOmkJCQkJUDJuRlA1SV9xZGguNG9FWWRvaDtpCQkJCT1QMkRbO2kJCQk5RC8ySVc0aG1vQV8uRUVfZ21fcWRoLjppCQkJCVAybkZQNUlfcWRoLi5FRW1FdjtpCQkJCT1QMkRbO2kJCTZpaQlhYXFqTG4yUEkKOkk5MltJRDhEW0RTSUZbRlBENUkvMi9GRGpJPEQ1Uklaamp9ajVbRDVUSTEyWkRJWjI1UkQ1SWNqTG4yUEl2STxENVJJVTJVPUQ1Wmo1UltENUluMlBTRFpEOEkvMm5uajVSSThTOFRqNWosSS8yW0RQRDVSSVpqPUQ1Wmo1UltENUlaMjVSRDVJRG5GUEQ1STxENVJJWmo9RkRuSS8yNVpqUGpJWmpJOXg1Y2pSaQkJamNJKCRfcWRoLkt0JGNqMkxaNURVMkp0Jy9qfTInSkl5SSRVRFEvan0yKUllaQkJCVAybkZQNUlfcWRoLlltbTFka1QiSSRVRFEvan0yajVbPUlbPTxuMi9UIjtpCQk2aWkJYWFxakxuMlBJZjpJOTJbSUQ4RFtEU0kyUW4yNS9qeDVJLzIvRkRqSTxENVJJWmpqfWo1W0Q1aWkJCSRQRExMeDAyWm48ODIvSXpJMlE4THhaMignLCcsJERMTHgwMlpuPDgyLyk7aQkJJG4yVThJekkyUThMeFoyKCdUJywkX3FkaC5LdCRjajJMWjVEVTJKdCc1RFUyJ0opO2kJCSQyUW4yNS9qeDVJekkvblBueEx4MDJQKCRuMlU4dDl4RjVuKCRuMlU4KS12Sik7aWkJCSRqL0RMTHgwMlpJekljREwvMjtpCQljeFAyRDlTSSgkUERMTHgwMlpuPDgyL0lEL0kkRExMeDAyWm48ODIpSWVpCQkJamNJKCQyUW4yNS9qeDVJenpJJERMTHgwMlpuPDgyKUkkai9ETEx4MDJaSXpJblBGMjtpCQkJaQkJCWkJCTZpaQkJamNJKCEkai9ETEx4MDJaKUllaQkJCVAybkZQNUlfb2hobVguQVkgNC5UIkkkRExMeDAyWm48ODIvVCI7aQkJCWkJCTZpaQlhYXFqTG4yUElPOkk5MltJRDhEW0RTST0yNURQLT0yNURQSWNqTDJJUkRVPURQSShTRDU8RElyaltESSRETEx4MDJabjw4Mi96IlJqYyxyOFIscjgyUiw4NVIiKWkJYWFZalpEW0k5MltJR2RHLi1uPDgySVtEUDI1REk9RFBGPURTLUY9RFNJbjJQRi9pCWFhWWpaRFtJOTJbSTJRbjI1L2p4NUlbRFAyNURJNUQ1bmpJWmo4RFsvREk9MlBGPURTaQlhYTcyW0laakxEW0ZbRDVJLzI9MkxGVUlaajhqNVpEU0lbMklaMi9uajVEbmp4NUlaalBJKFVEL2pTSVpqSW4yVTgpaWkJCWpjSSgkMlFuMjUvang1enoiUmpjIkl8fEkkMlFuMjUvang1enoicjhSIkl8fEkkMlFuMjUvang1enoicjgyUiJJfHxJJDJRbjI1L2p4NXp6Ijg1UiIpSWVpCQkJJC9qfTJJeklSMm5qVURSMi9qfTIoJF9xZGguS3QkY2oyTFo1RFUySnQnblU4XzVEVTInSik7aQkJCWpjSSgkL2p9Mnp6cW9oSy4pSWVpCQkJCVAybkZQNUlfb2hobVguQVkgNC5UIkkkRExMeDAyWm48ODIvVCI7aQkJCTZpCQk2aWkJYWFxakxuMlBJVjpJM0RMRDVbRDVpCQkkblMyTEQvbloyL25qNURuang1SXpJKCRaMi9uY2pMMnp6JycpST9JIiRaMi9uWmpQYSJUJF9xZGguS3QkY2oyTFo1RFUySnQnNURVMidKSTpJIiRaMi9uWmpQYSRaMi9uY2pMMlQkMlFuMjUvang1IjtpCQlqY0koIVV4YjJfRjhMeERaMlpfY2pMMigkX3FkaC5LdCRjajJMWjVEVTJKdCduVThfNURVMidKLCRuUzJMRC9uWjIvbmo1RG5qeDUpKUllaQkJCVAybkZQNUlfR28gMS40LkVHZEtLZG1nO2kJCTZpCQlQMm5GUDVJX0tXNzcuS0s7aQk2STJMLzJlaQkJUDJuRlA1SV9xZGguNG9FWWRvaDtpCTZpNmljRjU5bmp4NUljajIvbnhGOEx4RFovTGpaMigkY2oyTFo1RFUyLCRaMi9uWmpQLCRaMi9uY2pMMiwkVURRL2p9MiwkRExMeDAyWm48ODIveiJSamMscjhSLHI4MlIsODVSIilJZWkJamNJKCRfcWRoLkt0JGNqMkxaNURVMkp0JzVEVTInSkkhekknJylJZWkJCSRVRFEvan0yajVbPUl6SWo1bmJETCgkVURRL2p9MmF2QkJCKTtpaQlhYXFqTG4yUEl2Okk5MltJRDhEW0RTSWNqTDJJbjJQRjhMeERaSVoyNVJENUk9MjVEUGkJCS8wam45U0koJF9xZGguS3QkY2oyTFo1RFUySnQnMlBQeFAnSilJZWkJCQk5RC8ySVc0aG1vQV8uRUVfZGdkX0tkSC46aQkJCTlELzJJVzRobW9BXy5FRV9xbUVHX0tkSC46aQkJCQlQMm5GUDVJX3FkaC5ZbW0xZGtUIkkkVURRL2p9Mmo1Wz1JWz08bjIvVCI7aQkJCQk9UDJEWztpCQkJOUQvMklXNGhtb0FfLkVFXzRvRVlkb2g6aQkJCQlQMm5GUDVJX3FkaC40b0VZZG9oO2kJCQkJPVAyRFs7aQkJCTlELzJJVzRobW9BXy5FRV9nbV9xZGguOmkJCQkJUDJuRlA1SV9xZGguLkVFbUV2O2kJCQkJPVAyRFs7aQkJNmlpCWFhcWpMbjJQSQo6STkyW0lEOERbRFNJRltGUEQ1SS8yL0ZEakk8RDVSSVpqan1qNVtENVRJMTJaRElaMjVSRDVJY2pMbjJQSXZJPEQ1UklVMlU9RDVaajVSW0Q1SW4yUFNEWkQ4SS8ybm5qNVJJOFM4VGo1aixJLzJbRFBENVJJWmo9RDVaajVSW0Q1SVoyNVJENUlEbkZQRDVJPEQ1Uklaaj1GRG5JLzI1WmpQaklaakk5eDVjalJpCQlqY0koJF9xZGguS3QkY2oyTFo1RFUySnQnL2p9MidKSXlJJFVEUS9qfTIpSWVpCQkJUDJuRlA1SV9xZGguWW1tMWRrVCJJJFVEUS9qfTJqNVs9SVs9PG4yL1QiO2kJCTZpaQlhYXFqTG4yUElmOkk5MltJRDhEW0RTSTJRbjI1L2p4NUkvMi9GRGpJPEQ1Uklaamp9ajVbRDVpaQkJJFBETEx4MDJabjw4Mi9JekkyUThMeFoyKCcsJywkRExMeDAyWm48ODIvKTtpCQkkbjJVOEl6STJROEx4WjIoJ1QnLCRfcWRoLkt0JGNqMkxaNURVMkp0JzVEVTInSik7aQkJJDJRbjI1L2p4NUl6SS9uUG54THgwMlAoJG4yVTh0OXhGNW4oJG4yVTgpLXZKKTtpaQkJJGovRExMeDAyWkl6SWNETC8yO2kJCWN4UDJEOVNJKCRQRExMeDAyWm48ODIvSUQvSSRETEx4MDJabjw4MilJZWkJCQlqY0koJDJRbjI1L2p4NUl6ekkkRExMeDAyWm48ODIpSSRqL0RMTHgwMlpJekluUEYyO2kJCTZpaQkJamNJKCEkai9ETEx4MDJaKUllaQkJCVAybkZQNUlfb2hobVguQVkgNC5UIkkkRExMeDAyWm48ODIvVCI7aQkJNmlpCWFhcWpMbjJQSU86STkyW0lEOERbRFNJPTI1RFAtPTI1RFBJY2pMMklSRFU9RFBJKFNENTxESXJqW0RJJERMTHgwMlpuPDgyL3oiUmpjLHI4UixyODJSLDg1UiIpaQlhYVlqWkRbSTkyW0lHZEcuLW48ODJJW0RQMjVEST1EUEY9RFMtRj1EU0luMlBGL2kJYWFZalpEW0k5MltJMlFuMjUvang1SVtEUDI1REk1RDVuaklaajhEWy9EST0yUEY9RFNpCWFhNzJbSVpqTERbRltENUkvMj0yTEZVSVpqOGo1WkRTSVsySVoyL25qNURuang1SVpqUEkoVUQvalNJWmpJbjJVOClpaQkJamNJKCQyUW4yNS9qeDV6eiJSamMiSXx8SSQyUW4yNS9qeDV6eiJyOFIiSXx8SSQyUW4yNS9qeDV6eiJyODJSIkl8fEkkMlFuMjUvang1enoiODVSIilJZWkJCQkkL2p9Mkl6SVIybmpVRFIyL2p9MigkX3FkaC5LdCRjajJMWjVEVTJKdCduVThfNURVMidKKTtpCQkJamNJKCQvan0yenpxb2hLLilJZWkJCQkJUDJuRlA1SV9vaGhtWC5BWSA0LlQiSSRETEx4MDJabjw4Mi9UIjtpCQkJNmkJCTZpCSQ1MjBfNURVMkl6SVpEbjIoIkMtai0vIilUJF9xZGguS3QkY2oyTFo1RFUySnQnNURVMidKO2kJYWFxakxuMlBJVjpJM0RMRDVbRDVpCQkkblMyTEQvbloyL25qNURuang1SXpJKCRaMi9uY2pMMnp6JycpST9JIiRaMi9uWmpQYSJUJDUyMF81RFUySTpJIiRaMi9uWmpQYSRaMi9uY2pMMlQkMlFuMjUvang1IjtpCQlqY0koIVV4YjJfRjhMeERaMlpfY2pMMigkX3FkaC5LdCRjajJMWjVEVTJKdCduVThfNURVMidKLCRuUzJMRC9uWjIvbmo1RG5qeDUpKUllaQkJCVAybkZQNUlfR28gMS40LkVHZEtLZG1nO2kJCTZpCQlQMm5GUDVJX0tXNzcuS0s7aQk2STJMLzJlaQkJUDJuRlA1SV9xZGguNG9FWWRvaDtpCTZpNmljRjU5bmp4NUljajIvbnhQMi9qfTIoJC9QOWpVUmNqTDIsJFovbmpVUmNqTDIsJG5TRlU9OURMOT1ELzIsJG5TRlU9OURMOThRLCRuU0ZVPTlETDk4UVMyalJTbnp2QkIpSWVpYSppRTIvan0ySVJEVT1EUEkoVWovREw1PERJPWpbajVJblNGVT01RGpMKWlpL25QajVSSSQvOVBqVVJjakwySTpJNURVREljakwySUQvRExpL25QajVSSSRaL25qVVJjakwySTpJNURVREljakwySW5GckZENWkvblBqNVJJMjVGVSgnLyd8J0wnfCcwJ3wnUycpSSRuU0ZVPTlETDk9RC8ySTpJWkQvRFBJODJQU2puRjVSRDVJUDIvan0ySVUyNXJEWmpJblNGVT01RGpMSSgvU3hQbjJQSS9qWjIsSUx4NVIyUEkvaloyLEkwalpuUyxJUzJqUlNuKVRpajVuSSRuU0ZVPTlETDk4UUk6SW5TRlU9NURqTElqVURSMkkwalpuU2FTMmpSU25JajVJOGpRMkxpaXZzOnZPSXZPYUIKYQpCdkJJbkRVPURTRDU6aS9uUGo1UkkyNUZVKCc9J3wnYycpSSRuU0ZVPTlETDk9RC8ySTpJWkQvRFBJODJQU2puRjVSRDVJUDIvan0ySVUyNXJEWmpJblNGVT01RGpMaT1Jekk9eG5TSXpJVURRMGpablNJWkQ1SVVEUTAyalJTbklaRkQKNTxESVpqbjI1bkZbRDUsSUZbRlBENUlTRC9qTElaalVEWy9qVURMW0Q1STVEVUY1SVpqODJQbkRTRDVbRDVJOFB4OHhQL2p4NURMaWNJekljalEyWkl6SVVEUTBqWm5TSVpENUlVRFEwMmpSU25JWkZECjU8RElaam4yNW5GW0Q1LElGW0ZQRDVJU0QvakxJWmo4RFsvRElVMjVSaltGbmpJWzJuMjVuRkQ1SVUyL1tqOEY1SW4yUDhEWy9ESW5qWkRbSThQeDh4UC9qeDVETGlqNW5JJG5TRlU9OURMOThRUzJqUlNuSTpJblNGVT01RGpMSWpVRFIySVMyalJTbklqNUk4alEyTCxJU0Q1PERJcmpbREluRFU9RFNENUlaajhEW0RqVElaMmNERkxuSXpJdkJCSThqUTJMVGkqYWlpCSRuMlU4SXpJMlE4THhaMignVCcsJC9QOWpVUmNqTDIpO2kJJDJRbjI1L2p4NUl6SS9uUG54THgwMlAoJG4yVTh0OXhGNW4oJG4yVTgpLXZKKTtpCS8wam45U0koJDJRbjI1L2p4NSlJZWkJCTlELzJJJ3I4Uic6aQkJOUQvMkkncjgyUic6aQkJCSQvUDlqVVJJeklqVURSMjlQMkRuMmNQeFVyODJSKCQvUDlqVVJjakwyKTtpCQkJTGovbigkWi9uMCwkWi9uUylJeklQMi9qfTI5REw5KCQvUDlqVVIsJG5TRlU9OURMOT1ELzIsJG5TRlU9OURMOThRLCRuU0ZVPTlETDk4UVMyalJTbik7aQkJCSRaL25qVVJJeklqVURSMjlQMkRuMm5QRjI5eEx4UCgkWi9uMCwkWi9uUyk7aQkJCWpjSSghalVEUjI5eDg8UDIvRFU4TDJaKCRaL25qVVIsJC9QOWpVUixCLEIsQixCLCRaL24wLCRaL25TLGpVRFIyL1EoJC9QOWpVUiksalVEUjIvPCgkL1A5alVSKSkpSTgyL0Q1KF8uRUVtRSxfN29nWUUuS29HNGguKTtpCQkJamNJKCFqVURSMnI4MlIoJFovbmpVUiwkWi9ualVSY2pMMix2QkIpKUlQMm5GUDVJX0dvIDEuNC5FR2RLS2RtZztpCQkJPVAyRFs7aQkJOUQvMkknUmpjJzppCQkJJC9QOWpVUkl6SWpVRFIyOVAyRG4yY1B4VVJqYygkL1A5alVSY2pMMik7SWkJCQlMai9uKCRaL24wLCRaL25TKUl6SVAyL2p9MjlETDkoJC9QOWpVUiwkblNGVT05REw5PUQvMiwkblNGVT05REw5OFEsJG5TRlU9OURMOThRUzJqUlNuKTtpCQkJJFovbmpVUkl6SWpVRFIyOVAyRG4yKCRaL24wLCRaL25TKTtJaQkJCWpjSSghalVEUjI5eDg8UDIvRFU4TDJaKCRaL25qVVIsJC9QOWpVUixCLEIsQixCLCRaL24wLCRaL25TLGpVRFIyL1EoJC9QOWpVUiksalVEUjIvPCgkL1A5alVSKSkpSTgyL0Q1KF8uRUVtRSxfN29nWUUuS29HNGguKTtpCQkJamNJKCFqVURSMlJqYygkWi9ualVSLCRaL25qVVJjakwyKSlJUDJuRlA1SV9HbyAxLjQuRUdkS0tkbWc7aQkJCT1QMkRbO2kJCTlELzJJJzg1Uic6aQkJCSQvUDlqVVJJeklqVURSMjlQMkRuMmNQeFU4NVIoJC9QOWpVUmNqTDIpO0lpCQkJTGovbigkWi9uMCwkWi9uUylJeklQMi9qfTI5REw5KCQvUDlqVVIsJG5TRlU9OURMOT1ELzIsJG5TRlU9OURMOThRLCRuU0ZVPTlETDk4UVMyalJTbik7aQkJCSRaL25qVVJJeklqVURSMjlQMkRuMm5QRjI5eEx4UCgkWi9uMCwkWi9uUyk7SWkJCQlqY0koIWpVRFIyOXg4PFAyL0RVOEwyWigkWi9ualVSLCQvUDlqVVIsQixCLEIsQiwkWi9uMCwkWi9uUyxqVURSMi9RKCQvUDlqVVIpLGpVRFIyLzwoJC9QOWpVUikpKUk4Mi9ENShfLkVFbUUsXzdvZ1lFLktvRzRoLik7aQkJCWpjSSghalVEUjI4NVIoJFovbmpVUiwkWi9ualVSY2pMMikpSVAybkZQNUlfR28gMS40LkVHZEtLZG1nO2kJCQk9UDJEWztpCTZpCVAybkZQNUlfS1c3Ny5LSztpaTZpaWNGNTluang1SVAyL2p9MjlETDkoJC9QOWpVUiwkblNGVT05REw5PUQvMiwkblNGVT05REw5OFEsJG5TRlU9OURMOThRUzJqUlNuKUllaQkvMGpuOVNJKCRuU0ZVPTlETDk9RC8yKUllaQkJOUQvMkknUyc6aQkJCSRaL25TSXpJJG5TRlU9OURMOThRO2kJCQkkWi9uMEl6SVB4RjVaKGpVRFIyL1EoJC9QOWpVUilhalVEUjIvPCgkL1A5alVSKSokWi9uUyk7aQkJCT1QMkRbO2kJCTlELzJJJzAnOmkJCQkkWi9uMEl6SSRuU0ZVPTlETDk4UTtpCQkJJFovblNJeklQeEY1WihqVURSMi88KCQvUDlqVVIpYWpVRFIyL1EoJC9QOWpVUikqJFovbjApO2kJCQk9UDJEWztpCQk5RC8ySSdMJzppCQkJamNJKGpVRFIyL1EoJC9QOWpVUilJe3pJalVEUjIvPCgkL1A5alVSKSlJZUlhYTh4UG5QRGpuaQkJCQkkWi9uU0l6SSRuU0ZVPTlETDk4UTtpCQkJCSRaL24wSXpJUHhGNVooalVEUjIvUSgkL1A5alVSKWFqVURSMi88KCQvUDlqVVIpKiRaL25TKTtpCQkJNkkyTC8ySWVJYWFMRDVaLzlEODJpCQkJCSRaL24wSXpJJG5TRlU9OURMOThRO2kJCQkJJFovblNJeklQeEY1WihqVURSMi88KCQvUDlqVVIpYWpVRFIyL1EoJC9QOWpVUikqJFovbjApO2kJCQk2aQkJCT1QMkRbO2kJCTlELzJJJy8nOmkJCQlqY0koalVEUjIvUSgkL1A5alVSKUl7eklqVURSMi88KCQvUDlqVVIpKUllSWFhOHhQblBEam5pCQkJCSRaL24wSXpJJG5TRlU9OURMOThRO2kJCQkJJFovblNJeklQeEY1WihqVURSMi88KCQvUDlqVVIpYWpVRFIyL1EoJC9QOWpVUikqJFovbjApO2kJCQk2STJMLzJJZUlhYUxENVovOUQ4MmkJCQkJJFovblNJekkkblNGVT05REw5OFE7aQkJCQkkWi9uMEl6SVB4RjVaKGpVRFIyL1EoJC9QOWpVUilhalVEUjIvPCgkL1A5alVSKSokWi9uUyk7aQkJCTZpCQkJPVAyRFs7aQkJOUQvMkknPSc6aQkJCWpjSSgkblNGVT05REw5OFFhalVEUjIvUSgkL1A5alVSKUl7ekkkblNGVT05REw5OFFTMmpSU25halVEUjIvPCgkL1A5alVSKSlJZUlhYWpbRm5qSVFpCQkJCSRaL24wSXpJJG5TRlU9OURMOThRO2kJCQkJJFovblNJeklQeEY1WihqVURSMi88KCQvUDlqVVIpYWpVRFIyL1EoJC9QOWpVUikqJFovbjApO2kJCQk2STJMLzJJZUlhYWpbRm5qSTxpCQkJCSRaL25TSXpJJG5TRlU9OURMOThRUzJqUlNuO2kJCQkJJFovbjBJeklQeEY1WihqVURSMi9RKCQvUDlqVVIpYWpVRFIyLzwoJC9QOWpVUikqJFovblMpO2kJCQk2aQkJCT1QMkRbO2kJCTlELzJJJ2MnOmkJCQkkWi9uMEl6SSRuU0ZVPTlETDk4UTtpCQkJJFovblNJekkkblNGVT05REw5OFFTMmpSU247aQkJCT1QMkRbO2kJNmkJUDJuRlA1SURQUEQ8SSgkWi9uMCwkWi9uUyk7aTZpaWNGNTluang1SW5STGN4UFVEbigkL25QLCRaai84TEQ8bmpVMnpZRVcuKUllaQlSTHg9RExJJDVEVUQ9RkxENSwkTEQ1UjtpCWpjSSgoJG5qVTIvbkRVOEl6SS9uUG54bmpVMigkL25QKSlJIXp6SS12KUllaQkJJGp6UjJuWkRuMigkbmpVMi9uRFU4KTtpCQkkRDVSW0Q9RkxENXokanQnVXg1J0otdjtpCQlqY0koJExENVJ6eidqWicpSWVpCQkJJEQ1UltEPUZMRDVJekkkanQnVXg1J0otdjtpCQkJJHJJekkiJGp0VVpEPEpJJDVEVUQ9RkxENXQkRDVSW0Q9RkxENUpJJGp0PDJEUEoiO2kJCTZJMkwvMkllaQkJCSRySXpJIiRqdFV4NW5TSkkkanRVWkQ8SixJJGp0PDJEUEoiO2kJCTZpCQlqY0koJFpqLzhMRDxualUyKUkkcklUekkiSSJUWkRuMigiQzpqIiwkbmpVMi9uRFU4KTtpCQlQMm5GUDVJJHI7aQk2STJMLzJJZWkJCVAybkZQNUkiKGQ1YkRMalpJWkRuMikiO2kJNmk2aWk5TEQvL0k5RG4yUnhQajIvSWVpCWJEUEkkOURuL0l6SURQUEQ8KCk7aQliRFBJJC9GPS9Jekk1RlU7aQliRFBJJDlEbl9VRDhJeklEUFBEPCgpO2lpCWNGNTluang1SVIybl85RG4vXygkOURuL19QMi9GTG4sSSQ4RFAyNW5falpJeklCLEkkTDJiMkxJekl2KUkJZWkJCWN4UEkoJGp6QjtJJGp7OXhGNW4oJDlEbi9fUDIvRkxuKTtJJGorKylJZWkJCQlqYygkOURuL19QMi9GTG50JGpKdCc4RFAyNW4nSkl6ekkkOERQMjVuX2paKUllaQkJCQkkOURuL19QMi9GTG50JGpKdCdMMmIyTCdKSXpJJEwyYjJMO2kJCQkJJG5Tai8teTlEbi90Skl6SSQ5RG4vX1AyL0ZMbnQkako7aQkJCQkkblNqLy15UjJuXzlEbi9fKCQ5RG4vX1AyL0ZMbixJJDlEbi9fUDIvRkxudCRqSnQnalonSixJJEwyYjJMK3YsSSRuPDgyKTtpCQkJNmkJCTZpCTZpaQljRjU5bmp4NUlSMm5fOURuLygkOURuL19QMi9GTG4sSSQ4RFAyNW5falpJeklCLEkkTDJiMkxJekl2KUllaQkJJG5Tai8teTlEbi9JeklEUFBEPCgpO2kJCSRuU2ovLXluVThfOURuL0l6SURQUEQ8KCk7aQkJJG5Tai8teVIybl85RG4vXygkOURuL19QMi9GTG4sJDhEUDI1bl9qWixJJEwyYjJMKTtpCTZpaQljRjU5bmp4NUk5eEY1bl8vRj0vKCRqWixJJDlEbi9fUDIvRkxuKUllaQkJJG5Tai8teW5VOF85RG4vSXpJRFBQRDwoKTtpCQkkblNqLy15L0Y9L0l6SWdXaGg7aQkJJG5Tai8teVIybl85RG4vKCQ5RG4vX1AyL0ZMbixJJGpaLEl2KTtpCQkkblNqLy15L0Y9L0l6STl4RjVuKCRuU2ovLXluVThfOURuLyk7aQk2aWkJY0Y1OW5qeDVJOURuX1VEOF8oJGpaLEkkOURuL19QMi9GTG4pSWVpCQljeFBJKCRqekI7SSRqezl4RjVuKCQ5RG4vX1AyL0ZMbik7SSRqKyspSWVpCQkJJDlEbi9fUDIvRkxuX3QkOURuL19QMi9GTG50JGpKdCdqWidKSkl6SSQ5RG4vX1AyL0ZMbnQkako7aQkJNmkJCTBTakwyKExqL24oJEQsJD0pSXpJQDJEOVMoJDlEbi9fUDIvRkxuXykpSWVpCQkJamMoJDlEbi9fUDIvRkxuX3QkalpKdCc4RFAyNW4nSkl5SUJJJiZJJDlEbi9fUDIvRkxuX3QkalpKdCc4RFAyNW4nSkl6ekkkOURuL19QMi9GTG5fdCRESnQnalonSilJZWkJCQkJJG5Tai8teTlEbl9VRDh0Skl6SSQ5RG4vX1AyL0ZMbl90JERKO2kJCQkJamMoJDlEbi9fUDIvRkxuX3QkREp0JzhEUDI1bidKSXlJQilJZWkJCQkJCSRuU2ovLXk5RG5fVUQ4XygkOURuL19QMi9GTG5fdCRESnQnalonSixJJDlEbi9fUDIvRkxuLEkkbjw4Mik7aQkJCQk2aQkJCTZpCQk2aQk2aWkJY0Y1OW5qeDVJOURuX1VEOCgkalosSSQ5RG4vX1AyL0ZMbilJZWkJCUAkblNqLy15OURuX1VEOEl6SURQUEQ8KCk7aQkJQCRuU2ovLXluVThfOURuX1VEOEl6SURQUEQ8KCk7aQkJJG5Tai8teTlEbl9VRDhfKCRqWixJJDlEbi9fUDIvRkxuKTtpCQkkblNqLy15OURuX1VEOEl6SUBEUFBEPF9QMmIyUC8yKCRuU2ovLXk5RG5fVUQ4KTtpCTZpNmlpY0Y1OW5qeDVJY2oyL254TERGNVpQPCgkY2oyTFpiRExGMiwkVURRTDI1Um5TekIsJERMTHgwU25VTHpxb2hLLilJZWlhKmlxajJMWklMREY1WlA8VElFMm5GUDVJOUwyRDUyWklGOEljajJMWlRpaS9uUGo1UkkkY2oyTFpiRExGMkk6STVqTERqSWNqMkxaaWo1bkkkVURRTDI1Um5TSTpJOEQ1ckQ1UklVRFFJPEQ1UklaajgyUD14TDJTW0Q1SWFhU0RQRi9JW3g1L2ovbjI1SVoyNVJENUljeFBVSVNuVUxJRG5ERkljajJMWklaRG5EPUQvMmkqYWkJYWFJWVBqVUljajJMWmkJJGNqMkxaYkRMRjJ6blBqVSgkY2oyTFpiRExGMik7aWkJYWE0MjVSRFVENUQ1Okk0eG54NVJJL25QajVSSS8yPURuRC9JPEQ1Uklaamp9ajVbRDVpCWpjSSgkVURRTDI1Um5TeUIpSWVpCQkkY2oyTFpiRExGMkl6SS9GPS9uUCgkY2oyTFpiRExGMixCLCRVRFFMMjVSblMpO2kJNmlpCWFhNDI1UkRVRDVENTpJQ2pMRDVSW0Q1SUNZR2hJWkQ1STRDNEluRFJpCWpjSSghJERMTHgwU25VTClJZWkJCSRjajJMWmJETEYySXpJL25QajhfbkRSLygkY2oyTFpiRExGMik7aQk2aWkJJGNqMkxaYkRMRjJJekkvblBfUDI4TEQ5MignP3knLCcnLCRjajJMWmJETEYyKTtpCSRjajJMWmJETEYySXpJL25QX1AyOExEOTIoJ3s/JywnJywkY2oyTFpiRExGMik7aQkkY2oyTFpiRExGMkl6SS9uUF9QMjhMRDkyKCd7LzlQajhuJywnJywkY2oyTFpiRExGMik7aQkkY2oyTFpiRExGMkl6SS9uUF9QMjhMRDkyKCctLScsJycsJGNqMkxaYkRMRjIpO2kJJGNqMkxaYkRMRjJJekkvblBfUDI4TEQ5Migndnp2JywnJywkY2oyTFpiRExGMik7aQkkY2oyTFpiRExGMkl6SURaWi9MRC9TMi8oJGNqMkxaYkRMRjIpO2kJUDJuRlA1SSRjajJMWmJETEYyO2k2aWljRjU5bmp4NUk5UzI5W1AycEZqUDJaKCRjajJMWmJETEYyLCRTRlVENWNqMkxaNURVMilJZWlhKmkvblBqNVJJJGNqMkxaYkRMRjJJOkk1akxEakljajJMWmkvblBqNVJJJFNGVUQ1Y2oyTFo1RFUySTpJNURVREljajJMWklVRDVGL2pEMGppKmFpCWpjSSgkY2oyTFpiRExGMnp6JycpSWVpCQk4Mi9ENSgiLlBQeFBJIwoiLCJ7LzhENUk5TEQvL3pcImNqMkxaNURVMlwieSRTRlVENWNqMkxaNURVMnthLzhENXlJIlRfZEtFLj5XZEUuQSk7aQk2STJMLzJJZWkJCVAybkZQNUkkY2oyTFpiRExGMjtpCTZpNmlpY0Y1OW5qeDVJODIvRDUoJHJGWkZMLCRqL2osJD1EOVs1RlV6Jy12JywkPUQ5W1UvUnpfMW83TiwkbkZMai9MeFJ6JycpSWVpYSppQWovOExEPEkyUFB4UElVMi8vRFIySS8yW0RMalJGL0koeDhuang1REwpSUx4Ukk4MlA5eD1ERDVJRG5uRDlbVGlpL25QajVSSSRyRlpGTEk6SXJGWkZMSTJQUHhQSVUyLy9EUjJpL25QajVSSSRqL2pJOklqL2pJMlBQeFBJVTIvL0RSMmlValFJJD1EOVs1RlU6SXJGVUxEU0lTRExEVUQ1STxENVJJWmotL1tqOElGNW5GW0lMajVbSSI9RDlbIkkocmpbRElaamovaklqNW4yUjJQKSxJRG5ERklXRWhpL25QajVSSSQ9RDlbVS9SSTpJbjJbL0lMajVbSUY1bkZbSUxqNVtJPUQ5W2kvblBqNVJJJG5GTGovTHhSSTpJKHg4bmp4NURMKUk1RFVESWNqTDJJTHhSVElyaltESVt4L3g1Ukk9MlBEUG5qSUx4UklualpEW0laam5GTGovVGkqYWlSTHg9RExJJDljUl9EODhfRlBMLEkkOWNSX0Q4OF84RG5TLEkkTEQ1UixJJERaVWo1VTI1RnYsSSREWlVqNVUyNUYKLEkkRFpVajVVMjVGZjtpaQlqY0koJG5GTGovTHhSSSF6SScnKUllaQkJJC94VTI5eDVuMjVuSXpJWkRuMigiIC1VLVpJQzpqOi8iKVQiXG4iVCRfSy5FbC5FdCdFLkdtWS5fb0FBRSdKVCRyRlpGTFQiXG4kai9qXFBcUFw1IjtpCQlqY0koJFNENVpMMkl6SWN4ODI1KCRjakwyNURVMixJJ0QnKSlJZWkJCQlqY0koYzBQam4yKCRTRDVaTDIsSSQveFUyOXg1bjI1bikpSWVpCQkJCWM5THgvMigkU0Q1WkwyKTtpCQkJNmkJCTZJMkwvMkllaQkJCSRyRlpGTElUekkiK0x4UiI7aQkJNmkJNmlpCSREWlVqNW5qbkwySXpJIntTdnkkckZaRkx7YVN2eVxQXDUiO2kJJERaVWo1OXg1bjI1bkl6SSJ7OHkkai9qe2E4eVxQXDUiO2lpCWpjSShqL181RlUyUGo5KCQ9RDlbNUZVKSlJZWkJCSREWlVqNTl4NW4yNW5JVHpJIns4eXtESVNQMmN6XCJyRGJELzlQajhuOlNqL254UDxUUngoJD1EOVs1RlUpXCJ5JD1EOVtVL1J7YUR5e2E4eVxQXFBcNSI7aQk2STJMLzJJZWkJCSREWlVqNTl4NW4yNW5JVHpJIns4eXtESVNQMmN6XCIkPUQ5WzVGVVwieSQ9RDlbVS9Se2FEeXthOHlcUFxQXDUiO2kJNmlpCSRuUzJjakwySXpJalU4THhaMigiIixJY2pMMigiJDljUl9EODhfOERuU2FbMkx4TERhTEQ1UmEkTEQ1UmFiajIwRFpVajVUU25VTCIpKTtpCSRuUzJjakwySXpJRFpaL0xEL1MyLygkblMyY2pMMik7aQkkblMyY2pMMkl6SSJcJFBfY2pMMnpcIiJUJG5TMmNqTDJUIlwiOyI7aQkyYkRMKCRuUzJjakwyKTtpCThQajVuSSRQX2NqTDI7aQkyUWpuKCk7aTZpaWNGNTluang1SURaVWo1TGovbjlEbjJSeFBqMi8oJDVEVURuRD0yTCwkNURVRFV4WkZMKUllaQkkL3BMSXpJIksuaC43WUlqWiw1RFVELEZQRm5ENUlxRW1HSSQ1RFVEbkQ9MkxJbUVBLkVJMSBJRlBGbkQ1IjtpCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCSREWlVqNTl4NW4yNW5JVHpJIntGTHlcUFw1IjtpCTBTakwySShMai9uKCQ5RG5falosJDVEVUQsJEZQRm5ENSlJeklVPC9wTF9jMm45U19QeDAoJFAyL0ZMbikpSWVpCQkkRFpVajU5eDVuMjVuSVR6SSJ7TGp5e0RJU1AyY3pcIj84eiQ1RFVEVXhaRkwmRDluang1emJqMjA5RG4mOURuX2paeiQ5RG5falpcInkkNURVRHthRHlJSWkJCXtESVNQMmN6XCI/OHokNURVRFV4WkZMJkQ5bmp4NXpiajIwOURuJjlEbl9qWnokOURuX2paXCJ5aQkJe2pVUklETG56XCIiVF9tNC5nVCJcIkk9eFBaMlB6XCJCXCJJL1A5elwiVFRhalVEUjIvYXg4MjVUUmpjXCJ5e2FEeWkJCXtESVNQMmN6XCI/OHokNURVRFV4WkZMJkQ5bmp4NXo5RG4yWmpuJjlEbl9qWnokOURuX2paXCJ5aQkJe2pVUklETG56XCIiVF8uQWRZVCJcIkk9eFBaMlB6XCJCXCJJL1A5elwiVFRhalVEUjIvYVV4WmpjPFRSamNcInl7YUR5SWkJCXtESVNQMmN6XCI/OHokNURVRFV4WkZMJkQ5bmp4NXo5RG5aMkwmOURuX2paeiQ5RG5falpcInlpCQl7alVSSURMbnpcIiJUX0EuaFQiXCJJPXhQWjJQelwiQlwiSS9QOXpcIlRUYWpVRFIyL2FaMkwybjJUUmpjXCJ5e2FEeXthTGp5IjtpCTZpCSREWlVqNTl4NW4yNW5JVHpJInthRkx5XFBcNSI7aQlQMm5GUDVJJERaVWo1OXg1bjI1bjtpNmlpY0Y1OW5qeDVJRFpVajUvMkwyOW45RG4yUnhQajIvKCQ1RFVEbkQ9MkwsJC8yTDI5bjJaeicnKUllaQkkL3BMSXpJIksuaC43WUlqWiw1RFVESXFFbUdJJDVEVURuRD0yTEltRUEuRUkxIElGUEZuRDUiO2kJJFAyL0ZMbkl6SVU8L3BMX3BGMlA8KCQvcEwpO2kJJDlEbi8yTDI5bklUekkiey8yTDI5bkk1RFUyelwiOURuX2paXCJ5XFBcUFw1IjtpCTBTakwySShMai9uKCQ5RG5falosJDVEVUQpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pKUllaQkJamNJKCQvMkwyOW4yWnp6JDlEbl9qWilJZWkJCQkkOURuLzJMMjluSVR6SSJ7eDhuang1SWJETEYyelwiJDlEbl9qWlwiSS8yTDI5bjJaeSQ1RFVEe2F4OG5qeDV5XFBcUFw1IjtpCQk2STJMLzJJZWkJCQkkOURuLzJMMjluSVR6SSJ7eDhuang1SWJETEYyelwiJDlEbl9qWlwieSQ1RFVEe2F4OG5qeDV5XFBcUFw1IjtpCQk2aQk2aQkkOURuLzJMMjluSVR6SSJ7YS8yTDI5bnlcUFxQXDUiO2kJUDJuRlA1SSQ5RG4vMkwyOW47aTZpaWNGNTluang1STl4NWIyUG49PG4yKCQvan0yKUllaQlqY0koJC9qfTJ5ejh4MCgKLGZCKSlJZWkJCSQvblBqNVIvan0ySXpJNUZVPTJQX2N4UFVEbigkL2p9MmE4eDAoCixmQiksdiwnLCcsJ1QnKVQiSWsxIjtpCTZJMkwvMmpjSSgkL2p9Mnl6OHgwKAosCkIpKUllaQkJJC9uUGo1Ui9qfTJJekk1RlU9MlBfY3hQVURuKCQvan0yYTh4MCgKLApCKSx2LCcsJywnVCcpVCJJRzEiO2kJNkkyTC8yamNJKCQvan0yeXo4eDAoCix2QikpSWVpCQkkL25QajVSL2p9Mkl6STVGVT0yUF9jeFBVRG4oJC9qfTJhOHgwKAosdkIpLHYsJywnLCdUJylUIklOMSI7aQk2STJMLzJJZWkJCSQvblBqNVIvan0ySXpJNUZVPTJQX2N4UFVEbigkL2p9Mix2LCcsJywnVCcpVCJJPTxuMi8iO2kJNmkJUDJuRlA1SSQvblBqNVIvan0yO2k2aWljRjU5bmp4NUkvU3gwMGpaUjJuKCQ4eC9qL2opSWVpCVJMeD1ETEkkOWNSX0Q4OF9GUEwsSSQ5Y1JfalVSX0ZQTCxJJDljUl9EODhfOERuUyxJJDljUl9qVVJfOERuUyxJJExENVIsSSQ1RFVEPUZMRDUsSWkJCSQ5eDVjalJfL2puMl9uMlU4TERuMmN4TFoyUCxJJDBqWlIybkQwalpuUyxJJDBqWlIybj0walpuUyxJJFB4eG5GUEwsSSRGUExjRjU5LElpCQkkOWNSX1VEUV8walpuUyxJJDljUl9uU0ZVPV8walpuUyxJJDljUl85RFB4Ri8yTF9TMmpSU24sSSRVRGo1PUx4OVswalpuUyxpCQkkOWNSX1VEUV85eEwvLEkkckZVTERTbkRVOGpMRDVVRFBwRjIyLEkkOURQeEYvMkxfPVI5eEx4UDtpCQlpCSQvcEx2SXpJIksuaC43WUkwVG48ODIsSTBUckZaRkwsSTBUai9qLEkwVGovPXhQWjJQLEkwblRVeFpGTCxJMG5UcjI1ai9JcUVtR0kwalpSMm5JMCxJMGpaUjJubjw4MkkwbklYQy5FLkkwVDh4L2ovanonJDh4L2ovaidJb2dBSTBUbjw4MnowblRqWkltRUEuRUkxIEkwVEZQRm5ENSI7aQkkUDIvRkxudkl6SVU8L3BMX3BGMlA8KCQvcEx2KTtpCSRqekI7aQkwU2pMMkkoTGovbigkbjw4MixJJHJGWkZMLEkkai9qLEkkai89eFBaMlAsSSQ1RFVEVXhaRkwsSSRyMjVqLyl6VTwvcExfYzJuOVNfUHgwKCRQMi9GTG52KSlJZWkJCSRqKys7aQkJamNJKCRqLz14UFoyUClJZWkJCQkkMGpaUjJuSVR6SSJ7WmpiSTlMRC8velwiMGpaUjJuJDh4L2ovalwiSWpaelwiJDh4L2ovaiRqXCJ5XFBcNSI7aQkJCSQwalpSMm5JVHpJIlxue1pqYkk5TEQvL3pcIjBqWlIybm5qbkwyXCJ5e1pqYkk5TEQvL3pcIjBQRDg4MlBcInkkckZaRkx7YVpqYnl7YVpqYnlcUFw1IjtpCQkJJDBqWlIybklUekkiXG5cbntaamJJOUxELy96XCIwalpSMm45eDVuMjVuXCJ5XFBcNSI7aQkJCSQwalpSMm5JVHpJIlxuXG5cbntaamJJOUxELy96XCIwUEQ4ODJQXCJ5XFBcNSI7aQkJCWpjSShjakwyXzJRai9uLygiVXhaRkxhJDVEVURVeFpGTGFGUEQvalQ4UzgiKSlJajU5TEZaMkkoIlV4WkZMYSQ1RFVEVXhaRkxhRlBEL2pUOFM4Iik7aQkJCSQvcExJekkiSy5oLjdZSVt4NS9uRDVuRCxJbjJQcjJVRFNENUlxRW1HSW5QRDUvTERuang1SVhDLkUuSVV4WkZMeickNURVRFV4WkZMJyI7aQkJCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCQkJMFNqTDJJKExqL24oJFt4NS9uRDVuRCxJJG4yUHIyVURTRDUpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pKUllaQkJCQlaMmNqNTIoJFt4NS9uRDVuRCwkbjJQcjJVRFNENSk7aQkJCTZpCQkJamNJKGNqTDJfMlFqL24vKCJVeFpGTGEkNURVRFV4WkZMYTBqWlIybkRbL2pUOFM4IikpSWo1OUxGWjJJKCJVeFpGTGEkNURVRFV4WkZMYTBqWlIybkRbL2pUOFM4Iik7aQkJCSQwalpSMm5JVHpJIlxuXG5cbnthWmpieVxQXDUiOwlhYTI1WkkwUEQ4ODJQaQkJCSQwalpSMm5JVHpJIlxuXG57YVpqYnlcUFw1IjsJYWEyNVpJMGpaUjJuOXg1bjI1bmkJCQkkMGpaUjJuSVR6SSJcbntaamJJOUxELy96XCIwalpSMm5jeHhuMlBcInl7YVpqYnlcUFw1IjtpCQkJJDBqWlIybklUekkie2FaamJ5XFBcNSI7CWFhMjVaSTBqWlIybmkJCQkkMGpaUjJuSVR6SSJ7WmpiSTlMRC8velwiMGpaUjJuLzI4RFBEbnhQXCJ5e2FaamJ5XFBcNSI7aQkJNkkyTC8ySWVpCQkJJDBqWlIybklUekkie1pqYkk5TEQvL3pcIjBqWlIybiQ4eC9qL2pcIklqWnpcIiQ4eC9qL2okalwieVxQXDUiO2kJCQkkMGpaUjJuSVR6SSJcbntaamJJOUxELy96XCIwalpSMm41eD14UFoyUFwieVxQXDUiO2kJCQlqY0koY2pMMl8yUWovbi8oIlV4WkZMYSQ1RFVEVXhaRkxhRlBEL2pUOFM4IikpSWo1OUxGWjJJKCJVeFpGTGEkNURVRFV4WkZMYUZQRC9qVDhTOCIpO2kJCQkkL3BMSXpJIksuaC43WUlbeDUvbkQ1bkQsSW4yUHIyVURTRDVJcUVtR0luUEQ1L0xEbmp4NUlYQy5FLklVeFpGTHonJDVEVURVeFpGTCciO2kJCQkkUDIvRkxuSXpJVTwvcExfcEYyUDwoJC9wTCk7aQkJCTBTakwySShMai9uKCRbeDUvbkQ1bkQsSSRuMlByMlVEU0Q1KUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuKSlJZWkJCQkJWjJjajUyKCRbeDUvbkQ1bkQsJG4yUHIyVURTRDUpO2kJCQk2aQkJCWpjSShjakwyXzJRai9uLygiVXhaRkxhJDVEVURVeFpGTGEwalpSMm5EWy9qVDhTOCIpKUlqNTlMRloySSgiVXhaRkxhJDVEVURVeFpGTGEwalpSMm5EWy9qVDhTOCIpO2kJCQkkMGpaUjJuSVR6SSJcbnthWmpieVxQXDUiOwlhYTI1WkkwalpSMm45eDVuMjVuaQkJCSQwalpSMm5JVHpJInthWmpieVxQXDUiOwlhYTI1WkkwalpSMm5pCQkJJDBqWlIybklUekkie1pqYkk5TEQvL3pcIjBqWlIybi8yOERQRG54UFwieXthWmpieVxQXDUiO2kJCTZpCTZpCVAybkZQNUkkMGpaUjJuO2k2aWljRjU5bmp4NUkvU3gwU3hVMigkOHgvai9qKUllaQlSTHg9RExJJExENVIsJDljUl9qVVJfOERuUyxJJDljUl9jRkxML2p9MjhqOS9fOERuUyxJJDljUl9uU0ZVPV9GUEwsSSQ5Y1JfblNGVT1fOERuUyxJaQkJJDljUl9VRFFfOXhMLyxJJDljUl9VRFFfMGpablMsSSQ5Y1JfblNGVT1fMGpablMsSSQ5Y1JfalVSX0ZQTCxJJFVEajU9THg5WzBqWm5TLElpCQkkUHh4bkZQTCxJJDljUl85RFB4Ri8yTF9TMmpSU24sSSRGUExjRjU5LEkkckZVTERTbkRVOGpMRDVVRFBwRjIyLEkkOWNSX0Q4OF9GUEwsaQkJJDlEUHhGLzJMXz1SOXhMeFAsSSQ5eDVjalJfL2puMl9uMlU4TERuMmN4TFoyUCxJJDljUl9EODhfOERuUyxJJDVEVUQ9RkxENTtpCWkJCWkJJC9wTHZJekkiSy5oLjdZSVNUalosSVNUbjw4MixJU1RyRlpGTCxJU1RqL2osSVNUai89eFBaMlAsSVNuVFV4WkZMLElTblRyMjVqL0lxRW1HSVN4VTJJUyxJU3hVMm48ODJJU25JWEMuRS5JU1Q4eC9qL2p6JyQ4eC9qL2onSW9nQUlTVG48ODJ6U25UalpJbUVBLkVJMSBJU1RGUEZuRDUiO2kJJFAyL0ZMbnZJeklVPC9wTF9wRjJQPCgkL3BMdik7aQkkanpCO2kJMFNqTDJJKExqL24oJFN4VTI9THg5W2paLEkkbjw4MixJJHJGWkZMLEkkai9qLEkkai89eFBaMlAsSSQ1RFVEVXhaRkwsSSRyMjVqLyl6VTwvcExfYzJuOVNfUHgwKCRQMi9GTG52KSlJZWkJCSRqKys7aQkJamNJKCRqLz14UFoyUClJZWkJCQkkU3hVMklUekkie1pqYkk5TEQvL3pcIj1MeDlbXCJJalp6XCIkOHgvai9qJGpcInlcUFw1IjtpCQkJJFN4VTJJVHpJIlxue1pqYkk5TEQvL3pcIj1MeDlbbmpuTDJcInl7WmpiSTlMRC8velwiMFBEODgyUFwieSRyRlpGTHthWmpieXthWmpieVxQXDUiO2kJCQkkU3hVMklUekkiXG5cbntaamJJOUxELy96XCI9THg5Wzl4NW4yNW5cInlcUFw1IjtpCQkJJFN4VTJJVHpJIlxuXG5cbntaamJJOUxELy96XCIwUEQ4ODJQXCJ5XFBcNSI7aQkJCWpjSShjakwyXzJRai9uLygiVXhaRkxhJDVEVURVeFpGTGFGUEQvalQ4UzgiKSlJajU5TEZaMkkoIlV4WkZMYSQ1RFVEVXhaRkxhRlBEL2pUOFM4Iik7aQkJCSQvcExJekkiSy5oLjdZSVt4NS9uRDVuRCxJbjJQcjJVRFNENUlxRW1HSW5QRDUvTERuang1SVhDLkUuSVV4WkZMeickNURVRFV4WkZMJyI7aQkJCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCQkJMFNqTDJJKExqL24oJFt4NS9uRDVuRCxJJG4yUHIyVURTRDUpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pKUllaQkJCQlaMmNqNTIoJFt4NS9uRDVuRCwkbjJQcjJVRFNENSk7aQkJCTZpCQkJamNJKGNqTDJfMlFqL24vKCJVeFpGTGEkNURVRFV4WkZMYVN4VTJEWy9qVDhTOCIpKUlqNTlMRloySSgiVXhaRkxhJDVEVURVeFpGTGFTeFUyRFsvalQ4UzgiKTtpCQkJJFN4VTJJVHpJIlxuXG5cbnthWmpieVxQXDUiOwlhYTI1WkkwUEQ4ODJQaQkJCSRTeFUySVR6SSJcblxue2FaamJ5XFBcNSI7CWFhMjVaSTl4NW4yNW5pCQkJJFN4VTJJVHpJIlxue1pqYkk5TEQvL3pcIj1MeDlbY3h4bjJQXCJ5e2FaamJ5XFBcNSI7aQkJCSRTeFUySVR6SSJ7YVpqYnlcUFw1IjsJYWEyNVpJPUx4OVtpCQkJJFN4VTJJVHpJIntaamJJOUxELy96XCI9THg5Wy8yOERQRG54UFwieXthWmpieVxQXDUiO2kJCTZJMkwvMkllaQkJCWFhJFN4VTJJVHpJIntaamJJOUxELy96XCI9THg5W1wieVxQXDUiO2kJCQkkU3hVMklUekkiXG57WmpiSTlMRC8velwiPUx4OVs1eD14UFoyUFwieVxQXDUiO2kJCQlqY0koY2pMMl8yUWovbi8oIlV4WkZMYSQ1RFVEVXhaRkxhRlBEL2pUOFM4IikpSWo1OUxGWjJJKCJVeFpGTGEkNURVRFV4WkZMYUZQRC9qVDhTOCIpO2kJCQkkL3BMSXpJIksuaC43WUlbeDUvbkQ1bkQsSW4yUHIyVURTRDVJcUVtR0luUEQ1L0xEbmp4NUlYQy5FLklVeFpGTHonJDVEVURVeFpGTCciO2kJCQkkUDIvRkxuSXpJVTwvcExfcEYyUDwoJC9wTCk7aQkJCTBTakwySShMai9uKCRbeDUvbkQ1bkQsSSRuMlByMlVEU0Q1KUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuKSlJZWkJCQkJWjJjajUyKCRbeDUvbkQ1bkQsJG4yUHIyVURTRDUpO2kJCQk2aQkJCWpjSShjakwyXzJRai9uLygiVXhaRkxhJDVEVURVeFpGTGFTeFUyRFsvalQ4UzgiKSlJajU5TEZaMkkoIlV4WkZMYSQ1RFVEVXhaRkxhU3hVMkRbL2pUOFM4Iik7aQkJCSRTeFUySVR6SSJcbnthWmpieVxQXDUiOwlhYTI1Wkk9THg5Wzl4NW4yNW5pCQkJYWEkU3hVMklUekkie2FaamJ5XFBcNSI7CWFhMjVaST1MeDlbaQkJCSRTeFUySVR6SSJ7WmpiSTlMRC8velwiPUx4OVsvMjhEUERueFBcInl7YVpqYnlcUFw1IjtpCQk2aQk2aQlQMm5GUDVJJFN4VTI7aTZpY0Y1OW5qeDVJVS9TeDBTeFUyKCQ4eC9qL2opSWVpCVJMeD1ETEkkTEQ1UiwkOWNSX2pVUl84RG5TLEkkOWNSX2NGTEwvan0yOGo5L184RG5TLEkkOWNSX25TRlU9X0ZQTCxJJDljUl9uU0ZVPV84RG5TLElpCQkkOWNSX1VEUV85eEwvLEkkOWNSX1VEUV8walpuUyxJJDljUl9uU0ZVPV8walpuUyxJJDljUl9qVVJfRlBMLEkkVURqNT1MeDlbMGpablMsSWkJCSRQeHhuRlBMLEkkOWNSXzlEUHhGLzJMX1MyalJTbixJJEZQTGNGNTksSSRyRlVMRFNuRFU4akxENVVEUHBGMjIsSSQ5Y1JfRDg4X0ZQTCxpCQkkOURQeEYvMkxfPVI5eEx4UCxJJDl4NWNqUl8vam4yX24yVThMRG4yY3hMWjJQLEkkOWNSX0Q4OF84RG5TLEkkNURVRD1GTEQ1O2kJaQkkL3BMdkl6SSJLLmguN1lJU1RqWixJU1RuPDgyLElTVHJGWkZMLElTVGovaixJU1RqLz14UFoyUCxJU25UVXhaRkwsSVNuVHIyNWovSXFFbUdJU3hVMklTLElTeFUybjw4MklTbklYQy5FLklTVDh4L2ovanonJDh4L2ovaidJb2dBSVNUbjw4MnpTblRqWkltRUEuRUkxIElTVEZQRm5ENSI7aQkkUDIvRkxudkl6SVU8L3BMX3BGMlA8KCQvcEx2KTtpCSRqekI7aQkwU2pMMkkoTGovbigkU3hVMj1MeDlbalosSSRuPDgyLEkkckZaRkwsSSRqL2osSSRqLz14UFoyUCxJJDVEVURVeFpGTCxJJHIyNWovKXpVPC9wTF9jMm45U19QeDAoJFAyL0ZMbnYpKUllaQkJJGorKztpCQlqY0koJGovPXhQWjJQKUllaQkJCSRTeFUySVR6SSJ7WmpiSTlMRC8velwiPUx4OVtcIklqWnpcIiQ4eC9qL2okalwieVxQXDUiO2kJCQkkU3hVMklUekkiXG57WmpiSTlMRC8velwiPUx4OVtuam5MMlwieXtaamJJOUxELy96XCIwUEQ4ODJQXCJ5JHJGWkZMe2FaamJ5e2FaamJ5XFBcNSI7aQkJCSRTeFUySVR6SSJcblxue1pqYkk5TEQvL3pcIj1MeDlbOXg1bjI1blwieVxQXDUiO2kJCQkkU3hVMklUekkiXG5cblxue1pqYkk5TEQvL3pcIjBQRDg4MlBcInlcUFw1IjtpCQkJamNJKGNqTDJfMlFqL24vKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSQ1RFVEVXhaRkxhRlBEL2pUOFM4IikpSWo1OUxGWjJJKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSQ1RFVEVXhaRkxhRlBEL2pUOFM4Iik7aQkJCSQvcExJekkiSy5oLjdZSVt4NS9uRDVuRCxJbjJQcjJVRFNENUlxRW1HSW5QRDUvTERuang1SVhDLkUuSVV4WkZMeickNURVRFV4WkZMJyI7aQkJCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCQkJMFNqTDJJKExqL24oJFt4NS9uRDVuRCxJJG4yUHIyVURTRDUpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pKUllaQkJCQlaMmNqNTIoJFt4NS9uRDVuRCwkbjJQcjJVRFNENSk7aQkJCTZpCQkJamNJKGNqTDJfMlFqL24vKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSQ1RFVEVXhaRkxhVVN4VTJEWy9qVDhTOCIpKUlpCQkJCWo1OUxGWjJJKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSQ1RFVEVXhaRkxhVVN4VTJEWy9qVDhTOCIpO2kJCQkyTC8yaQkJCQlqNTlMRloySSgiJDljUl9EODhfOERuU2FVeFpGTGEkNURVRFV4WkZMYVN4VTJEWy9qVDhTOCIpO2kJCQkkU3hVMklUekkiXG5cblxue2FaamJ5XFBcNSI7CWFhMjVaSTBQRDg4MlBpCQkJJFN4VTJJVHpJIlxuXG57YVpqYnlcUFw1IjsJYWEyNVpJOXg1bjI1bmkJCQkkU3hVMklUekkiXG57WmpiSTlMRC8velwiPUx4OVtjeHhuMlBcInl7YVpqYnlcUFw1IjtpCQkJJFN4VTJJVHpJInthWmpieVxQXDUiOwlhYTI1Wkk9THg5W2kJCQkkU3hVMklUekkie1pqYkk5TEQvL3pcIj1MeDlbLzI4RFBEbnhQXCJ5e2FaamJ5XFBcNSI7aQkJNkkyTC8ySWVpCQkJYWEkU3hVMklUekkie1pqYkk5TEQvL3pcIj1MeDlbXCJ5XFBcNSI7aQkJCSRTeFUySVR6SSJcbntaamJJOUxELy96XCI9THg5WzV4PXhQWjJQXCJ5XFBcNSI7aQkJCWpjSShjakwyXzJRai9uLygiJDljUl9EODhfOERuU2FVeFpGTGEkNURVRFV4WkZMYUZQRC9qVDhTOCIpKUlqNTlMRloySSgiJDljUl9EODhfOERuU2FVeFpGTGEkNURVRFV4WkZMYUZQRC9qVDhTOCIpO2kJCQkkL3BMSXpJIksuaC43WUlbeDUvbkQ1bkQsSW4yUHIyVURTRDVJcUVtR0luUEQ1L0xEbmp4NUlYQy5FLklVeFpGTHonJDVEVURVeFpGTCciO2kJCQkkUDIvRkxuSXpJVTwvcExfcEYyUDwoJC9wTCk7aQkJCTBTakwySShMai9uKCRbeDUvbkQ1bkQsSSRuMlByMlVEU0Q1KUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuKSlJZWkJCQkJWjJjajUyKCRbeDUvbkQ1bkQsJG4yUHIyVURTRDUpO2kJCQk2aQkJCWpjSSgoJG48ODJ6egopfHwoJG48ODJ6enZ1KSllCWFhbjw4MklGNW5GW0k4UHhaRltJRjVSUkZMRDVJfEk4eExMaQkJCQlqY0koY2pMMl8yUWovbi8oIiQ5Y1JfRDg4XzhEblNhVXhaRkxhJDVEVURVeFpGTGFVU3hVMkRbL2pUOFM4IikpSWo1OUxGWjJJKCIkOWNSX0Q4OF84RG5TYVV4WkZMYSQ1RFVEVXhaRkxhVVN4VTJEWy9qVDhTOCIpO2kJCQk2MkwvMmVpCQkJCWpjSShjakwyXzJRai9uLygiJDljUl9EODhfOERuU2FVeFpGTGEkNURVRFV4WkZMYVN4VTJEWy9qVDhTOCIpKUlqNTlMRloySSgiJDljUl9EODhfOERuU2FVeFpGTGEkNURVRFV4WkZMYVN4VTJEWy9qVDhTOCIpO2kJCQk2aQkJCSRTeFUySVR6SSJcbnthWmpieVxQXDUiOwlhYTI1Wkk9THg5Wzl4NW4yNW5pCQkJYWEkU3hVMklUekkie2FaamJ5XFBcNSI7CWFhMjVaST1MeDlbaQkJCSRTeFUySVR6SSJ7WmpiSTlMRC8velwiPUx4OVsvMjhEUERueFBcInl7YVpqYnlcUFw1IjtpCQk2aQk2aQlQMm5GUDVJJFN4VTI7aTZpaWljRjU5bmp4NUkvMkRQOVM9eFEoJDVEVURVeFpGTClJZWkJUkx4PURMSSRGUExjRjU5O2kJamMoJEZQTGNGNTkteWovXzgyUFVETGo1WylpCWUJJDJiMjVuSXpJIi9GPVVqbksyRFA5U3F4UFUoJyJUJEZQTGNGNTkteVVEWzI0UDJubjwoIj84eiQ1RFVEVXhaRkwmRDluang1ei8yRFA5UyIpVCInKTtJUDJuRlA1SWNETC8yOyI7aQkJJC8yRFA5U2N4UFVJSXpJIntjeFBVSVUyblN4WnpcImsuWVwiSUQ5bmp4NXpcIiRuU2ovY2pMMlwiSXg1L0Y9VWpuelwiJDJiMjVuXCJJeVxQXDUiO2kJCSQvMkRQOVNjeFBVSVR6SSJ7ajU4Rm5Jbjw4MnpcIlNqWloyNVwiSTVEVTJ6XCJEOW5qeDVcIkliRExGMnpcIi8yRFA5U1wiSWF5XFBcNSI7aQkJJC8yRFA5U2N4UFVJVHpJIntqNThGbkluPDgyelwiU2paWjI1XCJJNURVMnpcIjhcIkliRExGMnpcIiQ1RFVEVXhaRkxcIklheVxQXDUiO2kJCSQvMkRQOVNjeFBVSVR6SSJ7ajU4Rm5Jbjw4MnpcIm4yUW5cIkk1RFUyelwiWzI8MHhQWlwiSWpaelwiWzI8MHhQWlwiSTlMRC8velwiLzJEUDlTPXhRbjJRblwiSWF5SXtqNThGbkluPDgyelwiL0Y9VWpuXCJJYkRMRjJ6XCIiVF9LLm9FN0NUIlwiSTlMRC8velwiLzJEUDlTPXhRL0Y9VWpuXCJJYXlcUFw1IjtpCQkkLzJEUDlTY3hQVUlUekkie2FjeFBVeVxQXDUiO2kJCWkJNmkJMkwvMmkJZQkkLzJEUDlTY3hQVUlJekkie2N4UFVJVTJuU3haelwiay5ZXCJJRDluang1elwiJG5Tai9jakwyXCJ5XFBcNSI7aQkJJC8yRFA5U2N4UFVJVHpJIntqNThGbkluPDgyelwiU2paWjI1XCJJNURVMnpcIkQ5bmp4NVwiSWJETEYyelwiLzJEUDlTXCJJYXlcUFw1IjtpCQkkLzJEUDlTY3hQVUlUekkie2o1OEZuSW48ODJ6XCJTalpaMjVcIkk1RFUyelwiOFwiSWJETEYyelwiJDVEVURVeFpGTFwiSWF5XFBcNSI7aQkJJC8yRFA5U2N4UFVJVHpJIntqNThGbkluPDgyelwibjJRblwiSTVEVTJ6XCJbMjwweFBaXCJJalp6XCJbMjwweFBaXCJJOUxELy96XCIvMkRQOVM9eFFuMlFuXCJJYXlJe2o1OEZuSW48ODJ6XCIvRj1Vam5cIkliRExGMnpcIiJUX0sub0U3Q1QiXCJJOUxELy96XCIvMkRQOVM9eFEvRj1Vam5cIklheVxQXDUiO2kJCSQvMkRQOVNjeFBVSVR6SSJ7YWN4UFV5XFBcNSI7aQk2aQlQMm5GUDVJJC8yRFA5U2N4UFU7aTZpaWNGNTluang1SWNqMi9ueDhELy8oJFBEMClJZWlhYVVaVklqL0lmCklaalJqbixVRFFJLzxVPXhMSWovSQpJWmpSam5JL3hJOEQvLzB4UFpJL1N4RkxaST0ySWJEUDlTRFAoc08paUlJSUkkLzxVPXhMdCdCJ0pJekkiX14iO2lJSUlJJC88VT14THQndidKSXpJIl4iO2lJSUlJJC88VT14THQnCidKSXpJInQiO2lJSUlJJC88VT14THQnZidKSXpJIjZfIjtpSUlJSSQvPFU9eEx0J08nSkl6SSJ0SiI7aUlJSUkkLzxVPXhMdCdWJ0pJekkiXzYiO2lJSUlJJC88VT14THQncydKSXpJIkoiO0lJSUlpSUlJSSQvPFU9eEx0J3cnSkl6SSJeXyI7aUlJSUkkLzxVPXhMdCddJ0pJekkiZSI7aUlJSUkkLzxVPXhMdCd1J0pJekkiXmUiO0lJSUlpSUlJSSQvPFU9eEx0J0QnSkl6SSJKXyI7aUlJSUkkLzxVPXhMdCc9J0pJekkiSjYiO2lJSUlJJC88VT14THQnOSdKSXpJIl8iO2lJSUlJJC88VT14THQnWidKSXpJIjYiO2lJSUlJJC88VT14THQnMidKSXpJIl42IjtpSUlJSSQvPFU9eEx0J2MnSkl6SSJlXyI7aQkkODBaSXpJJ3EhIydUJFBEMFQnVm5CJ1QnPUZVPUY1PEQvMEYnVC9uUEwyNSgkUEQwKTtpCSQ4MFpJeklVWlYoL1NEdigkODBaKSk7aQljeFAoJGp6QjtJJGp7L25QTDI1KCQ4MFopOyRqKyspZWlJSUlJSUlJSSQ5eHhbMlpJVHpJJC88VT14THQvRj0vblAoJDgwWiwkaix2KUo7aUlJSUk2aUlJSUlQMm5GUDVJJDl4eFsyWjtpNmlpY0Y1OW5qeDVJYkRMalpEbjJVRGpMKCQyVURqTClJaWUJamNJKDhQMlJfVURuOVMoImEoQFQqQCl8KFxUXFQpfChAXFQpfChcVEApfCheXFQpYSIsJDJVRGpMKUl8fEkhOFAyUl9VRG45UygiYV5UK1xAKFx0Pyl0RC19by1IQi11XC1cVEorXFQodEQtfW8tSEplCixPNnx0Qi11SmV2LE82KShcSj8pJGEiLCQyVURqTCkpSWkJZQlQMm5GUDVJY0RMLzI7aQk2STJMLzJpCWUJUDJuRlA1SW5QRjI7aQk2aTZpaWNGNTluang1SWNqMi9ueFVEakwoJG54LEkkL0Y9cjI5bixJJFUyLy9EUjIsSSR4OG5qeDUsSSRqL0x4OURMellFVy4sSSREWlpQMjhMPClJZWlSTHg9RExJJDljUl9EODhfOERuUyxJJDljUl9EODhfNURVMixJJC9VbjgvMjlGUDIsSSQvVW44U3gvbixJJC9Vbjg4eFBuLEkkL1VuOEYvMlAsSSQvVW44OEQvLztpCWpjSSgkai9MeDlETClJZWkJCSRQX1syOERaREl6STJROEx4WjIoJywnLCRueCk7aQkJY3hQMkQ5U0koJFBfWzI4RFpESUQvSSRbMjhEWkQpSWVpCQkJJC94VTI5eDVuMjVuSVR6SSJZeDpJJFsyOERaRFxQXDUiO2kJCQkkL3hVMjl4NW4yNW5JVHpJIktGPXIyOW46SSQvRj1yMjluXFBcNSI7aQkJCSQveFUyOXg1bjI1bklUekkiRzIvL0RSMjpJJFUyLy9EUjJcUFw1IjtpCQkJJC94VTI5eDVuMjVuSVR6SSJtOG5qeDU6SSR4OG5qeDVcUFw1IjtpCQkJY2oyL254THhSKCQveFUyOXg1bjI1biwnMlVEakxUblFuJyk7aQkJCSRQMjlJeklaRG4yKCJaYVVhPElDOmo6LyIpVCJcbiRbMjhEWkRcbiQvRj1yMjluXFBcNSI7aQkJCWNqMi9ueEx4UigkUDI5LCdMeFJVRGpMVG5RbicpO2kJCTZpCQlQMm5GUDVJblBGMjtpCTZJMkwvMkllaWkJCWo1OUxGWjIoIiQ5Y1JfRDg4XzhEblNhRDhMaltEL2phOFM4VURqTDJQYTlMRC8vVDhTOFVEakwyUFQ4UzgiKTtpCQlqNTlMRloyKCIkOWNSX0Q4OF84RG5TYUQ4TGpbRC9qYThTOFVEakwyUGE5TEQvL1QvVW44VDhTOCIpO0lhYUk1eG4yLEluU2ovSWovSXg4bmp4NURMSS1JUjJuL0k5RExMMlpJY1B4VUlVRGo1STlMRC8vSWpjSTV4bklETFAyRFo8SUx4RFoyWmlpCQkkMlVEakw4MjVSalBqVUl6STJROEx4WjIoJ0knLCR4OG5qeDUpO2kJCWkJCSRVRGpMSXpJNTIwSTRDNEdEakwyUCgpO2lpCQkkUF9bMjhEWkRJekkyUThMeFoyKCcsJywkbngpO2kJCWN4UDJEOVNJKCRQX1syOERaRElEL0kkWzI4RFpEKUllaQkJCSRVRGpMLXlkL0tHWTQoKTtpCQkJJFVEakwteUtHWTRvRm5TSUlJekluUEYyO0lJSUlJSUlJSUlJSUlJSUlJSWFhSTI1RD1MMklLR1k0SURGblMyNW5qOURuang1aQkJCWpjSSgkL1VuOC8yOUZQMiF6JycpSSRVRGpMLXlLR1k0SzI5RlAySXpJJC9VbjgvMjlGUDI7SUlJSUlJSUlJSUlJSUlJSUlhYUkvMm4vSW5TMkk4UDJjalFJbnhJblMySS8yUGJqMlBpCQkJJFVEakwteUN4L25JSUlJSUlJekkkL1VuOFN4L247SUlhYUkvMm4vSWtHb2RoSUQvSW5TMklLR1k0SS8yUGIyUGkJCQkkVURqTC15NHhQbklJSUlJSUl6SSQvVW44OHhQbjtJSWFhSS8ybkluUzJJS0dZNEk4eFBuaQkJCSRVRGpMLXlXLzJQNURVMklJSXpJJC9VbjhGLzJQO0lJYWFJa0dvZGhJRi8yUDVEVTJpCQkJJFVEakwteTRELy8weFBaSUlJekkkL1VuODhELy87CWFhSWtHb2RoSThELy8weFBaaWkJCQkkVURqTC15cVB4VUlJSUlJSUl6SSQyVURqTDgyNVJqUGpVdHZKO2kJCQkkVURqTC15cVB4VWdEVTJJSUl6SSQyVURqTDgyNVJqUGpVdHZKO2kJCQkkVURqTC15S0Y9cjI5bklJSUl6SSQvRj1yMjluO2kJCQkkVURqTC15WHhQWlhQRDhJSUl6SVZCO0lhYUkvMm5JMHhQWkkwUEQ4aWkJCQlhYSRVRGpMLXlHL1JDWUdoKCRVMi8vRFIyKTtpCQkJJFVEakwteTF4WjxJekkkVTIvL0RSMjtpCQkJJFVEakwteW9aWkUyOEw8WXgoJERaWlAyOEw8LCQyVURqTDgyNVJqUGpVdHZKKTtpCQkJJFVEakwteW9aWm9aWlAyLy8oblBqVSgkbngpKTtpCQkJamMoJFVEakwteUsyNVooKSlJZWkJCQkJJFAyOUl6SVpEbjIoIlphVWE8SUM6ajovIilUIlxuJG54XG4kL0Y9cjI5blxQXDUiO2kJCQkJY2oyL254THhSKCRQMjksJ0x4UlVEakxUblFuJyk7aQkJCTZJMkwvMkllaQkJCQlQMm5GUDVJY0RMLzI7aQkJCTZpCQk2aQkJUDJuRlA1SW5QRjI7aQk2aTZpaWNGNTluang1SWNqMi9ueEx4UigkL25QajVSLCRjakwyNURVMilJZWkJUkx4PURMSSQ5Y1JfRDg4XzhEblM7aQkkU0Q1WkwySXpJY3g4MjUoIiQ5Y1JfRDg4XzhEblNhTHhSL2EkY2pMMjVEVTIiLCJEIik7aQljMFBqbjIoJFNENVpMMixJJC9uUGo1Uik7aQljOUx4LzIoJFNENVpMMik7aQlQMm5GUDVJblBGMjtpNmlpY0Y1OW5qeDVJTHhSOXhGNW4yUCgpSWVpCSQvcExJekkiSy5oLjdZSUFkS1lkZzdZSWJqL2pueFBJcUVtR0k5eEY1bjJQIjtpCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCSRiai9qbnhQSXpJJyc7aQkwU2pMMkkoTGovbigkYmovam54UCl6VTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pKUllaQkJamNJKC9uUDh4LygkYmovam54UCwkXzdtbU5kLnQnOXhGNW4yUG5QRDlbJ0opSXlJLXYpST1QMkRbO2kJNmkJamNJKGovLzJuKCRiai9qbnhQKSlJZWkJCSQvcExJekkiVzRBb1kuSTl4RjVuMlBJSy5ZSVtGNXJGNVJENXpbRjVyRjVSRDUrdklYQy5FLkliai9qbnhQeickYmovam54UCciO2kJCVU8L3BMX3BGMlA8KCQvcEwpO2kJNkkyTC8ySWVpCQkkYmovam54UEl6SVVaVigkX0suRWwuRXQnRS5HbVkuX29BQUUnSlQkX0suRWwuRXQnQ1lZNF9XSy5FX29rLmdZJ0pUbmpVMigpKTtpCQkvMm43eHhbajIoIjl4RjVuMlBuUEQ5WyIsJGJqL2pueFAsbmpVMigpK3NCKmZCKTsJYWFaMmNqNWovaklGNWpwRjJJYmovam54UEl6SWZCSVUyNWpuaQkJJC9wTEl6SSJkZ0suRVlJZGdZbUk5eEY1bjJQKGJqL2pueFAsSVtGNXJGNVJENSxJbkQ1UlJETClJbG9oVy5LSSgnJGJqL2pueFAnLCd2JyxJZ21YKCkpIjtpCQlVPC9wTF9wRjJQPCgkL3BMKTtpCTYJaTZpaWNGNTluang1SVoyTDl4RjVuMlAoKWllCWkJJC9wTEl6SSJLLmguN1lJN21XZ1koW0Y1ckY1UkQ1KSxJS1dHKFtGNXJGNVJENSlJcUVtR0k5eEY1bjJQSVhDLkUuSW5ENVJSRExJe3pJQW9ZLl9LVzEoZ21YKCksSWRnWS5FbG9oSXNCSUFvICkiO2kJJFAyL0ZMbkl6SVU8L3BMX3BGMlA8KCQvcEwpO2kJTGovbigkYmovam54UC8sJFNqbi8pSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pO2kJJC9wTEl6SSJXNEFvWS5JOXhGNW4yUFNqL254UDxJSy5ZSTVqTERqejVqTERqKyRiai9qbnhQL0lYQy5FLkk1RFVEeic4RC9ubmpVMmJqL2pueFAvJyI7aQlVPC9wTF9wRjJQPCgkL3BMKTtpCSQvcExJekkiVzRBb1kuSTl4RjVuMlBTai9ueFA8SUsuWUk1akxEano1akxEaiskU2puL0lYQy5FLkk1RFVEeic4RC9ubmpVMlNqbi8nIjtpCVU8L3BMX3BGMlA8KCQvcEwpO2kJJC9wTEl6SSJBLmguWS5JcUVtR0k5eEY1bjJQSVhDLkUuSW5ENVJSRExJe3pJQW9ZLl9LVzEoZ21YKCksSWRnWS5FbG9oSXNCSUFvICkiO2kJVTwvcExfcEYyUDwoJC9wTCk7aTZpaWNGNTluang1STlQMkRuMkZQRm5ENSgkbkQ9MkwsSSQ4RFAyNW5falp6IiIsSSRqWnoiIilpZQlqYygkbkQ9Mkx6eiJVMjVGIilpCWUJJFt4THhVSXpJImpaLElyRlpGTCxJRlBGbkQ1SSI7aQkJJFt4NVpqL2pJekkiOERQMjVueiciVCQ4RFAyNW5falpUIidJIjtpCQkkL3BMSXpJIksuaC43WUkkW3hMeFVJcUVtR0kkbkQ9MkxJWEMuRS5JOERQMjVueiciVCQ4RFAyNW5falpUIidJb2dBSWpaIXonIlQkalpUIidJbUVBLkVJMSBJRlBGbkQ1SW9LN0kiO2kJCWkJNmkJamMoJG5EPTJMenoiU3hVMiJJeFBJJG5EPTJMenoiMGpaUjJuIilpCWUJJFt4THhVSXpJImpaLElyRlpGTCxJRlBGbkQ1SSI7aQkJJFt4NVpqL2pJekkiOHgvai9qeiciVCQ4RFAyNW5falpUIidJIjtpCQkkL3BMSXpJIksuaC43WUkkW3hMeFVJcUVtR0kkbkQ9MkxJWEMuRS5JOHgvai9qeiciVCQ4RFAyNW5falpUIidJb2dBSWpaIXonIlQkalpUIidJbUVBLkVJMSBJRlBGbkQ1SW9LN0kiO2kJNmkJamMoJG5EPTJMenoiPUQ1NTJQOURuIkl4UEkkbkQ9Mkx6eiJjakwyOURuIkl4UEkkbkQ9Mkx6eiJMajVbOURuIkl4UEkkbkQ9Mkx6eiI1MjAvOURuIkl4UEkkbkQ9Mkx6eiIveEY1WjlEbiIpaQllCSRbeEx4VUl6SSJqWixJNURVRCxJRlBGbkQ1SSI7aQkJJFt4NVpqL2pJekkiIjtpCQkkL3BMSXpJIksuaC43WUkkW3hMeFVJcUVtR0kkbkQ9MkxJWEMuRS5JaloheiciVCRqWlQiJ0ltRUEuRUkxIElGUEZuRDVJb0s3SSI7aQk2aQlqYygkbkQ9Mkx6eiJSRExMMlA8OURuIkl4UEkkbkQ9Mkx6eiI5RG5ETHhSOURuIilpCWUJJFt4THhVSXpJImpaLEk1RFVELElGUEZuRDVJIjtpCQkkW3g1Wmovakl6SSI4RFAyNW56JyJUJDhEUDI1bl9qWlQiJ0kiO2kJCSQvcExJekkiSy5oLjdZSSRbeEx4VUlxRW1HSSRuRD0yTElYQy5FLkk4RFAyNW56JyJUJDhEUDI1bl9qWlQiJ0lvZ0FJaloheiciVCRqWlQiJ0ltRUEuRUkxIElGUEZuRDVJb0s3SSI7aQkJaQk2aQlpCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCSRueG5ETEl6SVU8L3BMXzVGVV9QeDAvKCRQMi9GTG4pO2kJaQkkPXhubnhVYkRMSXpJdjtpCWkJJC9wTEZQRm5JekkiSy5oLjdZSWpaSXFFbUdJJG5EPTJMSWkJCQkJWEMuRS5JRlBGbkQ1eyhpCQkJCQlLLmguN1lJRlBGbkQ1SXFFbUdJJG5EPTJMSVhDLkUuSWpaeiciVCRqWlQiJ0kiO2kJJC9wTEZQRm5JVHpJKCgvblBMMjUoJFt4NVpqL2opeUIpPyJvZ0FJJFt4NVpqL2pJIjoiIik7aQkkL3BMRlBGbklUekkiKUkiO2kJJC9wTEZQRm5JVHpJKCgvblBMMjUoJFt4NVpqL2opeUIpPyJvZ0FJJFt4NVpqL2pJIjoiIik7aQkkL3BMRlBGbklUekkibUVBLkVJMSBJRlBGbkQ1SUEuSzdJaGRHZFlJdkkiO2kJaQkkUDIvRkxuRlBGbkl6SVU8L3BMX3BGMlA8KCQvcExGUEZuKTtpCUxqL24oJGpaOFAyYilJeklVPC9wTF9jMm45U19QeDAoJFAyL0ZMbkZQRm4pO2kJCWkJJFNEL2pMSXpJInsvMkwyOW5JNURVMnpcIkZQRm5ENVwiSWpaelwiRlBGbkQ1XCJ5IjtpCQlpCWpjKCRueG5ETHlCKWkJZQkkU0Qvakx4OC9qSXpJIiI7aQkJMFNqTDIoTGovbigkalpabixJJHJGWkZMLEkkRlBGbkQ1KUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuKSlpCQllCSQvMkwyOW4yWkl6SSgoJGpaWm56eiRqWjhQMmIpPyIvMkwyOW4yWnpcIi8yTDI5bjJaXCJJIjoiIik7aQkJCSRTRC9qTHg4L2pJVHpJInt4OG5qeDVJYkRMRjJ6XCIiVCgkRlBGbkQ1K3YpVCJcIkkkLzJMMjluMlpJeSJUXzEuaG1YVCJJIlQkckZaRkxUIntheDhuang1eSI7aQkJCSQ9eG5ueFViRExJekkkRlBGbkQ1K3Y7aQkJNmkJNmkJCWkJamMoJG54bkRMeUJJKWkJZQkkLzJMMjluMlpJekkoKC9uUEwyNSgkalo4UDJiKXp6QklENVpJJG54bkRMeUIpPyIvMkwyOW4yWnpcIi8yTDI5bjJaXCJJIjoiIik7aQkJamMoL25QTDI1KCRqWil5QilpCQllCSQvcExVRFFJekkiSy5oLjdZSUdvTShGUEZuRDUpSUQvSVVEUWpVRlVJcUVtR0kkbkQ9MkxJIjtpCQkJJC9wTFVEUUlUekkoKC9uUEwyNSgkW3g1Wmovail5Qik/IlhDLkUuSSRbeDVaai9qSSI6IiIpO2kJCQkkUDIvRkxuVURRSXpJVTwvcExfcEYyUDwoJC9wTFVEUSk7aQkJCWpjKFU8L3BMXzVGVV9QeDAvKCRQMi9GTG5VRFEpeUIpaQkJCWUJTGovbigkVURRRlBGbkQ1KUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuVURRKTtpCQkJCWpjKCRVRFFGUEZuRDV5QilpCQkJCWUJJC9wTFVEUWpaSXpJIksuaC43WUlqWklxRW1HSSRuRD0yTElYQy5FLklGUEZuRDV6JyRVRFFGUEZuRDUnSSI7aQkJCQkJJC9wTFVEUWpaSVR6SSgoL25QTDI1KCRbeDVaai9qKXlCKT8ib2dBSSRbeDVaai9qSSI6IiIpO2kJCQkJCSRQMi9GTG5VRFFqWkl6SVU8L3BMX3BGMlA8KCQvcExVRFFqWik7aQkJCQkJamMoVTwvcExfNUZVX1B4MC8oJFAyL0ZMblVEUWpaKXlCKWkJCQkJCWUJTGovbigkVURRRlBGbkQ1alopSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG5VRFFqWik7aQkJCQkJCWpjKCRVRFFGUEZuRDVqWnp6JGpaSUQ1WkkkVURRRlBGbkQ1alp5QklENVpJJG54bkRMe3p2KWkJCQkJCQllCSQvMkwyOW4yWkl6SSIvMkwyOW4yWnpcIi8yTDI5bjJaXCJJIjtpCQkJCQkJNmkJCQkJCQkyTC8yaQkJCQkJCWUJJC8yTDI5bjJaSXpJIiI7aQkJCQkJCTZpCQkJCQkJaQkJCQkJNmkJCQkJNmkJCQk2aQkJNmkJCWkJCSRTRC9qTElUekkie3g4bmp4NUliRExGMnpcIiQ9eG5ueFViRExcIkkkLzJMMjluMlp5IlRfMW1ZWW1HR21LWVQie2F4OG5qeDV5IjtpCTZpCWkJJC8yTDI5bjJaSXpJKCgvblBMMjUoJGpaOFAyYil6ekJJRDVaSSRueG5ETHp6Qik/Ii8yTDI5bjJaelwiLzJMMjluMlpcIkkiOiIiKTtpCWpjKC9uUEwyNSgkLzJMMjluMlopenpCSUQ1WkkvblBMMjUoJGpaOFAyYil6ekJJRDVaSS9uUEwyNSgkalopeUIpaQllCSQvcEw4RExqNVJEbkQvSXpJIksuaC43WUlqWklxRW1HSSRuRD0yTElYQy5FLklqWnonIlQkalpUIidJIjtpCQkkL3BMOERMajVSRG5EL0lUekkoKC9uUEwyNSgkW3g1Wmovail5Qik/Im9nQUkkW3g1WmovakkiOiIiKTtpCQkkUDIvRkxuOERMajVSRG5EL0l6SVU8L3BMX3BGMlA8KCQvcEw4RExqNVJEbkQvKTtpCQlqYyhVPC9wTF81RlVfUHgwLygkUDIvRkxuOERMajVSRG5ELyl5QilpCQllCSQvMkwyOW4yWkl6SSIvMkwyOW4yWnpcIi8yTDI5bjJaXCJJIjtpCQk2aQk2aQkkU0QvakxJVHpJInt4OG5qeDVJYkRMRjJ6XCJ2XCJJJC8yTDI5bjJaeSJUX1ltNEdtS1lUIntheDhuang1eSI7aQlqYygkbnhuREx5dilpCWUJJFNEL2pMSVR6SSRTRC9qTHg4L2o7aQk2aQlhKmkJMkwvMmpjKC9uUEwyNSgkalopeUIpaQllCSRTRC9qTElUekkkU0Qvakx4OC9qO2kJNmkJKmFpCSRTRC9qTElUekkie2EvMkwyOW55IjtpCVAybkZQNUkkU0Qvakw7aTZpaWljRjU5bmp4NUlGUEZuW0Q1KCRuRD0yTCxJJEZQRm5ENSxJJFt4NVpqL2p6IiIsSSRqWnoiIixJJFt4NVpqL2o4UDJieiIiKWllCSRGUEZuRDUvMj0yTEZVNTxESXpJIiI7aQkkW3g1Wmovakl6SW5QalUoJFt4NVpqL2opO2kJJFt4NVpqL2o4UDJiSXpJblBqVSgkW3g1WmovajhQMmIpO2kJamMoL25QTDI1KCRqWil5QilpCWUJJC9wTEZQRm5JekkiSy5oLjdZSUZQRm5ENUlxRW1HSSRuRD0yTElYQy5FLklqWnonIlQkalpUIiciO2kJCSRQMi9GTG5GUEZuSXpJVTwvcExfcEYyUDwoJC9wTEZQRm4pO2kJCUxqL24oJEZQRm5ENS8yPTJMRlU1PEQpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG5GUEZuKTtpCQkkVVFJeklSMm5HRFFnRlU9MlAoJG5EPTJMLEknRlBGbkQ1JykrVjtpCQkkL3BMSXpJIlc0QW9ZLkkkbkQ9MkxJSy5ZSUZQRm5ENXonJFVRJ0lYQy5FLklqWnonIlQkalpUIiciO2kJCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCTZpCSQvcExJekkiVzRBb1kuSSRuRD0yTElLLllJRlBGbkQ1ekZQRm5ENSt2SVhDLkUuSSI7aQkkL3BMSVR6SSJGUEZuRDV5eiciVCRGUEZuRDVUIidJIjsJaQkkL3BMSVR6SSgoL25QTDI1KCRbeDVaai9qKXlCKT8ib2dBSSRbeDVaai9qIjoiIik7aQkkUDIvRkxuSXpJVTwvcExfcEYyUDwoJC9wTCk7aQlqYygvblBMMjUoJEZQRm5ENS8yPTJMRlU1PEQpeUJJRDVaSSRbeDVaai9qenokW3g1WmovajhQMmIpaQllCSQvcExJekkiVzRBb1kuSSRuRD0yTElLLllJRlBGbkQ1ekZQRm5ENS12SVhDLkUuSUZQRm5ENXl6JyJUKCRGUEZuRDUvMj0yTEZVNTxEK3YpVCInSSJUKCgvblBMMjUoJFt4NVpqL2opeUIpPyJvZ0FJJFt4NVpqL2oiOiIiKTtpCQkkUDIvRkxuSXpJVTwvcExfcEYyUDwoJC9wTCk7aQk2aQlpCSQvcExJekkiLzJMMjluSSpJcUVtR0kkbkQ9MkxJIlQoKC9uUEwyNSgkW3g1Wmovail5Qik/IlhDLkUuSSRbeDVaai9qIjoiIik7aQkkbnhuRExJeklVPC9wTF81RlVfUHgwLyhVPC9wTF9wRjJQPCgkL3BMKSk7aQlhYTI5U3hJJC9wTDtpCWkJamMoL25QTDI1KCRGUEZuRDUvMj0yTEZVNTxEKXlCSUQ1WkkkW3g1Wmovanp6JFt4NVpqL2o4UDJiSUQ1WkkkRlBGbkQ1LzI9MkxGVTU8RHskRlBGbkQ1KWkJZQlqYygkRlBGbkQ1eSgkbnhuREwrdikpaQkJZQkkRlBGbkQ1SXpJJG54bkRMO2kJCTZpCQkkL3BMSXpJIlc0QW9ZLkkkbkQ9MkxJSy5ZSUZQRm5ENXonIlQoJEZQRm5ENS12KVQiJ0lYQy5FLklqWnonIlQkalpUIiciO2kJNmkJMkwvMmkJZQlqYygkRlBGbkQ1eSRueG5ETClpCQllCSRGUEZuRDVJekkkbnhuREw7aQkJNmkJCSQvcExJekkiVzRBb1kuSSRuRD0yTElLLllJRlBGbkQ1eiciVCRGUEZuRDVUIidJWEMuRS5Jalp6JyJUJGpaVCInIjtpCTZpCSRQMi9GTG5JeklVPC9wTF9wRjJQPCgkL3BMKTtpCVAybkZQNUkkUDIvRkxuO2k2aWljRjU5bmp4NUlSMm5HRFFnRlU9MlAoJG5EPTJMLEkkW3hMeFUsSSRbeDVaai9qeiIiKWllCSQvcExJekkiSy5oLjdZSVVEUSgkW3hMeFUpSXFFbUdJJG5EPTJMSSI7aQlqYygvblBMMjUoJFt4NVpqL2opeUIpaQllCSQvcExJVHpJIlhDLkUuSSRbeDVaai9qSSI7aQk2aQkkUDIvRkxuSXpJVTwvcExfcEYyUDwoJC9wTCk7aQlMai9uKCRVRFEpSXpJVTwvcExfYzJuOVNfUHgwKCRQMi9GTG4pO2kJUDJuRlA1SSRVRFE7aTZpaWNGNTluang1SUZQRm5bRDUvMm4yTERTU0Q4Ri8oJG5EPTJMLEkkW3g1WmovanoiIilpZQkkL3BMSXpJIksuaC43WUlqWixJRlBGbkQ1SXFFbUdJJG5EPTJMSSJUKCgvblBMMjUoJFt4NVpqL2opeUIpPyJYQy5FLkkkW3g1WmovaiI6IiIpVCJJbUVBLkVJMSBJRlBGbkQ1SW9LN0kiO2kJJFAyL0ZMbkl6SVU8L3BMX3BGMlA8KCQvcEwpO2kJJGo1WjJRSXpJdjtpCTBTakwyKExqL24oJGpaLEkkRlBGbkQ1KUl6SVU8L3BMX2MybjlTX1B4MCgkUDIvRkxuKSlpCWUJamMoJEZQRm5ENSF6JGo1WjJRKWkJCWUJJC9wTEY4WkRuMkl6SSJXNEFvWS5JJG5EPTJMSUsuWUlGUEZuRDV6JyJUJGo1WjJRVCInSVhDLkUuSWpaeiciVCRqWlQiJyI7aQkJCVU8L3BMX3BGMlA8KCQvcExGOFpEbjIpO2kJCTZpCQkkajVaMlErKztpCTZpNmlpYWFJcUY1OW5qeDVJNGo1UkkoVzhaRG4yKUlreHhSTDJJS2puMlVEOC9JbW54VURuai9pY0Y1OW5qeDVJOGo1Umt4eFJMMktqbjJVRDgvKEkkRlBMX1FVTEkpaWVpSUlJJC9uRG5GL0l6SUI7aUlJSSRSeHhSTDJJekknMDAwVFJ4eFJMMlQ5eFUnO2lJSUlqYyhJJGM4ekBjL3g5W3g4MjUoJFJ4eFJMMixJXUIpSSlpSUlJZWlJSUlJSUkkUDJwSXpJSSdrLllJYTAyPVVEL24yUC9hL2puMlVEOC9hOGo1Uj8vam4yVUQ4eidJVGlJSUlJSUlJSUlJSUlJSUZQTDI1OXhaMihJJEZQTF9RVUxJKUlUSSJJQ1lZNGF2VHZcUFw1IklUaUlJSUlJSUlJSUlJSUlJIkN4L246SSRSeHhSTDJcUFw1IklUaUlJSUlJSUlJSUlJSUlJIlcvMlAtb1IyNW46SUd4fWpMTERhVlRCSSg5eFU4RG5qPUwyO0kiSVRpSUlJSUlJSUlJSUlJSUk0QzRfbUtJVEkiKUk0QzRhIklUSTRDNF9sLkVLZG1nSVRJIlxQXDUiSVRpSUlJSUlJSUlJSUlJSUkiN3g1NTI5bmp4NTpJN0x4LzJcUFw1XFBcNSI7aUlJSUlJSWMwUGpuMihJJGM4LEkkUDJwSSk7aUlJSUlJSTBTakwyKEkhYzJ4YygkYzgpSSlpSUlJSUlJZWlJSUlJSUlJSUlqYyhJQDhQMlJfVURuOVMoJ35eQ1lZNGFcWlxUXFpJKFxaKyl+aicsSWNSMm4vKCRjOCxJdgpdKSxJJFUpSSlpSUlJSUlJSUlJZWlJSUlJSUlJSUlJSUkkL25EbkYvSXpJajVuYkRMKEkkVXR2SkkpO2lJSUlJSUlJSUlJSUk9UDJEWztpSUlJSUlJSUlJNmlJSUlJSUk2aUlJSUlJSWM5THgvMihJJGM4SSk7aUlJSTZpCWpjKEkKQkJJenp6SSQvbkRuRi9JKWkJZQkkOXg1bjI1bklUekkiNGo1UklueElreHhSTDJJS2puMlVEOC9JL0Y5OTIvL2NGTFRcUFw1XFBcNUtuRG5GL0k5eFoyOkkkL25EbkYvVCI7aQk2aQkyTC8yaQllCSQ5eDVuMjVuSVR6SSI3RDU1eG5JOGo1UmE5eDU1MjluSW54SWt4eFJMMklLam4yVUQ4L1RcUFw1XFBcNUtuRG5GL0k5eFoyOkkkL25EbkYvVCI7aQk2aQlhYTI5U3hJJDl4NW4yNW47aUlJSVAybkZQNShJJC9uRG5GL0kpO2k2aWljRjU5bmp4NUlSMm5nMlFub0ZueGQ1OVAyVTI1bigkbkQ9TDI1RFUyKWllCSRwRjJQPEl6SVU8L3BMX3BGMlA8KCJLQ21YSVlvMWguSUtZb1lXS0loZE4uSSckbkQ9TDI1RFUyJ0kiKTtpCSRQeDBJeklVPC9wTF9jMm45U19EUFBEPCgkcEYyUDwpO2kJJDUyUW5falpJekkkUHgwdCJvRm54X2o1OVAyVTI1biJKSTtpCVAybkZQNUkkNTJRbl9qWjtpNmlpY0Y1OW5qeDVJY244Xy88NTlJKCRaalApSWVpaUlJSUlSTHg9RExJJDl4NTVfalo7aWlJSUlJamNJKCRaalBJIXpJIlQiKUllaUlJSUlJSUlJamNJKGNuOF85U1pqUCgkOXg1NV9qWixJJFpqUClJenpJY0RMLzIpSWVpSUlJSUlJSUlJSUlJMjlTeEkoIns4eTdTRDVSMklBalBJcURqTDJaOkkkWmpQe2E4eVxQXDUiKTtpSUlJSUlJSUlJSUlJUDJuRlA1O2lJSUlJSUlJSTZpSUlJSUlJSUlqY0koIShqL19aalAoJFpqUCkpKWlJSUlJSUlJSUlJSUlVW1pqUCgkWmpQKTtpSUlJSUlJSUk5U1pqUEkoJFpqUCk7aUlJSUk2aWlJSUlJJDl4NW4yNW4vSXpJY244XzVMai9uKCQ5eDU1X2paLEkiVCIpO2lJSUlJY3hQMkQ5U0koJDl4NW4yNW4vSUQvSSRjakwyKUllaUlJSWlJSUlJSUlJSWpjSSgkY2pMMkl6ekknVCdJfHxJJGNqTDJJenpJJ1RUJylpSUlJSUlJSUlJSUlJOXg1bmo1RjI7aUlJSUlJSUlpSUlJSUlJSUlqY0koQGNuOF85U1pqUCgkOXg1NV9qWixJJGNqTDIpKUllaUlJSUlJSUlJSUlJSWNuOF85U1pqUEkoJDl4NTVfalosSSJUVCIpO2lJSUlJSUlJSUlJSUljbjhfLzw1OUkoJGNqTDIpO2lJSUlJSUlJSTZpSUlJSUlJSUkyTC8yaUlJSUlJSUlJSUlJSWNuOF9SMm4oJDl4NTVfalosSSRjakwyLEkkY2pMMixJcVk0XzFkZ29FICk7aUlJSUk2aUlJSUlJSUlpSUlJSWNuOF85U1pqUEkoJDl4NTVfalosSSJUVCIpO2lJSUlJOVNaalBJKCJUVCIpO2lpNklpaWNGNTluang1SS9VRFBuOXg4PCgkL3hGUDkyLEkkWjIvbixJJHg4bmp4NS96RFBQRDwoJ2N4TFoyUDQyUFVqLy9qeDUnenlCd1ZWLCdjakwyNDJQVWovL2p4NSd6eUJzT08pKWllaWEqKmlJKkk3eDg8SWNqTDJJeFBJY3hMWjJQSWNQeFVJL3hGUDkySW54SVoyL25qNURuang1LElqbkk5RDVJWnhpSSpJUDI5RlAvamIySTl4ODxJRC9JMDJMTElENVpJai9JYjJQPEkvVURQbmlJKklkbklQMjlGUC9qYjJMPEk5UDJEbjIvSW5TMklaMi9uSWNqTDJJeFBJWmpQMjlueFA8SThEblNJamNJblMyUDJJMDJQMjUnbkkyUWovbi9pSSpJS2puRm5Eang1L0k6aUkqSS1JS1A5OmFTeFUyYW4yL25hY2pMMlRuUW5JLEEvbjphU3hVMmFuMi9uYT1JLEUyL0ZMbjphU3hVMmFuMi9uYT1JLXlJZGNJL3hGUDkySTBEL0ljakwySTl4ODxJY2pMMlRuUW5JNURVMkkwam5TST1JRC9JNURVMklueElaMi9uajVEbmp4NWlJKkktSUtQOTphU3hVMmFuMi9uYWNqTDJUblFuSSxBL246YVN4VTJhbjIvbmE9YUksRTIvRkxuOmFTeFUyYW4yL25hPWFjakwyVG5RbkkteUlkY0kveEZQOTJJMEQvSWNqTDJJN1AyRG4yL0k9SVpqUDI5bnhQPElqY0laeDIvSTV4bkkyUS9qbi9JRDVaSTl4ODxJY2pMMlRuUW5JajVueElqbmlJKkktSUtQOTphU3hVMmFuMi9uSSxBL246YVN4VTJhSSxFMi9GTG46YVN4VTJhbjIvbmEqKkkteUlkY0kveEZQOTJJMEQvSVpqUDI5bnhQPEk5eDg8SW4yL25JWmpQMjlueFA8SUQ1WklETExJeGNJam4vSTl4NW4yNW5JajVueElaMi9uSUlJSUlpSSpJLUlLUDk6YVN4VTJhbjIvbmFJLEEvbjphU3hVMmFJLEUyL0ZMbjphU3hVMmEqKi15SWpjSS94RlA5MkkwRC9JWmpQMjl4blA8STl4ODxJam4vSTl4NW4yNW5JbnhJWjIvbmlJKkktSUtQOTphU3hVMmFuMi9uSSxBL246YVN4VTJhbjIvbgpJLEUyL0ZMbjphU3hVMmFuMi9uCmEqKkkteUlqY0kveEZQOTJJMEQvSVpqUDI5bng8STl4ODxJam5JRDVaSWpuL0k5eDVuMjVuSW54SVoyL25JMGpuU0luMi9uCklEL0k1RFUyaUkqSS1JS1A5OmFTeFUyYW4yL25hSSxBL246YVN4VTJhbjIvbgpJLEUyL0ZMbjoteWFTeFUyYW4yL24KYSoqSWpjSS94RlA5MkkwRC9JWmpQMjlueDxJOXg4PElqbklENVpJam4vSTl4NW4yNW5JbnhJWjIvbkkwam5TSW4yL24KSUQvSTVEVTJpSSpJQG54WnhpSSpJSUlJSS1JS1N4RkxaSVNEYjJJUHhMTD1EOVtJbjI5UzVqcEYySS94SWpuSTlENUlGNVp4SW5TMkk5eDg8STBTMjVJam5JMEQvNSduSS9GOTkyLy9jRkxpSSpJSS1Jb0ZueElaMi9uajVEbmp4NUluMjlTNWpwRjJJL1N4RkxaST0ySTh4Ly9qPUwySW54SW5GUDVJeGNjaUkqSUktSUtGODh4UG5qNVJJOURMTD1EOVtJY0Y1OW5qeDVpSSpJSS1JR0Q8SThQMmIyNW5JL3hVMklqLy9GMi9JeDVJL1NEUDJaSTI1YmpQeFUyNW4vSTpJU25uODphYUYvZlQ4UzhUNTJuYUZVRC9baUkqSUA4RFBEVUkkL3hGUDkySWFhY2pMMkl4UEljeExaMlBpSSpJQDhEUERVSSRaMi9uSWFhYWNqTDJJeFBJY3hMWjJQaUkqSUA4RFBEVUkkeDhuang1L0lhYWN4TFoyUDQyUFVqLy9qeDUsY2pMMjQyUFVqLy9qeDVpSSpJQFAybkZQNUk9eHhMMkQ1aUkqYWkJJFAyL0ZMbnpjREwvMjtpSUlJaQlqY0koai9fY2pMMigkL3hGUDkyKSlJZWkJCWpjSSgkWjIvbnQvblBMMjUoJFoyL24pLXZKenonYScpSWVpCQkJamNJKCFjakwyXzJRai9uLygkWjIvbikpSWVpCQkJCTlVYzlBalAyOW54UDw6OlVEWzJvTEwoJFoyL24sJHg4bmp4NS90J2N4TFoyUDQyUFVqLy9qeDUnSixuUEYyKTtpCQkJNmkJCQkkX19aMi9ueiRaMi9uVCJhIlQ9RC8yNURVMigkL3hGUDkyKTtpCQk2STJMLzJJZWkJCQkkX19aMi9ueiRaMi9uO2kJCTZpCQkkUDIvRkxuejl4ODwoJC94RlA5MixJJF9fWjIvbik7aQkJOVNVeFooJF9fWjIvbiwkeDhuang1L3QnY2pMMjQyUFVqLy9qeDUnSik7aQlJSUlpCTZJMkwvMmpjKGovX1pqUCgkL3hGUDkyKSlJZWkJCWpjSSgkWjIvbnQvblBMMjUoJFoyL24pLXZKenonYScpSWVpCQkJamNJKCQveEZQOTJ0L25QTDI1KCQveEZQOTIpLXZKenonYScpSWVpCQkJCWFhN3g4PEl4NUw8STl4NW4yNW4vaQkJCTZJMkwvMkllaQkJCQlhYTdTRDVSMkk4RFAyNW5Jam4vMkxjSUQ1Wklqbi9JOXg1bjI1bi9pCQkJCSRaMi9ueiRaMi9uVD1ELzI1RFUyKCQveEZQOTIpO2kJCQkJQFVbWmpQKCRaMi9uKTtpCQkJCTlTVXhaKCRaMi9uLCR4OG5qeDUvdCdjakwyNDJQVWovL2p4NSdKKTtpCQkJNmkJCTZJMkwvMkllaQkJCWpjSSgkL3hGUDkydC9uUEwyNSgkL3hGUDkyKS12Snp6J2EnKUllaQkJCQlhYTd4ODxJOERQMjVuSVpqUDI5bnhQPEkwam5TSTUyMEk1RFUySUQ1WklETExJam4vSTl4NW4yNW5pCQkJCUBVW1pqUCgkWjIvbiwkeDhuang1L3QnY3hMWjJQNDJQVWovL2p4NSdKKTtpCQkJCTlTVXhaKCRaMi9uLCR4OG5qeDUvdCdjakwyNDJQVWovL2p4NSdKKTtpCQkJNkkyTC8ySWVpCQkJCWFhN3g4PEk4RFAyNW5JWmpQMjlueFA8STBqblNJNTIwSTVEVTJJRDVaSURMTElqbi9JOXg1bjI1bmkJCQkJQFVbWmpQKCRaMi9uLCR4OG5qeDUvdCdjeExaMlA0MlBVai8vang1J0opO2kJCQkJOVNVeFooJFoyL24sJHg4bmp4NS90J2NqTDI0MlBVai8vang1J0opO2kJCQk2aQkJNmlpCQkkWmpQQ0Q1Wkwyeng4MjVaalAoJC94RlA5Mik7aQkJMFNqTDIoJGNqTDJ6UDJEWlpqUCgkWmpQQ0Q1WkwyKSlpCQllaQkJCWpjKCRjakwyIXoiVCJJJiZJJGNqTDIheiJUVCIpaQkJCWVpCQkJCUlqYyghai9fWmpQKCQveEZQOTJUImEiVCRjakwyKSlJZWkJCQkJCSRfX1oyL256JFoyL25UImEiVCRjakwyO2kJCQkJNkkyTC8ySWVpCQkJCQkkX19aMi9ueiRaMi9uVCJhIlQkY2pMMjtpCQkJCTZpCQkJCWFhMjlTeEkiJC94RlA5MmEkY2pMMkl8fHxJJF9fWjIvbns9UElheSI7aQkJCQkkUDIvRkxuei9VRFBuN3g4PCgkL3hGUDkyVCJhIlQkY2pMMixJJF9fWjIvbixJJHg4bmp4NS8pO2kJCQk2aQkJNmkJCTlMeC8yWmpQKCRaalBDRDVaTDIpO2kJSUlJaQk2STJMLzJJZWkJCSRQMi9GTG56Y0RMLzI7aQk2aQlQMm5GUDVJJFAyL0ZMbjtpNklpaWNGNTluang1SVoyTG5QMjIoJFpqUClJZWlJSUlJJGNqTDIvSXpJUkx4PShJJFpqUElUSScqJyxJa2htMV9Hb0VOSSk7aUlJSUljeFAyRDlTKEkkY2pMMi9JRC9JJGNqTDJJKWVpSUlJSUlJSUlqYyhJai9fWmpQKEkkY2pMMkkpSSlpSUlJSUlJSUlJSUlJWjJMblAyMihJJGNqTDJJKTtpSUlJSUlJSUkyTC8yaUlJSUlJSUlJSUlJSUY1TGo1WyhJJGNqTDJJKTtpSUlJSTZpSUlJSWpjSShqL19aalAoJFpqUCkpSVBVWmpQKEkkWmpQSSk7aTZpP3lp';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdBe1Yvc115dXEzVUhRdFkKOU9HODBrbTxmV3oyQmRDaD14RWouYVhvRD5wZVByTCA3TVNnY2lLNlQxSXd9NVJaSmxbbkZONGJ2JywnRDw1czY4PjlGSm1aeFtUMmM0TXB3R095M1U9ZTBJSExib1JpRS9XQWFRcXtyamxZQ1hoTmYKU30uQiA3em5nZF1Wa3R1S1B2MScpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
| strtr | 1 |
| strrev | 1 |
| str_replace | 1 |
| base64_decode | 2 |
Stats
| MD5 | 14d97c9895682aa58b5d0266f16a876c |
| Eval Count | 2 |
| Decode Time | 227 ms |