1598 lines
348 KiB
PHP
1598 lines
348 KiB
PHP
<?php
|
||
/** Adminer - Compact database management
|
||
* @link https://www.adminer.org/
|
||
* @author Jakub Vrana, https://www.vrana.cz/
|
||
* @copyright 2007 Jakub Vrana
|
||
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
||
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
|
||
* @version 5.0.6
|
||
*/namespace
|
||
Adminer;$ia="5.0.6";error_reporting(6135);set_error_handler(function($wc,$yc){return!!preg_match('~^(Trying to access array offset on( value of type)? null|Undefined (array key|property))~',$yc);},E_WARNING);$Sc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Sc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Ci=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Ci)$$X=$Ci;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
|
||
connection(){global$f;return$f;}function
|
||
adminer(){global$b;return$b;}function
|
||
driver(){global$l;return$l;}function
|
||
version(){global$ia;return$ia;}function
|
||
idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$ke=substr($v,-1);return
|
||
str_replace($ke.$ke,$ke,substr($v,1,-1));}function
|
||
q($P){global$f;return$f->quote($P);}function
|
||
escape_string($X){return
|
||
substr(q($X),1,-1);}function
|
||
number($X){return
|
||
preg_replace('~[^0-9]+~','',$X);}function
|
||
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
|
||
remove_slashes($og,$Sc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($y,$X)=each($og)){foreach($X
|
||
as$ce=>$W){unset($og[$y][$ce]);if(is_array($W)){$og[$y][stripslashes($ce)]=$W;$og[]=&$og[$y][stripslashes($ce)];}else$og[$y][stripslashes($ce)]=($Sc?$W:stripslashes($W));}}}}function
|
||
bracket_escape($v,$Ca=false){static$mi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
|
||
strtr($v,($Ca?array_flip($mi):$mi));}function
|
||
min_version($Ti,$ye="",$g=null){global$f;if(!$g)$g=$f;$gh=$g->server_info;if($ye&&preg_match('~([\d.]+)-MariaDB~',$gh,$A)){$gh=$A[1];$Ti=$ye;}return$Ti&&version_compare($gh,$Ti)>=0;}function
|
||
charset($f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
|
||
ini_bool($Od){$X=ini_get($Od);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
|
||
sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function
|
||
set_password($Si,$M,$V,$E){$_SESSION["pwds"][$Si][$M][$V]=($_COOKIE["adminer_key"]&&is_string($E)?array(encrypt_string($E,$_COOKIE["adminer_key"])):$E);}function
|
||
get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function
|
||
get_val($G,$n=0){global$f;return$f->result($G,$n);}function
|
||
get_vals($G,$d=0){global$f;$I=array();$H=$f->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$d];}return$I;}function
|
||
get_key_vals($G,$g=null,$jh=true){global$f;if(!is_object($g))$g=$f;$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($jh)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
|
||
get_rows($G,$g=null,$m="<p class='error'>"){global$f;$pb=(is_object($g)?$g:$f);$I=array();$H=$pb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!is_object($g)&&$m&&(defined('Adminer\PAGE_HEADER')||$m=="-- "))echo$m.error()."\n";return$I;}function
|
||
unique_array($J,$x){foreach($x
|
||
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$I=array();foreach($w["columns"]as$y){if(!isset($J[$y]))continue
|
||
2;$I[$y]=$J[$y];}return$I;}}}function
|
||
escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
|
||
idf_escape($y);}function
|
||
where($Z,$o=array()){global$f;$I=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,1);$d=escape_key($y);$Qc=$o[$y]["type"];$I[]=$d.(JUSH=="sql"&&$Qc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Qc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($o[$y],q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Qc)&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset($f)."_bin";}foreach((array)$Z["null"]as$y)$I[]=escape_key($y)." IS NULL";return
|
||
implode(" AND ",$I);}function
|
||
where_check($X,$o=array()){parse_str($X,$Ta);remove_slashes(array(&$Ta));return
|
||
where($Ta,$o);}function
|
||
where_link($t,$d,$Y,$rf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$rf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
|
||
convert_fields($e,$o,$L=array()){$I="";foreach($e
|
||
as$y=>$X){if($L&&!in_array(idf_escape($y),$L))continue;$wa=convert_field($o[$y]);if($wa)$I.=", $wa AS ".idf_escape($y);}return$I;}function
|
||
cookie($B,$Y,$se=2592000){global$ba;return
|
||
header("Set-Cookie: $B=".urlencode($Y).($se?"; expires=".gmdate("D, d M Y H:i:s",time()+$se)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
|
||
get_settings($xb){parse_str($_COOKIE[$xb],$kh);return$kh;}function
|
||
get_setting($y,$xb="adminer_settings"){$kh=get_settings($xb);return$kh[$y];}function
|
||
save_settings($kh,$xb="adminer_settings"){return
|
||
cookie($xb,http_build_query($kh+get_settings($xb)));}function
|
||
restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
|
||
stop_session($Zc=false){$Ki=ini_bool("session.use_cookies");if(!$Ki||$Zc){session_write_close();if($Ki&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function
|
||
set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function
|
||
auth_url($Si,$M,$V,$j=null){global$Zb;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($Zb))."|username|".($j!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($Si!="server"||$M!=""?urlencode($Si)."=".urlencode($M)."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($A[2]?"&$A[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($ue,$Je=null){if($Je!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($ue!==null?$ue:$_SERVER["REQUEST_URI"]))][]=$Je;}if($ue!==null){if($ue=="")$ue=".";header("Location: $ue");exit;}}function
|
||
query_redirect($G,$ue,$Je,$xg=true,$Cc=true,$Lc=false,$ai=""){global$f,$m,$b;if($Cc){$_h=microtime(true);$Lc=!$f->query($G);$ai=format_time($_h);}$uh="";if($G)$uh=$b->messageQuery($G,$ai,$Lc);if($Lc){$m=error().$uh.script("messagesPrint();");return
|
||
false;}if($xg)redirect($ue,$Je.$uh);return
|
||
true;}function
|
||
queries($G){global$f;static$sg=array();static$_h;if(!$_h)$_h=microtime(true);if($G===null)return
|
||
array(implode("\n",$sg),format_time($_h));$sg[]=(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return$f->query($G);}function
|
||
apply_queries($G,$S,$zc='Adminer\table'){foreach($S
|
||
as$Q){if(!queries("$G ".$zc($Q)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($ue,$Je,$xg){list($sg,$ai)=queries(null);return
|
||
query_redirect($sg,$ue,$Je,$xg,false,!$xg,$ai);}function
|
||
format_time($_h){return
|
||
sprintf('%.3f s',max(0,microtime(true)-$_h));}function
|
||
relative_uri(){return
|
||
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
|
||
remove_from_uri($Nf=""){return
|
||
substr(preg_replace("~(?<=[?&])($Nf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
|
||
get_file($y,$Mb=false,$Qb=""){$Rc=$_FILES[$y];if(!$Rc)return
|
||
null;foreach($Rc
|
||
as$y=>$X)$Rc[$y]=(array)$X;$I='';foreach($Rc["error"]as$y=>$m){if($m)return$m;$B=$Rc["name"][$y];$ii=$Rc["tmp_name"][$y];$tb=file_get_contents($Mb&&preg_match('~\.gz$~',$B)?"compress.zlib://$ii":$ii);if($Mb){$_h=substr($tb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$_h))$tb=iconv("utf-16","utf-8",$tb);elseif($_h=="\xEF\xBB\xBF")$tb=substr($tb,3);}$I.=$tb;if($Qb)$I.=(preg_match("($Qb\\s*\$)",$tb)?"":$Qb)."\n\n";}return$I;}function
|
||
upload_error($m){$Fe=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?'Unable to upload a file.'.($Fe?" ".sprintf('Maximum allowed file size is %sB.',$Fe):""):'File does not exist.');}function
|
||
repeat_pattern($Xf,$qe){return
|
||
str_repeat("$Xf{0,65535}",$qe/65535)."$Xf{0,".($qe%65535)."}";}function
|
||
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
|
||
shorten_utf8($P,$qe=80,$Fh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$qe).")($)?)u",$P,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$qe).")($)?)",$P,$A);return
|
||
h($A[1]).$Fh.(isset($A[2])?"":"<i>…</i>");}function
|
||
format_number($X){return
|
||
strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
|
||
friendly_url($X){return
|
||
preg_replace('~\W~i','-',$X);}function
|
||
table_status1($Q,$Mc=false){$I=table_status($Q,$Mc);return($I?:array("Name"=>$Q));}function
|
||
column_foreign_keys($Q){global$b;$I=array();foreach($b->foreignKeys($Q)as$q){foreach($q["source"]as$X)$I[$X][]=$q;}return$I;}function
|
||
fields_from_edit(){global$l;$I=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$B=bracket_escape($y,1);$I[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($y==$l->primary),);}return$I;}function
|
||
dump_headers($Cd,$Re=false){global$b;$I=$b->dumpHeaders($Cd,$Re);$Jf=$_POST["output"];if($Jf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Cd).".$I".($Jf!="file"&&preg_match('~^[0-9a-z]+$~',$Jf)?".$Jf":""));session_write_close();ob_flush();flush();return$I;}function
|
||
dump_csv($J){foreach($J
|
||
as$y=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$J[$y]='"'.str_replace('"','""',$X).'"';}echo
|
||
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$J)."\r\n";}function
|
||
apply_sql_function($s,$d){return($s?($s=="unixepoch"?"DATETIME($d, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$d)"):$d);}function
|
||
get_temp_dir(){$I=ini_get("upload_tmp_dir");if(!$I){if(function_exists('sys_get_temp_dir'))$I=sys_get_temp_dir();else{$p=@tempnam("","");if(!$p)return
|
||
false;$I=dirname($p);unlink($p);}}return$I;}function
|
||
file_open_lock($p){if(is_link($p))return;$r=@fopen($p,"c+");if(!$r)return;chmod($p,0660);if(!flock($r,LOCK_EX)){fclose($r);return;}return$r;}function
|
||
file_write_unlock($r,$Gb){rewind($r);fwrite($r,$Gb);ftruncate($r,strlen($Gb));file_unlock($r);}function
|
||
file_unlock($r){flock($r,LOCK_UN);fclose($r);}function
|
||
password_file($h){$p=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($p))return
|
||
false;$r=file_open_lock($p);if(!$r)return
|
||
false;$I=stream_get_contents($r);if(!$I){$I=rand_string();file_write_unlock($r,$I);}else
|
||
file_unlock($r);return$I;}function
|
||
rand_string(){return
|
||
md5(uniqid(mt_rand(),true));}function
|
||
select_value($X,$_,$n,$Zh){global$b;if(is_array($X)){$I="";foreach($X
|
||
as$ce=>$W)$I.="<tr>".($X!=array_values($X)?"<th>".h($ce):"")."<td>".select_value($W,$_,$n,$Zh);return"<table>$I</table>";}if(!$_)$_=$b->selectLink($X,$n);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$I=$b->editVal($X,$n);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Zh!=""&&is_shortable($n))$I=shorten_utf8($I,max(0,+$Zh));else$I=h($I);}return$b->selectVal($I,$_,$n,$X);}function
|
||
is_mail($mc){$xa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Yb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Xf="$xa+(\\.$xa+)*@($Yb?\\.)+$Yb";return
|
||
is_string($mc)&&preg_match("(^$Xf(,\\s*$Xf)*\$)i",$mc);}function
|
||
is_url($P){$Yb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
|
||
preg_match("~^(https?)://($Yb?\\.)+$Yb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$P);}function
|
||
is_shortable($n){return
|
||
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$n["type"]);}function
|
||
count_rows($Q,$Z,$Wd,$nd){$G=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($Wd&&(JUSH=="sql"||count($nd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$nd).")$G":"SELECT COUNT(*)".($Wd?" FROM (SELECT 1$G GROUP BY ".implode(", ",$nd).") x":$G));}function
|
||
slow_query($G){global$b,$T,$l;$j=$b->database();$bi=$b->queryTimeout();$oh=$l->slowQuery($G,$bi);$g=null;if(!$oh&&support("kill")&&is_object($g=connect($b->credentials()))&&($j==""||$g->select_db($j))){$fe=$g->result(connection_id());echo
|
||
script("var timeout = setTimeout(function () { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$fe&token=$T'); }, 1000 * $bi);");}ob_flush();flush();$I=@get_key_vals(($oh?:$G),$g,false);if($g){echo
|
||
script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
|
||
get_token(){$vg=rand(1,1e6);return($vg^$_SESSION["token"]).":$vg";}function
|
||
verify_token(){list($T,$vg)=explode(":",$_POST["token"]);return($vg^$_SESSION["token"])==$T;}function
|
||
lzw_decompress($Ha){$Ub=256;$Ia=8;$cb=array();$Gg=0;$Hg=0;for($t=0;$t<strlen($Ha);$t++){$Gg=($Gg<<8)+ord($Ha[$t]);$Hg+=8;if($Hg>=$Ia){$Hg-=$Ia;$cb[]=$Gg>>$Hg;$Gg&=(1<<$Hg)-1;$Ub++;if($Ub>>$Ia)$Ia++;}}$Tb=range("\0","\xFF");$I="";foreach($cb
|
||
as$t=>$bb){$lc=$Tb[$bb];if(!isset($lc))$lc=$cj.$cj[0];$I.=$lc;if($t)$Tb[]=$cj.$lc[0];$cj=$lc;}return$I;}function
|
||
script($rh,$li="\n"){return"<script".nonce().">$rh</script>$li";}function
|
||
script_src($Hi){return"<script src='".h($Hi)."'".nonce()."></script>\n";}function
|
||
nonce(){return' nonce="'.get_nonce().'"';}function
|
||
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
|
||
h($P){return
|
||
str_replace("\0","�",htmlspecialchars($P,ENT_QUOTES,'utf-8'));}function
|
||
nl_br($P){return
|
||
str_replace("\n","<br>",$P);}function
|
||
checkbox($B,$Y,$Wa,$he="",$qf="",$ab="",$ie=""){$I="<input type='checkbox' name='$B' value='".h($Y)."'".($Wa?" checked":"").($ie?" aria-labelledby='$ie'":"").">".($qf?script("qsl('input').onclick = function () { $qf };",""):"");return($he!=""||$ab?"<label".($ab?" class='$ab'":"").">$I".h($he)."</label>":$I);}function
|
||
optionlist($vf,$Yg=null,$Li=false){$I="";foreach($vf
|
||
as$ce=>$W){$wf=array($ce=>$W);if(is_array($W)){$I.='<optgroup label="'.h($ce).'">';$wf=$W;}foreach($wf
|
||
as$y=>$X)$I.='<option'.($Li||is_string($y)?' value="'.h($y).'"':'').($Yg!==null&&($Li||is_string($y)?(string)$y:$X)===$Yg?' selected':'').'>'.h($X);if(is_array($W))$I.='</optgroup>';}return$I;}function
|
||
html_select($B,$vf,$Y="",$pf="",$ie=""){return"<select name='".h($B)."'".($ie?" aria-labelledby='$ie'":"").">".optionlist($vf,$Y)."</select>".($pf?script("qsl('select').onchange = function () { $pf };",""):"");}function
|
||
html_radios($B,$vf,$Y=""){$I="";foreach($vf
|
||
as$y=>$X)$I.="<label><input type='radio' name='".h($B)."' value='".h($y)."'".($y==$Y?" checked":"").">".h($X)."</label>";return$I;}function
|
||
confirm($Je="",$Zg="qsl('input')"){return
|
||
script("$Zg.onclick = function () { return confirm('".($Je?js_escape($Je):'Are you sure?')."'); };","");}function
|
||
print_fieldset($u,$pe,$Wi=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$pe</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($Wi?"":" class='hidden'").">\n";}function
|
||
bold($Ka,$ab=""){return($Ka?" class='active $ab'":($ab?" class='$ab'":""));}function
|
||
js_escape($P){return
|
||
addcslashes($P,"\r\n'\\/");}function
|
||
pagination($D,$Db){return" ".($D==$Db?$D+1:'<a href="'.h(remove_from_uri("page").($D?"&page=$D".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($D+1)."</a>");}function
|
||
hidden_fields($og,$Fd=array(),$hg=''){$I=false;foreach($og
|
||
as$y=>$X){if(!in_array($y,$Fd)){if(is_array($X))hidden_fields($X,array(),$y);else{$I=true;echo'<input type="hidden" name="'.h($hg?$hg."[$y]":$y).'" value="'.h($X).'">';}}}return$I;}function
|
||
hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
|
||
enum_input($U,$ya,$n,$Y,$pc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$Ae);$I=($pc!==null?"<label><input type='$U'$ya value='$pc'".((is_array($Y)?in_array($pc,$Y):$Y===$pc)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Ae[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Wa=(is_array($Y)?in_array($X,$Y):$Y===$X);$I.=" <label><input type='$U'$ya value='".h($X)."'".($Wa?' checked':'').'>'.h($b->editVal($X,$n)).'</label>';}return$I;}function
|
||
input($n,$Y,$s,$Ba=false){global$l,$b;$B=h(bracket_escape($n["field"]));echo"<td class='function'>";if(is_array($Y)&&!$s){$Y=json_encode($Y,128);$s="json";}$Fg=(JUSH=="mssql"&&$n["auto_increment"]);if($Fg&&!$_POST["save"])$s=null;$id=(isset($_GET["select"])||$Fg?array("orig"=>'original'):array())+$b->editFunctions($n);$Vb=stripos($n["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$ya=" name='fields[$B]'$Vb".($Ba?" autofocus":"");$vc=$l->enumLength($n);if($vc){$n["type"]="enum";$n["length"]=$vc;}echo$l->unconvertFunction($n)." ";if($n["type"]=="enum")echo
|
||
h($id[""])."<td>".$b->editInput($_GET["edit"],$n,$ya,$Y);else{$ud=(in_array($s,$id)||isset($id[$s]));echo(count($id)>1?"<select name='function[$B]'$Vb>".optionlist($id,$s===null||$ud?$s:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($id))).'<td>';$Qd=$b->editInput($_GET["edit"],$n,$ya,$Y);if($Qd!="")echo$Qd;elseif(preg_match('~bool~',$n["type"]))echo"<input type='hidden'$ya value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$ya value='1'>";elseif($n["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$Ae);foreach($Ae[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Wa=in_array($X,explode(",",$Y),true);echo" <label><input type='checkbox' name='fields[$B][$t]' value='".h($X)."'".($Wa?' checked':'').">".h($b->editVal($X,$n)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$n["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$B'>";elseif(($Xh=preg_match('~text|lob|memo~i',$n["type"]))||preg_match("~\n~",$Y)){if($Xh&&JUSH!="sqlite")$ya.=" cols='50' rows='12'";else{$K=min(12,substr_count($Y,"\n")+1);$ya.=" cols='30' rows='$K'".($K==1?" style='height: 1.2em;'":"");}echo"<textarea$ya>".h($Y).'</textarea>';}elseif($s=="json"||preg_match('~^jsonb?$~',$n["type"]))echo"<textarea$ya cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$xi=$l->types();$He=(!preg_match('~int~',$n["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$n["length"],$A)?((preg_match("~binary~",$n["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$n["unsigned"]?1:0)):($xi[$n["type"]]?$xi[$n["type"]]+($n["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$n["type"]))$He+=7;echo"<input".((!$ud||$s==="")&&preg_match('~(?<!o)int(?!er)~',$n["type"])&&!preg_match('~\[\]~',$n["full_type"])?" type='number'":"")." value='".h($Y)."'".($He?" data-maxlength='$He'":"").(preg_match('~char|binary~',$n["type"])&&$He>20?" size='40'":"")."$ya>";}echo$b->editHint($_GET["edit"],$n,$Y);$Tc=0;foreach($id
|
||
as$y=>$X){if($y===""||!$X)break;$Tc++;}if($Tc)echo
|
||
script("mixin(qsl('td'), {onchange: partial(skipOriginal, $Tc), oninput: function () { this.onchange(); }});");}}function
|
||
process_input($n){global$b,$l;if(stripos($n["default"],"GENERATED ALWAYS AS ")===0)return
|
||
null;$v=bracket_escape($n["field"]);$s=$_POST["function"][$v];$Y=$_POST["fields"][$v];if($n["type"]=="enum"||$l->enumLength($n)){if($Y==-1)return
|
||
false;if($Y=="")return"NULL";}if($n["auto_increment"]&&$Y=="")return
|
||
null;if($s=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?idf_escape($n["field"]):false);if($s=="NULL")return"NULL";if($n["type"]=="set")$Y=implode(",",(array)$Y);if($s=="json"){$s="";$Y=json_decode($Y,true);if(!is_array($Y))return
|
||
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$n["type"])&&ini_bool("file_uploads")){$Rc=get_file("fields-$v");if(!is_string($Rc))return
|
||
false;return$l->quoteBinary($Rc);}return$b->processInput($n,$Y,$s);}function
|
||
search_tables(){global$b,$f;$_GET["where"][0]["val"]=$_POST["query"];$bh="<ul>\n";foreach(table_status('',true)as$Q=>$R){$B=$b->tableName($R);if(isset($R["Engine"])&&$B!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$H=$f->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$H||$H->fetch_row()){$kg="<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$B</a>";echo"$bh<li>".($H?$kg:"<p class='error'>$kg: ".error())."\n";$bh="";}}}echo($bh?"<p class='message'>".'No tables.':"</ul>")."\n";}function
|
||
on_help($jb,$mh=0){return
|
||
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $jb, $mh) }, onmouseout: helpMouseout});","");}function
|
||
edit_form($Q,$o,$J,$Fi){global$b,$T,$m;$Lh=$b->tableName(table_status1($Q,true));page_header(($Fi?'Edit':'Insert'),$m,array("select"=>array($Q,$Lh)),$Lh);$b->editRowPrint($Q,$o,$J,$Fi);if($J===false){echo"<p class='error'>".'No rows.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$o)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Ba=!$_POST;foreach($o
|
||
as$B=>$n){echo"<tr><th>".$b->fieldName($n);$k=$_GET["set"][bracket_escape($B)];if($k===null){$k=$n["default"];if($n["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$Cg))$k=$Cg[1];if(JUSH=="sql"&&preg_match('~binary~',$n["type"]))$k=bin2hex($k);}$Y=($J!==null?($J[$B]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$n["type"])&&is_array($J[$B])?implode(",",$J[$B]):(is_bool($J[$B])?+$J[$B]:$J[$B])):(!$Fi&&$n["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$n);$s=($_POST["save"]?(string)$_POST["function"][$B]:($Fi&&preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$Fi&&$Y==$n["default"]&&preg_match('~^[\w.]+\(~',$Y))$s="SQL";if(preg_match("~time~",$n["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$s="now";}if($n["type"]=="uuid"&&$Y=="uuid()"){$Y="";$s="uuid";}if($Ba!==false)$Ba=($n["auto_increment"]||$s=="now"||$s=="uuid"?null:true);input($n,$Y,$s,$Ba);if($Ba)$Ba=false;echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($o){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Fi?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($Fi?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."…', this); };"):"");}echo($Fi?"<input type='submit' name='delete' value='".'Delete'."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
|
||
<input type="hidden" name="save" value="1">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}if(isset($_GET["file"])){if(substr($ia,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
|
||
lzw_decompress("\0\0\0` \0<EFBFBD>\0\n @\0<EFBFBD>C<><10>\"\0`E<>Q<EFBFBD><51><01><1F>?<3F>tvM'<27>Jd<4A>d\\<19>b0\0<08>\"<13><>fӈ<66><D388>s5<73><35><EFBFBD><EFBFBD>A<EFBFBD>XPaJ<>0<18><><EFBFBD>8<>#R<>T<EFBFBD><54>z`<60>#.<2E><>c<EFBFBD>X<EFBFBD><58>Ȁ?<3F>-\0<05>Im?<3F>.<16>M<EFBFBD><16>\0ȯ(̉<><1E>/(%<25>\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("b7<EFBFBD>'<27><19><>o9<0E>c`<60><>a1<61><31><EFBFBD>#y<><79>d<EFBFBD><19>C<EFBFBD>1<EFBFBD><31>tFQx<51>\\2<1A>\n<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>n0<EFBFBD>'#I<><49>,\$M<>c)<29><>c<EFBFBD><63><EFBFBD><EFBFBD>1i<31>Xi3ͦ<13><><EFBFBD>n)T<>i<EFBFBD><69>d:FcI<63>[<05><>c<EFBFBD><63> <06><0E>Fé<46>vt2<74>+<2B>C,<14>a<EFBFBD>G<EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD>:;Nu<4E>)<29><><07><>Ǜ!<21>tl<74><6C><EFBFBD>F<EFBFBD>|<7C><>,<2C>`pw<08>S-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08>oQk<51><6B> n<>E<><0B>O+,=<3D>4<EFBFBD>mM<6D><4D><EFBFBD>Ƌ<EFBFBD>GS<47><53>Zh<5A>6<><36>. uO<75>M<0E>C@<40><><1D><>M'<27>(<28>b5<62>ҩ<EFBFBD><D2A9>H<EFBFBD>a2)<29>qиpe6<65>?t#Z-<2D><0E><>ox<6F><<03><0C><>s<03><><EFBFBD>;<3B><>H<EFBFBD>4\$<0B>䥍<EFBFBD>ۚ<EFBFBD><DB9A>a<EFBFBD>4<EFBFBD>\"<08>(<28>!C,D<>N<><14>;<3B><><EFBFBD><12>Jj<4A><6A><EFBFBD><01>@<0F>@<16>!<21><><1D><>K<EFBFBD><4B><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD><36>jX<6A>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ 2@<40>b<EFBFBD><0B>(Z<1A>Apl<08><10>8<EFBFBD><38>h<EFBFBD>.<2E>=*H<>4q3<71>AЂ<41>.<2E><>K<EFBFBD><4B><EFBFBD>!<21>f<EFBFBD>qr<71>!<21>1<EFBFBD>Ȏ<EFBFBD>c<EFBFBD><63><EFBFBD>*+ <20>(<0E>\n<EFBFBD>2<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD>(dYA<59><41><EFBFBD>D<EFBFBD>t<13>ϑ<>m*H<04>9+<2B>0<EFBFBD>0<EFBFBD>\n0t<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>,E<0E>ER<> X<><58>u[&@0<1C>A<11><>7=<3D>;<3B><05><><EFBFBD>K<EFBFBD><15>;0<>D<>7Ajm*`<60>3:v`<60><>ūk<C5AB><6B>Ʊ.<03>x<EFBFBD>Xv(ec<65><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Emz\\<15>0C<30>G2<47><32>Jt2(à<><C3A0>c<>N<<3C><>s^<5E>2<EFBFBD><32>6Z̅<5A>?c<><63>X<>m<EFBFBD><6D><EFBFBD>ϥ(<28>d9?><3E>/<2F>Y^I<>%<25><1C><><EFBFBD>5=H==\0T <20>6<EFBFBD><36><EFBFBD>\"<EFBFBD><EFBFBD>ح<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>mH<EFBFBD><EFBFBD>-C<><19>z<EFBFBD><7A>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>j<<Z<><5A>6<EFBFBD><1A>v><3E><><EFBFBD><EFBFBD>~LHť<11><>p<>,<2C>Yp<59><70>P<EFBFBD>9{}<7D>g5<DFBB><35><EFBFBD>Y<EFBFBD> >g5<67>@8o<38>\n><3E><>-nҩ<6E><D2A9>ԐR)J<><4A>#j<7<>(<28><>ĸN%<25>}<7D><>*2<><32>\rA<>јF0<>Xވ<58>Cp<43>:<3A><>Z<EFBFBD>Ƭ<EFBFBD><06>:G<>ԏ<EFBFBD>v=<3D>j<EFBFBD>[C\r<EFBFBD><EFBFBD>z/<2F><>:@<40><><EFBFBD>B<EFBFBD><42><<3C>(z.<2E>P<EFBFBD><0B><>Y<EFBFBD>h7\"<EFBFBD>j<EFBFBD>/܉<><DC89>]<5D>\\<EFBFBD><0C><08>6`<60>Ҋ4=x<>^1<><31>\0C0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>!<21>4<EFBFBD>%l<>SP[K}<06>v<EFBFBD>#<23><0F>@g<><67><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD>h=<3D><><EFBFBD><0E><>RGa<47><61><15>TTRNv<4E><76>:<3A>\"<EFBFBD><EFBFBD><13>u<EFBFBD><1D><07>\\e<EFBFBD>4 U\rt<>W<EFBFBD><57><EFBFBD><06><>Z <20>CF,@<40><17><><11>1\r<EFBFBD>\r<EFBFBD>0<EFBFBD><EFBFBD>p!<21>OY4:<3A><><EFBFBD><1E>!<21><><EFBFBD><EFBFBD><14>hV<68><56>\n<EFBFBD>` <1F>pn<70>Ϛ\0Y+<1C>20Z<30>anYq5<71>p<><70>\"a|<0E><>p<EFBFBD><70>n#<23>U\0<EFBFBD>8H<EFBFBD><EFBFBD><EFBFBD>bIp(<28><>s<EFBFBD><73>Yt<><74><EFBFBD>HI&<26>zN0ؖ@<40><0E><>tAf<><0B>)<01><>ƙZFՂlKr<4B>/C`<60>C<>B<0C>1*<03>&<26><>th<74><68><EFBFBD>WI<57>0C<0C>\\*)mJ<6D><4A><EFBFBD>[âdi3K\0<EFBFBD>)<29>dϘJ261<36><31>\n-o<>٫<EFBFBD><D9AB>0ߤ<><DFA4><EFBFBD>X<1B>b\r<EFBFBD>qp<EFBFBD><EFBFBD>ԆOY0X<EFBFBD><EFBFBD>֟<EFBFBD>C`<60>S<EFBFBD>a<03><>Z<08>[<5B>t#<23>x<06><>@2\r<EFBFBD><EFBFBD>Z̲<11><> <20>b-<02><>]C\\<EFBFBD><0C>l<EFBFBD> \"5,<2C><14><>R<EFBFBD><10><><EFBFBD>j<0C>t<EFBFBD>K<EFBFBD>P`<60><>,<2C><><EFBFBD>s<>\r<EFBFBD>1xО@<40><><EFBFBD>K\"d<EFBFBD>'<27><>F.6,T <09>[<5B>M<>֦<EFBFBD><17>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0B><><05><><EFBFBD>Bx<42>2<>j<EFBFBD>иɃC<><43>(<28>Mm<1C>d<1C>\"<04><>W<EFBFBD>t<EFBFBD><74><17><01>8<EFBFBD>sDY<44><59>Z <20>\"<EFBFBD>VS暙<0E>D2<44><32>+%<25>?<3F>VD<56>#<23><><EFBFBD><EFBFBD><EFBFBD>9Gr<47><72><EFBFBD>S<EFBFBD>b<EFBFBD>e<EFBFBD>,\r<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>k<EFBFBD> <09><><EFBFBD><06>(<28><>]a<><61>\r<EFBFBD><EFBFBD>1<EFBFBD>P䀛iɓu\$<EFBFBD><EFBFBD><EFBFBD> <09><>sbA<62><41>>T<>T<>n<05>e7<02>n<EFBFBD>R<xf<78><66>'<27><02>C<EFBFBD><43>5<06><><EFBFBD>^<5E><><01>)<29>\n<EFBFBD><EFBFBD><EFBFBD><13><><EFBFBD>`-\"g<EFBFBD><EFBFBD><11>Qy<51>\r<EFBFBD>ת<EFBFBD>`BN\nAd<EFBFBD>#@<40><>)\$<EFBFBD>R}<7D>@<40><03><1D><>yte&r<><72>@<40><18><><EFBFBD>+<2B><15><06>[<5B>T<EFBFBD>\nX<1A><>셜<><EC859C>vAG<41><47>U.<2E>]j<>`<60><>r*<2A><><EFBFBD>x<EFBFBD><78><12><>X<EFBFBD><18>Qp-<2D><>B<EFBFBD><0F>Cy<43>r<EFBFBD><16><><<3C>.\0#<23><>:<3A>K<><4B>)l<>NH<><48><EFBFBD>x<EFBFBD><78>WP<57><50><18><><EFBFBD><EFBFBD><EFBFBD><03><>8<EFBFBD><38><EFBFBD><<12><16>s<EFBFBD><0B>6<EFBFBD><13>Ȯʅwʒ<77><1F><>ypc<70>E<EFBFBD><11>J<EFBFBD><0C>w<EFBFBD>Q<1C>A<EFBFBD>+<2B>4/<2F>02d<32><64>mÐf <20><>\$<EFBFBD><EFBFBD>ţ4vvy<>`I<>\$<EFBFBD>d<EFBFBD>5U\0<EFBFBD>Pj(%<25>K<EFBFBD><4B><0F>47<34>La<4C><61>^<5E><>zM\0<EFBFBD>x<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>х<EFBFBD><EFBFBD><11>RTy<><79><EFBFBD><EFBFBD>!<21><><EFBFBD>w<EFBFBD>m<EFBFBD>j[F<><46>{<EFBFBD>ca<><61><EFBFBD><EFBFBD><02>m<EFBFBD>V<EFBFBD> <<3C><>s,<2C><><EFBFBD><EFBFBD><15><0C><>9T<39>]gu<67><75><EFBFBD>H<EFBFBD>/<2F><1C><19>V+y<>jM<><4D><EFBFBD>ݨM<DDA8>G<EFBFBD><47><EFBFBD>;<>%<25><><EFBFBD>mW\r<EFBFBD>ђ8<EFBFBD><EFBFBD>0<EFBFBD>ϴ6<EFBFBD>K<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>{<EFBFBD>k<>]Z<>]ÈO*(`#t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>6<EFBFBD>{<EFBFBD><EFBFBD>%Oaq<>H<EFBFBD><48><EFBFBD>Er<45>UC(b\ret<16>%I<><12>X<EFBFBD>\\<EFBFBD>0<EFBFBD><EFBFBD>X<EFBFBD>YQ <09><>(T-<2D><><EFBFBD>2H<><48><EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>qd<71>w<EFBFBD><77>AKY<06>W ܹ<><DCB9><<3C><1B>1<17>Gp<47><70>z<EFBFBD><7A>\$<EFBFBD>h6X<EFBFBD><EFBFBD>*f<1D>\"<:<0E><>;V<0F><><EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD>;@<40><><EFBFBD>@<40>w<EFBFBD><77>r<0E><><06>K<EFBFBD>ѽ<EFBFBD>@o<><6F><<3C>\0}v<><76><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><4D><EFBFBD>=<3D><><EFBFBD><<3C>GD<47>wᷴY<18><1F><>pT<70>s<EFBFBD>?~<7E><>=<3D><>=<3D><>Fn?x<><78><EFBFBD><11><><EFBFBD><07>=<3D>w<EFBFBD><77><EFBFBD>_(7<><37><EFBFBD><EFBFBD>R'<27><>Y<EFBFBD>| \\y<EFBFBD>z<>n<EFBFBD><6E><EFBFBD>}<7D><>=%p<>0j?<3F><><EFBFBD>B!<21><><EFBFBD>\nT<EFBFBD><EFBFBD>o<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><EFBFBD><EFBFBD>GHu`4J<34>/G<>]@<40> ~=N<>&<26>H%<25><06>jK|\0pj<EFBFBD>8<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Np<EFBFBD><EFBFBD>xׯ<EFBFBD><EFBFBD>K<EFBFBD>5+<02><>*<2A><0C>L<><4C>b<EFBFBD><06>\$kI\rv<EFBFBD>휎<EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>z<EFBFBD>~Q0<51><30>o<EFBFBD>=<0F>\r<EFBFBD>i<01><>Y<0F>կ<EFBFBD><D5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14><08><>Д<EFBFBD>\nm<EFBFBD>ް<EFBFBD>p<><70>`<60>p:&<26>&<26><>۰<0E><0C><><12><>H<EFBFBD>p<EFBFBD><08> -<2D><>P<EFBFBD>\n<EFBFBD>p<EFBFBD><EFBFBD>U\n`<60>I6<49><36>&d<>i<<3C>)x<>h<EFBFBD>s<EFBFBD><73><05><>4<EFBFBD>pJ<70><4A>q4@<40><13>7\0Z\0<EFBFBD>HJ<48>g˥<0E>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>5<15><><14>N*<2A><>!<21>r<EFBFBD>¥@<40><0C><><0E><><14>a®]<02>`EH<45>cG@<40>&<26><><14>fF<14><>Zː<5A>H<EFBFBD>v <09><>4/\0<EFBFBD>&<26>ąqH.<04>H<>?b-<04><0C>a7@Ƙ1<C698>i<><69><EFBFBD><14>S<1E>曑<EFBFBD>qQKb<>E\0<EFBFBD>RŃ<>8<EFBFBD>Q <20>4Z<34><5A><EFBFBD>Q.8<EFBFBD><EFBFBD><0E><><0B>\n\r<EFBFBD><EFBFBD>!<21>(?<3F>>s<>K#gQ\$r0/<2F>P8<50><0B>\"rW<1F><>#<23>Ds<44>1%<25>U&Ì<><C38C>'2@<05>y%<25>P<EFBFBD>kc'Re&2Z6\0<EFBFBD>)Rꒋ<>\"%&Q:<3A>O<14><>R<1F><>\"ҍ%<25>\r<EFBFBD>c,2<><0E><>'<27>a)<29>f<0C><>&%Q,R<> <20><>-<2D>c <20> .hI.<2E><0B><>.2<EFBFBD>-<2D>\r*\"<EFBFBD>*qlX<6C><58><EFBFBD><EFBFBD>I%<25><>!<21><16><><16>.<2E>R+1o)<29><><0B>!-S0)<29><>\r<EFBFBD>6<EFBFBD><EFBFBD>`<60><>R<EFBFBD><52>2<7F>Y)<29><>Y,<12>3<EFBFBD>552<35>)<29> <20>SD<53>IDB<44>/4<>f~<7E><>D<EFBFBD><44>0R#1<>1<0B>8<12>\"<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD>28<EFBFBD>2<EFBFBD>?S<><53>R<>,Ӟ<0E><>5RI:<3A><>(ө<1E><>;s<> <20>1<EFBFBD><31>b<>0<EFBFBD><1D>1<><31><1E>2ss9`<60><0B>:<3A><><21:<3A><>:s<><73><EFBFBD><EFBFBD>;<13>@3<>;S<><bm&3<>?3<>8<EFBFBD>92s<32>9ҳ(<02>>3<>>e<0C>b\0<EFBFBD>3<EFBFBD>3A<EFBFBD><EFBFBD>Q<>%<25>>q<>Ct;.c<>?<13>;ӡ<<13>B\0踓<EFBFBD>Bq<EFBFBD><1C><>>T];<13><T/4w3s<33>8ѡK;GR~<7E><14><05><>t<>\$<EFBFBD>y <20>&4<>T8<>{#<14>ns<6E><73><EFBFBD>AI<41><49>D<EFBFBD><44>'<27>Dg<44><67>JTF<0C><>5r<35> <20><>&S<>.<14>&t<>62g@sM<>0<><30>5<EFBFBD><35>O4<4F>Ob<4F>O<EFBFBD>QH<14><0B><><0C><>P<EFBFBD><50>7UQKP<><50>P<EFBFBD>\0<0B>ژ5#N<><4E>3U/Qu+O+&cPe<>RU7SUGT<47>51t\"-4'+r+<2B><>9E<39>3Uk(<28><>&2<>S<EFBFBD><53>W3;.<2E><>K<EFBFBD>#<23><1B>/(ѵA@؞Tk=Ѵ<><D1B4>X<EFBFBD>@<02>L<EFBFBD>E<18><>8<EFBFBD><38>(<28>\0 <20><><EFBFBD>&<26>S<EFBFBD>M<EFBFBD>u'<27><>u<15>W<EFBFBD>\\<EFBFBD>RC&5y]<5D>U*W]<5D>00`<60><1A>;Z<>KK <20><>9R[S<>CN5<4E>SV Q<>R,<2C>s_Ĺ6<C4B9>C6@6';hIb<49>1,61aV/^<5E>cV=N\0U<><55><EFBFBD><EFBFBD>(<28>6R~<7E><><EFBFBD>Il\\3<12>e<EFBFBD><65>00<>\ra<EFBFBD>BD<42>d<EFBFBD><64>:\"<EFBFBD>4<EFBFBD><06><>,");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("b7<EFBFBD>'<27><19><>o9<0E>c<EFBFBD><63><EFBFBD><EFBFBD>b<0E>F<19><>r7<72>M<EFBFBD>HP<48>`2\r\"'<27>\r<08>\rF#s1<73>p;<3B><0E>Ɠ<EFBFBD><C693><EFBFBD>e2I<32><49><1C>Y.<2E>GF<47>I<EFBFBD><49>:4<1B><>S<EFBFBD><53><EFBFBD>3<EFBFBD><33>㔚Y<E3949A>u(Ìc(<28>`h<18><>#%0[<05><>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><19><>C!<21><><12>E<EFBFBD><11><><EFBFBD>b5<0C>Ú<EFBFBD><C39A><EFBFBD><08><><EFBFBD><EFBFBD>y<EFBFBD>fb<66><0C>w <09>z#<13><><EFBFBD>1<EFBFBD>P<EFBFBD><50>6<1B><0C><03><>Xt4a<34>l<EFBFBD>t<EFBFBD>4<18><>g<EFBFBD>E<EFBFBD><45>B<EFBFBD>#<11><>ja<6A><0C> <20>K<EFBFBD><4B>q8ڝh<DA9D>]<1A><><17><><EFBFBD>a<EFBFBD>2ƼP <20><>y<EFBFBD><0E><><EFBFBD>i2<69><0C>3)<29>U<EFBFBD><55><EFBFBD>o<EFBFBD>l\0<EFBFBD>}<7D><>vٛ<76>r<EFBFBD><72>7ϸ<37> N2<12>)<29>3M<01>#<23><0C>)PKj<4B><0F>x<EFBFBD><06><><EFBFBD>8C(\\5<0E><>S\n?<3F><>v邊8<0E><>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <03>[8<>x<EFBFBD>#<23><>G<><47><EFBFBD>!a<>^><3E>qh]<0E>#<23><><0E><>L\\6<EFBFBD>#<23><>2<EFBFBD><32><&7<><37><EFBFBD><EFBFBD>G<><47>1Hr<48>`*<2A><><EFBFBD>7*<2A><>#<23><>@-<03><>6D<36><44>:<3A>;S:<3A><>*<2A>l<EFBFBD><<3C>!ʹ<><CAB9><02><><EFBFBD>1<EFBFBD><31>\r.-<1B><>5+?T\0@1?n<>\n<EFBFBD>\$ <14>6<EFBFBD><36><EFBFBD><EFBFBD>0<EFBFBD><30>,ڎ<>A<EFBFBD>lK<><4B>=P<>0ʉ1\neQ<>%\$<EFBFBD>2 eGR<47><52>K<EFBFBD>0<EFBFBD>R<EFBFBD>V<EFBFBD><56><EFBFBD>{.<2E>Ĩ<EFBFBD>><3E><>s<EFBFBD><73>0<EFBFBD>,b0<><30>3<CDB9><33>\noe<EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD>t<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>j1<EFBFBD><EFBFBD>8Ģ<EFBFBD><1B><>+<2B><><EFBFBD> /[<5B>Aâ758<>4<EFBFBD>A@d74<>*<2A>0,<05>8<EFBFBD>c<1B><><EFBFBD><12>+<2B><>i<EFBFBD>b<><62>ˌY#.7<EFBFBD><EFBFBD><EFBFBD>GhV<EFBFBD><EFBFBD>`<19>7<EFBFBD><37><EFBFBD>!<21><><EFBFBD><EFBFBD>cT<63>d<EFBFBD><64>y<EFBFBD><79>\n<EFBFBD>?<3F><><EFBFBD>F3<46>g<EFBFBD>ƃ eu<65><0B><>։<EFBFBD>h<EFBFBD>:+<2B><6<>G<EFBFBD>f<EFBFBD><66>\\4<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>>*<2A>`0LϰMzZ<7A>B#{*x27<32>eo}<7D><>xޛ<78><DE9B><EFBFBD>:\r<EFBFBD><EFBFBD>C:&`f<05><><06>MpձCL<43>T<EFBFBD><54><EFBFBD><EFBFBD>1<EFBFBD><31><1A><>H<EFBFBD><48><EFBFBD>`<60>G<0B><><_<1B>pd<14><>Ajr[<5B><><EFBFBD><01>@2\r#<23>h<>V<EFBFBD>D><3E>u%<25><1D>3<><33><EFBFBD>b:h<><68><EFBFBD>kA<6B>1\\ɀG<EFBFBD><EFBFBD><EFBFBD><07><><EFBFBD><EFBFBD><1F><><EFBFBD>C<EFBFBD><43>0<EFBFBD>Zs<5A><73><EFBFBD>a<18><0E><><18>;S<><53>L<EFBFBD>0L'<27><>Yk<59><6B>]<5D><>i\r)<29>v <20><><01><>m*'7Ʋ<37>[<5B>>@<40><1C><><EFBFBD><EFBFBD><EFBFBD>Hpzf)<29><>`l<><6C><EFBFBD><EFBFBD>`<60>h<0B>w<EFBFBD><77><07>f<EFBFBD>|<7C><>7!<21>i⥀<69>Ƞtw<74><77><EFBFBD>\0p<18><13>'<04><16>sҿ<73>b`M<><4D><EFBFBD>gx\")<29>=I<>\$<EFBFBD><0E>C<EFBFBD><43>w<EFBFBD><77>ǩPrl<72><6C>!5 <20><16>p<EFBFBD>hc<68>@<40>2 <20><><EFBFBD><EFBFBD>^<5E><><EFBFBD>48(<28><18>\$dl<08><><EFBFBD>A<><41><EFBFBD>Q<EFBFBD>,<2C><><EFBFBD> E<>A<02>:C<><43><EFBFBD>P<><50>E\"<EFBFBD>!<21>F<EFBFBD><46>h3\$h<EFBFBD>C<>a\r<EFBFBD><EFBFBD>2ȹ'<27>PmPI<50><15>><3E><><EFBFBD>bE<62><45>Ƹ<>ln<6C><0C><0F>@Ʃ<><C6A9>~kD<6B><44><11>?<14>9<EFBFBD><39><18>Q<>q\r<EFBFBD>8LC,L\0");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("f:<3A><>gCI<43><49>\n8<EFBFBD><EFBFBD>3)<29><>7<><37><EFBFBD>81<38><31>x:\nOg#)<29><>r7\n\"<EFBFBD><EFBFBD>`<60>|2<1B>gSi<53>H)N<>S<EFBFBD><53>\r<EFBFBD><EFBFBD>\"0<EFBFBD><EFBFBD>@<40>)<1D>`(\$s6O!<21><>V/=<3D><>' T4<54>=<3D><>iS<69><53>6IO<49>G#<23>X<>VC<><43>s<EFBFBD><73>Z1.<2E>hp8,<1E>[<5B>H<EFBFBD>~Cz<43><7A><EFBFBD>2<EFBFBD>l<EFBFBD>c3<63><33><EFBFBD>s<EFBFBD><73><04>I<EFBFBD>b<EFBFBD>4\n<06>F8T<38><54>I<><49><1A>U*fz<66><04>r0<72>E<EFBFBD><13><><EFBFBD>y<1B><><EFBFBD>f<EFBFBD>Y.:<1C><14>I<EFBFBD><49>(<18>c<EFBFBD><63>!<21>_l<5F><6C>^<5E>^(<28><>N{S<EFBFBD><EFBFBD>)r<>q<EFBFBD>Y<EFBFBD><59>l٦3<D9A6>3<EFBFBD>\n<EFBFBD>+G<><47><EFBFBD>y<EFBFBD><79><EFBFBD>i<EFBFBD><69><EFBFBD>xV3w<17>uh<>^r<><72><EFBFBD><1E>a۔<61><DB94><EFBFBD>c<EFBFBD><63>\r<0E><><EFBFBD>(.<><C288>Ch<43><\r)<08>ѣ<EFBFBD>`<60>7<EFBFBD><37><EFBFBD>43'm5<><35><EFBFBD>\n<EFBFBD>P<EFBFBD>:2<>P<EFBFBD><50><EFBFBD><EFBFBD>q <20><><EFBFBD>C<EFBFBD>}ī<><C4AB><EFBFBD><EFBFBD><EFBFBD>38<33>B<18>0<EFBFBD>hR<1A><>r(<28>0<EFBFBD><30>b\\0<EFBFBD>Hr44<EFBFBD><EFBFBD>B<1A>!<21>p<EFBFBD>\$<EFBFBD>rZZ<1E>2܉.Ƀ(\\<EFBFBD>5<EFBFBD>|\nC(<28>\"<EFBFBD><03>P<13><02><>.<0B><>N<15>RT<52>Γ<><CE93>><04>HN<14><>8HP<>\\<EFBFBD>7Jp~<13><13><>2%<25><>OC<4F>1<EFBFBD>.<2E><>C8·H<><48>*<2A>j<EFBFBD><6A><04><1C>S(<11>i!Lr<4C><72>D<EFBFBD># ȗ<04>`Bγ<>u\\<EFBFBD>i<0C>B!x\\<EFBFBD>c<>m-K<><4B>X<EFBFBD><58><EFBFBD>38<33>A<EFBFBD><41><14>\r<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD>cH<EFBFBD>7<05>#R<>*/-̋<07>p<EFBFBD>;<3B>B \n<05>3!<21><><EFBFBD>z^<5E>pΎ<70>m<EFBFBD>R<15><><EFBFBD>t<1D>m<EFBFBD>I-\r<EFBFBD><EFBFBD><EFBFBD>\0H<EFBFBD><10>@k,<2C>4<EFBFBD><34><EFBFBD><EFBFBD>{<EFBFBD>.<2E><>J<EFBFBD>Ȭ<EFBFBD>o<>Vӷb?[<5B>Q#>=ۖ<>~<13>#\$%wB<>>9d<39>0zW<>wJ<>D<EFBFBD><44><EFBFBD>2<EFBFBD>9y<39><79>*<1C><>z,<2C>NjIh\\9<EFBFBD><EFBFBD><EFBFBD>N4<0E><><EFBFBD>9<EFBFBD>Ax^;<3B>^m\n<EFBFBD><EFBFBD>r\"3<EFBFBD><EFBFBD><EFBFBD>z7<05><>N<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>2<EFBFBD>H<EFBFBD>v9g<EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>kG\n<EFBFBD>-Ůp<C5AE><70>1<EFBFBD>C{\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E>2ۭ<06>;<3B>Y<EFBFBD><14>4q<34>? <13>!pd<1A><>oW*<2A><>rR;<3B>À<EFBFBD>f<EFBFBD><66>,<2C>0<EFBFBD><30>0M<30><4D><EFBFBD>0<EFBFBD>\"<EFBFBD><EFBFBD> <20><>\"<EFBFBD>ħ<EFBFBD><EFBFBD><EFBFBD>oF2:SH<53><48> <20>/;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٩ri9<69><39>=<3D>^<5E><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>͵W*<1E>Z<EFBFBD><5A>dx՛<><D59B>֡<EFBFBD>ITqA<71>1<EFBFBD><31>z<EFBFBD>Y!u<07><><02><><0B><>~<7E><>.<2E><>P<12>(<28>p4<70>3<15><><EFBFBD>#hg-<2D> '<27>F<02>p<05>0<><30><EFBFBD>C+P<01><><06><><01>, <20><><EFBFBD><EFBFBD>e<EFBFBD><1E><>N~<7E>y@fZK<5A><4B>O3<4F>v\$<EFBFBD>`<60>C<0C> N`<60>!<06>z<>pdh\$6EJ<45>cBD<><44>c8L<38><4C>P<EFBFBD> <20>66<>OH<4F>d .<2E><><EFBFBD><EFBFBD><EFBFBD>Y#<23>t<05>H62<><32><EFBFBD>e<0C><>@<40><>~]C<>[<5B><>&=G<><47>\\P(<28>2(յ<><D5B5><18><>̐q<CC90>2<EFBFBD>x<EFBFBD>nÁJ<>|2<03>)(<28>(eR<><52><EFBFBD>G<EFBFBD>Q<EFBFBD><51>Ty\n<EFBFBD>!pΪ\0Q]<5D><>&<26>ޜS<DE9C>^N`<60>_(\0R <15>'\r*q<01>P<EFBFBD><50><EFBFBD><EFBFBD>x<EFBFBD>9,<2C><>-<2D>);<3B><>]<14>/<2F><>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C.e<><65>y\0<EFBFBD>,<06><> S787<38><37><EFBFBD>5Hlj(<28><> <20>\0<EFBFBD>մ<><D5B4><EFBFBD><EFBFBD>q<EFBFBD>I<EFBFBD>/=S<><53> <20>àD<C3A0><\r!<21>2+<2B><>A<EFBFBD><41> J<>e <20><>!\r<EFBFBD>m<EFBFBD><18>NiD<69><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^ڈl7<6C><37>z<EFBFBD><7A>gK<0C>6<0B><>-ӵ<>e<EFBFBD><07>!\rEJ\ni*<0B>\$@<40>RU0,\$U6 ?<3F>6<EFBFBD><36>:<3A><>un<75>(<08><>k<05>p!<02><04><>d`<60>><3E>5\n<0B><<3C>\rp9<70>|ɹ<>^fNg(r<><72><EFBFBD>TZU<5A><55>S<EFBFBD>jQ8n<12><><EFBFBD>y<EFBFBD>d<EFBFBD>\r<1E>4:O<>w>[͞<>4<EFBFBD>4G\"<10><>7%<25><><16><><EFBFBD><EFBFBD>\\<16><16>P<EFBFBD><50>hnB<6E>i.0<EFBFBD>۬<EFBFBD><EFBFBD>*j<>s<0E><> Ho^<5E>}J2* <09>J<EFBFBD>W<EFBFBD><01>Gjx<6A>S8<53>F͊e<CD8A><04>6<EFBFBD>s<EFBFBD><1C><>*<2A>\r<<3C>0wi-00o`<60><>^<02>k<EFBFBD><6B><EFBFBD><EFBFBD>*A<>,ɸ<>䍺<05><>i<EFBFBD><69><EFBFBD>nj<1A><>2索A\"<EFBFBD><EFBFBD><04><>[;<3B><>n<><6E>B^<5E><>0-<2D><><EFBFBD><EFBFBD><EFBFBD>\n:<Ԉe<01>2<03><><EFBFBD>h-<2D><><EFBFBD>2<EFBFBD>n<>/A<>\r6<EFBFBD><0C><><EFBFBD>[o<>-<2D><>c<0C><0B>R@U3\n<EFBFBD>\n<EFBFBD>T<EFBFBD><EFBFBD>=<3D>R<EFBFBD>j<><1D><>7s\"<EFBFBD><EFBFBD><EFBFBD>Y+<2B>\"u<><fH<66><48>`a<><61>z<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>^7syo:!<21>V<EFBFBD><56><EFBFBD>k<EFBFBD>m<><6D><EFBFBD><EFBFBD>if<69>ۻ<EFBFBD>/<2F>ڦ8;<e<>N<EFBFBD>2ͱS<CDB1>W?e`<15>C*B<><42>͔<EFBFBD>ZB<>]<5D><><EFBFBD><EFBFBD>:K<>_7<1F><>Ċq<17><1D>Q<>)<29><>/<2F>:d<>i<EFBFBD><0B><13><>Z^<5E>3<EFBFBD><33>tꃥ<74><EA83A5>t*<2A><>\$<EFBFBD><EFBFBD>f<14>z50t<30>UJg<><67><EFBFBD>S\r<EFBFBD>cX<EFBFBD><EFBFBD><EFBFBD><1B><>\rw7Z<06>N^`oxP<><13><>I<EFBFBD><49>x?<04><>T<EFBFBD>ke<><65> <20>Jim)<06>x;<3B>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>=V=<3D><><EFBFBD><U<><11>!<21>0<EFBFBD><30>n<0B><>;<3B><10><>~AZ<><5A>7<EFBFBD><37><10><><13>+Z<>=n<><6E><EFBFBD>{H<1E><10>PURY<52><59><EFBFBD><EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>HNj6'g<><67>2K<1D><><EFBFBD>~<07><>|hT<68>A<EFBFBD><41>1<EFBFBD><31>V<EFBFBD><56><EFBFBD>>/<2F>^<5E><>l.<2E><>SI<53>.<2E>9g<39><67>~O<><4F>%ئ<><D8A6>̾<EFBFBD>)A|<7C><>\n;-<2D><>n<EFBFBD><6E>[<0B>t,<2C><><EFBFBD><EFBFBD><1F>Y<0F><>j\n<EFBFBD><0F>N<EFBFBD>eP<65><50><EFBFBD>O<<3C><><EFBFBD> q<><71><EFBFBD>(G!~<7E><><02><>`_<>\r~<7E><><04>`<60><12>.<2E>>'H<>O<EFBFBD>2<EFBFBD>yK<79><4B><04><0E>d:(<28>,<1F><<07>3<EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>+0nUYZ<59><5A><EFBFBD>^<5E>)ww<77><77>!<21><><0C><><EFBFBD>1<EFBFBD><31><EFBFBD><1C>!<21><><EFBFBD><EFBFBD>mG<6D><47>ַgd<>=<3D><><EFBFBD>X<02>[ޢ<><<3C><>ߩW<DFA9><16><><EFBFBD><EFBFBD>7<EFBFBD><07><17>`<60>o<EFBFBD>ҭ<EFBFBD><EFBFBD><7F><EFBFBD><><EFBFBD><7F><EFBFBD>G<EFBFBD><47><EFBFBD>~`<60>i`<60><>*@<40><>v<EFBFBD><76><0F><><0C><>\0)<16>ꐜ\$R#<23><><EFBFBD><EFBFBD><05><><EFBFBD><EFBFBD>Ud<55>)KL<><4C>M*<2A><>@<40>@<40><>O\0H<04><04>\\j<EFBFBD>F\r<EFBFBD><EFBFBD><03><>]<5D>gK<><4B>i<EFBFBD>\$<EFBFBD>D<05>*g\0<EFBFBD>\n<EFBFBD><EFBFBD> <09><>s<EFBFBD> <20><>\$K0<EFBFBD>&<26><> `{<07><><EFBFBD>6W`<60>x`<60>8<EFBFBD>DG<44>*<2A><><EFBFBD>eHV<48><56>8<><38><EFBFBD>\nmT<EFBFBD>O<EFBFBD>#P<><50>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>\r8<0C>Y/&:D<> <09>Q<07>&%E<>.<2E>]<0F><>Я<0F>.\"%&<04><>n<EFBFBD>\ny\0<EFBFBD>-<2D>RSO<04>B<EFBFBD>0<EFBFBD><30> <09>v<EFBFBD><02>D@<40>݂:<3A><>;\nDT<EFBFBD><EFBFBD>< <20>Q.\nc2<63><32>Ry@<40>m@<40><0C><> <09><0E>W<17><><17><>\n<EFBFBD>L\r\0}<17>V<EFBFBD><56><EFBFBD><18>#<23><><0C><>-<2D>jE<6A>Zt\\mFv<0C><><EFBFBD>F<EFBFBD><46><EFBFBD>J<EFBFBD>p<EFBFBD>B<14><><EFBFBD>(<28><><EFBFBD><EFBFBD>1<> <20><EFBFBD>LX<4C><58><EFBFBD> %t\nM<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><02>Z<EFBFBD><5A><EFBFBD>r<EFBFBD><72>Kg´C<C2B4>[<5B>ʴ <09><02> <1A>\0Я<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><18>R*-n<>#j<>#<23><><EFBFBD><EFBFBD><10>4<>IW<>\r\",<2C>*<2A>f<EFBFBD><66>x<EFBFBD>/<2F><><EFBFBD>^<5E><>5&L<><4C>2p<32>L<EFBFBD><04>7<EFBFBD>^`<60><05><><0B><> V<05>`bS<62>v<EFBFBD>i(<28>ev\n<EFBFBD><EFBFBD>|<7C>RNj/%M<>%<25><><EFBFBD>+<2B>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>߯<EFBFBD>'<27><><EFBFBD>R<EFBFBD>'''<27>W(r<>(<28><>)2<>Қ<><12><>%<25>-%6<><36><EFBFBD>ˀ<EFBFBD>J@<40>,<2C><>ֿN<D6BF><4E><EFBFBD>Q\n<12>0ꆐ<30>g <09><>\$<11><><EFBFBD>*L<><0C>.n<><6E>Q%m<0C>\"n*h<1A>\0<EFBFBD>w<EFBFBD>B<EFBFBD>O<EFBFBD>\0\\FJ<EFBFBD>Wg<EFBFBD> f\$<EFBFBD>C5dK5<EFBFBD><EFBFBD>5<EFBFBD>aC<><43>4H<1C>(<28><0F>.G<><47><EFBFBD>BF<42><46>8<EFBFBD><1A><><EFBFBD><EFBFBD><EFBFBD> E<><45><EFBFBD><EFBFBD>.<2E><>k3m<33>*)-*<2A><>[g,%<25><> <09><>7<EFBFBD>.<2E><>!\n<EFBFBD>+ O<ȼ<>C<EFBFBD>+ϫ%<25>O=Rf<52><66><EFBFBD><EFBFBD>(<28><><EFBFBD>n<0C>Y<EFBFBD><59>ϲ<EFBFBD>%<25><>s<>1<13>6<EFBFBD>3;<3B><>ObE@<40>NSl#<13><0C>|<7C>4\0<EFBFBD>U<>G\"@<40>_ [7<><37>S<EFBFBD><53>@<40>\$DG<EFBFBD><0E><>D<EFBFBD>5=<3D><><EFBFBD>K>r<><72><EFBFBD><EFBFBD>\r <20><07>Z<EFBFBD><5A>ֱ@<40><><EFBFBD>H<07>Ds<><0B>n\\<EFBFBD>e)<29><04><02><>b<EFBFBD>'<27><><EFBFBD>BPGkx<78>Z<EFBFBD><5A><EFBFBD>#TK:<3A>w:<3A>a2+<2B>aeK<05>KR)\"<EFBFBD>(4qGTxi H<0E>H@<40>&@%bZ<><5A><EFBFBD><EFBFBD>ܪ)3P<33>3f `<60>\r<EFBFBD>I6G<EFBFBD>%<25>/4<>v<04>\\~<7E>4<7F>ݤ0<DDA4>p<><70><EFBFBD>,<2C><>E<EFBFBD>)PH8k\0<EFBFBD>i<EFBFBD><EFBFBD>\$<EFBFBD><0C><>3I4<49>P<05>V'F^<5E> <20>'D<><44>R<08><><15>+Q<>`<60><><05><><0E>8\n<EFBFBD><EFBFBD><EFBFBD>D[V5,#<23>qW@<40>W<EFBFBD>0<EFBFBD>O2<4F> <20>t<>\rC6sY_6 <20>ZkZ@z3ryI<79><5<><0E><12>.W<><57><EFBFBD>ҷ@5<>Ģ#ꎄ5N <20>~<7E><>ȥu<C8A5>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)3S]*g7<67><37><EFBFBD><EFBFBD><EFBFBD>ҕ<EFBFBD>_ˉ<0B>_<EFBFBD>ĸV\nY<EFBFBD>)a<14><>1P<31><50><EFBFBD>FI\r;u@/!![<5B>e<15> <20>(CU<>O<EFBFBD>aS<16><><EFBFBD>KP<4B><50>t3=5<><0B>O[<5B>f:Q,_]o_<6F><<04>J*<2A>\rg:_ <20>\r\"ZC<EFBFBD><EFBFBD>8XV}V2<56><32>3s8e<38><65>P<EFBFBD>sF<>SN~<7E>S5U<35>5<EFBFBD>z<06>ae k<>n<07>fOL<>JV5<1C><>j<EFBFBD><10><><EFBFBD><EFBFBD>Z<EFBFBD><5A>lE&]<5D>1\rĢم5\rG<EFBFBD> <20>uo<75><6F><0C>8<<3C>U]3<>2<EFBFBD>%n<>ַpr<70>5<EFBFBD><35>\n\$\"O\rq<><71>r)<29>f<EFBFBD><66><EFBFBD>7/Y<><59><EFBFBD>p<EFBFBD>I#`<60><0B>Kk;\"!t<><74><EFBFBD>h<EFBFBD>usYj<59>[<5B>R<EFBFBD>\n{N5t<EFBFBD>#NΜ<4E>o6<6F>X)<29>c6<63><0E><>e+.!<21><>ߗ<EFBFBD>\n <09>b<EFBFBD><1A>ʒ<EFBFBD>t<EFBFBD>Ү<><D2AE>\n<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD>(\0<EFBFBD><EFBFBD>2<EFBFBD><04>4erEJ<45><4A>d<EFBFBD><14><><0B>@+x<>\"\\@<40><><EFBFBD><EFBFBD> %v<><76><EFBFBD><EFBFBD><EFBFBD>{`<60><EFBFBD><7F><EFBFBD><EFBFBD>`<60><>\n <20> <09>oRi-IB<49>-<2D><><EFBFBD>Nm\\q@<40>,`<60><>Kz#<23><>\r<EFBFBD>?<3F><>6<D598><36><j<><6A>f<EFBFBD><66>!<21>N<EFBFBD>7<EFBFBD><37><EFBFBD>:<><>/<2F>Tł\0<EFBFBD>K\\<07>0<7F>*_8L<38>m<EFBFBD>^r<><72><EFBFBD>V<05>w<EFBFBD><77>\"<EFBFBD><EFBFBD>кB<0C><>Q:5Kn<4B><6E><EFBFBD>v\0<EFBFBD><04>xt<78>;`<60>[<5B><> <09>B<>9!nv<6E><ۢSҏ{:P<>p<EFBFBD>r ~<7E><><EFBFBD><08>1i*B.<07>tY<74>>\r<EFBFBD><EFBFBD>S<EFBFBD>*nJ涨<4A><E6B6A8>7{<EFBFBD>=|R]<5D><14>ռ<EFBFBD><D5BC>4<EFBFBD>i<EFBFBD>U<EFBFBD>2<EFBFBD>2<EFBFBD><32><EFBFBD>Y3<59>c>a,X<><58>3<1A><><EFBFBD>9<EFBFBD>\$<0F><A<14>Q<EFBFBD>&2wӭ3<D3AD><33><EFBFBD>1<EFBFBD><31>/<2F>i<EFBFBD><69><EFBFBD><EFBFBD>j<EFBFBD><6A>sO<73>&<26> <20>M@<40>\\<EFBFBD><EFBFBD><05>گ<EFBFBD><DAAF><EFBFBD>8&I<><49>m<EFBFBD>x\0<EFBFBD> j<>k<EFBFBD>ۛE<DB9B><07><>^<19> <09><><19>&l<><13>Q<EFBFBD><51>\\\"<EFBFBD>c<EFBFBD> <09><>\rBs<EFBFBD>ɉ<EFBFBD><EFBFBD> <09><><EFBFBD>BN`<60>7<EFBFBD>*Co<<05><> <20>\n<0E>ν<EFBFBD>hC<68>9<EFBFBD>#˙ <20>Ue<55>WX<57>z0Y<30>7}<7D>c<EFBFBD><63>8?hm<68>\$.#<23><>\n`<60>\n<EFBFBD><EFBFBD><04>yD<79>@R<>y<EFBFBD><79><EFBFBD>@|<7C>Ǎ<EFBFBD><C78D><EFBFBD>P\0x<05>K<EFBFBD> w<>5<>E<EFBFBD>Le<4C>@O<><4F>u<EFBFBD><75><EFBFBD>|<7C>R<EFBFBD>2<EFBFBD><05>%<25>aA<61>cZ<><5A>:<3A><d<>kZ<6B><1E>y{9Ȑ@ޕ\"B<R`<60> <09>\n<EFBFBD><EFBFBD><04><><08><>QW(<<3C><>ʎ<EFBFBD>革<EFBFBD>q<EFBFBD>j}`N<><4E><EFBFBD>\$<EFBFBD>[<5B><>@<40>ib<05><><05><05>f<05>V%<25>(Wj:2<>(<28>z<EFBFBD><7A>ś<EFBFBD>N`<60><05><<3C> [Bښ:k<><6B><0C>ʚ<EFBFBD>]<5D><>piuC<75>,<2C><><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><39><EFBFBD>e<EFBFBD>j&<26>Sl<53>h~<7E><>N<>s;<3B>;9<><39>u@.<1<><31><EFBFBD><EFBFBD>|<7C>P<EFBFBD>!<21><><EFBFBD>zC<08><> <10> <09><><EFBFBD>{<EFBFBD>`<><7F>Q!<21><><0E>5<EFBFBD>4e<34>d<EFBFBD>G<EFBFBD>hr<68><72><04>P<><0C><>}<7D>{<EFBFBD><1A>FZrV:<3A><><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>|<7C>P<05><>WZ<57><5A>:<3A><>d<05><>~!<21>}<7D>X<EFBFBD><58>V)<29><><EFBFBD><EFBFBD>p4<70><EFBFBD><C293>.\$\0C<EFBFBD><19>V<56><F381BAA9><EFBFBD>{<EFBFBD>@<40>\n`<60> <09><EFBFBD><f<><19>;dc'<27>\r<EFBFBD><EFBFBD>,\0t~x<>N<EFBFBD><4E><EFBFBD><EFBFBD>y<EFBFBD> ˽kEC<45>FK\"Z<>@\\C<03>e<EFBFBD>D.Gf<>I<EFBFBD>8<EFBFBD>ͤ<EFBFBD><CDA4><EFBFBD>CĥY<C4A5><59>q9T<39>CU[<5B><>z<EFBFBD>^*<2A>J<EFBFBD>K<EFBFBD><4B>VD<56>؊<EFBFBD><D88A>&<26><><EFBFBD>b̷KK+<2B><>IJ<EFBFBD>,C<><43><EFBFBD><EFBFBD>,N!<21><>\r3<EFBFBD>Y<EFBFBD>P<>9<EFBFBD>\$Z<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>\$S<06><>5<07>\r<EFBFBD><EFBFBD>aK<EFBFBD><0F>E<><13>n<1C>71Z<31><5A><EFBFBD>3e<07><>Jx5<78>Q<EFBFBD>.<0C><>\n@<40><><EFBFBD><EFBFBD>ǣp<C7A3><0B>P<06><>ѡֽn\r<EFBFBD>r|*<2A>r<EFBFBD><72>% R<><52>蔊<13>)<29><>#<23><>=W\0<EFBFBD>B<EFBFBD><EFBFBD><06>z*<2A>W<EFBFBD><57><EFBFBD>MC<4D><43>_`<60><05><14><><EFBFBD>P<EFBFBD><50>T<EFBFBD>5ۦWU(\0<EFBFBD><07>\\W<><06>&`<60><>a<1C>j)<29><>V<05>W<EFBFBD>ʧ<EFBFBD>b<EFBFBD>f<EFBFBD>O<EFBFBD>rU<72><55><EFBFBD>Ǽ~#c<>Ur<55>5<EFBFBD>`<60><11><1E>Gd<0E><><EFBFBD><EFBFBD>P<EFBFBD><50>fW<66><57><EFBFBD><EFBFBD><08><>Yj`<60><>nj\n<07><>G<EFBFBD>>K<>h<EFBFBD><68><EFBFBD>ǿ<EFBFBD><C7BF>[Mf<4D>g̗<67>|<7C>\"@s\r <20><><EFBFBD>Ӷ<EFBFBD><15>iU<69><55>m<EFBFBD><6D>~<7E><>f<EFBFBD>K<EFBFBD>.x<>t<><74><EFBFBD>X<EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><><D7AC><EFBFBD><EFBFBD>-<2D><><1B>!û<>~<7E><>+Rw<52>*©<><C2A9>ܞ<EFBFBD>K<EFBFBD><4B>\\<EFBFBD>-F/bN<62>s<EFBFBD><73><EFBFBD><EFBFBD>Ru<><75><EFBFBD>i8r<38>\$\"<EFBFBD>8j<02>Rn<13><>5gf<67>@<40>FSM<53>S<EFBFBD>c<EFBFBD><63>5C<><43>*y<>C<EFBFBD><43><EFBFBD>cU<63>@o<><17>esI<73>H9QoCQ<1E><18><0E><><EFBFBD><EFBFBD><EFBFBD>=c<><63><EFBFBD><12><1E><>{<EFBFBD>c8S<EFBFBD>v!<21><>;g<>L<07>5< <09>#<23>z#<23><15><>qL<1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V\r<EFBFBD>2\$<EFBFBD>J/{z<><7A><EFBFBD>m<><6D>i<EFBFBD>nG<6E>?~ĕVu<56>0wʹ<77>=p<>I<15><>HĀX=<3D><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74><07> -<2D><13>MJTP<54>#U<1A><>`<11><>/3\\?<3F>L<EFBFBD><4C><15><><11>y<EFBFBD><14><>*p<05>8<EFBFBD><38><EFBFBD>:<11><>0{<EFBFBD>k<02><><EFBFBD>2<02>&<26>P\0p8<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<04>\\'<27>%<25><><1A><><EFBFBD>.\r<EFBFBD><EFBFBD>,ƁJ<12><><EFBFBD><14><>/_,<2C>4<EFBFBD>~<07><>,<2C>!<0B>Rn%x@<40><>0Fdt\0<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\nK<EFBFBD>\n<EFBFBD><12>G\$<EFBFBD><EFBFBD><0B>Y <20>\0@,)<29>%:\r<EFBFBD>]<5D>L2\0<EFBFBD>PV C\\Ѧ,B\r0W<18>\0<EFBFBD><EFBFBD>Rr<<3C>UH<55><0C><>Q<>Al<41><6C>'<27>\0 <20>T<>)<29>(c<>\\I<><11>;<3B><05>/<2F>ik<69><12>jV^<5E>p<EFBFBD><0B>-PP<05><06>)<29><><0E>Hx<48><07><><EFBFBD><EFBFBD><1F> Np&<08><>\0d<EFBFBD><10>8<EFBFBD>':#Q\$<EFBFBD>Q=<3D>\0Wn<EFBFBD>k<EFBFBD><EFBFBD>,<2C>aS<61><53><EFBFBD><EFBFBD><EFBFBD>qbj\\<EFBFBD><g<>9&<04>e<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>eb:<3A><>N|#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>φ<EFBFBD> <20><>n<><0C><>h<>wJ<8p<38>.<2E><><EFBFBD>9y<39><79><12><>A41auf<75><12><>4<EFBFBD>u\nL<><4C>%<25><>/<2F>:\r5<EFBFBD>%H<>jA^<5E><><19><>s<EFBFBD>\n<EFBFBD><EFBFBD><0F>|<11>x<EFBFBD><78>X<EFBFBD><03> <18>&<01>f<EFBFBD><66><08>얐<EFBFBD><EC9690>@hESЕ^@:8@\r<EFBFBD>n<EFBFBD><12>^<5E><>H\"<EFBFBD>&\rC<EFBFBD>bq!<21>:&<01>AC<08>Jj<4A>& <09>&\r<EFBFBD><0F><><EFBFBD>N<02><>< <09>p<EFBFBD>4<EFBFBD><34>Tiw<><77>-<2D><><EFBFBD>2)ȫ<13>5O<35>B<EFBFBD>3<EFBFBD><33><EFBFBD>#\$<EFBFBD> <20><>e<EFBFBD>VUB<55><18><06>v<EFBFBD>d<1B><><EFBFBD>xS<78><53>7e!<21>DF<44>O`<60><><EFBFBD><0F>f.Q0D<30>#<23>\\<EFBFBD><EFBFBD>%<25><>J|<7C>\"<10>N\0<EFBFBD>l`E<>W<10><12><>\nt<EFBFBD><EFBFBD>UR<55>(<28><>L<EFBFBD><4C><EFBFBD>gCcRy<52><79>T챞:j<><6A><EFBFBD>W<EFBFBD><57><01>E<>.Y<>\"*<2A>25<32><10>X\\)d<>\"lo'zJ<7A><4A>DJYX<><58>\"#<23><0E><><EFBFBD><EFBFBD> G<18><><EFBFBD>><3E>)<29><>Y<EFBFBD>&2<>,'ڄ<>M<EFBFBD><4D><11><>6<C28A>h<EFBFBD><68><08>Z<EFBFBD>N2ȷ@).<2E><>#<23>B<><42>n;<3B><>Ga<47><61>R+<2B>O!|<7C>Ê<17><>\r<EFBFBD>ܓ:<3A><><EFBFBD><EFBFBD><EFBFBD><15><>v[qD¨W<C2A8><57>r<EFBFBD><72><EFBFBD>c<1F><>G<EFBFBD>\\\0'WY<57>ؤ{<EFBFBD>ׄ~2n\\<EFBFBD>\$<<14>XQ2Dw<44>DDxCfH<>,~厏<>T\n(+A\"<EFBFBD>.B<>`<0C><><EFBFBD>ǘ<EFBFBD><C798>L[E<><45><EFBFBD><EFBFBD> <09>\"Y\r<01>C<EFBFBD><EFBFBD><D690>`,z<>XȔ?o<><15>E<EFBFBD>K\"<EFBFBD><0E>}&@`<14><><EFBFBD><EFBFBD>i<<3C><><EFBFBD>Uڹ\$OS1<EFBFBD>Y<EFBFBD>j<EFBFBD>^8\n<0E><>8X<07><><EFBFBD><EFBFBD>_ <09> z<><7A>'ȥQ<C8A5>s<EFBFBD>+c<><63><EFBFBD>X<1F><>L-ß<17><><EFBFBD>\rjD<EFBFBD>5}Q<><1F><07>C<01>L&.=<3D>P0>H<>8H<38><48><0B><07><>G<><0F>K2<4B>0<><07>B<><42>P7<12>Q<>%iG<0E><>h<>^<5E>&5<>5<01>Q\"<EFBFBD>9ъ)<29>P<EFBFBD>BS<11>\n3&<26>ʐ<EFBFBD><CA90><EFBFBD><EFBFBD>\rJ!HJ4\n.{<EFBFBD>W<EFBFBD>\"#Z<>\0R<><52>\r9+2<><08><>DE+ie2<65>Y<EFBFBD>i<EFBFBD>y<EFBFBD><79><EFBFBD>&<26><><EFBFBD>%<25><>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K(<28><>srp<72>%<25><>`/65<36>b2T<<3C><><EFBFBD>a<01>#<23>]<5D><>-Ի<><D4BB>.!<21>K<EFBFBD><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>maJ<61>[KT<4B>\0l<01>PY<50>'4<>&<26>膗~<15><><EFBFBD>1t<><74>4<EFBFBD><12>2j<32>'\0<EFBFBD><EFBFBD>V(<28><>\n*+W<><57><EFBFBD>ci4cʭӞ<<3C><><EFBFBD>X<EFBFBD>/<2F>~<7E>ɢ<18><>L<>&<26><>2<02>b23RҐFT<03><1F><07>R<EFBFBD>%b<UX<55><58><08><17><><06><><18>V \"Z<08><> p<><70>\"<1C>[<5B>@m<><6D>A1c<31><63><1B>k˔ <20>p<><70><EFBFBD>-<2D>|<7C><>l<EFBFBD>f4<66><34>ю\0<EFBFBD>7<EFBFBD><EFBFBD>]<5D>OI<4F><02>@<40><><EFBFBD><EFBFBD><EFBFBD>3r<11>\\Dd9*<2A><>\r3>s<><73><EFBFBD>V}<7D><><EFBFBD>U,<2C>y0<04><><EFBFBD>g<EFBFBD>\0<EFBFBD><11>\"&<26><0B><><EFBFBD><18>\0<EFBFBD><EFBFBD><EFBFBD>P<>BHCrh<72><68><EFBFBD><EFBFBD>i_<><5F> <20><><EFBFBD>`-pЅ<70>6J<36><4A>/<2F><04>1j<0C>.<2E><06><><01>kYÎ9<>(} r<03><18><>P<16><><EFBFBD><EFBFBD>\\<10>gu@<40><>\0w<EFBFBD>-<2D>0<EFBFBD>'<27><<3C>Ώ<EFBFBD>\r<EFBFBD>-\r<0C>˖9<><04>r+<2B><19><>Iޙ<>+<2B>&<26><><03><><EFBFBD>-=<3D>|<13><>yeж( \r<EFBFBD>H<13>z<EFBFBD><7A><EFBFBD>><3E><>N{<EFBFBD><0E><><EFBFBD><EFBFBD>0V<30><11>-<2D>!<21>t<EFBFBD><74><EFBFBD>;ກ|\r<EFBFBD><03>@R<05>\n\0<EFBFBD>Y\"<EFBFBD><18><><EFBFBD>\0<17><>}<7D>s\r\r<1D>A<EFBFBD>V<EFBFBD><56> }<7D>d<EFBFBD>H'8 0<><30><EFBFBD><EFBFBD>9<EFBFBD>1<EFBFBD><31><EFBFBD>8<EFBFBD>\n؍@ P<0B>&:\n<EFBFBD>F<EFBFBD>\0d<10>\0<EFBFBD><02>5<EFBFBD><35><EFBFBD><EFBFBD>3r<33>\rD<EFBFBD>C<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><0B><>8<EFBFBD><38> <09>k<EFBFBD>N='<27>70<37>QP%S<>\\<EFBFBD><EFBFBD>:B<19>pzo<7A>D<><14><13>6<EFBFBD>B<>H<EFBFBD>R<EFBFBD>(<28>4<EFBFBD><34>͐A1<41><31><EFBFBD><EFBFBD>Iv<49>q]<5D><>joD\r#)<29>#%c<>ɱ%<25><>%<25><>_'B<>O )x<>c<>a<>=<3D>/<2F><18><>6H<36>j<><6A>>,r<><72>o)G<><03><>u)<29><>#<23>&<14>#Is I<><49>~<7E><EFBFBD>_<EFBFBD><5F>O<EFBFBD><4F>J~<7E><>՞Yb%*?\$yP0<EFBFBD><EFBFBD>( <09><0E>%㠋<>c<EFBFBD><<3C>0 <09>kPt<50>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>3\"E<EFBFBD>X<1C>2q<32>y<EFBFBD>-:<14>@<40>ʀ<EFBFBD><CA80><EFBFBD>.!<21>qDW<44>0<EFBFBD><30><EFBFBD>* <20>(<28>Z<EFBFBD>+/d<><64>_g=<3D><0C><06>(`f<><14>P<EFBFBD><50><0C>i<EFBFBD><69><EFBFBD>b<EFBFBD>1x<31><78><EFBFBD>b<EFBFBD>><3E>pdd<1D><>T<08><>E<[e)<29><><EFBFBD><EFBFBD>y(}E<>v|<7C>]<5D><><EFBFBD>OCQ<43>r<EFBFBD>H<><17>\0<EFBFBD>A<16><>W<><1B><>J`V3<1E>@B<>I\rm<EFBFBD>I<EFBFBD>uISr<18>Ґx <1C><><07>r<EFBFBD>I<EFBFBD><49>HJ<7F>S<EFBFBD><53>UB<1A>\$<12>@ت<>\"<<3C>pe|<01>1́DD<44>*<2A><0C>DZ<44>e<EFBFBD>T<EFBFBD><54><EFBFBD>5%G<>O<02>\0<EFBFBD><EFBFBD>0I<>(4D<34><44>m<EFBFBD><6D><EFBFBD>פ V<>,{+<2B><16><>P<><50><EFBFBD><EFBFBD><08>A<><41><EFBFBD>U<EFBFBD>]U<>e<><0F>s<EFBFBD>I+@<40><><EFBFBD>\$CMM]<14><>->a<>@Z<13>М<EFBFBD>5<EFBFBD><EFBFBD><C288><EFBFBD>3*<2A><>v֪<76><D6AA><EFBFBD>yU<79>Cebj<62>ӈ<>\r<EFBFBD>HN<>6<EFBFBD>iZ<69>>V)7u<37>@<18><>Z<EFBFBD>H־<48>D|<7C><>5<EFBFBD>Б<EFBFBD>J<EFBFBD>M<EFBFBD>A)SЕ<53>,<2C>i<EFBFBD><69><EFBFBD>f<18>l<EFBFBD><6C>PS:E<18>M<EFBFBD><4D><EFBFBD>삩52p:<07>{<EFBFBD>i<EFBFBD>i<EFBFBD>_<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD>p6<EFBFBD>.<2E>>H(n\$<EFBFBD>1i<EFBFBD>IK<EFBFBD><EFBFBD>֪<EFBFBD>3<EFBFBD>V\r<EFBFBD>]^ij<><10>ꮧ\n<EFBFBD>)0I<30><49>`B@<40>b<EFBFBD>j6>h<>F<>g<0C>/ y2<79><32>A3YG<59><47> <20><18><>z<EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>k=<3D><>R<>Z<EFBFBD><5A><EFBFBD><EFBFBD>AYΪaW<><11><>*<2A> <02>(5<><35><1B>!O<><4F><EFBFBD>2ss'xg<>x\0<EFBFBD><04>\"<EFBFBD><EFBFBD>\n@Ek<45>\0<EFBFBD>Rֳ<EFBFBD><EFBFBD>%Ց<><D591>'<27>B*f<>Bnf<6E>Sfצ5<D7A6><35>+ʶ<06><><EFBFBD>#Bݯ<42><14>%RX<>¶g<C2B6>@R4<17>`\$i<EFBFBD>e<EFBFBD><1F>;<01><0F><> %<25>ʸ<02>(<28>|<7C>ȇ\0<EFBFBD><05><><EFBFBD><0F><1C><><EFBFBD>]:<12>gԵ><3E><01>m~<7E><>\"+)<1D><>?<3F>]<5D><><06><17><><EFBFBD>C0<43><30>\$S<EFBFBD><<3C><><EFBFBD><EFBFBD>Ѕ<EFBFBD>+\0<0E>֭<EFBFBD>3<EFBFBD><33>r<EFBFBD><72>;H<><48>iR<69>><3E>h<EFBFBD>vg<76><67>%<25><><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>RhT<>%<25>N<EFBFBD><4E>l<15>c<><63><EFBFBD>d+a<><61>E?<}<7D>Tfʼn욢<>\n\nJ<EFBFBD>UG <09>sv<73><15><><EFBFBD>kP<13><><EFBFBD>u<EFBFBD>!s'\$<EFBFBD><EFBFBD>;<3B>0<EFBFBD>E<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&Lo\$ mUM&<13><>\"<EFBFBD><02><><EFBFBD><EFBFBD>f<EFBFBD><66><0F><>w匄\0<02>\"<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>M<EFBFBD>;<3B><><1A>Y<EFBFBD>`W<1A>B<EFBFBD><07>\0T<EFBFBD>f)X<1B>tT<>x<17>\0000<08>V<03>,<2C><>!s0<73><30>G\"eQڏT4<EFBFBD><EFBFBD>\$<EFBFBD>[<07>E/eO<65><4F><1F><><<1C><><EFBFBD>-<06><>H-0,<2C>d?R<>,r<>@gG<67><11><<0B><><EFBFBD>`<60><>sqe<71><65>ۢ<>m<EFBFBD><6D>H<EFBFBD><48>L.<2E>]<5D><>HB<48><42>\"<EFBFBD><EFBFBD>\0X<07><>B<EFBFBD><42>7b<37>s<15>\n<EFBFBD><EFBFBD>L<1C>7<EFBFBD>Z<EFBFBD>Z<EFBFBD>\$<06><><EFBFBD><EFBFBD><EFBFBD>\rפ5<EFBFBD><EFBFBD><EFBFBD>w<05>Ҟg<D29E>/]<5D><>h<EFBFBD><0B>;b<>7<37><0C><>M]4 <09>ҫ<><D2AB><12>dFD<46>1<EFBFBD>z<EFBFBD>ca<63><61>o<06>Պ\0r<EFBFBD>;<3B><>P<EFBFBD> 8U<38>!<21><>5<EFBFBD>c<EFBFBD><63>#]<5D><><EFBFBD><EFBFBD>R<EFBFBD>@ƅ{<0B>'<27>i@:<3A><05><>ʴ<EFBFBD>ɧn<C9A7>kX<6B>©ֱ<C2A9><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8\n<EFBFBD><EFBFBD><EFBFBD>s|<7C>A\rQ<02>I<EFBFBD>b<><18>M'<27><>PU<0E><><EFBFBD>2<EFBFBD>8<EFBFBD>#<23>;<3B>KO_}<7D><>#<23><>wi=<3D><>#fc<66><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֞<01>ݞ<EFBFBD><DD9E>z<15><01><><EFBFBD><EFBFBD>/&<26>gw<67>m<EFBFBD>X<05> `<11>d<EFBFBD><64>[<1A>i<01>`m<>X<1D><18>b},<01>|<7C>+<2B><02><><EFBFBD><EFBFBD>ts<74>+<2B>iiԇ<>t<05>\n<EFBFBD>>8()<29><1C>6f2<66><32><EFBFBD>#d<><64>˴IH(\0.<2E><>#v/9j<39><6A><EFBFBD>!<21><>2КE/:H/<14><>A<EFBFBD>ybj<62><6A>\r<EFBFBD><EFBFBD>zV,p<>w<EFBFBD>E}^``<05><>?X<>-<2D>\nz<EFBFBD>*<2A>UD~?<3F><><EFBFBD>\\Hc<EFBFBD>U<EFBFBD>WXz\\0<EFBFBD>!<21>rJ<72>A<EFBFBD>o`<60><><EFBFBD><EFBFBD><EFBFBD>Ba<42><61>!<21>C<EFBFBD>!<21><0B>W(<28>լX<D5AC>P<>.<2E><><EFBFBD>È`<60>@ov<14><><EFBFBD>f<EFBFBD> in<12>@U<><55><EFBFBD>U<EFBFBD><p<EF8BBC>GN<47>U<EFBFBD>𩆙c<1B><>8<EFBFBD>7<EFBFBD>O<EFBFBD>-<2D><><02><16><><05><><EFBFBD>ABXr<58>vų,<2C>H<EFBFBD>؍58<35><1E>ո?<3F>cb<63>Cʸ<43>5q<35><71><EFBFBD><EFBFBD>&>!<21>4 <20>ͅ(q<><1F> I<01><>-Jm\0><3E>5I<35>D<EFBFBD>m<EFBFBD>B<EFBFBD>mD<6D>\0<EFBFBD><EFBFBD>`2<><32>yN<79><4E>D<12><>4N<34>L`<60><1D><><EFBFBD><EFBFBD>0x<30>_~1\07<><37><01><07>k<EFBFBD><6B><1A><>h<EFBFBD>RO<52>`j_<6A>ŭ<EFBFBD><C5AD><EFBFBD><EFBFBD> <20><><01>m{<EFBFBD>p0<70><30>!9'<0C>K-<2D>\$<0B><01><><EFBFBD><EFBFBD>\nj~<05>h<EFBFBD><68><1F>Q<EFBFBD><51>N<EFBFBD><4E>\0<EFBFBD><EFBFBD>q{<EFBFBD><EFBFBD>x<>\"<EFBFBD><EFBFBD>2<EFBFBD>/q<16><>iT<69>F/<2F><16>*V@*<2A>g<EFBFBD>-<2D><><EFBFBD> b<>c0 H<>0\0]<5D>@<1F>H<EFBFBD>U<55>:U,V<1F>Gd<0B>?<3F><>u<EFBFBD>L}L<>9<EFBFBD><13>u<18>:\"\$<EFBFBD>Tl<EFBFBD><EFBFBD><EFBFBD>e<01><>ɐ;<3B><>V<EFBFBD>\nL<EFBFBD>!+<2B>džT<C786>1<>j,<2C>}R\r-[<01>2<EFBFBD>6U<>i\0d<EFBFBD><EFBFBD>/Ҏ<><D28E><0F>@r<02>.<2E><>PF <09><>g<EFBFBD><67><EFBFBD><<3C><><EFBFBD><EFBFBD>S<><53>&i\r\$<EFBFBD>R72<EFBFBD>>fs#<23><>3<EFBFBD><33>7UNȵ\"ϱH<EFBFBD><EFBFBD>+<2B>9<EFBFBD>[8<> B<06> <09>A<EFBFBD><41>!3<>_<EFBFBD>Z<01>5<EFBFBD><35>3<EFBFBD><33>%<25>r<EFBFBD><72>W9y<39><79><EFBFBD>\n3K<EFBFBD>|<7C><>o5gh;<3B><><EFBFBD>d<><64>\r<EFBFBD><EFBFBD> D<><44>3R<33><52>g<EFBFBD><67>L\\<EFBFBD><EFBFBD>v IGB<47>_<EFBFBD>8`<60><><EFBFBD><<3C>a<EFBFBD>?<3F>s<EFBFBD>q<EFBFBD><71>䘬<EFBFBD>b<1C>2<EFBFBD>N<EFBFBD>(<28><>u<13><>`L<><4C><13>Ӧ!U<>><3E><11>\r<EFBFBD>e<EFBFBD>~_<><5F><EFBFBD><15>!<21>S<EFBFBD>t1'=\r<04>C<EFBFBD><43><EFBFBD>Q<EFBFBD>r<EFBFBD><02><>\rC<><43>*᠗<>f<EFBFBD>3`{<05> G<><47><EFBFBD><EFBFBD>|U\$n<EFBFBD>J<EFBFBD><EFBFBD><15>3H<05><>;<3B>R5ؖ}<7D>Qw9<77>B<EFBFBD><08><>=k0<6B><30>F<EFBFBD><46>Ǻ\$1sb<EFBFBD><1C><>-L3<4C>C\0w!ʹ<>P<EFBFBD>&[<5B>#0<>طPS<50>\"<EFBFBD><EFBFBD><EFBFBD><08>%r<>{ZA<EFBFBD><EFBFBD><EFBFBD>]<04>DE%<25>)<29><>T<06><>{@s<><73><EFBFBD><EFBFBD>u<EFBFBD>e<EFBFBD><01>R<EFBFBD><52>Ԉ<EFBFBD>53<35><33><EFBFBD><EFBFBD>#<1A>><3E><><<3C>\"<EFBFBD>A:<3A>t\"<EFBFBD>z<><1B>KH7<48>8}<7D>k<EFBFBD><6B><EFBFBD><08><1A><>3<EFBFBD>'<27>N^<5E><><14>Vh\r<EFBFBD>Pj;֯<><D6AF><EFBFBD>u<EFBFBD>f.<15><><1A><>\$<EFBFBD>yW<EFBFBD>|U\$<EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>qĪM<02>SŞ8m2<6D>İ<EFBFBD>P<EFBFBD><50>.<2E>'<27><>c<EFBFBD><63>,<2C><>R\0K<EFBFBD>X<EFBFBD>Ў<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><1F>q|<7C><>Z<EFBFBD>P<0B><><EFBFBD><EFBFBD><13><>,<2C>\r<EFBFBD>\r<EFBFBD><EFBFBD>C<EFBFBD>Ř<EFBFBD>}<7D>u̟5<CC9F><35><EFBFBD>?<3F><>z <09><>N<EFBFBD>k͉lI<6C>pw3<77><33><EFBFBD>KMj9<6A>[{È1i<31>s<EFBFBD><73>yN<79>Ýz<CD81><7A><EFBFBD>qv<71>eGÖq<><71>\"r<EFBFBD>媩<><15><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>\r<EFBFBD><EFBFBD>μN<CEBC>7<EFBFBD>C<07>+<02>@FJ.2El<EFBFBD><EFBFBD><EFBFBD>A8<0E><>{<EFBFBD>Q;n]&<10>H<0F>\\<13>>N<>d\0ctʄ<EFBFBD>Ў<08>?t%%<25>v}@ƴ<><C6B4>ZL| y<><79>X/鳍<><0B>n<17>ք<EFBFBD>SR<53>mxW<78>/<2F>Hr<12><>l<EFBFBD>o<EFBFBD><10><>ԩ<EFBFBD><D4A9><EFBFBD><EFBFBD>[<5B>#<23><> F<>k<>*<2A><>~滓<08>t<EFBFBD><74><EFBFBD>W<1C><>;X\0<EFBFBD>~<7E><><EFBFBD><EFBFBD>r<EFBFBD>i颃\$V<EFBFBD><EFBFBD>7;<3B><>4;F<>\$<EFBFBD>B<EFBFBD><EFBFBD>`;6<><36><EFBFBD>\\n<EFBFBD><EFBFBD>Tw<>j<EFBFBD><6A>:p<><70><EFBFBD><EFBFBD>t<0C>\$ 7i<37><69>ֿ<EFBFBD><D6BF><EFBFBD><1D>7+Y!<21>5.#<23>ۇ<EFBFBD>U<1C><><EFBFBD>ۻGv<47>۞(<28><>W<EFBFBD><04>*_Sj<53>c]<5D><>`e<><65>nyS<79>m<EFBFBD>ܹ#<23><06><0C><><EFBFBD><EFBFBD>i<EFBFBD>52<35>s~G;s<><73>?<12>F<EFBFBD>V<EFBFBD><56>̈́ۋ\0N<EFBFBD>,H<>@T'L<>i@<0B>/<13>Y<EFBFBD><59><EFBFBD><EFBFBD>\r\0<EFBFBD><EFBFBD><EFBFBD>xUx<EFBFBD>d>漂<><E6BC82><EFBFBD><EFBFBD>@3\0yH^o\"u<EFBFBD>ā<EFBFBD>&͇x?Ti<0B><>\$/n<>T<EFBFBD>5<EFBFBD>ʼn<EFBFBD> <09>ΰ<<3C><0C><05><>d1ȋ<31><13><05><>)<29><>y<EFBFBD>|9<08>2<EFBFBD>T98a<38>/<2F>S<EFBFBD>X<EFBFBD>)<1C>Q<EFBFBD>H}<7D><><EFBFBD><EFBFBD>.<2E>g<EFBFBD><67>K<EFBFBD><4B><EFBFBD>5<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>=<3D><>pߎ0<DF8E><30>ô<EFBFBD>kJ\n<EFBFBD><06>L<EFBFBD>f<EFBFBD><1F><12><><EFBFBD>R <09>EFP<46>d2 +ȥ<01>q9d <20><>yZ<79><5A>!< <09><>j<EFBFBD><6A>\$I<EFBFBD>W<15>\") <20>\n.4<EFBFBD><EFBFBD>N3 7|<7C><>暇td<>\ne{ӡ<EFBFBD><EFBFBD>z<EFBFBD><EFBFBD>Th<EFBFBD><EFBFBD>a<>nx<6E>,%<25>/39<33><19>rw=\"<EFBFBD>]<5D>t<EFBFBD><74><1<><31><EFBFBD>|<05>\\n<EFBFBD>W<EFBFBD>~<7E>XA<58><41><04><><EFBFBD><EFBFBD>h<EFBFBD><68>d( ޚv<DE9A><76><18><>Loc<6F>8<EFBFBD>l<EFBFBD>9<EFBFBD><1C>W7<57>}w<>8Ch<43><68><EFBFBD><EFBFBD>w\"PZ<><1C>]<5D><1B>u<1A><17>H Nk<4E>,<2C><><EFBFBD><EFBFBD><EFBFBD>.<2E><0B><><EFBFBD><EFBFBD>&@<40><>\$<EFBFBD><EFBFBD>w<EFBFBD>/<2F><<3C><>O<EFBFBD><4F><EFBFBD><EFBFBD>n<EFBFBD>|<<3C><>H<EFBFBD><48>RKt6H<36><48>2OD<4F><44>!Ds<44>¾<>0A<30>4F<34>ӣ<EFBFBD>u(x<><78>]q3M;<3B>^R<><52><EFBFBD><EFBFBD>t<EFBFBD><74> <20><><EFBFBD><EFBFBD>)\r<EFBFBD><19>0<EFBFBD>9ޟ2<DE9F><1B><>g3r<33>=<3D>L\"<EFBFBD> ¾<><19>pe<>0H<30>-=<3D><>ㄊb6<0F><>a<0B>,<2C>h,<2C>[k<19>{[<15>E3<45>-<2D>I<49><7F>,<2C><>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD>ך<EFBFBD>P c:<3A><><EFBFBD>u<EFBFBD><75>\r<EFBFBD>]<5D>M<EFBFBD><4D>ؤD (^<5E>eƿ<65><C6BF>,<2C><>iG^<6<><36>H<EFBFBD>jBWK<57><ڸ%⫎<>wl<05>.<2E><>PT<1E><>FK+<2B><>f<EFBFBD>&<26>v<EFBFBD><76>0<EFBFBD><13>]@<40>Qx/b<>vc'\n<EFBFBD>A9<EFBFBD>xb<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<16>ԧ<EFBFBD>]y<>M<EFBFBD>}'\\<EFBFBD>)/Hgm <09>fϣ<66><CFA3><08>Uz<55>6]Sŗ<53> ߬&<26><<3C><>n<1B>zt<7A>oN<6F>z+<2B><>f\r<EFBFBD><EFBFBD><EFBFBD>>Y<>{n<EFBFBD>~<7E><>\$Ԇ̳0y<EFBFBD><EFBFBD><14>g%)<29> <20>=&<26>{@t<>w<EFBFBD>irK<72><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>濺zٴ<><D9B4>)<29>y42<34><32>Y<EFBFBD>><3E>V3<56>^m<04><><EFBFBD><1D><><03>|<05>I<EFBFBD>x<06><><EFBFBD>T֣<>z<EFBFBD>wk<77><6B><EFBFBD><EFBFBD><EFBFBD>ʉ,<k<><6B>\$+<2B>1<<3C><> _<><5F><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><1D>}g<><67>9F]<5D>k)<29>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>e}<7D>iΨ<69>g<EFBFBD><67><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0ڃ?<3F>۳<EFBFBD><DBB3>)HBH<01><>DE<>e<EFBFBD><65><EFBFBD>V<EFBFBD><56>mP<6D>yP<79><50>(<28>(<28>1}<7D><><EFBFBD><EFBFBD>W<EFBFBD>05;\\\$+@<40><><v_\"<0F><13>2@bM۶:<3A>X<EFBFBD><58>V<EFBFBD><56><EFBFBD>]꾼(<28>g\"<EFBFBD>s\$<EFBFBD><EFBFBD><EFBFBD>B<07>3\\<EFBFBD>xDp<EFBFBD><EFBFBD><EFBFBD>@D<04>'<08>X<10>*<2A>N<EFBFBD><01><01><><EFBFBD>\$2<EFBFBD><EFBFBD>/VeM<0E><><EFBFBD>y<EFBFBD>r\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>VL<EFBFBD><19>e<EFBFBD>L<EFBFBD>dӸ<1E><><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD>[K<><4B>p_<70>@^<5E>c<EFBFBD>%<25><>)wߩ<>s<EFBFBD>Hl<48>\n<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD>?VO<56>H<48>j<>&l<>_<EFBFBD><5F>YŮׅ<C5AE><D785><1C>9<EFBFBD>b'Q?2[}<7D><><04>{M\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2\\xml<1C>PѦ<50>3<EFBFBD>.<2E><><EFBFBD>fD<66><44>(+%<12><>D\r<EFBFBD>r)@<40><><EFBFBD>h^<5E><><EFBFBD><EFBFBD>If<49>Mlu<6C>x<EFBFBD>\0<EFBFBD> <09>ڿe><06>5<18>5<EFBFBD>S<EFBFBD><53>-<0B><>;<11>_<1B><0F>@<40><><EFBFBD>X<EFBFBD><0E>%,ɿ<>f<>|<7C><><EFBFBD>@+<2B>O<EFBFBD>|J4P|<7C> -<2D><08>Ś<>u<EFBFBD>h8<68><38><EFBFBD>`<60>~<7E>5<EFBFBD>l<EFBFBD><6C>Q<EFBFBD>;<3B>o@<40><05><><EFBFBD>G<0F>D<>A<EFBFBD>_<EFBFBD>\0ӄF_Z<5F>ٱD+:<3A> M<>u}<7D>L<EFBFBD>\"<EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>(<28>L<EFBFBD><4C>_<16><10><>d<EFBFBD>a<02><03><>o<EFBFBD><6F><EFBFBD><EFBFBD> ?<3F><17><>|<7C>sD\\1A^\\<EFBFBD>\\G<EFBFBD><EFBFBD>a-\\nˣ)<29><><EFBFBD>3e<33>܄<EFBFBD>'Q<03><>zf<07>v}q<><71><14>P<EFBFBD>7\0'<27><1A><><EFBFBD><1F>e\r:<3A>Up<01><05>y<EFBFBD><79>x;<01>_YT<59><54>Yl<><6C>@ղ+<2B><><EFBFBD><EFBFBD>Mz6<7A><36>d<>)<29><0C>`5{0<EFBFBD>W\0<EFBFBD><>B<EFBFBD> <><7F><EFBFBD>*U<><55>Z<EFBFBD><5A><EFBFBD>@<40>}l-<2D><>8<EFBFBD>p<EFBFBD>XR`8<><38><13><>nG( <17><>\$<EFBFBD>%MT<17><><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>ڪ<EFBFBD>FE<13>dc<64><63>3<><33> <09><>\n<EFBFBD><&-9Jow<6F><77>\0)?Ƥ0x:j<><6A>|i<10><12>vAT<>;I<0F><>Q<><51>AX&C裡M@Jl<02><>L<EFBFBD>(LP<1B><06>3<EFBFBD><33> <20><><05>0<EFBFBD>\0<EFBFBD><EFBFBD>H<EFBFBD>+\0 <<07>; <20>N<EFBFBD><4E>(;6H<1D><><EFBFBD>F <1E><>e <20>p<18><>6<02>/<10>sJ`<16>*<2A><>ڐ <09>L3<4C>2<EFBFBD><32><<3C>9\" <09><><EFBFBD>^lF<1D><><0F><><EFBFBD><EFBFBD>F(<15><><EFBFBD><7F>B @<40><01>P܇;<02><><EFBFBD>F<EFBFBD>v5l\0<EFBFBD>ݠ00t<30>k<03><><EFBFBD>>\0O<03>U<EFBFBD><<3C><><EFBFBD>Xq07<30>BF<05>8<EFBFBD><38><03>K<EFBFBD>#4<>4 <1E>%<03>wPN<50><4E><08>A<>Q1<1B>D<EFBFBD>O`<0E>AHBp<42>p<05>`2^<03><06>c<EFBFBD><04> P,=<3D><02><05>b<EFBFBD><62><EFBFBD><EFBFBD><0B>F<17>C<EFBFBD>\r<EFBFBD>2<><01><>`8@<40>Ud<17>1<EFBFBD><31>I<><49>A<><41>T<1A>3<EFBFBD><33>\\\0p1)5)F<>@<40><>D\r%VAd<41><64><11>\r^<5E><19> Âh <09>#<23>A<03><><EFBFBD><EFBFBD><EFBFBD>`<60><>\r<EFBFBD><EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>\0><3E><><03>b <09><>\\p<>AK<<10>w\0<EFBFBD><07>\r<EFBFBD>B%<25><>W<EFBFBD>f}<7D>mH<>j<EFBFBD>a<1D><>dt\"0P<EFBFBD>|<14><><EFBFBD>?<08>Ԇ<EFBFBD><D486>6<EFBFBD>#<23>?<3F>O\n\r<EFBFBD>R<EFBFBD><EFBFBD><1F>\$o<EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>} S<><53>䟩\n<08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F>[\0 <09><>?<3F><03><><EFBFBD>d<EFBFBD>r<0B>\$o<EFBFBD>+`X-Y.<2E><>V<10><07>I<EFBFBD>G>\0V<11>PM\0W<04><>G<0C>z]<5D>\0TV<EFBFBD><EFBFBD>d܀_<0B><>a@-<\r<EFBFBD><EFBFBD>\0Y<EFBFBD>+<2B>H<EFBFBD><48><EFBFBD>-<2D><><EFBFBD><0B>f<EFBFBD><66><EFBFBD>tu<74><75>'b<>4O<34><06>P*<04><>f<EFBFBD><66><EFBFBD>Ry*9<>8<EFBFBD>:<16>G<EFBFBD>D<EFBFBD><44>3 34<33><01>5.F<>V/0<><30><EFBFBD><EFBFBD>R<19><>Й<12><18>HaCF`g<>+־<03>\0<EFBFBD><h\0\$<EFBFBD><EFBFBD><EFBFBD>#<23><>m/<2F><><EFBFBD>㐞x<08>CAS<13><>Xҋ<58><16><>p<EFBFBD><13>bc24<32><0B><>|<7C><>g<EFBFBD>D<>7I<37><49>J8@<40><><EFBFBD><EFBFBD>|<08>6<EFBFBD><36>-p<12><06><><EFBFBD><14><><08><>*B<><42><EFBFBD>=%<25><1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02>ԯ<><D4AF><1E>r<> ^CJ`\0sEpi<>h3<68><33><EFBFBD>`<60><><EFBFBD>H<><48>p<><70><EFBFBD>U`<60>e<EFBFBD><65>&<1C>1<EFBFBD>%\0V<08><><EFBFBD>V'X(W`<1F><>\r<EFBFBD><17>i<EFBFBD>F<1D>k<EFBFBD>W<EFBFBD>n<EFBFBD>q<><05><01><><EFBFBD>DQ#t<><11>Kt\$<EFBFBD><EFBFBD><EFBFBD>Q<10><><EFBFBD>\n\0<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>X<<3C>Cp<43>\0K<>(\0<EFBFBD><01>C<EFBFBD>1<EFBFBD>BFIq<15>)q<15><><11><1C> C~<7E><><1D><><EFBFBD>q\r<EFBFBD><EFBFBD><02>C<EFBFBD>\rؘK<EFBFBD>\"<EFBFBD><19><>j<EFBFBD>ZZB<5A><42>v<19>#<23>< <20>C<EFBFBD>\r<EFBFBD>u3<><33><EFBFBD> <09>+D<>钲<EFBFBD>Ԍ<EFBFBD>;<3B>-<2D><0C>");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("v0<EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==<3D><>FS <09><>_6MƳ<4D><C6B3><EFBFBD>r:<3A>E<EFBFBD>CI<43><49>o:<3A>C<11><>Xc<58><63>\r<EFBFBD>J(:=<3D>E<EFBFBD><13><>a28<03>x<EFBFBD>?<0F>'<27>i<EFBFBD>SANN<02><><EFBFBD>xs<78>NB<><42>Vl0<6C><30><EFBFBD>S <09><>Ul<14>(D|҄<><D284>P<EFBFBD><50>><17>E<EFBFBD>㩶yHch<><68>-3Eb<45><62> <20>b<EFBFBD><62>pE<70>p<EFBFBD>9.<2E><><EFBFBD><EFBFBD>~\n<EFBFBD>?Kb<4B>iw|<7C>`<60><>d.<2E>x8EN<45><4E>!<21><>2<><05>3<EFBFBD><33><EFBFBD>\r<EFBFBD><1C><>Y<EFBFBD><59><EFBFBD>y6GFmY<6D>8o7\n\r<10>0<EFBFBD><d4<64>E'<27>\n#<1E>\r<EFBFBD><EFBFBD><EFBFBD>.<2E>C!<21>^t<>(<13><>bqH<71><48>.<2E><><07>s<EFBFBD><73><EFBFBD>2<>N<EFBFBD>q٤<71>9<39><EE8BA6>#{<02>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>3nӸ2<D3B8><32>r<EFBFBD>:<<3C>+<2B>9<EFBFBD>CȨ<43><C8A8><EFBFBD>\n<<3C>\r`<60><>/b<>\\<EFBFBD><10><>!<21>H<>2SڙF#8Ј<38>I<13>78<37>K<EFBFBD><1A>*ں<>!<21><><EFBFBD>鎑<EFBFBD><E98E91>+<0F><>:+<2B><><EFBFBD>&<26>2|<7C>:<0B><1C>9<EFBFBD><39><EFBFBD>:<0E><>N<EFBFBD><4E><EFBFBD>pA/#<23><> <20>0D<04>\\<EFBFBD>'<27>1<EFBFBD><31><1E><>2<>a@<40><>+J<>.<2E>c,<2C><><0C><><EFBFBD>1<EFBFBD><31>@^.B<><42>ь<EFBFBD>`OK=<3D>`B<17><>P<EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD>>(<28>eK%! ^!Ϭ<>B<EFBFBD><42>HS<14>s8^9<>3<EFBFBD>O1<4F><31>.Xj+<2B><><EFBFBD>M #+<2B>F<>:<3A>7<>S<EFBFBD>\$0<EFBFBD>V(<28>FQ<46>\r!I<07><10>*<2A>X<EFBFBD>/̊<><CC8A><0C>67=<3D>۪X3݆؇<DD86><D887><EFBFBD>^<5E><>gf#W<><57>g<EFBFBD><67>8ߋ<38>h<EFBFBD>7<EFBFBD><37>E<EFBFBD>k\r<EFBFBD>ŹG<EFBFBD>)<29><>t<EFBFBD>We4<65>V؝<56><D89D><EFBFBD><02>&7<0F>\0R<05><>N!0<>1W<31><57><EFBFBD>y<EFBFBD>CP<43><50>!<03><>i|<7C>gn<67><6E>.\r<EFBFBD>0<EFBFBD>9<EFBFBD>Aݸ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD>^<04>8v<38>l\"<EFBFBD>b<>|<14>yHY<1F>2<1B>9<05>0<EFBFBD>߅<EFBFBD>.<2E><>:y<><1E><>6<EFBFBD>:<05>ؿ<EFBFBD>n<EFBFBD>\0Q<EFBFBD>7<EFBFBD><EFBFBD>bk<><\0<EFBFBD><EFBFBD>湸<EFBFBD>-<2D>B<EFBFBD>{<EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><10><>&<26>/n<>w<><77>2A<41><D7B5><0C><><EFBFBD>A<0B>0yu)<1A><><EFBFBD>kLƹtk<74>\0<EFBFBD>;<16>d<EFBFBD>=%m.<2E><>ŏc5<63>f<><66><EFBFBD>*<2A>@4<><34> <20><16><>c<EFBFBD>Ƹ܆|<15>\"맳<EFBFBD>h<EFBFBD>\\<EFBFBD>f<08>P<05>N<EFBFBD><4E>q<EFBFBD><71><EFBFBD><EFBFBD>s<EFBFBD>f<EFBFBD>~P<><50>pHp\n~<7E><><EFBFBD>>T_<><5F>QOQ<4F>\$<EFBFBD>V<EFBFBD><EFBFBD>S<EFBFBD>pn1<1F>ʚ<EFBFBD><CA9A>}=<3D><><0B>L<><15>Jeuc<75><07><><EFBFBD><EFBFBD>aA|;<3B><>ȓN<C893><4E>-<2D><1B>Z<EFBFBD>@R<><07>ͳ<EFBFBD> <20> <09><>.<2E><1F>2<EFBFBD><32><EFBFBD><0C><11>`RE<52><45><EFBFBD>^iP1&<17><>ވ(<28><><EFBFBD>\$<EFBFBD>C<0E>Y<EFBFBD>5<EFBFBD><EFBFBD><D883>axh@<40><>=Ʋ<1E>+>`<60><>ע<><17><07>\r!<1C>b<EFBFBD><62><EFBFBD>r<0E><>2p<13>(=<3D><><18><17>!<21>es<65>X4G<34>Hhc <20>M<EFBFBD>S.<0E><>|YjH<><48>zB<>SV<53><56>0<>j<>\nf\r<EFBFBD><EFBFBD><EFBFBD><14><>D<EFBFBD>o<><6F>%<25><>\\1<EFBFBD><EFBFBD><01>MI`(<28>:<07>!<21>-<2D>3=0<><30><EFBFBD><0B><><13>S<EFBFBD><53><EFBFBD>gW<67>e5<65><35>z<EFBFBD>(h<05><>d<15>r<EFBFBD>ӫ<02>Ki<69>@Y.<2E><><12><><EFBFBD>\$@<40>s<0B>ѱEI&<26><>Df<44>SR}<7D><>rڽ?<3F>x\"<EFBFBD>@ng<6E><67><04><>PI\\U<><55><<3C>5X\"E0<1B><0B>t8<74><38>Y<EFBFBD>=<3D>`=<3D><>><3E>Q<19>4B<>k<EFBFBD><6B><EFBFBD>+p`<60>(8/N<>qSK<53>r<EFBFBD><72><EFBFBD><EFBFBD>i<01>O*[J<1C><>RJY<4A>&u<><75><13>7<0F><><15><><EFBFBD><EFBFBD>#<23>><3E><><EFBFBD>Xû<>?AP<41><50><EFBFBD>CD<43>D<EFBFBD><44><EFBFBD>\$<14><><02><><EFBFBD>Y<EFBFBD><59><<3C><><EFBFBD>X[<5B>d<EFBFBD>d<EFBFBD><64>:<3A><>a\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>Π<><CEA0>W<EFBFBD>/ɂ<>!+eYIw=9<><39><EFBFBD>i<EFBFBD>;q\r\n<EFBFBD><14><11>1<EFBFBD><01>x<EFBFBD>0]Q<><<3C>zI9~W<><57>9RD<0B>KI6<49><36>L<EFBFBD><4C><01>C<EFBFBD>z<EFBFBD>\"0NW<>WzH4<48><34>x<EFBFBD>g<EFBFBD>ת<EFBFBD>x&<26>F<EFBFBD>aӃ<61><D383>\\<EFBFBD>x<EFBFBD><EFBFBD>=<3D>^ԓ<><D493><EFBFBD>KH<4B><48>x<EFBFBD><78>ٓ0<D993>EÝ҂ɚ<D282>X<EFBFBD>k,<2C><0E>R<><52><EFBFBD>~ <09><>̛<EFBFBD>Ny<4E><79>Sz<53><05><>6\0D <09><><EFBFBD>؏<EFBFBD>hs|.<2E><>=I<>x}/<2F>uN<75><08><>'<27>[<5B>R<><52>`<60>N<EFBFBD><1C>95\0<06><>C<><43><0C><><EFBFBD><EFBFBD>X<EFBFBD>ْ<EFBFBD>6w1P<06><16><0F>u<EFBFBD>L\0V<EFBFBD><EFBFBD>ʲO<EFBFBD>9[<07><>O<>><3E><>PK<50>tÈu\r<EFBFBD>|<7C>̮R<CCAE><52>pO<70><4F>U<14><>Drf<01>9<EFBFBD>L<EFBFBD>cSvn<76><6E>Qo<1C><><EFBFBD>@o<><6F>(<28><06>ްàp<C3A0><70>a*<2A>^<5E>O>Oɹ<<3C><><EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<1A>ٓ<EFBFBD><D993>P><3E><>H^<5E><><EFBFBD> psTO\r<EFBFBD>0d<16>{<EFBFBD>Z\$ 2<>,7<>C<EFBFBD><43><EFBFBD>!u<><75>}B<0C>^<5E><><EFBFBD><EFBFBD>?<3F>D<EFBFBD><44>ڃF<>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>H<EFBFBD>Ι`<60><><EFBFBD>'<27>@J<><1B>3<EFBFBD><1F>|O<>ܹ<EFBFBD>B<EFBFBD>Mb<4D>f1<66>n<EFBFBD><6E>@<1A>1<EFBFBD><31><EFBFBD>(ղ<><16><17><03>!<21>oow<03><>f<EFBFBD><66><EFBFBD>)I<>L\\[<16><><EFBFBD><EFBFBD><1D>8[1)<29><>!)<29><><16>u<EFBFBD><75>~<7E>c<EFBFBD>-<2D>6-<2D><><EFBFBD>y* <09><><EFBFBD>>\"<EFBFBD>m<EFBFBD>61<><31>ӕ<EFBFBD>.<08><04>~<05>*<2A>x<EFBFBD><06>諍q<E8AB8D><71>ǚG |<7C><>rl<72><1B>O*%<25><><EFBFBD><EFBFBD>݅<EFBFBD>A<EFBFBD>bRAx<41>g<EFBFBD><67>D<EFBFBD>f<EFBFBD>V\\<EFBFBD><EFBFBD>R5l<0F><>ޤ`<60><>5`<1B><>w<EFBFBD>|<14><><EFBFBD>Sg<04><EFBFBD>O<EFBFBD><4F><EFBFBD>B;<15>Ϯ^LÖ<4C><C396>W?<3F>5 <20><02>ac}<7D><>s<EFBFBD>ݏ<EFBFBD>I<EFBFBD><49>A<EFBFBD><41>r<EFBFBD><72>ݺO0<4F>;w<>x<EFBFBD><78><EFBFBD>P(<05>b<>m<EFBFBD>L'~<7E>wh\0c<EFBFBD>¨pE<EFBFBD>߲:C<>{g&ܾ/Ƒ>[<5B><><EFBFBD><19>ۜ) a}<7D>n͡<6E><CDA1>wN<77>˼<EFBFBD>x<EFBFBD>]V^ye&<18>@A <09>P\"<EFBFBD> <20>E?P>@<40>|<7C>!8 <20>Њ<02>H <09>\\<EFBFBD>`<60><10>@E <09>Â<>4<EFBFBD>\0D<EFBFBD>a!<10><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nr쯜\\<EFBFBD><EFBFBD><EFBFBD>8<>o`<60><>H<EFBFBD>f<EFBFBD><66><EFBFBD><1C><>&<26><0E><>̒<<3C>r<EFBFBD><72>(jN<6A>eN<65>)<29>6EO<45><03>4<EFBFBD>.<2E><>n0<6E><04><><EFBFBD><EFBFBD><EFBFBD><01>6\r<EFBFBD><EFBFBD> <20>\$<EFBFBD><EFBFBD><0E><>\$<EFBFBD><05> <20>N<><<3C><>|αN<><4E><EFBFBD>j<EFBFBD>OY\0<EFBFBD>R<EFBFBD>n<EFBFBD><EFBFBD>`<60>o<EFBFBD><01><>mkH<6B><48><EFBFBD><EFBFBD>*<2A>-Ϙ<>w Oz<4F>NZ*ʛn<>O<>\n<EFBFBD>#<0E>n<>⏓p[P_<01>b<EFBFBD><62><EFBFBD><EFBFBD><06><><EFBFBD>jP<6A><50>P<EFBFBD><50>Г\0<EFBFBD>}\n/<0C><>Ӑ<EFBFBD><D390><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>П o}<0C><>S'<27><>`b<><62><EFBFBD><EFBFBD>\nPd<EFBFBD>p ?Po0sq\n<EFBFBD>:b<>L<04><><EFBFBD>Uu\r.L`<60><0C>SP<><15><>1mq<04><11><02>~<7E>]%&ʚ<>Q<EFBFBD><EFBFBD><7F> <20>\r<EFBFBD>D<EFBFBD>pq<15><>pV|<7C><12>f<EFBFBD>8\$<EFBFBD>p<EFBFBD>&<26><>ׂ<1C>F<1C><>&<26><><0C><>m<>O<EFBFBD>w<18><>G <09><>1/elր<6C><D680>D\0<EFBFBD>`~<7E><04>`K<><4B><EFBFBD>\\<EFBFBD>b&<26>Q<EFBFBD>Q<08>`ʾ<>A<1D><><EFBFBD><EFBFBD>V<EFBFBD>E<EFBFBD>W<EFBFBD>n: ؓBƌ<>\r<EFBFBD>*<0E><>l\0N<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD>r뭦<05><><08>[&G<><47>h<>r<14>H4A'<0E>bP><3E>VƱ<56><C6B1>M~<7E>R<EFBFBD>%2<><32>r<EFBFBD>m<><6D>\$<EFBFBD>\0<EFBFBD><EFBFBD>2<07>c<12><><EFBFBD><EFBFBD><EFBFBD>Mhʇvc<0C><><07>}cjg<7F>s%l<>DȺ<44>2<EFBFBD>D<EFBFBD>+<2B>A<EFBFBD>9#\$\0<EFBFBD>\$RH<EFBFBD>l<EFBFBD><EFBFBD>@Q!<21><>%<25><><EFBFBD>\$R<EFBFBD>FV<04>Ny+F\n<EFBFBD><EFBFBD> <20>%fz<66><7A><EFBFBD>*<2A>ֿ<EFBFBD><D6BF>Mɾ<4D>R<EFBFBD>%@ڝ6\"<EFBFBD>TN<EFBFBD> kփ~@<40>F@<40><0B>LQBv<42><76><EFBFBD><EFBFBD>6OD^hhm|6<>n<EFBFBD><6E>L7`zr֍<>Z@ր@܇3h<33><68>\$<0B><>@ѫ<06><><EFBFBD>t7zI<7A><49><EFBFBD> P\rkf D<>\"<EFBFBD>b`<60>E@<40>\$\0<EFBFBD>RZ1<5A>&<02>\"~0<><30>`<60><0B>\nb<>G<>) c><3E>[>ήe\"<EFBFBD>6<12><>N4<04>@d<><64><EFBFBD>n<EFBFBD><6E>9<EFBFBD><39><0B><04>ɴD4&2<><32>\"/<1E><>|<7C>7<EFBFBD>u:ӱ;T3 <20>ԓi<TO`<60>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD>9<10>0<EFBFBD>S>Qh<51>r\0A2<EFBFBD>8\0W!<10>t<><74>twH<77>OA<4F><1E>\0e<14>I<EFBFBD><49>F<EFBFBD><46>JT<>4x<34>sA<73>AG<41>J2<>i%:<3A>=<03><>#<23>^ <20><>g<EFBFBD>7cr7s<37><73><EFBFBD>%Ms<4D>D v<>sZ5\rb<EFBFBD><EFBFBD>\$<EFBFBD>@<40><0C><><08>P<05><>\r<EFBFBD>\$=<02>%4<><34>nX\\Xd<EFBFBD><EFBFBD>,l<><6C>pO<70><4F>x<EFBFBD>9b<39>m\"<EFBFBD>&<26><>g4<>O<EFBFBD>\\<EFBFBD>(ൔ<>5&rs<> M<>8<EFBFBD><1E><>.I<>Y5U5<55>IP3d<33>b/M<><4D>\0<EFBFBD><EFBFBD>3<EFBFBD>y<EFBFBD><EFBFBD>^u^\"UbI<EFBFBD>gT<EFBFBD>?U4<55>N<04>h`<60>5<EFBFBD>t<><74><EFBFBD>\r2}5-2<><32><EFBFBD><EFBFBD><EFBFBD>W<><57>(<28>f7@<40><>e<EFBFBD>/<12>\rJ<>Kd7<64>- Sli3qU<71><55><EFBFBD><EFBFBD>z<EFBFBD>\0<EFBFBD>)<29>\$<EFBFBD>c<EFBFBD><EFBFBD>oF?@]LJb<4A>Dҿ<44>0<EFBFBD><0C>s?[gʜ<67>%<25><>\rj<EFBFBD>Un<EFBFBD><EFBFBD><EFBFBD>^<5E><>R5,֪<>t<EFBFBD>FE\"<EFBFBD><EFBFBD>xzm<EFBFBD><EFBFBD>\n`<60>-<2D>W#S(<28>l p<><70>%CU<43><55>辚<EFBFBD>F<04>&T|jb<6A>Z<EFBFBD><5A><0F><>8 <09><07>/4L<34>*nɦyB<79>:(<28>8<EFBFBD>^9<>8U<38> K<><4B><15>{`Z<><5A><0E>\nF<EFBFBD>\0Cl\r<EFBFBD>'(`m<>eR<65>6<EFBFBD><36>M<EFBFBD><08><>B<EFBFBD><42><EFBFBD>C<EFBFBD><43><EFBFBD>6<EFBFBD><36>v<><76><18><><EFBFBD>n%#nv<6E>D<16><>jGo,^:`<60>`s<>l\r<EFBFBD>_<EFBFBD><0F><>X5CoV-<2D><>8RZ<0E>@y<><79>13q GSBt<42>v<EFBFBD>Ѣt<D1A2><74><EFBFBD>#<23><>bB<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><>#<23>p<EFBFBD><70><0B>fZC<5A>IJ<><C4B2><EFBFBD><EFBFBD>OZ<4F><5A><EFBFBD><EFBFBD>N<EFBFBD><4E>]<5D><><EFBFBD><EFBFBD><0E>sl<>Ԃ<EFBFBD><D482><EFBFBD>EL,+Q<>@Yw<59>~9<13>I\"<0E>8!մV5<56>&r<>\\<0C>7<12><>W<EFBFBD>&<26>ܼ<EFBFBD>[\r\ri\r<14><17>~L|<0F><>d<><EFBFBD><7F>ܷ<EFBFBD>,<2C><>|i<><69>@,\0<EFBFBD>\"g<>\$B<EFBFBD>~<7E><>!)5v0<05>V <20><><EFBFBD>b|M\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<0B>f\r<EFBFBD><10>8;<3B><><EFBFBD>}<7D>f<EFBFBD><66>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD>icԄV0,Fx\rR<EFBFBD><EFBFBD>`<60>a&nȧ<6E>QB.# Y<1E><>>w<>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><45>[<12>Ɨ<EFBFBD>X<><58><18>~RO<52><4F>Y]8<>]rK}<7D>-<2D><>?<3F>8<EFBFBD>v<EFBFBD>L<EFBFBD>@<40>~<12>A*<2A><0C>f<><66><04>J<EFBFBD>M<EFBFBD><4D>tג<><D792><EFBFBD>-v<>[#<23>xL'L<><4C>><3E>l<EFBFBD>8<>Pg\n<EFBFBD><EFBFBD>\r<EFBFBD>Q<EFBFBD><EFBFBD><EFBFBD>ѱ\r<EFBFBD>M<EFBFBD><EFBFBD>\":xw<78><77><EFBFBD><EFBFBD>\$b<0C><12>-<2D><0B><><0B><04><>=<3D>kRXoQ乇9;<3B><>ˈ過<13><>sՃ<73>͋<EFBFBD>)<29><><EFBFBD>~<03>geB<65>Bt<42><10><>,<2C><><EFBFBD><06>,<2C><><EFBFBD><EFBFBD>K<EFBFBD><4B><EFBFBD>y<0C><0C><><EFBFBD>-,mӀ<6D><15><>+<2B><>07yC<79><43>˃<EFBFBD>Iz<49>ƍ<EFBFBD>Y<EFBFBD><59>^GGW<47><57>u<EFBFBD>v0#kX<6B><58>RJ\$JP+<2B>6x<36><78>1<EFBFBD>8<EFBFBD><38><EFBFBD>Y<07>g<EFBFBD><67><01><>{<EFBFBD><EFBFBD>?<3F>\0<EFBFBD>X<EFBFBD>\r<EFBFBD> XF<58><46>W<EFBFBD><57>ה<0E><1F>V/<2F><>̓dIg9߆<39>і<19>y<EFBFBD><79>1<EFBFBD><31>-<2D>G<0F>X<EFBFBD><58><EFBFBD><EFBFBD>@O<><4F>R<EFBFBD>y<EFBFBD><79><EFBFBD><0E>!<21>GuY<75><59>5<>ZF\r<EFBFBD>㕵-<2D>\$<EFBFBD>O<EFBFBD>e<EFBFBD>u-<2D><>ZF<5A><46>Zd<5A><64>i<EFBFBD>9+<2B>쵘`M<>z<EFBFBD><7A>\r<EFBFBD>ҫI<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD>A<EFBFBD>Vp<EFBFBD>:<3A><>O<>J<EFBFBD><4A>:<3A>V:<3A>#:<3A><>:c<><63>{<EFBFBD><EFBFBD>k<EFBFBD>l<EFBFBD><EFBFBD>Zs<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD><EFBFBD><EFBFBD>P0<50><0B><><EFBFBD>#<23>9g@Mc<17>zw<><77><16>[9U<39>\\k<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>9Ӆ<EFBFBD> <20><><19>y<EFBFBD>,<2C><><0C><><05>f6n-Zu<5A><75><EFBFBD>f<EFBFBD>ً<EFBFBD>c<EFBFBD>,<2C><><EFBFBD><EFBFBD>[o<>[g<>d<EFBFBD> <0F>:w#<23><17>!W\\@<40>n<EFBFBD>`<60>߱<EFBFBD>\r<EFBFBD><EFBFBD>ɡ\$۟<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD>%<25><>ߡ۷<DFA1>z#<23><>\$<EFBFBD>imY<EFBFBD><EFBFBD>c<EFBFBD>ɂ<EFBFBD>k<EFBFBD>I_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD>\$<EFBFBD>`V<><56>[<5B><><EFBFBD><EFBFBD>F<07>2C<32>8<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>[<5B><><06><>¼<13><><EFBFBD>=<3D>U<EFBFBD><55>υ[q<><71><EFBFBD><EFBFBD>K<EFBFBD><18><><EFBFBD>Y<EFBFBD><19><><EFBFBD>Q<EFBFBD><51>?<3F>8<EFBFBD><38><18>aX<61><58><EFBFBD>m*G<><47><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>?<3F>U<EFBFBD>\0Ϣ<EFBFBD><EFBFBD><EFBFBD>KĤ<EFBFBD><EFBFBD>|CR<43>͓<EFBFBD>-<2D><><EFBFBD><EFBFBD>|ɜa<C99C><61>e<EFBFBD><1A>RY<52>ƺ饘<C6BA>ܒ<0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C298><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PJE<4A><EFBFBD>=<3D><>u<EFBFBD><75><10><><EFBFBD>\$<EFBFBD>{<EFBFBD>8<03>X<EFBFBD><58>{<EFBFBD><EFBFBD><EFBFBD><0F>ŏ<EFBFBD><0F><><04>ٓ<EFBFBD>ٗ<EFBFBD><D997>ՙ<EFBFBD><D599>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͱ٬&<26><><EFBFBD>Y<EFBFBD>ҹ<EFBFBD>(ټ<>M2)<29><>V u7\0S Z_<5A><5F>o]\\<10>|٩Ec7<63><37>S<EFBFBD><53>΄[<5B><><EFBFBD><<3C><><<3C><0B><><EFBFBD>;<3B><>-<0F><07>i<><69> <20>}<7D><><EFBFBD><03>l<EFBFBD><6C><EFBFBD>!<21>,<2C>}%<25><><1E><>-۬<><DBAC>=<3D><><EFBFBD><EFBFBD>Ӭ<EFBFBD><D3AC>=<3D><>Y<EFBFBD>8<><38><1A>PV|<7C><04><>zE.<2E><><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bLfƸ<66><C6B8>h*;<3B> ַ<>;<3B>؇<EFBFBD>Q{<EFBFBD><EFBFBD>9\n_b\$5<EFBFBD><EFBFBD>l<EFBFBD>UzXn<58>z\0xb<>k<>M <09>2<EFBFBD><02> Z\r<EFBFBD><0C>c<>|<7C>ג/<2F><>}%<25><10>`<60>N<EFBFBD>A<EFBFBD>\0<EFBFBD>*=`<60>F<EFBFBD><46><14>^Q3<51>W<EFBFBD>X<EFBFBD><58><<3C><><EFBFBD>tR>r<>`u<>ģ>i<><69>zN<7A><4E><EFBFBD>اÝi<C39D><69><EFBFBD><EFBFBD>\$\0r<><72><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>^C<><11><17>>U<>5<EFBFBD><35><EFBFBD>^a<>)<29><> <09><>J+><3E>uB<75><42>@?<3F>J<EFBFBD>-H<><48><EFBFBD>OJ'<27>-Tʀ<54>T<EFBFBD><54>oUh<55>F<EFBFBD><46>{<EFBFBD><EFBFBD>ԏJ[<5B><>N<EFBFBD><4E>V<EFBFBD>oJ&S<>B\"I^5<>I<EFBFBD>2<EFBFBD><32><EFBFBD>T<EFBFBD><16><>龽<12>]\0<EFBFBD><EFBFBD>\rk<EFBFBD>L%<25>}<7D>t<EFBFBD>۷~I0<49>H|Pk<50>L5<4C>_T<><<3C>w<EFBFBD><77>=<<0C>x\"esa<EFBFBD>K<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>JH<EFBFBD><EFBFBD>+<2B>U<EFBFBD>a<EFBFBD><61>'Y<>~<7E><><EFBFBD>7<1D>)W<><57><6<>=_<>N<EFBFBD>h<EFBFBD>?6ܘ<36><DC98>y<>,<2C><><EFBFBD><EFBFBD>a<EFBFBD><61><0C>w<EFBFBD>\rİ<EFBFBD>#<23>-V@<40>k<EFBFBD><6B>?i<>b*%<25><><DEBA>p?<3F><><EFBFBD><EFBFBD>yЀΆ<D080>p<EFBFBD><70>-p<><70>|<7C>n<EFBFBD><6E><EFBFBD>Ca<>f<EFBFBD>8A<>8<EFBFBD>+#\r<EFBFBD>R<>@n<><6E><EFBFBD><EFBFBD>p<><70>m<EFBFBD>~ۈ{`<60>H?<3F>v<>*%<25>Ǽ<EFBFBD>v%<25><>G<EFBFBD>`<60>`<60>Z<08><18>.<06><><EFBFBD>,<2C>6<01>z<EFBFBD><7A>U8<19><>|<7C>y<><79>V<03><><EFBFBD><EFBFBD><EFBFBD>/<2F>p<EFBFBD><70>^<5E><>פ<EFBFBD>m<EFBFBD><6D>]zcӞ<63><D39E><07>\$<EFBFBD>IB0<EFBFBD>|<7C><><EFBFBD><EFBFBD>@<40><><EFBFBD>pR<01>\n<0B>j<EFBFBD>9 <20><>G<EFBFBD>7<EFBFBD><37><EFBFBD>읤#p߭<70>?<3F><><EFBFBD><EFBFBD>'<27><><EFBFBD>=<3D>6H<1F>lψ.<2E>Y<EFBFBD>OY<4F><0B>_V<5F>G<EFBFBD><47><EFBFBD><EFBFBD>O]I<><49><04><05>=<3D><0B>x<EFBFBD><78>\$<EFBFBD><02><07>=<3D>|Ϫ{<EFBFBD><EFBFBD>\n<04><><;<10>{:f^L'S<53>A1%<25>8*<2A>^<0E><>p75<37><35><EFBFBD>W<12><>\n<EFBFBD><EFBFBD>\0<EFBFBD><0B>S⟕\02\nX(<28>u[<01><>rp<1D><>B<>0ڭ<30>x<EFBFBD><78><EFBFBD>:n <09>ZI3<12>C<EFBFBD><03><><07>{<EFBFBD>[<5B><07>&<26>C(@}<7D>r<EFBFBD><72><EFBFBD>w2<77>闌<EFBFBD>nt<0B><><EFBFBD><EFBFBD>{C<EFBFBD>ɆY!\0<EFBFBD>He><3E><>P\"<EFBFBD>9t5<17>o<EFBFBD><1C><>!<21>\$@\\7SS\r<EFBFBD><EFBFBD>C<EFBFBD> P@<11><>I<><49><EFBFBD>nhG<68><47><EFBFBD><17> I<>S<EFBFBD>`x<>7<>0b+v5<76>^g<7F>r%b<>p<>U<EFBFBD><55>%)<+<2B>S/Z@ <1E>4!<21><>j<><6A>8<EFBFBD><38>\0<EFBFBD>vN-6a[><3E>X<EFBFBD>,<15>e\ned/<2F>PX<50>`<60>}kOR<>N<10><><EFBFBD>+<2B>1O\$<EFBFBD>π<07>F6B-<2D>:wڨ<77>N<EFBFBD><4E>T<EFBFBD>D><3E><>x<EFBFBD><78><EFBFBD><04><>Y)<29><>n<EFBFBD>1<EFBFBD><31>&<26>7<EFBFBD><37>}<7D>&xZ<78>\nޖ<EFBFBD><EFBFBD><EFBFBD><1C><><EFBFBD>W<EFBFBD><57>:U@<40><>a<EFBFBD>⺃@<40><>.<2E>R<EFBFBD>hbcT\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x\n<EFBFBD> E<><12><>|߈<>\r<EFBFBD>-\0<EFBFBD><04>\"<EFBFBD>QA<EFBFBD>Ih<11>\0<EFBFBD> F<02><>P\0MH<EFBFBD>F<EFBFBD>SB؎@<40>\0*<2A><>9<11><><EFBFBD>s\0<EFBFBD>0'<27> @Et<>O<1C><><EFBFBD><EFBFBD><05>Cx@\"G<EFBFBD>81<EFBFBD>`ϾP(G<>=1ˏ\0<EFBFBD><04>\"f>Qꎸ@<40>`'<27>>;<3B><><EFBFBD>l<EFBFBD><6C><04><><EFBFBD><EFBFBD>82><3E>zI<7A> IG<>\n<EFBFBD>R<EFBFBD>H <09><>c\"<EFBFBD>\0<EFBFBD>;1ێ<31>n<EFBFBD>)<29><><EFBFBD>8<05>B`<13><><04>(<28>V@Q<>8c\"2<><32><08>E<EFBFBD>4r\0<EFBFBD>9<17><>\r<EFBFBD>ԑ<19><><EFBFBD> \0'GzH<11><14>5E!#<23><><EFBFBD>\rA<EFBFBD>JЉJ<D089>(<28><>FC<46><43>&<26>d<> I<07>\"I<EFBFBD>V솣<><1D><>G<EFBFBD>SAX<10><>Z~`'UA<55><41><02>@<40><04><><EFBFBD><EFBFBD>+A<>\n<EFBFBD>p<EFBFBD><EFBFBD>i%<25><14>ѿ<18>G<EFBFBD>Z`\$<EFBFBD><EFBFBD><08><><EFBFBD><13><><04>>~?<3F>E<02>\0<EFBFBD>}<7D> <20><Q<><02><><EFBFBD>'<27><><EFBFBD><EFBFBD>E<EFBFBD>w<EFBFBD>ئ<EFBFBD><D8A6>#\rɂ7rQ<EFBFBD> }<13>'iMI<4D>O<02>0dm% <20><>Hʰ\"-h#<23><04>XF<58><46>M<><4D>t\$<EFBFBD>!<21><13><>R<EFBFBD><52><EFBFBD>t<EFBFBD>,(<28>H8<04>8<>!J<>5I<35>x<EFBFBD><02>r\n<EFBFBD>Thړ~Pe@&eg\"[hؖ<68><D896>4<><34><EFBFBD><EFBFBD>|<7C>2<EFBFBD>z<EFBFBD>D<EFBFBD><44>lw#9 v{lb<EFBFBD><EFBFBD>/~\0<EFBFBD><EFBFBD><EFBFBD>&I8%<25>,<2C>IKA<4B><41>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/GYK<59>*<2A>><3E><01><>O/<2F><11><>2<>t<>eھف<DABE>P93=\$<EFBFBD>X<>d<EFBFBD><64>-<2D>&<26><>|<7C><>#154LU<4C><03><10>G.<2E>i<EFBFBD>2`<60><18><><EFBFBD>M.B<><42><EFBFBD>\00036<EFBFBD>ISJ<EFBFBD>-<2D>~<7E>쩦<07>jF\\3 o4<0B>u (@a3<61>A\0<EFBFBD>c<><0C>`<60>P( <20><05>0\$<EFBFBD><EFBFBD><10>\\}/d<><64><EFBFBD><EFBFBD><07><>\0<EFBFBD>-<2D>3<01>%b0\nc<EFBFBD>z`<1F><>))%*<2A><>6\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٖ<><D996>E4<45><34>F<EFBFBD>q<EFBFBD><71><EFBFBD>J<EFBFBD><4A><14><>d<EFBFBD><64>(<28>Ӏ<15><><EFBFBD><EFBFBD>1<EFBFBD>iLm<4C>2<EFBFBD>A<EFBFBD><05>.)&q@\$<EFBFBD>`L<><1C><>2Lrse<73><65> <20>.<05>vss<73>\r<EFBFBD><EFBFBD><1B><>i<EFBFBD>KQ<4B> <20>0()<29>|<7C>Mb<>tU<74>9!<21>ED <09>( <09>`8*pa<<3C><><EFBFBD><EFBFBD><EFBFBD>80<17><>s<EFBFBD>\r<EFBFBD> N<><04><>8O0<0B>Ξ<EFBFBD><CE9E><EFBFBD>d0<64><30>OVx<56><06>@'<27><<3C>Ol<05><>J)<03> <09>~}<7D><10><>\0U=<3D><>O<EFBFBD>'Ňd<C587>~\0<EFBFBD>Of<EFBFBD><EFBFBD>X<EFBFBD>H<EFBFBD> <09>L<EFBFBD><4C>Ҡ(]'<27>@<40>EP<15>LW<03><>E'=<3D><>\0<EFBFBD>'<27>\n<EFBFBD><EFBFBD>N<EFBFBD>\$iI<EFBFBD><EFBFBD>Zy<EFBFBD> <09><08><>>i<>OH6f<36><0E>'<27>߁x<0B>.\"}@<40><02>-<06>wa2vӅ<76><D385>A<EFBFBD><41>L><3E><1B><><EFBFBD><0/<2F><02><><1D>P<18><>B<EFBFBD><42><01><><EFBFBD>͢<EFBFBD><0B>T<EFBFBD><1D><08>\n<EFBFBD><11><><sSQ~|<7C>ӂ<10><>P<EFBFBD>f<>i<EFBFBD>O<02>φ<EFBFBD>lq<6C><71><EFBFBD>9T\r<EFBFBD><EFBFBD><12><><EFBFBD>ѕgÄ<19><18><>Fӧ<46>%O<>(1<18>h⺶n<13>m<EFBFBD>v<0F>;<3B>|<7C><05><1E>g<EFBFBD><19><>SaF<61><46>R<02><>Ȥ<18>Nr<4E><72>9z<>%&<26>X<EFBFBD><58>\0007\"<EFBFBD>2t<05>-\rh%fŦֽ<C5A6><D6BD><EFBFBD>3!<21>\"(<28>7I<>\$s/ <20>-<2D>7*J\rΕC<EFBFBD>Lxw<EFBFBD><EFBFBD><EFBFBD>֗<EFBFBD>铴<EFBFBD><EFBFBD><EFBFBD>(Ҫ<>B,+<2B>h\n<EFBFBD><EFBFBD><EFBFBD>f\r<EFBFBD>F<EFBFBD>7Rf<><66><14>*<2A>:<04>\"<EFBFBD>Δ4t<EFBFBD>P<EFBFBD>i<0B>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>*<1B>\0P.(#<23><>+H<>oJAG<41><47><0F>q<EFBFBD>.57<EFBFBD>+N :-m`<03><><EFBFBD>&<26><>HJO<4A>Uvi<76><69>\0<EFBFBD>\nGN:gR<67>n<EFBFBD><6E>2i<32>)}#<23><><EFBFBD> F駩<12>>d<>`<0F>q<EFBFBD><71><EFBFBD><EFBFBD><1F><>H<EFBFBD><48><EFBFBD>ƕe<>5J);HQ<48><51><EFBFBD><05><>\nHϓGRW<EFBFBD>Ԟ<EFBFBD><EFBFBD>/<2F>Jj<4A>)K*UR<55><0C><>i<0E>b8za<7A>.<2E><><10><><07>RG<><47>!4ͣ<34><0E>@9<><39><EFBFBD><EFBFBD>c: E.F|<02><>T*<2A><>s<EFBFBD><Z]_O<5F>i<EFBFBD><69><EFBFBD><0C>\r@<40>2<EFBFBD><32>qTlVUk<11>CQ\rOe<EFBFBD><EFBFBD>\"<EFBFBD>\n<EFBFBD>.<2E>T<EFBFBD>EUZ<55>Ԡ@i<><69>^<5E>ܪ<1A><>L<EFBFBD><4C>aMUB<55><42>V<EFBFBD><56><1E><><EFBFBD><EFBFBD>'<27>U<EFBFBD>+Q <20>V<0E><><EFBFBD>W<EFBFBD>m<11>G<EFBFBD><47>Ժ<EFBFBD>u0<75><30>*<2A>P<EFBFBD>T+<2B>!u<>\\<EFBFBD>kV<EFBFBD>y@Ƥ<>j+<2B><02>H<EFBFBD><48>䁐<EFBFBD>\"E<0F><04>P<EFBFBD><50>,<2C>`<<01>H<><48>Ք<EFBFBD>p<EFBFBD>ğ% l\n<EFBFBD>K <20><><EFBFBD>\0<EFBFBD>\$T!8@<40>@<40>2<EFBFBD><32><EFBFBD><04>h<><68>4L<34><4C>ŝ+<2B><>&<26><><EFBFBD><EFBFBD>,<2C>|<7C><1C>\"<EFBFBD>T<EFBFBD><EFBFBD>Q霋<>b#w)umŵ[<5B>ޒ<><DE92>)E}<7D><>[<5B><><EFBFBD>Exd<78>)p<><70><EFBFBD><03> n<><6E>-AK<41><10>1}W\\IU<EFBFBD>nF^<12>\n<EFBFBD><EFBFBD>` \$<EFBFBD><EFBFBD>m)<29>oZ<6F><5A> P<>D<EFBFBD>P<EFBFBD>V<EFBFBD><56>D <20>r%<25>R)<29><>bұ<01>l<EFBFBD>^<5E>w<EFBFBD>)JB<4A><42><EFBFBD>-K<1F>D.1<><31>8<EFBFBD><38><1F><>\0<EFBFBD><06>;<01> le<>,L(\"m<>N\n<EFBFBD>Z<EFBFBD><EFBFBD>K<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>gH<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>\0t7<EFBFBD>]<5D><>Kk\$<EFBFBD>yN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X\0<EFBFBD>6<EFBFBD>(Y<><05><><EFBFBD><EFBFBD><EFBFBD><06>f<EFBFBD>\\\r<EFBFBD>K1y<EFBFBD>,<2C>`0<><30>qo<71><6F><EFBFBD><EFBFBD>\0<EFBFBD>h\$<EFBFBD><01>\n<EFBFBD>_<1B><><EFBFBD><EFBFBD>dR<1D><>zE<7A><03><>C<EFBFBD>h<EFBFBD><Y<><59><EFBFBD>p!<21>\0ro;<3B><12><><01><><EFBFBD>'g'*<2A>!<21><>Y<EFBFBD>Xv<58><76>%<25>K4R<34>V<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>}Z<>\r<EFBFBD>o<EFBFBD><EFBFBD>mpN]N<06><>5<><35>xUay<61><79>\r<EFBFBD>j<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>k<EFBFBD>b<EFBFBD>~<7E><06>+m<><6D><02>edyٯʰZ<CAB0>ksO<73>4;T<><1E><>a<EFBFBD>l@4[<1A><>]<5D>M<EFBFBD>7n 7<>><3E>6<EFBFBD><36><EFBFBD>ϓ<EFBFBD><07>=<3D>h<EFBFBD>*<2A>0HΫj\$<EFBFBD><EFBFBD>[`<60><><EFBFBD>,<05><><EFBFBD><1D>y ><3E><16>7p<37><70>D\$<EFBFBD><EFBFBD>u9<75>H ;<3B><06><04><><EFBFBD><01><>R<EFBFBD><52>~<7E>0[<5B>D<><44>H<0F><>삕6<EC8295>ܐ>-Lxj<78>Z<EFBFBD>k<16>NȢ<17><><EFBFBD><EFBFBD>n<EFBFBD><6E><04>dg<64>;<01>C\\\n<EFBFBD>Pb[<5B>h)3M<33>c<EFBFBD>D4<44>0uR<75>#bP<62><12>5<EFBFBD>:<1B>a<EFBFBD><61>EqH: <20><><1E>:<3A>.X<><58>?<3F>c<EFBFBD>9<EFBFBD>%n<>K<><4B><EFBFBD><EFBFBD>a<EFBFBD>5<EFBFBD><35>J<EFBFBD>`<60>7X<10>\n<EFBFBD>q=ȿvr<76>E<><<3C>(~<7E><><1B>CȷPQxH<03>bK<62>ܪ<EFBFBD>-]<5D><><EFBFBD><EFBFBD>\"<EFBFBD>Q<EFBFBD><EFBFBD>C<>U<EFBFBD>.a<><61>Q<EFBFBD><51>v&<26><> <20><>7<04>]Ĩ媻<C4A8>><0F>.9\0<EFBFBD>=K=)<29><><EFBFBD>T<EFBFBD><54> <20><><0E>_OX<4F><13>5<EFBFBD>!<21>b<EFBFBD>U<EFBFBD><55>h<EFBFBD><68><EFBFBD>AP<41>-<2D><><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>%zPޔ߀<<3C>x<1C><><16><><0E>c7<63>|<7C><11>4q<34><71><EFBFBD><EFBFBD><EFBFBD>p<02>C<<11>N<EFBFBD><4E><EFBFBD>Y<>5ь<35><D18C>)<29>澈<EFBFBD><06>}AN_<4E>RCTx<>F<EFBFBD>*<2A>3<EFBFBD><33><EFBFBD>g<05><><EFBFBD>.<2E>`*<2A><>B<><07>`&<26>T<EFBFBD>:**<2A>7ƷE<C6B7>W<EFBFBD>R<EFBFBD>\\<1E>c<EFBFBD>W<EFBFBD><EFBFBD>[<5B><01><>Kb<4B><15>\r<EFBFBD>o<0E>Hr<11><><EFBFBD><EFBFBD><EFBFBD>u 2~/խ<> @<40><15><11><>aI<61> ,%b <20>\0<EFBFBD>¡+{<EFBFBD><EFBFBD>[<5B>,`_6<>7<EFBFBD><37>.<2E>@̆<>)?<3F>m<EFBFBD>m<EFBFBD>b<>a\n<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F><><EFBFBD>]`<60><>W<0B>8<EFBFBD><38>!<21><><EFBFBD>W`<60><>:<16>Fpo-`7 <09>\re<EFBFBD><EFBFBD>XXzK<EFBFBD>I:<3A><><0E>bD<62>_<EFBFBD>5<06>><3E><><EFBFBD>ŗ<EFBFBD><C597>f+<Y<><59>vg<76><1A>,<2C>%<25>H\\ d\$@<40><07>q<EFBFBD>\n<0E><>A \n<EFBFBD><EFBFBD>6<EFBFBD>8F<EFBFBD>'|<7C>I<EFBFBD><49>R<EFBFBD><52><EFBFBD>T<05>{s<EFBFBD>m3<EFBFBD><EFBFBD>8b)<29><18> @<40><><EFBFBD>Lc<4C>M<EFBFBD><4D><EFBFBD>F@<40>#Y`<06><>N<EFBFBD><4E><EFBFBD>DX<><1A>CxzYc<1E>0y<30><15><>3hDZ<44><5A>6\"<10>t\\7<>SE;<3B><><EFBFBD>U#<23>R^<5E><>ީ<EFBFBD>s\0Cfb<EFBFBD>ܚ<EFBFBD><02>rrI\"Y<EFBFBD> <09>tå<74>8ZB/.<2E>`<60>E<0E><11>K<EFBFBD>|<7C><><EFBFBD><EFBFBD>b<16><>\n|_<>}<07><>KC<0B>.<2E><02><07> p<03>1:<3A><><11><>#Y\nTC %,,<2C><12>\r#<02>@<40>+<2B><>dqŁ<71>\$<EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>D \\J\0-`m!<21>|<7C>g<EFBFBD><67>dz<64>VI<03><19>vv&<04><>A<>`<60><0E><07>MH\\I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><0B>|E<><45><EFBFBD><EFBFBD><EFBFBD><0B>j<EFBFBD>B0ۊ@ѡnU<6E><55>K<EFBFBD><1A>ތ<EFBFBD><04>><04><><EFBFBD><EFBFBD>]ݸ<0C>h<1D><>i<01>X9upr<><72><EFBFBD><EFBFBD>a<EFBFBD>\$7<EFBFBD>v<1C><01>Q<EFBFBD><51>CA<0E>>1<19><><08><>xif<69>R<EFBFBD><52><1B>7*<2A>;8%<25><16><>\"<EFBFBD><EFBFBD>Ʉ<EFBFBD><19><>w<>P<EFBFBD><50>TB<54><42><10>yH<79><48>'\n攏bظ<EFBFBD><EFBFBD><EFBFBD>v<10><>T5xcH\$<10>\\<EFBFBD><EFBFBD>ۏ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<>l<EFBFBD><6C>K<EFBFBD><0F><>a<EFBFBD>`<1B><><EFBFBD>#t<>Ew<45>gh<>1<><31> <20>z<EFBFBD><7A><EFBFBD>p<><0C><>4:<02>\n<EFBFBD>C<><43>2<07><>H<>K<X (!J<><18>;<3B>㏨<EFBFBD><E38FA8><EFBFBD>,<2C><>u<EFBFBD>3<06>y<EFBFBD>s<EFBFBD>M<02>C9p<17><>wz\0<1B><18>ՠ9<D5A0><39><EFBFBD>Lj<EFBFBD>x<EFBFBD>ǃ<EFBFBD><C783>1<EFBFBD><31>B<EFBFBD><42><EFBFBD><><7F><EFBFBD><EFBFBD>ي<EFBFBD><1E>`r<03>)=hLƂ<12>`<60><><EFBFBD>?z9<05>E<13>?<3F><03><>J<EFBFBD><4A><EFBFBD>1<EFBFBD><31><0B><><EFBFBD>Q<EFBFBD><51>R<EFBFBD><\r<EFBFBD>L\n8(#<23><>r<EFBFBD><72><EFBFBD>p><03><>L<EFBFBD>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>\"4<EFBFBD>(<28><>*<2A><><EFBFBD>8<17>fpiWaQ\n<EFBFBD>Q<EFBFBD><EFBFBD>*<04><><05>\\0@H<05>;<3B>V<EFBFBD><56>Y<EFBFBD>Ά<EFBFBD><CE86><EFBFBD><EFBFBD><EFBFBD>OZx<5A><F<><46>'<27>I<EFBFBD><49><EFBFBD>A\n<<3C>]<5D>dP<64><50>_N<5F>T!<21>\r˧<EFBFBD><1B><>@*~І<>B<EFBFBD><42>=<05>%<25>z<15><><EFBFBD><05><><EFBFBD>;<3B><1C>:<1D><><EFBFBD>AB}<11><08>&<26>l<EFBFBD><6C>c<EFBFBD><63>h<>`T<0E><>O<EFBFBD>))<29>\0<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD>ۦ<EFBFBD>8<EFBFBD><EFBFBD>Ny<EFBFBD><EFBFBD>ј<EFBFBD>G<EFBFBD>\r\0<EFBFBD>T<EFBFBD>\"hn<EFBFBD>5W@}<19><><EFBFBD><EFBFBD><EFBFBD>Ն<EFBFBD>B<EFBFBD>}ZkV<><56><EFBFBD>Ф<EFBFBD>y=s<> z<>Ӕ<EFBFBD><D394><17><>;\r쌚<EFBFBD><EFBFBD>,<2C>hT<><54>i|jza&<26>ր\$<EFBFBD>i<>S°<53>Hi<48><69>>I<>B{Z*U<>Ә<>I<EFBFBD>n<><6E><EFBFBD>O<EFBFBD>}<7D><>XMs<4D><73>Q<EFBFBD><05>8<EFBFBD><38>I<EFBFBD><0C>Њ<EFBFBD> <09><1E>v&! <20>k<EFBFBD>@<40><><EFBFBD>#<15><><<1D><><EFBFBD>T<EFBFBD>Z<EFBFBD>.<2E><1B><><EFBFBD>j<>Z:<3A> ^<5E>B<EFBFBD>}Y<><59><EFBFBD><03><>v<06>O3BTC<54><43><EFBFBD>6=<3D><>k<>eS<65><53>~<7E><><EFBFBD>?]ij<69>O<EFBFBD>Ѧ<><1B><13><>m,\0}<7D>!<21><><13>mF!<21>[J<>.<2E><>g<EFBFBD><67>Ul<55>ZP٦<50><D9A6><EFBFBD><1D>O[;&<26><><EFBFBD><15>]<5D><>Oht `aILA<4C><41>k<EFBFBD>bki<6B>N<EFBFBD>vY<76><1D><>m:<3A><>v<EFBFBD>v<EFBFBD><76><EFBFBD>k<05>g7<67><37><EFBFBD>)<29><><03>><3E><>b&<26>؞<EFBFBD><03>p<>\0<EFBFBD>5<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]dp=<08>+:;<3B><0B>)<29> <20><><05>Dx@^o<><17>ѸA<D1B8><41><EFBFBD>L<EFBFBD>'<27><><EFBFBD><EFBFBD><EFBFBD>t w<>&U<>g<EFBFBD><67>3<EFBFBD><33>B`/<02>=<3D><><EFBFBD><EFBFBD>'d><3E>/<18>dbF<>\0<EFBFBD>w\0y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>Z[<5B><1F>6Tu<54><75><EFBFBD>b<EFBFBD>Z<EFBFBD><5A><EFBFBD>~<7E><>~<04><01>\nzd'<27>@<40>Ra\n\n@<05>G<EFBFBD><47><13>0<04>;vS<76><14><><01>={<EFBFBD><EFBFBD>~<7E><>\0@_c0<63>ov<6F>1<EFBFBD>~<7E>x<10><><06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>\0p<>o<EFBFBD><15>><3E>83<38>|<7C>pp<70><<0F>Il<49>o˄<6F><0B>O<03>;<3B> <20><><EFBFBD><EFBFBD>%8Gx.><13>o<EFBFBD><6F>O=^uLG<4C><47>\r<EFBFBD>N7<EFBFBD><EFBFBD>ݶq8~&n<>5<EFBFBD><15>l<><6C>]ڀ<><DA80><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I..<2E><>4ओ_ۼ=<3D><>x<EFBFBD><78><EFBFBD>P<14><><EFBFBD><EFBFBD><EFBFBD><01>I<EFBFBD><49><EFBFBD><EFBFBD><0C>5<EFBFBD>]<5D><><EFBFBD>[\0_<EFBFBD>\0̓<EFBFBD><EFBFBD> <20><:<3A><01>e<EFBFBD><65>o<><6F><EFBFBD><EFBFBD><1E><><EFBFBD> <17>B<>y<EFBFBD>/<05><>Eq瑻<71><E791BB><1F>f'<27>J<EFBFBD>w<><77>#7<><37><EFBFBD>N<EFBFBD>x<05>F<EFBFBD><46>(y<0F><>D<EFBFBD>7<EFBFBD>\\<EFBFBD><EFBFBD>'<27><>Y2<59>˕<EFBFBD>?߯)9e<39>nGr<47>vQ <09>.<2E>/<2F>.Y<><07>ܪ<EFBFBD><<3C>zkMޠ<4D>c<EFBFBD><63>M<EFBFBD><4D>B+<2B>\"ہ<EFBFBD>\r<EFBFBD>g<EFBFBD>l<EFBFBD>\0^\0<17><>B@- T<><54><EFBFBD>6<EFBFBD>1<01><><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<13>@ \"\"<EFBFBD><EFBFBD>@<40><EFBFBD><7F>F<EFBFBD><46><EFBFBD>0<><30>t<EFBFBD><07><13><>U<>\04<><06>!<21><>_|<7C><>(B\0Oc<<3C><>'<27><><1B><>t<EFBFBD>\"m)<29>TW<54><57><EFBFBD><EFBFBD>F <20><>P?f9<><1A><><EFBFBD><EFBFBD>C<EFBFBD><43>M<EFBFBD>mk<6D><6B><EFBFBD><EFBFBD>D<EFBFBD><18><>ސ<>|<7C><><10> <14>&<26><>3<07>`<13>dΞ<><CE9E><EFBFBD>\0O8<0C>y<EFBFBD>@<40><1F>\n\0I?@@<40>@<18>/<2F><>O<EFBFBD><4F>\n<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><d<>\r\n<EFBFBD>\0<02><><EFBFBD>H<08><>C><03>k<EFBFBD><6B><EFBFBD>nm_:Gb<47>\$<EFBFBD>\0<EFBFBD>ђ<0C><0E>|<7C>(v<>I6<49>0<EFBFBD>\"KB<03> <20>J<15><>rK<72>`|6<><36><EFBFBD><EFBFBD>F<EFBFBD>T<08>'<16>9Y9>r<1B>@y<><79>@<40>%<25>ʄ<03><>d<EFBFBD>7<<3C><>\$p>t<>\r\0|<7C>yr<07>́<EFBFBD><CD81>k9+<2B><><1A><>6<EFBFBD><0F><>#<18><>\"97<39><37> N<03>ڮ<EFBFBD><07><>ͪ<EFBFBD><CDAA>Enp{s^<5E>_;<3B>\"<EFBFBD><EFBFBD>I<EFBFBD>\0<EFBFBD>J <w6<77><36>e<EFBFBD>jc%<03><><EFBFBD>8<EFBFBD>5<EFBFBD>ր<EFBFBD><10><><EFBFBD><EFBFBD>L&F{<EFBFBD>2/w;<3B><><EFBFBD><EFBFBD>&CD<43><44><EFBFBD>+p<><70>%<25>#<19><>BYo:d4<64>#H<>!<21>A<EFBFBD>,݃\nsα<EFBFBD>8#=g<>jl:<3A>U<EFBFBD><1C>B<EFBFBD>YX\0<EFBFBD>eտtmd<6D>(v<><76>@k\\9vQ2<EFBFBD><EFBFBD>-{&/¶A<C2B6><41><%N<06><0F><><EFBFBD>`<60>EKJ<4B><01>Pպ,s&<26><><1D>8+-<2D>1<1A>T@W<><57><0C>8<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>D<EFBFBD><44>x76@<40>\$<EFBFBD>v<04>\"<EFBFBD><06><>t<EFBFBD>X<EFBFBD><58><EFBFBD>vj<76><6A>@t<02>H<EFBFBD><48>'Ey@5<>ك<ɏ<1C><>{<EFBFBD><EFBFBD>v<EFBFBD>OY{LW<><57><EFBFBD>r:<3A>(<28>,̗<0F><>\n<EFBFBD>+<2B>:(<28>5䏤<><1F><><EFBFBD><EFBFBD>02<12>%<25>D<EFBFBD>Q<EFBFBD>B<EFBFBD><06>{<EFBFBD>x-<2D>(<03>*<1B>~.<2E><><02><>C<EFBFBD>J<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><1C><><EFBFBD>S<04><07><>ў#K<><4B>|䆮<><E486AE>ɨ2C@<40><>a<EFBFBD>B<><42><EFBFBD>bCq<43><71>y<EFBFBD>L<0E>7<EFBFBD>K<><4B>4<><34><EFBFBD>O<EFBFBD><4F>fQ=<3D>'<27><><EFBFBD><!ٙ<>fP+<2B>`<60><><EFBFBD>gND<><44>U<EFBFBD><01><18>ҡ<11><>!<21>\$<EFBFBD>\$<EFBFBD><1E>-<2D>/<2F><>3<EFBFBD>Az_<7A>@d~Q3<51><07>'<27><>><3E>\n<EFBFBD>\0<EFBFBD>11<07>><3E><><EFBFBD>J<EFBFBD>5<17><><14>T<EFBFBD><04><>k8;<><EF808C><EFBFBD>d<02>Y<><59>^<5E><>ƥ<><16><>\0<EFBFBD>Ӈ<EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>F왕<><EC9995><EFBFBD>`k<><6B><11>Q<>+<0E>I}Z<0B>g0><3E>0MW{<EFBFBD>z_BkП;`<60>(<28><>-<2D>wJ<4A>e&ؤ;<3B>FA%L\r?!<21><>̋<EFBFBD><CC8B>\"<EFBFBD>V<EFBFBD>_<15>5G3<47><1E><>s?-eتQ<D8AA>,<2C>Y<EFBFBD>s?24<10>~l\$߱eؤ<EFBFBD>G\r<EFBFBD>rH<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A~<7E><>O<EFBFBD>,<2C>G@l<><07><>dϲY<CFB2><59><EFBFBD>l<EFBFBD>bЂ<15>?<3F><><EFBFBD>#<23><17>:<3A>Sߒ<53><07>k<EFBFBD>n<EFBFBD><6E>ü<04>,<2C>3Jy<4A>\rg<EFBFBD>fπ<><CF80><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76>/<2F>4ݒk<DD92><6B>d<EFBFBD><64>A}<7D>OY|t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>A<0B><><EFBFBD>ޗ<EFBFBD><0F>?|<10><><03>ށ-<2D><12><><EFBFBD><EFBFBD>&<26><><EFBFBD>W`<1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>\0S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD>os~<10><><EFBFBD>G<EFBFBD><47>r\$<EFBFBD>Dr<EFBFBD><EFBFBD>{#<23>'<27><><EFBFBD>Eͽg<CDBD><67><EFBFBD>/<2F>?<3F><><EFBFBD><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>:<3A><0F>0<EFBFBD>'<27><><EFBFBD><EFBFBD><04>Zn<5A>7<EFBFBD><37><EFBFBD>9h@<40>?<3F><1B><><EFBFBD>b@(<28>3<EFBFBD>o(<28>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>o><3E>{<EFBFBD><0B><03>I\"<EFBFBD><EFBFBD><11>䑂\"<EFBFBD>`9ډ^<5E><><EFBFBD><EFBFBD>-<2D>F7<46><37>%<25><>h<03>Ұ<11><>*֬<>@| \0i<0F><><EFBFBD><01>@<40>@~C<><43>\0<EFBFBD>X<0C><1E><><EFBFBD>X\r,<2C><06><>3<19><>\0<EFBFBD><EFBFBD><0B><>ZT <20><06><>6<>.<;<10>C;2b<0E><0F>\0<EFBFBD><02><>K=1<><31>#<23>!<0F><><EFBFBD> 5<>:T<>\nꙪMtᵀ<><16>i<EFBFBD>l@<40><10><><EFBFBD>9<EFBFBD><39><EFBFBD>S<EFBFBD>b<EFBFBD>@<40><>(<28><>81<38><31><EFBFBD>i<EFBFBD>A<0F> <20>@<40>\r<EFBFBD>+<2B>8<03><13><0C>K<EFBFBD>B<>6<EFBFBD>~<0F>\r<EFBFBD>8-R<><52><1A>L\n<EFBFBD>*<2A>`6<><04>1w<31>B<>[<5B>Oٻ<4F>:<02><><17>t<EFBFBD><74> A<05>\n<EFBFBD>@<40>J\"<EFBFBD><EFBFBD><EFBFBD>A8k<>l[<03><><EFBFBD><1A><><06><>Co<43><6F><_<>#AF<41><46>Xn<58>l<05><>(<28><>W<EFBFBD><57>,<2C>ꮈZ6<><36><EFBFBD>ȭXn\0<EFBFBD><06><13>J3<>Pu<50><75><EFBFBD><03><><EFBFBD>>><3E><>d<EFBFBD>!=V<>{KGe<07>c<>F龪<14>Ɍ<EFBFBD><05><><EFBFBD>m/<2F><>0<0F>L<><02>XOi*<2A><>˻<EFBFBD>\0B/<07>3z<1B><08><>(<28><><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD>}<03>0<EFBFBD><30><EFBFBD><EFBFBD>+I<>BPp\nB<EFBFBD><06><><EFBFBD>ש<1D><><EFBFBD>Iui<75>,<2C>)0<><30><EFBFBD>%f S<><53>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>Ϝ{<EFBFBD><EFBFBD><EFBFBD>:<3A>P<EFBFBD>#<23>_<EFBFBD><08><>'T<><54>k2h<32> <20>Ⱦ<><C8BE><EFBFBD><EFBFBD>i¸B<><42><EFBFBD><03>\r<EFBFBD> 0k<19>ΐOn#><3E>l<02> <09>\n<EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><13>2<EFBFBD><32><EFBFBD><EFBFBD>̐<EFBFBD><CC90><EFBFBD><0B><><EFBFBD><EFBFBD>VOiа<69><D0B0>Y<59><18>b<EFBFBD>s<EFBFBD>\0<11><><EFBFBD><EFBFBD>d<EFBFBD>I<49>ſ <0B>1<EFBFBD>6B<36>[<5B>,\\<02><><1B>+2<03><>(&<26><>\0<EFBFBD><0C><>\0<EFBFBD>\r<08><>p<EFBFBD><70>^<5E>Z)@<AL<41>zɐ<7A><C990>U\r<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>tdH<1F><>\rl0D<1A>V1<56> <20><>9<EFBFBD>d0Lt<17><0B><><EFBFBD><EFBFBD><EFBFBD>@[<5B>5<EFBFBD>P P/<0E><>+<2B><><Bz<42>zn;<3B>f<EFBFBD> \"<EFBFBD>\n<EFBFBD><EFBFBD>xg<EFBFBD>j<EFBFBD><EFBFBD><EFBFBD>`T<>2<02>4<11><><0F>X<EFBFBD> @;<3B><16><>7<EFBFBD><37><03><><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD>ț9h<EFBFBD>ۮ<EFBFBD><EFBFBD>>c<<3C><><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-a\nD\np<08><>9<EFBFBD>bZ<62><5A><EFBFBD><EFBFBD><05>k <20><18><><EFBFBD><EFBFBD>*2<>Bʡ<42><CAA1><EFBFBD>\\1<0F><><02>XC<58><43>'<27><10>Ɂ<0E><><EFBFBD><EFBFBD>D<EFBFBD><44>D6<0F>; 9;<3B>+Ȯ`<60><><EFBFBD>ʃ<EFBFBD>J<EFBFBD><4A><EFBFBD>C<><43><EFBFBD><1E><><EFBFBD>\0002<04><><EFBFBD>o<><05><>PH<10>><3E>\rc<EFBFBD>`2A<32><18><><EFBFBD>@F<><46>`ۂ%\$<1D>\"D8<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+A<>\\`ս<><1A>y<EFBFBD>&7<>4<0B><><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78>\0ºt<EFBFBD><EFBFBD>Ѣp<EFBFBD><0E> i<05><19>ZHe<48>HR<1C><><EFBFBD><0B><>D#LZ<05><03><>p)<0B><12><><EFBFBD><0E>.<2E>bɀ,<2C><18>pB<70>\$<13>%xB<78>&<26>TɈ`<60>E(<0F>R<EFBFBD><52>b<><62><EFBFBD>\0<EFBFBD>;F<>1i<31><19>o<0E>TⲀ<54><E2B280>4/<2F><0B>k<U<>*\0<EFBFBD>K<><4B><EFBFBD>\r<EFBFBD>Q<EFBFBD>Z<EFBFBD>e<14><><EFBFBD>]\0<EFBFBD><14>ɑLEK<14><0E><><EFBFBD>:),X<>c(<28>?N<><4E><EFBFBD>,W<><57><1B>V<EFBFBD>GBʯ<42>Rqhŀ<08>ih<06><S<>oŗ<16>Y<EFBFBD><59>EM<11><1A><>_<16>Y<EFBFBD>YE<59><15>]Q]ų<17>W<EFBFBD>KŻ45qv<71><76><14><><EFBFBD>zEB<45><42>^<5E>r<EFBFBD>4<EFBFBD><13>.<2E><><EFBFBD>9<EFBFBD><39><EFBFBD><EFBFBD>\n<EFBFBD>al*<2A>+,`<60>S<EFBFBD>U<0E>b/QE<51><45><EFBFBD>kQ5<51>Xc<><0B>mTP<54><50>T<>{<EFBFBD>`<60><05><><13>%<25>= P\n\0<EFBFBD><EFBFBD><EFBFBD>x{Hq<EFBFBD><EFBFBD>B<0C><>!R<>5<18>P`<60><12>]<5D><> <09><><EFBFBD><19>i<EFBFBD>><3E><>¤<C2A4><EFA180><EFBFBD>h<EFBFBD><68>F<1C>\nN<><4E><<| <20><>h<>Oj<><6A>ᝐtڝ<><DA9D>C<EFBFBD><43>)<1F>F<EFBFBD><46>88(<10>1<0E>8<EFBFBD>NR<4E>i<04><><EFBFBD><EFBFBD>\0߯<><DFAF><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69>蓀-<2D>@'<27>2!<21><><EFBFBD><EFBFBD>K@<40><>%X\0<EFBFBD><11><><EFBFBD>Dk<04><>(Z<><5A>\0<EFBFBD><0E><>\0<EFBFBD><EFBFBD><EFBFBD>룆#<23><><EFBFBD>ii<69><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(/-<2D><>\$<EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD>`t\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>;^<1F><> ׃<><D783><EFBFBD>;O/:Θӽ<CE98><D3BD>]\n<EFBFBD>Ja<EFBFBD><EFBFBD>L<08><><EFBFBD>9F<39><46>RS劣\$<EFBFBD>T<EFBFBD><19>d<EFBFBD><64><EFBFBD><EFBFBD>Ճ~`6<><17>2<> <0F><><EFBFBD><17>j<EFBFBD><6A>D<EFBFBD>2\\OG<1C>Q8<08><1A><03><><EFBFBD> XE<58><45><EFBFBD><EFBFBD><03>4<>nl<6E><0F>CfA<66>\0@<03>bX b<>Xd<58><64>4bk#V\r<03>t<0C>~<7E>W5<57>ћFEN`<60>m<EFBFBD><02><>#H<><48>F<EFBFBD>OX<4F><58><EFBFBD>\0<EFBFBD>8<><38>\$%\n;<3B><><EFBFBD>(<02><><EFBFBD>)<29><><EFBFBD>0<08>\n<02>:D<><44><EFBFBD><EFBFBD>@@<40><>)<29><><EFBFBD>p <09>r<EFBFBD><72><EFBFBD><EFBFBD>)<1B>0<EFBFBD>jM<6A>\n\0<EFBFBD>8<04>\0<EFBFBD>(\n<EFBFBD><EFBFBD>#<23>!<08>`<60><14><>QQ<51>\r(<28>8<EFBFBD><38>J5R?<3F><>M<EFBFBD>(<28><>X<05>)(<0C><~Q<>G졀Rѹ6<D1B9>䀑<> dmǴ]\"b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\rȵ<EFBFBD><EFBFBD>ʁ <1D>&><3E>A<EFBFBD><41>\$h?<3F><>c<EFBFBD><0F>(\n<03>\0<EFBFBD>><3E> <09><><02><><EFBFBD>}R<0C><1B>~\rhH<EFBFBD><1F>{<EFBFBD>,G<><<3C>m<EFBFBD>(VN<56><4E>\"<EFBFBD>\0_<1B>h<EFBFBD>7:،<>2A<32><41>_<EFBFBD>>R\$<EFBFBD>1\"\\<EFBFBD><EFBFBD>27\"z<EFBFBD>#<23>G<EFBFBD>l~rDG<44><14>m<EFBFBD><6D>l<EFBFBD><6C>[<5B><>I-#Srr@u ;d* I/\"1<06><><04><><EFBFBD>'<27>]<5D><<3C><><EFBFBD>\nH<><48><EFBFBD>w<EFBFBD>AI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8#<23><> [v\0001<EFBFBD>^l<>#27\\<EFBFBD><EFBFBD>}<7D><>ɒ3#<23><><EFBFBD>7E&|<7C>i9<69><10><><EFBFBD>l<EFBFBD><6C>&<26>v<EFBFBD><EFBFBD><7F>\r<EFBFBD><05>9<05>'zC./<2F>3'<27>@<16>j+<0C>h农<03>*r@<40><>hY<68><17>;'<27><>2~<7E><>(96{<EFBFBD>A(9<><39>HC<48>T<1C>D<EFBFBD><44>[<1C>҅<EFBFBD>](<0B><><EFBFBD>,0<><0C>u(<28><><EFBFBD>}<7D>3Q<><12><><EFBFBD>)<R<>2(RL<52><4C><EFBFBD><EFBFBD>\rd<EFBFBD>'<27>\n<EFBFBD><02>F2{J<1A><><EFBFBD>|<7C>u((SA<53><41>ȱ(o%<08>(<28> °\0[<0C>.<2E><>ʐ3<CA90><04><>J1(T<>2<EFBFBD><32>\"j<><6A>ʫ*<2A>7ү<37>]*<2A><><12>I<EFBFBD>:0.!H\n+<2B>C<EFBFBD><43>`<60><><15><>(P?Ҹ<><D2B8><EFBFBD>L<EFBFBD>aF<61><46>+<2B><>2<EFBFBD>ʀ9<><39> <04>+<1C>σ<06>*A<><41>F<EFBFBD>L6<4C><36>0<EFBFBD>\0<EFBFBD>+<1C>c<EFBFBD>\$@cP?R<><52><EFBFBD># <20>R<EFBFBD><52>Xy:6p<36>D<EFBFBD><0C> <20>,<2C><1E><><EFBFBD>G<EFBFBD>5(<28>QQԤcP\r<EFBFBD><03>+į<>'J<>B<>8<EFBFBD>,<2C>m<>8<EFBFBD><02><><EFBFBD><EFBFBD><05>-<2D><>P<EFBFBD><50>pM<70><4D><EFBFBD>x<02>̥B<CCA5>V<><56>}<7D>|<7C>G,<2C>< 6\n<EFBFBD>\r<EFBFBD><EFBFBD>ҲJ<EFBFBD>S<> 9<>Z<EFBFBD><5A><05><><EFBFBD><EFBFBD>Ļ2<C4BB><32>.<2E><>E<><45><03><05>1K<31><4B>8:ՌG*A<> <20>&5-ĸ!jK<6A><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ae-<2D>9<12>'#/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14>U'<0C>s0<0C><>'<27>\n<16><><EFBFBD><EFBFBD>LUJN.m<><6D>Ķ<>\nK<EFBFBD>04<EFBFBD><EFBFBD>9Lc<><63>p<EFBFBD>\0<EFBFBD><<3C><><EFBFBD>L0t<30>2<EFBFBD><0C>B\$<EFBFBD><LBL<>sLJ<4C>xhs<15><>1l<31>n'<27>|<7C><14><>W<EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>Lm,<1C>\"<EFBFBD><EFBFBD>w*t<><74><EFBFBD>Lo-Y<>hߤ<68>\"Z<>1<EFBFBD>ȥx<C8A5><78>焨Ĥ<> /<2F>1<EFBFBD>U<EFBFBD>9̤ʒ<>K<EFBFBD>2<EFBFBD><32>s.<2E><>'(̂<>vI<05><1B><1A>|<7C><><EFBFBD><EFBFBD><EFBFBD><10><19><>̇.cS\r<EFBFBD>\$<EFBFBD><EFBFBD><19><><EFBFBD>a3<61>r3\r<EFBFBD><EFBFBD>J#<23>i<18><\r<EFBFBD><EFBFBD> <20>1<EFBFBD>+<2B><EFBFBD>J<EFBFBD>4\$<EFBFBD>N<EFBFBD>#<23><><16>-4j<34>jM<6A><4D>\n<EFBFBD>o/<2F><>34t<34><74>HʘlȒ<6C><C892>8L<>/<2F><>4<EFBFBD><34>SN<53>0<0E>Q<EFBFBD><01><>4<EFBFBD>ҳRM0]<5D><><EFBFBD><EFBFBD>K<EFBFBD><4B><EFBFBD><EFBFBD>3>%0<>')L?*T<>s<1E><><EFBFBD>|<7C>3`̋6<1B><12><>|<12><>R<EFBFBD>ͅ3<CD85><33>a<EFBFBD>J&<1C>r<EFBFBD>M<EFBFBD>xs9<>2<<3C>s+̅6<CC85>(<28>l͑1<CD91>><3E>9͟5ۉ<35>T<EFBFBD><54>6<<3C>x\0<EFBFBD>\\<EFBFBD>slM<EFBFBD><EFBFBD><EFBFBD>/}GJ<47><4A><EFBFBD>\0006M<EFBFBD>7j7<EFBFBD>;<3B><>3<EFBFBD><33>gM<67>7C<37><08><><EFBFBD>+\"<EFBFBD>K<EFBFBD>7<EFBFBD><EFBFBD>s<EFBFBD>#~<<3C><><EFBFBD>ˑ8d<38>i\"<EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B>+<2B><>,<04> <20><0E><10>0<>8Y&6<><36>7xb/}#3<7F><33><12>\0<EFBFBD>8<EFBFBD><05><><EFBFBD>L<16><> 2<><32>9<1C><13>Mu9K1*<2A><>-/<2F>䲟\n54<EFBFBD><EFBFBD>q<EFBFBD>K<EFBFBD><04>œ<EFBFBD><C593>wD栏<44>o1She<>~#<23><>s<EFBFBD><04>l<>r<EFBFBD><72>:<3A><>ӜN|<7C><><EFBFBD><EFBFBD>\"<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>L79<EFBFBD>?O}\0[KӉ<>7<><37>eE<65><45><EFBFBD>(\ra<EFBFBD>N)3<>ܳJ<>.k<>2<EFBFBD><32>BF<42><05>K<1A><><EFBFBD>L<EFBFBD>)<29>I2o9<6F>%<25>|2f<32><66><03><>sI<73>'D̒u<CC92><75>'pSBy<14><><EFBFBD>>/|<7C><>-\0<EFBFBD><0E><>s<EFBFBD>ʖ<EFBFBD>r|<7C>O8<4F>DH-N<><<3C>u<EFBFBD>Jm:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=X%)<0C><>0<EFBFBD>Y3<59>2<EFBFBD><13>o\nդt <0C><><EFBFBD>M<EFBFBD>,l<>D<EFBFBD>ͣ=<3D>K<EFBFBD><4B><EFBFBD><EFBFBD>=<3D>+<2B>ق<EFBFBD>6<EFBFBD><15><>OU><3E><><EFBFBD>I<0E>>\0<EFBFBD><EFBFBD><EFBFBD>MR\n<EFBFBD>г<EFBFBD>OY'<27><><EFBFBD><08><>A<EFBFBD>SOM=D<>S<EFBFBD>ϫ=<3D><>r<EFBFBD>;s<>sO<>=<3D><>2<EFBFBD><32>?<3F><><EFBFBD><EFBFBD>N[.D<>3<EFBFBD>ɣ?<3F><><13>O<EFBFBD>=<3D>\0\"LO[?u\0<EFBFBD><EFBFBD><EFBFBD>7@T<>4v+p+\$<EFBFBD><EFBFBD>9L<EFBFBD>.<2E><>1,H<05>J̎G<CC8E><47><EFBFBD><EFBFBD>P7<><37>F<EFBFBD><46>5>U<03><><EFBFBD>'A5<02>P?A\\<EFBFBD><13><>%?<3F><05><13>Y@<40><>M<><0E>C4LAh<41>d<EFBFBD><64><EFBFBD><<3C><12>P<EFBFBD>'<27>TN<>?<3F><>4%̢<><CCA2>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><0F><13><>oB<6F>E<EFBFBD><0C><><10>\nҁ<EFBFBD>qA<EFBFBD><EFBFBD>L<EFBFBD><EFBFBD>L<16>a<EFBFBD>PDT<44> T.<2E><>B<EFBFBD>\n<EFBFBD><EFBFBD>Я.<2E><>422<>؈<EFBFBD><04>)<29>\r<EFBFBD><EFBFBD>P<EFBFBD>?UT1P<31>@D<><06><>5<0C>4\0<EFBFBD><EFBFBD>Զ<EFBFBD>L9<EFBFBD><EFBFBD>I<EFBFBD>I}'<0C>M<EFBFBD><4D>*3\$<EFBFBD>`6ɫ'H<>rv9<76><0F>\nP<EFBFBD>P<EFBFBD>?l<><6C><1C>P<EFBFBD><50><0B><QUC<55><0B>_QGB<47><14><><EFBFBD>悌P<><50>4<EFBFBD><34><0E>J<EFBFBD>2|<7C><12><1F><0B>q<EFBFBD><71><EFBFBD><EFBFBD>,}<7D>菦><3E>0<EFBFBD><30>\$f<EFBFBD><04>`)<02>PY<><59>(<08>+\0<EFBFBD><EFBFBD>0<><30><0F><02> <15>ޕ<EFBFBD><DE95>bWQ<57>0<08>p\0<EFBFBD>\ne<1B>\$<EFBFBD><EFBFBD>rP<72>s<EFBFBD><73>\n<EFBFBD>Q<EFBFBD>Q<>F<EFBFBD><18>n0(<28>@#<23>J@<40>&ў3\0*<2A><>FZ9<5A>\"<EFBFBD><EFBFBD><EFBFBD><08><>#<23><>><3E> <09>(Q<><51><EFBFBD><EFBFBD>n<EFBFBD> Fm<1F>h<EFBFBD>EF<45>\n`(<28>N?r;<3B><>\0<EFBFBD><02>\\<EFBFBD><EFBFBD>R&><3E><>`'\0<EFBFBD>x cꎮ(\n<EFBFBD>@<40><>F<EFBFBD><46><EFBFBD>&\0<EFBFBD><02><08>n<EFBFBD><6E><02>\n<EFBFBD>Ə<EFBFBD><02>R<EFBFBD>/<2F><><EFBFBD>rD<72>#<23>đ(c<>Q<EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>\n>ďT<C48F><54><EFBFBD>FRG<52>ќ<EFBFBD>% <09>ѥGxtjѮ<02>kT<6B><0F>JpAr<41>GJ<47>,-<2D>Ү(ԁ#<23>!e+<2B>H<0F>H<EFBFBD>*4<>R<EFBFBD>K04Ar<41><72>><3E>t<>G<><14>R<EFBFBD>J}<1B>'Q<>G <09>rQ<72>GE0<14>\0<EFBFBD><EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>e<18>F<EFBFBD><46><02><><EFBFBD>6ҍJ<D28D>9<EFBFBD><19><>Km)<29>n<EFBFBD><02>P<EFBFBD>G<EFBFBD><47>J8t<><74><EFBFBD>K<EFBFBD>,<14>R<EFBFBD> <20>.t<>SH<53><48>T<>\0<EFBFBD>L<EFBFBD>+<2B>n<EFBFBD>(<28>(<28><>1Gu<1B>|<7C><>G<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>H5t<35><74><EFBFBD><02>!@>S?M5\"4<EFBFBD>R<EFBFBD>N<08>4<EFBFBD><34>H<>#`<15><>#Ԑ<02>I5c<35>#<23>I=%4<><34>IIl<49><6C><EFBFBD><0F>?6<><36>RL%0Ԃ<30>IL<49>Q<EFBFBD><51><0F><02>3<EFBFBD><33>S@<40>(\nT<EFBFBD>ұN`0<>k<EFBFBD><6B><1A>M<EFBFBD><4D>\0<EFBFBD>I<EFBFBD>&<26>'<27>qI<71><08><>T\rI<EFBFBD>0N<EFBFBD>R<EFBFBD><EFBFBD>52<EFBFBD>r<EFBFBD><EFBFBD>E7 <20><>G<EFBFBD>, <20>RoI<6F><1F><04>{Pe(5Ҋe5<65><35><EFBFBD><EFBFBD><EFBFBD>%<1B>#<23>><3E>2`\"<EFBFBD>UKe?h<><68>eK\\<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD>X*7kTH(<28>#<23>ѻKM2<14>#<23><02> <09><1B><>R\n<EFBFBD>%*<2A>-!T<>Q<EFBFBD>= <20>UT<55>?T<><54><EFBFBD>1O<31>\r<EFBFBD>.T\\<03>% ,<2C>UR]K!<21>Q%+<14><>MQp\ni[\0<EFBFBD>J<EFBFBD>J<EFBFBD>!SQT<51><54><16>^<5E>}4<>7<EFBFBD><37><02>J<EFBFBD>T<>S5H<35><48><EFBFBD>MS<4D>O<EFBFBD>9<EFBFBD>KQ`\\<EFBFBD><14>WS<57>+\0+%MPa<50>Q<EFBFBD>M`<60><><EFBFBD><0F>G<EFBFBD>G<EFBFBD><47><0F>?<3F>.<2E><><EFBFBD>Q㨉@#p*=<3D>'<27><><03>Rt<52>Ӭ><3E><1A><>USP<53>PrR<><52>\$<EFBFBD>\0%<25><>U<EFBFBD>C<><43>0?<3F>\\<EFBFBD>.UuL<75><4C><EFBFBD><18>(<28>u7<75>(<28><><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>U<EFBFBD>7d<>N<02>If<0F>ME\$5K<0F>?쎃<><EC8E83><EFBFBD>?<3F>0<EFBFBD>j<02>J\rT@\"<EFBFBD>H<EFBFBD>x<EFBFBD>5oUV<02>U<EFBFBD><55><EFBFBD><EFBFBD>W)yS)M<>]T<><54><EFBFBD>S<EFBFBD>\$<EFBFBD><19>p><3E>Fc<46><63><10><><EFBFBD><0F>O<EFBFBD>Z<EFBFBD>U.?<3F>S5mU8%<<3C>(Q<>F<EFBFBD><15><>uF<75><46>V\n<EFBFBD>MT<EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>_<EFBFBD><EFBFBD>U@=\\5q<EFBFBD>L?\rbus<EFBFBD><EFBFBD>Y\r4<EFBFBD>w<EFBFBD>gY!1<>#<23>eX<65>a@<40>U<EFBFBD>><3E>d4<64>\0<EFBFBD><EFBFBD>\0<14>#<23><>p <09>>\0<EFBFBD><03>=<3D><18><> <20> h<><0F>?<3F> <09><>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>.՜Ԩ<D59C><D4A8> @'<27>nX 5`\$J<0C>4e<0F>K@<40><><02>V-n<>ֱK<10>u<EFBFBD>V<EFBFBD>]Wի<57><D5AB><0B>D<EFBFBD>U<EFBFBD>Z<EFBFBD><5A><EFBFBD>m<EFBFBD>6<EFBFBD><36><EFBFBD>h<EFBFBD>VX[<03><>\rV<EFBFBD><EFBFBD><08><>M-Dվ<44><D5BE>Yui;<3B>uU<75><55>)BU<42>[<5B>\$<EFBFBD>ģsTMG4kH<EFBFBD>!]uWR}o<><6F>H<EFBFBD>OoI\$<EFBFBD>?Eq<45><71>H; <20>\nT<EFBFBD>ԙG<EFBFBD>:#<23>\0<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>TMnc<6E>T<EFBFBD>-D<0E>VJ<>u<EFBFBD>ق<EFBFBD>?<3F><><EFBFBD><0C>T<EFBFBD>%vC<76><43>ʏeG2;y]hh<>\$<EFBFBD>W<EFBFBD>:)CWs^wuu<75><75>V<EFBFBD>`<60>M<EFBFBD><4D>^E\\<EFBFBD><EFBFBD>W<EFBFBD>^<5E>*ՙW<D599>R<EFBFBD>R<EFBFBD><52>W<EFBFBD>V<EFBFBD>z<EFBFBD>Nן_Jt<4A>א><3E><><EFBFBD><EFBFBD>Wg<><67><EFBFBD>V5w<35>G\0<EFBFBD>S<EFBFBD>}<7D><0F>F<EFBFBD>ZU<5A>V)Zuh<75><68><EFBFBD>WK<57> 4<><34>qHU<55><7F>U7X<37>hUD<55><44>_<EFBFBD>y6<><36>F<EFBFBD>\\<EFBFBD><EFBFBD>T<EFBFBD>`M<>V\n<0F>`}<7D>4<EFBFBD>XS݃<53><DD83><EFBFBD>e`H\n<EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>p<08><><EFBFBD>GU&#<23>%<1C>}r <09><><EFBFBD><EFBFBD>e<EFBFBD><65>W\"?=1I<1B>Ze<65>*֞饄<D69E>ܣ<EFBFBD>T<EFBFBD><54><03><><EFBFBD><EFBFBD>,<2C><><EFBFBD>Xd<58>t<><74><EFBFBD><02> <15><><EFBFBD><EFBFBD><1B>\0&<0F><>kT<6B><54><EFBFBD>bM<><1F>P<EFBFBD><50>-T<><54>N`<07>%<25>^<02>BU\0<EFBFBD>!<21><><EFBFBD><EFBFBD>\0<EFBFBD>a<EFBFBD><<3C>&<26><>G<EFBFBD><47>H<EFBFBD>?<3F>D<EFBFBD>%<25>eM9<>=<3D><>L<EFBFBD><4C>e<><65>}Q6=֤<>k@<40>R\ne(<28>AWWu<57><75> WB]o<><6F>Y']<5D>8<EFBFBD><38>U<12><>@є<><D194>VԢ<56><D4A2>-L5y<35><79>b kH<6B>Wh<57>\r<EFBFBD>VO\0Vj?<03><>UP<55>Oh<4F>ӫQ<D3AB> <09>#<23><>\rm<EFBFBD>W<EFBFBD>cb}<1F>\$<05>Le?4jVk!<21>Q`'U%^h<0B><>R<EFBFBD><52>EN\0Tn휂u\rT<EFBFBD><1A>_<EFBFBD>*\0<EFBFBD>-<1A><>\$]<5D>76mٻY<D9BB><1D>4TmfU&8;p?5RU\"<EFBFBD><EFBFBD><02>F<EFBFBD>*?<3F>g-<2D><>x<EFBFBD><78><02><>4<EFBFBD>X쏅IuSRf<>i[RSb8 4<>ٽg5<67>6<EFBFBD><36><EFBFBD>g<EFBFBD>*<2A><><EFBFBD>Y<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b͠V<CDA0><56>UE n<><0F><0B>6t<36><74>}O5<4F><35>l#<23>M+<2B><><0F><02><0B>\"<0F>i5+t<>#yV<79><56><EFBFBD> <20>] <20>QԆ<51><D486>QM<><4D>ZoFե<46>=Zl魥6'Z<>i͇YZgQu<51><75><EFBFBD><EFBFBD>c<>U<EFBFBD><55>Q<EFBFBD>/5<17>sZ<73> <20>T<EFBFBD>0><3E>&c<><63>U@<40><><EFBFBD>Q<EFBFBD>!ZM<5A><4D>U<EFBFBD><55>\0<EFBFBD>.<2E>\$Y<>P8R<38>?}kiցNM<4E><19>IT<49>D<EFBFBD><44>K#<23>x<EFBFBD>'T<>RH<52><48>7<EFBFBD><37>G卵<47>Tގ-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p\n<EFBFBD>i<EFBFBD><EFBFBD>Ul<EFBFBD>t<EFBFBD>U<EFBFBD>|<7C>V<EFBFBD><56>V<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>\0<EFBFBD><02><>D<EFBFBD>[+lݎc<DD8E>[ <20><><EFBFBD>π<EFBFBD>c<EFBFBD>M5|\0<EFBFBD>l<EFBFBD>:<3A>ҤfG6<47>і\r1<EFBFBD>=<3D><>m] <20><><EFBFBD>\\<1D>Tm<54>Qg<51>1<EFBFBD><31>ہX<DB81><58><EFBFBD>><3E>fu<66><75><EFBFBD>e<EFBFBD><65><03><0F>b<EFBFBD><62><EFBFBD>k<EFBFBD>am <20>ݣkm<6B>Q<EFBFBD>:\0<EFBFBD>><3E><><EFBFBD>##sn}<1C>'<27><><01>g<16>\0<EFBFBD>ñ<><C3B1>Z<EFBFBD>U<EFBFBD><55><EFBFBD>\"<EFBFBD>X<EFBFBD>uk<EFBFBD><EFBFBD>T<EFBFBD>><3E>2UR<55>O <20>%<25>\\<EFBFBD><EFBFBD>b<EFBFBD><08>\$\0<EFBFBD>`%7<>8[:<02><><EFBFBD><EFBFBD><0F>mm<6D>7<01>mH<6D><48>\\H=<3D><>v<EFBFBD>KL<4B>\$<EFBFBD>p<EFBFBD>KFm\$<EFBFBD>SH<EFBFBD>Z=<3D><><EFBFBD>W%c<>0<EFBFBD>><3E>c<7F>t<><74><EFBFBD>o%<25><><EFBFBD>X<EFBFBD>}L\0\"<EFBFBD><EFBFBD>S<0B><>%Z<>o<EFBFBD>7\0#H<><48><EFBFBD><EFBFBD>w<1B>\n<EFBFBD>{<EFBFBD>*<2A><>i<EFBFBD> n<><6E>h?]<5D><><EFBFBD><EFBFBD><02>\rq<EFBFBD>HT`<0B>V<EFBFBD><56>meU<65>ꀿK<EA80BF>i#<23><>v<EFBFBD> \"\0<EFBFBD><EFBFBD>Ű<EFBFBD><EFBFBD>#<23>PM<50>7<03>Ih<49><68>ԝ<EFBFBD><1E>\n?<08>g<><67><EFBFBD>T7PEAT<41>R<EFBFBD>PrM5`S\n5x<0E><><EFBFBD><EFBFBD><EFBFBD>@69<36>h<EFBFBD>E!<21>6<EFBFBD><02>x<EFBFBD>T<EFBFBD>Z4<5A><34><EFBFBD><EFBFBD>\r;Qr<51><72>(<28><>-K<>;<3B><1B><>` <20>t<EFBFBD><74>UK<55>/V<><56><EFBFBD>N@<40><>S<><53><EFBFBD> <20>PV<50>m@<40><0E><>n<EFBFBD><6E>v<EFBFBD><76><EFBFBD>bT<62><54><EFBFBD><EFBFBD>t><3E>E5<0B>;jC<6A>?#rLc<4C><63><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>[` <20>yT<79><54><EFBFBD>\0<EFBFBD>p-<2D>W3<57><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>-I<><49>S+T<><54><14>]\"<EFBFBD><05><><EFBFBD>:<3A><><EFBFBD><14><><02><>:<3A>=<0F>N<EFBFBD><4E><EFBFBD>)XOo<4F>:<3A>9\0<EFBFBD><02>q6<71>ݯr<DDAF><72>@!<21><><EFBFBD> Waۑ]e#@/<2F><>?<3F>2tT]wU<77>v%<1E>mܒQ<>'<27><0B><><EFBFBD>o\\շ֑<EFBFBD><EFBFBD>H<<3C>4<EFBFBD>\\Yx<14>SaYU\$<EFBFBD>0XqHŔ<>Sb<05><> W)!<21> <20>>Yyb-<2D>\0>UY<>K<EFBFBD>G\0<EFBFBD>k<EFBFBD>wדSEy-<2D>n<>ck-<2D> ؟P@<0F><>\0<EFBFBD><02><>WY`<60>\rgt<EFBFBD><0F>UD<><44><13><>1=<3D><>M!u<><Ħ<>C<EFBFBD>ר\$t`d<>9<EFBFBD><39><0E>́\0<EFBFBD><EFBFBD>z}<7D>cJD<4A>@b<0F>;<3B><03>\$.<05>{<EFBFBD><EFBFBD><03>i<><69><EFBFBD>TP#<23><><EFBFBD><14>\\ɑ<EFBFBD><EFBFBD><11>ȍxT<78><54><EFBFBD><EFBFBD><05><>k<EFBFBD><6B>|&e<><<D,<2C><>B'|8W<>B<EFBFBD>zk<7A>-<2D>^<5E>p!<21>P<EFBFBD><50>f<EFBFBD>%:<3A>\r<EFBFBD>\r.\\_1z<EFBFBD>\r<EFBFBD><EFBFBD>\$<EFBFBD>=<3D>0<EFBFBD><30>G|<7C>B<EFBFBD><42>Ţ<1A><>{z|Շ#='<18><0C><><EFBFBD>ڭ<EFBFBD>*Rź<52>}<7D><>.<2E>_nF<6E><46>7<EFBFBD>C<EFBFBD>}k<>P<EFBFBD>1<EFBFBD><1E>0<EFBFBD><30>ZJ<02><><EFBFBD>/<2F>_eJ<65> 7<><37><13> <<3C>n?-!X],\n`+UQy]<5D>6<EFBFBD>Tr<54>8<EFBFBD>UfӏNM<4E><4D>DR<44>O<EFBFBD>0<EFBFBD>&ӑm=<3D><>5<EFBFBD><35><1A><>i6]<5D>;@<15>=K<><4B><EFBFBD><EFBFBD>Tj]<5D>5Y<><EFBFBD><7F><EFBFBD><EFBFBD>Y]<5D>\rwh<EFBFBD>ԑRP0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]u<>2Ӏ#<23><>_<><14>iG<69>*?<3F> \n_<EFBFBD>Q<EFBFBD>n<>̔}4<>0<EFBFBD>m <20>0<EFBFBD>\0<EFBFBD>t<><74>*:<0F> <20>,<2C><05>7.<2E>;<0F><><EFBFBD> <03><><EFBFBD>UX<03><02>*\0004<EFBFBD><EFBFBD>9e<EFBFBD>.<17><19><><05> J<> %\nM<EFBFBD>X<EFBFBD><EFBFBD>>;<3B>!<21>Bz@<0E><0C><>MtHa><3E>1[<5B><>?\0<EFBFBD>N\\<1B><,<2C>+<2B>ЖAv8<>D D<>v\r<EFBFBD>(<28><><02>u<EFBFBD>jƔ2(<28>܃n<DC83>Ij<>H\$<EFBFBD><EFBFBD><EFBFBD>/^<5E>!s<>@<40>a\nv<08>&d<><64><EFBFBD>/A<><41>{l<EFBFBD>N<EFBFBD>Ơ`<60>'<27><><EFBFBD>T<03>n<>,!<k<>:݄<>S@<40><>]<13>c<EFBFBD>`،hT<68>T`<60>^ T<>?;{<EFBFBD>p5x4Dx=XkA<6B><41><EFBFBD><05>\n<EFBFBD>A<EFBFBD><EFBFBD> M<><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E>\$<EFBFBD>S<> <20>N<EFBFBD>ìo&<26><><01><><EFBFBD><EFBFBD><EFBFBD> ȕ<>:<3A><>k<EFBFBD><0F>N<>[<5B><EFBFBD> <09><>n<EFBFBD><6E><EFBFBD>ҙB<D299><42><02><10>߮<EFBFBD>/<0C>H<EFBFBD><48><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD>:<3A>,t0+<2B><>2;<3B><17><><EFBFBD><0C>a)<29><>vPL<50>z) {<EFBFBD><1E>#<23>ڂ<04><>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3b/<2F>}<7D><>;)<11><><EFBFBD> *<2A><>Qb,<2C>p<EFBFBD>b&5<>p<EFBFBD><70>P<>ΕY<><59><EFBFBD>1<07><>\rX\r!%a<><10><0E><><<3C>O\$h<EFBFBD><EFBFBD><EFBFBD><07>\0006/o<>i{<EFBFBD>)<29><><EFBFBD><EFBFBD>[<5B><0F><>*<2A><>'<27>4G<34><47>p<EFBFBD>a!Vh@-<2D><>b<EFBFBD>H?<3F> <0C><><EFBFBD>Jx<4A><78><EFBFBD><19>Jc-<2D><>>*<2A><><0C>f<1E><>b<EFBFBD>&<26><1E><>A_<41><1D>\"<EFBFBD>%<25><>-<2D><>=<3D>W{<EFBFBD>J<EFBFBD>Yb<EFBFBD>~%<25><>;<3B><><EFBFBD>%X/ <20><><EFBFBD>\$<EFBFBD>Qb<EFBFBD><17>G8<47><38><EFBFBD><EFBFBD>f,<2C><><EFBFBD><0F>\rx<EFBFBD>c(\ra<EFBFBD><EFBFBD>:<3A>v1`>c<17><>&a<><61><EFBFBD><EFBFBD><EFBFBD>a%b@<03>qL<>HkW<6B><57><EFBFBD><EFBFBD>t\n<EFBFBD><EFBFBD><EFBFBD> <09><EFBFBD><7F><EFBFBD>7<>ɤ<EFBFBD>+V|<7C><><EFBFBD>?<3F><><EFBFBD>N<EFBFBD><4E>cQ`<60> cg<63>h 6<><36><01><>F0<>86xߝ<78><DF9D>A]<5D>9\0<EFBFBD>88<38><38>J<EFBFBD><11><><EFBFBD>Ճc<D583><63><EFBFBD>η<>1@ 0<><18><04>ab<61><12>7x<37>\$?8<03>2<EFBFBD>NS<4E>\$<EFBFBD>J'D<>\\<EFBFBD>5<EFBFBD><EFBFBD>A%<25>1<EFBFBD>v3<76><33>O<EFBFBD>3<EFBFBD>!7N<37><03>rh<72>#<23>;7<><37><EFBFBD><EFBFBD><1E>{<EFBFBD><>&%<25><>Aw\$<EFBFBD>:<3A><08><12>;<3B><15><13><><EFBFBD><EFBFBD><EFBFBD><03>pK8<4B>c<EFBFBD><63>5<01>ܘL<19><><EFBFBD>n,Ȕ<>Ȁ<EFBFBD><C880>#<23><><EFBFBD><EFBFBD> <09>\0<0F><>@:<3A>R<EFBFBD>NEB<04>3˯<33><1D><>.h<0E>S<EFBFBD>=<3D>.3<EFBFBD>\"<EFBFBD><EFBFBD>ELs<0B>cR<63>v)<29><>ǭ<EFBFBD>\$<EFBFBD><EFBFBD><10><><EFBFBD>i<EFBFBD>O<EFBFBD><4F>FImљn<><6E>!<21><><0F>Jb<>\r<EFBFBD>T<EFBFBD><EFBFBD>d<EFBFBD>|`O<><4F><EFBFBD><02>n<17>;(h<0E>5<EFBFBD><35><EFBFBD>w<>d<EFBFBD>;<3B>kN<6B>ʪ<><02>73<37>T-<2D><>78<37>\n<EFBFBD>UY7D<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>7@<40>\n<EFBFBD>5.<2E><><EFBFBD> Tsf~<7E>k<>n<EFBFBD><6E>) <09>mA7B<37><12>N<EFBFBD><4E>d<EFBFBD>ͦ<06>>@E<><45>&<26>P@<40> <20>ツb<E38384>ҝ<EFBFBD>:<3A><>Ҝ<EFBFBD>AE\0<EFBFBD><\"<08>Q<EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><16><03>7X<37><58><EFBFBD><1A>:\0<EFBFBD><EFBFBD>at<>l<EFBFBD><6C>;\r<EFBFBD>q\0<EFBFBD><16><>)<0B><>|\\S;(<12><><EFBFBD>Y<0C><>s<EFBFBD><73>_^<5E>c<EFBFBD><63>&(<1D>|Yj^<5E><>~Z<>DƸ<12>K<EFBFBD><4B><12>+<2B>\0܄<EFBFBD><EFBFBD>;<3B>=<3D>ї +A<>(<1D>6\\i<EFBFBD>Bz2mXB_<42><5F>}<7D>6߉.}<7D><><EFBFBD>_<EFBFBD><5F><15>ӛe<D39B> [<5B>B2e<32>|<7C>(<28><>fz<>Z<EFBFBD><5A><EFBFBD><EFBFBD><19>c<EFBFBD><63>f}<7D>ن\0<EFBFBD>P@2Ad<41><64>by<62>f<01><>bY<62>Nm<4E><6D>A<EFBFBD>2×<32><C397>d93f\rvd<EFBFBD><EFBFBD><EFBFBD><0B>e9<65><39><17>dY<64>f<1B>na<6E><61><EFBFBD>c<EFBFBD><63>e<EFBFBD><65><EFBFBD>/<2F><>fٓf9<66><39>f<19>e<EFBFBD>~4?<3F><>_{<1A><><EFBFBD><EFBFBD>f<EFBFBD>-<2D>l<>~7ں<37>}<7D>bY<62><06>vM<76><02><>LL<4C><06><><1B><><EFBFBD>v<EFBFBD><76><EFBFBD><16>eш\n9E<EFBFBD><13><><EFBFBD>u<EFBFBD>U<EFBFBD>Y\\<EFBFBD><EFBFBD><1F> <09>#<23>\$<EFBFBD><EFBFBD>n<EFBFBD>g<>B<EFBFBD><<3C> <20>~<7E><><EFBFBD><EFBFBD>w<EFBFBD>\r<EFBFBD>uC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W-d|<7C><>Ǭ<EFBFBD><C7AC>y<><18><>Tz<54> 1<>,k<>9<EFBFBD>Q<>VpRO<52><4F>,hCB<43><42><EFBFBD>~<7E>nY˸Q<CBB8><51>p<EFBFBD>j<EFBFBD><1C>Y#<04><>NX<4E><58>Wum<75><6D>Z<EFBFBD>(<28><>g3V<0E><>L<>^oy<6F>gq<0F>!<21>gz!]<5D>p.:<0B>q<1A>) <06><>gtJa|<7C><>u<EFBFBD>܃<EFBFBD>a6 <09>/燃<><E78783><EFBFBD>4d\$<EFBFBD>6\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2#1.g<><67><EFBFBD>s<EFBFBD>ž<C5BE><7F><02>\\<16>&u<><75><EFBFBD><EFBFBD>+<18>,g<><67><EFBFBD><EFBFBD><EFBFBD><0E>wy<>Y<EFBFBD>K1<><31> 0<>9<EF8B89><39>:מۭf6<66>˞<EFBFBD>xY<78>9<EFBFBD><39>Qb<51>\$<EFBFBD><11>~tX'<27><><EFBFBD>6z<36><04><>.<2E>m<EFBFBD>`<60>1<EFBFBD>9s<39>@4<16>̓hD<68><44>y2<79>☾vqζ<71>VD.<2E>\0<EFBFBD>6<EFBFBD><EFBFBD><<13><><EFBFBD>\"\0<EFBFBD>綊k<EFBFBD><0B><1F>>P9<50>1<EFBFBD>vzϏ<7A>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N՟<EFBFBD>FY<EFBFBD><0C><>V}\$:<3A><><EFBFBD>6<EFBFBD><36>`<60><03>::';<3B>O<>Od\$yF~<7E><>8<EFBFBD><38><EFBFBD>\"<EFBFBD>턚.<2E>5y<35>6O<36><4F><EFBFBD><EFBFBD><EFBFBD>,Q<>!=<3D>t%<25><>e<><65><EFBFBD>\0<EFBFBD>\0yf6<EFBFBD><EFBFBD>}<7D><><EFBFBD>R\n<EFBFBD>A<EFBFBD>`<16>P<EFBFBD>r,<2C>C\0<EFBFBD><EFBFBD><EFBFBD>k@<40><11>S<EFBFBD>zB<7A>QCX!<21>I\0<EFBFBD>.v<>N<EFBFBD><4E><1D><>\$<EFBFBD><1E>@<40>Tc<54>F<EFBFBD><46>Hi<48>Z<EFBFBD>2֑K<D691>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><05><1C>)]<5D><>i><3E>77<37>߀MbŸ<62><C5B8>?<3F><><EFBFBD><EFBFBD>ŽC;<3B>C<EFBFBD><04><>ޓc<DE93><63>I<EFBFBD><49>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23>0<EFBFBD>hT<68>M<EFBFBD><4D>D=zM<7A><4D>X<17><02><><EFBFBD>CY<43>i<EFBFBD>@`<60>,<03><><EFBFBD><EFBFBD>y<EFBFBD>Cݑ<43>i<EFBFBD><69>c;<3B>zV%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,M<><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%~<7E>:ENY<4E><59><EFBFBD><07>.<2E><>NY<4E>N<EFBFBD><4E><EFBFBD><EFBFBD>/<2F>N<EFBFBD><4E>7h<13><<3C>A j<12>\\\n<EFBFBD>aW-x`ډ<><18>d<EFBFBD><64><EFBFBD>i~KP0<50>M<EFBFBD><10>*i<><69>\$<EFBFBD>Fz|<7C>QAV<41>I<>=<14>j!<21>,:tB0<10>-<2D>z<><7A><05><>N<EFBFBD><4E><1F>V?@K<13><>AzxDb<44>V<EFBFBD><56>K\0<EFBFBD><EFBFBD>8KD<4B><44><EFBFBD><EFBFBD><EFBFBD>^<04><>;<3B><>Gg<47>je<6A>Ý<>F|<7C><1C>oC9<43><39><EFBFBD><EFBFBD>u<EFBFBD><75>n<EFBFBD><02>(<28><1E>\0<EFBFBD><EFBFBD><EFBFBD>*4<>A1<41><31><EFBFBD><EFBFBD><1A>j<EFBFBD>\n<EFBFBD><EFBFBD>B<EFBFBD>f<EFBFBD>=n<><6E><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD>zxb܂D47i,!v<16>JP<4A>!<1C>XΎ<19><08>xP<78>{<06>Zv<5A><15>U<EFBFBD>Ӏj<D380>B^!dj<>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><07><><EFBFBD><EFBFBD>K:4<18><>z<EFBFBD><7A>4<EFBFBD><34>bp<62>l<EFBFBD><1E><><EFBFBD>C<EFBFBD>Cܢy<DCA2><79><EFBFBD><EFBFBD>Ao\$<EFBFBD><EFBFBD>)6<>z<EFBFBD><7A>Q<EFBFBD><51>?A\r`<60><><EFBFBD>\\zEיִ\r<EFBFBD>݃s<EFBFBD><EFBFBD><EFBFBD>:Eh<05>e<EFBFBD>><3E>Ќn<D08C>f<EFBFBD>nڥ;<3B><><EFBFBD><EFBFBD>B<EFBFBD><42>管<EFBFBD><12>j<EFBFBD>n~<7E><><EFBFBD><EFBFBD>w<EFBFBD>Tho<68><6F>M<EFBFBD>[(<28>KKɮ<4B><0B><>t!<21><><05>ˤTx<54>4<EFBFBD><34><EFBFBD>o<EFBFBD><6F>y<EFBFBD>Ɲ<EFBFBD>EKR<4B>6:KG<1D><>#<23>.\$t&<26><>7c<37><01>-<2D><><EFBFBD>@<40>]<5D>Q<EFBFBD>Q:ʊ߾<CA8A>Ҩi-<2D>,lQné<6E><C3A9>qO<71>+G<>H<0B>:<3A>f<16>:<3A>ꓯ<EFBFBD>ID<49><44>_<EFBFBD><5F>Bo<42><6F>M<EFBFBD><04>Aj9<6A><39><0E>\n<EFBFBD>W<EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD>~<7E>/<2F><><EFBFBD>f9 <09>0><1E><><EFBFBD><19>G<><47>d<01><04><><EFBFBD>D<EFBFBD><44>\\<EFBFBD>A<EFBFBD><EFBFBD>]bK<62>\"\r<EFBFBD><EFBFBD>F~<7E><><15>[<13><>c<EFBFBD>\r<EFBFBD>˸BOs<>1<EFBFBD>d!<21>y/Ѕ<><D085>n<EFBFBD><6E><EFBFBD>\r<EFBFBD>0<EFBFBD>7<06>\r<EFBFBD><EFBFBD><EFBFBD> <09>%<25><><07><>h\n<EFBFBD>2<EFBFBD>l<><6C><EFBFBD><EFBFBD>Jב<4A><D791>ց8\"<15> h<>Bh<1F><>j<EFBFBD>J7<17>-b*<2A>K<EFBFBD><0E><><EFBFBD><EFBFBD>!<21>FCV4<56><34>SK<53>ًF-<2D><14><><EFBFBD>~<7E>2<>;<3B>F<EFBFBD>KÛ4<><0C><><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>Z<EFBFBD><5A>1<EFBFBD>vR9<52><39>\"L<EFBFBD><EFBFBD>:.<2E>ν<EFBFBD>dQh<><68><EFBFBD><EFBFBD>k<>a<EFBFBD>n<EFBFBD>k#9N<39>9<EFBFBD><39>Ʋd<C6B2><18>U<13><>\0N<EFBFBD><EFBFBD>6<EFBFBD>O<EFBFBD><EFBFBD>V<EFBFBD><EFBFBD>5+<2B>iǢd<18><>]{ج<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1C>c <09><13>g<EFBFBD>AM^=<3D><><EFBFBD><1B>U<EFBFBD>{vl<EFBFBD>\$<16>P<EFBFBD><50>5<EFBFBD><35>/<2F>(<28>\r):`F_:Ɨ<><C697>=<3D> <09>!y<>V<EFBFBD><1B>9<EFBFBD>ϟE<CF9F>Q<13><>5<EFBFBD>><3E><><EFBFBD>:5<><c<><63><EFBFBD><EFBFBD>Ɠ<EFBFBD><C693><EFBFBD>z<EFBFBD><7A><EFBFBD> <09>M1<4D>[<5B>n<EFBFBD><6E>dn/<2F><><EFBFBD><EFBFBD>F<EFBFBD>9<EFBFBD>F<EFBFBD>#`<60><>v<EFBFBD>X<EFBFBD><B<>Fj<46>dN`Q<>5<EFBFBD><1B>K<13><>5o<35><6F><EFBFBD> <09>h;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><><13>BZ<42>><3E><><EFBFBD><EFBFBD>o@ck*<2A><>@<40><><EFBFBD><EFBFBD>֓<EFBFBD><D693><EFBFBD>D\\<EFBFBD>S<EFBFBD><EFBFBD>)<29><>pۭ<70><DBAD><16>sC<02><><EFBFBD>6<1B><>pU[<5B><>G4<47><34><EFBFBD><EFBFBD><EFBFBD>?<3F>.<2E>e\na <09><>>W@<40><>{<EFBFBD>.<0F><0B>£<7F><C2A3>훭̵<ED9BAD>\\9ژ><3E><><EFBFBD>CA<43><41><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD>`<60>0<EFBFBD><30><EFBFBD>d<EFBFBD>]<5D>f<EFBFBD><66>M<EFBFBD>1<13><><1B>I7<49>[<5B><><05><>\n<EFBFBD>]<5D><>,<2C>q<EFBFBD>VJ<56><4A><EFBFBD>ۑ?<17>tz<74><7A>]<5D><><EFBFBD><EFBFBD>um*<2A>p<0F>+틽<><ED8BBD><EFBFBD>.<2E><><EFBFBD>\0H<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD><EFBFBD>;+<2B><0B><>Bzo<><6F><EFBFBD>x;^nE<6E>tK<74><4B>hq<0B><><EFBFBD><EFBFBD><EFBFBD>ꟓ<EFBFBD>E!<21>+n=<3D><>T<EFBFBD><54>瓗<1D><>xkj<12>6<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23>h<EFBFBD><68>#<23>[<5B>o}<7D><06>q<EFBFBD><71><11>P<EFBFBD>DղÝ<D5B2><C39D><1B><04><><EFBFBD><EFBFBD><EFBFBD>o<>1<EFBFBD><31>xc<78><63>8D<38>\0<EFBFBD><EFBFBD>J <09><><EFBFBD><EFBFBD><EFBFBD><0F>v=<3D>W<>Fzz<7A>mk<6D><6B><05>hOޓ5j\$<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>}<01><A><3E>n<EFBFBD>{~h]<5D><>\"<EFBFBD>\r<EFBFBD><EFBFBD>GD<><44>x<EFBFBD>Q<EFBFBD>)=:<3A>5<EFBFBD><35><EFBFBD><11>G:<3A>P<EFBFBD><50>D8<44>p <09>sH2pzt<7A><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\ڀ<EFBFBD><0E><><EFBFBD>k<EFBFBD>|)<29>Yt <09><><EFBFBD>P<EFBFBD>E\\D<EFBFBD>0<EFBFBD><11><><EFBFBD>¾<EFBFBD>|p<>1<EFBFBD>Ɛs=&<26><>`<60>h<EFBFBD><08><>IO<49><4F>\n<EFBFBD>,<2C>M틂>Ae\\}<7D><><EFBFBD>\\><3E>գ<EFBFBD>G<EFBFBD><15>7<EFBFBD>N<EFBFBD><4E>l\\<EFBFBD><EFBFBD>L4!<21>5c,<2C>T<><54><EFBFBD><1D><><EFBFBD>!p}Ĭ<><1B><<14>Q<>H艞<10>89<38><39><EFBFBD><04>!=<3D>F<EFBFBD>1j<><0C>ː<EFBFBD>A<EFBFBD>@<0E><>o<EFBFBD>6<>ۏ<EFBFBD>U<EFBFBD><55><EFBFBD>9<EFBFBD><39><0F><><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><06><>q<><17><>\nM<EFBFBD><EFBFBD><_<>}<7D><><EFBFBD><EFBFBD>3q<33><71>\0<0E><><EFBFBD>\$n<10><>o<EFBFBD>>\$<EFBFBD>z/ <09><>+<2B><>q}<7D><><19><>1<EFBFBD>o\0<EFBFBD>F8<EFBFBD>?<0F><>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD>r<07><><1E><><1B><><EFBFBD>;<<3C>NG<4E><47><13>E<EFBFBD>c<EFBFBD><63>\$*<2A><>qU<71><55><EFBFBD><EFBFBD>}<13><>s<EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38>b<EFBFBD>C6<43><36>\rk<EFBFBD><EFBFBD>G<1B>m<EFBFBD> 4K<~4H!<21><>j<1B><>m8Nkr f.U<><55><EFBFBD><EFBFBD>z<EFBFBD><7A>h<EFBFBD>#<13>S<EFBFBD>rU( Zs<5A><73><EFBFBD>n<EFBFBD>z!<21>/%\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/&<26>}<7D><><EFBFBD><EFBFBD>ں6rxW`5<>cG<63><47><EFBFBD>O<EFBFBD><4F>b<EFBFBD>W\$<EFBFBD>b<>M]<5D><>\$<EFBFBD>?<3F><06>z<EFBFBD><7A><EFBFBD>\rޭ\"q<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1C>J<EFBFBD><4A>Θn<>ـ<>A<EFBFBD><41><EFBFBD>&}<7D><><EFBFBD>#[%<25>ɸ-<2D>'gt\$ƕ<EFBFBD>j<EFBFBD><EFBFBD>L<EFBFBD>wN<EFBFBD>re<EFBFBD>\0\$8Z<EFBFBD>#<23><>:;<3B>s\0M<EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD><14><><EFBFBD><EFBFBD>s\n<EFBFBD>D<EFBFBD>M<EFBFBD>eA<65><41><02><1E><><EFBFBD><EFBFBD>f<EFBFBD><08>4I<10>BԾ<42><D4BE>p`<60><>@%Z<>\0004<EFBFBD>0<EFBFBD>}<7D>O.<2E>\"<EFBFBD><EFBFBD><EFBFBD>L4<4C><34><EFBFBD><EFBFBD>]\"<EFBFBD>'<27><>H<EFBFBD><48><EFBFBD>f<EFBFBD>י1<D799><31>n<EFBFBD>ыRet<14>Fޮ<46>.MY6<59><0B><>ȏ<EFBFBD>lc>h<>5<EFBFBD>ӂ}<<3C>Ɍ<EFBFBD><1D><>(<28><>7FL<46>r<EFBFBD><72>m2(<28>%<12><><EFBFBD><EFBFBD>b7<62><37>C\0[<>M<EFBFBD>s<EFBFBD><73>#V<>6<EFBFBD>Χ5M &v<>79<37><39>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD>@<40>!<21>\0<EFBFBD>|<7C>N6\$ݔ<0E><>v<><14><>n<EFBFBD>!<21>T<EFBFBD>Ƞ<><C8A0><EFBFBD><<3C><>WD<57>@M_<D880>(;<3B><03><>'h<><68><EFBFBD>L<EFBFBD>d<><0F><>+<2B><>r<EFBFBD><72>Q<>ˤHi<48>ʱ3,<2C>)t]+<2B><>p=<<1C>tq1o3 F<13><><EFBFBD>e<EFBFBD><01><04><><EFBFBD>}<7D>%\0001R<EFBFBD>,<18><>S<EFBFBD>O<01>_Iͥҍ)lt<6C>8<EFBFBD>LI<4C>t<EFBFBD>:&<0C><>\0<EFBFBD>Ҥ<EFBFBD>!?<3F>_<EFBFBD>^}0d<17>\0i\r'<27><1B>g<>A<EFBFBD><41>)4<>?<3F><><EFBFBD>/Lt<><74><EFBFBD>θI<CEB8>E<EFBFBD>|<7C><><EFBFBD>4W<34>?mi7<69><37><EFBFBD>g<EFBFBD> Уu<D0A3><01>/<2F><>C1<43>I<EFBFBD><08>yI?C<><13>{SZM<EFBFBD>e<EFBFBD>m<>K<EFBFBD><4B>P \0<EFBFBD><02>~<7E>\0<EFBFBD><EFBFBD>A5<EFBFBD>#<23>.\$s<EFBFBD><EFBFBD>Y)<17><02><>|<7C>ҊM9yd]ϫA =9 <09>h<EFBFBD>^<5E><08><>rE@SO<53>#>0L<30>HK<48><4B>HE<48>%t<16><>.<2E>m<EFBFBD><6D>O<EFBFBD><4F><EFBFBD>f<EFBFBD>ѸR{<EFBFBD>~<7E><1C>F<EFBFBD>%<18>8<EFBFBD>sK<73>B<EFBFBD><42><EFBFBD>Y<08>w<EFBFBD>]/#<23>Q<EFBFBD><51><EFBFBD><EFBFBD>cc<63>)HT_GX\\<EFBFBD>p<EFBFBD>r><3E>Օ<EFBFBD><D595><EFBFBD>F<EFBFBD><46><EFBFBD>lX<6C>c<EFBFBD>V<EFBFBD>nu<6E><75><EFBFBD><EFBFBD><EFBFBD>@u<>d85<38><35>lB<> <20>-hE<68><45><EFBFBD><EFBFBD>TV\0<15>h<EFBFBD>=`-Tuv<75>rTg^5<><35>Q<><51>=b4l<34><6C>ZMU<4D>Yx<59>u<EFBFBD><75>'vC^M<>c<EFBFBD>ٓUES<45><53>U1#<23>d<EFBFBD>&v<0B>en@<40>R<EFBFBD>n%<25><><EFBFBD><EFBFBD><EFBFBD>?d<>_vOeŗW<C597><57>iT<69>wf[)<29>?a=<3D><>_/iVM<56>X<><58>]<5D><>Vod<6F><64><EFBFBD>eڏf<DA8F><66><EFBFBD>EI'j<>,<2C><><EFBFBD>mp<6D><70>Rcj͍<6A>8<0F>?^<5E><><EFBFBD><EFBFBD>V<EFBFBD>g5<67>Z<EFBFBD>c<EFBFBD>+}<7D><>sk<73>\n<16>W<EFBFBD><57>ueV<65>Z<EFBFBD>۽<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><1D>TlU<6C>^UU<55><55><EFBFBD><EFBFBD>[<5B>S=÷kٝ\\ݛ<EFBFBD>;W7guxҿU<D2BF>8<EFBFBD>6<EFBFBD><36><EFBFBD><05>v<EFBFBD>v<EFBFBD><76>(<28>v<EFBFBD>U<EFBFBD><55>Os<4F><73>է۽ow_U<5F>?<3F>i<EFBFBD>Y׳\\utyQ<79><51><EFBFBD>u<EFBFBD><75>VM<56>^]<5D><>ck<63>n<EFBFBD><6E><EFBFBD>W5e<35><65>YG^<5E>%<25><>]P<>_<08>[cW<63>s<EFBFBD>|V<01>o=<3D><><EFBFBD>X<EFBFBD>wu<77><75>Y<EFBFBD>\$ݕX<EFBFBD>Yq:w<><77>]f<><66><EFBFBD><1D><>d=<3D><>CU<43>d=<3D>v<EFBFBD><76><04>=<3D>Va<56>]<5D>H<EFBFBD><48><EFBFBD><EFBFBD>`\n]<5D>w<EFBFBD>?wi<77><69><EFBFBD>QlOj<1D><><EFBFBD><EFBFBD>z<1D><>g<EFBFBD><67><EFBFBD>u<EFBFBD><75>I<EFBFBD><49><EFBFBD><1A>{Y<EFBFBD>x4<EFBFBD>ViH<EFBFBD><EFBFBD><EFBFBD>FVl<EFBFBD><EFBFBD><EFBFBD>+<2B>{F<EFBFBD>Õ<EFBFBD><EFBFBD><EFBFBD>><3E><><EFBFBD><EFBFBD>\\<EFBFBD>sErVrܟ<EFBFBD><1D>wY<77>}\\u<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><EFBFBD>Ů<EFBFBD>y<EFBFBD><EFBFBD>d<<3C>c<EFBFBD><63>p<EFBFBD><70>t<17>q]9]<5D><>!j=Uc;yb<1D><>GS<47>RE<52>הT<D794><54>?s<>'ׇQ̅T<CC85>wF<7F>}=<3D><>Um<55><6D><EFBFBD><EFBFBD>w<EFBFBD><77>-6<><36><EFBFBD><EFBFBD>S<EFBFBD>C.a<><61>g&x{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-;<3B>߁<06>i^1<><31>|\0<EFBFBD>u Z^(I7<49><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>;V<><56><EFBFBD>U%h͜<68><CD9C>Y<EFBFBD>g\r<EFBFBD><EFBFBD>t\0Qh<EFBFBD><EFBFBD>v9<EFBFBD>cP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?8axD<><44>g<>-<0C>!<21>3Y<33>g<EFBFBD>\$<EFBFBD><EFBFBD>Y<EFBFBD>ݯj7<EFBFBD><EFBFBD>P><3E><><EFBFBD>ee<13>Xb<58><62><EFBFBD>s<EFBFBD><73>h<EFBFBD>a<EFBFBD><61><EFBFBD>Y<EFBFBD>D/f<><66>n<EFBFBD><6E><EFBFBD><EFBFBD>n<>=<3D> ^μ<>ﳞ:<3A><><EFBFBD>V<04><>[<18>L<05><><EFBFBD>N<EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD>x+<2B><14><><EFBFBD><0E><>w<EFBFBD>9/x<>><3E>+<2B><><EFBFBD>a\$<EFBFBD><08>L;(<1B><><EFBFBD>SF<19>t<0F><><EFBFBD><EFBFBD>o<>;<3B><>ly<><79>xs<78>\"<EFBFBD> E<><45><0F><><EFBFBD>ߍ<EFBFBD>-<2D><>@<>5<EFBFBD><35>><3E><>~=<3D>!<21>\0<EFBFBD>1B<EFBFBD>US<>b<><04><>\0O<EFBFBD>8L}<7D><>ѫ<><D1AB>4q<34>8L:<3A><1A>.<2E>6<EFBFBD><36>3<EFBFBD>.<2E>Yr<59>oɀ<><C980>Yz[<5B><><EFBFBD>_+<1A>Q<>p<EFBFBD><70>?<3F><><1A>62<36>/x<>b<EFBFBD>2ځ<32><DA81><EFBFBD><EFBFBD>~-0+<2B><><EFBFBD>r~<7E>mC<6D>X!<21><>b<0B><0E><>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A8<EFBFBD>9<EFBFBD><EFBFBD>&Rh<52> H?ɖ<><C996><15>^<5E><>W<EFBFBD><57>d<EFBFBD><16><>E梾<45>bϟ<62><0C><>z?<3F><07><>\\<j.<2E> Jc;<3B><0E>\$<EFBFBD>)<29>;N[<5B><><EFBFBD><13><1B>yj _<><5F>H<EFBFBD>I<EFBFBD><49><EFBFBD>:<0F>B*<2A><><EFBFBD>ļ<EFBFBD><C4BC>3<EFBFBD>:S<><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.lf<0E>P<EFBFBD>Qö<>hF[<5B><><0B><04>6Ý@p\r{<EFBFBD><EFBFBD><17><>ӝ<>e<16><0E><><EFBFBD>;|<7C><10><>V<EFBFBD>s<EFBFBD><18>FN<1B><>P+<2B><04>k<EFBFBD><6B>o<EFBFBD>g<EFBFBD><67>̝6<CC9D>[<5B><><EFBFBD>><3E><><EFBFBD><EFBFBD>֘<10>{l<EFBFBD>+7<>{<EFBFBD><EFBFBD>+<2B>f<EFBFBD><66><EFBFBD><EFBFBD>\n<EFBFBD><1A><>cl=y<1C><><EFBFBD><EFBFBD>py;<1B><>B<><42>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ìm<EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD>%<25>h<EFBFBD>@<40>L4``<0C>{<EFBFBD>cnF<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>k<EFBFBD><EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>^<5E><><02><><EFBFBD><EFBFBD><EFBFBD>[<5B><>O<EFBFBD>U|\0<03><1E><14><><EFBFBD>.<2E>d<EFBFBD><64>w<EFBFBD>y(<28>g<EFBFBD>nJ<6E><4A>d<EFBFBD>ϼ<>AOQ<4F>F_:<3A>b<19>PP<1E>h<EFBFBD><0E><><EFBFBD>a<><61><EFBFBD><EFBFBD>,<2C> 1<><1E><><EFBFBD><EFBFBD><1D>:']P<><50><EFBFBD>g<0F>}<7D>6<EFBFBD><36>6XЗ<58>Ř/P<><50>/-<2D>I<EFBFBD><12><>><3E>M<0E><>x1<78>b<0C> <20>U<EFBFBD>#`<60><>d3<64><33><EFBFBD><EFBFBD>z<EFBFBD>Ŕ?<3F>6<EFBFBD>C<EFBFBD>tx<74><78><03>ǻ<EFBFBD><C7BB>:L<><4C><EFBFBD><EFBFBD>#,<2C><>?0|<7C><><17>S<EFBFBD>mw<6D><77>T<EFBFBD><54>i<EFBFBD><1F><>6<EFBFBD><36><EFBFBD><EFBFBD>8<7F><38><EFBFBD>/˰<>%<25><>*h<><68><EFBFBD>wç<77><C3A7><EFBFBD>,<2C><>@<>`<60><0C><>2<EFBFBD><32><EFBFBD>M}<13><><EFBFBD>E<><02><><EFBFBD><EFBFBD> <20>%<25>o<EFBFBD>a)<29>_<EFBFBD><5F><EFBFBD>Q<EFBFBD>NM<4E><EFBFBD>\"<EFBFBD>Yά<>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>w<EFBFBD>RMƇ<4D>?ա.B\r<EFBFBD>5<EFBFBD>TbX<EFBFBD><EFBFBD>\$X/t<><13><>!)<29> )<17>I7<49>Ľ[1}<7D>n<0B><>`<60><><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F>`<60><>~<7E>AΪbt<>oʒ<6F>wڟh<DA9F><17><>n<EFBFBD>/{Iԟ<EFBFBD><EFBFBD>}<v<1F> <20>b<EFBFBD><62><EFBFBD>(>8<15><><01><> <09>\r3<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>(\rp<1E><>\r7ޟ{l<EFBFBD><EFBFBD><EFBFBD>:<03><><EFBFBD><EFBFBD><04><>o<>^.}<7D><>~ݯ<><DDAF><EFBFBD><EFBFBD>/<2F>.m<>7<EFBFBD>\0s?T~?<3F><><EFBFBD><EFBFBD>><<3C>|<7C><>o<EFBFBD>M<EFBFBD>N<EFBFBD>:Ơ<>yJq<4A>\0<EFBFBD><EFBFBD>o<EFBFBD>\r<EFBFBD>,<<3C>}2 PJ<50>L~?;W<>-<2D>i<>_ݼ\\}<7D><><EFBFBD>:\"<EFBFBD>PA<EFBFBD><EFBFBD>;5<><35><EFBFBD><EFBFBD><0C><><EFBFBD>\r<EFBFBD><EFBFBD> @<40><><13>+<2B>8<EFBFBD>~<7E><>fDߤr\r<EFBFBD><EFBFBD>ٟ<EFBFBD><EFBFBD><EFBFBD>,t_\"<EFBFBD><EFBFBD><EFBFBD><06>ƿY<C6BF><59><EFBFBD>?<3F><><EFBFBD><EFBFBD>'ߣ<><DFA3><EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD>}<7D>cٯ4<D9AF>\"<EFBFBD>l]ef<65><66>Ȑy<C890><79><EFBFBD><EFBFBD><EFBFBD>[<5B>I<>L<EFBFBD><4C>N<EFBFBD><4E><EFBFBD><EFBFBD>a2<61><32><EFBFBD><EFBFBD><EFBFBD>!f<>P<EFBFBD><17><><EFBFBD>S<EFBFBD><53># 4<1A><>_<><5F><EFBFBD>J<><4A>?<3F>߽<EFBFBD><DFBD>Ġ<1C><19><>[<5B><>~<7E><><EFBFBD><EFBFBD>EN箒4*ÂU<C382>\0%<25><><EFBFBD>8ʇ<38>Q<EFBFBD>`<60><>S<EFBFBD><53><EFBFBD><EFBFBD><04>H??<3F>h\\<EFBFBD><07>@<40>P2 J[xL<7F>G<EFBFBD>?<3F><EFBFBD><7F><EFBFBD><08>\0<EFBFBD>ȁ<EFBFBD>>ü<><C3BC>/<2F>R<>\"3<17><>HB{<EFBFBD><EFBFBD><EFBFBD><12><<3C>.~܄l}}<7D><<3C>|<7C><><EFBFBD><EFBFBD>_<EFBFBD>^<5E><>w<EFBFBD>/_J<>:<3A>ަ<EF9AB4>&<26><><EFBFBD><EFBFBD>w<EFBFBD><77><0C><>h<EFBFBD><68><07><>k<EFBFBD>lN[<5B>T<><54>@(<28>z<>~M<>0<EFBFBD>#<23>h+ܓ6GETh<54>ck<63>ѝ tS2<>(<28>q<EFBFBD>[ŠZ<C5A0><5A>_<1D>><3E><>Y\n<EFBFBD>TTE\r\";(<28>X<EFBFBD>s<14><08><><EFBFBD><EFBFBD><18><EFBFBD>-<2D><>@<40>D k<>S<EFBFBD>J{(<28>p<08><><EFBFBD> <20>a<EFBFBD><61><EFBFBD>^\0<EFBFBD><01>bZf{<EFBFBD><EFBFBD><10>#di<64><69><EFBFBD><01><>D<EFBFBD>L<<3C><>2<EFBFBD>l<EFBFBD>Ĉ_<C488><5F>v<07><>P擯<17> <09>\0%<25>S<EFBFBD><53><EFBFBD>0<><1E>*D<><44>!ֽgЅ;<3B><>v4dP'1<><31><EFBFBD>q<EFBFBD>ZXb.Y<>f<EFBFBD><03><>մ[<<01>c<EFBFBD><63>S<EFBFBD><05><><EFBFBD>['<27>+<14><06><><EFBFBD>Ђ|^<5E>p<EFBFBD><70><16><><EFBFBD> <20>V<>b<><62><EFBFBD>n<EFBFBD>1(p<><70>\n\0<EFBFBD>2<EFBFBD>*ge G}<7D> <20>-/;<17><11>1^<5E><>\n<EFBFBD><EFBFBD>tqz<EFBFBD><06>P<EFBFBD><50>[<5B> <20> <09><19><><EFBFBD>p\"%<25>Z\0d<0C><02><>\"<EFBFBD>9<EFBFBD>+<1E><>.FO<02>L1<>o}<0E>jO<6A><4F><EFBFBD><EFBFBD>P<EFBFBD>hCDE\\d_j<5F><6A>9L<03>c&<04><>9<0C><>xV<>7<EFBFBD>5<EFBFBD><35>|te<05>16<31>P5B<15><>\0<EFBFBD>}*<06>2J<32>n<EFBFBD>=f<><66><0B>BQ<1F>'<27>rR }<7D><><EFBFBD>RɎB<C98E>8><3E>K<EFBFBD>ưMC>Qɪ`P3inկ<0B>wP<77><50><EFBFBD>a<EFBFBD><61> #<11>c<EFBFBD>3<EFBFBD><33>Y<EFBFBD>H<13><1B><>E<EFBFBD>h1<68><12>_<EFBFBD><5F><0C>k0\n<EFBFBD><EFBFBD>pe<EFBFBD>Gǟ<18>1eh<65>=\n29t*<2A><><1F>\0h(<28><><EFBFBD>!sQV<51><08>\0<EFBFBD>{j&<26><><EFBFBD>+@D<><44>[ַ0ul<75>a<EFBFBD>#<23><>M;\r<EFBFBD>tXǁ<58><C781>j<EFBFBD><6A>hQε4<0F>CM<>3S<>M_w6<77>;A0n{l֠<EFBFBD>Xx<05><EFBFBD>z <0F>zf<7A>HB<48>rl K!dO<64># n~<7E><>ps]<06>.1<EFBFBD><0C>jh<1E>0<EFBFBD>!!r<>0<07><07><>p<18>p<EFBFBD>d<16>9iD<69>%r<><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66>\0<EFBFBD>P4 3<><10><>g<><67>7<EFBFBD><04><>>J<>\r<EFBFBD>L<03>M<EFBFBD><4D><EFBFBD><EFBFBD>2k<32><6B><EFBFBD>+<2B>8*<2A><>Z<0F><>h<><68><EFBFBD><EFBFBD>Fߌ<46>ґ1Z<03><><EFBFBD><EFBFBD>hdFٌ.<01>A<EFBFBD>й. mNY\0փ<EFBFBD>K<EFBFBD><EFBFBD>X<EFBFBD><1B>Ax<41>6Q|<7C><>h8f<38><06>c<>/<2F><>%<25>}<7D><>帠q<E5B8A0>c<EFBFBD>nWA`<60><06><>`PB<50>L<17><><EFBFBD><EFBFBD>惁ɂj`+<2B><><EFBFBD><EFBFBD>\\f<EFBFBD><19><><1D>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>ݘ,<<3C>C<EFBFBD><43><EFBFBD>;>g<07><><EFBFBD>S<><04>:<3A><>8<18>\n,<2C>۳<EFBFBD>XA<58><41><EFBFBD> c}H?ò<><C3B2>S=*<2A><>8@<40><><EFBFBD>7R<37>(<03><><EFBFBD>č<EFBFBD>^ˁ<>7<EFBFBD>gj<03><>߀W<DF80>8<EFBFBD>z<EFBFBD>8<EFBFBD>Y<EFBFBD><59>|Cܰ<43>A<EFBFBD><41>FD<46>}<7D>#PxE\n#8<04>P<EFBFBD><50>5<EFBFBD>n<EFBFBD>M<EFBFBD><4D>FX<46><58> <20><><EFBFBD>6<EFBFBD><1D>r<EFBFBD>ݟ<02>O<EFBFBD>z<0C>B_`L<>Ԑ<EFBFBD><D490><EFBFBD>bE<06><>NM<>Zȁ<5A><1C><><EFBFBD><EFBFBD><EFBFBD><1C>\nP>Am<06><><0B>7<EFBFBD>PG<47><7F>Gx<47>9<EFBFBD><39>1<13><><EFBFBD>\09B^kt<6B><12>97<07>P<7<>V<>q<EFBFBD><71><1A>JN)_u-<2D>d<EFBFBD>a<EFBFBD><61><1F>G`<60><<3C>o<>ij\$'<27>JM<4A><13><04><><04>M<EFBFBD> <09>yp<79>܍B4<42><34>i<EFBFBD><69>(<28><>@<40>8Uhb~<7E><(<28>\"<10>Y<EFBFBD><59>w4<77>X<>7fzPA \"<08>ā<EFBFBD>A<EFBFBD>b<EFBFBD><62>T<EFBFBD>Tm<>T!<21><><EFBFBD><EFBFBD>9<EFBFBD>.<2E>PB<50>L<EFBFBD><4C>h.<2E>U<EFBFBD>M<EFBFBD>_ĕ#Vp<56><70><05>B<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>[e^ zG-<2D> <20>9g<>tE<1D>d<EFBFBD>?<3F>C<EFBFBD> 2<><32><EFBFBD><EFBFBD>V<16>ɈSO<53>'<Z<>u<><75>(<28>ҍ{<0F><19>e<EFBFBD>=<06><>C<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><0B><><EFBFBD>v<>p<EFBFBD>O&<26><>Ki<><69><04><> Cಷ4n<34>|<19>,/<2F>'MP<4D>U<EFBFBD><55>~<7E>lxv<78><10><><EFBFBD>(֛<>(NQP۰d<7F><64>\\<EFBFBD>TsΑ<EFBFBD>ڨȢ<EFBFBD><EFBFBD><0B>ˀ@\0HN<EFBFBD>\$x<EFBFBD><01>No_<6F>)wYx<59>q<EFBFBD><8<><38>\\<EFBFBD>9<EFBFBD>sN͖<10><14><>'<27>HC\"<EFBFBD><18><><EFBFBD>b !<21><>RIN<49><4E> \"KG8<EFBFBD><EFBFBD> <09>\$<EFBFBD>s<EFBFBD><0C>K<>D<EFBFBD>F<EFBFBD>!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&<26><><EFBFBD>i <20>@<40>b7<62>;h<>C<EFBFBD><43>{<EFBFBD><EFBFBD>H<EFBFBD><EFBFBD>Q(<28>=<3D>5q<35>0<EFBFBD>TO<54><4F>K<EFBFBD><4B>4+{pO<EFBFBD><1D>%\n<EFBFBD><EFBFBD> m>JW<4A>l<EFBFBD>CR<43><52>r<EFBFBD><72>\$5)<29>V<EFBFBD>Lp<4C><70><0E> JE\r<EFBFBD><EFBFBD>ؐԤ<EFBFBD>B<EFBFBD>8<EFBFBD>i\\<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD><EFBFBD>nb<EFBFBD><EFBFBD><EFBFBD>&<06>\r<EFBFBD>2<8<><38><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>ۇ%\$ࣧ<EFBFBD>_f<EFBFBD>!<21><>_7<5F>\r<EFBFBD>+<2B>63<36><33><0C><><EFBFBD><EFBFBD><EFBFBD><1C>pǴ:V<><56>#<23>d'<27><>d<EFBFBD>M<EFBFBD>t9<74>j<EFBFBD><6A>J#CYr䔾L:<3A>u<EFBFBD><75>~<7E>=<3D>:t!<><7F>)A]i<><69>f<EFBFBD>%<25><><EFBFBD>Up)V<>.<0F>J9nyGn<47>n<EFBFBD>{<EFBFBD>ȇ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B>W<EFBFBD>\n<EFBFBD>U<EFBFBD>;<3B>w<EFBFBD><77><EFBFBD>^<5E><><EFBFBD>G*<2A><>\n<EFBFBD><EFBFBD>\$ޣ<EFBFBD>Lr<EFBFBD>g<EFBFBD>i<17>xdt<64>e:<3A><>b<EFBFBD>ݎ<>>\0<EFBFBD><EFBFBD>K<>u%<25>S<EFBFBD><53>*<2A>x<EFBFBD><78><EFBFBD>ݫ<EFBFBD>7^<5E> ^%)<29>V\\<EFBFBD><EFBFBD>Lb<EFBFBD><EFBFBD>r<EFBFBD>T<><54>6T\$<EFBFBD><EFBFBD>M\n<EFBFBD><EFBFBD>D<EFBFBD><<3C>,cS죉L<ECA389>A?Ka<>DT2<54><32> <20>@<40>!<21><06><>.U\$<EFBFBD>}#ۮ<><DBAE><EFBFBD>UT.6v<EFBFBD><EFBFBD>j<>巎<7F><E5B78E>C<EFBFBD><43>vⵍp<E2B58D>֕WK[ <19><>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'p.ߖ<>;<3B>Zb<5A><62>iR<69><52><EFBFBD><EFBFBD>KV<4B>-<2D>_<EFBFBD><5F>i<><05><>n<EFBFBD><6E><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD><1E>#<23>}<7D>nU|<7C><>Z<EFBFBD><5A><EFBFBD>frG<72><47><EFBFBD><EFBFBD><EFBFBD><12>]<5D><11>v˶Հ<CBB6><D580><EFBFBD><EFBFBD><EFBFBD>U[<5B>Yoj<6F><6A>8<EFBFBD><38>V<EFBFBD>*<2A>w\"<EFBFBD><EFBFBD>y*<2A>E<EFBFBD>+YH<59><07>Z<EFBFBD><5A>9R<39><52><05><>e<EFBFBD><65> p#<23><>aZ8}Ek<0B><><EFBFBD>+<2B>xh<78>Mx1<78><31>L'P <1F>:v<><1F>_<EFBFBD><5F>e<EFBFBD><65>Aփ<41>u=Qx<>@h<>+<2B>ܝ<>\\<EFBFBD><EFBFBD><EFBFBD>I\"<EFBFBD>\$<EFBFBD>n<EFBFBD><EFBFBD>C&\0<EFBFBD><1F>t<EFBFBD><1B>4@b p[<08><>\"<EFBFBD><EFBFBD>K<EFBFBD><03>D<EFBFBD>V<EFBFBD><56>MM<4D><4D><05>K<1F><><EFBFBD><EFBFBD>Y<0C>^A<>?d)<29>X<EFBFBD>!lI<6C>D<EFBFBD>k~<7E><><EFBFBD><EFBFBD>?<3F><><EFBFBD>K<EFBFBD>g7<17>\n<EFBFBD>F<EFBFBD> <20>(<28><>,<2C>,<2C><>l<EFBFBD><6C>9<EFBFBD><39><04>'<27>Q8<51><38>DoX <20><18><>j`մ<17><><EFBFBD><EFBFBD>h<EFBFBD><68><04>r<EFBFBD><14><>y<07><13>M<EFBFBD>n\0<19><<3C><><06>ǵsF<08>6<EFBFBD>;Bug<12><><EFBFBD><EFBFBD><EFBFBD><03>s<73>\0yl|<7C>2<EFBFBD><32><EFBFBD>\r]<5D>s<EFBFBD><73>j<EFBFBD>2B+у<><1E>=<3D><><01>p <20>DO~<7E><><06>2<EFBFBD>++<2B><><18>!^<5E>H{<EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>li\\ˆ<EFBFBD><EFBFBD>`\n<EFBFBD>K<>&<26>/<2F><0E><>j 9<><39><1B><><EFBFBD>ݢ<EFBFBD>cd<63><64><EFBFBD>D'<27><1A>o@<40><><EFBFBD>cD<63>/?P<>\n.Y<06><16><0C><>\r<1B>%<25>\0<EFBFBD><0B><><EFBFBD>(<28>LED<45>G<04><><EFBFBD><EFBFBD><18><>әҹ|<7C>x<>kA<6B>!Ic<49>4Aeo<65><6F>q<EFBFBD> '<10>9X<39><58><EFBFBD>Xx<1C>CsW<73><57><EFBFBD>ґ\"{<EFBFBD>Ӏ\rY!<21><><EFBFBD><17>u<EFBFBD><75>)<08><04>\"5fFN<><4E><EFBFBD><EFBFBD>E<EFBFBD><01><>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD>H<EFBFBD><01>l &<26><><EFBFBD>Ӭ\"<EFBFBD>m<EFBFBD>Q<>tZ<74>ʑW<CA91>+Ų<C5B2><16><>\$ <20><><EFBFBD>.NJ-`a <09><>F8<46>o<EFBFBD><6F>X<EFBFBD>#<23><><EFBFBD>ឺ<EFBFBD>&R<><52>><3E><>> <20><>}<7D>\\<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>9v~<7E><>.<2E><><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>/#<23>x<EFBFBD><78><EFBFBD><EFBFBD>S<EFBFBD>,<2C><><1C><04>4<0C><><EFBFBD>c><03><>pC4<0B><0C><><EFBFBD><EFBFBD>hg<68><67>\rE<>1@O|4(e<>\\<EFBFBD><EFBFBD><EFBFBD>6*<2A><> <09><05>d<06>!<21>ҋ<>x<>Mp`\0007<1B>D<EFBFBD><44>4)cd<63><64>P<><50>ZV\n<EFBFBD>ɸ)<29><><EFBFBD>@\0001\0n<04><><EFBFBD>a<EFBFBD><06>\0<1A>4\0g<18><03>a<EFBFBD>\0<0C><1B><><EFBFBD>5<18><><EFBFBD>P@\r<EFBFBD>F\0l\0<EFBFBD><01>XƱ<58><C6B1><1A>#<23>w<18><01>xƥ<78><C6A5><19>,<2C><>\0<EFBFBD><01>dƱ<>@FH<46><48>\0<EFBFBD>1dd(<28><><19>8<EFBFBD><38>Zx<01><03><><EFBFBD>@F.:<18>1Xh<>ш<EFBFBD><1B>6\0a<18>2<EFBFBD>a<EFBFBD>@\rӂ<EFBFBD>`\0g<18>2\\a<EFBFBD><EFBFBD><11>c(F7<46>w<19><><EFBFBD>ep<06>c<1D>5<EFBFBD><35><18>3Lb<4C><62>Q<EFBFBD><51><1B>7\0sV2\\b`1<>cF8\0d\0<EFBFBD>2<e<><65><11><>F\0aB4\$b`эM [\0l\0<EFBFBD>3<EFBFBD>f8<EFBFBD><11><><18>Z<EFBFBD>:<01><01>hXȱ<58><C8B1>OF<4F><46><1A>4<EFBFBD><03>ɑ<EFBFBD><C991>F<>\0ir5<72>e<EFBFBD><65>Q<EFBFBD>@\0001\0m<1A>0<EFBFBD>i<EFBFBD><69>q<EFBFBD><71>`<60>+<2B><19><01>g<EFBFBD><67><11>@\0005<EFBFBD>20<32>k<EFBFBD><6B>Q<EFBFBD><51>PF;\0o<18>4dk \0\rcbFna<EFBFBD><19>3|kH<6B>Q<EFBFBD>ciF0<46>{<18>1<EFBFBD>e<18><11>#(Fj<46><6A>|<01>\"<EFBFBD>q<><71>Fe<46>pdj7<6A>d<EFBFBD><64>q<EFBFBD><71>GF<47><19>7<EFBFBD>nh<6E>Q<EFBFBD><51>9<EFBFBD><39><EFBFBD>B2\\k<EFBFBD>1<>#OF<4F><46><EFBFBD>M>3Lj<4C><6A><EFBFBD><EFBFBD>5<EFBFBD><1E><>\0<EFBFBD>5<EFBFBD>g<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>=<3D>T\0<EFBFBD>2<EFBFBD>g<EFBFBD>1ǣ(FP<46>!<1A>5Hh<>ѯ#^<5E><><\0<EFBFBD>1\$p<EFBFBD>@\r@<40>Fb<46>I<1C>8<EFBFBD>c<EFBFBD><63><11>cF<><46><EFBFBD><18><01>Hۑ<48><DB91>C<EFBFBD>G<EFBFBD><47><1C>1H<>Ѻ<EFBFBD>\r<EFBFBD><EFBFBD>\0i.2;<0C><>Q<EFBFBD>clƂ<6C>I^9Td<54><64> \r<EFBFBD>FFe<EFBFBD><EFBFBD><1C>2\$b<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>7<EFBFBD>[<5B><>f8\\l<EFBFBD>ߑ<EFBFBD><EFBFBD>qG<0E><><18><01>e<EFBFBD><65><EFBFBD><08><><19>3,exő<78><C591>GA<47><41><01>oX<6F> \rc<EFBFBD>F<EFBFBD><EFBFBD>P<01>a<EFBFBD>Ϡ#<23>Ƅ<EFBFBD><C684><1C>5<q Q<><51><EFBFBD>F<EFBFBD><46><EFBFBD><18>6<EFBFBD>l<EFBFBD><6C>ѡc<1E>H<EFBFBD><48><1C><,h`<06><>ck<63>2<EFBFBD>/<1A><01>g<EFBFBD><67><11><><EFBFBD><EFBFBD>a<EFBFBD><19><><EFBFBD>d<EFBFBD>ȱ<EFBFBD>c<EFBFBD><63>;<3B>q<1E>3<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F8<46>j44{<EFBFBD><EFBFBD>q<EFBFBD>c8<EFBFBD>O<EFBFBD><EFBFBD><1C><<3C>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>-Ƈ<>~8<>s<08>ь<EFBFBD><D18C>F1<46><31>F<EFBFBD>8lf<6C><11><>inj9<C78C><1B>2lx<18>q<EFBFBD>c<EFBFBD><63>]\0g8<>a<EFBFBD><06><><EFBFBD>ʀ5<CA80><35><1F>3<EFBFBD>l<EFBFBD><6C>Q<EFBFBD><51>G\$A<1B>?m<><6D>q<EFBFBD><71><EFBFBD><EFBFBD>L<EFBFBD>NZz6<7A>u<EFBFBD><75><11>c=<3D>܍G68<36>sı<><C4B1><19>G<EFBFBD><47><1C>@D~0Q<>XfGs<47><73>=|g<><67>q<EFBFBD>\$G}<7D>oz?d<><64>C<1D><>F<EFBFBD><46>SF6<46>o<EFBFBD><6F><EFBFBD>c<EFBFBD><63><<3C>9*9<>hh<68><11><>vGG<47>]<1E>4<EFBFBD>e<EFBFBD><65><EFBFBD>\0001G<EFBFBD>\0c<1A>3<EFBFBD>Yэ<>H.<2E>!9<><39><EFBFBD><EFBFBD>q<EFBFBD>IH=<3D>U<18>;<3B>hb<68>Qˣ<51>G<13>W<19>A<EFBFBD>q(<28><11><><11>\\<EFBFBD><EFBFBD> <20>B,s(<28><><EFBFBD>\$Ɓ<><C681><1E><01>l<EFBFBD><6C>qҤ<1F>Y<EFBFBD>]<18>2<EFBFBD>x<18><>/<2F>%<25><>д<>p<EFBFBD><70><EFBFBD>a<EFBFBD><61><EFBFBD>M<EFBFBD><4D>&7<>m<EFBFBD><6D>1<EFBFBD><31>G<EFBFBD><47>NB<4E>t<EFBFBD><74><EFBFBD><03>&<26>֏<EFBFBD><1C>4<e1<>#<23><>O<EFBFBD><4F><1F>8<EFBFBD><38><18>Q<EFBFBD>OF<4F><46>CR9<52>{<18>1<EFBFBD>dF~<7E><>25<32><35><18><>c<><63>,<2C>E<1B>=Ll<4C><6C>Q<EFBFBD><51><EFBFBD>+<2B>E\"<EFBFBD>2<EFBFBD>|<7C>ȱ<EFBFBD>#<23><>A<EFBFBD>G<14><>I<17>a<EFBFBD><61>HČ<48><1F>D<EFBFBD>dXб<58>c<EFBFBD><63>ƍc=4<><34><EFBFBD>Q<EFBFBD>cL<63>3<EFBFBD>= <20>9Tj<54><6A><11>#*<2A>C<EFBFBD><43>\"<EFBFBD>F<EFBFBD>fx<EFBFBD>ѡ#3G#<23><>\"?<3F><><EFBFBD>͑<EFBFBD><CD91>VG<56><47>#28<32>}X<><58>c<EFBFBD>B<EFBFBD><42><1A>;fy<08><>#1GZ<47>e<1D>2\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E><>{<1E>9<04><><14><>c(G<><47><1E>C<EFBFBD>oH<6F>Dc&<26>7<EFBFBD>3R=b9<19>ң<EFBFBD>Hy<48><79><1B>=<3D>x<EFBFBD><78>#v<>@<40>O R:<3A>|<08>Ѳ#&<26>\$<EFBFBD>\"<EFBFBD>3܅<EFBFBD><EFBFBD><EFBFBD>L#<23>F<EFBFBD><46><EFBFBD>#<23>3L<33><4C>ñ<EFBFBD><C3B1>,G<>/<1B>3e<08>Nc=ȭ<>I v4,q(<28>1<EFBFBD><31>%HБ<48>*F<|<7C><>1<EFBFBD>c<EFBFBD>IQ<49><51><1D>?<3F>l<EFBFBD><6C>Q<EFBFBD><51>.I<1D><>\$3<<><0C>\ncvGu<EFBFBD><EFBFBD>\"*G<><47>Y<07><><EFBFBD><EFBFBD><EFBFBD><1C><><Ԍ(ױ<>dG<7F><47><EFBFBD><1A>J<EFBFBD>(<28><><EFBFBD>YFS<46><53><1F>A\$<EFBFBD><18>1<EFBFBD>d<EFBFBD><64>S<EFBFBD>5#<23>6ܒH<DC92><48><05>(Ix<49>\"Z8<EFBFBD>q<EFBFBD><EFBFBD><EFBFBD>#\$ǯ<EFBFBD>; Z6Lt<18><>ģ<EFBFBD>GJ\0e\$<EFBFBD>34n<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>I<0E><>\"<EFBFBD>G<EFBFBD>Hݑ<EFBFBD>#^<5E>q<EFBFBD>Y<18>3|bY3<59><33>#nH-<<04>><3E>i<EFBFBD><69>1<EFBFBD>#<23><>ג<EFBFBD><1C>F<14>Y\0Q<EFBFBD><EFBFBD>FFD<EFBFBD><EFBFBD>Md<4D><64><EFBFBD><EFBFBD>c?H<><48>LJB<4A>bI<04>T<EFBFBD>3<EFBFBD><33>I<18>@T|(<28>U<EFBFBD>5<EFBFBD><35>\0bLJBs 4<11><>>nj<>m:<3A>b@r <20><>HA<48>W1̇<31><CC87>pc<70><63>ˑu'<27>BTa<54>.<2E><>#3Gz<47>W<1E>4<EFBFBD><34>IJ<04><>G<EFBFBD><47><EFBFBD>#>><3E>u<EFBFBD><11>4<EFBFBD><34><EFBFBD>&<26>?\\<EFBFBD><EFBFBD><11><>dF<64><46><EFBFBD><1C>K<EFBFBD><4B><EFBFBD>#<23>c<EFBFBD>I2<49>K<1F>J}<7D>r`<60><>Ɉ<EFBFBD>#<23>=<3D>bi?q<>#5<>m<EFBFBD><6D>(^:k<>#R6dVI<56><49><EFBFBD>'3<yҒ_<D292>.G4<47><34>&<26>:x<><78>2G\$<EFBFBD>G<18>{r:<3A>p<EFBFBD><70><EFBFBD>Z<EFBFBD><5A>Hm<48><6D>v?<3F>c9Cq<43>c\"H<EFBFBD><EFBFBD><EFBFBD>!v3<76>w<18>q<EFBFBD>\$<EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>(<28>KL<4B>Y <09>3#<1C>4<EFBFBD><34><04>?<3F>1)\$<EFBFBD><02><>ǣ<EFBFBD><C7A3>'<27>7k<>*d\nH<EFBFBD><EFBFBD>Wr2<72>X<><16><><12><>#<23>E<1C>x<EFBFBD>23e!<21>k<EFBFBD>(b98<39>8<EFBFBD><11><><<02><>v44u<34>뒓<EFBFBD>A<EFBFBD><1A><>*6O<36><4F><EFBFBD><1C>I%G<05><><1A>H<14> <<3C><><EFBFBD>GI<47><49><EFBFBD>'RKl<4B>h<EFBFBD><68><EFBFBD>c<EFBFBD><63>W<EFBFBD>)<d<> ?<3F>i<EFBFBD>Rnj<52><C78C>%<25>L<EFBFBD>1)Kq<4B><71>Z<EFBFBD>b<EFBFBD>?fGtz9R<>c<EFBFBD><63>Г<EFBFBD>F=<3D>}<7D>RK<52>nI<6E>I!F?<<3C><>Gq<47><71>j<EFBFBD>~<7E><>%\"3Č(<28>;<3B>\$Jō<EFBFBD>>0<>9*<2A>3<EFBFBD><33>I؍e\"&St<53>(Ų#<23><>ܓM!6Bԡ<42>01УYH<59><48><EFBFBD>VAtp<74>Z<EFBFBD><5A><EFBFBD>]ʤ<>w&\"G<1C><><EFBFBD>2<1B>jG<6A><47>#<23>5<EFBFBD>k<EFBFBD>Nҥd<D2A5>ƹ<EFBFBD> X ,<2C><>`Rd<>GC<47>3\"<EFBFBD>;<3B>z<EFBFBD>O2<4F>#b<>\r<EFBFBD>'<27>><3E>m<EFBFBD><6D><12><>kI<6B>_'<27>1<9<><39>1xc<03><>\\<EFBFBD><EFBFBD>t<EFBFBD>\"<EFBFBD>%j<>V,<2C>Σb<>C<15><><EFBFBD>@')<29>\n<EFBFBD>g<><67>V<EFBFBD><56><EFBFBD>݇<EFBFBD>\$ڻQJ<EFBFBD>͉hk\rU<EFBFBD>*<2A>`M-<08><<3C>EdBc<42><63><EFBFBD>MUU-<B<><42>i<EFBFBD><69><EFBFBD>Y<EFBFBD>(w<><77><EFBFBD>ؚ<EFBFBD>娋Ge<47><65>o<EFBFBD><6F><11>J<0C>ŕ<EFBFBD><17><><12>^<16><1F>B<EFBFBD><42><EFBFBD>Q<>KZ<4B><5A>\"[<5B><><EFBFBD>b<EFBFBD><62>^>(<28>Y`<0E><14>LM?%<25>?% -f<66><C298><EFBFBD><EFBFBD>T<EFBFBD><54>Z<<3C><>[<5B><03>p Ľ<>]v<>-<2D>J<EFBFBD><4A>mr<6D>ѫ<EFBFBD>v<EFBFBD>-an<61><EFBFBD>` <14>,<2C>p<EFBFBD><70><EFBFBD><EFBFBD>qs<71><73>:<3A><>%<25><1D><>P<EFBFBD><50><19>א<EFBFBD><D790>Wb\0<EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><EFBFBD>G<EFBFBD>c<><63>%<25>˷%|<7C><><EFBFBD>z<EFBFBD><05>0Gސ<47>ya<14>)4<>p#<><C281><EFBFBD><EFBFBD>\n<EFBFBD>T<EFBFBD>O0}<7D>2<0E><14>/p?<3F><><EFBFBD><14><17><01>e<EFBFBD>;<3B>W<EFBFBD>&0<>ĶE^<5E>nT<6E>3<>z<EFBFBD><7A>c[<5B><>v<EFBFBD><76>%<25><<3C><06><>]Q4A<34>}<7D><>ԁ<EFBFBD><D481>V<EFBFBD><56><11>T<EFBFBD>}<7D>R<.\$<EFBFBD>4<>쿷<EFBFBD><ECBFB7><EFBFBD><EFBFBD>Fܗ#0N<><4E><EFBFBD><01><><EFBFBD><EFBFBD>Y<EFBFBD>\ri<EFBFBD><EFBFBD>\0kGZI<02>k\$<EFBFBD>k<><6B>Nm<4E>s\n<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>!KB%<25>K``\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'<27><>\n}<12><>D<EFBFBD><44>f<EFBFBD><66><EFBFBD><EFBFBD>\0֢<,<2C><06><08>-<2D>@<40><>ǍiK<69>_<EFBFBD>,<2C>f<EFBFBD>e<>/<1F><><01><02><>Z<12>u<EFBFBD>`<60><><1F>S<EFBFBD><53>0<EFBFBD>jX5@<40>W<14>D<EFBFBD><06><>Qgp<02><>\nubZ<EFBFBD><EFBFBD>x=-\"a:<3A>\0J<><4A>\$<EFBFBD><EFBFBD>x<EFBFBD>1m`<60><> \\<EFBFBD><EFBFBD>@!-Z<06><>HJ<48><4A>)Ց<> 4M\n<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><EFBFBD>e<EFBFBD>5zb<7A><62>|@<40>P0<50>9ZF<5A><46>f\0<EFBFBD><EFBFBD>\n<EFBFBD><04>/<1F>=˞<><CB9E><EFBFBD><EFBFBD>dR<64><52><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>K<EFBFBD><02>-at<1C><>l<EFBFBD>J-iT\0GD<EFBFBD><EFBFBD>U<><55>Ƭ<>\n<EFBFBD>]Gjŕ<6A>\n;fGKW<4B>!2<>eX}<7D><>j<EFBFBD>%<25>L<EFBFBD><4C>_2<5F>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+c&U+<2B>X<EFBFBD><58><EFBFBD>d\nƕ<EFBFBD>\n<EFBFBD>_<EFBFBD><EFBFBD>\$N<0B>]\$<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>%<25>z<EFBFBD><7A>-<2D>^2<><32>s<EFBFBD>\0VIK<EFBFBD>Y\$<EFBFBD>D?Iv<><15>?Lt,<2C><><EFBFBD>ε<>R<EFBFBD><52>U<EFBFBD>mJ<6D>f\\(<28>P#<23>֖L<>\$c<03>w<EFBFBD>j<EFBFBD><6A>g<~bPi>Գ\$s <20><<<3C>fg<>%~<7E>p<17>Z<><02><>f<EFBFBD><66>@kKʁ<4B>,%Q<>0d,M<><4D><EFBFBD>T<>\0(^j<>vh<76>ϐ*ȘVJ<56>WY<57>\"hB&<04>k<EFBFBD><6B><EFBFBD>)<29>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>]<5D><11>YC-<2D>g<EFBFBD><67>U\\<EFBFBD>C<>\$<EFBFBD><EFBFBD>4<EFBFBD>]d<>Yu<59>%<25>W<EFBFBD>+w&<26><>><3E><>[<5B><><EFBFBD><EFBFBD>M7v<37>-sR<73>)<29><>K<15>\$0<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD>Z<EFBFBD>ɇ˴\"<02><>S<EFBFBD>8<EFBFBD>!P\n@!<21><>\0<EFBFBD><EFBFBD><EFBFBD>tD<EFBFBD>We<EFBFBD><EFBFBD>#)Kv<4B><76>e[<5B><>E<EFBFBD><45><EFBFBD><EFBFBD><<3C>C<EFBFBD><43>1<EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD>\n5<15>MW<4D>O.<2E>k9#<23><><EFBFBD><EFBFBD><EFBFBD>)YR.fk4<6B><34>+D<>f/<02><>3Fl<0C><>+*<2A><1D><>lR<6C>6%<25>Z<EFBFBD>E23 <03><>i<EFBFBD> <20><>l<EFBFBD>Їr<D087>f<EFBFBD><66>͙%<18>-a<><61>y<EFBFBD><79>Z<EFBFBD><5A>MqQ<71><51>j^<1A><><EFBFBD>seՍ<65>Κ<EFBFBD>-Ze<5A><65><EFBFBD>k<EFBFBD><17><>x 5<><35>s<EFBFBD><73>{<EFBFBD>c温v`1<>^<5E>Թ<EFBFBD>J<EFBFBD>WL<57><4C>x<EFBFBD><78>2^<1C>%<25>A<EFBFBD><41>̳RZ<52><5A>]<5D><><EFBFBD><EFBFBD>_UĪ<55>^V<><56>MY<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>k<EFBFBD>Y<EFBFBD>+<2B>UUMj<4D>m7)ZB<5A><42>uZ<>D<EFBFBD>m<EFBFBD>6<><36>:<3A><>j<EFBFBD>xf<78><66>`<60>7<>d<EFBFBD><1B><>`\n<EFBFBD>M,<2C>H<EFBFBD><48>Y<EFBFBD><59>9<EFBFBD>J<EFBFBD><4A><EFBFBD>[<5B>ȯfm<66>ܥ<EFBFBD><DCA5>r<EFBFBD><72>M}<7D><><EFBFBD><EFBFBD>X<EFBFBD><58><19><>F<EFBFBD>{<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD> L<>& <09><><EFBFBD>f<EFBFBD>;Η<>ﰍ<EFBFBD>q1<71>L<16><><EFBFBD>8q!T<>U&O<14><1A><><EFBFBD><EFBFBD>2Zo<5A><6F><EFBFBD>d <10><><EFBFBD><EFBFBD>\\5qb<71>9<EFBFBD>'<0F><><EFBFBD><EFBFBD><EFBFBD>ef<65><66><19>JV<4A>N'w<>a<><61>)Ug<55>V<EFBFBD><56>M^<5E><><EFBFBD><EFBFBD>r3<72>٭<13>f<EFBFBD><66>y<EFBFBD><79>.<2E>?t<><74><13><><EFBFBD>Ms<02><>Jk<4A><6B><EFBFBD>k<0E>&<26>-<2D><><EFBFBD>5<EFBFBD>\$<EFBFBD>\0\n<EFBFBD>f<EFBFBD><EFBFBD><08><>8<EFBFBD>m,<2C>ɱ<EFBFBD>&<26>;<3B>~w<><77><EFBFBD>l<EFBFBD><6C>9<EFBFBD><39>Q'3͞%6mO<6D><4F><15><><EFBFBD><EFBFBD><EFBFBD><07><>E: Xz<58><19><>'3<>A<EFBFBD>]:![<5B><>I<EFBFBD>3<EFBFBD><33><EFBFBD>\$Xֲ<58><D6B2><EFBFBD><EFBFBD>Ն<EFBFBD>nW<6E>ͻT<CDBB>:A`<1C><>a<EFBFBD><61><EFBFBD>MM^V,<2C><>s<܉ԫCf<43><K<><4B>2<EFBFBD>]t<>)<29>Ө&ꉌ<><EA898C><EFBFBD>Qed<65>wa3<61><33>UN<55><4E><EFBFBD>:<3A>o<14> <09><><EFBFBD><EFBFBD> <20><>ҪRo4<6F><34><EFBFBD>s<EFBFBD>'.;<3B><>^<5E><>s:<3A><>fӴf<D3B4><66>m<EFBFBD><6D>:Rvt<76><74><EFBFBD>s<EFBFBD><73>c\0Y<EFBFBD>.<2E>s:<3A>8{<EFBFBD><EFBFBD><EFBFBD>PN<EFBFBD><EFBFBD><EFBFBD>8.v<><76>Y<EFBFBD><59><EFBFBD>'<07><>V<EFBFBD>0<EFBFBD>u&<19>˯g<2<>x<EFBFBD>q<0C><><EFBFBD><EFBFBD><EFBFBD>z;Y<>h6i<36><69><EFBFBD><EFBFBD><EFBFBD>Nf<4E>NM<4E>y1wº<77>b3\\<1D><>4RQ8<51>r4<72>ߪ<EFBFBD>*KG<4B><47><EFBFBD><EFBFBD><<3C>5<EFBFBD><35>S<EFBFBD>c;Y<><59>5br\\<EFBFBD><EFBFBD><EFBFBD>˖g(OU)9Nx<4E><78><EFBFBD><EFBFBD><EFBFBD>À*<2A>윳;-e<14>wjS<6A><53>0NI<4E><49>4<EFBFBD><34>:<3A><><EFBFBD>S<EFBFBD>g9<67><1C><>< T<><54>I<EFBFBD>K<0E>>O)S<1C>Bl<42><6C>y<EFBFBD><79>ѝ<EFBFBD>Nx<4E><78><EFBFBD>nt3\09<EFBFBD>\n<EFBFBD>O<~v{6<EFBFBD>y2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>՝<EFBFBD>M<EFBFBD><EFBFBD>=UT<55>i<EFBFBD><69><'<04>Y<EFBFBD>|<7C>Va<<3C>Y<EFBFBD><13><><0F><><EFBFBD>I=<3D>X<EFBFBD><58>b<EFBFBD><62>'<27>Ϊ<EFBFBD><CEAA>7-e<><65><EFBFBD>S<EFBFBD><53>\0N<EFBFBD>\0<EFBFBD>=<3D>u<EFBFBD><75>uT<75>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>!Qt<51>i<EFBFBD>ve<76><65>R<EFBFBD><52>=<3D>q,<2C><><EFBFBD>s<EFBFBD>g<EFBFBD>+\"<EFBFBD><EFBFBD><<3C>o<<3C>Y<EFBFBD><59>yg<79>Nʚ<4E>9nt<6E><74><EFBFBD><EFBFBD>s<EFBFBD><1D>Nϖ<4E><CF96>&t<><74>y<EFBFBD><79><EFBFBD>%<25>Cʈ)=M<><0C>Wd<57><1D><><EFBFBD>+;<3B>[i<><13>gy;<3B><><EFBFBD><EFBFBD>&p<><70>M,\nC<EFBFBD><1F><0F>G<EFBFBD><47><1C><>D<EFBFBD><12>Ӭ<EFBFBD>U%?(<28>:<3A>ũ<13><>(\0_V<EFBFBD><EFBFBD>H?x<04> 3<>'G<>ќS<I<><49><EFBFBD>}*G<><47>K<EFBFBD>T³6Y<36><59><EFBFBD> <09><>g<EFBFBD>KF<4B>J:z<>C<>ʤ<EFBFBD>+O<4F>~<7E><>O<EFBFBD><4F>9r<39>\0&<26>&y\r<0F>Z<EFBFBD><5A>/*<2A>f<EFBFBD>K1<<3C><><EFBFBD>0<1B>+<2B><>W,˖`H<>- <20><>Y<EFBFBD>j_g<5F><67>H<EFBFBD>,<2C>*<><05>dr<64><03>-<2D><><EFBFBD><EFBFBD>B[<0C>ө<EFBFBD>M<EFBFBD><4D>_#p<><70><<3C>Eɓ<45>ԥ<EFBFBD>\nT<EFBFBD>@<40>%<02>g*<2A>@)<29>·<EFBFBD>.]<5D><04>j<EFBFBD>hP\$\$<EFBFBD><EFBFBD>S<><53><EFBFBD><13>%<25>͟Y<CD9F>8<><03><><EFBFBD>h <20><02>i,ʂz<CA82>%'<27><><EFBFBD><EFBFBD><EFBFBD>I\0<EFBFBD><EFBFBD>(r<>gF<67>W<EFBFBD><57>]aYiE\0<EFBFBD>)q֣<>Q<EFBFBD><51><EFBFBD><EFBFBD>wDD<44>|3I)<29>[,<2C>ft<66>P<EFBFBD>S<EFBFBD>(7;/H<><48>uY<><59>ݢ<><1F>9<>l<EFBFBD><6C>:3<>ԯ<EFBFBD>T<EFBFBD><54><18><1C>*<10><08>P<EFBFBD>_<EFBFBD>A<EFBFBD>b<02>:<0E><><EFBFBD>!O֡BQj<51><6A><EFBFBD><EFBFBD><EFBFBD>Zg<5A>Nc#<23>Bl<02><>ZS<>V<EFBFBD>О<EFBFBD>>G<>ʦ<18><>'gP<><50>IB<49>qtCJS<><53>W)ZҐq!Tղ8<D5B2>Yg5<67>o<0F><><EFBFBD>^<5E>#uA*<2A><>eNk<4E>Un<55><6E><EFBFBD><EFBFBD>-<2D>,Ь<><D0AC>C.<2E>E04(R<>=<3D><><EFBFBD>y <20><0B>q<EFBFBD>4<EFBFBD><34><12><>L<EFBFBD><4C>O<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>m(<28><>W<EFBFBD>?YRB<52><42>}<7D>8<EFBFBD>\"<EFBFBD>k<EFBFBD><EFBFBD>C*<2A>`<><7F><EFBFBD>hnP<6E>]<5D>C*lb<6C>9kR<6B>*<2A>'C<>b<EFBFBD><62><EFBFBD><0F>?<3F>Q\0X<0E><><EFBFBD><EFBFBD><EFBFBD>gt%<25>vLX<><58><EFBFBD><EFBFBD><EFBFBD><05>TDf,H<>ȵ<EFBFBD>r<EFBFBD><72>*<1C>?h_<68>!<21>1Dvl<76><6C>9Ћ(<28><>D<>)C<>zr<7A>)<29>tI<74><11><>X<EFBFBD><58>><3E><04>'<27><><EFBFBD>.S<><53>J6a<1B>&k29<>u<EFBFBD>د<EFBFBD>S<EFBFBD><53>5<EFBFBD>b&,<2C>#YPa*<2A>i4RrP<05>YE5e<35><0F>KJV<-QT<51>EM<45>H<04><06>Zh<5A>)|`\$!kH}J*<2A>d(0<>;X,<2C><><EFBFBD>,<2C>E<EFBFBD>Q<12><><EFBFBD><EFBFBD><EFBFBD>}A><3E>奡<>ԃLCS5?<3F><>:<3A><>/.<2E>h<EFBFBD>,^Tn<54><6E>i<EFBFBD><69>Z/<2F>y,,<2C><>1Ew<45><77><EFBFBD>a!<21><><EFBFBD>Q<EFBFBD>\0<EFBFBD>Ef<>9<><39>I4<49><34>1]<5D><>˪S<16><>ћ<EFBFBD><D19B>Dq<><71><04>碼:<3A>,<2C><>\$<EFBFBD>Vm<EFBFBD>d<0F>&6p<02><>jf<6A><66><EFBFBD><EFBFBD>[Q@iKZ<4B>e<EFBFBD><01><><EFBFBD>ͼ^BB<>\n ֒<1D><><EFBFBD>wG<>@<40>Tf<54><66><EFBFBD><15><<3C>`-E<>*\\X*\0\$<EFBFBD>Gv<EFBFBD><EFBFBD>* <20>t<EFBFBD><74><EFBFBD>]<5D><>Hp<02>z0<7A>h?<3F>{Vv<>u<EFBFBD><75><EFBFBD><EFBFBD>q-fH<66>N]<5D>r<EFBFBD><72>ȴL*<2A><15><>#\\<EFBFBD>BJ<EFBFBD><EFBFBD>U&4 <09><>O<EFBFBD>]<5D><><1E><><02><>@<40>J<EFBFBD>0\rTu=b<>ʣu<CAA3>*<2A>N<EFBFBD><4E><EFBFBD><0F><<3C><><EFBFBD>\"EF<EFBFBD>V\\ϛ<EFBFBD>\n@<02>E<>/W<>R<19><>\rh<EFBFBD>I\"<EFBFBD> <20>qb?<3F>T(<28>YZB<5A>Ջ2Ω<15>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B;<3B>{<EFBFBD>kL<EFBFBD>W<EFBFBD>Je<><65>JFJ<46>Ծ)<29><><EFBFBD>H<EFBFBD>JҺ<4A>G<EFBFBD><47><EFBFBD>h<EFBFBD><EFBFBD>Qr%ZS/<2F>+<2B>1<EFBFBD><31><EFBFBD><EFBFBD>bʛ\n64wh<EFBFBD><EFBFBD>ݢ\n<1F>_<EFBFBD>%<25><>='<27><>'vI<>~r<><72><EFBFBD>S<EFBFBD>i/.<2E><>ĩab<61><62>E<EFBFBD><45>@ <20><>-<10><02>Y<EFBFBD>2<EFBFBD><32>?Q螰<51><E89EB0>RZ<52>U<EFBFBD>J<EFBFBD><16>R^:<3A>3`<60>K<EFBFBD>U<EFBFBD><55><EFBFBD><EFBFBD>ѐT<D190>H<EFBFBD><02><>jQ?<16><>f\0<EFBFBD><EFBFBD><EFBFBD>RXY<>jl'Y<>~<7E>,<2C>Y}<0F>Z\n<EFBFBD>(<28>R<EFBFBD><52>8<EFBFBD><38>Y<EFBFBD>)<29><>Td<54>\0<EFBFBD>Q<><1F>s<EFBFBD>@<40>H\n<EFBFBD><EFBFBD>\"-DT<44>J<EFBFBD>J<EFBFBD><4A>JU4|?O<>\\]IyS<14><><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>Ƣe;<3B><EFBFBD><7F>ɩ\nh<EFBFBD><EFBFBD>-<2D>[<5B><>ʖ(<28>!<21><>&<26>/'<27>6JV<4A>j<EFBFBD><6A>Vk4gخHv<48><76>Q<EFBFBD>#I<><49>(Ι<7F>:<3A>}<7D>%u1Dy <19><06>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԙ<EFBFBD>~Ҝ<>7Jf<4A>*<2A><1F><15><>1><3E>G\\\r<EFBFBD>!<21>t<><74>R<><05>K<EFBFBD>Qe/<2F>4<>YXRo\0P<EFBFBD>p(*<2A><>)<29>\"<EFBFBD>#<23><06><><EFBFBD>\$S<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><0E><0C><>)ra<72>\\<EFBFBD><EFBFBD><EFBFBD>/(O<17>\$jF3f挀<EFBFBD><01>(t\0<EFBFBD>`<19><>d<EFBFBD>U >h<0C><19>e<EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD>H<EFBFBD>\rp<EFBFBD>`gP<67><10>c<04>[=<3D>L<EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0002\0/\0<EFBFBD><1A>5\0b<>!<21>`<60>&\0]*px)<07>g<EFBFBD>CZu<5A>d-<2D><<3C>\$<EFBFBD><EFBFBD><EFBFBD>k%A<><41>z<><7A>d<EFBFBD><64><EFBFBD><EFBFBD>Ҿ<EFBFBD>Y\0֛5<>k<14><02>\0006<EFBFBD><EFBFBD>Қ<>c@<40>@\r<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><04><01>7Zn4<6E>@<1C>z<EFBFBD><7A>M<EFBFBD>5<EFBFBD>\no<EFBFBD><EFBFBD>i<EFBFBD>STtF5\"<EFBFBD>U8@Ɣ<>d<>]<5D><>M<EFBFBD><4D>]5<>pg<70>)<29><>b<EFBFBD>Mڜ\\<EFBFBD>r`<60><><EFBFBD><EFBFBD>n<EFBFBD>/M7Js<4A><73>)<29>Sy<53>GN*<2A><>7<EFBFBD>t<EFBFBD><74>\$ρ\$<EFBFBD>6ʜ<>ju<6A><75>i<EFBFBD>ӍsN&<26>d<EFBFBD>Zvt<76>#PF<50><46>vҝ<>;jq<14><><EFBFBD>G<EFBFBD><47>}N<><4E><EFBFBD><jxT<78>)<29>SƦ<53>Nޞ%<<3C>\$<EFBFBD>\r)߀_<DF80><5F>M<EFBFBD><4D>E;\nx<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD><04><>=<3D>ot<6F><74>S<EFBFBD>!O<1A>U>jx<6A><78>i<EFBFBD><69>G<EFBFBD>O2<4F><32>tzyt<79>)<29>Ӓ<EFBFBD><D392>Mf:==J~<7E><>#<23><>ا<EFBFBD>NR:==<3D>xt<78><74>S<><53><EFBFBD>PP<>@ju<6A><75><EFBFBD>F~<7E>eP0<02>@<40>~t<>i<EFBFBD>Ff<46><66>O<EFBFBD><4F><EFBFBD>Z<>t<EFBFBD><74>SϨM?<3F><><14>*S<><53>?NB<4E><42>@*~ )<29>Sը-O<><4F>=:<3A><><EFBFBD><EFBFBD>jӔ<>oN\n<EFBFBD><EFBFBD><EFBFBD>z}<7D><>*Gq<47>]N<>̕J<CC95><4A>j!<21>*<2A>yMf0<66>Az<41><7A><EFBFBD>*\$<EFBFBD><1B><>Q&<26><>B<EFBFBD><42><14><><EFBFBD><EFBFBD>-<2D>wPR<50><52><EFBFBD>ډ<EFBFBD><DA89>\$<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>M<EFBFBD>ImB*<2A>ui<>T<10>[Q<1A><>5<EFBFBD>%<25><>j1<6A>j<EFBFBD>Q<>BEZ}<7D>*<07>#<23><>P<EFBFBD><50><EFBFBD>E<EFBFBD>5*!Tt<54>MQJ<51><4A>k<EFBFBD>Q<EFBFBD><51>A<EFBFBD>0<EFBFBD>\0<18>C<EFBFBD>CJ<43><4A><17>T8<54><38>Q<EFBFBD>K<EFBFBD>G(˵\$<EFBFBD>=Sސ#RJ<52><4A>E<EFBFBD><45><11>*ITl<54> \"<EFBFBD>5I<EFBFBD><0B>0j+<2B>ޑ<EFBFBD>Qn<51>D<EFBFBD><1A><><EFBFBD><EFBFBD>`<60>b<EFBFBD>#<06><>G<EFBFBD>ƒ0j4T<34><54>[PBF\rJ<1A>U(<28>8Ը<38><D4B8>R><3E><>kڔ<6B>+\$<EFBFBD><EFBFBD><EFBFBD>-%'~<7E>5Gژ/*\"T<EFBFBD><EFBFBD>S:<3A><>J*<2A><>.<2E>[F<><46><EFBFBD>&~<7E><>L:r`<60>%T<><54><EFBFBD>R<EFBFBD><52><EFBFBD>Mʕu6<75><36>Ӗ<EFBFBD><D396>Sr<53><72>=ꛕ-i<><69>ܩ<EFBFBD>\0<EFBFBD>3<EFBFBD>A<EFBFBD>m<EFBFBD><c3<63><33>K<EFBFBD>QR<51>uOJ<4F>5=*4T<34><54><EFBFBD>Sҥ<53>OJ<4F>I<EFBFBD><49>T<><54><EFBFBD>Sƣ<53>Pz<50><7A>)<29>U<08><>T\"<EFBFBD>uPDő<EFBFBD><EFBFBD>{%<25><>[TV<54>-HJ<48>5B<35><42><0B>S§<53>M<EFBFBD><4D>uE<75>H<EFBFBD>#<23>RN<52>5Q8<51><38>F*<2A>U<11>AT<41><54><EFBFBD>R<1A><>Hj<6A>!<21>;T<><54><EFBFBD>0\r1<EFBFBD>cCF<EFBFBD>9<EFBFBD>S<EFBFBD>2<EFBFBD><EFBFBD>Z<EFBFBD>Q<EFBFBD>cƿ<>WS<57>5R<><52>ruj<75><1C>sU4\rܭJ<EFBFBD>\0<1C>}US<55><53>UZ3}U<><55><EFBFBD>E<EFBFBD>*<2A>X<EFBFBD>?S<><\rUh<EFBFBD>5X<EFBFBD> <09>`<60>S<>:UV*<2A>5E<35>[<5B>b<EFBFBD><62>T2MV*<2A><>=<3D>?UV<55>eUګ=Qhĵ]<5D><><EFBFBD><05> Uګ}Q8<51><38>]<5D><><EFBFBD><16><>UZ:<3A>X<EFBFBD><58><EFBFBD>=<3D>OՈ<4F>]S<>1<EFBFBD>X<EFBFBD><58>ua<75><61><EFBFBD>K<EFBFBD>oV\"<EFBFBD>-PX<50><58>U<EFBFBD>6U<36><55>TZ2<5A>Yʱ<59>=<3D>k՜<6B>'Vj<56><6A>T<EFBFBD><54>ug*<2A><><13><>UZ0<5A>[\n<EFBFBD><EFBFBD>Acհ<>GTZ1%[\n<EFBFBD><EFBFBD>k<EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>eVmT<EFBFBD><EFBFBD>UU<EFBFBD>E<EFBFBD>īgTN4=\\J<EFBFBD><EFBFBD>Ac<EFBFBD><EFBFBD>īwW\n<EFBFBD><EFBFBD>UH<EFBFBD>q*<2A><>UL %Et<45>r<EFBFBD>*<2A>T<EFBFBD><54>R<EFBFBD><52> %\\<EFBFBD>Œ<EFBFBD>*<2A><>ϫ<EFBFBD>֮<>St<53>@I*ꁻC\rR:<3A>R_<52>0<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>E]<5D><><EFBFBD><0F><>TͪW֦}_<><5F>UF<55>U<>9W<39><57>lb<6C><62>U<EFBFBD>j<EFBFBD><6A>%<25>W<><57>E`<60><><EFBFBD>J<EFBFBD><4A>U<EFBFBD>'Wb6ma<6D><61>Յ<EFBFBD><D585><EFBFBD>D<EFBFBD>1X&N<>_<04><>}d<><64><EFBFBD>a<EFBFBD>X<EFBFBD><58><EFBFBD>^<5E><>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD>YX<59><58>Ub<55><62>Xk\n<EFBFBD>)<29><>X֚<58>]<5D><>Վ<EFBFBD><D58E>U<EFBFBD><55><EFBFBD>X<EFBFBD><58>cjõ\\kGO<47><4F>Uֱ<55>sJ<73><4A>}<7D><>GX<EEAC8F><58>mbڼ_<>\$<EFBFBD>l\0F<07>|<7C><>Euv<75><1E>B<EFBFBD><42>2<><32>k\n˕<EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>%<25><><EFBFBD>c<1A>u<EFBFBD>*<2A><>8<EFBFBD>Y<><59>e^걵<><EAB1B5>(Vr<56><72>WZ4<5A>]<5D><>5<EFBFBD><35>5Vx<56>AVn<56><6E>Y<EFBFBD><59>5<EFBFBD>c<EFBFBD>V)<29><><19><>ZZ<5A>5<EFBFBD>cV<1D>WZ<06>q<><71>mkGۭ'Yޯtc<74><63>u<EFBFBD>j<EFBFBD><6A>8<EFBFBD><38>Zz<5A>%4<><34><11>kQ֘<51><D698>Z2<5A><32>i<EFBFBD><69>4<EFBFBD>*<2A>ɟ<EFBFBD> &~<7E>2c93<39><33>CQFۭ[2<><32>]3<><33>@<40>ɟ<EFBFBD>WP.<2E><>kڡ5<DAA1><35><EFBFBD><EFBFBD>Z<EFBFBD>[W<>j*<2A><><EFBFBD>d<EFBFBD>V<EFBFBD><56><EFBFBD>YK<>k<EFBFBD><6B><EFBFBD><EFBFBD>*kV̬W<>1eھ<65><DABE>k<08><>LYv<><76><EFBFBD><EFBFBD>˵<EFBFBD>#.<2E>ΌgZ<67>3]n<>ׁ<EFBFBD><D781><EFBFBD><EFBFBD>֖T b<><62><<3C>jKl>+a<>+<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><13>]<5D><>7\0<EFBFBD>><3E><><<3C><><EFBFBD>s<EFBFBD>+<2B><><EFBFBD><EFBFBD><EFBFBD>=LR<>5S<35><53><EFBFBD>+<07>]<5D><>\rH2<EFBFBD>Ȅ<EFBFBD><EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[:<3A>%cs<63><73>*O<>v<EFBFBD><76>iL<<3C>5V@ב<>w<EFBFBD><77>C<EFBFBD><43>2<EFBFBD>5<EFBFBD>S<EFBFBD>'<27><><EFBFBD>v<04><>|<04>i<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>n{<EFBFBD><1C>j<15>f<EFBFBD>V<EFBFBD><56>J<EFBFBD><4A>Hd<48>uBs<42><73>;W<><57>8<1A><14>Y<EFBFBD>t<EFBFBD>'<27><><13>y6x<36>B<EFBFBD>Dʤ'WN<57><1C>|<7C>ً.<2E><><EFBFBD>P-<2D>q@ <09><><EFBFBD>fsr<73><72>͟<EFBFBD><CD9F>8<EFBFBD><38>*<2A><19><><EFBFBD>í<>`1C<15>=o<><6F>5<EFBFBD><35>Y<11>%\r5idE<64><45><EFBFBD>&ѻ8<D1BB>B<EFBFBD><42><EFBFBD>\$<EFBFBD>5m<15><><EFBFBD><EFBFBD><EFBFBD><12>:k<>+iƋI&<26>W\r<EFBFBD>,Jڸ<4A>q%<<3C><>k<EFBFBD><6B><0F>\"<EFBFBD>!<21>q<EFBFBD><71>U<EFBFBD>f<EFBFBD><66> <20><>^\n<EFBFBD>rY<72>U<EFBFBD>V^<5E><>#<23>6<EFBFBD>Uz9<7A>S<EFBFBD>+<2B>)<29><>W7*eD<65>)<29>f<><66>2v<32>\\<EFBFBD>f:<3A><><EFBFBD><EFBFBD>)<29><>O<EFBFBD><4F><EFBFBD><EFBFBD>n3<6E> \n<15>k<EFBFBD><6B><EFBFBD>\$<EFBFBD>;<3B>p<1A>i<EFBFBD><69>Ք<EFBFBD><D594>ˮ<EFBFBD>8<0E>+<2B><><EFBFBD><EFBFBD>*<2A><><EFBFBD>\n<EFBFBD>ث<EFBFBD>}<7D><>9<EFBFBD>Q<17><0E>S<EFBFBD><14>zh\"<EFBFBD><EFBFBD><EFBFBD>Uا<EFBFBD><EFBFBD>B<EFBFBD>o;r<><72>i<EFBFBD><69><EFBFBD><EFBFBD>pP<70>w<EFBFBD>]<5D>vj<76>U<EFBFBD><55><EFBFBD>k<EFBFBD>L<EFBFBD>ҥ<EFBFBD><D2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߧ;;<3B>eL<65>pz<70><7A>U<EFBFBD><55><EFBFBD><0B><06>&<26>]ed5<64><35>W<11>0<EFBFBD><30><EFBFBD>=<3D><><EFBFBD><EFBFBD><03><15>U<>F<EFBFBD><46>@}W<>ә<EFBFBD><D399>\$;<3B><>^<5E>uZ<75>:<3A>t<EFBFBD><74><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>݇<EFBFBD><DD87><EFBFBD>&<26><>(<28><>\\<EFBFBD>?<3F>{<EFBFBD><EFBFBD>\rk<EFBFBD>NН<EFBFBD>_p<0C><1A>S<EFBFBD>UX<55>͝<EFBFBD>_><3E>=<3D>'<27>ik<>P<EFBFBD>w<EFBFBD>;<3B><>Ey:j<>aY0A<30>E\n浾r<><1C><><EFBFBD><EFBFBD>h<EFBFBD><68>5<EFBFBD>3h<>W<EFBFBD>w<EFBFBD>\ri:<3A>i<EFBFBD>+<2B><15>R@<40>F<EFBFBD>Vx|<7C>W<EFBFBD>1^Njx\\I<EFBFBD>f<EFBFBD><EFBFBD>Gpa<1D>,<2C>T<EFBFBD><54>N|z<><7A>cs0<73>EL<45>xm5*<2A>5<03><>ά@Dg(<28><><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD><02><><06><><01><>\0\"H<15>X<>:<3A>Ɍ<><14><><EFBFBD>4<EFBFBD>\"1u(.<10><><16>`Ӂ屑y,0<><1A>R<EFBFBD>`<60><02>5<EFBFBD>A<EFBFBD>- <09>~v <09>+<2B>X<>qM<><4D>s<1D><14>;<3B>[0<>Bf<42><66>((&h<>q<EFBFBD>_<EFBFBD>Fڃ<46>8<10><17><><EFBFBD>~6Ob<4F><62>8'<27> <09><><EFBFBD>X<EFBFBD>dfu`<60><02>42\nؿ|.Ku<4B>P<11>H3:^/<2F>G|<<3C>Y<EFBFBD>(<14><1D><<3C>\n<EFBFBD>b<EFBFBD>><11> <09>Z;'z<>c<EFBFBD>\r<EFBFBD>3b2\r<EFBFBD>N<06><>L<EFBFBD><4C><EFBFBD>2<0B>xU:\r6X<EFBFBD><17>-<2D>b\0<EFBFBD>t<><74>T<>%P<><50><EFBFBD><EFBFBD><06><>X<EFBFBD>SX!<21>k<EFBFBD><6B><EFBFBD>ćQ<C487>u<EFBFBD>a<0F>?<3F>v<EFBFBD>g<EFBFBD>.<2E><14><>S<>S:l<><6C><EFBFBD><1A>d<EFBFBD>t<><74>H<EFBFBD>\0=/<2F>`_3<5F><33>m<EFBFBD>F<EFBFBD><04><1E>%<25>l<EFBFBD>bуB0 ڦ<>k<1C><>5<EFBFBD>ň<EFBFBD>(<28>PO?<3F>?Ί<08><<3C><>\nЋS<EFBFBD>=5j<35>\n<EFBFBD><EFBFBD>{*\0<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD>b!eT<12><>F<><46><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><bʃ*<03> <09><><0B>5F<35>c<EFBFBD> <09>N<EFBFBD> H<><48>=<3D>ga6<61>e<EFBFBD>\r<EFBFBD><EFBFBD> <20>6<><36>;\0<EFBFBD>&Ě<><C49A>a<EFBFBD><61>Qe<51>4<EFBFBD>Ђ<EFBFBD><D082>h<15><0E>YadL<64> \n<EFBFBD>դl<02>*<2A>G_<47><5F>ׅ<EFBFBD> y<><79>H<EFBFBD>1<EFBFBD>e.X<>j<18><>tY<74>2Mw<>4<EFBFBD>6<EFBFBD>J<EFBFBD>]<5D><>MȐ<4D>Ͻș\n,<2C><>jxF<07>G@<40><>*g\0_<><5F><EFBFBD><EFBFBD> <1B>XY<58><59> f\r<EFBFBD>m<EFBFBD>9y<EFBFBD>à<07><><06><><12><>߇<EFBFBD>><3E><EFBFBD>o<EFBFBD><6F>(jG;8\"yA<EFBFBD>3׃f<>9<EFBFBD><39> L<><4C><EFBFBD><EFBFBD><EFBFBD>mgQ<67>[{<EFBFBD>ds(Y<>~<7E><>~@<40>@: <09><><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><03><>6Fa\$l<EFBFBD>)Ob<4F>=<3D><><Vx<1F>Yuvx<><78><EFBFBD><EFBFBD>č5<18>Y<EFBFBD><16><11><><15><1A><><EFBFBD><EFBFBD>Yjuh<03><12>\r<16>/<2F><0B><>c^<5E>x<EFBFBD> \r<EFBFBD><EFBFBD><EFBFBD>A,m<>*<2A><>yw<>\0<EFBFBD>٫<EFBFBD><19>hu<68><75>7U̫HA{<EFBFBD><01><>#S<><53>{>L<>h<EFBFBD>]<5D><>Ђ<EFBFBD>&~<07>f<EFBFBD>ÞѸx<0E><>m<1C>]<03>.<2E><><EFBFBD>B<EFBFBD><04><>&e<>m<EFBFBD><6D>e<EFBFBD>lH<6C><48>+6ZĿ<>(<28>\0Dž<>ٝ,:YPZak<01><><EFBFBD>Q<EFBFBD>.<2E><><EFBFBD><11><><EFBFBD>~<7E><> [<5B><>-a_<61>:<04>ɜbPcA<63><41><EFBFBD><EFBFBD>/\rh<><68><EFBFBD>e<EFBFBD><65><EFBFBD>h<EFBFBD><68>'<27><><EFBFBD>ui<75>Ӭ\0<EFBFBD>=<3D>m<16>\0<EFBFBD><EFBFBD>i<EFBFBD><12><>\0JPh-6<>`rfi<><69>=<19><><EFBFBD>mC<6D>R\"<EFBFBD>'^õ<>Tq<54>lS<6C><10><><EFBFBD>U<EFBFBD>ݐ<EFBFBD><DD90><0C>^<5E><03>Q3<51><33>T<>.A<>=&gv<10>lM<6C>3@<40>-T<>+P<><10><> ƏQA.!\0<EFBFBD>j<EFBFBD>D[\"<EFBFBD>W<01>,Z'<27>QRݫ<>U&v<>YX<59>[i0\"{Y <1B>l<EFBFBD><6C>{<EFBFBD>\"<EFBFBD><EFBFBD>{P<EFBFBD>\"a<EFBFBD>W<EFBFBD>Z<EFBFBD>d<EFBFBD>\0B<EFBFBD>PV.<2E><>mm=0<>kv\r5<EFBFBD>5<>Z<EFBFBD><5A><EFBFBD>ൾh2<68>4<EFBFBD><34><EFBFBD><EFBFBD>lOZܵ<5A>Oɖ<4F><C996><EFBFBD><13>.,<2C><><EFBFBD>:<3A><>F<EFBFBD>Z('<27><>`-N<><4E>B<EFBFBD>څ<EFBFBD>խ6<><36>,<2C>§a<C2A7><61><EFBFBD><EFBFBD>a<13>l<1F><><EFBFBD><EFBFBD><6<01>ܽ\0000<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>lM<6C><4D><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD>Zc<5A>R<>Օ<EFBFBD><1B>aloڝ|&<26><03>G<>I<EFBFBD>b3<62><06>\n<EFBFBD><EFBFBD>\r0<EFBFBD>(<28><18>5[/<2F>fH<66>\rŮZ`<60><><EFBFBD>L<EFBFBD>^<5E>d\$<EFBFBD><EFBFBD>LΐU(5-<2D>[;<3B><>(<28><>8*<2A><>v̓<02><>~|<12>a6<61><36><EFBFBD><EFBFBD>4<>d<>l<EFBFBD><6C><EFBFBD><1C>\n<EFBFBD><EFBFBD><EFBFBD>/<2F>L<EFBFBD><4C>y<EFBFBD>*><3E>2<EFBFBD><32><EFBFBD>?<3F><08><17><><EFBFBD><EFBFBD><EFBFBD>d!|<7C>'O<>(k<><1C>P6!i<><1B>t<08>x\"<EFBFBD><EFBFBD>I<><49>\0A<EFBFBD><EFBFBD> <20><>,<2C><0C><><EFBFBD><17>7<>b<EFBFBD><62>z<EFBFBD><08><><1B>J2E<><45>C<EFBFBD>\nB5<EFBFBD>@!<21><03>F<EFBFBD><46>h<EFBFBD><68><0C>+-<2D>:<3A>\0NMC<>s<EFBFBD><73>H<EFBFBD>ہ=nA<6E><41>;s<>o<EFBFBD>*<2A><><EFBFBD>:q<10><>B<EFBFBD><42>\0<EFBFBD>ۨN<EFBFBD>n<EFBFBD><18>n<EFBFBD>V܄<1F><>4}<08><0C><>k6<><36>Zʗ<>_<EFBFBD>tv<74><76><EFBFBD><EFBFBD><EFBFBD>3>w<>9\n<EFBFBD><EFBFBD>L(<28>Yy-B{<EFBFBD><1A><><16><>G<EFBFBD>\$6ye̋t<EFBFBD>d]<5D>2<EFBFBD>");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0<EFBFBD>\0001<EFBFBD><EFBFBD><EFBFBD>\0\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\0\0!<21>\0\0\0,\0\0\0\0\0\0!<21><><EFBFBD><EFBFBD><EFBFBD>M<08><>*)<29>o<EFBFBD><6F>) q<><19>e<EFBFBD><65><EFBFBD>#<23><>L<EFBFBD>\0;";break;case"cross.gif":echo"GIF89a\0\0<EFBFBD>\0001<EFBFBD><EFBFBD><EFBFBD>\0\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\0\0!<21>\0\0\0,\0\0\0\0\0\0#<23><><EFBFBD><EFBFBD><EFBFBD>#\na<EFBFBD>Fo~y<>.<2E>_wa<77><61>1<EFBFBD>J<EFBFBD>G<>L<EFBFBD>6]\0\0;";break;case"up.gif":echo"GIF89a\0\0<EFBFBD>\0001<EFBFBD><EFBFBD><EFBFBD>\0\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\0\0!<21>\0\0\0,\0\0\0\0\0\0 <20><><EFBFBD><EFBFBD><EFBFBD>MQN\n<EFBFBD>}<13><>a8<>y<>aŶ<61>\0<EFBFBD><EFBFBD>\0;";break;case"down.gif":echo"GIF89a\0\0<EFBFBD>\0001<EFBFBD><EFBFBD><EFBFBD>\0\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\0\0!<21>\0\0\0,\0\0\0\0\0\0 <20><><EFBFBD><EFBFBD><EFBFBD>M<08><>*)<29>[W<>\\<EFBFBD><EFBFBD>L&ٜƶ<>\0<EFBFBD><EFBFBD>\0;";break;case"arrow.gif":echo"GIF89a\0\n\0<EFBFBD>\0\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!<21>\0\0\0,\0\0\0\0\0\n\0\0<04>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><11>Ӳ\0\0;";break;}}exit;}if($_GET["script"]=="version"){$p=get_temp_dir()."/adminer.version";unlink($p);$r=file_open_lock($p);if($r)file_write_unlock($r,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$f,$l,$Zb,$m,$ba,$ca,$je,$Zf,$wd,$T,$oi,$ia;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$ba=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Sc);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",15);function
|
||
get_lang(){return'en';}function
|
||
lang($ni,$df=null){if(is_array($ni)){$cg=($df==1?0:1);$ni=$ni[$cg];}$ni=str_replace("%d","%s",$ni);$df=format_number($df);return
|
||
sprintf($ni,$df);}if(extension_loaded('pdo')){abstract
|
||
class
|
||
PdoDb{var$server_info,$affected_rows,$errno,$error;protected$pdo;private$result;function
|
||
dsn($fc,$V,$E,$vf=array()){$vf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$vf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoDbStatement');try{$this->pdo=new
|
||
\PDO($fc,$V,$E,$vf);}catch(Exception$Ac){auth_error(h($Ac->getMessage()));}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);}abstract
|
||
function
|
||
select_db($Ib);function
|
||
quote($P){return$this->pdo->quote($P);}function
|
||
query($G,$yi=false){$H=$this->pdo->query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';return
|
||
false;}$this->store_result($H);return$H;}function
|
||
multi_query($G){return$this->result=$this->query($G);}function
|
||
store_result($H=null){if(!$H){$H=$this->result;if(!$H)return
|
||
false;}if($H->columnCount()){$H->num_rows=$H->rowCount();return$H;}$this->affected_rows=$H->rowCount();return
|
||
true;}function
|
||
next_result(){if(!$this->result)return
|
||
false;$this->result->_offset=0;return@$this->result->nextRowset();}function
|
||
result($G,$n=0){$H=$this->query($G);if(!$H)return
|
||
false;$J=$H->fetch();return$J[$n];}}class
|
||
PdoDbStatement
|
||
extends
|
||
\PDOStatement{var$_offset=0,$num_rows;function
|
||
fetch_assoc(){return$this->fetch(\PDO::FETCH_ASSOC);}function
|
||
fetch_row(){return$this->fetch(\PDO::FETCH_NUM);}function
|
||
fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=(in_array("blob",(array)$J->flags)?63:0);return$J;}function
|
||
seek($C){for($t=0;$t<$C;$t++)$this->fetch();}}}$Zb=array();function
|
||
add_driver($u,$B){global$Zb;$Zb[$u]=$B;}function
|
||
get_driver($u){global$Zb;return$Zb[$u];}abstract
|
||
class
|
||
SqlDriver{static$fg=array();static$be;protected$conn;protected$types=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();function
|
||
__construct($f){$this->conn=$f;}function
|
||
types(){return
|
||
call_user_func_array('array_merge',array_values($this->types));}function
|
||
structuredTypes(){return
|
||
array_map('array_keys',$this->types);}function
|
||
enumLength($n){}function
|
||
unconvertFunction($n){}function
|
||
select($Q,$L,$Z,$nd,$xf=array(),$z=1,$D=0,$kg=false){global$b;$Wd=(count($nd)<count($L));$G=$b->selectQueryBuild($L,$Z,$nd,$xf,$z,$D);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$z!=""&&$nd&&$Wd&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($nd&&$Wd?"\nGROUP BY ".implode(", ",$nd):"").($xf?"\nORDER BY ".implode(", ",$xf):""),($z!=""?+$z:null),($D?$z*$D:0),"\n");$_h=microtime(true);$I=$this->conn->query($G);if($kg)echo$b->selectQuery($G,$_h,!$I);return$I;}function
|
||
delete($Q,$tg,$z=0){$G="FROM ".table($Q);return
|
||
queries("DELETE".($z?limit1($Q,$G,$tg):" $G$tg"));}function
|
||
update($Q,$N,$tg,$z=0,$ch="\n"){$Qi=array();foreach($N
|
||
as$y=>$X)$Qi[]="$y = $X";$G=table($Q)." SET$ch".implode(",$ch",$Qi);return
|
||
queries("UPDATE".($z?limit1($Q,$G,$tg,$ch):" $G$tg"));}function
|
||
insert($Q,$N){return
|
||
queries("INSERT INTO ".table($Q).($N?" (".implode(", ",array_keys($N)).")\nVALUES (".implode(", ",$N).")":" DEFAULT VALUES"));}function
|
||
insertUpdate($Q,$K,$F){return
|
||
false;}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
commit(){return
|
||
queries("COMMIT");}function
|
||
rollback(){return
|
||
queries("ROLLBACK");}function
|
||
slowQuery($G,$bi){}function
|
||
convertSearch($v,$X,$n){return$v;}function
|
||
convertOperator($rf){return$rf;}function
|
||
value($X,$n){return(method_exists($this->conn,'value')?$this->conn->value($X,$n):(is_resource($X)?stream_get_contents($X):$X));}function
|
||
quoteBinary($Qg){return
|
||
q($Qg);}function
|
||
warnings(){return'';}function
|
||
tableHelp($B,$Zd=false){}function
|
||
hasCStyleEscapes(){return
|
||
false;}function
|
||
supportsIndex($R){return!is_view($R);}function
|
||
checkConstraints($Q){return
|
||
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
|
||
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
|
||
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
|
||
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
|
||
AND t.TABLE_NAME = ".q($Q)."
|
||
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'");}}$Zb["sqlite"]="SQLite";if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")){class
|
||
SqliteDb{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error;private$link;function
|
||
__construct($p){$this->link=new
|
||
\SQLite3($p);$Ti=$this->link->version();$this->server_info=$Ti["versionString"];}function
|
||
query($G){$H=@$this->link->query($G);$this->error="";if(!$H){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
|
||
false;}elseif($H->numColumns())return
|
||
new
|
||
Result($H);$this->affected_rows=$this->link->changes();return
|
||
true;}function
|
||
quote($P){return(is_utf8($P)?"'".$this->link->escapeString($P)."'":"x'".reset(unpack('H*',$P))."'");}function
|
||
store_result(){return$this->result;}function
|
||
result($G,$n=0){$H=$this->query($G);if(!is_object($H))return
|
||
false;$J=$H->fetch_row();return$J?$J[$n]:false;}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($H){$this->result=$H;}function
|
||
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
|
||
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
|
||
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>$U,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
|
||
__destruct(){return$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){class
|
||
SqliteDb
|
||
extends
|
||
PdoDb{var$extension="PDO_SQLite";function
|
||
__construct($p){$this->dsn(DRIVER.":$p","","");}function
|
||
select_db($j){return
|
||
false;}}}if(class_exists('Adminer\SqliteDb')){class
|
||
Db
|
||
extends
|
||
SqliteDb{function
|
||
__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
|
||
select_db($p){if(is_readable($p)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$p)?$p:dirname($_SERVER["SCRIPT_FILENAME"])."/$p")." AS a")){parent::__construct($p);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return
|
||
true;}return
|
||
false;}function
|
||
multi_query($G){return$this->result=$this->query($G);}function
|
||
next_result(){return
|
||
false;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$fg=array("SQLite3","PDO_SQLite");static$be="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$editFunctions=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");function
|
||
__construct($f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
structuredTypes(){return
|
||
array_keys($this->types[0]);}function
|
||
insertUpdate($Q,$K,$F){$Qi=array();foreach($K
|
||
as$N)$Qi[]="(".implode(", ",$N).")";return
|
||
queries("REPLACE INTO ".table($Q)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$Qi));}function
|
||
tableHelp($B,$Zd=false){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}function
|
||
checkConstraints($Q){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',$this->conn->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($Q)),$Ae);return
|
||
array_combine($Ae[2],$Ae[2]);}}function
|
||
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
|
||
table($v){return
|
||
idf_escape($v);}function
|
||
connect($Ab){list(,,$E)=$Ab;if($E!="")return'Database does not support password.';return
|
||
new
|
||
Db;}function
|
||
get_databases(){return
|
||
array();}function
|
||
limit($G,$Z,$z,$C=0,$ch=" "){return" $G$Z".($z!==null?$ch."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($Q,$G,$Z,$ch="\n"){return(preg_match('~^INTO~',$G)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($G,$Z,1,0,$ch):" $G WHERE rowid = (SELECT rowid FROM ".table($Q).$Z.$ch."LIMIT 1)");}function
|
||
db_collation($j,$gb){return
|
||
get_val("PRAGMA encoding");}function
|
||
engines(){return
|
||
array();}function
|
||
logged_user(){return
|
||
get_current_user();}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
|
||
count_tables($i){return
|
||
array();}function
|
||
table_status($B=""){$I=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$J){$J["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($J["Name"]));$I[$J["Name"]]=$J;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$J)$I[$J["name"]]["Auto_increment"]=$J["seq"];return($B!=""?$I[$B]:$I);}function
|
||
is_view($R){return$R["Engine"]=="view";}function
|
||
fk_support($R){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
fields($Q){$I=array();$F="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($Q).")")as$J){$B=$J["name"];$U=strtolower($J["type"]);$k=$J["dflt_value"];$I[$B]=array("field"=>$B,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$k,$A)?str_replace("''","'",$A[1]):($k=="NULL"?null:$k)),"null"=>!$J["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$J["pk"],);if($J["pk"]){if($F!="")$I[$F]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$I[$B]["auto_increment"]=true;$F=$B;}}$uh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($Q));$v='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$v.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$uh,$Ae,PREG_SET_ORDER);foreach($Ae
|
||
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($I[$B])$I[$B]["collation"]=trim($A[3],"'");}preg_match_all('~'.$v.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$uh,$Ae,PREG_SET_ORDER);foreach($Ae
|
||
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$I[$B]["default"]=$A[3];$I[$B]["generated"]=strtoupper($A[4]);}return$I;}function
|
||
indexes($Q,$g=null){global$f;if(!is_object($g))$g=$f;$I=array();$uh=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($Q));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$uh,$A)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$Ae,PREG_SET_ORDER);foreach($Ae
|
||
as$A){$I[""]["columns"][]=idf_unescape($A[2]).$A[4];$I[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$I){foreach(fields($Q)as$B=>$n){if($n["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$yh=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($Q),$g);foreach(get_rows("PRAGMA index_list(".table($Q).")",$g)as$J){$B=$J["name"];$w=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$g)as$Pg){$w["columns"][]=$Pg["name"];$w["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($Q),'~').' \((.*)\)$~i',$yh[$B],$Cg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Cg[2],$Ae);foreach($Ae[2]as$y=>$X){if($X)$w["descs"][$y]='1';}}if(!$I[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$I[""]["columns"]||$w["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$B))$I[$B]=$w;}return$I;}function
|
||
foreign_keys($Q){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($Q).")")as$J){$q=&$I[$J["id"]];if(!$q)$q=$J;$q["source"][]=$J["from"];$q["target"][]=$J["to"];}return$I;}function
|
||
view($B){return
|
||
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($B))));}function
|
||
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
|
||
information_schema($j){return
|
||
false;}function
|
||
error(){global$f;return
|
||
h($f->error);}function
|
||
check_sqlite_name($B){global$f;$Ic="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Ic)\$~",$B)){$f->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Ic));return
|
||
false;}return
|
||
true;}function
|
||
create_database($j,$fb){global$f;if(file_exists($j)){$f->error='File exists.';return
|
||
false;}if(!check_sqlite_name($j))return
|
||
false;try{$_=new
|
||
SqliteDb($j);}catch(Exception$Ac){$f->error=$Ac->getMessage();return
|
||
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
|
||
true;}function
|
||
drop_databases($i){global$f;$f->__construct(":memory:");foreach($i
|
||
as$j){if(!@unlink($j)){$f->error='File exists.';return
|
||
false;}}return
|
||
true;}function
|
||
rename_database($B,$fb){global$f;if(!check_sqlite_name($B))return
|
||
false;$f->__construct(":memory:");$f->error='File exists.';return@rename(DB,$B);}function
|
||
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
|
||
alter_table($Q,$B,$o,$ad,$lb,$qc,$fb,$_a,$Tf){global$f;$Ji=($Q==""||$ad);foreach($o
|
||
as$n){if($n[0]!=""||!$n[1]||$n[2]){$Ji=true;break;}}$c=array();$Hf=array();foreach($o
|
||
as$n){if($n[1]){$c[]=($Ji?$n[1]:"ADD ".implode($n[1]));if($n[0]!="")$Hf[$n[0]]=$n[1][0];}}if(!$Ji){foreach($c
|
||
as$X){if(!queries("ALTER TABLE ".table($Q)." $X"))return
|
||
false;}if($Q!=$B&&!queries("ALTER TABLE ".table($Q)." RENAME TO ".table($B)))return
|
||
false;}elseif(!recreate_table($Q,$B,$c,$Hf,$ad,$_a))return
|
||
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));if(!$f->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($B).", $_a)");queries("COMMIT");}return
|
||
true;}function
|
||
recreate_table($Q,$B,$o,$Hf,$ad,$_a=0,$x=array(),$bc="",$ma=""){global$l;if($Q!=""){if(!$o){foreach(fields($Q)as$y=>$n){if($x)$n["auto_increment"]=0;$o[]=process_field($n,$n);$Hf[$y]=idf_escape($y);}}$jg=false;foreach($o
|
||
as$n){if($n[6])$jg=true;}$dc=array();foreach($x
|
||
as$y=>$X){if($X[2]=="DROP"){$dc[$X[1]]=true;unset($x[$y]);}}foreach(indexes($Q)as$de=>$w){$e=array();foreach($w["columns"]as$y=>$d){if(!$Hf[$d])continue
|
||
2;$e[]=$Hf[$d].($w["descs"][$y]?" DESC":"");}if(!$dc[$de]){if($w["type"]!="PRIMARY"||!$jg)$x[]=array($w["type"],$de,$e);}}foreach($x
|
||
as$y=>$X){if($X[0]=="PRIMARY"){unset($x[$y]);$ad[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($Q)as$de=>$q){foreach($q["source"]as$y=>$d){if(!$Hf[$d])continue
|
||
2;$q["source"][$y]=idf_unescape($Hf[$d]);}if(!isset($ad[" $de"]))$ad[]=" ".format_foreign_key($q);}queries("BEGIN");}foreach($o
|
||
as$y=>$n){if(preg_match('~GENERATED~',$n[3]))unset($Hf[array_search($n[0],$Hf)]);$o[$y]=" ".implode($n);}$o=array_merge($o,array_filter($ad));foreach($l->checkConstraints($Q)as$Ta){if($Ta!=$bc)$o[]=" CHECK ($Ta)";}if($ma)$o[]=" CHECK ($ma)";$Vh=($Q==$B?"adminer_$B":$B);if(!queries("CREATE TABLE ".table($Vh)." (\n".implode(",\n",$o)."\n)"))return
|
||
false;if($Q!=""){if($Hf&&!queries("INSERT INTO ".table($Vh)." (".implode(", ",$Hf).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($Hf)))." FROM ".table($Q)))return
|
||
false;$ui=array();foreach(triggers($Q)as$si=>$ci){$ri=trigger($si);$ui[]="CREATE TRIGGER ".idf_escape($si)." ".implode(" ",$ci)." ON ".table($B)."\n$ri[Statement]";}$_a=$_a?0:get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($Q));if(!queries("DROP TABLE ".table($Q))||($Q==$B&&!queries("ALTER TABLE ".table($Vh)." RENAME TO ".table($B)))||!alter_indexes($B,$x))return
|
||
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));foreach($ui
|
||
as$ri){if(!queries($ri))return
|
||
false;}queries("COMMIT");}return
|
||
true;}function
|
||
index_sql($Q,$U,$B,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($Q."_"))." ON ".table($Q)." $e";}function
|
||
alter_indexes($Q,$c){foreach($c
|
||
as$F){if($F[0]=="PRIMARY")return
|
||
recreate_table($Q,$Q,array(),array(),array(),0,$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($Q,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($S){return
|
||
apply_queries("DELETE FROM",$S);}function
|
||
drop_views($Vi){return
|
||
apply_queries("DROP VIEW",$Vi);}function
|
||
drop_tables($S){return
|
||
apply_queries("DROP TABLE",$S);}function
|
||
move_tables($S,$Vi,$Th){return
|
||
false;}function
|
||
trigger($B){if($B=="")return
|
||
array("Statement"=>"BEGIN\n\t;\nEND");$v='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$ti=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$v\\s*(".implode("|",$ti["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($v))?\\s+ON\\s*$v\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($B)),$A);$ff=$A[3];return
|
||
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($ff?" OF":""),"Of"=>idf_unescape($ff),"Trigger"=>$B,"Statement"=>$A[4],);}function
|
||
triggers($Q){$I=array();$ti=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($Q))as$J){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$ti["Timing"]).')\s*(.*?)\s+ON\b~i',$J["sql"],$A);$I[$J["name"]]=array($A[1],$A[2]);}return$I;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
last_id(){return
|
||
get_val("SELECT LAST_INSERT_ROWID()");}function
|
||
explain($f,$G){return$f->query("EXPLAIN QUERY PLAN $G");}function
|
||
found_rows($R,$Z){}function
|
||
types(){return
|
||
array();}function
|
||
create_sql($Q,$_a,$Dh){$I=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($Q));foreach(indexes($Q)as$B=>$w){if($B=='')continue;$I.=";\n\n".index_sql($Q,$w['type'],$B,"(".implode(", ",array_map('Adminer\idf_escape',$w['columns'])).")");}return$I;}function
|
||
truncate_sql($Q){return"DELETE FROM ".table($Q);}function
|
||
use_sql($Ib){}function
|
||
trigger_sql($Q){return
|
||
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($Q)));}function
|
||
show_variables(){$I=array();foreach(get_rows("PRAGMA pragma_list")as$J){$B=$J["name"];if($B!="pragma_list"&&$B!="compile_options"){foreach(get_rows("PRAGMA $B")as$J)$I[$B].=implode(", ",$J)."\n";}}return$I;}function
|
||
show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$uf){list($y,$X)=explode("=",$uf,2);$I[$y]=$X;}return$I;}function
|
||
convert_field($n){}function
|
||
unconvert_field($n,$I){return$I;}function
|
||
support($Nc){return
|
||
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Nc);}}$Zb["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")){class
|
||
Db{var$extension="PgSQL",$server_info,$affected_rows,$error,$timeout;private$link,$result,$string,$database=true;function
|
||
_error($wc,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
|
||
connect($M,$V,$E){global$b;$j=$b->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($M,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($E,"'\\")."'";$zh=$b->connectSsl();if(isset($zh["mode"]))$this->string.=" sslmode='".$zh["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link){$Ti=pg_version($this->link);$this->server_info=$Ti["server"];pg_set_client_encoding($this->link,"UTF8");}return(bool)$this->link;}function
|
||
quote($P){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$P):"'".pg_escape_string($this->link,$P)."'");}function
|
||
value($X,$n){return($n["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
|
||
select_db($Ib){global$b;if($Ib==$b->database())return$this->database;$I=@pg_connect("$this->string dbname='".addcslashes($Ib,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->link=$I;return$I;}function
|
||
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
|
||
query($G,$yi=false){$H=@pg_query($this->link,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->link);$I=false;}elseif(!pg_num_fields($H)){$this->affected_rows=pg_affected_rows($H);$I=true;}else$I=new
|
||
Result($H);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function
|
||
multi_query($G){return$this->result=$this->query($G);}function
|
||
store_result(){return$this->result;}function
|
||
next_result(){return
|
||
false;}function
|
||
result($G,$n=0){$H=$this->query($G);return($H?$H->fetch_column($n):false);}function
|
||
warnings(){return
|
||
h(pg_last_notice($this->link));}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($H){$this->result=$H;$this->num_rows=pg_num_rows($H);}function
|
||
fetch_assoc(){return
|
||
pg_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
pg_fetch_row($this->result);}function
|
||
fetch_column($n){return($this->num_rows?pg_fetch_result($this->result,0,$n):false);}function
|
||
fetch_field(){$d=$this->offset++;$I=new
|
||
\stdClass;if(function_exists('pg_field_table'))$I->orgtable=pg_field_table($this->result,$d);$I->name=pg_field_name($this->result,$d);$I->orgname=$I->name;$I->type=pg_field_type($this->result,$d);$I->charsetnr=($I->type=="bytea"?63:0);return$I;}function
|
||
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_PgSQL",$timeout;function
|
||
connect($M,$V,$E){global$b;$j=$b->database();$fc="pgsql:host='".str_replace(":","' port='",addcslashes($M,"'\\"))."' client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$zh=$b->connectSsl();if(isset($zh["mode"]))$fc.=" sslmode='".$zh["mode"]."'";$this->dsn($fc,$V,$E);return
|
||
true;}function
|
||
select_db($Ib){global$b;return($b->database()==$Ib);}function
|
||
query($G,$yi=false){$I=parent::query($G,$yi);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}function
|
||
warnings(){return'';}function
|
||
close(){}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$fg=array("PgSQL","PDO_PgSQL");static$be="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
|
||
__construct($f){parent::__construct($f);$this->types=array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Strings']["json"]=4294967295;if(min_version(9.4,0,$f))$this->types['Strings']["jsonb"]=4294967295;}$this->editFunctions=array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));if(min_version(12,0,$f))$this->generated=array("STORED");}function
|
||
enumLength($n){$sc=$this->types['User types'][$n["type"]];return($sc?type_values($sc):"");}function
|
||
setUserTypes($xi){$this->types['User types']=array_flip($xi);}function
|
||
insertUpdate($Q,$K,$F){global$f;foreach($K
|
||
as$N){$Fi=array();$Z=array();foreach($N
|
||
as$y=>$X){$Fi[]="$y = $X";if(isset($F[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Fi)." WHERE ".implode(" AND ",$Z))&&$f->affected_rows)||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")")))return
|
||
false;}return
|
||
true;}function
|
||
slowQuery($G,$bi){$this->conn->query("SET statement_timeout = ".(1000*$bi));$this->conn->timeout=1000*$bi;return$G;}function
|
||
convertSearch($v,$X,$n){$Yh="char|text";if(strpos($X["op"],"LIKE")===false)$Yh.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Yh~",$n["type"])?$v:"CAST($v AS text)");}function
|
||
quoteBinary($Qg){return"'\\x".bin2hex($Qg)."'";}function
|
||
warnings(){return$this->conn->warnings();}function
|
||
tableHelp($B,$Zd=false){$te=array("information_schema"=>"infoschema","pg_catalog"=>($Zd?"view":"catalog"),);$_=$te[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".html";}function
|
||
supportsIndex($R){return$R["Engine"]!="view";}function
|
||
hasCStyleEscapes(){static$Oa;if($Oa===null)$Oa=($this->conn->result("SHOW standard_conforming_strings")=="off");return$Oa;}}function
|
||
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
|
||
table($v){return
|
||
idf_escape($v);}function
|
||
connect($Ab){global$Zb;$f=new
|
||
Db;if($f->connect($Ab[0],$Ab[1],$Ab[2])){if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");$yb=$f->result("SHOW crdb_version");$f->server_info.=($yb?"-".preg_replace('~ \(.*~','',$yb):"");$f->cockroach=preg_match('~CockroachDB~',$f->server_info);if($f->cockroach)$Zb[DRIVER]="CockroachDB";return$f;}return$f->error;}function
|
||
get_databases(){return
|
||
get_vals("SELECT datname FROM pg_database
|
||
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
|
||
ORDER BY datname");}function
|
||
limit($G,$Z,$z,$C=0,$ch=" "){return" $G$Z".($z!==null?$ch."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($Q,$G,$Z,$ch="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$ch):" $G".(is_view(table_status1($Q))?$Z:$ch."WHERE ctid = (SELECT ctid FROM ".table($Q).$Z.$ch."LIMIT 1)"));}function
|
||
db_collation($j,$gb){return
|
||
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}function
|
||
engines(){return
|
||
array();}function
|
||
logged_user(){return
|
||
get_val("SELECT user");}function
|
||
tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$G.="
|
||
UNION ALL
|
||
SELECT matviewname, 'MATERIALIZED VIEW'
|
||
FROM pg_matviews
|
||
WHERE schemaname = current_schema()";$G.="
|
||
ORDER BY 1";return
|
||
get_key_vals($G);}function
|
||
count_tables($i){global$f;$I=array();foreach($i
|
||
as$j){if($f->select_db($j))$I[$j]=count(tables_list());}return$I;}function
|
||
table_status($B=""){static$vd;if($vd===null)$vd=get_val("SELECT 'pg_table_size'::regproc");$I=array();foreach(get_rows("SELECT
|
||
c.relname AS \"Name\",
|
||
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\"".($vd?",
|
||
pg_table_size(c.oid) AS \"Data_length\",
|
||
pg_indexes_size(c.oid) AS \"Index_length\"":"").",
|
||
obj_description(c.oid, 'pg_class') AS \"Comment\",
|
||
".(min_version(12)?"''":"CASE WHEN c.relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
|
||
c.reltuples as \"Rows\",
|
||
n.nspname
|
||
FROM pg_class c
|
||
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
|
||
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
|
||
".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return($B!=""?$I[$B]:$I);}function
|
||
is_view($R){return
|
||
in_array($R["Engine"],array("view","materialized view"));}function
|
||
fk_support($R){return
|
||
true;}function
|
||
fields($Q){$I=array();$ta=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
|
||
a.attname AS field,
|
||
format_type(a.atttypid, a.atttypmod) AS full_type,
|
||
pg_get_expr(d.adbin, d.adrelid) AS default,
|
||
a.attnotnull::int,
|
||
col_description(c.oid, a.attnum) AS comment".(min_version(10)?",
|
||
a.attidentity".(min_version(12)?",
|
||
a.attgenerated":""):"")."
|
||
FROM pg_class c
|
||
JOIN pg_namespace n ON c.relnamespace = n.oid
|
||
JOIN pg_attribute a ON c.oid = a.attrelid
|
||
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
|
||
WHERE c.relname = ".q($Q)."
|
||
AND n.nspname = current_schema()
|
||
AND NOT a.attisdropped
|
||
AND a.attnum > 0
|
||
ORDER BY a.attnum")as$J){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$J["full_type"],$A);list(,$U,$qe,$J["length"],$na,$va)=$A;$J["length"].=$va;$Va=$U.$na;if(isset($ta[$Va])){$J["type"]=$ta[$Va];$J["full_type"]=$J["type"].$qe.$va;}else{$J["type"]=$U;$J["full_type"]=$J["type"].$qe.$na.$va;}if(in_array($J['attidentity'],array('a','d')))$J['default']='GENERATED '.($J['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$J["generated"]=($J["attgenerated"]=="s"?"STORED":"");$J["null"]=!$J["attnotnull"];$J["auto_increment"]=$J['attidentity']||preg_match('~^nextval\(~i',$J["default"])||preg_match('~^unique_rowid\(~',$J["default"]);$J["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(preg_match('~(.+)::[^,)]+(.*)~',$J["default"],$A))$J["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$I[$J["field"]]=$J;}return$I;}function
|
||
indexes($Q,$g=null){global$f;if(!is_object($g))$g=$f;$I=array();$Mh=$g->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($Q));$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Mh AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial
|
||
FROM pg_index i, pg_class ci
|
||
WHERE i.indrelid = $Mh AND ci.oid = i.indexrelid
|
||
ORDER BY indisprimary DESC, indisunique DESC",$g)as$J){$Dg=$J["relname"];$I[$Dg]["type"]=($J["indispartial"]?"INDEX":($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX")));$I[$Dg]["columns"]=array();$I[$Dg]["descs"]=array();if($J["indkey"]){foreach(explode(" ",$J["indkey"])as$Ld)$I[$Dg]["columns"][]=$e[$Ld];foreach(explode(" ",$J["indoption"])as$Md)$I[$Dg]["descs"][]=($Md&1?'1':null);}$I[$Dg]["lengths"]=array();}return$I;}function
|
||
foreign_keys($Q){global$l;$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
|
||
FROM pg_constraint
|
||
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($Q)." AND pn.nspname = current_schema())
|
||
AND contype = 'f'::char
|
||
ORDER BY conkey, conname")as$J){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$A)){$J['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$ze)){$J['ns']=idf_unescape($ze[2]);$J['table']=idf_unescape($ze[4]);}$J['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$J['on_delete']=(preg_match("~ON DELETE ($l->onActions)~",$A[4],$ze)?$ze[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE ($l->onActions)~",$A[4],$ze)?$ze[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function
|
||
view($B){return
|
||
array("select"=>trim(get_val("SELECT pg_get_viewdef(".get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($B)).")")));}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="information_schema";}function
|
||
error(){global$f;$I=h($f->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$A))$I=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
|
||
nl_br($I);}function
|
||
create_database($j,$fb){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($fb?" ENCODING ".idf_escape($fb):""));}function
|
||
drop_databases($i){global$f;$f->close();return
|
||
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
|
||
rename_database($B,$fb){global$f;$f->close();return
|
||
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
|
||
auto_increment(){return"";}function
|
||
alter_table($Q,$B,$o,$ad,$lb,$qc,$fb,$_a,$Tf){$c=array();$sg=array();if($Q!=""&&$Q!=$B)$sg[]="ALTER TABLE ".table($Q)." RENAME TO ".table($B);$dh="";foreach($o
|
||
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$c[]="DROP $d";else{$Pi=$X[5];unset($X[5]);if($n[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$c[]=($Q!=""?"ADD ":" ").implode($X);if(isset($X[6]))$c[]=($Q!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$sg[]="ALTER TABLE ".table($B)." RENAME $d TO $X[0]";$c[]="ALTER $d TYPE$X[1]";$eh=$Q."_".idf_unescape($X[0])."_seq";$c[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($eh).")":"DROP DEFAULT"));if(isset($X[6]))$dh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($eh)." OWNED BY ".idf_escape($Q).".$X[0]";$c[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($n[0]!=""||$Pi!="")$sg[]="COMMENT ON COLUMN ".table($B).".$X[0] IS ".($Pi!=""?substr($Pi,9):"''");}}$c=array_merge($c,$ad);if($Q=="")array_unshift($sg,"CREATE TABLE ".table($B)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($sg,"ALTER TABLE ".table($Q)."\n".implode(",\n",$c));if($dh)array_unshift($sg,$dh);if($lb!==null)$sg[]="COMMENT ON TABLE ".table($B)." IS ".q($lb);foreach($sg
|
||
as$G){if(!queries($G))return
|
||
false;}return
|
||
true;}function
|
||
alter_indexes($Q,$c){$h=array();$ac=array();$sg=array();foreach($c
|
||
as$X){if($X[0]!="INDEX")$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$ac[]=idf_escape($X[1]);else$sg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($h)array_unshift($sg,"ALTER TABLE ".table($Q).implode(",",$h));if($ac)array_unshift($sg,"DROP INDEX ".implode(", ",$ac));foreach($sg
|
||
as$G){if(!queries($G))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($S){return
|
||
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$S)));}function
|
||
drop_views($Vi){return
|
||
drop_tables($Vi);}function
|
||
drop_tables($S){foreach($S
|
||
as$Q){$O=table_status($Q);if(!queries("DROP ".strtoupper($O["Engine"])." ".table($Q)))return
|
||
false;}return
|
||
true;}function
|
||
move_tables($S,$Vi,$Th){foreach(array_merge($S,$Vi)as$Q){$O=table_status($Q);if(!queries("ALTER ".strtoupper($O["Engine"])." ".table($Q)." SET SCHEMA ".idf_escape($Th)))return
|
||
false;}return
|
||
true;}function
|
||
trigger($B,$Q){if($B=="")return
|
||
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q)." AND trigger_name = ".q($B);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$J)$e[]=$J["event_object_column"];$I=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement"
|
||
FROM information_schema.triggers'."
|
||
$Z
|
||
ORDER BY event_manipulation DESC")as$J){if($e&&$J["Event"]=="UPDATE")$J["Event"].=" OF";$J["Of"]=implode(", ",$e);if($I)$J["Event"].=" OR $I[Event]";$I=$J;}return$I;}function
|
||
triggers($Q){$I=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q))as$J){$ri=trigger($J["trigger_name"],$Q);$I[$ri["Trigger"]]=array($ri["Timing"],$ri["Event"]);}return$I;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
|
||
routine($B,$U){$K=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = current_schema() AND specific_name = '.q($B));$I=$K[0];$I["returns"]=array("type"=>$I["type_udt_name"]);$I["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||
FROM information_schema.parameters
|
||
WHERE specific_schema = current_schema() AND specific_name = '.q($B).'
|
||
ORDER BY ordinal_position');return$I;}function
|
||
routines(){return
|
||
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = current_schema()
|
||
ORDER BY SPECIFIC_NAME');}function
|
||
routine_languages(){return
|
||
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
|
||
routine_id($B,$J){$I=array();foreach($J["fields"]as$n)$I[]=$n["type"];return
|
||
idf_escape($B)."(".implode(", ",$I).")";}function
|
||
last_id(){return
|
||
0;}function
|
||
explain($f,$G){return$f->query("EXPLAIN $G");}function
|
||
found_rows($R,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($R["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Cg))return$Cg[1];return
|
||
false;}function
|
||
types(){return
|
||
get_key_vals("SELECT oid, typname
|
||
FROM pg_type
|
||
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
||
AND typtype IN ('b','d','e')
|
||
AND typelem = 0");}function
|
||
type_values($u){$vc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $u ORDER BY enumsortorder");return($vc?"'".implode("', '",array_map('addslashes',$vc))."'":"");}function
|
||
schemas(){return
|
||
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
|
||
get_schema(){return
|
||
get_val("SELECT current_schema()");}function
|
||
set_schema($Sg,$g=null){global$f,$l;if(!$g)$g=$f;$I=$g->query("SET search_path TO ".idf_escape($Sg));$l->setUserTypes(types());return$I;}function
|
||
foreign_keys_sql($Q){$I="";$O=table_status($Q);$Xc=foreign_keys($Q);ksort($Xc);foreach($Xc
|
||
as$Wc=>$Vc)$I.="ALTER TABLE ONLY ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." ADD CONSTRAINT ".idf_escape($Wc)." $Vc[definition] ".($Vc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($I?"$I\n":$I);}function
|
||
create_sql($Q,$_a,$Dh){global$l;$Ig=array();$fh=array();$O=table_status($Q);if(is_view($O)){$Ui=view($Q);return
|
||
rtrim("CREATE VIEW ".idf_escape($Q)." AS $Ui[select]",";");}$o=fields($Q);if(!$O||empty($o))return
|
||
false;$I="CREATE TABLE ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." (\n ";foreach($o
|
||
as$n){$Qf=idf_escape($n['field']).' '.$n['full_type'].default_value($n).($n['attnotnull']?" NOT NULL":"");$Ig[]=$Qf;if(preg_match('~nextval\(\'([^\']+)\'\)~',$n['default'],$Ae)){$eh=$Ae[1];$th=reset(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($eh)):"SELECT * FROM $eh"),null,"-- "));$fh[]=($Dh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $eh;\n":"")."CREATE SEQUENCE $eh INCREMENT $th[increment_by] MINVALUE $th[min_value] MAXVALUE $th[max_value]".($_a&&$th['last_value']?" START ".($th["last_value"]+1):"")." CACHE $th[cache_value];";}}if(!empty($fh))$I=implode("\n\n",$fh)."\n\n$I";$F="";foreach(indexes($Q)as$Jd=>$w){if($w['type']=='PRIMARY'){$F=$Jd;$Ig[]="CONSTRAINT ".idf_escape($Jd)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$w['columns'])).")";}}foreach($l->checkConstraints($Q)as$qb=>$sb)$Ig[]="CONSTRAINT ".idf_escape($qb)." CHECK $sb";$I.=implode(",\n ",$Ig)."\n) WITH (oids = ".($O['Oid']?'true':'false').");";if($O['Comment'])$I.="\n\nCOMMENT ON TABLE ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." IS ".q($O['Comment']).";";foreach($o
|
||
as$Pc=>$n){if($n['comment'])$I.="\n\nCOMMENT ON COLUMN ".idf_escape($O['nspname']).".".idf_escape($O['Name']).".".idf_escape($Pc)." IS ".q($n['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($Q).($F?" AND indexname != ".q($F):""),null,"-- ")as$J)$I.="\n\n$J[indexdef];";return
|
||
rtrim($I,';');}function
|
||
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
|
||
trigger_sql($Q){$O=table_status($Q);$I="";foreach(triggers($Q)as$qi=>$pi){$ri=trigger($qi,$O['Name']);$I.="\nCREATE TRIGGER ".idf_escape($ri['Trigger'])." $ri[Timing] $ri[Event] ON ".idf_escape($O["nspname"]).".".idf_escape($O['Name'])." $ri[Type] $ri[Statement];;\n";}return$I;}function
|
||
use_sql($Ib){return"\connect ".idf_escape($Ib);}function
|
||
show_variables(){return
|
||
get_key_vals("SHOW ALL");}function
|
||
process_list(){return
|
||
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
|
||
convert_field($n){}function
|
||
unconvert_field($n,$I){return$I;}function
|
||
support($Nc){global$f;return
|
||
preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|sequence|trigger|type|variables|drop_col'.($f->cockroach?'':'|processlist').'|kill|dump)$~',$Nc);}function
|
||
kill_process($X){return
|
||
queries("SELECT pg_terminate_backend(".number($X).")");}function
|
||
connection_id(){return"SELECT pg_backend_pid()";}function
|
||
max_connections(){return
|
||
get_val("SHOW max_connections");}}$Zb["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")){class
|
||
Db{var$extension="oci8",$server_info,$affected_rows,$errno,$error;var$_current_db;private$link,$result;function
|
||
_error($wc,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
|
||
connect($M,$V,$E){$this->link=@oci_new_connect($V,$E,$M,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return
|
||
true;}$m=oci_error();$this->error=$m["message"];return
|
||
false;}function
|
||
quote($P){return"'".str_replace("'","''",$P)."'";}function
|
||
select_db($Ib){$this->_current_db=$Ib;return
|
||
true;}function
|
||
query($G,$yi=false){$H=oci_parse($this->link,$G);$this->error="";if(!$H){$m=oci_error($this->link);$this->errno=$m["code"];$this->error=$m["message"];return
|
||
false;}set_error_handler(array($this,'_error'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return
|
||
new
|
||
Result($H);$this->affected_rows=oci_num_rows($H);oci_free_statement($H);}return$I;}function
|
||
multi_query($G){return$this->result=$this->query($G);}function
|
||
store_result(){return$this->result;}function
|
||
next_result(){return
|
||
false;}function
|
||
result($G,$n=0){$H=$this->query($G);return(is_object($H)?$H->fetch_column($n):false);}}class
|
||
Result{var$num_rows;private$result,$offset=1;function
|
||
__construct($H){$this->result=$H;}private
|
||
function
|
||
convert($J){foreach((array)$J
|
||
as$y=>$X){if(is_a($X,'OCI-Lob'))$J[$y]=$X->load();}return$J;}function
|
||
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
|
||
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
|
||
fetch_column($n){return(oci_fetch($this->result)?oci_result($this->result,$n+1):false);}function
|
||
fetch_field(){$d=$this->offset++;$I=new
|
||
\stdClass;$I->name=oci_field_name($this->result,$d);$I->orgname=$I->name;$I->type=oci_field_type($this->result,$d);$I->charsetnr=(preg_match("~raw|blob|bfile~",$I->type)?63:0);return$I;}function
|
||
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_OCI";var$_current_db;function
|
||
connect($M,$V,$E){$this->dsn("oci:dbname=//$M;charset=AL32UTF8",$V,$E);return
|
||
true;}function
|
||
select_db($Ib){$this->_current_db=$Ib;return
|
||
true;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$fg=array("OCI8","PDO_OCI");static$be="oracle";var$editFunctions=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
|
||
__construct($f){parent::__construct($f);$this->types=array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
|
||
begin(){return
|
||
true;}function
|
||
insertUpdate($Q,$K,$F){global$f;foreach($K
|
||
as$N){$Fi=array();$Z=array();foreach($N
|
||
as$y=>$X){$Fi[]="$y = $X";if(isset($F[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Fi)." WHERE ".implode(" AND ",$Z))&&$f->affected_rows)||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")")))return
|
||
false;}return
|
||
true;}function
|
||
hasCStyleEscapes(){return
|
||
true;}}function
|
||
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
|
||
table($v){return
|
||
idf_escape($v);}function
|
||
connect($Ab){$f=new
|
||
Db;if($f->connect($Ab[0],$Ab[1],$Ab[2]))return$f;return$f->error;}function
|
||
get_databases(){return
|
||
get_vals("SELECT DISTINCT tablespace_name FROM (
|
||
SELECT tablespace_name FROM user_tablespaces
|
||
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
|
||
)
|
||
ORDER BY 1");}function
|
||
limit($G,$Z,$z,$C=0,$ch=" "){return($C?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($z+$C).") WHERE rnum > $C":($z!==null?" * FROM (SELECT $G$Z) WHERE rownum <= ".($z+$C):" $G$Z"));}function
|
||
limit1($Q,$G,$Z,$ch="\n"){return" $G$Z";}function
|
||
db_collation($j,$gb){return
|
||
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
|
||
engines(){return
|
||
array();}function
|
||
logged_user(){return
|
||
get_val("SELECT USER FROM DUAL");}function
|
||
get_current_db(){global$f;$j=$f->_current_db?:DB;unset($f->_current_db);return$j;}function
|
||
where_owner($hg,$Kf="owner"){if(!$_GET["ns"])return'';return"$hg$Kf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
|
||
views_table($e){$Kf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Kf?:"rownum < 0").")";}function
|
||
tables_list(){$Ui=views_table("view_name");$Kf=where_owner(" AND ");return
|
||
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Kf
|
||
UNION SELECT view_name, 'view' FROM $Ui
|
||
ORDER BY 1");}function
|
||
count_tables($i){$I=array();foreach($i
|
||
as$j)$I[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$I;}function
|
||
table_status($B=""){$I=array();$Vg=q($B);$j=get_current_db();$Ui=views_table("view_name");$Kf=where_owner(" AND ");foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q($j).$Kf.($B!=""?" AND table_name = $Vg":"")."
|
||
UNION SELECT view_name, 'view', 0, 0 FROM $Ui".($B!=""?" WHERE view_name = $Vg":"")."
|
||
ORDER BY 1")as$J){if($B!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
|
||
is_view($R){return$R["Engine"]=="view";}function
|
||
fk_support($R){return
|
||
true;}function
|
||
fields($Q){$I=array();$Kf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($Q)."$Kf ORDER BY column_id")as$J){$U=$J["DATA_TYPE"];$qe="$J[DATA_PRECISION],$J[DATA_SCALE]";if($qe==",")$qe=$J["CHAR_COL_DECL_LENGTH"];$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$U.($qe?"($qe)":""),"type"=>strtolower($U),"length"=>$qe,"default"=>$J["DATA_DEFAULT"],"null"=>($J["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$I;}function
|
||
indexes($Q,$g=null){$I=array();$Kf=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
|
||
FROM all_ind_columns aic
|
||
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
|
||
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
|
||
WHERE aic.table_name = ".q($Q)."$Kf
|
||
ORDER BY ac.constraint_type, aic.column_position",$g)as$J){$Jd=$J["INDEX_NAME"];$ib=$J["DATA_DEFAULT"];$ib=($ib?trim($ib,'"'):$J["COLUMN_NAME"]);$I[$Jd]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Jd]["columns"][]=$ib;$I[$Jd]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Jd]["descs"][]=($J["DESCEND"]&&$J["DESCEND"]=="DESC"?'1':null);}return$I;}function
|
||
view($B){$Ui=views_table("view_name, text");$K=get_rows('SELECT text "select" FROM '.$Ui.' WHERE view_name = '.q($B));return
|
||
reset($K);}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){global$f;return
|
||
h($f->error);}function
|
||
explain($f,$G){$f->query("EXPLAIN PLAN FOR $G");return$f->query("SELECT * FROM plan_table");}function
|
||
found_rows($R,$Z){}function
|
||
auto_increment(){return"";}function
|
||
alter_table($Q,$B,$o,$ad,$lb,$qc,$fb,$_a,$Tf){$c=$ac=array();$Df=($Q?fields($Q):array());foreach($o
|
||
as$n){$X=$n[1];if($X&&$n[0]!=""&&idf_escape($n[0])!=$X[0])queries("ALTER TABLE ".table($Q)." RENAME COLUMN ".idf_escape($n[0])." TO $X[0]");$Cf=$Df[$n[0]];if($X&&$Cf){$hf=process_field($Cf,$Cf);if($X[2]==$hf[2])$X[2]="";}if($X)$c[]=($Q!=""?($n[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($Q!=""?")":"");else$ac[]=idf_escape($n[0]);}if($Q=="")return
|
||
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($Q)."\n".implode("\n",$c)))&&(!$ac||queries("ALTER TABLE ".table($Q)." DROP (".implode(", ",$ac).")"))&&($Q==$B||queries("ALTER TABLE ".table($Q)." RENAME TO ".table($B)));}function
|
||
alter_indexes($Q,$c){$ac=array();$sg=array();foreach($c
|
||
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($sg,"ALTER TABLE ".table($Q).$h);}elseif($X[2]=="DROP")$ac[]=idf_escape($X[1]);else$sg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($ac)array_unshift($sg,"DROP INDEX ".implode(", ",$ac));foreach($sg
|
||
as$G){if(!queries($G))return
|
||
false;}return
|
||
true;}function
|
||
foreign_keys($Q){$I=array();$G="SELECT c_list.CONSTRAINT_NAME as NAME,
|
||
c_src.COLUMN_NAME as SRC_COLUMN,
|
||
c_dest.OWNER as DEST_DB,
|
||
c_dest.TABLE_NAME as DEST_TABLE,
|
||
c_dest.COLUMN_NAME as DEST_COLUMN,
|
||
c_list.DELETE_RULE as ON_DELETE
|
||
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
|
||
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
|
||
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
|
||
AND c_list.CONSTRAINT_TYPE = 'R'
|
||
AND c_src.TABLE_NAME = ".q($Q);foreach(get_rows($G)as$J)$I[$J['NAME']]=array("db"=>$J['DEST_DB'],"table"=>$J['DEST_TABLE'],"source"=>array($J['SRC_COLUMN']),"target"=>array($J['DEST_COLUMN']),"on_delete"=>$J['ON_DELETE'],"on_update"=>null,);return$I;}function
|
||
truncate_tables($S){return
|
||
apply_queries("TRUNCATE TABLE",$S);}function
|
||
drop_views($Vi){return
|
||
apply_queries("DROP VIEW",$Vi);}function
|
||
drop_tables($S){return
|
||
apply_queries("DROP TABLE",$S);}function
|
||
last_id(){return
|
||
0;}function
|
||
schemas(){$I=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($I?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
|
||
get_schema(){return
|
||
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
|
||
set_schema($Ug,$g=null){global$f;if(!$g)$g=$f;return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Ug));}function
|
||
show_variables(){return
|
||
get_key_vals('SELECT name, display_value FROM v$parameter');}function
|
||
process_list(){return
|
||
get_rows('SELECT
|
||
sess.process AS "process",
|
||
sess.username AS "user",
|
||
sess.schemaname AS "schema",
|
||
sess.status AS "status",
|
||
sess.wait_class AS "wait_class",
|
||
sess.seconds_in_wait AS "seconds_in_wait",
|
||
sql.sql_text AS "sql_text",
|
||
sess.machine AS "machine",
|
||
sess.port AS "port"
|
||
FROM v$session sess LEFT OUTER JOIN v$sql sql
|
||
ON sql.sql_id = sess.sql_id
|
||
WHERE sess.type = \'USER\'
|
||
ORDER BY PROCESS
|
||
');}function
|
||
show_status(){$K=get_rows('SELECT * FROM v$instance');return
|
||
reset($K);}function
|
||
convert_field($n){}function
|
||
unconvert_field($n,$I){return$I;}function
|
||
support($Nc){return
|
||
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Nc);}}$Zb["mssql"]="MS SQL";if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")){class
|
||
Db{var$extension="sqlsrv",$server_info,$affected_rows,$errno,$error;private$link,$result;private
|
||
function
|
||
get_error(){$this->error="";foreach(sqlsrv_errors()as$m){$this->errno=$m["code"];$this->error.="$m[message]\n";}$this->error=rtrim($this->error);}function
|
||
connect($M,$V,$E){global$b;$rb=array("UID"=>$V,"PWD"=>$E,"CharacterSet"=>"UTF-8");$zh=$b->connectSsl();if(isset($zh["Encrypt"]))$rb["Encrypt"]=$zh["Encrypt"];if(isset($zh["TrustServerCertificate"]))$rb["TrustServerCertificate"]=$zh["TrustServerCertificate"];$j=$b->database();if($j!="")$rb["Database"]=$j;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$M),$rb);if($this->link){$Nd=sqlsrv_server_info($this->link);$this->server_info=$Nd['SQLServerVersion'];}else$this->get_error();return(bool)$this->link;}function
|
||
quote($P){$zi=strlen($P)!=strlen(utf8_decode($P));return($zi?"N":"")."'".str_replace("'","''",$P)."'";}function
|
||
select_db($Ib){return$this->query(use_sql($Ib));}function
|
||
query($G,$yi=false){$H=sqlsrv_query($this->link,$G);$this->error="";if(!$H){$this->get_error();return
|
||
false;}return$this->store_result($H);}function
|
||
multi_query($G){$this->result=sqlsrv_query($this->link,$G);$this->error="";if(!$this->result){$this->get_error();return
|
||
false;}return
|
||
true;}function
|
||
store_result($H=null){if(!$H)$H=$this->result;if(!$H)return
|
||
false;if(sqlsrv_field_metadata($H))return
|
||
new
|
||
Result($H);$this->affected_rows=sqlsrv_rows_affected($H);return
|
||
true;}function
|
||
next_result(){return$this->result?sqlsrv_next_result($this->result):null;}function
|
||
result($G,$n=0){$H=$this->query($G);if(!is_object($H))return
|
||
false;$J=$H->fetch_row();return$J[$n];}}class
|
||
Result{var$num_rows;private$result,$offset=0,$fields;function
|
||
__construct($H){$this->result=$H;}private
|
||
function
|
||
convert($J){foreach((array)$J
|
||
as$y=>$X){if(is_a($X,'DateTime'))$J[$y]=$X->format("Y-m-d H:i:s");}return$J;}function
|
||
fetch_assoc(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_ASSOC));}function
|
||
fetch_row(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_NUMERIC));}function
|
||
fetch_field(){if(!$this->fields)$this->fields=sqlsrv_field_metadata($this->result);$n=$this->fields[$this->offset++];$I=new
|
||
\stdClass;$I->name=$n["Name"];$I->orgname=$n["Name"];$I->type=($n["Type"]==1?254:0);return$I;}function
|
||
seek($C){for($t=0;$t<$C;$t++)sqlsrv_fetch($this->result);}function
|
||
__destruct(){sqlsrv_free_stmt($this->result);}}}elseif(extension_loaded("pdo_sqlsrv")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_SQLSRV";function
|
||
connect($M,$V,$E){$this->dsn("sqlsrv:Server=".str_replace(":",",",$M),$V,$E);return
|
||
true;}function
|
||
select_db($Ib){return$this->query(use_sql($Ib));}}}elseif(extension_loaded("pdo_dblib")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_DBLIB";function
|
||
connect($M,$V,$E){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$M)),$V,$E);return
|
||
true;}function
|
||
select_db($Ib){return$this->query(use_sql($Ib));}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$fg=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$be="mssql";var$editFunctions=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$generated=array("PERSISTED","VIRTUAL");function
|
||
__construct($f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
|
||
insertUpdate($Q,$K,$F){$o=fields($Q);$Fi=array();$Z=array();$N=reset($K);$e="c".implode(", c",range(1,count($N)));$Na=0;$Rd=array();foreach($N
|
||
as$y=>$X){$Na++;$B=idf_unescape($y);if(!$o[$B]["auto_increment"])$Rd[$y]="c$Na";if(isset($F[$B]))$Z[]="$y = c$Na";else$Fi[]="$y = c$Na";}$Qi=array();foreach($K
|
||
as$N)$Qi[]="(".implode(", ",$N).")";if($Z){$Dd=queries("SET IDENTITY_INSERT ".table($Q)." ON");$I=queries("MERGE ".table($Q)." USING (VALUES\n\t".implode(",\n\t",$Qi)."\n) AS source ($e) ON ".implode(" AND ",$Z).($Fi?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$Fi):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Dd?$N:$Rd)).") VALUES (".($Dd?$e:implode(", ",$Rd)).");");if($Dd)queries("SET IDENTITY_INSERT ".table($Q)." OFF");}else$I=queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES\n".implode(",\n",$Qi));return$I;}function
|
||
begin(){return
|
||
queries("BEGIN TRANSACTION");}function
|
||
tableHelp($B,$Zd=false){$te=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$te[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($B))."-transact-sql";}}function
|
||
idf_escape($v){return"[".str_replace("]","]]",$v)."]";}function
|
||
table($v){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($v);}function
|
||
connect($Ab){$f=new
|
||
Db;if($Ab[0]=="")$Ab[0]="localhost:1433";if($f->connect($Ab[0],$Ab[1],$Ab[2]))return$f;return$f->error;}function
|
||
get_databases(){return
|
||
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
|
||
limit($G,$Z,$z,$C=0,$ch=" "){return($z!==null?" TOP (".($z+$C).")":"")." $G$Z";}function
|
||
limit1($Q,$G,$Z,$ch="\n"){return
|
||
limit($G,$Z,1,0,$ch);}function
|
||
db_collation($j,$gb){return
|
||
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function
|
||
engines(){return
|
||
array();}function
|
||
logged_user(){return
|
||
get_val("SELECT SUSER_NAME()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
|
||
count_tables($i){global$f;$I=array();foreach($i
|
||
as$j){$f->select_db($j);$I[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function
|
||
table_status($B=""){$I=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment
|
||
FROM sys.all_objects AS ao
|
||
WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$J){if($B!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
|
||
is_view($R){return$R["Engine"]=="VIEW";}function
|
||
fk_support($R){return
|
||
true;}function
|
||
fields($Q){$nb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($Q).", 'column', NULL)");$I=array();$Kh=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($Q));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default], d.name default_constraint, i.is_primary_key
|
||
FROM sys.all_columns c
|
||
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id
|
||
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
||
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
|
||
WHERE c.object_id = ".q($Kh))as$J){$U=$J["type"];$qe=(preg_match("~char|binary~",$U)?$J["max_length"]/($U[0]=='n'?2:1):($U=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$U.($qe?"($qe)":""),"type"=>$U,"length"=>$qe,"default"=>(preg_match("~^\('(.*)'\)$~",$J["default"],$A)?str_replace("''","'",$A[1]):$J["default"]),"default_constraint"=>$J["default_constraint"],"null"=>$J["is_nullable"],"auto_increment"=>$J["is_identity"],"collation"=>$J["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$J["is_primary_key"],"comment"=>$nb[$J["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Kh))as$J){$I[$J["name"]]["generated"]=($J["is_persisted"]?"PERSISTED":"VIRTUAL");$I[$J["name"]]["default"]=$J["definition"];}return$I;}function
|
||
indexes($Q,$g=null){$I=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
|
||
FROM sys.indexes i
|
||
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
|
||
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
|
||
WHERE OBJECT_NAME(i.object_id) = ".q($Q),$g)as$J){$B=$J["name"];$I[$B]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$B]["lengths"]=array();$I[$B]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$B]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?'1':null);}return$I;}function
|
||
view($B){return
|
||
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($B))));}function
|
||
collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$fb)$I[preg_replace('~_.*~','',$fb)][]=$fb;return$I;}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){global$f;return
|
||
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$f->error)));}function
|
||
create_database($j,$fb){return
|
||
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$fb)?" COLLATE $fb":""));}function
|
||
drop_databases($i){return
|
||
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
|
||
rename_database($B,$fb){if(preg_match('~^[a-z0-9_]+$~i',$fb))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $fb");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($B));return
|
||
true;}function
|
||
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
alter_table($Q,$B,$o,$ad,$lb,$qc,$fb,$_a,$Tf){$c=array();$nb=array();$Df=fields($Q);foreach($o
|
||
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$c["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$nb[$n[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($n[0]=="")$c["ADD"][]="\n ".implode("",$X).($Q==""?substr($ad[$X[0]],16+strlen($X[0])):"");else{$k=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($Q).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$X)][]="";$Cf=$Df[$n[0]];if(default_value($Cf)!=$k){if($Cf["default"]!==null)$c["DROP"][]=" ".idf_escape($Cf["default_constraint"]);if($k)$c["ADD"][]="\n $k FOR $d";}}}}if($Q=="")return
|
||
queries("CREATE TABLE ".table($B)." (".implode(",",(array)$c["ADD"])."\n)");if($Q!=$B)queries("EXEC sp_rename ".q(table($Q)).", ".q($B));if($ad)$c[""]=$ad;foreach($c
|
||
as$y=>$X){if(!queries("ALTER TABLE ".table($B)." $y".implode(",",$X)))return
|
||
false;}foreach($nb
|
||
as$y=>$X){$lb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($B).", @level2type = N'Column', @level2name = ".q($y));queries("EXEC sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = $lb,
|
||
@level0type = N'Schema',
|
||
@level0name = ".q(get_schema()).",
|
||
@level1type = N'Table',
|
||
@level1name = ".q($B).",
|
||
@level2type = N'Column',
|
||
@level2name = ".q($y));}return
|
||
true;}function
|
||
alter_indexes($Q,$c){$w=array();$ac=array();foreach($c
|
||
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$ac[]=idf_escape($X[1]);else$w[]=idf_escape($X[1])." ON ".table($Q);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q):"ALTER TABLE ".table($Q)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
|
||
false;}return(!$w||queries("DROP INDEX ".implode(", ",$w)))&&(!$ac||queries("ALTER TABLE ".table($Q)." DROP ".implode(", ",$ac)));}function
|
||
last_id(){return
|
||
get_val("SELECT SCOPE_IDENTITY()");}function
|
||
explain($f,$G){$f->query("SET SHOWPLAN_ALL ON");$I=$f->query($G);$f->query("SET SHOWPLAN_ALL OFF");return$I;}function
|
||
found_rows($R,$Z){}function
|
||
foreign_keys($Q){$I=array();$of=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($Q).", @fktable_owner = ".q(get_schema()))as$J){$q=&$I[$J["FK_NAME"]];$q["db"]=$J["PKTABLE_QUALIFIER"];$q["ns"]=$J["PKTABLE_OWNER"];$q["table"]=$J["PKTABLE_NAME"];$q["on_update"]=$of[$J["UPDATE_RULE"]];$q["on_delete"]=$of[$J["DELETE_RULE"]];$q["source"][]=$J["FKCOLUMN_NAME"];$q["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function
|
||
truncate_tables($S){return
|
||
apply_queries("TRUNCATE TABLE",$S);}function
|
||
drop_views($Vi){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Vi)));}function
|
||
drop_tables($S){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$S)));}function
|
||
move_tables($S,$Vi,$Th){return
|
||
apply_queries("ALTER SCHEMA ".idf_escape($Th)." TRANSFER",array_merge($S,$Vi));}function
|
||
trigger($B){if($B=="")return
|
||
array();$K=get_rows("SELECT s.name [Trigger],
|
||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
|
||
c.text
|
||
FROM sysobjects s
|
||
JOIN syscomments c ON s.id = c.id
|
||
WHERE s.xtype = 'TR' AND s.name = ".q($B));$I=reset($K);if($I)$I["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$I["text"]);return$I;}function
|
||
triggers($Q){$I=array();foreach(get_rows("SELECT sys1.name,
|
||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
|
||
FROM sysobjects sys1
|
||
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
|
||
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($Q))as$J)$I[$J["name"]]=array($J["Timing"],$J["Event"]);return$I;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
|
||
schemas(){return
|
||
get_vals("SELECT name FROM sys.schemas");}function
|
||
get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return
|
||
get_val("SELECT SCHEMA_NAME()");}function
|
||
set_schema($Sg){$_GET["ns"]=$Sg;return
|
||
true;}function
|
||
create_sql($Q,$_a,$Dh){global$l;if(is_view(table_status($Q))){$Ui=view($Q);return"CREATE VIEW ".table($Q)." AS $Ui[select]";}$o=array();$F=false;foreach(fields($Q)as$B=>$n){$X=process_field($n,$n);if($X[6])$F=true;$o[]=implode("",$X);}foreach(indexes($Q)as$B=>$w){if(!$F||$w["type"]!="PRIMARY"){$e=array();foreach($w["columns"]as$y=>$X)$e[]=idf_escape($X).($w["descs"][$y]?" DESC":"");$B=idf_escape($B);$o[]=($w["type"]=="INDEX"?"INDEX $B":"CONSTRAINT $B ".($w["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach($l->checkConstraints($Q)as$B=>$Ta)$o[]="CONSTRAINT ".idf_escape($B)." CHECK ($Ta)";return"CREATE TABLE ".table($Q)." (\n\t".implode(",\n\t",$o)."\n)";}function
|
||
foreign_keys_sql($Q){$o=array();foreach(foreign_keys($Q)as$ad)$o[]=ltrim(format_foreign_key($ad));return($o?"ALTER TABLE ".table($Q)." ADD\n\t".implode(",\n\t",$o).";\n\n":"");}function
|
||
truncate_sql($Q){return"TRUNCATE TABLE ".table($Q);}function
|
||
use_sql($Ib){return"USE ".idf_escape($Ib);}function
|
||
trigger_sql($Q){$I="";foreach(triggers($Q)as$B=>$ri)$I.=create_trigger(" ON ".table($Q),trigger($B)).";";return$I;}function
|
||
convert_field($n){}function
|
||
unconvert_field($n,$I){return$I;}function
|
||
support($Nc){return
|
||
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Nc);}}class
|
||
Adminer{var$operators;function
|
||
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'>Adminer</a>";}function
|
||
credentials(){return
|
||
array(SERVER,$_GET["username"],get_password());}function
|
||
connectSsl(){}function
|
||
permanentLogin($h=false){return
|
||
password_file($h);}function
|
||
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
|
||
serverName($M){return
|
||
h($M);}function
|
||
database(){return
|
||
DB;}function
|
||
databases($Yc=true){return
|
||
get_databases($Yc);}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
2;}function
|
||
headers(){}function
|
||
csp(){return
|
||
csp();}function
|
||
head($Fb=null){return
|
||
true;}function
|
||
css(){$I=array();foreach(array("","-dark")as$Qe){$p="adminer$Qe.css";if(file_exists($p))$I[]="$p?v=".crc32(file_get_contents($p));}return$I;}function
|
||
loginForm(){global$Zb;echo"<table class='layout'>\n",$this->loginFormField('driver','<tr><th>'.'System'.'<td>',html_select("auth[driver]",$Zb,DRIVER,"loginDriver(this);")),$this->loginFormField('server','<tr><th>'.'Server'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),$this->loginFormField('username','<tr><th>'.'Username'.'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("qs('#username').form['auth[driver]'].onchange();")),$this->loginFormField('password','<tr><th>'.'Password'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),$this->loginFormField('db','<tr><th>'.'Database'.'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
|
||
loginFormField($B,$yd,$Y){return$yd.$Y."\n";}function
|
||
login($ve,$E){if($E=="")return
|
||
sprintf('Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.',target_blank());return
|
||
true;}function
|
||
tableName($Jh){return
|
||
h($Jh["Name"]);}function
|
||
fieldName($n,$xf=0){return'<span title="'.h($n["full_type"].($n["comment"]!=""?" : $n[comment]":'')).'">'.h($n["field"]).'</span>';}function
|
||
selectLinks($Jh,$N=""){global$l;echo'<p class="links">';$te=array("select"=>'Select data');if(support("table")||support("indexes"))$te["table"]='Show structure';$Zd=false;if(support("table")){$Zd=is_view($Jh);if($Zd)$te["view"]='Alter view';else$te["create"]='Alter table';}if($N!==null)$te["edit"]='New item';$B=$Jh["Name"];foreach($te
|
||
as$y=>$X)echo" <a href='".h(ME)."$y=".urlencode($B).($y=="edit"?$N:"")."'".bold(isset($_GET[$y])).">$X</a>";echo
|
||
doc_link(array(JUSH=>$l->tableHelp($B,$Zd)),"?"),"\n";}function
|
||
foreignKeys($Q){return
|
||
foreign_keys($Q);}function
|
||
backwardKeys($Q,$Ih){return
|
||
array();}function
|
||
backwardKeysPrint($Da,$J){}function
|
||
selectQuery($G,$_h,$Lc=false){global$l;$I="</p>\n";if(!$Lc&&($Yi=$l->warnings())){$u="warnings";$I=", <a href='#$u'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."$I<div id='$u' class='hidden'>\n$Yi</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$G))."</code> <span class='time'>(".format_time($_h).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($G)."'>".'Edit'."</a>":"").$I;}function
|
||
sqlCommandQuery($G){return
|
||
shorten_utf8(trim($G),1000);}function
|
||
rowDescription($Q){return"";}function
|
||
rowDescriptions($K,$bd){return$K;}function
|
||
selectLink($X,$n){}function
|
||
selectVal($X,$_,$n,$Gf){$I=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$n["type"])&&!preg_match("~var~",$n["type"])?"<code>$X</code>":(preg_match('~json~',$n["type"])?"<code class='jush-js'>$X</code>":$X)));if(preg_match('~blob|bytea|raw|file~',$n["type"])&&!is_utf8($X))$I="<i>".lang(array('%d byte','%d bytes'),strlen($Gf))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$I</a>":$I);}function
|
||
editVal($X,$n){return$X;}function
|
||
tableStructurePrint($o){global$l;echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";$Ch=$l->structuredTypes();foreach($o
|
||
as$n){echo"<tr><th>".h($n["field"]);$U=h($n["full_type"]);echo"<td><span title='".h($n["collation"])."'>".(in_array($U,(array)$Ch['User types'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U)."</span>",($n["null"]?" <i>NULL</i>":""),($n["auto_increment"]?" <i>".'Auto Increment'."</i>":"");$k=h($n["default"]);echo(isset($n["default"])?" <span title='".'Default value'."'>[<b>".($n["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($n["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
|
||
tableIndexesPrint($x){echo"<table>\n";foreach($x
|
||
as$B=>$w){ksort($w["columns"]);$kg=array();foreach($w["columns"]as$y=>$X)$kg[]="<i>".h($X)."</i>".($w["lengths"][$y]?"(".$w["lengths"][$y].")":"").($w["descs"][$y]?" DESC":"");echo"<tr title='".h($B)."'><th>$w[type]<td>".implode(", ",$kg)."\n";}echo"</table>\n";}function
|
||
selectColumnsPrint($L,$e){global$l;print_fieldset("select",'Select',$L);$t=0;$L[""]=array();foreach($L
|
||
as$y=>$X){$X=$_GET["columns"][$y];$d=select_input(" name='columns[$t][col]'",$e,$X["col"],($y!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($l->functions||$l->grouping?html_select("columns[$t][fun]",array(-1=>"")+array_filter(array('Functions'=>$l->functions,'Aggregation'=>$l->grouping)),$X["fun"]).on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($y!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
|
||
selectSearchPrint($Z,$e,$x){print_fieldset("search",'Search',$Z);foreach($x
|
||
as$t=>$w){if($w["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$w["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h($_GET["fulltext"][$t])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"</div>\n";}$Ra="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)))echo"<div>".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$t][op]",$this->operators,$X["op"],$Ra),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Ra }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint($xf,$e,$x){print_fieldset("sort",'Sort',$xf);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),'descending')."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function
|
||
selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>","<input type='number' name='limit' class='size' value='".h($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
|
||
selectLengthPrint($Zh){if($Zh!==null)echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Zh)."'>","</div></fieldset>\n";}function
|
||
selectActionPrint($x){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script".nonce().">\n","var indexColumns = ";$e=array();foreach($x
|
||
as$w){$Eb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Eb)$e[$Eb]=1;}$e[""]=1;foreach($e
|
||
as$y=>$X)json_row($y);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
|
||
selectCommandPrint(){return!information_schema(DB);}function
|
||
selectImportPrint(){return!information_schema(DB);}function
|
||
selectEmailPrint($nc,$e){}function
|
||
selectColumnsProcess($e,$x){global$l;$L=array();$nd=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$l->functions)||in_array($X["fun"],$l->grouping)))){$L[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$l->grouping))$nd[]=$L[$y];}}return
|
||
array($L,$nd);}function
|
||
selectSearchProcess($o,$x){global$f,$l;$I=array();foreach($x
|
||
as$t=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$I[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$hg="";$ob=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Hd=process_length($X["val"]);$ob.=" ".($Hd!=""?$Hd:"(NULL)");}elseif($X["op"]=="SQL")$ob=" $X[val]";elseif($X["op"]=="LIKE %%")$ob=" LIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$ob=" ILIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$hg="$X[op](".q($X["val"]).", ";$ob=")";}elseif(!preg_match('~NULL$~',$X["op"]))$ob.=" ".$this->processInput($o[$X["col"]],$X["val"]);if($X["col"]!="")$I[]=$hg.$l->convertSearch(idf_escape($X["col"]),$X,$o[$X["col"]]).$ob;else{$hb=array();foreach($o
|
||
as$B=>$n){if(isset($n["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$n["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$n["type"]))&&(!preg_match('~date|timestamp~',$n["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$hb[]=$hg.$l->convertSearch(idf_escape($B),$X,$n).$ob;}$I[]=($hb?"(".implode(" OR ",$hb).")":"1 = 0");}}}return$I;}function
|
||
selectOrderProcess($o,$x){$I=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$I;}function
|
||
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
|
||
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
|
||
selectEmailProcess($Z,$bd){return
|
||
false;}function
|
||
selectQueryBuild($L,$Z,$nd,$xf,$z,$D){return"";}function
|
||
messageQuery($G,$ai,$Lc=false){global$l;restart_session();$zd=&get_session("queries");if(!$zd[$_GET["db"]])$zd[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$zd[$_GET["db"]][]=array($G,time(),$ai);$wh="sql-".count($zd[$_GET["db"]]);$I="<a href='#$wh' class='toggle'>".'SQL command'."</a>\n";if(!$Lc&&($Yi=$l->warnings())){$u="warnings-".count($zd[$_GET["db"]]);$I="<a href='#$u' class='toggle'>".'Warnings'."</a>, $I<div id='$u' class='hidden'>\n$Yi</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $I<div id='$wh' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($G,1000)."</code></pre>".($ai?" <span class='time'>($ai)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($zd[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editRowPrint($Q,$o,$J,$Fi){}function
|
||
editFunctions($n){global$l;$I=($n["null"]?"NULL/":"");$Fi=isset($_GET["select"])||where($_GET);foreach($l->editFunctions
|
||
as$y=>$id){if(!$y||(!isset($_GET["call"])&&$Fi)){foreach($id
|
||
as$Xf=>$X){if(!$Xf||preg_match("~$Xf~",$n["type"]))$I.="/$X";}}if($y&&!preg_match('~set|blob|bytea|raw|file|bool~',$n["type"]))$I.="/SQL";}if($n["auto_increment"]&&!$Fi)$I='Auto Increment';return
|
||
explode("/",$I);}function
|
||
editInput($Q,$n,$ya,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$ya value='-1' checked><i>".'original'."</i></label> ":"").($n["null"]?"<label><input type='radio'$ya value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$ya,$n,$Y,$Y===0?0:null);return"";}function
|
||
editHint($Q,$n,$Y){return"";}function
|
||
processInput($n,$Y,$s=""){if($s=="SQL")return$Y;$B=$n["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$I="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$I=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$I=idf_escape($B)." $s $I";elseif(preg_match('~^[+-] interval$~',$s))$I=idf_escape($B)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$I="$s(".idf_escape($B).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$I="$s($I)";return
|
||
unconvert_field($n,$I);}function
|
||
dumpOutput(){$I=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function
|
||
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
|
||
dumpDatabase($j){}function
|
||
dumpTable($Q,$Dh,$Zd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Dh)dump_csv(array_keys(fields($Q)));}else{if($Zd==2){$o=array();foreach(fields($Q)as$B=>$n)$o[]=idf_escape($B)." $n[full_type]";$h="CREATE TABLE ".table($Q)." (".implode(", ",$o).")";}else$h=create_sql($Q,$_POST["auto_increment"],$Dh);set_utf8mb4($h);if($Dh&&$h){if($Dh=="DROP+CREATE"||$Zd==1)echo"DROP ".($Zd==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Zd==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
|
||
dumpData($Q,$Dh,$G){global$f;if($Dh){$Ce=(JUSH=="sqlite"?0:1048576);$o=array();$Ed=false;if($_POST["format"]=="sql"){if($Dh=="TRUNCATE+INSERT")echo
|
||
truncate_sql($Q).";\n";$o=fields($Q);if(JUSH=="mssql"){foreach($o
|
||
as$n){if($n["auto_increment"]){echo"SET IDENTITY_INSERT ".table($Q)." ON;\n";$Ed=true;break;}}}}$H=$f->query($G,1);if($H){$Rd="";$Ma="";$ee=array();$jd=array();$Fh="";$Oc=($Q!=''?'fetch_assoc':'fetch_row');while($J=$H->$Oc()){if(!$ee){$Qi=array();foreach($J
|
||
as$X){$n=$H->fetch_field();if($o[$n->name]['generated']){$jd[$n->name]=true;continue;}$ee[]=$n->name;$y=idf_escape($n->name);$Qi[]="$y = VALUES($y)";}$Fh=($Dh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Qi):"").";\n";}if($_POST["format"]!="sql"){if($Dh=="table"){dump_csv($ee);$Dh="INSERT";}dump_csv($J);}else{if(!$Rd)$Rd="INSERT INTO ".table($Q)." (".implode(", ",array_map('Adminer\idf_escape',$ee)).") VALUES";foreach($J
|
||
as$y=>$X){if($jd[$y]){unset($J[$y]);continue;}$n=$o[$y];$J[$y]=($X!==null?unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Qg=($Ce?"\n":" ")."(".implode(",\t",$J).")";if(!$Ma)$Ma=$Rd.$Qg;elseif(strlen($Ma)+4+strlen($Qg)+strlen($Fh)<$Ce)$Ma.=",$Qg";else{echo$Ma.$Fh;$Ma=$Rd.$Qg;}}}if($Ma)echo$Ma.$Fh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$f->error)."\n";if($Ed)echo"SET IDENTITY_INSERT ".table($Q)." OFF;\n";}}function
|
||
dumpFilename($Cd){return
|
||
friendly_url($Cd!=""?$Cd:(SERVER!=""?SERVER:"localhost"));}function
|
||
dumpHeaders($Cd,$Re=false){$Jf=$_POST["output"];$Gc=(preg_match('~sql~',$_POST["format"])?"sql":($Re?"tar":"csv"));header("Content-Type: ".($Jf=="gz"?"application/x-gzip":($Gc=="tar"?"application/x-tar":($Gc=="sql"||$Jf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Jf=="gz"){ob_start(function($P){return
|
||
gzencode($P);},1e6);}return$Gc;}function
|
||
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
|
||
importServerPath(){return"adminer.sql";}function
|
||
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
|
||
true;}function
|
||
navigation($Pe){global$ia,$Zb,$f;echo'<h1>
|
||
',$this->name(),'<span class="version">
|
||
',$ia,' <a href="https://www.adminer.org/#download"',target_blank(),' id="version">',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
|
||
</span>
|
||
</h1>
|
||
';if($Pe=="auth"){$Jf="";foreach((array)$_SESSION["pwds"]as$Si=>$hh){foreach($hh
|
||
as$M=>$Ni){$B=h(get_setting("vendor-$M")?:$Zb[$Si]);foreach($Ni
|
||
as$V=>$E){if($E!==null){$Lb=$_SESSION["db"][$Si][$M][$V];foreach(($Lb?array_keys($Lb):array(""))as$j)$Jf.="<li><a href='".h(auth_url($Si,$M,$V,$j))."'>($B) ".h($V.($M!=""?"@".$this->serverName($M):"").($j!=""?" - $j":""))."</a>\n";}}}}if($Jf)echo"<ul id='logins'>\n$Jf</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$Pe&&DB!=""){$f->select_db(DB);$S=table_status('',true);}$this->syntaxHighlighting($S);$this->databasesPrint($Pe);$la=array();if(DB==""||!$Pe){if(support("sql")){$la[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>";$la[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>";}$la[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>";}$Id=$_GET["ns"]!==""&&!$Pe&&DB!="";if($Id)$la[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>";echo($la?"<p class='links'>\n".implode("\n",$la)."\n":"");if($Id){if($S)$this->tablesPrint($S);else
|
||
echo"<p class='message'>".'No tables.'."</p>\n";}}}function
|
||
syntaxHighlighting($S){global$f;echo
|
||
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.0.6");if(support("sql")){echo"<script".nonce().">\n";if($S){$te=array();foreach($S
|
||
as$Q=>$U)$te[]=preg_quote($Q,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$te).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";}echo"</script>\n";}echo
|
||
script("bodyLoad('".(is_object($f)?preg_replace('~^(\d\.?\d).*~s','\1',$f->server_info):"")."'".($f->maria?", true":"").");");}function
|
||
databasesPrint($Pe){global$b,$f;$i=$this->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo'<form action="">
|
||
<p id="dbs">
|
||
';hidden_fields_get();$Jb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title='".'Database'."'>".'DB'.":</span> ".($i?html_select("db",array(""=>"")+$i,DB).$Jb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n"),"<input type='submit' value='".'Use'."'".($i?" class='hidden'":"").">\n";if(support("scheme")){if($Pe!="db"&&DB!=""&&$f->select_db(DB)){echo"<br><span>".'Schema'.":</span> ".html_select("ns",array(""=>"")+$b->schemas(),$_GET["ns"]).$Jb;if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type='hidden' name='$X' value=''>";break;}}echo"</p></form>\n";}function
|
||
tablesPrint($S){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S
|
||
as$Q=>$O){$B=$this->tableName($O);if($B!="")echo'<li><a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select")." title='".'Select data'."'>".'select'."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($O)?"view":"structure"))." title='".'Show structure'."'>$B</a>":"<span>$B</span>")."\n";}echo"</ul>\n";}}$b=(function_exists('adminer_object')?adminer_object():new
|
||
Adminer);$Zb=array("server"=>"MySQL / MariaDB")+$Zb;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")){class
|
||
Db
|
||
extends
|
||
\MySQLi{var$extension="MySQLi";function
|
||
__construct(){parent::init();}function
|
||
connect($M="",$V="",$E="",$Ib=null,$bg=null,$ph=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Ad,$bg)=explode(":",$M,2);$zh=$b->connectSsl();if($zh)$this->ssl_set($zh['key'],$zh['cert'],$zh['ca'],'','');$I=@$this->real_connect(($M!=""?$Ad:ini_get("mysqli.default_host")),($M.$V!=""?$V:ini_get("mysqli.default_user")),($M.$V.$E!=""?$E:ini_get("mysqli.default_pw")),$Ib,(is_numeric($bg)?$bg:ini_get("mysqli.default_port")),(!is_numeric($bg)?$bg:$ph),($zh?($zh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function
|
||
set_charset($Sa){if(parent::set_charset($Sa))return
|
||
true;parent::set_charset('utf8');return$this->query("SET NAMES $Sa");}function
|
||
result($G,$n=0){$H=$this->query($G);if(!$H)return
|
||
false;$J=$H->fetch_array();return$J[$n];}function
|
||
quote($P){return"'".$this->escape_string($P)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
|
||
Db{var$extension="MySQL",$server_info,$affected_rows,$errno,$error;private$link,$result;function
|
||
connect($M,$V,$E){if(ini_bool("mysql.allow_local_infile")){$this->error=sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
|
||
false;}$this->link=@mysql_connect(($M!=""?$M:ini_get("mysql.default_host")),("$M$V"!=""?$V:ini_get("mysql.default_user")),("$M$V$E"!=""?$E:ini_get("mysql.default_password")),true,131072);if($this->link)$this->server_info=mysql_get_server_info($this->link);else$this->error=mysql_error();return(bool)$this->link;}function
|
||
set_charset($Sa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Sa,$this->link))return
|
||
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Sa");}function
|
||
quote($P){return"'".mysql_real_escape_string($P,$this->link)."'";}function
|
||
select_db($Ib){return
|
||
mysql_select_db($Ib,$this->link);}function
|
||
query($G,$yi=false){$H=@($yi?mysql_unbuffered_query($G,$this->link):mysql_query($G,$this->link));$this->error="";if(!$H){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
|
||
false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
|
||
true;}return
|
||
new
|
||
Result($H);}function
|
||
multi_query($G){return$this->result=$this->query($G);}function
|
||
store_result(){return$this->result;}function
|
||
next_result(){return
|
||
false;}function
|
||
result($G,$n=0){$H=$this->query($G);return($H?$H->fetch_column($n):false);}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($H){$this->result=$H;$this->num_rows=mysql_num_rows($H);}function
|
||
fetch_assoc(){return
|
||
mysql_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
mysql_fetch_row($this->result);}function
|
||
fetch_column($n){return($this->num_rows?mysql_result($this->result,0,$n):false);}function
|
||
fetch_field(){$I=mysql_fetch_field($this->result,$this->offset++);$I->orgtable=$I->table;$I->orgname=$I->name;$I->charsetnr=($I->blob?63:0);return$I;}function
|
||
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_MySQL";function
|
||
connect($M,$V,$E){global$b;$vf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$zh=$b->connectSsl();if($zh){if($zh['key'])$vf[\PDO::MYSQL_ATTR_SSL_KEY]=$zh['key'];if($zh['cert'])$vf[\PDO::MYSQL_ATTR_SSL_CERT]=$zh['cert'];if($zh['ca'])$vf[\PDO::MYSQL_ATTR_SSL_CA]=$zh['ca'];if(isset($zh['verify']))$vf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$zh['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$M)),$V,$E,$vf);return
|
||
true;}function
|
||
set_charset($Sa){$this->query("SET NAMES $Sa");}function
|
||
select_db($Ib){return$this->query("USE ".idf_escape($Ib));}function
|
||
query($G,$yi=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$yi);return
|
||
parent::query($G,$yi);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$fg=array("MySQLi","MySQL","PDO_MySQL");static$be="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");function
|
||
__construct($f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->editFunctions=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));if(min_version('5.7.8',10.2,$f))$this->types['Strings']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Strings']["uuid"]=128;$this->editFunctions[0]['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Numbers']["vector"]=16383;$this->editFunctions[0]['vector']='string_to_vector';}if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
unconvertFunction($n){return(preg_match("~binary~",$n["type"])?"<code class='jush-sql'>UNHEX</code>":($n["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$n["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
|
||
insert($Q,$N){return($N?parent::insert($Q,$N):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
|
||
insertUpdate($Q,$K,$F){$e=array_keys(reset($K));$hg="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$Qi=array();foreach($e
|
||
as$y)$Qi[$y]="$y = VALUES($y)";$Fh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Qi);$Qi=array();$qe=0;foreach($K
|
||
as$N){$Y="(".implode(", ",$N).")";if($Qi&&(strlen($hg)+$qe+strlen($Y)+strlen($Fh)>1e6)){if(!queries($hg.implode(",\n",$Qi).$Fh))return
|
||
false;$Qi=array();$qe=0;}$Qi[]=$Y;$qe+=strlen($Y)+2;}return
|
||
queries($hg.implode(",\n",$Qi).$Fh);}function
|
||
slowQuery($G,$bi){if(min_version('5.7.8','10.1.2')){if($this->conn->maria)return"SET STATEMENT max_statement_time=$bi FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($bi*1000).") */ $A[2]";}}function
|
||
convertSearch($v,$X,$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function
|
||
warnings(){$H=$this->conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return
|
||
ob_get_clean();}}function
|
||
tableHelp($B,$Zd=false){$xe=$this->conn->maria;if(information_schema(DB))return
|
||
strtolower("information-schema-".($xe?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($xe?"mysql$B-table/":"system-schema.html");}function
|
||
hasCStyleEscapes(){static$Oa;if($Oa===null){$xh=$this->conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Oa=(strpos($xh,'NO_BACKSLASH_ESCAPES')===false);}return$Oa;}}function
|
||
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
|
||
table($v){return
|
||
idf_escape($v);}function
|
||
connect($Ab){global$Zb;$f=new
|
||
Db;if($f->connect($Ab[0],$Ab[1],$Ab[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->maria=preg_match('~MariaDB~',$f->server_info);$Zb[DRIVER]=($f->maria?"MariaDB":"MySQL");return$f;}$I=$f->error;if(function_exists('iconv')&&!is_utf8($I)&&strlen($Qg=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$Qg;return$I;}function
|
||
get_databases($Yc){$I=get_session("dbs");if($I===null){$G="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$I=($Yc?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function
|
||
limit($G,$Z,$z,$C=0,$ch=" "){return" $G$Z".($z!==null?$ch."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($Q,$G,$Z,$ch="\n"){return
|
||
limit($G,$Z,1,0,$ch);}function
|
||
db_collation($j,$gb){$I=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$I=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$I=$gb[$A[1]][-1];return$I;}function
|
||
engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function
|
||
logged_user(){return
|
||
get_val("SELECT USER()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
|
||
count_tables($i){$I=array();foreach($i
|
||
as$j)$I[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$I;}function
|
||
table_status($B="",$Mc=false){$I=array();foreach(get_rows($Mc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($B!=""){$J["Name"]=$B;return$J;}$I[$J["Name"]]=$J;}return$I;}function
|
||
is_view($R){return$R["Engine"]===null;}function
|
||
fk_support($R){return
|
||
preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&min_version(5.6));}function
|
||
fields($Q){global$f;$xe=$f->maria;$I=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($Q)." ORDER BY ORDINAL_POSITION")as$J){$n=$J["COLUMN_NAME"];$U=$J["COLUMN_TYPE"];$kd=$J["GENERATION_EXPRESSION"];$Jc=$J["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Jc,$jd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$_e);$k=$J["COLUMN_DEFAULT"];if($k!=""){$Yd=preg_match('~text|json~',$_e[1]);if(!$xe&&$Yd)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($xe||$Yd){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return
|
||
stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$xe&&preg_match('~binary~',$_e[1])&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$I[$n]=array("field"=>$n,"full_type"=>$U,"type"=>$_e[1],"length"=>$_e[2],"unsigned"=>ltrim($_e[3].$_e[4]),"default"=>($jd?($xe?$kd:stripslashes($kd)):$k),"null"=>($J["IS_NULLABLE"]=="YES"),"auto_increment"=>($Jc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Jc,$A)?$A[1]:""),"collation"=>$J["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$J[PRIVILEGES],where,order")),"comment"=>$J["COLUMN_COMMENT"],"primary"=>($J["COLUMN_KEY"]=="PRI"),"generated"=>($jd[1]=="PERSISTENT"?"STORED":$jd[1]),);}return$I;}function
|
||
indexes($Q,$g=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$g)as$J){$B=$J["Key_name"];$I[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$B]["columns"][]=$J["Column_name"];$I[$B]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$B]["descs"][]=null;}return$I;}function
|
||
foreign_keys($Q){global$l;static$Xf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$zb=get_val("SHOW CREATE TABLE ".table($Q),1);if($zb){preg_match_all("~CONSTRAINT ($Xf) FOREIGN KEY ?\\(((?:$Xf,? ?)+)\\) REFERENCES ($Xf)(?:\\.($Xf))? \\(((?:$Xf,? ?)+)\\)(?: ON DELETE ($l->onActions))?(?: ON UPDATE ($l->onActions))?~",$zb,$Ae,PREG_SET_ORDER);foreach($Ae
|
||
as$A){preg_match_all("~$Xf~",$A[2],$rh);preg_match_all("~$Xf~",$A[5],$Th);$I[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$rh[0]),"target"=>array_map('Adminer\idf_unescape',$Th[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$I;}function
|
||
view($B){return
|
||
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function
|
||
collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I
|
||
as$y=>$X)asort($I[$y]);return$I;}function
|
||
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
|
||
error(){global$f;return
|
||
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function
|
||
create_database($j,$fb){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($fb?" COLLATE ".q($fb):""));}function
|
||
drop_databases($i){$I=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$I;}function
|
||
rename_database($B,$fb){$I=false;if(create_database($B,$fb)){$S=array();$Vi=array();foreach(tables_list()as$Q=>$U){if($U=='VIEW')$Vi[]=$Q;else$S[]=$Q;}$I=(!$S&&!$Vi)||move_tables($S,$Vi,$B);drop_databases($I?array(DB):array());}return$I;}function
|
||
auto_increment(){$Aa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$Aa="";break;}if($w["type"]=="PRIMARY")$Aa=" UNIQUE";}}return" AUTO_INCREMENT$Aa";}function
|
||
alter_table($Q,$B,$o,$ad,$lb,$qc,$fb,$_a,$Tf){global$f;$c=array();foreach($o
|
||
as$n){if($n[1]){$k=$n[1][3];if(preg_match('~ GENERATED~',$k)){$n[1][3]=($f->maria?"":$n[1][2]);$n[1][2]=$k;}$c[]=($Q!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($Q!=""?$n[2]:"");}else$c[]="DROP ".idf_escape($n[0]);}$c=array_merge($c,$ad);$O=($lb!==null?" COMMENT=".q($lb):"").($qc?" ENGINE=".q($qc):"").($fb?" COLLATE ".q($fb):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($Q=="")return
|
||
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$c)."\n)$O$Tf");if($Q!=$B)$c[]="RENAME TO ".table($B);if($O)$c[]=ltrim($O);return($c||$Tf?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$c).$Tf):true);}function
|
||
alter_indexes($Q,$c){foreach($c
|
||
as$y=>$X)$c[$y]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
|
||
queries("ALTER TABLE ".table($Q).implode(",",$c));}function
|
||
truncate_tables($S){return
|
||
apply_queries("TRUNCATE TABLE",$S);}function
|
||
drop_views($Vi){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Vi)));}function
|
||
drop_tables($S){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$S)));}function
|
||
move_tables($S,$Vi,$Th){global$f;$Eg=array();foreach($S
|
||
as$Q)$Eg[]=table($Q)." TO ".idf_escape($Th).".".table($Q);if(!$Eg||queries("RENAME TABLE ".implode(", ",$Eg))){$Pb=array();foreach($Vi
|
||
as$Q)$Pb[table($Q)]=view($Q);$f->select_db($Th);$j=idf_escape(DB);foreach($Pb
|
||
as$B=>$Ui){if(!queries("CREATE VIEW $B AS ".str_replace(" $j."," ",$Ui["select"]))||!queries("DROP VIEW $j.$B"))return
|
||
false;}return
|
||
true;}return
|
||
false;}function
|
||
copy_tables($S,$Vi,$Th){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
|
||
as$Q){$B=($Th==DB?table("copy_$Q"):idf_escape($Th).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($Q))||!queries("INSERT INTO $B SELECT * FROM ".table($Q)))return
|
||
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J){$ri=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Th==DB?idf_escape("copy_$ri"):idf_escape($Th).".".idf_escape($ri))." $J[Timing] $J[Event] ON $B FOR EACH ROW\n$J[Statement];"))return
|
||
false;}}foreach($Vi
|
||
as$Q){$B=($Th==DB?table("copy_$Q"):idf_escape($Th).".".table($Q));$Ui=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Ui[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($B){if($B=="")return
|
||
array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
|
||
reset($K);}function
|
||
triggers($Q){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
routine($B,$U){global$l;$ta=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$sh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$sc=$l->enumLength;$wi="((".implode("|",array_merge(array_keys($l->types()),$ta)).")\\b(?:\\s*\\(((?:[^'\")]|$sc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Xf="$sh*(".($U=="FUNCTION"?"":$l->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$wi";$h=get_val("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$Xf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$wi\\s+":"")."(.*)~is",$h,$A);$o=array();preg_match_all("~$Xf\\s*,?~is",$A[1],$Ae,PREG_SET_ORDER);foreach($Ae
|
||
as$Nf)$o[]=array("field"=>str_replace("``","`",$Nf[2]).$Nf[3],"type"=>strtolower($Nf[5]),"length"=>preg_replace_callback("~$sc~s",'Adminer\normalize_enum',$Nf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Nf[8] $Nf[7]"))),"null"=>1,"full_type"=>$Nf[4],"inout"=>strtoupper($Nf[1]),"collation"=>strtolower($Nf[9]),);return
|
||
array("fields"=>$o,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($B)),)+($U!="FUNCTION"?array("definition"=>$A[11]):array("returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",));}function
|
||
routines(){return
|
||
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
|
||
routine_languages(){return
|
||
array();}function
|
||
routine_id($B,$J){return
|
||
idf_escape($B);}function
|
||
last_id(){return
|
||
get_val("SELECT LAST_INSERT_ID()");}function
|
||
explain($f,$G){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$G);}function
|
||
found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
|
||
create_sql($Q,$_a,$Dh){$I=get_val("SHOW CREATE TABLE ".table($Q),1);if(!$_a)$I=preg_replace('~ AUTO_INCREMENT=\d+~','',$I);return$I;}function
|
||
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
|
||
use_sql($Ib){return"USE ".idf_escape($Ib);}function
|
||
trigger_sql($Q){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function
|
||
show_variables(){return
|
||
get_key_vals("SHOW VARIABLES");}function
|
||
process_list(){return
|
||
get_rows("SHOW FULL PROCESSLIST");}function
|
||
show_status(){return
|
||
get_key_vals("SHOW STATUS");}function
|
||
convert_field($n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function
|
||
unconvert_field($n,$I){if(preg_match("~binary~",$n["type"]))$I="UNHEX($I)";if($n["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$hg=(min_version(8)?"ST_":"");$I=$hg."GeomFromText($I, $hg"."SRID($n[field]))";}return$I;}function
|
||
support($Nc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Nc);}function
|
||
kill_process($X){return
|
||
queries("KILL ".number($X));}function
|
||
connection_id(){return"SELECT CONNECTION_ID()";}function
|
||
max_connections(){return
|
||
get_val("SELECT @@max_connections");}}define('Adminer\JUSH',Driver::$be);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));if(!ob_get_level())ob_start(null,4096);function
|
||
page_header($di,$m="",$La=array(),$ei=""){global$ca,$ia,$b,$Zb;page_headers();if(is_ajax()&&$m){page_messages($m);exit;}$fi=$di.($ei!=""?": $ei":"");$gi=strip_tags($fi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
|
||
<html lang="en" dir="ltr">
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta name="robots" content="noindex">
|
||
<meta name="viewport" content="width=device-width">
|
||
<title>',$gi,'</title>
|
||
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.0.6"),'">
|
||
';$Cb=$b->css();$Fb=(count($Cb)==1?!!preg_match('~-dark~',$Cb[0]):null);if($Fb!==false)echo"<link rel='stylesheet'".($Fb?"":" media='(prefers-color-scheme: dark)'")." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.0.6")."'>\n";echo"<meta name='color-scheme' content='".($Fb===null?"light dark":($Fb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.0.6");if($b->head($Fb))echo"<link rel='shortcut icon' type='image/x-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=5.0.6")."'>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=5.0.6")."'>\n";foreach($Cb
|
||
as$X)echo"<link rel='stylesheet'".(preg_match('~-dark~',$X)&&!$Fb?" media='(prefers-color-scheme: dark)'":"")." href='".h($X)."'>\n";echo"\n<body class='".'ltr'." nojs'>\n";$p=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($p)&&filemtime($p)+86400>time()){$Ti=unserialize(file_get_contents($p));$qg="-----BEGIN PUBLIC KEY-----
|
||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
|
||
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
|
||
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
|
||
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
|
||
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
|
||
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
|
||
fQIDAQAB
|
||
-----END PUBLIC KEY-----
|
||
";if(openssl_verify($Ti["version"],base64_decode($Ti["signature"]),$qg)==1)$_COOKIE["adminer_version"]=$Ti["version"];}echo
|
||
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')")."});
|
||
document.body.className = document.body.className.replace(/ nojs/, ' js');
|
||
var offlineMessage = '".js_escape('You are offline.')."';
|
||
var thousandsSeparator = '".js_escape(',')."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n";if($La!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.$Zb[DRIVER].'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$M=$b->serverName(SERVER);$M=($M!=""?$M:'Server');if($La===false)echo"$M\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$M</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($La)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($La)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($La
|
||
as$y=>$X){$Rb=(is_array($X)?$X[1]:h($X));if($Rb!="")echo"<a href='".h(ME."$y=").urlencode(is_array($X)?$X[0]:$X)."'>$Rb</a> » ";}}echo"$di\n";}}echo"<h2>$fi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($m);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
|
||
page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Bb){$xd=array();foreach($Bb
|
||
as$y=>$X)$xd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$xd));}$b->headers();}function
|
||
csp(){return
|
||
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
|
||
get_nonce(){static$af;if(!$af)$af=base64_encode(rand_string());return$af;}function
|
||
page_messages($m){$Gi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ne=$_SESSION["messages"][$Gi];if($Ne){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Ne)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Gi]);}if($m)echo"<div class='error'>$m</div>\n";}function
|
||
page_footer($Pe=""){global$b,$T;echo'</div>
|
||
|
||
<div id="menu">
|
||
';$b->navigation($Pe);echo'</div>
|
||
|
||
';if($Pe!="auth")echo'<form action="" method="post">
|
||
<p class="logout">
|
||
<span>',h($_GET["username"])."\n",'</span>
|
||
<input type="submit" name="logout" value="Logout" id="logout">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</p>
|
||
</form>
|
||
';echo
|
||
script("setupSubmitHighlight(document);");}function
|
||
int32($Te){while($Te>=2147483648)$Te-=4294967296;while($Te<=-2147483649)$Te+=4294967296;return(int)$Te;}function
|
||
long2str($W,$Xi){$Qg='';foreach($W
|
||
as$X)$Qg.=pack('V',$X);if($Xi)return
|
||
substr($Qg,0,end($W));return$Qg;}function
|
||
str2long($Qg,$Xi){$W=array_values(unpack('V*',str_pad($Qg,4*ceil(strlen($Qg)/4),"\0")));if($Xi)$W[]=strlen($Qg);return$W;}function
|
||
xxtea_mx($ej,$dj,$Gh,$ce){return
|
||
int32((($ej>>5&0x7FFFFFF)^$dj<<2)+(($dj>>3&0x1FFFFFFF)^$ej<<4))^int32(($Gh^$dj)+($ce^$ej));}function
|
||
encrypt_string($Bh,$y){if($Bh=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Bh,true);$Te=count($W)-1;$ej=$W[$Te];$dj=$W[0];$rg=floor(6+52/($Te+1));$Gh=0;while($rg-->0){$Gh=int32($Gh+0x9E3779B9);$hc=$Gh>>2&3;for($Lf=0;$Lf<$Te;$Lf++){$dj=$W[$Lf+1];$Se=xxtea_mx($ej,$dj,$Gh,$y[$Lf&3^$hc]);$ej=int32($W[$Lf]+$Se);$W[$Lf]=$ej;}$dj=$W[0];$Se=xxtea_mx($ej,$dj,$Gh,$y[$Lf&3^$hc]);$ej=int32($W[$Te]+$Se);$W[$Te]=$ej;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($Bh,$y){if($Bh=="")return"";if(!$y)return
|
||
false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Bh,false);$Te=count($W)-1;$ej=$W[$Te];$dj=$W[0];$rg=floor(6+52/($Te+1));$Gh=int32($rg*0x9E3779B9);while($Gh){$hc=$Gh>>2&3;for($Lf=$Te;$Lf>0;$Lf--){$ej=$W[$Lf-1];$Se=xxtea_mx($ej,$dj,$Gh,$y[$Lf&3^$hc]);$dj=int32($W[$Lf]-$Se);$W[$Lf]=$dj;}$ej=$W[$Te];$Se=xxtea_mx($ej,$dj,$Gh,$y[$Lf&3^$hc]);$dj=int32($W[0]-$Se);$W[0]=$dj;$Gh=int32($Gh-0x9E3779B9);}return
|
||
long2str($W,true);}$f='';$wd=$_SESSION["token"];if(!$wd)$_SESSION["token"]=rand(1,1e6);$T=get_token();$Zf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Zf[$y]=$X;}}function
|
||
add_invalid_login(){global$b;$Fa=get_temp_dir()."/adminer.invalid";foreach(glob("$Fa*")?:array($Fa)as$p){$r=file_open_lock($p);if($r)break;}if(!$r)$r=file_open_lock("$Fa-".rand_string());if(!$r)return;$Ud=unserialize(stream_get_contents($r));$ai=time();if($Ud){foreach($Ud
|
||
as$Vd=>$X){if($X[0]<$ai)unset($Ud[$Vd]);}}$Td=&$Ud[$b->bruteForceKey()];if(!$Td)$Td=array($ai+30*60,0);$Td[1]++;file_write_unlock($r,serialize($Ud));}function
|
||
check_invalid_login(){global$b;$Ud=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$p){$r=file_open_lock($p);if($r){$Ud=unserialize(stream_get_contents($r));file_unlock($r);break;}}$Td=($Ud?$Ud[$b->bruteForceKey()]:array());$Ze=($Td[1]>29?$Td[0]-time():0);if($Ze>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Ze/60)));}$za=$_POST["auth"];if($za){session_regenerate_id();$Si=$za["driver"];$M=$za["server"];$V=$za["username"];$E=(string)$za["password"];$j=$za["db"];set_password($Si,$M,$V,$E);$_SESSION["db"][$Si][$M][$V][$j]=true;if($za["permanent"]){$y=implode("-",array_map('base64_encode',array($Si,$M,$V,$j)));$lg=$b->permanentLogin(true);$Zf[$y]="$y:".base64_encode($lg?encrypt_string($E,$lg):"");cookie("adminer_permanent",implode(" ",$Zf));}if(count($_POST)==1||DRIVER!=$Si||SERVER!=$M||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Si,$M,$V,$j));}elseif($_POST["logout"]&&(!$wd||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.');}elseif($Zf&&!$_SESSION["pwds"]){session_regenerate_id();$lg=$b->permanentLogin();foreach($Zf
|
||
as$y=>$X){list(,$Za)=explode(":",$X);list($Si,$M,$V,$j)=array_map('base64_decode',explode("-",$y));set_password($Si,$M,$V,decrypt_string(base64_decode($Za),$lg));$_SESSION["db"][$Si][$M][$V][$j]=true;}}function
|
||
unset_permanent(){global$Zf;foreach($Zf
|
||
as$y=>$X){list($Si,$M,$V,$j)=array_map('base64_decode',explode("-",$y));if($Si==DRIVER&&$M==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Zf[$y]);}cookie("adminer_permanent",implode(" ",$Zf));}function
|
||
auth_error($m){global$b,$wd;$ih=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$ih]||$_GET[$ih])&&!$wd)$m='Session expired, please login again.';else{restart_session();add_invalid_login();$E=get_password();if($E!==null){if($E===false)$m.=($m?'<br>':'').sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$ih]&&$_GET[$ih]&&ini_bool("session.use_only_cookies"))$m='Session support must be enabled.';$Of=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Of["lifetime"]);page_header('Login',$m,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'The action will be performed after successful login with the same credentials.'."\n";echo"</div>\n";$b->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$fg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Ad,$bg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$bg,$A)&&($A[1]<1024||$A[1]>65535))auth_error('Connecting to privileged ports is not allowed.');check_invalid_login();$f=connect($b->credentials());if(is_object($f)){$l=new
|
||
Driver($f);if($b->operators===null)$b->operators=$l->operators;if(isset($f->maria)||$f->cockroach)save_settings(array("vendor-".SERVER=>$Zb[DRIVER]));}}$ve=null;if(!is_object($f)||($ve=$b->login($_GET["username"],get_password()))!==true){$m=(is_string($f)?nl_br(h($f)):(is_string($ve)?$ve:'Invalid credentials.'));auth_error($m.(preg_match('~^ | $~',get_password())?'<br>'.'There is a space in the input password which might be the cause.':''));}if($_POST["logout"]&&$wd&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if($za&&$_POST["token"])$_POST["token"]=$T;$m='';if($_POST){if(!verify_token()){$Od="max_input_vars";$Ge=ini_get($Od);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$Ge||$X<$Ge)){$Od=$y;$Ge=$X;}}}$m=(!$_POST["token"]&&$Ge?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Od'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$m.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
|
||
select($H,$g=null,$Af=array(),$z=0){$te=array();$x=array();$e=array();$Ja=array();$xi=array();$I=array();for($t=0;(!$z||$t<$z)&&($J=$H->fetch_row());$t++){if(!$t){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($ae=0;$ae<count($J);$ae++){$n=$H->fetch_field();$B=$n->name;$_f=$n->orgtable;$zf=$n->orgname;$I[$n->table]=$_f;if($Af&&JUSH=="sql")$te[$ae]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($_f!=""){if(!isset($x[$_f])){$x[$_f]=array();foreach(indexes($_f,$g)as$w){if($w["type"]=="PRIMARY"){$x[$_f]=array_flip($w["columns"]);break;}}$e[$_f]=$x[$_f];}if(isset($e[$_f][$zf])){unset($e[$_f][$zf]);$x[$_f][$zf]=$ae;$te[$ae]=$_f;}}if($n->charsetnr==63)$Ja[$ae]=true;$xi[$ae]=$n->type;echo"<th".($_f!=""||$n->name!=$zf?" title='".h(($_f!=""?"$_f.":"").$zf)."'":"").">".h($B).($Af?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($J
|
||
as$y=>$X){$_="";if(isset($te[$y])&&!$e[$te[$y]]){if($Af&&JUSH=="sql"){$Q=$J[array_search("table=",$te)];$_=ME.$te[$y].urlencode($Af[$Q]!=""?$Af[$Q]:$Q);}else{$_=ME."edit=".urlencode($te[$y]);foreach($x[$te[$y]]as$db=>$ae)$_.="&where".urlencode("[".bracket_escape($db)."]")."=".urlencode($J[$ae]);}}elseif(is_url($X))$_=$X;if($X===null)$X="<i>NULL</i>";elseif($Ja[$y]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";else{$X=h($X);if($xi[$y]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($xi[$y]<=9||$xi[$y]==246?" class='number'":"").">$X";}}echo($t?"</table>\n</div>":"<p class='message'>".'No rows.')."\n";return$I;}function
|
||
referencable_primary($ah){$I=array();foreach(table_status('',true)as$Lh=>$Q){if($Lh!=$ah&&fk_support($Q)){foreach(fields($Lh)as$n){if($n["primary"]){if($I[$Lh]){unset($I[$Lh]);break;}$I[$Lh]=$n;}}}}return$I;}function
|
||
textarea($B,$Y,$K=10,$hb=80){echo"<textarea name='".h($B)."' rows='$K' cols='$hb' class='sqlarea jush-".JUSH."' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
|
||
as$X)echo
|
||
h($X[0])."\n\n\n";}else
|
||
echo
|
||
h($Y);echo"</textarea>";}function
|
||
select_input($ya,$vf,$Y="",$pf="",$ag=""){$Sh=($vf?"select":"input");return"<$Sh$ya".($vf?"><option value=''>$ag".optionlist($vf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$ag'>").($pf?script("qsl('$Sh').onchange = $pf;",""):"");}function
|
||
json_row($y,$X=null){static$Tc=true;if($Tc)echo"{";if($y!=""){echo($Tc?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Tc=false;}else{echo"\n}\n";$Tc=true;}}function
|
||
edit_type($y,$n,$gb,$cd=array(),$Kc=array()){global$l;$U=$n["type"];echo"<td><select name='".h($y)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,$l->types())&&!isset($cd[$U])&&!in_array($U,$Kc))$Kc[]=$U;$Ch=$l->structuredTypes();if($cd)$Ch['Foreign keys']=$cd;echo
|
||
optionlist(array_merge($Kc,$Ch),$U),"</select><td>","<input name='".h($y)."[length]' value='".h($n["length"])."' size='3'".(!$n["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($gb?"<input list='collations' name='".h($y)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($n["collation"])."' placeholder='(".'collation'.")'>":''),($l->unsigned?"<select name='".h($y)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist($l->unsigned,$n["unsigned"]).'</select>':''),(isset($n['on_update'])?"<select name='".h($y)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).'</select>':''),($cd?"<select name='".h($y)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",$l->onActions),$n["on_delete"])."</select> ":" ");}function
|
||
get_partitions_info($Q){global$f;$gd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($Q);$H=$f->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $gd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$I=array();list($I["partition_by"],$I["partition"],$I["partitions"])=$H->fetch_row();$Uf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $gd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($Uf);$I["partition_values"]=array_values($Uf);return$I;}function
|
||
process_length($qe){global$l;$uc=$l->enumLength;return(preg_match("~^\\s*\\(?\\s*$uc(?:\\s*,\\s*$uc)*+\\s*\\)?\\s*\$~",$qe)&&preg_match_all("~$uc~",$qe,$Ae)?"(".implode(",",$Ae[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$qe)));}function
|
||
process_type($n,$eb="COLLATE"){global$l;return" $n[type]".process_length($n["length"]).(preg_match(number_type(),$n["type"])&&in_array($n["unsigned"],$l->unsigned)?" $n[unsigned]":"").(preg_match('~char|text|enum|set~',$n["type"])&&$n["collation"]?" $eb ".(JUSH=="mssql"?$n["collation"]:q($n["collation"])):"");}function
|
||
process_field($n,$vi){if($n["on_update"])$n["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$n["on_update"]);return
|
||
array(idf_escape(trim($n["field"])),process_type($vi),($n["null"]?" NULL":" NOT NULL"),default_value($n),(preg_match('~timestamp|datetime~',$n["type"])&&$n["on_update"]?" ON UPDATE $n[on_update]":""),(support("comment")&&$n["comment"]!=""?" COMMENT ".q($n["comment"]):""),($n["auto_increment"]?auto_increment():null),);}function
|
||
default_value($n){global$l;$k=$n["default"];$jd=$n["generated"];return($k===null?"":(in_array($jd,$l->generated)?(JUSH=="mssql"?" AS ($k)".($jd=="VIRTUAL"?"":" $jd")."":" GENERATED ALWAYS AS ($k) $jd"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$k)&&(preg_match('~char|binary|text|json|enum|set~',$n["type"])||preg_match('~^(?![a-z])~i',$k))?(JUSH=="sql"&&preg_match('~text|json~',$n["type"])?"(".q($k).")":q($k)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($k)":$k)))));}function
|
||
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$U))return" class='$y'";}}function
|
||
edit_fields($o,$gb,$U="TABLE",$cd=array()){global$l;$o=array_values($o);$Nb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$mb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo'<thead><tr>
|
||
',($U=="PROCEDURE"?"<td>":""),'<th id="label-name">',($U=="TABLE"?'Column name':'Parameter name'),'<td id="label-type">Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;"></textarea>',script("qs('#enum-edit').onblur = editingLengthBlur;"),'<td id="label-length">Length
|
||
<td>','Options';if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".'Auto Increment'."'>AI</abbr>",doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",'mssql'=>"t-sql/statements/create-table-transact-sql-identity-property",)),"<td id='label-default'$Nb>".'Default value',(support("comment")?"<td id='label-comment'$mb>".'Comment':"");echo"<td><input type='image' class='icon' name='add[".(support("move_col")?0:count($o))."]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".'Add next'."'>".script("row_count = ".count($o).";"),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($o
|
||
as$t=>$n){$t++;$Bf=$n[($_POST?"orig":"field")];$Wb=(isset($_POST["add"][$t-1])||(isset($n["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$Bf=="");echo"<tr".($Wb?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$l->inout),$n["inout"]):"")."<th>";if($Wb)echo"<input name='fields[$t][field]' value='".h($n["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>\n";echo"<input type='hidden' name='fields[$t][orig]' value='".h($Bf)."'>";edit_type("fields[$t]",$n,$gb,$cd);if($U=="TABLE")echo"<td>".checkbox("fields[$t][null]",1,$n["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$t'".($n["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Nb>".($l->generated?html_select("fields[$t][generated]",array_merge(array("","DEFAULT"),$l->generated),$n["generated"])." ":checkbox("fields[$t][generated]",1,$n["generated"],"","","","label-default")),"<input name='fields[$t][default]' value='".h($n["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$mb><input name='fields[$t][comment]' value='".h($n["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".'Add next'."'> "."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=up.gif&version=5.0.6")."' alt='↑' title='".'Move up'."'> "."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=down.gif&version=5.0.6")."' alt='↓' title='".'Move down'."'> ":""),($Bf==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=5.0.6")."' alt='x' title='".'Remove'."'>":"");}}function
|
||
process_fields(&$o){$C=0;if($_POST["up"]){$ke=0;foreach($o
|
||
as$y=>$n){if(key($_POST["up"])==$y){unset($o[$y]);array_splice($o,$ke,0,array($n));break;}if(isset($n["field"]))$ke=$C;$C++;}}elseif($_POST["down"]){$ed=false;foreach($o
|
||
as$y=>$n){if(isset($n["field"])&&$ed){unset($o[key($_POST["down"])]);array_splice($o,$C,0,array($ed));break;}if(key($_POST["down"])==$y)$ed=$n;$C++;}}elseif($_POST["add"]){$o=array_values($o);array_splice($o,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
|
||
false;return
|
||
true;}function
|
||
normalize_enum($A){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($A[0][0].$A[0][0],$A[0][0],substr($A[0],1,-1))),'\\'))."'";}function
|
||
grant($ld,$ng,$e,$mf){if(!$ng)return
|
||
true;if($ng==array("ALL PRIVILEGES","GRANT OPTION"))return($ld=="GRANT"?queries("$ld ALL PRIVILEGES$mf WITH GRANT OPTION"):queries("$ld ALL PRIVILEGES$mf")&&queries("$ld GRANT OPTION$mf"));return
|
||
queries("$ld ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$ng).$e).$mf);}function
|
||
drop_create($ac,$h,$cc,$Wh,$ec,$ue,$Me,$Ke,$Le,$jf,$Xe){if($_POST["drop"])query_redirect($ac,$ue,$Me);elseif($jf=="")query_redirect($h,$ue,$Le);elseif($jf!=$Xe){$_b=queries($h);queries_redirect($ue,$Ke,$_b&&queries($ac));if($_b)queries($cc);}else
|
||
queries_redirect($ue,$Ke,queries($Wh)&&queries($ec)&&queries($ac)&&queries($h));}function
|
||
create_trigger($mf,$J){$ci=" $J[Timing] $J[Event]".(preg_match('~ OF~',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).(JUSH=="mssql"?$mf.$ci:$ci.$mf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
|
||
create_routine($Mg,$J){global$l;$N=array();$o=(array)$J["fields"];ksort($o);foreach($o
|
||
as$n){if($n["field"]!="")$N[]=(preg_match("~^($l->inout)\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$Ob=rtrim($J["definition"],";");return"CREATE $Mg ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".($Mg=="FUNCTION"?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").(JUSH=="pgsql"?" AS ".q($Ob):"\n$Ob;");}function
|
||
remove_definer($G){return
|
||
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
|
||
format_foreign_key($q){global$l;$j=$q["db"];$bf=$q["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$q["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($bf!=""&&$bf!=$_GET["ns"]?idf_escape($bf).".":"").idf_escape($q["table"])." (".implode(", ",array_map('Adminer\idf_escape',$q["target"])).")".(preg_match("~^($l->onActions)\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^($l->onActions)\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"");}function
|
||
tar_file($p,$hi){$I=pack("a100a8a8a8a12a12",$p,644,0,0,decoct($hi->size),decoct(time()));$Ya=8*32;for($t=0;$t<strlen($I);$t++)$Ya+=ord($I[$t]);$I.=sprintf("%06o",$Ya)."\0 ";echo$I,str_repeat("\0",512-strlen($I));$hi->send();echo
|
||
str_repeat("\0",511-($hi->size+511)%512);}function
|
||
ini_bytes($Od){$X=ini_get($Od);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function
|
||
doc_link($Wf,$Xh="<sup>?</sup>"){global$f;$gh=$f->server_info;$Ti=preg_replace('~^(\d\.?\d).*~s','\1',$gh);$Ii=array('sql'=>"https://dev.mysql.com/doc/refman/$Ti/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Ti/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$gh)."&id=",);if($f->maria){$Ii['sql']="https://mariadb.com/kb/en/";$Wf['sql']=(isset($Wf['mariadb'])?$Wf['mariadb']:str_replace(".html","/",$Wf['sql']));}return($Wf[JUSH]?"<a href='".h($Ii[JUSH].$Wf[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Ti":""))."'".target_blank().">$Xh</a>":"");}function
|
||
db_size($j){global$f;if(!$f->select_db($j))return"?";$I=0;foreach(table_status()as$R)$I+=$R["Data_length"]+$R["Index_length"];return
|
||
format_number($I);}function
|
||
set_utf8mb4($h){global$f;static$N=false;if(!$N&&preg_match('~\butf8mb4~i',$h)){$N=true;echo"SET NAMES ".charset($f).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$f->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$m,false);echo"<p class='links'>\n";foreach(array('database'=>'Create database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$y=>$X){if(support($y))echo"<a href='".h(ME)."$y='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Zb[DRIVER],"<b>".h($f->server_info)."</b>","<b>$f->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$i=$b->databases();if($i){$Ug=support("scheme");$gb=collations();echo"<form action='' method='post'>\n","<table class='checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".'Database'.(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>":"")."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1'>".'Compute'."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i
|
||
as$j=>$S){$Lg=h(ME)."db=".urlencode($j);$u=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$u):""),"<th><a href='$Lg' id='$u'>".h($j)."</a>";$fb=h(db_collation($j,$gb));echo"<td>".(support("database")?"<a href='$Lg".($Ug?"&ns=":"")."&database=' title='".'Alter database'."'>$fb</a>":$fb),"<td align='right'><a href='$Lg&schema=' id='tables-".h($j)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($j)."'>".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value=''>".script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".'Drop'."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),"<input type='hidden' name='token' value='$T'>\n","</form>\n",script("tableCheck();");}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header('Schema'.": ".h($_GET["ns"]),'Invalid schema.',true);page_footer("ns");exit;}}}class
|
||
TmpFile{private$handler,$size;function
|
||
__construct(){$this->handler=tmpfile();}function
|
||
write($ub){$this->size+=strlen($ub);fwrite($this->handler,$ub);}function
|
||
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$l->select($a,$L,array(where($_GET,$o)),$L);$J=($H?$H->fetch_row():array());echo$l->value($J[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error();$R=table_status1($a,true);$B=$b->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($B!=""?$B:h($a)),$m);$Kg=array();foreach($o
|
||
as$y=>$n)$Kg+=$n["privileges"];$b->selectLinks($R,(isset($Kg["insert"])||!support("table")?"":null));$lb=$R["Comment"];if($lb!="")echo"<p class='nowrap'>".'Comment'.": ".h($lb)."\n";if($o)$b->tableStructurePrint($o);if(support("indexes")&&$l->supportsIndex($R)){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$x=indexes($a);if($x)$b->tableIndexesPrint($x);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(!is_view($R)){if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$cd=foreign_keys($a);if($cd){echo"<table>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($cd
|
||
as$B=>$q){echo"<tr title='".h($B)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$q["source"]))."</i>";$_=($q["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($q["db"]),ME):($q["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($q["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($q["table"]))."'>".($q["db"]!=""&&$q["db"]!=DB?"<b>".h($q["db"])."</b>.":"").($q["ns"]!=""&&$q["ns"]!=$_GET["ns"]?"<b>".h($q["ns"])."</b>.":"").h($q["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$q["target"]))."</i>)","<td>".h($q["on_delete"]),"<td>".h($q["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($B)).'">'.'Alter'.'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}if(support("check")){echo"<h3 id='checks'>".'Checks'."</h3>\n";$Ua=$l->checkConstraints($a);if($Ua){echo"<table>\n";foreach($Ua
|
||
as$y=>$X)echo"<tr title='".h($y)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($y))."'>".'Alter'."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.'Create check'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$ui=triggers($a);if($ui){echo"<table>\n";foreach($ui
|
||
as$y=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($y)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($y))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Nh=array();$Oh=array();$ea=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$Ae,PREG_SET_ORDER);foreach($Ae
|
||
as$t=>$A){$Nh[$A[1]]=array($A[2],$A[3]);$Oh[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$ji=0;$Ga=-1;$Sg=array();$Ag=array();$oe=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$cg=0;$Sg[$Q]["fields"]=array();foreach(fields($Q)as$B=>$n){$cg+=1.25;$n["pos"]=$cg;$Sg[$Q]["fields"][$B]=$n;}$Sg[$Q]["pos"]=($Nh[$Q]?:array($ji,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$me=$Ga;if($Nh[$Q][1]||$Nh[$X["table"]][1])$me=min(floatval($Nh[$Q][1]),floatval($Nh[$X["table"]][1]))-1;else$Ga-=.1;while($oe[(string)$me])$me-=.0001;$Sg[$Q]["references"][$X["table"]][(string)$me]=array($X["source"],$X["target"]);$Ag[$X["table"]][$Q][(string)$me]=$X["target"];$oe[(string)$me]=true;}}$ji=max($ji,$Sg[$Q]["pos"][0]+2.5+$cg);}echo'<div id="schema" style="height: ',$ji,'em;">
|
||
<script',nonce(),'>
|
||
qs(\'#schema\').onselectstart = function () { return false; };
|
||
var tablePos = {',implode(",",$Oh)."\n",'};
|
||
var em = qs(\'#schema\').offsetHeight / ',$ji,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
|
||
</script>
|
||
';foreach($Sg
|
||
as$B=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($B).'"><b>'.h($B)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$n){$X='<span'.type_class($n["type"]).' title="'.h($n["full_type"].($n["null"]?" NULL":'')).'">'.h($n["field"]).'</span>';echo"<br>".($n["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Uh=>$Bg){foreach($Bg
|
||
as$me=>$yg){$ne=$me-$Nh[$B][1];$t=0;foreach($yg[0]as$rh)echo"\n<div class='references' title='".h($Uh)."' id='refs$me-".($t++)."' style='left: $ne"."em; top: ".$Q["fields"][$rh]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$ne)."em;'></div></div>";}}foreach((array)$Ag[$B]as$Uh=>$Bg){foreach($Bg
|
||
as$me=>$e){$ne=$me-$Nh[$B][1];$t=0;foreach($e
|
||
as$Th)echo"\n<div class='references' title='".h($Uh)."' id='refd$me-".($t++)."'"." style='left: $ne"."em; top: ".$Q["fields"][$Th]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME)."?file=arrow.gif) no-repeat right center;&version=5.0.6")."'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$ne)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Sg
|
||
as$B=>$Q){foreach((array)$Q["references"]as$Uh=>$Bg){foreach($Bg
|
||
as$me=>$yg){$Oe=$ji;$Ee=-10;foreach($yg[0]as$y=>$rh){$dg=$Q["pos"][0]+$Q["fields"][$rh]["pos"];$eg=$Sg[$Uh]["pos"][0]+$Sg[$Uh]["fields"][$yg[1][$y]]["pos"];$Oe=min($Oe,$dg,$eg);$Ee=max($Ee,$dg,$eg);}echo"<div class='references' id='refl$me' style='left: $me"."em; top: $Oe"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($Ee-$Oe)."em;'></div></div>\n";}}}echo'</div>
|
||
<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">Permanent link</a>
|
||
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){save_settings(array_intersect_key($_POST,array_flip(array("output","format","db_style","types","routines","events","table_style","auto_increment","triggers","data_style"))),"adminer_export");$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Xd=preg_match('~sql~',$_POST["format"]);if($Xd){echo"-- Adminer $ia ".$Zb[DRIVER]." ".str_replace("\n"," ",$f->server_info)." dump\n\n";if(JUSH=="sql"){echo"SET NAMES utf8;
|
||
SET time_zone = '+00:00';
|
||
SET foreign_key_checks = 0;
|
||
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||
":"")."
|
||
";$f->query("SET time_zone = '+00:00'");$f->query("SET sql_mode = ''");}}$Dh=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
|
||
as$j){$b->dumpDatabase($j);if($f->select_db($j)){if($Xd&&preg_match('~CREATE~',$Dh)&&($h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1))){set_utf8mb4($h);if($Dh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo"$h;\n";}if($Xd){if($Dh)echo
|
||
use_sql($j).";\n\n";$If="";if($_POST["types"]){foreach(types()as$u=>$U){$vc=type_values($u);if($vc)$If.=($Dh!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($vc);\n\n";else$If.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$J){$B=$J["ROUTINE_NAME"];$Mg=$J["ROUTINE_TYPE"];$h=create_routine($Mg,array("name"=>$B)+routine($J["SPECIFIC_NAME"],$Mg));set_utf8mb4($h);$If.=($Dh!='DROP+CREATE'?"DROP $Mg IF EXISTS ".idf_escape($B).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($h);$If.=($Dh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$h;;\n\n";}}echo($If&&JUSH=='sql'?"DELIMITER ;;\n\n$If"."DELIMITER ;\n\n":$If);}if($_POST["table_style"]||$_POST["data_style"]){$Vi=array();foreach(table_status('',true)as$B=>$R){$Q=(DB==""||in_array($B,(array)$_POST["tables"]));$Gb=(DB==""||in_array($B,(array)$_POST["data"]));if($Q||$Gb){if($Gc=="tar"){$hi=new
|
||
TmpFile;ob_start(array($hi,'write'),1e5);}$b->dumpTable($B,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Vi[]=$B;elseif($Gb){$o=fields($B);$b->dumpData($B,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($B));}if($Xd&&$_POST["triggers"]&&$Q&&($ui=trigger_sql($B)))echo"\nDELIMITER ;;\n$ui\nDELIMITER ;\n";if($Gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$B.csv",$hi);}elseif($Xd)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$B=>$R){$Q=(DB==""||in_array($B,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
|
||
foreign_keys_sql($B);}}foreach($Vi
|
||
as$Ui)$b->dumpTable($Ui,$_POST["table_style"],1);if($Gc=="tar")echo
|
||
pack("x512");}}}$b->dumpFooter();exit;}page_header('Export',$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
';$Kb=array('','USE','DROP+CREATE','CREATE');$Ph=array('','DROP+CREATE','CREATE');$Hb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Hb[]='INSERT+UPDATE';$J=get_settings("adminer_export");if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($J["events"])){$J["routines"]=$J["events"]=($_GET["dump"]=="");$J["triggers"]=$J["table_style"];}echo"<tr><th>".'Output'."<td>".html_radios("output",$b->dumpOutput(),$J["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",$b->dumpFormat(),$J["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$Kb,$J["db_style"]).(support("type")?checkbox("types",1,$J["types"],'User types'):"").(support("routine")?checkbox("routines",1,$J["routines"],'Routines'):"").(support("event")?checkbox("events",1,$J["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Ph,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$J["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$Hb,$J["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
|
||
<table>
|
||
',script("qsl('table').onclick = dumpClick;");$ig=array();if(DB!=""){$Wa=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Wa>".'Tables'."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Wa></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Vi="";$Qh=tables_list();foreach($Qh
|
||
as$B=>$U){$hg=preg_replace('~_.*~','',$B);$Wa=($a==""||$a==(substr($a,-1)=="%"?"$hg%":$B));$kg="<tr><td>".checkbox("tables[]",$B,$Wa,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$Vi.="$kg\n";else
|
||
echo"$kg<td align='right'><label class='block'><span id='Rows-".h($B)."'></span>".checkbox("data[]",$B,$Wa)."</label>\n";$ig[$hg]++;}echo$Vi;if($Qh)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"").">".'Database'."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$i=$b->databases();if($i){foreach($i
|
||
as$j){if(!information_schema($j)){$hg=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$hg%",$j,"","block")."\n";$ig[$hg]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$Tc=true;foreach($ig
|
||
as$y=>$X){if($y!=""&&$X>1){echo($Tc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$y%")."'>".h($y)."</a>";$Tc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');echo'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";$H=$f->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$ld=$H;if(!$H)$H=$f->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($ld?"":"<input type='hidden' name='grant' value=''>\n"),"<table class='odds'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th></thead>\n";while($J=$H->fetch_assoc())echo'<tr><td>'.h($J["User"])."<td>".h($J["Host"]).'<td><a href="'.h(ME.'user='.urlencode($J["User"]).'&host='.urlencode($J["Host"])).'">'.'Edit'."</a>\n";if(!$ld||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);$b->dumpFooter();exit;}restart_session();$_d=&get_session("queries");$zd=&$_d[DB];if(!$m&&$_POST["clear"]){$zd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$m);if(!$m&&$_POST){$r=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$vh=$b->importServerPath();$r=@fopen((file_exists($vh)?$vh:"compress.zlib://$vh.gz"),"rb");$G=($r?fread($r,1e6):false);}else$G=get_file("sql_file",true,";");if(is_string($G)){if(function_exists('memory_get_usage')&&($Ie=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Ie,2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$rg=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$zd||reset(end($zd))!=$rg){restart_session();$zd[]=array($rg,time());set_session("queries",$_d);stop_session();}}$sh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Qb=";";$C=0;$pc=true;$g=connect($b->credentials());if(is_object($g)&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$kb=0;$xc=array();$Pf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|-- |$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$ki=microtime(true);$oa=get_settings("adminer_import");$gc=$b->dumpFormat();unset($gc["sql"]);while($G!=""){if(!$C&&preg_match("~^$sh*+DELIMITER\\s+(\\S+)~i",$G,$A)){$Qb=$A[1];$G=substr($G,strlen($A[0]));}else{preg_match('('.preg_quote($Qb)."\\s*|$Pf)",$G,$A,PREG_OFFSET_CAPTURE,$C);list($ed,$cg)=$A[0];if(!$ed&&$r&&!feof($r))$G.=fread($r,1e5);else{if(!$ed&&rtrim($G)=="")break;$C=$cg+strlen($ed);if($ed&&rtrim($ed)!=$Qb){$Pa=$l->hasCStyleEscapes()||(JUSH=="pgsql"&&($cg>0&&strtolower($G[$cg-1])=="e"));$Xf=($ed=='/*'?'\*/':($ed=='['?']':(preg_match('~^-- |^#~',$ed)?"\n":preg_quote($ed).($Pa?"|\\\\.":""))));while(preg_match("($Xf|\$)s",$G,$A,PREG_OFFSET_CAPTURE,$C)){$Qg=$A[0][0];if(!$Qg&&$r&&!feof($r))$G.=fread($r,1e5);else{$C=$A[0][1]+strlen($Qg);if(!$Qg||$Qg[0]!="\\")break;}}}else{$pc=false;$rg=substr($G,0,$cg);$kb++;$kg="<pre id='sql-$kb'><code class='jush-".JUSH."'>".$b->sqlCommandQuery($rg)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$sh*+ATTACH\\b~i",$rg,$A)){echo$kg,"<p class='error'>".'ATTACH queries are not supported.'."\n";$xc[]=" <a href='#sql-$kb'>$kb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$kg;ob_flush();flush();}$_h=microtime(true);if($f->multi_query($rg)&&is_object($g)&&preg_match("~^$sh*+USE\\b~i",$rg))$g->query($rg);do{$H=$f->store_result();if($f->error){echo($_POST["only_errors"]?$kg:""),"<p class='error'>".'Error in query'.($f->errno?" ($f->errno)":"").": ".error()."\n";$xc[]=" <a href='#sql-$kb'>$kb</a>";if($_POST["error_stops"])break
|
||
2;}else{$ai=" <span class='time'>(".format_time($_h).")</span>".(strlen($rg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($rg))."'>".'Edit'."</a>":"");$qa=$f->affected_rows;$Yi=($_POST["only_errors"]?"":$l->warnings());$Zi="warnings-$kb";if($Yi)$ai.=", <a href='#$Zi'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$Zi');","");$Ec=null;$Fc="explain-$kb";if(is_object($H)){$z=$_POST["limit"];$Af=select($H,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$cf=$H->num_rows;echo"<p>".($cf?($z&&$cf>$z?sprintf('%d / ',$z):"").lang(array('%d row','%d rows'),$cf):""),$ai;if($g&&preg_match("~^($sh|\\()*+SELECT\\b~i",$rg)&&($Ec=explain($g,$rg)))echo", <a href='#$Fc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Fc');","");$u="export-$kb";echo", <a href='#$u'>".'Export'."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."<span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$oa["output"])." ".html_select("format",$gc,$oa["format"])."<input type='hidden' name='query' value='".h($rg)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n"."</form>\n";}}else{if(preg_match("~^$sh*+(CREATE|DROP|ALTER)$sh++(DATABASE|SCHEMA)\\b~i",$rg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($f->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$qa)."$ai\n";}echo($Yi?"<div id='$Zi' class='hidden'>\n$Yi</div>\n":"");if($Ec){echo"<div id='$Fc' class='hidden explain'>\n";select($Ec,$g,$Af);echo"</div>\n";}}$_h=microtime(true);}while($f->next_result());}$G=substr($G,$C);$C=0;}}}}if($pc)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$kb-count($xc))," <span class='time'>(".format_time($ki).")</span>\n";elseif($xc&&$kb>1)echo"<p class='error'>".'Error in query'.": ".implode("",$xc)."\n";}else
|
||
echo"<p class='error'>".upload_error($G)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$Cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$rg=$_GET["sql"];if($_POST)$rg=$_POST["query"];elseif($_GET["history"]=="all")$rg=$zd;elseif($_GET["history"]!="")$rg=$zd[$_GET["history"]][0];echo"<p>";textarea("query",$rg,20);echo
|
||
script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"<p>$Cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>";$rd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$rd (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Cc":'File uploads are disabled.'),"</div></fieldset>\n";$Gd=$b->importServerPath();if($Gd)echo"<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>".h($Gd)."$rd</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n";echo"<p>";}echo
|
||
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Show only errors')."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$zd){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($zd);$X;$X=prev($zd)){$y=key($zd);list($rg,$ai,$kc)=$X;echo'<a href="'.h(ME."sql=&history=$y").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$ai)."'>".@date("H:i:s",$ai)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$rg)))),80,"</code>").($kc?" <span class='time'>($kc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
|
||
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$Fi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
|
||
as$B=>$n){if(!isset($n["privileges"][$Fi?"update":"insert"])||$b->fieldName($n)==""||$n["generated"])unset($o[$B]);}if($_POST&&!$m&&!isset($_GET["select"])){$ue=$_POST["referer"];if($_POST["insert"])$ue=($Fi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$ue))$ue=ME."select=".urlencode($a);$x=indexes($a);$Ai=unique_array($_GET["where"],$x);$ug="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($ue,'Item has been deleted.',$l->delete($a,$ug,!$Ai));else{$N=array();foreach($o
|
||
as$B=>$n){$X=process_input($n);if($X!==false&&$X!==null)$N[idf_escape($B)]=$X;}if($Fi){if(!$N)redirect($ue);queries_redirect($ue,'Item has been updated.',$l->update($a,$N,$ug,!$Ai));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$H=$l->insert($a,$N);$le=($H?last_id():0);queries_redirect($ue,sprintf('Item%s has been inserted.',($le?" $le":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($o
|
||
as$B=>$n){if(isset($n["privileges"]["select"])){$wa=($_POST["clone"]&&$n["auto_increment"]?"''":convert_field($n));$L[]=($wa?"$wa AS ":"").idf_escape($B);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$l->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$m=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$o){if(!$Z){$H=$l->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($l->primary=>"");}if($J){foreach($J
|
||
as$y=>$X){if(!$Z)$J[$y]=null;$o[$y]=array("field"=>$y,"null"=>($y!=$l->primary),"auto_increment"=>($y==$l->primary));}}}edit_form($a,$o,$J,$Fi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Rf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$Rf[$y]=$y;$_g=referencable_primary($a);$cd=array();foreach($_g
|
||
as$Lh=>$n)$cd[str_replace("`","``",$Lh)."`".str_replace("`","``",$n["field"])]=$Lh;$Df=array();$R=array();if($a!=""){$Df=fields($a);$R=table_status($a);if(!$R)$m='No tables.';}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$o=array();$ua=array();$Ji=false;$ad=array();$Cf=reset($Df);$sa=" FIRST";foreach($J["fields"]as$y=>$n){$q=$cd[$n["type"]];$vi=($q!==null?$_g[$q]:$n);if($n["field"]!=""){if(!$n["generated"])$n["default"]=null;$pg=process_field($n,$vi);$ua[]=array($n["orig"],$pg,$sa);if(!$Cf||$pg!==process_field($Cf,$Cf)){$o[]=array($n["orig"],$pg,$sa);if($n["orig"]!=""||$sa)$Ji=true;}if($q!==null)$ad[idf_escape($n["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$cd[$n["type"]],'source'=>array($n["field"]),'target'=>array($vi["field"]),'on_delete'=>$n["on_delete"],));$sa=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Ji=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Cf=next($Df);if(!$Cf)$sa="";}}$Tf="";if(support("partitioning")){if(isset($Rf[$J["partition_by"]])){$Of=array();foreach($J
|
||
as$y=>$X){if(preg_match('~^partition~',$y))$Of[$y]=$X;}foreach($Of["partition_names"]as$y=>$B){if($B==""){unset($Of["partition_names"][$y]);unset($Of["partition_values"][$y]);}}if($Of!=get_partitions_info($a)){$Uf=array();if($Of["partition_by"]=='RANGE'||$Of["partition_by"]=='LIST'){foreach($Of["partition_names"]as$y=>$B){$Y=$Of["partition_values"][$y];$Uf[]="\n PARTITION ".idf_escape($B)." VALUES ".($Of["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Tf.="\nPARTITION BY $Of[partition_by]($Of[partition])";if($Uf)$Tf.=" (".implode(",",$Uf)."\n)";elseif($Of["partitions"])$Tf.=" PARTITIONS ".(+$Of["partitions"]);}}elseif(preg_match("~partitioned~",$R["Create_options"]))$Tf.="\nREMOVE PARTITIONING";}$Je='Table has been altered.';if($a==""){cookie("adminer_engine",$J["Engine"]);$Je='Table has been created.';}$B=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($B),$Je,alter_table($a,$B,(JUSH=="sqlite"&&($Ji||$ad)?$ua:$o),$ad,($J["Comment"]!=$R["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$R["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$R["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Tf));}}page_header(($a!=""?'Alter table':'Create table'),$m,array("table"=>$a),h($a));if(!$_POST){$xi=$l->types();$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($xi["int"])?"int":(isset($xi["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$R;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Df
|
||
as$n){$n["generated"]=$n["generated"]?:(isset($n["default"])?"DEFAULT":"");$J["fields"][]=$n;}if(support("partitioning")){$J+=get_partitions_info($a);$J["partition_names"][]="";$J["partition_values"][]="";}}}$gb=collations();$rc=engines();foreach($rc
|
||
as$qc){if(!strcasecmp($qc,$J["Engine"])){$J["Engine"]=$qc;break;}}echo'
|
||
<form action="" method="post" id="form">
|
||
<p>
|
||
';if(support("columns")||$a==""){echo'Table name'."<input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($J["name"])."' autocapitalize='off'>\n",($rc?html_select("Engine",array(""=>"(".'engine'.")")+$rc,$J["Engine"]).on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($gb)echo"<datalist id='collations'>".optionlist($gb)."</datalist>",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($J["Collation"])."' placeholder='(".'collation'.")'>");echo"<input type='submit' value='".'Save'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($J["fields"],$gb,"TABLE",$cd);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Auto Increment'.": <input type='number' name='Auto_increment' class='size' value='".h($J["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Default values',"columnShow(this.checked, 5)","jsonly");$nb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$nb,'Comment',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$J["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($nb?"":" class='hidden'").">".h($J["Comment"])."</textarea>":'<input name="Comment" value="'.h($J["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($nb?"":" class='hidden'").'>'):''),'<p>
|
||
<input type="submit" value="Save">
|
||
';}echo'
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));if(support("partitioning")){$Sf=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",'Partition by',$J["partition_by"]);echo"<p>".html_select("partition_by",array(""=>"")+$Rf,$J["partition_by"]).on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($J["partition"])."'>)\n",'Partitions'.": <input type='number' name='partitions' class='size".($Sf||!$J["partition_by"]?" hidden":"")."' value='".h($J["partitions"])."'>\n","<table id='partition-table'".($Sf?"":" class='hidden'").">\n","<thead><tr><th>".'Partition name'."<th>".'Values'."</thead>\n";foreach($J["partition_names"]as$y=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($y==count($J["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h($J["partition_values"][$y]).'">';echo"</table>\n</div></fieldset>\n";}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Kd=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$R["Engine"]))$Kd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$Kd[]="SPATIAL";$x=indexes($a);$F=array();if(JUSH=="mongo"){$F=$x["_id_"];unset($Kd[0]);unset($x["_id_"]);}$J=$_POST;if($J)save_settings(array("index_options"=>$J["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$w){$B=$w["name"];if(in_array($w["type"],$Kd)){$e=array();$re=array();$Sb=array();$N=array();ksort($w["columns"]);foreach($w["columns"]as$y=>$d){if($d!=""){$qe=$w["lengths"][$y];$Rb=$w["descs"][$y];$N[]=idf_escape($d).($qe?"(".(+$qe).")":"").($Rb?" DESC":"");$e[]=$d;$re[]=($qe?:null);$Sb[]=$Rb;}}$Dc=$x[$B];if($Dc){ksort($Dc["columns"]);ksort($Dc["lengths"]);ksort($Dc["descs"]);if($w["type"]==$Dc["type"]&&array_values($Dc["columns"])===$e&&(!$Dc["lengths"]||array_values($Dc["lengths"])===$re)&&array_values($Dc["descs"])===$Sb){unset($x[$B]);continue;}}if($e)$c[]=array($w["type"],$B,$N);}}foreach($x
|
||
as$B=>$Dc)$c[]=array($Dc["type"],$B,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$c));}page_header('Indexes',$m,array("table"=>$a),h($a));$o=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$y=>$w){if($w["columns"][count($w["columns"])]!="")$J["indexes"][$y]["columns"][]="";}$w=end($J["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($x
|
||
as$y=>$w){$x[$y]["name"]=$y;$x[$y]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$J["indexes"]=$x;}$re=(JUSH=="sql"||JUSH=="mssql");$lh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
<thead><tr>
|
||
<th id="label-type">Index Type
|
||
<th><input type="submit" class="wayoff">','Column'.($re?"<span class='idxopts".($lh?"":" hidden")."'> (".'length'.")</span>":"");if($re||support("descidx"))echo
|
||
checkbox("options",1,$lh,'Options',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
|
||
<th><noscript>',"<input type='image' class='icon' name='add[0]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".'Add next'."'>",'</noscript>
|
||
</thead>
|
||
';if($F){echo"<tr><td>PRIMARY<td>";foreach($F["columns"]as$y=>$d)echo
|
||
select_input(" disabled",$o,$d),"<label><input disabled type='checkbox'>".'descending'."</label> ";echo"<td><td>\n";}$ae=1;foreach($J["indexes"]as$w){if(!$_POST["drop_col"]||$ae!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ae][type]",array(-1=>"")+$Kd,$w["type"],($ae==count($J["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$y=>$d){echo"<span>".select_input(" name='indexes[$ae][columns][$t]' title='".'Column'."'",($o?array_combine($o,$o):$o),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span class='idxopts".($lh?"":" hidden")."'>",($re?"<input type='number' name='indexes[$ae][lengths][$t]' class='size' value='".h($w["lengths"][$y])."' title='".'Length'."'>":""),(support("descidx")?checkbox("indexes[$ae][descs][$t]",1,$w["descs"][$y],'descending'):""),"</span> </span>";$t++;}echo"<td><input name='indexes[$ae][name]' value='".h($w["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td><input type='image' class='icon' name='drop_col[$ae]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=5.0.6")."' alt='x' title='".'Remove'."'>".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ae++;}echo'</table>
|
||
</div>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$B=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$B){if(DB!=""){$_GET["db"]=$B;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($B),'Database has been renamed.',rename_database($B,$J["collation"]));}else{$i=explode("\n",str_replace("\r","",$B));$Eh=true;$ke="";foreach($i
|
||
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$J["collation"]))$Eh=false;$ke=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($ke),'Database has been created.',$Eh);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$m,array(),h(DB));$gb=collations();$B=DB;if($_POST)$B=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$gb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$ld){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ld,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add_x"]||strpos($B,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($B).'</textarea><br>':'<input name="name" autofocus value="'.h($B).'" data-maxlength="64" autocapitalize="off">')."\n".($gb?html_select("collation",array(""=>"(".'collation'.")")+$gb,$J["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),'<input type="submit" value="Save">
|
||
';if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".'Add next'."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$m){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schema has been dropped.');else{$B=trim($J["name"]);$_.=urlencode($B);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($B),$_,'Schema has been created.');elseif($_GET["ns"]!=$B)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($B),$_,'Schema has been altered.');else
|
||
redirect($_);}}page_header($_GET["ns"]!=""?'Alter schema':'Create schema',$m);if(!$J)$J["name"]=$_GET["ns"];echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" autofocus value="',h($J["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$_GET["ns"]))."\n";echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?:$_GET["call"]);page_header('Call'.": ".h($da),$m);$Mg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Hd=array();$If=array();foreach($Mg["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT")$If[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Hd[]=$t;}if(!$m&&$_POST){$Qa=array();foreach($Mg["fields"]as$y=>$n){if(in_array($y,$Hd)){$X=process_input($n);if($X===false)$X="''";if(isset($If[$y]))$f->query("SET @".idf_escape($n["field"])." = $X");}$Qa[]=(isset($If[$y])?"@".idf_escape($n["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Qa).")";$_h=microtime(true);$H=$f->multi_query($G);$qa=$f->affected_rows;echo$b->selectQuery($G,$_h,!$H);if(!$H)echo"<p class='error'>".error()."\n";else{$g=connect($b->credentials());if(is_object($g))$g->select_db(DB);do{$H=$f->store_result();if(is_object($H))select($H,$g);else
|
||
echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$qa)." <span class='time'>".@date("H:i:s")."</span>\n";}while($f->next_result());if($If)select($f->query("SELECT ".implode(", ",$If)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Hd){echo"<table class='layout'>\n";foreach($Hd
|
||
as$y){$n=$Mg["fields"][$y];$B=$n["field"];echo"<tr><th>".$b->fieldName($n);$Y=$_POST["fields"][$B];if($Y!=""){if($n["type"]=="set")$Y=implode(",",$Y);}input($n,$Y,(string)$_POST["function"][$B]);echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
|
||
<pre>
|
||
';function
|
||
pre_tr($Qg){return
|
||
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Qg))));}$Q='(\+--[-+]+\+\n)';$J='(\| .* \|\n)';echo
|
||
preg_replace_callback("~^$Q?$J$Q?($J*)$Q?~m",function($A){$Uc=pre_tr($A[2]);return"<table>\n".($A[1]?"<thead>$Uc</thead>\n":$Uc).pre_tr($A[4])."\n</table>";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Mg['comment']))));echo'</pre>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_GET["name"];$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Th=array();foreach($J["source"]as$y=>$X)$Th[$y]=$J["target"][$y];$J["target"]=$Th;}if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(" $B"=>($J["drop"]?"":" ".format_foreign_key($J))));else{$c="ALTER TABLE ".table($a);$H=($B==""||queries("$c DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B)));if(!$J["drop"])$H=queries("$c ADD".format_foreign_key($J));}queries_redirect(ME."table=".urlencode($a),($J["drop"]?'Foreign key has been dropped.':($B!=""?'Foreign key has been altered.':'Foreign key has been created.')),$H);if(!$J["drop"])$m="$m<br>".'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.';}page_header('Foreign key',$m,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($B!=""){$cd=foreign_keys($a);$J=$cd[$B];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
|
||
<form action="" method="post">
|
||
';$rh=array_keys(fields($a));if($J["db"]!="")$f->select_db($J["db"]);if($J["ns"]!=""){$Ef=get_schema();set_schema($J["ns"]);}$zg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Th=array_keys(fields(in_array($J["table"],$zg)?$J["table"]:reset($zg)));$pf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>".'Target table'.": ".html_select("table",$zg,$J["table"],$pf)."\n";if(support("scheme")){$Tg=array_filter($b->schemas(),function($Sg){return!preg_match('~^information_schema$~i',$Sg);});echo'Schema'.": ".html_select("ns",$Tg,$J["ns"]!=""?$J["ns"]:$_GET["ns"],$pf);if($J["ns"]!="")set_schema($Ef);}elseif(JUSH!="sqlite"){$Lb=array();foreach($b->databases()as$j){if(!information_schema($j))$Lb[]=$j;}echo'DB'.": ".html_select("db",$Lb,$J["db"]!=""?$J["db"]:$_GET["db"],$pf);}echo'<input type="hidden" name="change-js" value="">
|
||
<noscript><p><input type="submit" name="change" value="Change"></noscript>
|
||
<table>
|
||
<thead><tr><th id="label-source">Source<th id="label-target">Target</thead>
|
||
';$ae=0;foreach($J["source"]as$y=>$X){echo"<tr>","<td>".html_select("source[".(+$y)."]",array(-1=>"")+$rh,$X,($ae==count($J["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$y)."]",$Th,$J["target"][$y],"","label-target");$ae++;}echo'</table>
|
||
<p>
|
||
ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",$l->onActions),$J["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",$l->onActions),$J["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'<p>
|
||
<input type="submit" value="Save">
|
||
<noscript><p><input type="submit" name="add" value="Add column"></noscript>
|
||
';if($B!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$B));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Ff="VIEW";if(JUSH=="pgsql"&&$a!=""){$O=table_status($a);$Ff=strtoupper($O["Engine"]);}if($_POST&&!$m){$B=trim($J["name"]);$wa=" AS\n$J[select]";$ue=ME."table=".urlencode($B);$Je='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$Ff=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$wa,$ue,$Je);else{$Vh=$B."_adminer_".uniqid();drop_create("DROP $Ff ".table($a),"CREATE $U ".table($B).$wa,"DROP $U ".table($B),"CREATE $U ".table($Vh).$wa,"DROP $U ".table($Vh),($_POST["drop"]?substr(ME,0,-1):$ue),'View has been dropped.',$Je,'View has been created.',$a,$B);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Ff!="VIEW");if(!$m)$m=error();}page_header(($a!=""?'Alter view':'Create view'),$m,array("table"=>$a),h($a));echo'
|
||
<form action="" method="post">
|
||
<p>Name: <input name="name" value="',h($J["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],'Materialized view'):""),'<p>';textarea("select",$J["select"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Sd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ah=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($J["INTERVAL_FIELD"],$Sd)&&isset($Ah[$J["STATUS"]])){$Rg="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Rg.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$Rg)."\n".$Ah[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$m);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Name<td><input name="EVENT_NAME" value="',h($J["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
|
||
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$J[EXECUTE_AT]$J[STARTS]"),'">
|
||
<tr><th title="datetime">End<td><input name="ENDS" value="',h($J["ENDS"]),'">
|
||
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($J["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Sd,$J["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$Ah,$J["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($J["EVENT_COMMENT"]),'" data-maxlength="64">
|
||
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
|
||
<p>';textarea("EVENT_DEFINITION",$J["EVENT_DEFINITION"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($aa!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$aa));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?:$_GET["procedure"]);$Mg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$m){$Bf=routine($_GET["procedure"],$Mg);$Vh="$J[name]_adminer_".uniqid();drop_create("DROP $Mg ".routine_id($da,$Bf),create_routine($Mg,$J),"DROP $Mg ".routine_id($J["name"],$J),create_routine($Mg,array("name"=>$Vh)+$J),"DROP $Mg ".routine_id($Vh,$J),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$m);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Mg);$J["name"]=$da;}$gb=get_vals("SHOW CHARACTER SET");sort($gb);$Ng=routine_languages();echo($gb?"<datalist id='collations'>".optionlist($gb)."</datalist>":""),'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($J["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',($Ng?'Language'.": ".html_select("language",$Ng,$J["language"])."\n":""),'<input type="submit" value="Save">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
';edit_fields($J["fields"],$gb,$Mg);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$J["returns"],$gb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
|
||
',script("editFields();"),'</div>
|
||
<p>';textarea("definition",$J["definition"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($da!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$da));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$B=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,'Sequence has been dropped.');elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($B),$_,'Sequence has been created.');elseif($fa!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($B),$_,'Sequence has been altered.');else
|
||
redirect($_);}page_header($fa!=""?'Alter sequence'.": ".h($fa):'Create sequence',$m);if(!$J)$J["name"]=$fa;echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" value="',h($J["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($fa!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$fa))."\n";echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,'Type has been dropped.');else
|
||
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$_,'Type has been created.');}page_header($ga!=""?'Alter type'.": ".h($ga):'Create type',$m);if(!$J)$J["as"]="AS ";echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
';if($ga!=""){$xi=$l->types();$vc=type_values($xi[$ga]);if($vc)echo"<code class='jush-".JUSH."'>ENUM (".h($vc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$ga))."\n";}else{echo'Name'.": <input name='name' value='".h($J['name'])."' autocapitalize='off'>\n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$J["as"]);echo"<p><input type='submit' value='".'Save'."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$B=$_GET["name"];$J=$_POST;if($J&&!$m){if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(),0,array(),$B,($J["drop"]?"":$J["clause"]));else{$H=($B==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($B)));if(!$J["drop"])$H=queries("ALTER TABLE ".table($a)." ADD".($J["name"]!=""?" CONSTRAINT ".idf_escape($J["name"]):"")." CHECK ($J[clause])");}queries_redirect(ME."table=".urlencode($a),($J["drop"]?'Check has been dropped.':($B!=""?'Check has been altered.':'Check has been created.')),$H);}page_header(($B!=""?'Alter check'.": ".h($B):'Create check'),$m,array("table"=>$a));if(!$J){$Xa=$l->checkConstraints($a);$J=array("name"=>$B,"clause"=>$Xa[$B]);}echo'
|
||
<form action="" method="post">
|
||
<p>';if(JUSH!="sqlite")echo'Name'.': <input name="name" value="'.h($J["name"]).'" data-maxlength="64" autocapitalize="off"> ';echo
|
||
doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'<p>';textarea("clause",$J["clause"]);echo'<p><input type="submit" value="Save">
|
||
';if($B!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$B));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B=$_GET["name"];$ti=trigger_options();$J=(array)trigger($B,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$ti["Timing"])&&in_array($_POST["Event"],$ti["Event"])&&in_array($_POST["Type"],$ti["Type"])){$mf=" ON ".table($a);$ac="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$mf:"");$ue=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($ac,$ue,'Trigger has been dropped.');else{if($B!="")queries($ac);queries_redirect($ue,($B!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($mf,$_POST)));if($B!="")queries(create_trigger($mf,$J+array("Type"=>reset($ti["Type"]))));}}$J=$_POST;}page_header(($B!=""?'Alter trigger'.": ".h($B):'Create trigger'),$m,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table class="layout">
|
||
<tr><th>Time<td>',html_select("Timing",$ti["Timing"],$J["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$ti["Event"],$J["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$ti["Event"])?" <input name='Of' value='".h($J["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$ti["Type"],$J["Type"]),'</table>
|
||
<p>Name: <input name="Trigger" value="',h($J["Trigger"]),'" data-maxlength="64" autocapitalize="off">
|
||
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$J["Statement"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($B!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$B));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$ng=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$vb)$ng[$vb][$J["Privilege"]]=$J["Comment"];}$ng["Server Admin"]+=$ng["File access on server"];$ng["Databases"]["Create routine"]=$ng["Procedures"]["Create routine"];unset($ng["Procedures"]["Create routine"]);$ng["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$ng["Columns"][$X]=$ng["Tables"][$X];unset($ng["Server Admin"]["Usage"]);foreach($ng["Tables"]as$y=>$X)unset($ng["Databases"][$y]);$We=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$We[$X]=(array)$We[$X]+(array)$_POST["grants"][$y];}$md=array();$kf="";if(isset($_GET["host"])&&($H=$f->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$Ae,PREG_SET_ORDER)){foreach($Ae
|
||
as$X){if($X[1]!="USAGE")$md["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$md["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$A))$kf=$A[1];}}if($_POST&&!$m){$lf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $lf",ME."privileges=",'User has been dropped.');else{$Ye=q($_POST["user"])."@".q($_POST["host"]);$Vf=$_POST["pass"];if($Vf!=''&&!$_POST["hashed"]&&!min_version(8)){$Vf=get_val("SELECT PASSWORD(".q($Vf).")");$m=!$Vf;}$_b=false;if(!$m){if($lf!=$Ye){$_b=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Ye IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Vf));$m=!$_b;}elseif($Vf!=$kf)queries("SET PASSWORD FOR $Ye = ".q($Vf));}if(!$m){$Jg=array();foreach($We
|
||
as$ef=>$ld){if(isset($_GET["grant"]))$ld=array_filter($ld);$ld=array_keys($ld);if(isset($_GET["grant"]))$Jg=array_diff(array_keys(array_filter($We[$ef],'strlen')),$ld);elseif($lf==$Ye){$if=array_keys((array)$md[$ef]);$Jg=array_diff($if,$ld);$ld=array_diff($ld,$if);unset($md[$ef]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$ef,$A)&&(!grant("REVOKE",$Jg,$A[2]," ON $A[1] FROM $Ye")||!grant("GRANT",$ld,$A[2]," ON $A[1] TO $Ye"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($lf!=$Ye)queries("DROP USER $lf");elseif(!isset($_GET["grant"])){foreach($md
|
||
as$ef=>$Jg){if(preg_match('~^(.+)(\(.*\))?$~U',$ef,$A))grant("REVOKE",array_keys($Jg),$A[2]," ON $A[1] FROM $Ye");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$m);if($_b)$f->query("DROP USER $Ye");}}page_header((isset($_GET["host"])?'Username'.": ".h("$ha@$_GET[host]"):'Create user'),$m,array("privileges"=>array('','Privileges')));$J=$_POST;if($J)$md=$We;else{$J=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$kf;if($kf!="")$J["hashed"]=true;$md[(DB==""||$md?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Server<td><input name="host" data-maxlength="60" value="',h($J["host"]),'" autocapitalize="off">
|
||
<tr><th>Username<td><input name="user" data-maxlength="80" value="',h($J["user"]),'" autocapitalize="off">
|
||
<tr><th>Password<td><input name="pass" id="pass" value="',h($J["pass"]),'" autocomplete="new-password">
|
||
',($J["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$J["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);")),'</table>
|
||
|
||
',"<table class='odds'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($md
|
||
as$ef=>$ld){echo'<th>'.($ef!="*.*"?"<input name='objects[$t]' value='".h($ef)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$vb=>$Rb){foreach((array)$ng[$vb]as$mg=>$lb){echo"<tr><td".($Rb?">$Rb<td":" colspan='2'").' lang="en" title="'.h($lb).'">'.h($mg);$t=0;foreach($md
|
||
as$ef=>$ld){$B="'grants[$t][".h(strtoupper($mg))."]'";$Y=$ld[strtoupper($mg)];if($vb=="Server Admin"&&$ef!=(isset($md["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$B><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
|
||
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$B value='1'".($Y?" checked":"").($mg=="All privileges"?" id='grants-$t-all'>":">".($mg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$t-all'); };"))),"</label>";$t++;}}}echo"</table>\n",'<p>
|
||
<input type="submit" value="Save">
|
||
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',"$ha@$_GET[host]"));echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$ge=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ge++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$ge),$ge||!$_POST["kill"]);}}page_header('Process list',$m);echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap checkable odds">
|
||
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$J){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($J
|
||
as$y=>$X)echo"<th>$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$J[JUSH=="sql"?"Id":"pid"],0):"");foreach($J
|
||
as$y=>$X)echo"<td>".((JUSH=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$J["Command"])&&$X!="")||(JUSH=="pgsql"&&$y=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$y=="sql_text"&&$X!="")?"<code class='jush-".JUSH."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($J["db"]!=""?"db=".urlencode($J["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':h($X));echo"\n";}echo'</table>
|
||
</div>
|
||
<p>
|
||
';if(support("kill"))echo($t+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$x=indexes($a);$o=fields($a);$cd=column_foreign_keys($a);$gf=$R["Oid"];$pa=get_settings("adminer_import");$Kg=array();$e=array();$Wg=array();$yf=array();$Zh=null;foreach($o
|
||
as$y=>$n){$B=$b->fieldName($n);$Ue=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($n["privileges"]["select"])&&$B!=""){$e[$y]=$Ue;if(is_shortable($n))$Zh=$b->selectLengthProcess();}if(isset($n["privileges"]["where"])&&$B!="")$Wg[$y]=$Ue;if(isset($n["privileges"]["order"])&&$B!="")$yf[$y]=$Ue;$Kg+=$n["privileges"];}list($L,$nd)=$b->selectColumnsProcess($e,$x);$L=array_unique($L);$nd=array_unique($nd);$Wd=count($nd)<count($L);$Z=$b->selectSearchProcess($o,$x);$xf=$b->selectOrderProcess($o,$x);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Bi=>$J){$wa=convert_field($o[key($J)]);$L=array($wa?:idf_escape(key($J)));$Z[]=where_check($Bi,$o);$I=$l->select($a,$L,$Z,$L);if($I)echo
|
||
reset($I->fetch_row());}exit;}$F=$Di=null;foreach($x
|
||
as$w){if($w["type"]=="PRIMARY"){$F=array_flip($w["columns"]);$Di=($L?$F:array());foreach($Di
|
||
as$y=>$X){if(in_array(idf_escape($y),$L))unset($Di[$y]);}break;}}if($gf&&!$F){$F=$Di=array($gf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($gf));}if($_POST&&!$m){$bj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Xa=array();foreach($_POST["check"]as$Ta)$Xa[]=where_check($Ta,$o);$bj[]="((".implode(") OR (",$Xa)."))";}$bj=($bj?"\nWHERE ".implode(" AND ",$bj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);$b->dumpTable($a,"");$gd=($L?implode(", ",$L):"*").convert_fields($e,$o,$L)."\nFROM ".table($a);$pd=($nd&&$Wd?"\nGROUP BY ".implode(", ",$nd):"").($xf?"\nORDER BY ".implode(", ",$xf):"");$G="SELECT $gd$bj$pd";if(is_array($_POST["check"])&&!$F){$_i=array();foreach($_POST["check"]as$X)$_i[]="(SELECT".limit($gd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$pd,1).")";$G=implode(" UNION ALL ",$_i);}$b->dumpData($a,"table",$G);$b->dumpFooter();exit;}if(!$b->selectEmailProcess($Z,$cd)){if($_POST["save"]||$_POST["delete"]){$H=true;$qa=0;$N=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$B=>$X){$X=process_input($o[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($F&&is_array($_POST["check"]))||$Wd){$H=($_POST["delete"]?$l->delete($a,$bj):($_POST["clone"]?queries("INSERT $G$bj"):$l->update($a,$N,$bj)));$qa=$f->affected_rows;}else{foreach((array)$_POST["check"]as$X){$aj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$H=($_POST["delete"]?$l->delete($a,$aj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$aj)):$l->update($a,$N,$aj,1)));if(!$H)break;$qa+=$f->affected_rows;}}}$Je=lang(array('%d item has been affected.','%d items have been affected.'),$qa);if($_POST["clone"]&&$H&&$qa==1){$le=last_id();if($le)$Je=sprintf('Item%s has been inserted.'," $le");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Je,$H);if(!$_POST["delete"]){$gg=(array)$_POST["fields"];edit_form($a,array_intersect_key($o,$gg),$gg,!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m='Ctrl+click on a value to modify it.';else{$H=true;$qa=0;foreach($_POST["val"]as$Bi=>$J){$N=array();foreach($J
|
||
as$y=>$X){$y=bracket_escape($y,1);$N[idf_escape($y)]=(preg_match('~char|text~',$o[$y]["type"])||$X!=""?$b->processInput($o[$y],$X):"NULL");}$H=$l->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Bi,$o),!$Wd&&!$F," ");if(!$H)break;$qa+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$qa),$H);}}elseif(!is_string($Rc=get_file("csv_file",true)))$m=upload_error($Rc);elseif(!preg_match('~~u',$Rc))$m='File must be in UTF-8 encoding.';else{save_settings(array("output"=>$pa["output"],"format"=>$_POST["separator"]),"adminer_import");$H=true;$hb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Rc,$Ae);$qa=count($Ae[0]);$l->begin();$ch=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($Ae[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ch]*)$ch~",$X.$ch,$Be);if(!$y&&!array_diff($Be[1],$hb)){$hb=$Be[1];$qa--;}else{$N=array();foreach($Be[1]as$t=>$db)$N[idf_escape($hb[$t])]=($db==""&&$o[$hb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$db)?str_replace('""','"',substr($db,1,-1)):$db));$K[]=$N;}}$H=(!$K||$l->insertUpdate($a,$K,$F));if($H)$l->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$qa),$H);$l->rollback();}}}$Lh=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $Lh",$m);$N=null;if(isset($Kg["insert"])||!support("table")){$Of=array();foreach((array)$_GET["where"]as$X){if(isset($cd[$X["col"]])&&count($cd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Of["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$N=$Of?"&".http_build_query($Of):"";}$b->selectLinks($R,$N);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($o?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):""),'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($L,$e);$b->selectSearchPrint($Z,$Wg,$x);$b->selectOrderPrint($xf,$yf,$x);$b->selectLimitPrint($z);$b->selectLengthPrint($Zh);$b->selectActionPrint($x);echo"</form>\n";$D=$_GET["page"];if($D=="last"){$fd=get_val(count_rows($a,$Z,$Wd,$nd));$D=floor(max(0,$fd-1)/$z);}$Xg=$L;$od=$nd;if(!$Xg){$Xg[]="*";$wb=convert_fields($e,$o,$L);if($wb)$Xg[]=substr($wb,2);}foreach($L
|
||
as$y=>$X){$n=$o[idf_unescape($X)];if($n&&($wa=convert_field($n)))$Xg[$y]="$wa AS $X";}if(!$Wd&&$Di){foreach($Di
|
||
as$y=>$X){$Xg[]=idf_escape($y);if($od)$od[]=idf_escape($y);}}$H=$l->select($a,$Xg,$Z,$od,$xf,$z,$D,true);if(!$H)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$D)$H->seek($z*$D);$oc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$K=array();while($J=$H->fetch_assoc()){if($D&&JUSH=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["page"]!="last"&&$z!=""&&$nd&&$Wd&&JUSH=="sql")$fd=get_val(" SELECT FOUND_ROWS()");if(!$K)echo"<p class='message'>".'No rows.'."\n";else{$Ea=$b->backwardKeys($a,$Lh);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$nd&&$L?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Ve=array();$id=array();reset($L);$wg=1;foreach($K[0]as$y=>$X){if(!isset($Di[$y])){$X=$_GET["columns"][key($L)];$n=$o[$L?($X?$X["col"]:current($L)):$y];$B=($n?$b->fieldName($n,$wg):($X["fun"]?"*":h($y)));if($B!=""){$wg++;$Ve[$y]=$B;$d=idf_escape($y);$Bd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$Rb="&desc%5B0%5D=1";$qh=isset($n["privileges"]["order"]);echo"<th id='th[".h(bracket_escape($y))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$hd=apply_sql_function($X["fun"],$B);echo($qh?'<a href="'.h($Bd.($xf[0]==$d||$xf[0]==$y||(!$xf&&$Wd&&$nd[0]==$d)?$Rb:'')).'">'."$hd</a>":$hd),"<span class='column hidden'>";if($qh)echo"<a href='".h($Bd.$Rb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]&&isset($n["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($y)."');");echo"</span>";}$id[$y]=$X["fun"];next($L);}}$re=array();if($_GET["modify"]){foreach($K
|
||
as$J){foreach($J
|
||
as$y=>$X)$re[$y]=max($re[$y],min(40,strlen(utf8_decode($X))));}}echo($Ea?"<th>".'Relations':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach($b->rowDescriptions($K,$cd)as$Te=>$J){$Ai=unique_array($K[$Te],$x);if(!$Ai){$Ai=array();foreach($K[$Te]as$y=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$y))$Ai[$y]=$X;}}$Bi="";foreach($Ai
|
||
as$y=>$X){if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$o[$y]["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$o[$y]["collation"])?$y:"CONVERT($y USING ".charset($f).")").")";$X=md5($X);}$Bi.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($y));}echo"<tr>".(!$nd&&$L?"":"<td>".checkbox("check[]",substr($Bi,1),in_array(substr($Bi,1),(array)$_POST["check"])).($Wd||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Bi)."' class='edit'>".'edit'."</a>"));foreach($J
|
||
as$y=>$X){if(isset($Ve[$y])){$n=$o[$y];$X=$l->value($X,$n);if($X!=""&&(!isset($oc[$y])||$oc[$y]!=""))$oc[$y]=(is_mail($X)?$Ve[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$n["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$Bi;if(!$_&&$X!==null){foreach((array)$cd[$y]as$q){if(count($cd[$y])==1||end($q["source"])==$y){$_="";foreach($q["source"]as$t=>$rh)$_.=where_link($t,$q["target"][$t],$K[$Te][$rh]);$_=($q["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($q["db"]),ME):ME).'select='.urlencode($q["table"]).$_;if($q["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($q["ns"]),$_);if(count($q["source"])==1)break;}}}if($y=="COUNT(*)"){$_=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Ai))$_.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($Ai
|
||
as$ce=>$W)$_.=where_link($t++,$ce,$W);}$X=select_value($X,$_,$n,$Zh);$u=h("val[$Bi][".bracket_escape($y)."]");$Y=$_POST["val"][$Bi][bracket_escape($y)];$jc=!is_array($J[$y])&&is_utf8($X)&&$K[$Te][$y]==$J[$y]&&!$id[$y]&&!$n["generated"];$Xh=preg_match('~text|json|lob~',$n["type"]);echo"<td id='$u'".(preg_match(number_type(),$n["type"])&&is_numeric(strip_tags($X))?" class='number'":"");if(($_GET["modify"]&&$jc)||$Y!==null){$sd=h($Y!==null?$Y:$J[$y]);echo">".($Xh?"<textarea name='$u' cols='30' rows='".(substr_count($J[$y],"\n")+1)."'>$sd</textarea>":"<input name='$u' value='$sd' size='$re[$y]'>");}else{$we=strpos($X,"<i>…</i>");echo" data-text='".($we?2:($Xh?1:0))."'".($jc?"":" data-warning='".h('Use edit link to modify this value.')."'").">$X";}}}if($Ea)echo"<td>";$b->backwardKeysPrint($Ea,$K[$Te]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($K||$D){$Bc=true;if($_GET["page"]!="last"){if($z==""||(count($K)<$z&&($K||!$D)))$fd=($D?$D*$z:0)+count($K);elseif(JUSH!="sql"||!$Wd){$fd=($Wd?false:found_rows($R,$Z));if($fd<max(1e4,2*($D+1)*$z))$fd=reset(slow_query(count_rows($a,$Z,$Wd,$nd)));else$Bc=false;}}$Mf=($z!=""&&($fd===false||$fd>$z||$D));if($Mf)echo(($fd===false?count($K)+1:$fd-$D*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($D+1)).'" class="loadmore">'.'Load more data'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, ".(+$z).", '".'Loading'."…');",""):''),"\n";}echo"<div class='footer'><div>\n";if($K||$D){if($Mf){$De=($fd===false?$D+(count($K)>=$z?2:1):floor(($fd-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Page'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Page'."', '".($D+1)."')); return false; };"),pagination(0,$D).($D>5?" …":"");for($t=max(1,$D-4);$t<min($De,$D+5);$t++)echo
|
||
pagination($t,$D);if($De>0)echo($D+5<$De?" …":""),($Bc&&$fd!==false?pagination($De,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$De'>".'last'."</a>");}else
|
||
echo"<legend>".'Page'."</legend>",pagination(0,$D).($D>1?" …":""),($D?pagination($D,$D):""),($De>$D?pagination($D+1,$D).($De>$D+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$Xb=($Bc?"":"~ ").$fd;$qf="var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Xb' : checked); selectCount('selected2', this.checked || !checked ? '$Xb' : checked);";echo
|
||
checkbox("all",1,0,($fd!==false?($Bc?"":"~ ").lang(array('%d row','%d rows'),$fd):""),$qf)."\n","</fieldset>\n";if($b->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
|
||
<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
|
||
</div></fieldset>
|
||
<fieldset><legend>Selected <span id="selected"></span></legend><div>
|
||
<input type="submit" name="edit" value="Edit">
|
||
<input type="submit" name="clone" value="Clone">
|
||
<input type="submit" name="delete" value="Delete">',confirm(),'</div></fieldset>
|
||
';$dd=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($dd['sql']);break;}}if($dd){print_fieldset("export",'Export'." <span id='selected2'></span>");$Jf=$b->dumpOutput();echo($Jf?html_select("output",$Jf,$pa["output"])." ":""),html_select("format",$dd,$pa["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($oc,'strlen'),$e);}echo"</div></div>\n";if($b->selectImportPrint())echo"<div>","<a href='#import'>".'Import'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$pa["format"])," <input type='submit' name='import' value='".'Import'."'>","</span>","</div>";echo"<input type='hidden' name='token' value='$T'>\n","</form>\n",(!$nd&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?'Status':'Variables');$Ri=($O?show_status():show_variables());if(!$Ri)echo"<p class='message'>".'No rows.'."\n";else{echo"<table>\n";foreach($Ri
|
||
as$y=>$X)echo"<tr>","<th><code class='jush-".JUSH.($O?"status":"set")."'>".h($y)."</code>","<td>".nl_br(h($X));echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Hh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$B=>$R){json_row("Comment-$B",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$y)json_row("$y-$B",h($R[$y]));foreach($Hh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($R[$y]!=""){$X=format_number($R[$y]);if($X>=0)json_row("$y-$B",($y=="Rows"&&$X&&$R["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Hh[$y]))$Hh[$y]+=($R["Engine"]!="InnoDB"||$y!="Data_free"?$R[$y]:0);}elseif(array_key_exists($y,$R))json_row("$y-$B","?");}}}foreach($Hh
|
||
as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Rh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Rh&&!$m&&!$_POST["search"]){$H=true;$Je="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$Je='Tables have been truncated.';}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Je='Tables have been moved.';}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Je='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Je='Tables have been dropped.';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$Q){foreach(get_rows("PRAGMA integrity_check(".q($Q).")")as$J)$Je.="<b>".h($Q)."</b>: ".h($J["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$H=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Je='Tables have been optimized.';}elseif(!$_POST["tables"])$Je='No tables.';elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$Je.="<b>".h($J["Table"])."</b>: ".h($J["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Je,$H);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$m,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Qh=tables_list();if(!$Qh)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$l->convertOperator("LIKE %%");search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.'Data Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.'Index Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.'Data Free'.doc_link(array('sql'=>'show-table-status.html')),'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.'Rows'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.'Comment'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$S=0;foreach($Qh
|
||
as$B=>$U){$Ui=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$B);echo'<tr><td>'.checkbox(($Ui?"views[]":"tables[]"),$B,in_array($B,$Rh,true),"","","",$u),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($B)."' title='".'Show structure'."' id='$u'>".h($B).'</a>':h($B));if($Ui)echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($B).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized view':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($B).'" title="'.'Select data'.'">?</a>';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$y=>$_){$u=" id='$y-".h($B)."'";echo($_?"<td align='right'>".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($B)."'$u title='$_[1]'>?</a>":"<span$u>?</span>"):"<td id='$y-".h($B)."'>");}$S++;}echo(support("comment")?"<td id='Comment-".h($B)."'>":""),"\n";}echo"<tr><td><th>".sprintf('%d in total',count($Qh)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"<td align='right' id='sum-$y'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Oi="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$tf="<input type='submit' name='optimize' value='".'Optimize'."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".(JUSH=="sqlite"?$Oi."<input type='submit' name='check' value='".'Check'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Oi.$tf:(JUSH=="sql"?"<input type='submit' value='".'Analyze'."'> ".on_help("'ANALYZE TABLE'").$tf."<input type='submit' name='check' value='".'Check'."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".'Repair'."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".'Truncate'."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".'Drop'."'>".on_help("'DROP TABLE'").confirm()."\n";$i=(support("scheme")?$b->schemas():$b->databases());if(count($i)!=1&&JUSH!="sqlite"){$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'> ".checkbox("overwrite",1,$_POST["overwrite"],'overwrite'):""),"\n";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")." }"),"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$Og=routines();if($Og){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td></thead>\n";foreach($Og
|
||
as$J){$B=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($J["SPECIFIC_NAME"]).$B).'">'.h($J["ROUTINE_NAME"]).'</a>','<td>'.h($J["ROUTINE_TYPE"]),'<td>'.h($J["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($J["SPECIFIC_NAME"]).$B).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".'Sequences'."</h3>\n";$fh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($fh){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($fh
|
||
as$X)echo"<tr><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".'Create sequence'."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".'User types'."</h3>\n";$Mi=types();if($Mi){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($Mi
|
||
as$X)echo"<tr><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".'Create type'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$K=get_rows("SHOW EVENTS");if($K){echo"<table>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($K
|
||
as$J)echo"<tr>","<th>".h($J["Name"]),"<td>".($J["Execute at"]?'At given time'."<td>".$J["Execute at"]:'Every'." ".$J["Interval value"]." ".$J["Interval field"]."<td>$J[Starts]"),"<td>$J[Ends]",'<td><a href="'.h(ME).'event='.urlencode($J["Name"]).'">'.'Alter'.'</a>';echo"</table>\n";$_c=get_val("SELECT @@event_scheduler");if($_c&&$_c!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($_c)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Qh)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |