1727 lines
No EOL
319 KiB
PHP
1727 lines
No EOL
319 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.3.0
|
||
*/namespace
|
||
Adminer;const
|
||
VERSION="5.3.0";error_reporting(24575);set_error_handler(function($Dc,$Fc){return!!preg_match('~^Undefined (array key|offset|index)~',$Fc);},E_WARNING|E_NOTICE);$ad=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($ad||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$oj=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($oj)$$X=$oj;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
|
||
connection($g=null){return($g?:Db::$instance);}function
|
||
adminer(){return
|
||
Adminer::$instance;}function
|
||
driver(){return
|
||
Driver::$instance;}function
|
||
connect(){$Fb=adminer()->credentials();$J=Driver::connect($Fb[0],$Fb[1],$Fb[2]);return(is_object($J)?$J:null);}function
|
||
idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$He=substr($u,-1);return
|
||
str_replace($He.$He,$He,substr($u,1,-1));}function
|
||
q($Q){return
|
||
connection()->quote($Q);}function
|
||
escape_string($X){return
|
||
substr(q($X),1,-1);}function
|
||
idx($va,$x,$k=null){return($va&&array_key_exists($x,$va)?$va[$x]:$k);}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(array$Wg,$ad=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($x,$X)=each($Wg)){foreach($X
|
||
as$_e=>$W){unset($Wg[$x][$_e]);if(is_array($W)){$Wg[$x][stripslashes($_e)]=$W;$Wg[]=&$Wg[$x][stripslashes($_e)];}else$Wg[$x][stripslashes($_e)]=($ad?$W:stripslashes($W));}}}}function
|
||
bracket_escape($u,$Ca=false){static$Xi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
|
||
strtr($u,($Ca?array_flip($Xi):$Xi));}function
|
||
min_version($Ej,$Ve="",$g=null){$g=connection($g);$Qh=$g->server_info;if($Ve&&preg_match('~([\d.]+)-MariaDB~',$Qh,$A)){$Qh=$A[1];$Ej=$Ve;}return$Ej&&version_compare($Qh,$Ej)>=0;}function
|
||
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
|
||
ini_bool($je){$X=ini_get($je);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
|
||
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
|
||
set_password($Dj,$N,$V,$F){$_SESSION["pwds"][$Dj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
|
||
get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
|
||
get_val($H,$m=0,$tb=null){$tb=connection($tb);$I=$tb->query($H);if(!is_object($I))return
|
||
false;$K=$I->fetch_row();return($K?$K[$m]:false);}function
|
||
get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
|
||
get_key_vals($H,$g=null,$Th=true){$g=connection($g);$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($Th)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
|
||
get_rows($H,$g=null,$l="<p class='error'>"){$tb=connection($g);$J=array();$I=$tb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$J;}function
|
||
unique_array($K,array$w){foreach($w
|
||
as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$J=array();foreach($v["columns"]as$x){if(!isset($K[$x]))continue
|
||
2;$J[$x]=$K[$x];}return$J;}}}function
|
||
escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
|
||
idf_escape($x);}function
|
||
where(array$Z,array$n=array()){$J=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$Yc=$m["type"];$J[]=$d.(JUSH=="sql"&&$Yc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Yc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Yc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$J[]=escape_key($x)." IS NULL";return
|
||
implode(" AND ",$J);}function
|
||
where_check($X,array$n=array()){parse_str($X,$Wa);remove_slashes(array(&$Wa));return
|
||
where($Wa,$n);}function
|
||
where_link($s,$d,$Y,$Tf="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$Tf:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
|
||
convert_fields(array$e,array$n,array$M=array()){$J="";foreach($e
|
||
as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$wa=convert_field($n[$x]);if($wa)$J
|
||
.=", $wa AS ".idf_escape($x);}return$J;}function
|
||
cookie($B,$Y,$Oe=2592000){header("Set-Cookie: $B=".urlencode($Y).($Oe?"; expires=".gmdate("D, d M Y H:i:s",time()+$Oe)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
|
||
get_settings($Bb){parse_str($_COOKIE[$Bb],$Uh);return$Uh;}function
|
||
get_setting($x,$Bb="adminer_settings"){$Uh=get_settings($Bb);return$Uh[$x];}function
|
||
save_settings(array$Uh,$Bb="adminer_settings"){$Y=http_build_query($Uh+get_settings($Bb));cookie($Bb,$Y);$_COOKIE[$Bb]=$Y;}function
|
||
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
|
||
stop_session($id=false){$wj=ini_bool("session.use_cookies");if(!$wj||$id){session_write_close();if($wj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
|
||
set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function
|
||
auth_url($Dj,$N,$V,$j=null){$sj=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Dj=='mssql'||$Dj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$sj,$A);return"$A[1]?".(sid()?SID."&":"").($Dj!="server"||$N!=""?urlencode($Dj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($A[2]?"&$A[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($Re,$if=null){if($if!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Re!==null?$Re:$_SERVER["REQUEST_URI"]))][]=$if;}if($Re!==null){if($Re=="")$Re=".";header("Location: $Re");exit;}}function
|
||
query_redirect($H,$Re,$if,$fh=true,$Kc=true,$Tc=false,$Ki=""){if($Kc){$ji=microtime(true);$Tc=!connection()->query($H);$Ki=format_time($ji);}$di=($H?adminer()->messageQuery($H,$Ki,$Tc):"");if($Tc){adminer()->error
|
||
.=error().$di.script("messagesPrint();")."<br>";return
|
||
false;}if($fh)redirect($Re,$if.$di);return
|
||
true;}class
|
||
Queries{static$queries=array();static$start=0;}function
|
||
queries($H){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return
|
||
connection()->query($H);}function
|
||
apply_queries($H,array$T,$Gc='Adminer\table'){foreach($T
|
||
as$R){if(!queries("$H ".$Gc($R)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($Re,$if,$fh){$ah=implode("\n",Queries::$queries);$Ki=format_time(Queries::$start);return
|
||
query_redirect($ah,$Re,$if,$fh,false,!$fh,$Ki);}function
|
||
format_time($ji){return
|
||
sprintf('%.3f s',max(0,microtime(true)-$ji));}function
|
||
relative_uri(){return
|
||
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
|
||
remove_from_uri($qg=""){return
|
||
substr(preg_replace("~(?<=[?&])($qg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
|
||
get_file($x,$Rb=false,$Xb=""){$Zc=$_FILES[$x];if(!$Zc)return
|
||
null;foreach($Zc
|
||
as$x=>$X)$Zc[$x]=(array)$X;$J='';foreach($Zc["error"]as$x=>$l){if($l)return$l;$B=$Zc["name"][$x];$Si=$Zc["tmp_name"][$x];$yb=file_get_contents($Rb&&preg_match('~\.gz$~',$B)?"compress.zlib://$Si":$Si);if($Rb){$ji=substr($yb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$ji))$yb=iconv("utf-16","utf-8",$yb);elseif($ji=="\xEF\xBB\xBF")$yb=substr($yb,3);}$J
|
||
.=$yb;if($Xb)$J
|
||
.=(preg_match("($Xb\\s*\$)",$yb)?"":$Xb)."\n\n";}return$J;}function
|
||
upload_error($l){$df=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Unable to upload a file.'.($df?" ".sprintf('Maximum allowed file size is %sB.',$df):""):'File does not exist.');}function
|
||
repeat_pattern($Cg,$y){return
|
||
str_repeat("$Cg{0,65535}",$y/65535)."$Cg{0,".($y%65535)."}";}function
|
||
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}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($R,$Uc=false){$J=table_status($R,$Uc);return($J?reset($J):array("Name"=>$R));}function
|
||
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$J[$X][]=$p;}return$J;}function
|
||
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$B=bracket_escape($x,true);$J[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($x==driver()->primary),);}return$J;}function
|
||
dump_headers($Qd,$sf=false){$J=adminer()->dumpHeaders($Qd,$sf);$mg=$_POST["output"];if($mg!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Qd).".$J".($mg!="file"&&preg_match('~^[0-9a-z]+$~',$mg)?".$mg":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
|
||
dump_csv(array$K){foreach($K
|
||
as$x=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$x]='"'.str_replace('"','""',$X).'"';}echo
|
||
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
|
||
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function
|
||
get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$J=dirname($o);unlink($o);}}return$J;}function
|
||
file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function
|
||
file_write_unlock($q,$Lb){rewind($q);fwrite($q,$Lb);ftruncate($q,strlen($Lb));file_unlock($q);}function
|
||
file_unlock($q){flock($q,LOCK_UN);fclose($q);}function
|
||
first(array$va){return
|
||
reset($va);}function
|
||
password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$J=stream_get_contents($q);if(!$J){$J=rand_string();file_write_unlock($q,$J);}else
|
||
file_unlock($q);return$J;}function
|
||
rand_string(){return
|
||
md5(uniqid(strval(mt_rand()),true));}function
|
||
select_value($X,$_,array$m,$Ji){if(is_array($X)){$J="";foreach($X
|
||
as$_e=>$W)$J
|
||
.="<tr>".($X!=array_values($X)?"<th>".h($_e):"")."<td>".select_value($W,$_,$m,$Ji);return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal($X,$m);if($J!==null){if(!is_utf8($J))$J="\0";elseif($Ji!=""&&is_shortable($m))$J=shorten_utf8($J,max(0,+$Ji));else$J=h($J);}return
|
||
adminer()->selectVal($J,$_,$m,$X);}function
|
||
is_mail($uc){$xa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$gc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Cg="$xa+(\\.$xa+)*@($gc?\\.)+$gc";return
|
||
is_string($uc)&&preg_match("(^$Cg(,\\s*$Cg)*\$)i",$uc);}function
|
||
is_url($Q){$gc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
|
||
preg_match("~^(https?)://($gc?\\.)+$gc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
|
||
is_shortable(array$m){return
|
||
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$m["type"]);}function
|
||
count_rows($R,array$Z,$te,array$wd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($te&&(JUSH=="sql"||count($wd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$wd).")$H":"SELECT COUNT(*)".($te?" FROM (SELECT 1$H GROUP BY ".implode(", ",$wd).") x":$H));}function
|
||
slow_query($H){$j=adminer()->database();$Li=adminer()->queryTimeout();$Yh=driver()->slowQuery($H,$Li);$g=null;if(!$Yh&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$Ce=get_val(connection_id(),0,$g);echo
|
||
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Ce&token=".get_token()."'); }, 1000 * $Li);");}}ob_flush();flush();$J=@get_key_vals(($Yh?:$H),$g,false);if($g){echo
|
||
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
|
||
get_token(){$dh=rand(1,1e6);return($dh^$_SESSION["token"]).":$dh";}function
|
||
verify_token(){list($Ti,$dh)=explode(":",$_POST["token"]);return($dh^$_SESSION["token"])==$Ti;}function
|
||
lzw_decompress($Ia){$cc=256;$Ja=8;$gb=array();$qh=0;$rh=0;for($s=0;$s<strlen($Ia);$s++){$qh=($qh<<8)+ord($Ia[$s]);$rh+=8;if($rh>=$Ja){$rh-=$Ja;$gb[]=$qh>>$rh;$qh&=(1<<$rh)-1;$cc++;if($cc>>$Ja)$Ja++;}}$bc=range("\0","\xFF");$J="";$Nj="";foreach($gb
|
||
as$s=>$fb){$tc=$bc[$fb];if(!isset($tc))$tc=$Nj.$Nj[0];$J
|
||
.=$tc;if($s)$bc[]=$Nj.$tc[0];$Nj=$tc;}return$J;}function
|
||
script($ai,$Wi="\n"){return"<script".nonce().">$ai</script>$Wi";}function
|
||
script_src($tj,$Ub=false){return"<script src='".h($tj)."'".nonce().($Ub?" defer":"")."></script>\n";}function
|
||
nonce(){return' nonce="'.get_nonce().'"';}function
|
||
input_hidden($B,$Y=""){return"<input type='hidden' name='".h($B)."' value='".h($Y)."'>\n";}function
|
||
input_token(){return
|
||
input_hidden("token",get_token());}function
|
||
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
|
||
h($Q){return
|
||
str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
|
||
nl_br($Q){return
|
||
str_replace("\n","<br>",$Q);}function
|
||
checkbox($B,$Y,$Za,$Ee="",$Sf="",$db="",$Ge=""){$J="<input type='checkbox' name='$B' value='".h($Y)."'".($Za?" checked":"").($Ge?" aria-labelledby='$Ge'":"").">".($Sf?script("qsl('input').onclick = function () { $Sf };",""):"");return($Ee!=""||$db?"<label".($db?" class='$db'":"").">$J".h($Ee)."</label>":$J);}function
|
||
optionlist($Xf,$Ih=null,$xj=false){$J="";foreach($Xf
|
||
as$_e=>$W){$Yf=array($_e=>$W);if(is_array($W)){$J
|
||
.='<optgroup label="'.h($_e).'">';$Yf=$W;}foreach($Yf
|
||
as$x=>$X)$J
|
||
.='<option'.($xj||is_string($x)?' value="'.h($x).'"':'').($Ih!==null&&($xj||is_string($x)?(string)$x:$X)===$Ih?' selected':'').'>'.h($X);if(is_array($W))$J
|
||
.='</optgroup>';}return$J;}function
|
||
html_select($B,array$Xf,$Y="",$Rf="",$Ge=""){static$Ee=0;$Fe="";if(!$Ge&&substr($Xf[""],0,1)=="("){$Ee++;$Ge="label-$Ee";$Fe="<option value='' id='$Ge'>".h($Xf[""]);unset($Xf[""]);}return"<select name='".h($B)."'".($Ge?" aria-labelledby='$Ge'":"").">".$Fe.optionlist($Xf,$Y)."</select>".($Rf?script("qsl('select').onchange = function () { $Rf };",""):"");}function
|
||
html_radios($B,array$Xf,$Y="",$Mh=""){$J="";foreach($Xf
|
||
as$x=>$X)$J
|
||
.="<label><input type='radio' name='".h($B)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>$Mh";return$J;}function
|
||
confirm($if="",$Jh="qsl('input')"){return
|
||
script("$Jh.onclick = () => confirm('".($if?js_escape($if):'Are you sure?')."');","");}function
|
||
print_fieldset($t,$Me,$Hj=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$Me</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($Hj?"":" class='hidden'").">\n";}function
|
||
bold($La,$db=""){return($La?" class='active $db'":($db?" class='$db'":""));}function
|
||
js_escape($Q){return
|
||
addcslashes($Q,"\r\n'\\/");}function
|
||
pagination($D,$Ib){return" ".($D==$Ib?$D+1:'<a href="'.h(remove_from_uri("page").($D?"&page=$D".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($D+1)."</a>");}function
|
||
hidden_fields(array$Wg,array$Ud=array(),$Og=''){$J=false;foreach($Wg
|
||
as$x=>$X){if(!in_array($x,$Ud)){if(is_array($X))hidden_fields($X,array(),$x);else{$J=true;echo
|
||
input_hidden(($Og?$Og."[$x]":$x),$X);}}}return$J;}function
|
||
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
|
||
enum_input($U,$ya,array$m,$Y,$xc=null){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ye);$J=($xc!==null?"<label><input type='$U'$ya value='$xc'".((is_array($Y)?in_array($xc,$Y):$Y===$xc)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Ye[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Za=(is_array($Y)?in_array($X,$Y):$Y===$X);$J
|
||
.=" <label><input type='$U'$ya value='".h($X)."'".($Za?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$J;}function
|
||
input(array$m,$Y,$r,$Ba=false){$B=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$Y=json_encode($Y,128|64|256);$r="json";}$ph=(JUSH=="mssql"&&$m["auto_increment"]);if($ph&&!$_POST["save"])$r=null;$rd=(isset($_GET["select"])||$ph?array("orig"=>'original'):array())+adminer()->editFunctions($m);$dc=stripos($m["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$ya=" name='fields[$B]'$dc".($Ba?" autofocus":"");$Cc=driver()->enumLength($m);if($Cc){$m["type"]="enum";$m["length"]=$Cc;}echo
|
||
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
|
||
h($rd[""])."<td>".adminer()->editInput($R,$m,$ya,$Y);else{$Dd=(in_array($r,$rd)||isset($rd[$r]));echo(count($rd)>1?"<select name='function[$B]'$dc>".optionlist($rd,$r===null||$Dd?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($rd))).'<td>';$le=adminer()->editInput($R,$m,$ya,$Y);if($le!="")echo$le;elseif(preg_match('~bool~',$m["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($m["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ye);foreach($Ye[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Za=in_array($X,explode(",",$Y),true);echo" <label><input type='checkbox' name='fields[$B][$s]' value='".h($X)."'".($Za?' checked':'').">".h(adminer()->editVal($X,$m)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$B'>";elseif($r=="json"||preg_match('~^jsonb?$~',$m["type"]))echo"<textarea$ya cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($Hi=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($Hi&&JUSH!="sqlite")$ya
|
||
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$ya
|
||
.=" cols='30' rows='$L'";}echo"<textarea$ya>".h($Y).'</textarea>';}else{$ij=driver()->types();$ff=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$A)?((preg_match("~binary~",$m["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$m["unsigned"]?1:0)):($ij[$m["type"]]?$ij[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$ff+=7;echo"<input".((!$Dd||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($ff?" data-maxlength='$ff'":"").(preg_match('~char|binary~',$m["type"])&&$ff>20?" size='".($ff>99?60:40)."'":"")."$ya>";}echo
|
||
adminer()->editHint($R,$m,$Y);$bd=0;foreach($rd
|
||
as$x=>$X){if($x===""||!$X)break;$bd++;}if($bd&&count($rd)>1)echo
|
||
script("qsl('td').oninput = partial(skipOriginal, $bd);");}}function
|
||
process_input(array$m){if(stripos($m["default"],"GENERATED ALWAYS AS ")===0)return;$u=bracket_escape($m["field"]);$r=idx($_POST["function"],$u);$Y=$_POST["fields"][$u];if($m["type"]=="enum"||driver()->enumLength($m)){if($Y==-1)return
|
||
false;if($Y=="")return"NULL";}if($m["auto_increment"]&&$Y=="")return
|
||
null;if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?idf_escape($m["field"]):false);if($r=="NULL")return"NULL";if($m["type"]=="set")$Y=implode(",",(array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
|
||
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads")){$Zc=get_file("fields-$u");if(!is_string($Zc))return
|
||
false;return
|
||
driver()->quoteBinary($Zc);}return
|
||
adminer()->processInput($m,$Y,$r);}function
|
||
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Lh="<ul>\n";foreach(table_status('',true)as$R=>$S){$B=adminer()->tableName($S);if(isset($S["Engine"])&&$B!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$Sg="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$B</a>";echo"$Lh<li>".($I?$Sg:"<p class='error'>$Sg: ".error())."\n";$Lh="";}}}echo($Lh?"<p class='message'>".'No tables.':"</ul>")."\n";}function
|
||
on_help($mb,$Wh=0){return
|
||
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $mb, $Wh) }, onmouseout: helpMouseout});","");}function
|
||
edit_form($R,array$n,$K,$rj,$l=''){$vi=adminer()->tableName(table_status1($R,true));page_header(($rj?'Edit':'Insert'),$l,array("select"=>array($R,$vi)),$vi);adminer()->editRowPrint($R,$n,$K,$rj);if($K===false){echo"<p class='error'>".'No rows.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$n)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($n
|
||
as$B=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($B));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$mh))$k=$mh[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($K!==null?($K[$B]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($K[$B])?implode(",",$K[$B]):(is_bool($K[$B])?+$K[$B]:$K[$B])):(!$rj&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$m);$r=($_POST["save"]?idx($_POST["function"],$B,""):($rj&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$rj&&$Y==$m["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$m["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($m["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}if($Ba!==false)$Ba=($m["auto_increment"]||$r=="now"||$r=="uuid"?null:true);input($m,$Y,$r,$Ba);if($Ba)$Ba=false;echo"\n";}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($n){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($rj?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($rj?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."…', this); };"):"");}echo($rj?"<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_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
|
||
shorten_utf8($Q,$y=80,$pi=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$y).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$y).")($)?)",$Q,$A);return
|
||
h($A[1]).$pi.(isset($A[2])?"":"<i>…</i>");}function
|
||
icon($Pd,$B,$Od,$Ni){return"<button type='submit' name='$B' title='".h($Ni)."' class='icon icon-$Pd'><span>$Od</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-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");}@ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08>б<EFBFBD><14><11>\"P<EFBFBD>i<EFBFBD><EFBFBD>m<EFBFBD><EFBFBD>cQCa<EFBFBD><EFBFBD> 2ó<><C3B3><EFBFBD>d<<3C><>f<EFBFBD>a<EFBFBD><61>:;NB<4E>q<EFBFBD>R;1Lf<4C>9<EFBFBD><39>u7&)<29>l;3<1B><><EFBFBD><EFBFBD><EFBFBD>J/<18><>CQX<>r2M<>a<04>i0<69><05><>)<29><>e:LuÝh<C39D>-9<><39>23l<33><6C>i7<0E><03>m<EFBFBD>Zw4<77><0E><>њ<-<2D><>̴<EFBFBD>!<21>U,<2C><0E>Fé<46>vt2<74><0E>S,<2C><>a<EFBFBD>҇F<D287>VX<56>a<EFBFBD>Nq<4E>)<29>-<2D><><EFBFBD>ǜh<C79C>:n5<6E><35><06>9<EFBFBD>Y<EFBFBD>;j<><6A>-<2D><>_<EFBFBD>9kr<6B><72>ٓ;.<2E>tTq<>o<EFBFBD>0<EFBFBD><30><19><><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD>\r<EFBFBD>Hn<EFBFBD><0B>GS<47><53>Zh<5A><68>;<3B>i^<5E>ux<75>WΒC@<40><><EFBFBD><EFBFBD>k<EFBFBD><6B>=<0C><>b<1A><><EFBFBD><EFBFBD><EFBFBD>/A<><41>0<EFBFBD>+<2B>(<28><05><>l<1B><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>:\r<EFBFBD><EFBFBD>b8\0<EFBFBD><EFBFBD>0!\0F<1C>\nB<EFBFBD>͎<EFBFBD>(<28>3<EFBFBD>\r\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȅa<EFBFBD><EFBFBD><EFBFBD>'I<>|<7C>(i<>\n<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>4O<>g@<40>4<12>C<EFBFBD><04>@@<16>!<21>QB<08><> °<>c<0E><>¯<10>q,\r1Eh<EFBFBD><EFBFBD>&2PZ<50><5A><EFBFBD>iG<08>H9G<39>\"v<EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4r<><1A><><EFBFBD>D<>R<EFBFBD>\n<18>pJ<70>-A<>|/.<2E>c<EFBFBD><63>Du<1C><06><><EFBFBD><EFBFBD>:,<2C><>=<3D><18>R<EFBFBD>]U5<55>mV<6D>k<EFBFBD>LLQ@-\\<EFBFBD><EFBFBD><EFBFBD><13>@9<><39>%<06>S<EFBFBD>r<EFBFBD><72><EFBFBD>MPD<><44>Ia\r<EFBFBD>(YY\\<EFBFBD>@X<>p<><70>:<3A><>p<EFBFBD>l<EFBFBD>LC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E><><EFBFBD>O,\r<EFBFBD>2]7<>?m06<30><36>p<EFBFBD>T<><08>aҥC<01>;_˗<18>yȴd<C8B4>><3E><>bn<62><6E><EFBFBD>n<>ܣ3<DCA3>X<EFBFBD><10><>8\r<EFBFBD>[ˀ-)<29>i>V[Y<>y&L3<4C>#<16>X|<7C> <09>X<EFBFBD>\\ù`<60>C<07><><EFBFBD><EFBFBD>#<23><>H<><48>2<EFBFBD>2.#<23><><EFBFBD>Z<EFBFBD>`<60><<3C><>s<EFBFBD><1D><><EFBFBD>Ò<EFBFBD><C392>\0u<EFBFBD>h־<EFBFBD><EFBFBD>M<EFBFBD><EFBFBD>_\niZeO/CӒ_<D392>`3<><33><1C>1><3E>=<3D><>k3<6B><33><EFBFBD><EFBFBD>R/;<3B>/d<><64>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7/<12><><15>A<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04>q.<2E>s<EFBFBD>L<EFBFBD><4C><EFBFBD> :\$<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>8<EFBFBD>߾~<07>H<EFBFBD>j<EFBFBD><6A>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ7gS<EFBFBD><EFBFBD><EFBFBD><07>FL<>ί<EFBFBD>Q<EFBFBD>_<EFBFBD><5F>O'W<><57>]c=<3D>5<EFBFBD>1X~7;<3B><>i<EFBFBD><69>\r<EFBFBD>*\n<EFBFBD><EFBFBD>JS1Z<31><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><13>c<EFBFBD><10><>t<EFBFBD><74>A<03>V<EFBFBD><56>86f<36>d<EFBFBD>y;Y<>]<01><>zI<0B>p<0E><><EFBFBD><19><>c<EFBFBD>3<EFBFBD>Y<EFBFBD>]}@<1B>\$.+<2B>1<EFBFBD>'>Z<>cpd<70><64><EFBFBD>GL<47><4C><EFBFBD>#k<>8Pz<08>Y<EFBFBD>Au<41>v<>]s9<73><39><06>_Aq<41><0C><>:<3A><><EFBFBD>\nK<EFBFBD>hB<01>;<3B><><1A>XbAHq,<1C><>CI<43>`<60><><11><>j<EFBFBD>S[ˌ<07>1<EFBFBD>V<1F>r<><72><EFBFBD>;<3B>p<EFBFBD>B<EFBFBD><42>)#鐉;4<1C>H<EFBFBD><48>/*<2A><<3C>3L<0B><>;lf<6C>\n<EFBFBD>s\$K`<60>}<05><>Ք<EFBFBD><D594><EFBFBD>7<>jx`d<>%j]<5D><>4<13><1B>Y<EFBFBD><59>HbY<14><>J`<60>GG<47><47>.<2E><>K<17><>f<0C>I<03>)2<>Mfָ<>X<EFBFBD>RC<52><43>̱V,<2C><><EFBFBD>~g\0<EFBFBD><16><>g6<67>:<3A>[j<>1H<05>:AlIq<49>u3\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><0E>|8<9s'<27>Q]J<>|<7C>\0<EFBFBD>`p<><70><EFBFBD>jf<0B>O<>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71>\$<EFBFBD><02><><EFBFBD>1J<31>>R<>H(ǔq\n#r<><72><EFBFBD><EFBFBD>@<18>e(y<>VJ<>0<EFBFBD>Q҈<51><D288><EFBFBD>6<EFBFBD>P<EFBFBD>[C:<3A>G伞<47><E4BC9E><EFBFBD>4<EFBFBD><34><0C>^<5E><><EFBFBD><EFBFBD>PZ<50><5A>\\<EFBFBD><EFBFBD><EFBFBD>(\n<EFBFBD><EFBFBD>)<29>~<7E><><EFBFBD>9R%<25>Sj<02>{<EFBFBD><1D>7<EFBFBD>0<EFBFBD>_<EFBFBD><5F>s z|8<>H<EFBFBD> \"@<40>#9DVL<56>\$H5<EFBFBD>WJ@<1B><>z<EFBFBD>a<1A>J <20>^ <09>)<29>2\nQv<><76>]<5D><><0E><><EFBFBD><EFBFBD><EFBFBD>j (A<><14><1A>BB05<30>6<EFBFBD>b˰][<5B><>k<EFBFBD>A<EFBFBD>wvkg<6B>ƴ<EFBFBD><C6B4><EFBFBD>+k[jm<6A>zc<7A>}<7D>MyDZi<5A>\$5e<EFBFBD><EFBFBD>ʷ<EFBFBD><0E><> <09>A<EFBFBD><41>CY%.W<>b*뮼<16>.<2E><><EFBFBD>q/%}B<>X<EFBFBD><58><EFBFBD>ZV337<>ʻa<CABB><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wW[<15>L<17>Q<10><>_<EFBFBD><14>2`<60>1I<31>i,<2C>曣<EFBFBD>Mf&(s-<2D><><EFBFBD><EFBFBD><EFBFBD>Aİ<05>*<1C><>Dw<44><77>TN<54>ɻ<EFBFBD>jX\$<EFBFBD>x<EFBFBD>+;<3B><><EFBFBD>F<EFBFBD>93<14>JkS;<3B><><18>qR{>l<>;B1A<31>I<>b)<29><>(6<><36>r<EFBFBD>\r<EFBFBD>\rڇ<EFBFBD><EFBFBD><1F><>Z<1B>R^SOy/<2F><>M#<23><>9{k<19><><EFBFBD><EFBFBD>v\"<EFBFBD>KC<EFBFBD>J<EFBFBD><EFBFBD>rEo\0<EFBFBD><EFBFBD>\\,<2C>|<7C>fa͚<61><CD9A>hI<68><49>/o<>4<>k^p<11>1H<>^<5E><1B><><0E>phǡV<C7A1>vox@<40>`<60>g<EFBFBD>&<26>(<28><15><><EFBFBD>;<3B><>~Ǎz<C78D>6<17>8<EFBFBD>*<2A><05><>5<EFBFBD><35><1D><>E<1D><><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD>Ә<><D398><EFBFBD>3<EFBFBD><33>ņg<1E><>rD<72>L<EFBFBD>)4g{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>峩<EFBFBD>L<EFBFBD><EFBFBD>&<26>>脻<><E884BB><06><>Z<EFBFBD>7<EFBFBD>\0<EFBFBD><EFBFBD>̊@<40><><11><><01>ff<66>RVh֝<18><>I<>ۈ<EFBFBD><DB88><EFBFBD>r<EFBFBD>w)<29><0E><><EFBFBD>=x^<03>,k<><6B>2<EFBFBD><32>ݓj<DD93>b<EFBFBD>l0u<30><75>\"<EFBFBD>fp<EFBFBD><EFBFBD>1<EFBFBD>RI<EFBFBD><EFBFBD>z[]<5D>w<EFBFBD>pN6dI<64>z<EFBFBD><7A><EFBFBD>n.7X{;<3B><>3<12><>-I <09><><EFBFBD><EFBFBD>7pjÝ<19>R<>#<23>,<0E>_-<2D><><EFBFBD>[<5B>>3<>\\<EFBFBD><EFBFBD><EFBFBD>Wq<EFBFBD>q<EFBFBD>J֘<EFBFBD>uh<EFBFBD><EFBFBD><EFBFBD>FbL<EFBFBD>K<EFBFBD><EFBFBD><EFBFBD>yVľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>f{K}S<><10>ޝ<><DE9D>M<EFBFBD><15><>̀<EFBFBD><CD80>.M<>\\<EFBFBD>ix<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>+<2B>α?<<3C>3<EFBFBD>~H<><48>\$<EFBFBD>\\<EFBFBD>2<EFBFBD>\$<1D> e<>6t<36>Ö<1D>\$s<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><16><>C<0B>nSkV<6B><56>=z6<7A><36><EFBFBD><EFBFBD>'æ<>Na<4E><61>ָh<D6B8><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>噣8g<38><67><EFBFBD><EFBFBD><EFBFBD>w:_<><5F><EFBFBD><08><><EFBFBD>ҒIRKÝ<>.<2E>nkVU+dwj<77><6A>%<25>`#,{<13>醳<0C><17><><18>Y<EFBFBD><59><0B><>(oվ<><D5BE>.<2E>c<EFBFBD>0g<04>DXOk<4F>7<EFBFBD><37>K<EFBFBD><4B>l<><6C>hx;<3B>؏ ݃L<DD83><0F>\$09*<2A>9 <20>hNr<4E>M<EFBFBD>.>\0<EFBFBD>rP9<01>\$<EFBFBD>g \0\$\\F<10>*<2A>d'<27><>L<>:<3A>b<EFBFBD><62><EFBFBD>4<>2<><32><05><>9<EFBFBD><39>@<40>Hnb<6E>-<0E><>E #Ĝ<><C49C><05><>rPY<07><><EFBFBD> t<> <20>\n<EFBFBD>5.<2E><><EFBFBD><05><>\$op<0C>l<06>X\n@`\r<EFBFBD><EFBFBD> <09><>\r<EFBFBD><EFBFBD><08><> <20> <20><08><> <09><><06><><06><> <20> @<40>@<40>\n <20> <20> \0j@<40>Q@<40>1\r<EFBFBD><EFBFBD>@<40> <20> \$p V\0<EFBFBD>``\n\0<EFBFBD>\n <20>\n@<40>'<27><><0C><>\n\0`\r<EFBFBD><EFBFBD><08><> <09><>\r<EFBFBD><EFBFBD><0C><>\0<EFBFBD>r<0E><><0C><> \0<EFBFBD>`<60> <09><><07>{ ,<2C>\"<EFBFBD><EFBFBD>^P<>0<>\n<EFBFBD><EFBFBD>4<10>\n0<EFBFBD><0B><>.0<EFBFBD>p<><0C><>\rp<EFBFBD>\r<EFBFBD><EFBFBD>p<><0E><>p<><0F>q<10>Q0<>%<12><><12>1Q8\n <20>\0<EFBFBD>k<>ȼ\0^<5E><><EFBFBD>\0`<0E><>@<40><0E><>>\n<EFBFBD>o1w<17>,Y h*=<3D><><0C><>P<>:іV<D196><56>и.q<><10><0C><>\r<10>\r<EFBFBD>p<><0E><>1<><0F>Q <10><1C>1<> <20>`<60><1D>/17<13><><1E><>\r<EFBFBD>^<06><>\"y`<60>\n<EFBFBD><EFBFBD> <20>#<23><>\0<EFBFBD> p\n<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>`<60> <20>r <20>Q<EFBFBD><51><EFBFBD>b<EFBFBD>1<EFBFBD><19>3\n<EFBFBD><EFBFBD>#<23><>#<23><>1<>\$q<EFBFBD>\$ѱ%0<>%q<>%<25><>&<11>&q<> <20>&<26>'1<>\rR}16 <20>@b\r`<60>`<60>\r<EFBFBD><EFBFBD> <09><><08><><0C>d<08><><06><> j\n<EFBFBD>``<0C><>\n<EFBFBD><EFBFBD>`dcсP<><50>,<2C>1R<><11>\$<10>rI<1A>O <20> Q <09>Y32b1<>&<26><>01<30><11><> <20><0C> f<0E><>\0<EFBFBD>\0<EFBFBD><0E><>f<>\0j\n<EFBFBD>f`<60> <20>\n`<60>@<40>\$n=`<60>\0<EFBFBD><0E>v nI<6E>\$<EFBFBD>P(<05>d'<27><><EFBFBD><EFBFBD><><7F><EFBFBD>g<EFBFBD>6<EFBFBD><36>-<2D><>-<2D>C7R<37><1A><> <20> 4<0C><><05>-1<>&<26><>2t\r<EFBFBD>\"\n H*@<40> <09>`\n <20> <20> <09><>l<>2<>,z\r<EFBFBD>~<7E> <20>\r<EFBFBD>F<EFBFBD>th<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04><>m<10><><EFBFBD><EFBFBD><EFBFBD>z<0E>~<7E>\0]G<>F\\<EFBFBD><EFBFBD>I<EFBFBD>\\<EFBFBD><EFBFBD>}It<49>C\n<EFBFBD>T<>}<7D><><EFBFBD>IEJ\rx<EFBFBD><EFBFBD><12><>><3E>Mp<4D><70>IH<49>~<7E><>fht<68><74><EFBFBD>.b<><62>xYE<59><45>iK<><4B>oj<>\n<EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><EFBFBD>tr<74>.<2E>~d<>H<EFBFBD>2U4<55>G<EFBFBD>\\A<EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD>uPt<50><74><EFBFBD><16>谐<EFBFBD><E8B090><EFBFBD><EFBFBD><EFBFBD>L/<2F>P<04> \"G!R<><52>Mt<4D>O-<2D><0E><#<23>APuI<><49>R<EFBFBD>\$<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>Ɗ<0F><><EFBFBD><EFBFBD>-<02><>G<EFBFBD><47>O`Pv<50>^W@tH;Q<><51>Rę<>\$<EFBFBD><EFBFBD>gK<EFBFBD>F<\rR*\$4<EFBFBD><10><>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>Um<55><01>h:+<2B><>5@/<2F>l<EFBFBD>I<EFBFBD><49><EFBFBD>2<EFBFBD><32><EFBFBD>^<5E>\0OD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\rR'<27>\r<EFBFBD>TЭ[<5B><><EFBFBD><EFBFBD>Ī<EFBFBD><C4AA>MC<14>M<EFBFBD>Z4<5A>E B\"<EFBFBD>`<60><><EFBFBD>euN<75>,䙬<>]<5D><02>t<EFBFBD>\r<EFBFBD>`<60>@h<><68>*\r<EFBFBD>.V<><18>%<25>!MBlPF<50><46>\"<EFBFBD><EFBFBD>&<26>/@<40>v\\C<0C><><EFBFBD>:mMgn<67><0E><><EFBFBD>i8<69>I2\rp<1A>vj<76><6A><EFBFBD><EFBFBD><EFBFBD>+Z mT<6D>ue<75><65>fv>f<><66>C<1C><>T<14>M.<2E>M<EFBFBD>3Pv'kt<6B>dO\rd<EFBFBD><EFBFBD>k<EFBFBD><EFBFBD><0F>yW<79><57>߂<EFBFBD><DF82>V6<56>U<EFBFBD>ʖ<EFBFBD><CA96><EFBFBD><1C>-~X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BGd<47>\$i<EFBFBD><16>%<25>qj<0E>E<EFBFBD><0C>rLJ<4C>Pr<50>%n=<3D><05>H<EFBFBD>\"\"\"h<0C><>_\$b@<40>t<EFBFBD><74>\0f\"<EFBFBD><EFBFBD>n<EFBFBD>H<EFBFBD>*<2A><>Bv\$\$<05>B<EFBFBD><42>@\"@r<><72>(\r`<60> <20>C<EFBFBD>X<EFBFBD>(0&<26>.`<60>Nk9B\n&#(<28><><EFBFBD><EFBFBD>@䂯<><05>d<><64>^<5E>Z<EFBFBD><5A><EFBFBD> <20>@<40>`<60>I-u<>0<EFBFBD><30>\n<EFBFBD>B<EFBFBD>u<EFBFBD>4sGu<10><><EFBFBD>tN<>b<EFBFBD>u <20>ub}<7D>O~)uB<75><42>w<EFBFBD>{<EFBFBD><0C>Ł5=w9[ɫs<C9AB><73> 8=<3D>\0\r<EFBFBD><EFBFBD>%`<60>]x&^<5E>3sc݃.\$<EFBFBD>̓<EFBFBD>Z4<EFBFBD>4<EFBFBD><EFBFBD>u`<60><><EFBFBD>DŽ<EFBFBD>ۅ <20><>8;<3B>wT<0B>M<EFBFBD><4D>e<EFBFBD><65>х<EFBFBD>݇8X<38><58>zl<7A>K<EFBFBD>U<><55>`<0B><><0E><><EFBFBD><EFBFBD><EFBFBD>^XO<><04>m<EFBFBD>@M<><4D>⋀W<E28B80><57>X<EFBFBD><58><EFBFBD>j<EFBFBD><6A>߈ؽ<DF88><16><>XG<58><47>T<0C>E<EFBFBD><45><0F><>H<48><C280>x<EFBFBD>Y<C283><59>a<EFBFBD>,<0B>Í<EFBFBD><C38D><EFBFBD>Ŋ<>o|<7C><>t<EFBFBD>%<25><>U<EFBFBD>j<EFBFBD><6A><EFBFBD>q<EFBFBD>7w<37>X<EFBFBD>=ػ<>d<EFBFBD><64>xU<78>8<EFBFBD>\r<EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iy<EFBFBD><EFBFBD>c<EFBFBD><EFBFBD>.&Y%<25>9A<39><41>k<EFBFBD><0F><><EFBFBD>d<EFBFBD>Dz<44>9D<0B>ċģ[<5B><><EFBFBD>Y<19><><<3C>x<EFBFBD><78>X^V<>ς<EFBFBD><EFBFBD>DG<44><47>g<EFBFBD>wǏ<16><><EFBFBD><EFBFBD><EFBFBD>C<><43><EFBFBD><EFBFBD>I<>`Ƨ<><C6A7>=ٗzYO<> 6<18>|x<><78>)<29><><EFBFBD>ߋ8#<23>ل<0B>e<EFBFBD><65>ٙ8Q<38>x<EFBFBD><78>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߛ&K<><4B><EFBFBD><EFBFBD><EFBFBD>͝<EFBFBD><CD9D>(<28><>%<25>r-<2D><>ٝ<19><>J<EFBFBD><4A><EFBFBD><EFBFBD> @<40><>Z <20><>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD>Dz!<21>Wǝ<57>ۣy<DBA3><79><EFBFBD><EFBFBD> \0<EFBFBD>rYy|b<>|<7C>!<21>Y<EFBFBD><59>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><39><EFBFBD>yzC+<2B><><EFBFBD>=<3D>٦<EFBFBD>ç:]<5D>s<><73><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD>a<EFBFBD><61><EFBFBD>x<EFBFBD><78>f*<05>qz<71>ӧ`[<5B>#<23>s<EFBFBD>y<EFBFBD><79><EFBFBD>+u<>XT<54><C299><EFBFBD>ٌ<EFBFBD>c<EFBFBD><1A><><18><>࿎C1<43>8U<38>9<1D><>5<>ݭǖ`<60><0C>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><5A>yg<79>z<EFBFBD><7A> ڧ<><17><><EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23>e˱Z<CBB1><5A><EFBFBD>+<2B><>Ր<EFBFBD>p>ǡ<>L)<29><><1B><>ű<EFBFBD>O<EFBFBD><4F>+<2B>I<EFBFBD><49><EFBFBD><EFBFBD>x<EFBFBD>R ˯<><CBAF>yB<79>y<EFBFBD><79><EFBFBD><EFBFBD>I{z\0\r<EFBFBD>ᜄ<EFBFBD>{k<EFBFBD>^<5E><>=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><>Γ<EFBFBD><CE93>A<EFBFBD>2;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><37>\$<EFBFBD>;c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD>]XX<58><58>kY<6B>#<23>5vT\\<EFBFBD>Q<EFBFBD><EFBFBD>:<3A><>><3E><>ɓ<EFBFBD>k<EFBFBD><6B>'<27><><EFBFBD><EFBFBD>[<5B><><EFBFBD>a<EFBFBD>ħ<EFBFBD>0<>xI<78>[<5B><><EFBFBD><0B>;<3B><>\0[<5B><><0F>A<>Z<EFBFBD><5A><EFBFBD>e<EF8F80><65><EFBFBD>?<02>ec<65><63>p΄<>Ճ<D583><7F>:<3A>#<23>fCZ<43><5A>SDv<44><76>.\r<EFBFBD><EFBFBD>#<23>ߔ<>U ");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08><01><>h0<1D>LЁ<18>d91<18>S!<21><> <18>F<EFBFBD>!<21><>\"-6N<><4E><EFBFBD><EFBFBD>bd<19>Gg<47><08><>:;Nr<4E>)<29><>c7<63>\r<EFBFBD>(H<>b81<38><31>s9<73><39><EFBFBD>k\r<EFBFBD>c)<29>m8<6D>O<0C><1A>VA<7F><41>c1<><31>c34Of*<19><>-<2D>P<EFBFBD><50>1<EFBFBD><31>r41<34><31>6<19><>d2<18>ց<EFBFBD><D681><EFBFBD>o<EFBFBD><6F><EFBFBD>#3<02><><EFBFBD>B<EFBFBD>f# <09><>g9Φ<>،fc\r<EFBFBD>I<><49><EFBFBD>b6E<>C&<26><>,<1A>bu<><75>m7a<37>V<EFBFBD><56><EFBFBD><EFBFBD>s<EFBFBD><73>#m!<21><>h<EFBFBD><68>r<EFBFBD><72><EFBFBD>v\\3\rL:SA<53><41>dk5<6B>n<EFBFBD><1F><><EFBFBD><EFBFBD><1A><>aF<><46>3<EFBFBD><33><EFBFBD>e6fS<66><53>y<EFBFBD><79><08>r!<21>L<EFBFBD><4C>-<2D>K,<2C>3L<33>@<18><0E>J<EFBFBD><0C>˲<EFBFBD>*J<><4A>쵣<EFBFBD><0E><><EFBFBD> <09><><13><02><><EFBFBD>b<1A>c<EFBFBD><63>9<0C><><EFBFBD>9<EFBFBD><0C><06>@<40><><10><><EFBFBD>H<EFBFBD>8<0E><>\\<EFBFBD><0C><08>6><3E>`<60>Ŏ<><C58E>;<3B>A<EFBFBD><41><T<>'<08>p&q<>qE<03><>4<EFBFBD>\rl<EFBFBD><1C><>h<EFBFBD><5#p<><0E>R <20>#I<12><>%<25><12>fBI<42><49>ܲ<12><>><3E>ʫ29<<3C><0C>C<>j2<><EFBFBD>7j<37><6A>8j<08><>c(n<0C><><EFBFBD>?(a\0<EFBFBD>@<40>5*3:δ<>6<EFBFBD><36><EFBFBD><EFBFBD>0<EFBFBD><30>-<02>A<>lL<><4C>P<EFBFBD>4@<40>ɰ<EFBFBD>\$<EFBFBD>H<EFBFBD>4<EFBFBD>n31<EFBFBD><1C>1<EFBFBD>t<04>0<EFBFBD><30>͙9<CD99><39><08>WO!<21>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><1A><><1D>9<EFBFBD>Q<EFBFBD><51>96<>F<EFBFBD><46><EFBFBD><<3C>7<EFBFBD>\r<EFBFBD>-xC\n <20><><EFBFBD>@<40><><EFBFBD><01><><14><11>:\$i<15>ضm<D8B6><6D><EFBFBD>4<EFBFBD>Kid<0C><>{\n6\r<EFBFBD><1F><>xhˋ<68>#^'4V<34>@a<><61><<3C>#h0<68>S<EFBFBD>-<2D>c<EFBFBD><63>9<EFBFBD>+p<><70><EFBFBD>a<19>2<EFBFBD>cy<63>h<EFBFBD>BO\$<15><12>9<EFBFBD>w<EFBFBD>iX<69>ɔ<06>VY9<59>*r<>Htm <0E>@b<14><>|@<40>/<2F><>l<EFBFBD>\$z<EFBFBD><EFBFBD><EFBFBD>+<2B>%p2l<32><6C><EFBFBD>.<2E><><EFBFBD><11><16><><EFBFBD>7<EFBFBD>;<18>&{<EFBFBD><EFBFBD>m<EFBFBD><03>X<11>C<l9<6C><39>6x9<78>m<EFBFBD><6D><19><><15><><EFBFBD>7R<37><52>0\\<0C>4<EFBFBD><34>P<EFBFBD>)A<>o<EFBFBD><6F>x<EFBFBD><78><EFBFBD>q<EFBFBD>O#<23><><EFBFBD><EFBFBD>f[;<3B><>6~P<06>\r<18>a<EFBFBD><61>T<>GT0<54><08><>u<>ޟ<EFBFBD><DE9F><EFBFBD>\n3<12>\\ \\ʎ<EFBFBD>J<EFBFBD>ud<EFBFBD>CG<EFBFBD><EFBFBD><EFBFBD>PZ<EFBFBD>><0F><><0B><>d8<64>Ҩ<EFBFBD><D2A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C?V<><56>dL<64><4C>L.(ti<74><69><EFBFBD>><3E>,<2C><>֜<>R+9i<><69>ޞC\$<EFBFBD><1D>#\"<EFBFBD>AC<EFBFBD>hV<08>b\n<1C><>6<0C>T2<54>ew<07>\nf<05><>6m !1'c<><63>;<3B><>*eLRn\r<EFBFBD><EFBFBD>G\$<EFBFBD>2S\$<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>a<>'<05>l6<6C>&<26>~A<>d\$<EFBFBD>J<10>\$s<1C> <20>ȃB4<42><34><1D>j<>.<2E>RC̔<18>Q<EFBFBD>j<EFBFBD>\"7\n<EFBFBD>Xs!<21>6=<08>BȀ}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("':<3A>̢<03><><EFBFBD>i1<69><04><>1<EFBFBD><31> 4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q6a&<26><><EFBFBD><EFBFBD>:OAI<41><49>e:NF<4E>D|<7C>!<21><><0F>Cy<43><79>m2<6D><32>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<<3C>̱<EFBFBD><CCB1><EFBFBD>/C<>#<23><><EFBFBD><EFBFBD>:DbqSe<1E>J<EFBFBD>˦Cܺ\n\n<EFBFBD><EFBFBD>DZS\rZ<EFBFBD><1C>H\$RAܞS+XKvtd<74>g:<05><12>6<EFBFBD><10>EvXŞ<58>j<EFBFBD><6A>mҩej<65>2<EFBFBD>M<EFBFBD><13><><EFBFBD><EFBFBD>B<EFBFBD><42>&ʮ<16>L<EFBFBD>C<EFBFBD>3<><33><EFBFBD>Q0<51>L<EFBFBD><4C>-x<>\n<EFBFBD><19>D<13><><EFBFBD>yNa<>Pn:<3A><05><19><><EFBFBD>s<EFBFBD><73>͐<EFBFBD>(<28>cL<63><4C>/<2F><18><>(<28>5{<EFBFBD><EFBFBD><EFBFBD>Qy4<EFBFBD><EFBFBD>g-<2D><><EFBFBD><EFBFBD><EFBFBD>i4ڃf<DA83><66>(<28><>bU<62><55><EFBFBD>k<EFBFBD><6B>o7<6F>&<26><>ä<>*ACb<43><62><EFBFBD><EFBFBD>`.<2E><><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>Ch<43><\r)`<60>إ`<60>7<EFBFBD>Cʒ<><CA92><EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD><<3C>Q<13>1X<31><11><>@<40>0dp9EQ<45>f<EFBFBD><66><EFBFBD><EFBFBD>F<EFBFBD>\r<EFBFBD><08>!<21><><08><>(h<><68>)<29><>\np'#Č<><C48C>H<EFBFBD>(i*<2A>r<><72>&<#<23><>7K<37><4B>~<13># <20><13>A:N6<4E><36><EFBFBD><EFBFBD><13><>l<EFBFBD>,<2C>\r<04><><EFBFBD>JP<4A>3<EFBFBD>!@<40>2>Cr<43><72><EFBFBD>h<EFBFBD>N<11><>]<1E>(a0M3<4D>2<EFBFBD><32>6<EFBFBD><36>U<18><><EFBFBD>E2'!<<02><>#3R<33><<3C><><02><><EFBFBD>X<EFBFBD><58><EFBFBD>CH<43>7<05>#n<>+<2B><>a\$!<21><>2<EFBFBD><32>P<EFBFBD>0<EFBFBD>.<2E>wd<0C>r:Y<><59><EFBFBD><0C>E<EFBFBD><45><EFBFBD>!]<5D><<3C><16>j<EFBFBD><6A><EFBFBD>@<40>\\<EFBFBD>pl<EFBFBD>_\r<EFBFBD>Z<16><><03>ғ<EFBFBD>TͩZ<CDA9>s<EFBFBD>3\"<EFBFBD>~9<><39><EFBFBD>j<EFBFBD><05>P<EFBFBD>)Q<>YbݕD<DD95>Yc<59><63>`<60><>z<04>c<EFBFBD><1D>Ѩ<EFBFBD><D1A8>'<01>#t<0E>BOh<0C>*2<><32><ŒO<C592>fg-Z<><5A><EFBFBD><1E>#<23><>8a<>^<17><>+r2b<32><62>\\<EFBFBD><0C>~0<><05><><0C><><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>n<EFBFBD><05>p!#<23>`<60><><EFBFBD>Z<EFBFBD><5A>6<EFBFBD>1<08>2<EFBFBD><32>@<40><>ky<6B><79>9\r<EFBFBD><EFBFBD>B3<EFBFBD><EFBFBD>pޅ<EFBFBD>6<EFBFBD><EFBFBD><<3C>!p<>G<EFBFBD>9<EFBFBD>n<EFBFBD>o<EFBFBD>6s<36><73>#F<>3<EFBFBD><33><EFBFBD>bA<><41>6<EFBFBD>9<EFBFBD><39><EFBFBD>Z<EFBFBD>#<23><>6<EFBFBD><36>%?<3F>s<EFBFBD><73>\"<EFBFBD><EFBFBD>|<>)<29>b<EFBFBD>Jc\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>s<14><>ih8<68><10><><EFBFBD>ݟ<EFBFBD>:<1E>;<3B><>H<EFBFBD>ތ<EFBFBD>u<EFBFBD>I5<49>@<40>1<EFBFBD><>A<EFBFBD>PaH^\$H<EFBFBD>v<EFBFBD><05>@ÛL~<7E><><EFBFBD>b9<62>'<10><><EFBFBD><EFBFBD><EFBFBD>S?P<>-<2D><><EFBFBD><EFBFBD>0<EFBFBD>C<08>\nR<>m<>4<EFBFBD><06><>ȓ:<3A><><EFBFBD>Ը<>2<><04>4<EFBFBD><34>h(k\njI<05><>6\"<EFBFBD>EY<EFBFBD>#<23><01>W<1F>r<1A>\r<EFBFBD><EFBFBD>G8<EFBFBD>@t<><74><EFBFBD><0E>Xԓ<58><D493>BS\nc0<>k<14>C I\rʰ<u`A!<21>)<0E><>2<EFBFBD><32>C<0C>\0=<3D><><EFBFBD> <20><16><>P<EFBFBD>1<0C>ӢK!<21>!<0C><><EFBFBD>p<>Is<05>,6<13>d<1E><><EFBFBD>i1+<2B><><0F><>k<EFBFBD><6B><EFBFBD><<3C><>^<5E> <09>\n<EFBFBD><EFBFBD>20<EFBFBD>Fԉ_\$<EFBFBD>)f\0<EFBFBD><EFBFBD>C8E^<5E><>/3W!א)<04>u<EFBFBD>*<2A><11><>&\$<EFBFBD><EFBFBD>2<EFBFBD>Y\n<EFBFBD>]<5D><>Ek<45>DV<>\$<19>J<EFBFBD><1C><>xTse!<21>RY<> R<><52>`=L<><4C><EFBFBD><04>ޫ\nl_.!<21>V!<21>\r\nH<EFBFBD>k<EFBFBD><EFBFBD>\$א`{1 |<7C><><EFBFBD><EFBFBD><13>i<jRrPTG|<7C><>w<EFBFBD>4b<03>\r<EFBFBD><EFBFBD><EFBFBD>4d<34>,<2C>E<EFBFBD><45>6<EFBFBD><36><EFBFBD><<3C>h[N<>q@Oi<4F>>'ѩ\r<EFBFBD><01><><EFBFBD><EFBFBD>;<3B>]#<23><>}<7D>0<EFBFBD>ASI<08>Jd<10>A/Q<><51><EFBFBD><EFBFBD>⸵<EFBFBD>@t\r<EFBFBD>UG<EFBFBD><EFBFBD>_G<EFBFBD><<04><><y-I<>z<7A>\"<EFBFBD>P<0B><>B\0<EFBFBD><EFBFBD><05><><1E><>q`<60><>vA<><41>a̡J<CCA1><4A>R<EFBFBD>ʮ)<29><>JB.<2E>T<EFBFBD><54>L<EFBFBD><4C>y<EFBFBD><79><EFBFBD><EFBFBD>Cpp<70>\0(7<>cYY<59>a<EFBFBD><13>M<><4D>1<EFBFBD>em4<6D>c<><63>r<EFBFBD><72>S)o<><6F><EFBFBD><EFBFBD>p<EFBFBD>C!I<><49><EFBFBD>Sb<C29C>0m<30><6D><EFBFBD>(d<>EH<45><48><EFBFBD><13>߳<EFBFBD>X<EFBFBD><58><EFBFBD>/<2F><><EFBFBD>P<><50><EFBFBD>y<>X<EFBFBD><58>85<38><35>\$+<2B>֖<><07><>gd<67><0C><><EFBFBD><EFBFBD>y<EFBFBD><01>ϝ<EFBFBD>J<EFBFBD><4A><EFBFBD> <20>lE<6C><45>ur<75>,dCX<43>}e<><65><EFBFBD><11><><EFBFBD>m<EFBFBD>]<5D><01>2<03>̽<EFBFBD>(-z<><7A><15><0B>Z<EFBFBD><5A>;I<><49><EFBFBD>\\<EFBFBD>) ,<2C>\n<EFBFBD>><3E>)<29><><EFBFBD><EFBFBD>\rVS\njx*w`ⴷSFi<46><69>d<><64>,<2C><><EFBFBD>Z<>JFM}Њ <20><>\\Z<EFBFBD>P<EFBFBD><EFBFBD>`<60>z<>Z<EFBFBD>E]<5D>d<EFBFBD><64>ɟO<>cmԁ]<5D> <20><15><><EFBFBD><EFBFBD><EFBFBD>%<25>\"w4<EFBFBD><EFBFBD>\n\$<EFBFBD><EFBFBD>zV<EFBFBD>SQD<EFBFBD>:<3A>6<EFBFBD><36><EFBFBD>G<EFBFBD>wM<><4D>S0B<30>-s<><73>)<29><>Z<EFBFBD><5A>cǁ2<><32>δA;<3B><05>n<EFBFBD>Wz/A<>Zh<5A>G~<7E>c<EFBFBD>c%<25>[<0C>D<EFBFBD>&l<>FR<0E><>77|<7C>I<EFBFBD><49><19>3<EFBFBD><33>g0<67>L<EFBFBD><0B><>a<EFBFBD><61>c<EFBFBD>0RJ<52>2<EFBFBD><32>%<02><><EFBFBD>F<0C><> S<> <20>L<EFBFBD>^<5E> tr<><72><1C>t<1C><><0B><>ʩ;<3B><>.喚Ł<E5969A>><10><><EFBFBD><EFBFBD>[<5B>a<EFBFBD>N<EFBFBD><4E><EFBFBD>^<5E>(!g<>@1<06><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>z<EFBFBD><b<>ݖ<EFBFBD><DD96><EFBFBD><EFBFBD><EFBFBD>O,<03><>Cu<EE8E9D><75>D<EFBFBD>tjI;)<29>݀<EFBFBD>\nn<EFBFBD>c<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>W<s<> <09>\0<EFBFBD>hN<EFBFBD>P<0E>9<12><>{ue<EFBFBD><EFBFBD>ut뵕<74><EBB595><05><><EFBFBD><EFBFBD><EFBFBD><0B>3<EFBFBD><33><EFBFBD>=<3D><>g<EFBFBD><67><EFBFBD><0F><><02>J<EFBFBD><4A><03><05>WQ<57>0<EFBFBD><1D><>w9p-<2D><><EFBFBD> <1E><><EFBFBD><EFBFBD><1A><><1B>'5<><05>\nO<07><>e)M<>)_k<5F>z\0V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;j<>l<><06>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<1C>Pf<0E>-<19>`C<>.@&]#\0ڶp<EFBFBD>y͖ƛ<EFBFBD>t<>d<0F><> <20><><EFBFBD>b}<7D> G1<47>m<EFBFBD>ru<72><75><EFBFBD>*<2A>_<EFBFBD>xD<78>3<06>q<EFBFBD><71>B<EFBFBD>sQ<73><51>u<EFBFBD><75>s%<25>\n<EFBFBD>5s<EFBFBD>ut<1B><><EFBFBD>{<EFBFBD>s<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD>4<EFBFBD>,J{4@<40><>\0<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD><EFBFBD>^<5E><>=<3D><>l<EFBFBD><6C><EFBFBD>`<60>e~F١h3o<33>\"<EFBFBD><EFBFBD>q<EFBFBD>R<iUT<55>[Q<><51>U<><55>M<12>6<05>T. <20><0B>0'<0B>pe\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><15>pCe ٕ<>\"*<02>M <09><><EFBFBD><EFBFBD>D<><44><EFBFBD>?<3F>h<1E><>2<EFBFBD><32><EFBFBD>zU<7A>@7<>C<EFBFBD>4<EFBFBD>a<1F><>iE!f<16>\$<EFBFBD>B<EFBFBD><EFBFBD><<3C>9o*\$<EFBFBD><EFBFBD>lH<6C>\$ <06>@<14><><EFBFBD><EFBFBD><EFBFBD>P\rN<0C>Y<01>n<\$<EFBFBD> <09>Q<02>=<02>F&<26><>*@]\0<EFBFBD><0C><> W'd<> z\$<EFBFBD><04>j<>P[<5B><>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0#&<0E><>_<EFBFBD>`+<2B>B)<29>w<EFBFBD>v% <09><><0C><>LcJ<63><4A>RS<52><53>i`<60>Ů <09>F<0E>W <09><>\nBP\n<EFBFBD>\r\0} 瑩0<EFA6AE>Z<EFBFBD><5A><0C><>/`j\$<EFBFBD>: <20>8ie<69><0C><>φx<CF86><08><><16><>a <20><><03>Gn<47>sgO<><10>U%VU<56><14>@<40>N<EFBFBD><4E>ϐ<EFBFBD>d+<2B>(oJ<6F><4A>@X<><58><0E>zM'F٣<46>WhV<68>I^٢<>1><3E>@<40>\"<EFBFBD><0C><><EFBFBD> <20><13>Q<14>R!<21>\\<EFBFBD>`[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>0fb<66>F;<12><EFBFBD><C287>Fp<05>p/t`<60><05><><0B>(<28><>V<05><><EFBFBD><EFBFBD>b<EFBFBD>Ȳ<EFBFBD>(<28><>H<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>ԯ1v<31><0E><05><><EFBFBD>H<EFBFBD><48>1T<31>3<18><>q<><19><>1<>Ѫf<D1AA>\nT\$<EFBFBD><EFBFBD><EFBFBD>Nq+<2B><1C>`ލv<DE8D>ǜ<EFBFBD>\r<EFBFBD>Vm<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>'ϸ<><CFB8>g%<25>\"L<>m<EFBFBD><6D><EFBFBD><EFBFBD>(<28>(CLz<4C><7A>\"h<0E>X<EFBFBD>m=<07>\\H\n0U<EFBFBD><EFBFBD> f&M\$<EFBFBD>g\$<EFBFBD>U`a\rP<EFBFBD>>`<60>#g<><67>h<1A><>`<60>R4H<34><48>'<27><><0F><><EFBFBD><EFBFBD>GK;\"M<EFBFBD>ۨT<EFBFBD>h<EFBFBD>BE<1B>n\"b><3E><><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>#<23>\0<EFBFBD><EFBFBD>N:<3A>#_ QQ1{ f:B<><42><EFBFBD>R<EFBFBD>&<26><><EFBFBD>)J<><12>Br<42>+<2B>K.\$<EFBFBD>Pq<EFBFBD>-r<>S%TIT&Q<><51><EFBFBD>{#2o(*P<><50>5<EFBFBD>`<60>1H<0C><><05>' <T<12>d<EFBFBD><64><12><>s<EFBFBD><73>,N<><4E> <20><0E><><EFBFBD>^\r%<25>3<EFBFBD><33>\r&<26><07>4<EFBFBD>B<EFBFBD>/\0<EFBFBD>kLH\$<EFBFBD>4d<EFBFBD>><3E><><EFBFBD>/<2F>ඵ<>H<EFBFBD><48><EFBFBD>*<2A><><EFBFBD>3J<0E>А<EFBFBD><<3C>Hh<48><68>p<EFBFBD>'<27><>O/&<26>2I.<2E>x3V.<2E>s5<73>e3<65><33>ێZ<DB8E>(<28>9E<39>g<05>;R<>;<3B>J<EFBFBD><4A>Q<16>@<40><>vgz@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'dZ&<26>,U<><55><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>b*<2A>D<EFBFBD><44>H! <20>\r<EFBFBD>;%<25>x'G#<23><>͠w<CDA0><77>#<23>֠<>2;#<23>Bv<42>X<EFBFBD><58><EFBFBD>a<EFBFBD>\nb<EFBFBD>{4K<EFBFBD>G<EFBFBD><EFBFBD>%<25><><EFBFBD>GuE`\\\rB\r\0<EFBFBD>-mW\rM\"<EFBFBD><EFBFBD>#E<>cFbF<62>nz<6E><7A><EFBFBD>@4J<34><4A>[\$<EFBFBD><EFBFBD>%2V<0F><>%<25><>&T<08>V<EFBFBD><56>d<EFBFBD>4hemN<6D>-;Eľ%E<>E<EFBFBD>r<EFBFBD><\"@<40>F<EFBFBD>P<50>L <20>߭<EFBFBD>4E<><45><EFBFBD><EFBFBD><EFBFBD>z`<60>u<03>7<EFBFBD>N<>4<EFBFBD><34>\0<EFBFBD>F:h<>K<>h/:<3A>\"<EFBFBD>M<EFBFBD>Z<><5A>\r+P4\r?<05><>S<EFBFBD><53>O;B<><42>0\$FCEp<EFBFBD><EFBFBD>M\"<EFBFBD>%H4D<>|<7C><>LN<4C>FtE<><45>g<EFBFBD><67><EFBFBD>5<04>=J\r\"<EFBFBD><EFBFBD>5<0C><>4<04><>K<EFBFBD>P\rbZ<><5A>\r\"pEQ'DwK<77>W0<57><05>g'<27>l\"h<EFBFBD>QF<EFBFBD>C,<2C>Cc<43><63><EFBFBD>IH<49>P<07>hF]5<>& f<14>T<04><>iSTUS<55><53><EFBFBD><EFBFBD><EFBFBD>[4<>[u<>Ne<4E>\$o<EFBFBD>K<EFBFBD><EFBFBD>O <20><>b\" 5<>\0<07>D<EFBFBD>)E<>%\"<08>]<5D><>/<2F><><EFBFBD>ЌJ<D08C>6U<36>d<EFBFBD><02>`<60><>a)V-0<><30>DӔbM<62>)<29><><EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD>`<60><>%<25>ELt<4C><74>+<2B><>6C7j<37>d<EFBFBD><64>:<3A>V4ơ3<C6A1> -<2D>R\rG<EFBFBD>IT<EFBFBD><EFBFBD>#<23><4-CgCP{V<EFBFBD>\$'<27><06><><EFBFBD>g<EFBFBD><67>R@<40>'<27><14>S=%<25><><EFBFBD>F<EFBFBD>k:<3A><0E>k<EFBFBD><6B>9<EFBFBD><16><11><04>e]aO<14><>G9<08>;<3B><>-6<><1C>8W<38><57>*<2A>x\"U<><55>YlB<6C><16><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><><EFBFBD> <09><>\n<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<11>m\0<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Oq̨<><CCA8>b<>W1s@<40><>K<1F><>-p<><70><EFBFBD>E<1F>Spw\nGWoQ<6F>qG}vp<76>w}q<><71>q<EFBFBD>\\<07>7<1C>RZ<52>@<40><><EFBFBD>t<EFBFBD><74>t<EFBFBD>;pG}w׀/%\"L<15>E\0t<EFBFBD>h<EFBFBD>)<29>\r<EFBFBD><EFBFBD>J<0F>\\W@<40> <09>|D#S<13><>ƃV<C683><56>R<>z<EFBFBD>2<EFBFBD><0F><>v<EFBFBD><76><EFBFBD><EFBFBD><10> <09>}<7D><><EFBFBD><EFBFBD><EFBFBD>(<28>\0y<<3C>X\r<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><<3C><>Isk1S<11>-Q4Yq8<71>#<23><>v<1E><><EFBFBD>d.ֹS;q<>!,'(<28><1B><16><.<2E><>J7H<37>\"<EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>u<EFBFBD><0F><><7F><EFBFBD>#<23>Q<>\re<EFBFBD>r<EFBFBD>Xv[<5B>h\$<EFBFBD>{-<2D>Y<><59><EFBFBD>JBg<42><1F>iM8<4D><38>'<27>\nƘtDZ~/<2F>b<0B><><EFBFBD>8<EFBFBD><38>\$<><7F>DbR<62>O<EFBFBD>O<><4F>`O5S><12><><EFBFBD><EFBFBD>[<5B>D<07>ꔸ<EFBFBD><0C><><07>_3X<33>)<29><>'<27><>Jd\r<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UD<EFBFBD>U<EFBFBD>X8<><38>x<EFBFBD>-旅<>P<07>N`<60> <09><>\n<EFBFBD>Z<08><><EFBFBD>@Ra48<><38>:<3A><><EFBFBD>\0<EFBFBD><EFBFBD>x<EFBFBD><0E><>N<EFBFBD>\\<04>0%<25><><05>f<EFBFBD><66>\\<EFBFBD><EFBFBD>>\"@^\0Zx<EFBFBD>Z<EFBFBD>\0ZaBr#<23>X<EFBFBD><58>\r<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>˕<EFBFBD>flFb\0[<5B>ވ\0[<0B>6<EFBFBD><36><EFBFBD> <09><><19> <20>=<3D><>\n<EFBFBD><EFBFBD>WB<EFBFBD><EFBFBD>\$'<27>kG<6B>(\$y<EFBFBD>e9<EFBFBD>(8<>& h<><68>Rܔ<52><DC94>o<EFBFBD>ȼ LJ<><C787><EFBFBD>Y<EFBFBD><59>4<EFBFBD><34>7_<37><5F>d<EFBFBD><64>9<EFBFBD>'<27><><EFBFBD><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z\r<EFBFBD><EFBFBD><EFBFBD> <><7F><EFBFBD><EFBFBD>v<EFBFBD>G<EFBFBD><47>O8<4F><0E><>MOh'<27><>X<>S0<53>\0\0<EFBFBD> <09><>9<03>s?<3F><><EFBFBD>I<EFBFBD>MY<17>8<EFBFBD> 9<10><><EFBFBD><EFBFBD><1F>HO<48><4F>,4 <09><>xs<78><73>P<EFBFBD>*G<><47><EFBFBD><EFBFBD>c8<><38>Qɠ<51><C9A0>wB|<7C>z @<40> <09><><05>9c<18>K<EFBFBD><05>QG<1B>bFj<46>X<EFBFBD><58>oS<6F>\$<EFBFBD><EFBFBD>dFHĂP<EFBFBD>@ѧ<嶴<>,<2C>}<7D><>m<EFBFBD><6D>r<04><>\"<EFBFBD>'k<6B>`<60><>c<EFBFBD><63>x<EFBFBD><78>e<EFBFBD>C<EFBFBD><43>C<EFBFBD><0E>:<3A><><EFBFBD>:X<> <20>T<EFBFBD><54><EFBFBD>^<5E>d<EFBFBD>Æqh<71><68>s<EFBFBD><06><>Lv<4C>Ү0\r,4<>\r_v<EFBFBD>L<><4C>j<03>jM<6A><4D>b[ <20><0F>ls<6C><73><0F>Z<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>;f<><66>`2Yc<59>e<EFBFBD>'<27>Mer<65><72>F\$<EFBFBD>!<21><>\n<EFBFBD><EFBFBD> *0\r<EFBFBD>AN<EFBFBD>LP<EFBFBD><EFBFBD>jٓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;ƣV<1A>Q|(<28><>3<EFBFBD><33><EFBFBD><EFBFBD>[p<><70>8<EFBFBD><38><EFBFBD>|<7C>^\r<EFBFBD>Bf/<2F>D<EFBFBD><14><>Ҟ B<05><0E>_<EFBFBD>N5M<35><18> \$<EFBFBD>\naZЦ<EFBFBD><EFBFBD><0B>~<05>Ule<EF8EA5>rŧr<C5A7><1A>Z<EFBFBD>aZ<61><5A><EFBFBD><EFBFBD><07>գs8R<38>G<EFBFBD>Z<5A><7F>w<EFBFBD><77><EFBFBD>N<EFBFBD>_Ʊ<C6B1>Yϣ<59>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>]<5D><>;ƚL<><4C><EFBFBD><05><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0>I<EFBFBD>Q3<51><33>O<EFBFBD><4F><EFBFBD>|<7C>y*`<60> <20>5<EFBFBD><18>4<1A>;&v8<76>#<02>R<EFBFBD>8+`X<>bV<62>6<EFBFBD>ƫi<12>3F<33><46>E<14><><EFBFBD><EFBFBD>oc82<38>M<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><14>G<EFBFBD>Wb\rO<EFBFBD>C<EFBFBD>Vd<EFBFBD>ӭ<EFBFBD>w\\<EFBFBD>ͯ*cSi<53>Qү<02><><EFBFBD>R`<60>d7} <09><><EFBFBD>)<29>ϴ<EFBFBD>,<2C>+bd<62>۹<>FN<0F>3<11><>L\\<EFBFBD><EFBFBD>eRn\$&\\r<EFBFBD><EFBFBD>+d<><64>]O5kq,&\"D<EFBFBD>CU6j<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>\\'<27>@o<>~<7E>5N=<3D>|<7C>&<26><>!<21><>B<EFBFBD>w<EFBFBD>H<>yyz7<7A><10>(Ǎ<><C78D><07>b5(3փ_\0`z<>b<EFBFBD>Уr<D0A3><72>8 <09><>Z<EFBFBD>v<EFBFBD>8L˓<4C>)<29><>S<EFBFBD>M<<3C>*7\$<EFBFBD><EFBFBD>\rR<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>B%<25><>ƴDs<44>z<EFBFBD>R>[<5B>Q<EFBFBD><51><EFBFBD><0C>&Q<><51><EFBFBD><EFBFBD><EFBFBD><1E>'\r<EFBFBD>pp<70>z<EFBFBD>/<<3C><>}L<>#<23><0C>Ε<EFBFBD><08><>Z<0C><><EFBFBD>\"t<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>.4<>g<EFBFBD><67>P<EFBFBD><50>p<EFBFBD>D<EFBFBD>n<EFBFBD><6E>ʹN<CAB9><4E>F<07>d\0`^<5E><><EFBFBD><EFBFBD>\rnȂ׳#_<12><> w(<28>2<EFBFBD><7-<2D><>X\0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>,^<5E>hC,<2C>!:<3A>\rK<><4B>.<2E><>Ӣ<EFBFBD>Ţ<EFBFBD><C5A2><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>+v<02>Z<EFBFBD><5A>\0<EFBFBD>Q9eʛ˞E<1C>w?><3E>\$}<7D><>D#<23><><EFBFBD><EFBFBD>c<EFBFBD>0MV3<>%Y<><59><EFBFBD>\r<EFBFBD><EFBFBD>tj5<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>{ŝ<EFBFBD>Lz=<3D><<3C><>8I<1C>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>L<7F>\$<EFBFBD><EFBFBD>2<14><>{(<28>pe?u<>,R<>d*X<>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\"@<40><><EFBFBD>}<.@<40><08> <09><>N<EFBFBD><4E>\$<EFBFBD><EFBFBD>XU<05>js<6A>/<07><><>\"* <20>#\$<1B><><EFBFBD><EFBFBD>&CPI <09><>t<EFBFBD><74><EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD>?<3F> <20><> <09>O<EFBFBD><4F>\\<EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>Q5Y<35>H@<40><><EFBFBD>b<EFBFBD><62>c<01>h<EFBFBD><68><0C><><06>뱖<EFBFBD><EBB196>O0T<>'<27>8<EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>j+H<>v_#<23><><EFBFBD><EFBFBD><EFBFBD>06<30>w֎<77>X<0F><><EFBFBD>d+<1A>ܓ\\<03><><EFBFBD>\n\0 \\<EFBFBD><EFBFBD><EFBFBD>>s<73><0F>A PF<50>d8m'@<40>\nH<02>\0<EFBFBD>c<EFBFBD>OwS<EFBFBD><1F><11><0C><>Y<EFBFBD>`<1D><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><1C>Dna\"<EFBFBD><EFBFBD><EFBFBD>~<12>?<3F>m<EFBFBD><6D><EFBFBD>|@6<><12>+<2B>GxV<78><56>\0<EFBFBD><EFBFBD>W<>Ӱ<EFBFBD>nw<05><><EFBFBD>.<2E>b<D883><62>9Í<><C38D>E<EFBFBD>|E<06><><EFBFBD>\rЈr<EFBFBD>\"<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><03><>\rN6<EFBFBD>n<EFBFBD>\$Ҭ<EFBFBD>-B<>H<EFBFBD>^<11>)<29><14>y&<26><>ךW<D79A>ǧ<EFBFBD>bv<62>R<EFBFBD> <09><><EFBFBD>N\0<EFBFBD><EFBFBD>n<EFBFBD> T<16><>`8X<38><58>A\r:{O<16>@\" <20>!<21><03>\$K<>qo<71><6F>jY֪J<D6AA><4A><EFBFBD><EFBFBD><EFBFBD>h}d<1I<31>xd<78><64><19><>TT4NeeC0䥿<30>:D<>F<>5L<35>*::H<>jZ<6A><5A><13>F<10>R<EFBFBD>MրnS\n>PO<0B>[<5B>\$V8;#<23>K\\'<27>B<EFBFBD><42><EFBFBD>R<>د<EFBFBD><D8AF>R<>_<EFBFBD>8<EFBFBD>j<EFBFBD><6A>*Ej<45>\\~v<><76><EFBFBD>v<EFBFBD><76>p@T<>X<EFBFBD>\0002dE <09>H<EFBFBD><48>V<EFBFBD><56><EFBFBD>D<EFBFBD>\"Q'EDJB~A<><41>A<EFBFBD>Il*'\n<EFBFBD>Y<EFBFBD><1F>.<2E><>+<2B>9<0E><>pg<70><03><>/<2F>\"<EFBFBD>1<EFBFBD>8<EFBFBD>0<EFBFBD>IA<>FCȨ<>V*a<><08>P<EFBFBD>d<EFBFBD>У5H\"<EFBFBD>A<EFBFBD><05>6<03>s<EFBFBD>Y<EFBFBD><59>;訞<>/<2F><>0<><1A>v}y<>\r<EFBFBD><02><><EFBFBD>ץ1<D7A5>u\"ˋ<EFBFBD>m<EFBFBD><16>_<0C>0焄`<60><18><>\\B1^\nk\r]lh<6C>}]HBW`<60><>0<EFBFBD>rFf<46>)<29>W,<02>ҧ]sm9'O<14>xԽ<78>,<2C>9J8<4A><38>?<1A>4<1A><><EFBFBD><04><>\"҅<EFBFBD>۽<EFBFBD><<3C>-S<><53><EFBFBD><EFBFBD>M<EFBFBD>;<0E>v<EFBFBD><76>6y|<7C>Z<06><><EFBFBD><EFBFBD>%<25>a<08>#8<><38>TC<11>!<16>p<EFBFBD><70>\n<EFBFBD><EFBFBD>CZ(<28><>w<EFBFBD><77>a<EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD>?9|<1A><>0<BL\r<10>\n<EFBFBD>]<5D>PB0<0E>&<26>+t<>H<EFBFBD><48><12>օ<04>Dx^<1F><><EFBFBD>,<2C>L<EFBFBD>}[<5B><>B<EFBFBD>x}<7D><>ru<><75>\0<EFBFBD><EFBFBD>\0005<EFBFBD><EFBFBD>S@\"Uؔ@<40><06>\0<EFBFBD>\$<EFBFBD><EFBFBD>ސ\"Ҡ<EFBFBD><EFBFBD>]l/ <09><>I<EFBFBD>B4<42><34>.<2E>6<EFBFBD><36>
<EFBFBD>d7<><37>\r@=<3D><><EFBFBD>߬<EFBFBD><DFAC><EFBFBD>*G j<><01><><EFBFBD>f`<60><>:Hn<48><6E><EFBFBD>bĀ71<><31>)C<@A<>Y#<13><><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>o<><6F>Y!<21><>I<EFBFBD>DM<44>\nlt<10><><EFBFBD><EFBFBD>/)<29>\\43)<29><>2<11><19>ɸ<02>)<1A><><EFBFBD>f[ ppp1<70><31><EFBFBD>#<23><>Ð<>p\0<EFBFBD><05>œl<C593><6C>^{<EFBFBD><EFBFBD>A<EFBFBD><05>TH<1C>6<><36><01><13><>\n\0P<>H<EFBFBD>.\r<0C><><EFBFBD>|<7C>T<EFBFBD>FD0<16><>S<EFBFBD>y<EFBFBD><79><1B><>'1<><01><05>K<EFBFBD><4B><EFBFBD>d<EFBFBD><13><><EFBFBD><EFBFBD>B<><42><EFBFBD>C<>&<26>)<04>W<EFBFBD>s Hee+@4<> r<><72><EFBFBD>ۚ*Lp1<<3C>f<EFBFBD>N<EFBFBD>Y'<0F>- XKVa<56><61>L<EFBFBD><4C><1A>\"<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>l<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>.YJH<0B>m HV<02>/<2F>lC<>&<26><08>H)o<>&\\2<EFBFBD><03><>%<25><><EFBFBD>z\n^Q(6<03><>D<EFBFBD> <20><><EFBFBD><EFBFBD>Jq<4A><71><EFBFBD><EFBFBD>\00a#<23>6\0vr,<2C>M<EFBFBD><4D>&A<><41><05><><03><><EFBFBD>9%Yd<59><64>B<>h<0B><>!W\0<EFBFBD>b\r{<EFBFBD><EFBFBD><EFBFBD>@<40>1<EFBFBD><31>I<EFBFBD>22<32>A<18><12>)<29>H<>a@r<>0G<30><47>7Dd.<2E>LM<><<3C><>2<><32><EFBFBD>,k/<2F><>Me<4D><02><><EFBFBD>}Ғ3<>=\0<EFBFBD>&<26><0F>B<><42>\nPd.\"<0C><>F3X<33><58>Sd(*<2A>J6 <0B><><19><>F:<3A><>)1<>1<EFBFBD>?lQ&<26><18><><EFBFBD>h<J͋<4A>f<EFBFBD>d<EFBFBD>Eպ*<0F>x\n\0<EFBFBD><07>.\"B -<2D>#<23><>Ηt<CE97>IΫ<49><CEAB><11> I8 <20><>8dh <09><><EFBFBD>x<12><><EFBFBD>~<7E><> L!K(<28>BX<42><13>-<2D><><EFBFBD>h<EFBFBD><68>c/<2F>r<EFBFBD><72>P<>I<0E><><EFBFBD>N<EFBFBD>2<EFBFBD>|<10><><EFBFBD><D7B6>|\"<EFBFBD>M<>'<27><>K,\\H<EFBFBD><EFBFBD>e5*o]4<><34>FP 2<><32><)<29>T<EFBFBD><54><EFBFBD>o<03><1A>\n<02><03><>I<EFBFBD>ڢ<EFBFBD>!<21>(<10><><EFBFBD>_8Xr<58>;u<><75><EFBFBD><EFBFBD><EFBFBD>NJ<4E><4A><EFBFBD><EFBFBD><EFBFBD>[r<><72>DC:<3A>@<40>ͳ<EFBFBD>l<EFBFBD>\0<EFBFBD>e\\*x@Aȡ&<26>(<28>5<EFBFBD><35>,<2C><><EFBFBD><EFBFBD>#1x<> <08>!T<>D<EFBFBD><44><EFBFBD>(Q<><51><0B>DJ|D D:\0<EFBFBD>A<EFBFBD>й<EFBFBD> <20>baE<07>?rn<72><6E>Wkx<6B><78>X=i<><69>,\$3<EFBFBD>[<5B>r<EFBFBD>9B<08>Ʊ<EFBFBD>d<EFBFBD><64><18>\0<EFBFBD><EFBFBD>H<><48>4<EFBFBD><34><08><(z<17><06><>?<3F>sIbJ<62>g U<>\n(}<0B><><EFBFBD>J\"<16><0F>A<EFBFBD><12>B<>19<31>~<7E>I<01>#<23>\$<EFBFBD><EFBFBD>%d e\"<EFBFBD>`<60><><EFBFBD>t<EFBFBD><74><EFBFBD>'O=<3D><13><>@\$<EFBFBD><EFBFBD>O<>\nmT<03>o+<2B>Z<EFBFBD><5A><EFBFBD><18><>-<2D><><0C><01><>PF?<10>_<>I<EFBFBD>J<1F>X ģ2<11><1C><>-V<>;<3B>?2<><0F><>0<EFBFBD>*P3<50><0E><><0E>_T<E<05>J<EFBFBD>\\(<28>2<EFBFBD><32><17><>)<29>IQ<49><51><14>鬩<1C><><EFBFBD>R<EFBFBD><52>L&<26><>!ȯK<C8AF>iц<69>t<EFBFBD><74><EFBFBD><EFBFBD>K<>HRl<52>ȬEs<45><16><><02><><EFBFBD><EFBFBD>D<EFBFBD><44>xǴ<>i<EFBFBD><69><EFBFBD>!faB<><42><10><>F<EFBFBD><04>e><3E>V<EFBFBD><1A><><EFBFBD>-Qj<51>I<EFBFBD><49>7<EFBFBD><37><EFBFBD>\"%Rh<52> g<1B><>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>b<EFBFBD>58R<52><C28B><EFBFBD><EFBFBD>*<2A><1D>9<EFBFBD><39>ꊰ<EFBFBD><EA8AB0><EFBFBD>9<EFBFBD>2Q0<51><30><EFBFBD>IR[<04>Z<EFBFBD><5A>N\0<EFBFBD><EFBFBD><EFBFBD>20<32><30><EFBFBD><EFBFBD><EFBFBD>\\[@<40>Q\0<EFBFBD><EFBFBD>Jx<EFBFBD><EFBFBD><1F><0F><>EC{<EFBFBD><EFBFBD><EFBFBD>\$lp1=\0<EFBFBD>Rо<0B>>E~<11><><EFBFBD><EFBFBD><07><><EFBFBD>:0<0B><><04>%<25><0F>R+)\0<EFBFBD> ƑQ<C691>@(\"<EFBFBD>_j<EFBFBD>T<EFBFBD>X\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r1<EFBFBD>\0P<EFBFBD>9#\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H;B<>|<06><><11>L<14>Z<EFBFBD><5A><04><02><>6<EFBFBD>/B<><1E>\nB<EFBFBD>{<EFBFBD><EFBFBD><01>|H<>,<2C> *;<01><0F>(<28>`<60>2@6<>><3E> <03>?P\0/<2F><><EFBFBD>\0|\\<EFBFBD>eB<>`<60><>jq<6A>U/\rc<EFBFBD><EFBFBD><EFBFBD><01><>҆<EFBFBD>6(N\0<EFBFBD>/\$<EFBFBD>\n8<>j*U<>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>y*<2A>=<3D>;<3B><><EFBFBD><EFBFBD>\$<15>f<EFBFBD><66><EFBFBD>8X<38>BCE<43><45>r\"/<2F><><EFBFBD><EFBFBD><EFBFBD>kځ%\\9k<><6B><EFBFBD>B<EFBFBD><42><EFBFBD>0<EFBFBD>F<EFBFBD><46>(<28><>'<27>U<EFBFBD><55><EFBFBD>Ʈm<C6AE>@k<>T\0<EFBFBD><0E>E<EFBFBD><15>sEhy<68>e\n<EFBFBD>)<29>)<16><>b7<62><37><EFBFBD>(W%,<13>J<>r<EFBFBD><72>2D<32>rhE<68><45>\n0Q<EFBFBD>3<EFBFBD> U<>9TPO<50><4F><13><><EFBFBD><EFBFBD>8j|<7C>}<7D>R<0<><30><0B><>Zl <20><15>T<EFBFBD><54><17><><EFBFBD><EFBFBD><EFBFBD>*<2A>\$<EFBFBD><EFBFBD>U\r<EFBFBD>\"<04>.<0C> Ts~<7E>~(<28>3<14>a<EFBFBD><61><EFBFBD>@<40><>+<2B><17><>l<EFBFBD>`:<3A>`<60>:O<08>i<EFBFBD><69>BX<02>?ʄ<><CA84>7<EFBFBD><37>Lj|<7C>:n<>K:ز}<7D>\0<EFBFBD><EFBFBD>UMc`P%nn\n,<2C>4<EFBFBD><34>Q'%+H.<2E><>\"#G<><47>3`<60><><EFBFBD><EFBFBD><EFBFBD>\n1fg\0<EFBFBD>М'<27>k<><6B>qxD<\"<04><>,a|{~<1A><><EFBFBD><EFBFBD>C<S<>i<1D>B<EFBFBD>\nkN<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>}<7D><><EFBFBD>k:<3A><><EFBFBD><EFBFBD><12><><EFBFBD><EFBFBD>g<EFBFBD>)<29>JD<4A><44><EFBFBD>hÛf<C39B>\"<EFBFBD>kV~<7E><12>mM`HO<48>kD<1C><>^<5E>0/tj<15>l<EFBFBD>\r<07>!<21>f<<3C><>G<><14>T<EFBFBD><54><EFBFBD>v<EFBFBD>#@<0E>ek@2<>w<><77><EFBFBD>0<19>ܭt<DCAD><74><1E>į1<C4AF>u<EFBFBD>yvː%8<>?1<><31><EFBFBD>l<EFBFBD><6C>xt<78><14>mp<6D><70>fK3Z<33>J<EFBFBD>=\0@<40>^p<><70>ۑ<EFBFBD><DB91><EFBFBD><EFBFBD><EFBFBD>]Ҳ'<27>t١@C<0B>b<EFBFBD><62><05>\r[<5B><>V<EFBFBD><56>-<2D><><EFBFBD>o<EFBFBD>-<2D><>ݠe<DDA0>}<7D><06>Y<04><> -<2D><>-m<>I\0+<2B><>V<EFBFBD>D<EFBFBD>[B+<2B><>(<28>-<2D>4<EFBFBD><34>><3E>q<EFBFBD><1D>i>=<3D><><EFBFBD>/0-<2D>cL<63>pJ b\nd<><64>)<29><>#<23><>G<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>Q<EFBFBD>N<EFBFBD><EFBFBD><02><>`.<1F>ȍ<EFBFBD>yȐEtP<74>q<>I]<5D><><EFBFBD>J8<4A><38><EFBFBD>rWT<57><54>I<EFBFBD><49><EFBFBD><EFBFBD>f<>aG<61>.떄7y<37><79>l<7F><6C>A<EFBFBD><41>7'<27>1<EFBFBD> <09>S<EFBFBD>-<2D>xI<78><17>m<EFBFBD><6D><EFBFBD>L:e<>ΉA<CE89>W<EFBFBD><57>ζEI<><49><EFBFBD>Wz<57><7A>3W<33><57><1F>)*/)C<><43><EFBFBD>x*c]<5D>%<25>}<0B><><08><11>_<EFBFBD><5F>IvͲ<76>'<27>\$U<EFBFBD><EFBFBD>S4k<EFBFBD>5WʏJC<0C><><05>7*<2A>b%<WC@<> <09><><EFBFBD><12>c{<EFBFBD><EFBFBD><EFBFBD><11>3)X<><58>&&<26><>eL<65>I<><49><1D>,N<> 2k#p5<70><16><>f4<66><34><EFBFBD>Ǻ<0B>z<>#<23><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<>b<EFBFBD>U<EFBFBD><55>oy<1B><16><>S<EFBFBD>4<EFBFBD>`q<>~1<>=<3D>8厉<>*<2A>OOJ<4F>C<><43><EFBFBD><0C><07><>'Dd,@kL<6B><1A><><1A><><EFBFBD><01>\\<EFBFBD>j2ͩ<32><CDA9><EFBFBD><1D><<3C>@_q<5F>2<>\0<EFBFBD>ձ<EFBFBD>)`<60><><18><><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>F\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>F<16><><*<2A>x*<03><><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD>-<2D><0C>\r<EFBFBD><EFBFBD><EFBFBD>|@<40><><EFBFBD><EFBFBD>7<EFBFBD>H@w<><13><><EFBFBD><08>H]<5D><><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_w<EFBFBD><EFBFBD>h0!<21>s<EFBFBD>1Ϗ<><CF8F>Ǭ<02>hW<68><0B>.<2E><0F>=W<><57>R*<2A>A_<03><02><>EDԷ<01>?1,Ub<55>9=t<>4è<34><05><>W<EFBFBD><57>^<5E><><EFBFBD>;<3B><><0E><><EFBFBD>@<40><>(1<D<>ÊHx<48>T()0z<30>`<14>_<EFBFBD>;<3B><>AL<41><0C>)\n<EFBFBD>K[f<>H<EFBFBD><48><EFBFBD>Wo<57>@bBK<42>iM<69><4D><EFBFBD>d+<2B>><3E>vI<76>(z:<3A><>.݀<><05>9uiѤDY<44><59><EFBFBD><EFBFBD><EFBFBD>O`<08><><EFBFBD>]I\0<EFBFBD><EFBFBD>R<13>Ć,K,<03><><EFBFBD>6L<36><4C>\"\"<EFBFBD>1g<15>(<28><><1C>|T.,<2C>9vb+\rk]u<>&<26><>|<7C><>b<EFBFBD>S<><53>d[<14>,g<1D><>aJ<61>(C<><43>k<><6B>\rF<EFBFBD>+ <09><><EFBFBD>9<><39>L<EFBFBD><05>))UA<55>B<EFBFBD>U<>h<68>g<0E><>c3x<>-n9<6E><39><EFBFBD><07><>x<><18>2<EFBFBD><32>q<EFBFBD>ib<69>rY7<><37>k<EFBFBD>y<EFBFBD>f<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>٪<>J:<3A>N<08>8<1C>Rcly\n<EFBFBD><EFBFBD>2<EFBFBD>W<EFBFBD>;<3B>.><3E>v6Q#A0<41><30>{έi<EFBFBD><EFBFBD><EFBFBD>7~@VX<56><58><EFBFBD>^<5E><>11-<2D>+<2B>v|<7C><>]Vf<56><66><EFBFBD>.<2E>{ <09><><EFBFBD>\r<EFBFBD><EFBFBD>;<3B>1lp<05>/<1B><04>uF<75><46>d<>\$PЮ0=@kS<14>0h<30><68>Ɉ@<07><>/*(O<>V.<0B><>G><15>(r<><72>!<21>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y=XZ@<14>:<3A>'&0<>6kE|<7C><><EFBFBD>'|H;<3B><1B><>N<EFBFBD><4E>g<01>%<25>W<EFBFBD>+<2B><><EFBFBD>4<EFBFBD>;̓<><CD83>'x|<7C>f<EFBFBD>9<7F><39><EFBFBD>(O<><4F>d<EFBFBD><64><EFBFBD><EFBFBD>w%9]<5D><>f}<7D><>G<EFBFBD><47><EFBFBD>s<EFBFBD><73><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><0C><>XM0<4D><30><02><01>gQ<18><><01>8̄<38>+O}<7D>͝0}<7D>9<><39><EFBFBD><EFBFBD><16><><EFBFBD>Nh<4E>/mgD<67><44><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>74勳P~}O)<29>Ug<55>9<><39><03>j<EFBFBD>8P<38><50>ݸ<EFBFBD>(<28>%<25><><EFBFBD><EFBFBD>j<EFBFBD>7oAB<41><42>i)<29><>K<EFBFBD><4B><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD> <20>}s<>1<EFBFBD>=od<6F>V[Ĵ\n<EFBFBD><EFBFBD><EFBFBD>zl<EFBFBD>Mзr:F#{<EFBFBD><EFBFBD>*#<23>x<><1E>ܰ<10><Ds<44><73>k/mw :^<5E><><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ύD<CF8D><44>2<EFBFBD>z*<2A><>n<EFBFBD><6E>%<10><><EFBFBD><EFBFBD><11>i<EFBFBD>Ù *<2A>!8-<2D><><EFBFBD>tH<14>'<27><05><><EFBFBD>\r<EFBFBD>к<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8`<60><>\"<06><><EFBFBD><1D><>i]<5D>ZZ<5A>>Z\0ަ9<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+䟂~<10><>\$ޭ<08><16>L<EFBFBD>P\\쇁<EFBFBD>XA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<><69><EFBFBD>z<EFBFBD>h<16>\$<05>SM<53>T'<1E><><EFBFBD>1<EFBFBD><05><>D<EFBFBD><44> <09><>5E<35>\0Ğ\$<EFBFBD>ttԮ<EFBFBD><EFBFBD>:\rMƷS<EFBFBD><EFBFBD>Ӗ<EFBFBD>ls<EFBFBD><EFBFBD>Af<>K<EFBFBD>k,N<>l<>D^zz<>dS<06><>/rt<72>N<EFBFBD>><3E><>o%i<><69>\0J<EFBFBD>B<EFBFBD>po<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/֘٫x\ny<EFBFBD>+<2B><>,e4<16><>q5Q'JD<4A>]<5D>B@m<><0E><><EFBFBD>R<EFBFBD>Ski~<7E><><EFBFBD><01>t0<74>[ 1<>z <09><><EFBFBD>&<26><>^<5E>\nO<EFBFBD><08><><EFBFBD>V<EFBFBD><56><12><>GV@T*<1F>H9<48>ωG0\0'<1B>`<60>Ѱ\r<EFBFBD><EFBFBD><EFBFBD>bQKsLd<02>*;\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.ĔUNp<>,L<>@TR<54>e<><65>b<EFBFBD><62>F<18><><EFBFBD>y<>n> IK<0C><1E>rG<0E> @<40><0C>?cI<63>ݓu%G<>O<10>1<EFBFBD><31><EFBFBD>C<EFBFBD>h<EFBFBD>5T<35>y<EFBFBD><15>I<EFBFBD><49>:\\0<05><06>X<EFBFBD><58>><18>ʊ<EFBFBD>0<18><EFBFBD>QB<51><1B><>EI/-LBT<>!b<><62><EFBFBD>6<EFBFBD><36><EFBFBD>k`jp\0K<0F><><EFBFBD>>k<>d<EFBFBD><64><EFBFBD><EFBFBD>/<02><><EFBFBD>ISk.+*<2A><><EFBFBD>R<EFBFBD>|gR<67><52><EFBFBD>W\\w<EFBFBD><EFBFBD><EFBFBD>t<05>.)<29>^Zc8<63>Z<EFBFBD>~F<><11>Sǵ<14>S<>m̕;b>\0jz=<3D><>T'<27>><1E><>q<EFBFBD>y}:<3A>u<EFBFBD><75>&<26><1E>W<EFBFBD>DQ<44><51>c-<2D><><EFBFBD><EFBFBD>6<[<5B><>e<EFBFBD>x<EFBFBD>ؠ<><D8A0><EFBFBD>[<5B><><EFBFBD>L<EFBFBD>\0wm<EFBFBD>l<EFBFBD>t<EFBFBD>z<EFBFBD><EFBFBD><S<>&<26><0B>db<>x<EFBFBD><78>oi<6F>gK<67>\r`<14>µ<EFBFBD>?D5u@b<><62><EFBFBD>N<EFBFBD><4E>O<EFBFBD>𤷤<EFBFBD><F0A4B7A4><EFBFBD>Y<15>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>Nr鉞<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>tMs<>cBW?<3F>*D<>.p<><70><EFBFBD>'2<><0F>Ge\rp*#<23>e<EFBFBD><65><EFBFBD><1B><>C<EFBFBD><43><EFBFBD>\"<EFBFBD>QI\n<02><07>hi<68>Q<EFBFBD>@<40><><EFBFBD>\rl <09><><08><>_.<13><><EFBFBD>t*<2A>^<5E><>s<EFBFBD>9<EFBFBD><39><EFBFBD>Whq<68><71><02>~,<2C><>Yθ<59><CEB8>dQs¦\r<EFBFBD>Bj<EFBFBD><EFBFBD>D<EFBFBD>ǡ<><1D><<T)C<>\n<EFBFBD><12><><16><>&<26>D{\r<EFBFBD>l<><6C><EFBFBD>-R<><0B>\r@rk<><1B><>Ϣ<0F><>+Z<><5A><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u8Ȩ<38><C8A8><1F><>s<EFBFBD>و<13><><EFBFBD>o<><6F>#<23><>g<02><>u\$F<EFBFBD>&\n-v\"P<13><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>nnt<6E>1<EFBFBD><31>V<EFBFBD><56><14><><EFBFBD><EFBFBD>Awbx߄<78>D<EFBFBD>5<EFBFBD><35>-<2D>0<EFBFBD>a<EFBFBD>\0\r<EFBFBD>/!<21>I<EFBFBD><02><><EFBFBD>|/<2F><><EFBFBD><EFBFBD>h<EFBFBD><68>n<EFBFBD>Gf-Mdna<6E>^(e<>a<EFBFBD><61>¨<EFBFBD>Y<EFBFBD><59>Z,<2C>S<EFBFBD>E<EFBFBD>N<EFBFBD><4E>\\<13><><EFBFBD><03><>=<3D>4~Mʹ<4D>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ft<>Ŧ<15>u\"|`<60><>E<EFBFBD><45><EFBFBD>R<>z<><7A>D<EFBFBD>`<60>{<EFBFBD><EFBFBD>@<40>k/K<1C>Y<1A><><EFBFBD><EFBFBD>3sJ<73>䃿5XGͪ<47>%<16>9)Q<><51> <13>Q<1A><><EFBFBD><EFBFBD>1t<31>h<EFBFBD><0F>!TR<54><52><EFBFBD><11>H<02><><EFBFBD>Q<EFBFBD>\r<03>C<EFBFBD><10>E<EFBFBD>0<EFBFBD>#w<>G2<><32>/<2F><07><>/<2F><><EFBFBD>=^ <20>/Ժ<>ΐ<><02><><EFBFBD>E<EFBFBD><1C>\0{+<2B><><EFBFBD>t<1B>+<2B><>q<EFBFBD>б<EFBFBD><D0B1><EFBFBD>I<EFBFBD>t<EFBFBD>|<7C><><EFBFBD><EFBFBD>v<EFBFBD><76>q<EFBFBD><71>Ԉƌ&<26>\r\\<EFBFBD>Vߠ=<3D><><EFBFBD>Eb<45><62>nO<6E>rn<12><><EFBFBD>X({<EFBFBD>ɹuzK<EFBFBD><EFBFBD>`=:<10>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>%<25>:p<><70><08>q+<2B><>R<08>ldY<64><02><>\"<EFBFBD><EFBFBD>[V<>u{H-<2D><>H<EFBFBD>_<EFBFBD><5F><EFBFBD>8j<7F><6A>V<EFBFBD><56>5<><08><><04>\"\0\"N?E;+<11>O~<7E>wN<77>];L<14>'<27><><EFBFBD>SOF<15><><EFBFBD><EFBFBD>䁻<EFBFBD><E481BB>D<EFBFBD>-<2D>!#sN<73><<3C><><EFBFBD> ¯<><C2AF>mu<6D><75><EFBFBD><EFBFBD>G<EFBFBD>8<EFBFBD><38><EFBFBD>Tn]<5D><><EFBFBD><EFBFBD><EFBFBD>:<3A>zIMn<4D> O<>8<EFBFBD><38><EFBFBD>z5<7A><35><EFBFBD>o\\5<EFBFBD>7<><<16><>Ų#8<><38><EFBFBD><EFBFBD>?sN<4E>L<EFBFBD><4C> }<7D>x<1E><07>&4<><34>?<3F>[<5B>z<EFBFBD><7A><EFBFBD><EFBFBD><F3B3B7B6><EFBFBD><EFBFBD><*W<><57><EFBFBD><15><><EFBFBD>e}{HZ<48><5A><EFBFBD>,(<o<>o<EFBFBD>xW<>t<>2<><32><EFBFBD>#<23>A*<18><><EFBFBD><EFBFBD><EFBFBD>o\\<EFBFBD><EFBFBD>R<>}xH>NP<4E>|Qɚ|x<>'<27>-<2D> <20><>2\0<EFBFBD><15>?ƾ2*\r|]t<><74>p<0B>\"<EFBFBD>ڲJuuXyb<>D\n<EFBFBD>Z|<17>H7<48>_<EFBFBD>W<EFBFBD><57><EFBFBD>GuXyH>T\r<EFBFBD>G<1E><><EFBFBD><19>Ql<51><6C><EFBFBD><EFBFBD><EFBFBD><1F><><EFBFBD>n!<21>u'<27>*<2A>C5<43><35>>U<>2!b <1F><>9Pw<50><77>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}y<>W<EFBFBD>|<7C><><EFBFBD><0B>a\$<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><>T<EFBFBD>U<EFBFBD><16>&~9(\\*<2A>!b_<><5F><EFBFBD><EFBFBD>w<EFBFBD>7\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]=<3D>\\*<2A><1E><>@<04>#N7ͪ<37><CDAA><EFBFBD>5QN`@<\0<EFBFBD>6!<21>9<EFBFBD><39>l<EFBFBD><6C>\$<EFBFBD>wI\$4<EFBFBD><EFBFBD><15>2<EFBFBD><32>\$<EFBFBD>&<26><><EFBFBD>.RZ<52><5A><EFBFBD><EFBFBD>Y<EFBFBD><59>uyᤳ<01>p<EFBFBD><70>&SI<53><49>@<40>EJiL<>c<EFBFBD><63><EFBFBD>V<EFBFBD>1F<31>1<EFBFBD><31>Z\r\r<EFBFBD><EFBFBD><EFBFBD>h<11><>k<><02><>HH<><02>˿<EFBFBD><CBBF><EFBFBD><05><>K<EFBFBD><4B><EFBFBD>?x<01><>-0\n<10><>d<>N3K<33><16>C<EFBFBD>59)ľ:B#<23><><EFBFBD>dN5A1<>Ɖ<EFBFBD><C689><EFBFBD><EFBFBD>Od[3ڠ<33><DAA0>h<11>[s~)<29>9<EFBFBD>DN<44>y<EFBFBD><79><EFBFBD><EFBFBD>><3E><><EFBFBD>X<EFBFBD><58>'Ƚ<>ϐH<CF90><48><EFBFBD>,<2C><>)ڂ<>\"<EFBFBD>e<EFBFBD>0;\0<EFBFBD>qeo><3E><>=<3D>|<7C>2<EFBFBD>G+B<>@z<17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02>@]}<7D><16>rQ<1D><1F><> k/<2F>|<7C>G<>:ѯ<18>W\0<EFBFBD>a4><3E><>^|<7C><><EFBFBD><EFBFBD>g<EFBFBD>o<>XE<>9p<39><70><1F>Lrg<72>A<EFBFBD><41>6<EFBFBD><36>p<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>1<EFBFBD><31>*<2A><07><><14>7<EFBFBD><37>[<5B>>]<5D>#<23>?jB<6A>~<7E>/<2F>}<7D>3<EFBFBD>:<3A><>U\$<05>?<3F><<3C><0B>G<EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD>\n>0#!i<>>.{A}'hQ<68>Lw<>~<7E>W_<57><5F><EFBFBD>Th#d<><64>û<0F><>d<EFBFBD><64>FQ<18><><EFBFBD><EFBFBD><EFBFBD>*{<EFBFBD><EFBFBD>\"<EFBFBD>\"<EFBFBD>P{<EFBFBD><EFBFBD><EFBFBD>}<03>4<EFBFBD>N<EFBFBD><4E><EFBFBD>i<EFBFBD><69><EFBFBD><15>\r_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>e?l4<6C>2<EFBFBD>?\n<0F><>F<EFBFBD><46> <09><>q<EFBFBD>U<01><>Ľ<EFBFBD>_<EFBFBD><5F>`_<><5F><16><><EFBFBD>j<><6A>{_k_<>o<7F>~<7E><>c*#<23>(<28>/<1A>!Dn<44>F<>`<04><>?@s<>B<EFBFBD>!<21>?;<3B>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>\0k<EFBFBD> <09>*N<><4E>D;<3B><08><>+d\nZZdB<EFBFBD><EFBFBD><1A> <20><>`B5<1B>P\n8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15><>c#ou<6F><75>k<>ˊM<01>ݯw<DDAF>.<0B><01>F<EFBFBD>J<EFBFBD><4A><EFBFBD>!|<7C>Ĉ2Fc<15>Y).<2E><><EFBFBD><EFBFBD>XHy<04>[<5B><>~<7E><><EFBFBD><EFBFBD>#/<2F>&<0E><><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><>Y@<40><><EFBFBD>(|\r\0,O<05><1A>0Yb<59><08>βŬ<CEB2>\$0<EFBFBD><EFBFBD><EFBFBD>aˑ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>A\$<0E><>0,<2C>@<07>Ӱ>>9<><39>\\t<18>i<01><<3C>\0<EFBFBD><EFBFBD>q\0<EFBFBD>}@`<60>\0fVj<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dߠ'(<28><><EFBFBD><03> !_<>n<EFBFBD><6E>0+c<><63><EFBFBD>iig8a]'=-<2D>B!(<28><>8<EFBFBD>_<08><><04>x<EFBFBD>j<EFBFBD><08><><EFBFBD><EFBFBD>)\rH5H<EFBFBD><EFBFBD>Yn ,f<17>r<72><12>}-d\$<EFBFBD><EFBFBD>H<10><>2n鴆ܛ<E9B486>=<3D>-<2D>d<EFBFBD><64><EFBFBD>FE-d<><64><EFBFBD>a<EFBFBD><61>N_z4@<40><06>[<5B>n<EFBFBD><03>\$x!!i0T<><02><><07>u<EFBFBD>8<EFBFBD>ɸ<EFBFBD><04><02><>\0PZ8Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<><63><15><>+Њ<>AAF(<07><07><><EFBFBD>`mg*<2A>vS, dž<><1E>KcA<63>۬ &<26><1E>9<><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>0w<30>+<07>n<EFBFBD><6E>=<3D><07>)\$<EFBFBD><0E><07>Q<EFBFBD>~A<><41>a<EFBFBD>\0004\0u<07>{<EFBFBD>(<10><03>\$<EFBFBD><EFBFBD><EFBFBD>y !<0B><>B<08><> A<<3C>a<0F><>Az <20><><EFBFBD>ZA4\$ZY9.aX\r<12><>d<EFBFBD>A<EFBFBD>L<EFBFBD>v|oOz|<02>Z<C29A>(<28>e<1C>Z<EFBFBD>Ć<EFBFBD>");}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><78>?<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><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><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><><EFBFBD>2<>a@<40><>+J<><4A>.<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><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><EFBFBD>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<><79><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><EFBFBD>W<EFBFBD><57><10><>&<26>/n<><6E>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><EFBFBD><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><35><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><EFBFBD>X[<5B>d<EFBFBD>d<EFBFBD><64>:<3A><>a\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>Π<><CEA0>W<EFBFBD><57>/ɂ<><C982>!+eYIw=9<><39><EFBFBD>i<EFBFBD>;q\r\n<EFBFBD><14><11>1<EFBFBD><31><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><C99A>X<EFBFBD>k,<2C><0E>R<><52><EFBFBD>~ <09><>̛<EFBFBD><CC9B><EFBFBD>Ny<4E><79>Sz<53><05><>6\0D <09><><EFBFBD><EFBFBD><EFBFBD>؏<EFBFBD>hs|.<2E><>=I<>x}/<2F>uN<75><4E><08><>'R<><02><05>n'<27>|so8r<38><72><EFBFBD>t<><74><EFBFBD><EFBFBD>a<EFBFBD>\0<EFBFBD>5<EFBFBD>P<EFBFBD>֠dẘ<77><CC8A>̕q<><71><EFBFBD><EFBFBD>5(X<>Hp|K<>2`<02>]FU<46>~!<21><>=<3D> <20>|<7C>,up<75><70>\\<EFBFBD><EFBFBD><EFBFBD>C<>o<0B>T<EFBFBD>e╙C<E29599>}*<2A><>f<EFBFBD>#<23>shp<0C><>5<EFBFBD><35><1A><><EFBFBD>mZ<6D>x<EFBFBD><78>fn~v)DH4<48>e<EFBFBD><03>v<EFBFBD><08>V<EFBFBD><56>by<62><79>T<EFBFBD><54>̥,<2C><EFBFBD><7F><<3C>y,̫֞<D69E>2<EFBFBD><32><EFBFBD>z^<5E><><EFBFBD><EFBFBD>K<EFBFBD><4B>2<EFBFBD>xo <09> <20><><EFBFBD>2<EFBFBD> I<><49>a<EFBFBD>h<1C>~<7E><0B>c<><63>ej<65>6<EFBFBD><36>)<29>]<5D><04><><18>5<EFBFBD>͍dGE<D78A>t<EFBFBD>'N<>=V<><56>ɜ@<40><><EFBFBD><EFBFBD>b^<5E><><EFBFBD><EFBFBD>p:k<><6B>1<EFBFBD>StTԙ<>F<>F<EFBFBD><46>`<60><18>`<60><0E>{{<EFBFBD><1F><><EFBFBD>4<EFBFBD><34>7<EFBFBD>pcP<63>ط<EFBFBD><D8B7>V<EFBFBD><56>9<EFBFBD>ىLt<4C> M<><4D><EFBFBD><03><>{<EFBFBD>C<1F>l<EFBFBD><6C>n47s<37>PL<50><14>!<21>9{l a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!pG%<25><0F>)<29><<3C><>2*<2A><<3C>9rV<72><56><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>W<EFBFBD>tn\r<ė<03>0<EFBFBD>vJ<76>栱I<05>i<EFBFBD><03>1<><31>Ys{uHհ?<3F>ۖ<EFBFBD><DB96><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>o<EFBFBD>Aߒr`S<><02>Cc<43><63><EFBFBD><EFBFBD>v<EFBFBD>˳J<12><>c<EFBFBD><63><19><><EFBFBD>=<3D><>-H/<05><><EFBFBD>q'E<><45><EFBFBD><EFBFBD>w|<7C><>N<EFBFBD>{\r};<3B><>><3E>x<>r<EFBFBD><1C><>u5<>B<EFBFBD>*\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD>\0<EFBFBD>{HU<08><><EFBFBD><EFBFBD>C<EFBFBD><43>W<EFBFBD>廳<EFBFBD>yB'<27><<3C>6<EFBFBD>[<5B><>s<EFBFBD><73><EFBFBD>y<EFBFBD><0B><><EFBFBD><EFBFBD><EFBFBD>@<40><>{<EFBFBD>Q<EFBFBD><EFBFBD><04><>>?/<<3C>K@<40> <20><><EFBFBD>B<>|aH\"<EFBFBD><1F> R <09>@>~@<40>BhE<0F>L\$<04><>[<5B><>Sa \"<EFBFBD>Ђ0<EFBFBD>Fe`b\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>\n`<60>=<3D><><EFBFBD>n<EFBFBD><6E>.*̔<>O<EFBFBD><4F>Ϙ<EFBFBD><CF98><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><jO<6A>lM<6C>\"mR<EFBFBD><03><>/<2F><03>*<2A>&T肙<04>T<EFBFBD> _E4<45><34><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><1A><>|R0*<2A>o<0C><>Bo>S%\$<EFBFBD><05> <20>N<><<3C>|<7C><>ξ<><CEBE><EFBFBD><01>y<06>7\n<EFBFBD><EFBFBD><EFBFBD><0E><>,鯢<><E9AFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쐬<EFBFBD>Pt<50><74>\"l&T<>o<EFBFBD><07>E05n<><03><><EFBFBD>o<EFBFBD><05>r<EFBFBD><72>v<EFBFBD><76><EFBFBD><02><><EFBFBD><EFBFBD>֣Bp<><70>p<EFBFBD><03>\n<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><0E><0B>.-,<2C><>q<16><><EFBFBD><EFBFBD>3\r/<2F>p<><70>P<EFBFBD><0B><07>b<EFBFBD><62><EFBFBD><EFBFBD>%m<12><><EFBFBD>P2?P<><13><><11>@<40><><EFBFBD>0(<28>/gpz<70>0<EFBFBD>`<60><0C>gυ<16><>ϑ<07>\\嬳q<1A><>><3E><>p<EFBFBD>@\\<EFBFBD><EFBFBD>u<17><0C>@<40><0E><>\$Ne<08>Q<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0(A(<28>mc<6D>L'`Bh\r-<2D>!<21>b`<60><>k`<60><0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`N<>0<EFBFBD> <09>ЯnN<6E>`<60><>D\0<EFBFBD>@~<7E><06><><EFBFBD>`K<><4B><EFBFBD>] <20>\r<11>|<7C><><1E>ʾ<EFBFBD>A#<23><>i<>Y<EFBFBD>xf<78><66>\r<EFBFBD>4 ,v<>\0ދQ<EFBFBD>ɠN<EFBFBD><EFBFBD>Xo<EFBFBD><02><><EFBFBD><05><> q<>'<07><>t<>r\$<EFBFBD><EFBFBD>np<EFBFBD>6%<03>%lyMb<4D>ʕ(<28>S)L')<29><>ޯL<DEAF>M<EFBFBD>I<>s {&<26> KH<1A>@d<>l<EFBFBD>wf0<66><30>x<><78>6<EFBFBD><36>~3<15>X<EFBFBD>h0\"<EFBFBD><12>D<EFBFBD>+<2B>A<EFBFBD>\$<EFBFBD><EFBFBD>`b<>\$<EFBFBD><EFBFBD>%2V<32>L<EFBFBD><4C> Q\"<EFBFBD><EFBFBD>%<25><><EFBFBD>R<>FV<04>Ny+F\n<EFBFBD><EFBFBD> <20>%fz<66><7A><EFBFBD>+1Z<31><5A><EFBFBD>Mɾ<4D>R<EFBFBD>%@ڝ6\"<EFBFBD>bN<EFBFBD>5.<2E><>\0<EFBFBD>W<EFBFBD><EFBFBD><0E>d<0C><>4<EFBFBD>'l|9.#`<60><>e憀<65>أj6<6A>Τ<EFBFBD>v<07><><EFBFBD><EFBFBD>vڥ<76>\rh\r<EFBFBD>s7<EFBFBD><EFBFBD>\"@<40>\\DŰi8cq8Ğ <09>\0ֶbL. <20>\rdTb@E <20> \\2`P( B'<27><0B><><0F><>0<EFBFBD><30>/<2F><>|<>3<EFBFBD><05><><EFBFBD>&R.Ss+-<2D><><EFBFBD>cAi4K<>}<06>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0O9,<2C>B<EFBFBD><42>@<40>CC<43><43>A'B@N=<07>;<3B><>7S<37><3<>DI<44><49>MW7<57><37>ED<45>\rŨ<0C>v<EFBFBD><76>@<40>DȺ<44>9 <20>l~\r<EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>z^<13>r!<0F>}I<><49><17><><EFBFBD><EFBFBD>sB<73><1E>\0eT<>K<14>!<06>K<EFBFBD>UH<55><48><04>/<15><><EFBFBD><EFBFBD>2<EFBFBD>i%<=<03><><03>^ <20><>g<EFBFBD>8<EFBFBD>r7s<37><73><EFBFBD>%N<><4E>E@v<>sl5\rp<EFBFBD><EFBFBD>\$<EFBFBD>@<40><0C><><08>P<05><>\r<EFBFBD>\$=<02>%4<><34>nX\\Xd<EFBFBD><EFBFBD>z٬~O<><4F>x<EFBFBD>:<3A><>m\"<EFBFBD>&<26><>g5Qn<>(ൕ5&rs<> N\r9<EFBFBD><1E><>.I<>Y63g6<67>]Qsv<73>b/O <20>|<7C><0E>@<40>y<EFBFBD><79>^ur\"UvI<EFBFBD>{V-MVuOD<4F>h`<60>5<EFBFBD>t<><74><EFBFBD><EFBFBD>\0<EFBFBD><07>T<11>, (<28><><EFBFBD>q<15>R<>G<EFBFBD>.l6[S0@<40>%<25><><EFBFBD>C}T7<><37>85mY<6D><59><03>)<29>8<EFBFBD>C<EFBFBD><43>r<EFBFBD>;<3B>ئ)<29>M+<2B>4 <09> <20><>4<EFBFBD><34>|<7C>Ϊ1<CEAA>ZJ`5X,<2C>L\0<EFBFBD>7T\rx<EFBFBD><EFBFBD>H<EFBFBD><EFBFBD>dR*<2A><07><><EFBFBD>JЦ\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>52<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Cm1S<31>R<EFBFBD><52><EFBFBD>T`N<>e@'Ʀ*<05>*`<60>><3E><><EFBFBD>\0|<7C><>I!<21>E,<2C>ag<61>.<2E><>cup<75>Ý9<13>`B<04><>aa<07><05><>p<EFBFBD>`<60>m<EFBFBD>6<><36>R~<7E>\0<EFBFBD><EFBFBD><EFBFBD>g-cmO<6D><4F>1<EFBFBD>\reIN<>QN<51>qo\r<EFBFBD><EFBFBD>nq<><71><0F><>R6<52>n<EFBFBD>Sn<53>t<EFBFBD>w<04>æ\r<EFBFBD>]a<><61><EFBFBD>-<2D>a*<2A><0F><>\\5Wpv^ OV`AF<41><46><07><>3#82p<>H'J'nM('M=j<>9k<16>ZbBn<42><<15>@<40><<3C> \0<EFBFBD>fe<EFBFBD>:\0<EFBFBD>K(<28><>N<1E><><EFBFBD>v<0E><0B><><1B>-!<21><>1<EFBFBD>ލH(<28>Qg<51><67>µ<1F><05><>y<03><<3C><14> <20>d<EFBFBD>\\<EFBFBD>c\\<EFBFBD>s,u<>˃q0<71>~<7E>i~<7E><><EFBFBD>e<EFBFBD>Ѷ<EFBFBD><D1B6>*<2A>~<7E><>Ƞ<EFBFBD>~<7E><>M<EFBFBD>m<7F><EFBFBD><7F>}Wؘ\r<EFBFBD><EFBFBD> <20>@<40>\"i<02>\$B<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>5b?<3F>6!w<><77>+xl1<6C>`<60><>`<60><> s<><73> <17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<16>vCnhEd Q<><51>id\"6<EFBFBD><EFBFBD><EFBFBD>`<60>\"&f<><66>x<EFBFBD>(\"<EFBFBD>2<EFBFBD><EFBFBD>Qz<><15>\$<EFBFBD>[0%<25>0lw u<1F><>>w<>%ر<><18>%<18>w<EFBFBD>Z<EFBFBD>\"-<2D><12><>u<EFBFBD>%<25><><0B><><15>Y<>g<><67>>x\\<EFBFBD>-<2D><><11>פ<><D7A4><EFBFBD>-v<>\\<EFBFBD><EFBFBD>x^'M <09>P<><50><EFBFBD>Y<03>P<EFBFBD><10><><10>)<29>8<EFBFBD>%<10>C<><43><EFBFBD>@<05>DF <20><>\r@<40>\0<EFBFBD>\\<EFBFBD><EFBFBD>0N<EFBFBD><EFBFBD>.<19><18>S\$<EFBFBD><EFBFBD>YI<EFBFBD><EFBFBD>C<EFBFBD>I<EFBFBD><EFBFBD> <20>i<18>>xP͒<CDB8>:ͷ<>=<3D><>T,<2C>'L<><4C>ٞ<EFBFBD>q<0E>Q2͌<32>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><0C><05>Δ<EFBFBD><CE94><0C>@<40>ђ<EFBFBD><D192><1C>9F<39><46><EFBFBD>`<60>O<EFBFBD><4F>f<0C>O<EFBFBD>w<EFBFBD>\\h<EFBFBD>=<3D>}S<>jGGW<47><18><><EFBFBD>A<EFBFBD><41>L<EFBFBD><4C>RJ\$JP+<2B>7<EFBFBD><37><EFBFBD>L<EFBFBD>v,ә(̵<><CCB5><EFBFBD>ZP<18>g<EFBFBD><67><EFBFBD><EFBFBD>&z+<2B><><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>˘7<CB98>ͷ<EFBFBD><0E>-<2D>vA<76><41>w<EFBFBD><03>h <20>^9<>T<19>OD<4F><44><01>Z<15><>C<EFBFBD><0F><>m<EFBFBD><6D><EFBFBD><EFBFBD>`O<><4F>R<EFBFBD>yӒ<79><0E><>!<21>Gvzs<7A><73>G<EFBFBD>\$IhY<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>58<EFBFBD><EFBFBD>xF<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y9<EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<>ݍ8<DD8D><38>U<EFBFBD><55>C<EFBFBD><43>[<5B><16><>e<><18><>Zq<5A>uA<75><41>1<EFBFBD><31><EFBFBD>?<3F><><EFBFBD>و<EFBFBD>9!<21><><EFBFBD><EFBFBD>:<3A>ړ<><DA93><EFBFBD><EFBFBD><EFBFBD>b0<62><0B>{\r<EFBFBD>Qh`Md7<64>{2<EFBFBD> ۲8<>H`%Ƹ<><C6B8>{-<2D>l<EFBFBD>C<EFBFBD>Xk<58>H<0C><>Ӟ<EFBFBD><D39E>|\0<EFBFBD>}<7D>X`ShխX<>ց<EFBFBD><D681>\r<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>y<EFBFBD><EFBFBD>X<1F><><EFBFBD> <0F>:w7<77><37><EFBFBD><EFBFBD><EFBFBD>n<0C>鲌<EFBFBD>#<23>/<2F>:4<0C>(M<><0F>;<3B><><EFBFBD>c<EFBFBD>D<EFBFBD><44>z;<3B>Z3<5A><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><>砛<EFBFBD>?<10>.<2E><><04><><EFBFBD>\r<EFBFBD>o<><6F><19>bO<62><4F>^`Ϻ<>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><EFBFBD>X<58>]<5D>|<13><><EFBFBD><EFBFBD><EFBFBD>^<5E>!%Xٽ<18><>8<EFBFBD><38><EFBFBD>\$<EFBFBD>;<3B><>z<EFBFBD>T<1A><>xK<78><4B>-~<7E> 8X)<!<21><>y<7F><79>x<78>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>:<3A><> ىF<0F><><15><><13><><EFBFBD>x<EFBFBD>z+U<55><E0BA83><EFBFBD><EFBFBD><0C>A<EFBFBD>E<>;<3B><0C>'<27>%c<><63><EFBFBD><EFBFBD>Yߪ<59><DFAA><EFBFBD><EFBFBD>w<EFBFBD><{<EFBFBD><EFBFBD>9<EFBFBD><EFBFBD><EFBFBD>V:<3A><>`<60><>ʇ<<3C><><EFBFBD><EFBFBD>G<EFBFBD>ء<EFBFBD>Y<EFBFBD><1F>\0<EFBFBD><EFBFBD>Z<07><>U<18>Zq\nmx<05>)_<>}<13>YǏ<59>_<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>y\r<EFBFBD>Y<EFBFBD><EFBFBD>,ۚ3<>L<EFBFBD><4C>٪<EFBFBD>Y<EFBFBD><59>ٸϻ><3E>M<03><> <09>M<11><><EFBFBD> <09>)<29><>P\0u8 S!Z{Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9θ<EFBFBD><EFBFBD><EFBFBD>fV3<EFBFBD>o<EFBFBD>Oϼ<EFBFBD>E<EFBFBD><03>`CЭ<43><D0AD>XU<58><55><19>}<1D>lw<6C><77>0<EFBFBD>}<7D><><EFBFBD><11><>͙<EFBFBD>7<EFBFBD>Y3ӬӔ<1D><>4<><34>G<EFBFBD><47>J<EFBFBD><19>&<26>ä<EFBFBD><C3A4>ͭ(<28><><EFBFBD>-A<><1C>V=f|<7C><14><>@E/<19>%\0r}<7D>ޮnn<0C>\0<EFBFBD><EFBFBD>Ly<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><+<2B><><EFBFBD>_<EFBFBD><5F>|<17><>#<23>A<EFBFBD><41>\"C[y<><79>EW<45><57><06>rW<72><07>f(\0<EFBFBD><EFBFBD><EFBFBD>Л<EFBFBD>><3E>)<29><05><><EFBFBD><EFBFBD>_<EFBFBD>U<EFBFBD><55>,U<>\\<EFBFBD>#<23><>e<EFBFBD><65><EFBFBD>*r<>`<60>N<EFBFBD>Y<EFBFBD> <20>*<2A>=a<>\\<EFBFBD><EFBFBD>&<26>^g4<67>mü<6D><C3BC><EFBFBD><EFBFBD><EFBFBD>e#<23><>^<5E>|ނ<>QXN<58><4E><EFBFBD><EFBFBD>I<EFBFBD>><3E><><EFBFBD>\0rƉ<72><C689><EFBFBD>4<EFBFBD><34>^Y<>V#<23>)<29><>k<EFBFBD>><3E><EFBFBD><D7BE><EFBFBD>Ι<EFBFBD>ԚF<D49A>W^<5E><><EFBFBD>%<25>ݒ\$+<2B>ՍP<D58D>kY*u<08>~<7E><>,<2C><0B>M<EFBFBD><4D>W͂hhG<68><47>K<><4B>\\C<EFBFBD><EFBFBD><EFBFBD>7HmZ<0B><><EFBFBD><EFBFBD>S<>Z_U<><55>%<25>\r<EFBFBD><EFBFBD>b)<29><>gg q<><71><EFBFBD><EFBFBD><0B><><1E>@@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΅t<>\rJ<EFBFBD><EFBFBD><0E>۔<EFBFBD><DB94>7s<37><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>K_1<5F><31>t<EFBFBD>j&S<>Bi\0<EFBFBD><0C><> &\r<EFBFBD><EFBFBD><EFBFBD>`<60>:<12>j<12>F<EFBFBD>~=T̪<CCAA><7F>g<EFBFBD>侑<EFBFBD><E4BE91>!<21><1E><>^h<>^<5E>ו<EFBFBD><D795><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/[{<EFBFBD>B<02><><EFBFBD><11>(<28>/<2F>|<7C><><EFBFBD>g<EFBFBD><67><EFBFBD>j/<2F>d\\ޖSɗ<><C997>9<EFBFBD><39><EFBFBD>G`<60><>u<16><>1<19>M<EFBFBD><17>?<3F><><EFBFBD>3}<11>Q\$q<EFBFBD>I<EFBFBD>m~<7E><><EFBFBD><EFBFBD>G=<3D><>oVz<56>\0_p<EFBFBD><EFBFBD><EFBFBD>!t<><74>r{<EFBFBD><EFBFBD>^Z&<26><> <09><><EFBFBD>u<EFBFBD>X<><58>1@<40><01>G{<EFBFBD><1E><>Ь<EFBFBD> NI<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$=0<>Bu82<38>S\"<EFBFBD>6<EFBFBD><EFBFBD>Qpj<EFBFBD>ov\r<<3C><>ɶU<C9B6>\0.<02><><EFBFBD><0C><>E<01>M\n8<EFBFBD>V<EFBFBD>oQ\\<EFBFBD>`?<3F><><EFBFBD>L6<4C><0F><>=\r<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<01><1E><><01><>B2pu<03>&\0<EFBFBD><16><>5<EFBFBD>\r<EFBFBD>j<01><19>0V<30>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>;v\0eH;<01><>ʇTJ<54><4A>6pH?/\\<EFBFBD>H<EFBFBD>@!pp<70>C<EFBFBD><43>+5<>\\+a<1A>8;<3B>\r(*<2A><>T<>Ƣ;<3B>O<>|<7C><><EFBFBD>^Ld<4C>&/<2F><>NI<4E>T<EFBFBD><03>|#<23><><06>G<EFBFBD><47>`j%Ǘ<><C797>D<><1C><><EFBFBD>Z<EFBFBD>ġ4<C4A1>ni<15>i<EFBFBD><69>4<EFBFBD><34>]@t<><74>#5c<35>ľ<EFBFBD><C4BE> <09>Z<EFBFBD><5A>R<EFBFBD>yR`@ँ\$I{z<EFBFBD><EFBFBD><EFBFBD><08>胇<05><>4|<1A> <20><><EFBFBD>܀@=hCE<43><06>H<EFBFBD><48>, ,Z<><5A><EFBFBD><02>i<EFBFBD><69><EFBFBD>K<0B><>àP<>|,g<>z*<2A><><16><><EFBFBD>E)AjknK\n<EFBFBD><EFBFBD>C\"J79<02>}4<>f<EFBFBD><66><EFBFBD><07>*<2A>4<EFBFBD>65<36><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D78F><EFBFBD>Q\\<EFBFBD><EFBFBD><EFBFBD>c<><1D>M<EFBFBD><4D>\r<EFBFBD>{<EFBFBD><EFBFBD>*<2A>1j<31><6A><EFBFBD><EFBFBD><EFBFBD>lF<6C><46>m<EFBFBD>4<EFBFBD><19>M<EFBFBD>*<2A>`<60>X<EFBFBD>G<EFBFBD>D<EFBFBD>A-qqab<61><62><05>1<EFBFBD>9R<01>H<EFBFBD><48><EFBFBD>b<EFBFBD><62>g8<67>+<2B>l/<11><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ń<0C> (<28>ʀL\" 8<0C><><EFBFBD>0(Dc<44><63>#ihc<68><63><EFBFBD>`<60><>8<EFBFBD><38><EFBFBD>A1<41>\\<EFBFBD>uK(<28>4!<21><><EFBFBD><EFBFBD><EFBFBD><08><>d<><01>3<EFBFBD>8<EFBFBD><38><EFBFBD><18>ш<EFBFBD>Ʈ4<C6AE>j<EFBFBD>;<3B>#<06><>Ø<EFBFBD><04><><0C>s8<><38><EFBFBD>5,ucnc<18>F<>N<1F><>pPa8<>G8<>r<EFBFBD>K<EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><14><>ύ<EFBFBD>k<EFBFBD>i<18>˕4<07>A<> <09>8TҨ<54>26 ;*i<><69>X<EFBFBD><58><EFBFBD><0C>2%M<02>BJG<> &<18>C*1T\n4 -#<23>.<2E>%<25><18><07>'z<>#<23>8<><38><EFBFBD>A+<11>@S.0<EFBFBD>׀<EFBFBD><EFBFBD><EFBFBD>II`U<>Q<EFBFBD><06>U<EFBFBD>dd\$)<29><>*]<5D><><EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD>C<EFBFBD><43>9M*<2A><> \$b+<2B><19>ѽΑ<>ydt<64>\0-<2D><>L<EFBFBD><4C>8\$<EFBFBD><EFBFBD>e\$<16><><EFBFBD><Aɍ!<21>d<EFBFBD>\$<EFBFBD>p@]<5D>d<EFBFBD><64><EFBFBD><EFBFBD>&<26><>M+2E<32><45>y߈((_|<7C>Md<16>vU<76>9!<21>eD <09>(<12><>W=<3D><><17>#<02><><EFBFBD>_<1A>'<27>bN<62>;<14><02>'<27><>\0<EFBFBD>O<EFBFBD><<3C>L<>iA<69><41> Р<>T<EFBFBD><54><EFBFBD><02><>\0<EFBFBD>Q<EFBFBD>J# }Ba(<28>/<2F>u<EFBFBD>GB<47><42><EFBFBD>%-)<29><17>h<EFBFBD><68>u<EFBFBD><75><EFBFBD><EFBFBD>~\0<EFBFBD>I<EFBFBD>U<EFBFBD><12>Pr<03>+1<><31><EFBFBD><0F><><0B><>%51<35><31>ɒL`ܞE'(<28>/<2F><>Q<EFBFBD>Ô<EFBFBD><C394>%T<>)9<>Or<4F><72>T<EFBFBD><54>],<2C>?<3F><<3C>a<EFBFBD> <09><><EFBFBD><C282>/|<05>\$O<EFBFBD>@Z<05><>I<EFBFBD>XN<58>|<7C>%<25>,<2C>SK:]ha<68><61>%<25><>)k<><6B>P\0,<10><><EFBFBD>'<27>0J<30>:<3A><> <09><><15>&<26><><EFBFBD><EFBFBD>V<EFBFBD>0<><30><EFBFBD><EFBFBD>jهJM<1B>*<2A>x<EFBFBD><78><EFBFBD>P)<29><><EFBFBD>j<EFBFBD>K<><4B>R <20><>\\\r<EFBFBD>u\r<EFBFBD>(ÐW<><18><>F: k<><6B><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><0B>NJ<02><>P!<21>Q2 'H<13> *\0<EFBFBD>g<EFBFBD>T|<7C><><EFBFBD><02>~g`D,<2C>Ͼ\0#<1F> <09>;(\0<EFBFBD><04> <20><>L<EFBFBD><4C><02><>f<EFBFBD>5<EFBFBD>'<11><>`'<27><><EFBFBD>&t(<28><>L<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD>\0<EFBFBD><04>'<27><>ksi<73><69><EFBFBD>&<26><02><15><>d<EFBFBD>m<01><15><>P\"<EFBFBD>Ng`O<>&<26><04><><1F><08> X@<40> <09><>%sh<02><>g_<01>sb<73><62>f<>5<EFBFBD><35>M>s3<73>@T<><54>77<37>+<2B><>nS<6E><53>dӧ5'<27>6s\0\\<EFBFBD><EFBFBD><EFBFBD>\0O:<3A><>NLS@ P<13>{;9<>Ͷp<CDB6>F<02><>@<40>78_<01>l<EFBFBD>9<EFBFBD><39>\n<EFBFBD><EFBFBD><04>)<29>Rg<52>9<EFBFBD>@a<><61>:i<>\0<EFBFBD>vS<>D<EFBFBD>g<EFBFBD><04>\0<EFBFBD>S<><53><EFBFBD><EFBFBD>\0<EFBFBD>s<>M\0B<02>\0<EFBFBD>+O<0F>q<EFBFBD>`<14><>><3E><>4 T9<><39>7=<3D>M<>v<EFBFBD>=q<>'y;<3B>'L<>f<EFBFBD>F<EFBFBD><0C>f<EFBFBD>)<29>ϖwP<77><50>T<EFBFBD>f<EFBFBD>>\0<EFBFBD>O<EFBFBD>|<13><>?0)O<>~<7E>|<7C><><EFBFBD><EFBFBD><EFBFBD>`#N<><EFBFBD><02>\0<EFBFBD><EFBFBD>><3E>'Ϫ}<7D>ՠ<EFBFBD><D5A0><EFBFBD><EFBFBD>><19><><EFBFBD>~<7E><06>e \0<EFBFBD>?<3F>*P<><50>3<EFBFBD><33>\\<EFBFBD><EFBFBD><EFBFBD>@<19>͌<07><1C>5\r'<27>C<EFBFBD><43>P<EFBFBD><50> O<>E\n<EFBFBD>MB<EFBFBD>#к<>T;<3B><><0C><>=jPރ49<34><39><10><>Ez#NƉ٢<><D9A2><EFBFBD>FY<46><59><EFBFBD>\\<EFBFBD><EFBFBD>\0CA<EFBFBD>QJ<51>TV<54><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>7 \n<EFBFBD><EFBFBD>v<EFBFBD>0@<05><1A>_<EFBFBD><5F>Q<EFBFBD>L<EFBFBD>RRc!<21><>V<EFBFBD>|<7C>z<EFBFBD><7A>6<EFBFBD><36>KKю<4B><D18E>eS<65><53><04><><EFBFBD><EFBFBD>4<EFBFBD><15>\$<EFBFBD>aI<EFBFBD><EFBFBD>|P<><50>A+<2B><>.qKD-<02>S <20>EvbCO<>><3E><>H<EFBFBD><48><05><06><<3C><>\r#<23><>LPܘ<50>s⥺P֭2<D6AD>0<14> =<3D>*<2A><>WL<57><4C>2d<32>t<EFBFBD> \0<EFBFBD>!<21><>< <09>b<19>q<EFBFBD>\\pa@<40>Rd o<>fKM<4B><4D><EFBFBD>p <20><><EFBFBD>\0}<7D><><EFBFBD><EFBFBD>z<EFBFBD>\0<14><03><><EFBFBD><EFBFBD>2<EFBFBD>Ձ<EFBFBD><D581>3\"<EFBFBD> <20>)@\\*g<>r<EFBFBD>M#!<21>8<EFBFBD><38><1D><>dP4<50>%>K<>mA<6D><41>\$C<0B>jtqP<71>9<EFBFBD><12>Ƹ<EFBFBD>Y<EFBFBD>jP:vTu<1C> 䆀<><1A>T<EFBFBD><54>`=<3D>p<EFBFBD><70><EFBFBD>cj<63><6A>*<2A>x<><78><EFBFBD>d<1B>m\0<EFBFBD><06><>MJjFm<46>p<1E><><EFBFBD><EFBFBD>A<EFBFBD>F<EFBFBD>QR<07><><EFBFBD><EFBFBD>6<EFBFBD>F<05>Q<EFBFBD>lDj<><6A><EFBFBD>E<EFBFBD>MSȖ<53>4\"\"m<15>@J<>Q<EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD>@<1E>(<02><><EFBFBD><EFBFBD>h`O<03><>f<EFBFBD>8<EFBFBD>>P8 <09>{;57<35>,)<29>䌆mSv<03>g<>Aᓋ<41><01><><EFBFBD>|<7C><><EFBFBD>P<15><>d<EFBFBD><64><01>O<EFBFBD>x2<19><>.<2E>S<EFBFBD>,8<E1A6AF><38><EFBFBD>6q<36><71>,<2C>Nz:<3A><>L<EFBFBD><15><><EFBFBD>\n(%><3E><>O<EFBFBD> N%'<27><04>>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><19>U<EFBFBD>9<><39>aÏ<><C38F><EFBFBD><EFBFBD>P<EFBFBD>I<EFBFBD>OH <09>9\ne<1D>5@\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ALS!m<><6D><1B><EFBFBD>qv<71><0B><>(<28>N<EFBFBD>7=<3D>=Y<03>AN<41><0E><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52>)ϊ<><13><>4<EFBFBD><34>X<EFBFBD>JgSmZu\"N:<3A>*4<>*<2A><>,<2C>:<3A> <09><> р<><D180><EFBFBD><EFBFBD><EFBFBD><19><><EFBFBD>L<EFBFBD><01><><EFBFBD>5Q2<51><1F><><1F>VXR<58>5ש%<25><11>a@<1E>v<EFBFBD>J<EFBFBD><4A>a<F28B88B5><61>Xv<58>(<28>u<>j<EFBFBD><02>T<><54>6\$<EFBFBD>X胙V<EFBFBD>ا&<26><><EFBFBD><13><>H8z~<01>y<EFBFBD>^<03>k`<60><05>?l<> wuuz<75>@<07>lS~<7E>@.\"<EFBFBD>E<>S<16><>*<01><><EFBFBD><EFBFBD><05>ebM5<><35>Z{l{a<EFBFBD>/<01><>X<><1D><>U<>1<EFBFBD>֡<15><>a<>X<EFBFBD>Ul1<6C>ʢ<EFBFBD>\\<19><><EFBFBD><EFBFBD>6s<36><73><02><16><>:<3A>§<EFBFBD><C2A7>Y}<7D><>ި<EFBFBD><DEA8><EFBFBD><EFBFBD>e<,<2C><>s9<73>.!<21>SV<0B><>\n<EFBFBD>b<><62>\nhK#<1C><><EFBFBD>l%g[;̤<><CCA4>X<EFBFBD><58>>˙gQ<14>\0<EFBFBD><EFBFBD>ӳ<EFBFBD>l<><6C>v<EFBFBD>D<EFBFBD><44><EFBFBD>Au<><75><EFBFBD>X=B<>*<2A>d<EFBFBD><64><EFBFBD><EFBFBD>s<0B>aڊԕEZ<45>Fl~<7E>b<><62>{\$_<EFBFBD>r<EFBFBD>\0Mkw<EFBFBD>/<2F>~<16>y<1A><>|C<>j<EFBFBD><6A><17>^<5E>5<EFBFBD>D<EFBFBD>2%<25>[D<><1C>u<EFBFBD>xo{Dڶݶg<EFBFBD><EFBFBD>1\0Ƭ<EFBFBD><EFBFBD><EFBFBD>><3E><><EFBFBD>/<2F><><08><>Z<EFBFBD>ҙa\n<EFBFBD><EFBFBD>!<21>E<EFBFBD> <20>A<EFBFBD>d*<05>e<>@<40>}U<0E>0 7}h\\<EFBFBD>+<2B><>1<><31>U5<55><35>\0<EFBFBD><EFBFBD>9R<0E><>V<0C>anh<07><><EFBFBD>m b <09><> =<01>έb4<><34><EFBFBD>IO_<4F><5F>[@J<><4A><EFBFBD><EFBFBD>u<EFBFBD>`}<7D><18><>N@<40>ܳ()<29><><EFBFBD>xS\0 <20>z<EFBFBD><7A><EFBFBD><EFBFBD>\r\\j<EFBFBD>W 'M<12><>w><3E>[<5B><>.KN<4B><4E>x<01><02>v\0<EFBFBD> \$)<29><> z}(<28>Z]b<><62>Ẽ<EFBFBD>+Xz־<>G<><47>h?E<>Q<02><>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>vK<76>WQR<51>KqE~<7E>I<>T<1E>5<EFBFBD>)<29><>n<EFBFBD><6E>\n<EFBFBD>T-yD<79>K{<EFBFBD><EFBFBD>`P/<01><>V<EFBFBD>:<3A><>I]<5D>n<EFBFBD>i<EFBFBD><69><EFBFBD><01>3<EFBFBD>X<EFBFBD><58><EFBFBD>^~<7E><17><><1C><>L<EFBFBD>\"(S<><53><EFBFBD>2<EFBFBD><32><EFBFBD><03>k<1B><>\r?<3F>c<03><><EFBFBD>l<><6C>U,;<3B>M<EFBFBD>\n7ꦖR<>f<66><C28A><EFBFBD><EFBFBD>R<EFBFBD>y<01>ԔzV.<2E>ko<6B> ><3E>b<><62>s<><73>(!ۋ^<5E>=<0C><><EFBFBD>F\0.סMJI.<2E>Hiً8A3<08><><EFBFBD><EFBFBD><EFBFBD> `(\$ړ\0Uр<EFBFBD>?<3F>(<0C><>\$<EFBFBD>~<7E>D/<2F>p<EFBFBD><70>a<EFBFBD><61><EFBFBD><0F><>Tp\0<EFBFBD>C<>Z2<5A>.,.<2E>}<7D><> <20>Ѱu<><75>D4<44>X<> <04>p<EFBFBD>3<EFBFBD><33>x+<2B><>i<><04><>\r<EFBFBD><EFBFBD><EFBFBD>Ex<EFBFBD> <09><>l<EFBFBD><6C><EFBFBD><EFBFBD>ј2)0<>pr\$<EFBFBD><EFBFBD><0E><><EFBFBD>>% <20>z3<7A><1F>!P<>(1P<31>p<EFBFBD><70>L\"\r<EFBFBD>s\$<EFBFBD><19> <0B>7%Ɍ<><C98C><04>6<05><>12<31><32><EFBFBD><EFBFBD>B<EFBFBD><42>l0<6C><30>|.Z(?<3F>Dr<><72>Z@<<3C><><EFBFBD>m<EFBFBD><6D>{<EFBFBD><EFBFBD>fC<EFBFBD>,a<>n#><3E><08><>2<EFBFBD><0E><>A8` N<07><>\0<EFBFBD>U<><0E>f1<01><A+8<>Zq<16>ja?}<7D>Fp<>:<3A>\"8ɇ9<C987>`<60>0݄a<DD84><61>\0nB7=n\"<EFBFBD>o<EFBFBD><EFBFBD>.<0B><><EFBFBD>i<03><>J0<4A><30>G<16><><EFBFBD><EFBFBD><1A>b<EFBFBD>\\l:b<>kdXP<58><50>ˊ<)<0C>\r\"<EFBFBD><EFBFBD>K;1Udb<64><62><EFBFBD>8<><1B>L<><4C>V<EFBFBD><56> <20><><EFBFBD>7<EFBFBD>0H<30>Q<EFBFBD>*c*˙WY<><59>X<EFBFBD><58>ḳ<EFBFBD>-ѱ<>7|R<><52>8K<08>ܓWtL2<{<1E><><EFBFBD><EFBFBD>5ٍ<>><3E><><0E>e<EFBFBD><65><1E>{<EFBFBD>ʟ3<EFBFBD><EFBFBD>\"Jā*<2A>R<EFBFBD>BcлV<D0BB><56>q<<3C>+<2B>q̅'##><19>2F0<16><>\"X<EFBFBD><EFBFBD>fE<EFBFBD>{<EFBFBD>|c<>t<07><>M<EFBFBD>5<EFBFBD><01>ȷ>D\\X<EFBFBD><15>Mg<>c<EFBFBD><63> g<><67><EFBFBD>U'<27><03><>5<EFBFBD><35>\r9%<25>Q<1B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>'<27>d<EFBFBD>NOW<4F><57><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD><EFBFBD>~<7E>u<EFBFBD><75>e<EFBFBD><65><EFBFBD>Wߧ<57>;<3B><><EFBFBD>\\S<EFBFBD><EFBFBD>&<26><><EFBFBD><EFBFBD>,<2C><>}<7D><>_|<7C><><EFBFBD><EFBFBD> <20><>!<21>vx<76> <20><>]m<12>1<EFBFBD><31>|<7C><><EFBFBD>Dx.<2E>Bo<42>,Y<> <09>tø <20><>]<5D>Y<EFBFBD>l<EFBFBD>/<2F>;<3B>YA[<5B>˄u<CB84>`7<01><>q<><71><EFBFBD>?<3F>F<01>\r<EFBFBD>v-<2D>@٘<><D998>\n3<><33>h<EFBFBD>j#<23><><EFBFBD>K 6N<36>^H<17><><EFBFBD><EFBFBD>\$<0C><>(|<7C><>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>'<01>H<><48>%<25>p<>ğ% l\n<EFBFBD>K <20><><EFBFBD><EFBFBD><EFBFBD>cg<63><67><EFBFBD><EFBFBD>B<05><><EFBFBD><EFBFBD>\0%<25>{E<EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>Yjic&<26>5<EFBFBD>nG<6E>g<EFBFBD><67>/<2F><>Z<><5A><EFBFBD>} 7G<37>\\K<1B>K<EFBFBD><4B>-<2D>Qf<51><66><EFBFBD><EFBFBD>pl<><07><><06><>㘾<02>w<EFBFBD>8<>a<EFBFBD>L<EFBFBD>*<18><>}<7D>]<01>@<40>R<EFBFBD>}JQ<4A>qg<71><67><1E><>^a<<3C>\\ <20>g<EFBFBD><67>C<EFBFBD>[<5B><><EFBFBD>PR<50>*4_Y<5F>Vv<56>\"eq<EFBFBD><EFBFBD>0?Yw<59>V\n<EFBFBD>ݛ2<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><1D>&m<>2<EFBFBD><32>@hn<68><6E>\"&<26>@<40><04><1B>H<EFBFBD><08><>4<EFBFBD>O<EFBFBD>U<EFBFBD>,;<3B><><03><>˘#L[<5B><><EFBFBD>(T<><54><EFBFBD><EFBFBD><EFBFBD>].<2E><><EFBFBD>v<><76>{|<7C>\$\06{+\0\n<EFBFBD>/\0<1F>tI<74><49>T<EFBFBD><54>Ŷ<EFBFBD>1d<31><64>I<EFBFBD><49> <09><18><><EFBFBD>@<40><06>*96<39>t<>Szi<7A><69>Mr<03>숁<EFBFBD>(<28><><EFBFBD>\r<EFBFBD>ӱX<EFBFBD>\":<3A>A<EFBFBD><41>ބO<1B><><EFBFBD><10>\0( M<>wӆ<77>4<EFBFBD><1C>J<EFBFBD><4A>K<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD>9<EFBFBD>2jf<6A><66>~<16><>@<40>L\rCjyz<1A>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><11>^<5E>KR<4B><52><EFBFBD><D4B0><04><><16>WVڸ<0B>7<EFBFBD><37><06>W<EFBFBD>Ћ<EFBFBD><D08B>F<EFBFBD><46>5<EFBFBD><35>c<>GP<11>=n<><6E><EFBFBD><EFBFBD><06><>;<3B>&<03>8<1B>+-C<>\r<EFBFBD>z<EFBFBD>qf<EFBFBD><EFBFBD>T<1B><><01>@SАC<D090>ͅ<EFBFBD>5kyk/<2F>bEŠ8}t餎f<E9A48E><66><0E>o<EFBFBD>H<EFBFBD>{內<EFBFBD><EFBFBD><EFBFBD><16>I%<25><><0E><>a<EFBFBD><07><><EFBFBD>o<EFBFBD>d\$<EFBFBD><EFBFBD>qzJ<7A><4A><EFBFBD><EFBFBD>N!oP6<50><36>dF<64>H<EFBFBD><48>\rq<06><><1A>iv<69><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><12><>E<>P<07>E<EFBFBD><45> <09><><03><>4<EFBFBD>p)<15>}<7D>+f<><66><EFBFBD>wI͓U<><55> f<><66><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y0<>u=<3D>Mw<0C>`U*<2A><><EFBFBD>Nci<0F>4+<2B>. <1C><1D><>m+lL!<21>\0ro}<7D><><EFBFBD>;a!<21><><EFBFBD>'<27><>l<>]bY<62><59>v<EFBFBD><76>%<25><><EFBFBD><0F><>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>}m<>\r<EFBFBD>'p<>˷N<1D>i<><69>O<EFBFBD>IW<49>Uay<61><79>\r<EFBFBD>sܨv<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n+<04><>+m<><6D><02><>dL<64><1B>p\nU<EFBFBD>\nC\r<EFBFBD>wqc><1E>Q7c<37>\r<EFBFBD><0C><>ۙ<EFBFBD><DB99><EFBFBD><EFBFBD>BU<42>Ϛ<EFBFBD>v[<5B>7<EFBFBD>Ŵ`<60>Q\$gY<EFBFBD>T9<54>PU<50><55>@<40>v[<5B>ܦ<EFBFBD><03><><EFBFBD><EFBFBD>ōL<C58D>PNξ<4E>n7p&\r/w<>=~<7E>혃rp<@e-<2D>K<EFBFBD><4B>/e<01>V<EFBFBD>=<01><0E>*<2A><>_<EFBFBD>a<EFBFBD>;ڈ5<7F>e5<65><35>y%<25><19>JB<1D><>b-08 .֦V <09><> Dg<>\$U<EFBFBD>5<EFBFBD>4<EFBFBD>Am?@<40><>\$<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>'{<EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>85<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><0C><>B<D7B6>P\0<EFBFBD><EFBFBD><EFBFBD><1C>&L+C<>\0P0'<27>0<0F>P?&<26><>ϐ<EFBFBD><CF90><EFBFBD><EFBFBD>#͒\n<EFBFBD>B<0F>\r<EFBFBD>X'<14><>s<EFBFBD>`!rNhx1d<03>B<EFBFBD>d<>ɿ<EFBFBD>;<3B><><EFBFBD><EFBFBD>rJa<4A>+<2B>C<EFBFBD>F<EFBFBD><46><EFBFBD>.<2E>6)<29><><EFBFBD><EFBFBD><EFBFBD>},&<26><><EFBFBD><EFBFBD>Q<EFBFBD><51>/L<>?<3F> <09>ƬW<C6AC>k<EFBFBD>p<>`<60>Q,UF<55>5<EFBFBD>=h<>{ZO<><4F>e<EFBFBD>W<EFBFBD><57><EFBFBD>f<EFBFBD><03><><EFBFBD><EFBFBD>W<>e<EFBFBD><65><0E>\0<EFBFBD>ѯoPi<<1A>Q<EFBFBD><51><EFBFBD>&\$0<EFBFBD><EFBFBD>7{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><1E>ebw<62>4<EFBFBD>,<0E><>[j?Y<><59><EFBFBD>\\<EFBFBD> ]<5D>#K<>.<2E><><EFBFBD>Z<EFBFBD><08><><EFBFBD>=<3D>\0Z<>%<25>&Q2<51>]r<><72>B<EFBFBD><42><EFBFBD><1B><>m<>|<<3C><>><3E><><EFBFBD>/k<01><05>/J<><4A><EFBFBD>Vk<56>l<EFBFBD><6C>\"<EFBFBD><EFBFBD><01><><EFBFBD><EFBFBD><EFBFBD>A<08>a<EFBFBD><61>o<EFBFBD><6F><EFBFBD>۫<06>s<EFBFBD>u<EFBFBD><75><EFBFBD>o99<39>c<EFBFBD><63><EFBFBD>G<EFBFBD><47>\\<EFBFBD>Ξ<EFBFBD><EFBFBD>m<EFBFBD>p<EFBFBD>_R<EFBFBD><EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD> <20>p<EFBFBD><70><EFBFBD>R<EFBFBD><52><EFBFBD>@\\^b<>mҸ&<26><05><><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD><13>_<1F><><EFBFBD>.A(<28>4<1C><>0w<30><77><EFBFBD>N~<7E>K<EFBFBD>|<7C>x<EFBFBD><78><03><><EFBFBD>r(r|<7C><>'#<23>G<EFBFBD><1A><>D<EFBFBD><44><EFBFBD>k<EFBFBD><1D><>W<EFBFBD>B<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>[<5B>=<3D><>ScRc<52><63><EFBFBD>[<5B>7<>8i<38>1<EFBFBD>/<2F>m<EFBFBD>^<5E><><EFBFBD>\"<EFBFBD>w}<7D><>z<10>y\n<EFBFBD><EFBFBD>p`<0E>6(<28>m<EFBFBD><6D><EFBFBD>\0u<>#<23>Ne<4E>c<EFBFBD><63>T<EFBFBD><54>\0x<EFBFBD>GZ:<12>87W<37><57><EFBFBD><02><><EFBFBD>V!<21><>ˮ<EFBFBD><0C>hB<68>E<EFBFBD>B<EFBFBD>eے<65>/<2F>&<26><>,Gڍ<47><DA8D>Bf<><66>t<EFBFBD><74><EFBFBD><EFBFBD>쎓<EFBFBD><EC8E93>耷z&<26>b2}aB<D78F><42><EFBFBD>ގ<EFBFBD><DE8E>܀Կ <20><13>|\nt<EFBFBD>\0t(<28><07>k<EFBFBD><6B>Pp<50><70><EFBFBD>Wi Ͻ;<3B>4<EFBFBD><02>v<EFBFBD>Nt@<40>q<EFBFBD>ʣI\\՟?;<3B><>=Wt<0F><>V<><56>H)\0'B<>q[1<>v<EFBFBD><76><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>z<06>n<EFBFBD><6E>#<23><>N<EFBFBD>c}I<>S99<39>|#<23><>3<01>\"43<34><33>p6<70>8F<38>'<27><>9X<39>}<0F>^<04>ov<><76><EFBFBD><EFBFBD>e<EFBFBD>6<EFBFBD><36><0F><>C뗎<43>6<EFBFBD><36>B[<5B>9<0E>B<EFBFBD><42>1<EFBFBD>ŵqN<03><>y&<06>rY\\\"<EFBFBD>\"<EFBFBD>v;<3B><><EFBFBD>p<EFBFBD><0C>=<3D>&<26>a\nT<EFBFBD><EFBFBD>\na<EFBFBD><EFBFBD><EFBFBD><0F>C\\\0002<1A>D<EFBFBD>H<EFBFBD>0<1B><R<><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>c<08><>=.<2E>7<EFBFBD><37>U<EFBFBD><55>|FS>i<>Z1Lƾ<02><><17>_O<5F><4F>!!<21>D4<44>.f<>e<EFBFBD><1A><EFBFBD><C29E><EFBFBD>౷,<2C><>Z<EFBFBD><5A><EFBFBD>@<40>\0<F.<2E><><16><><0E>c>_}<7D><><EFBFBD><1F><><EFBFBD><EFBFBD>ʠp<02>C<<11>I<EFBFBD>=<3D><>Z05ь<35><D18C>)ގ<><DE8E><EFBFBD><06><><EFBFBD>Nz,u<><75><EFBFBD><EFBFBD><EFBFBD>\\p6ޟy<DE9F>-<2D><>=5<>!T#G<>\0*m<><6D><EFBFBD><EFBFBD><EFBFBD>Inʩ<1C><18><><EFBFBD><1F><12><><EFBFBD>:<3A>*<2A><><EFBFBD>i<EFBFBD>`7<>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>罈<06><><0C>EB.֜Xʉ<58><CA89>`U<><55>q<><71>s<EFBFBD><73><EFBFBD><EFBFBD>sl[S+{<EFBFBD><EFBFBD> <09><>0<EFBFBD><30><EFBFBD>{<EFBFBD>7<EFBFBD><EFBFBD><p<19><>n<EFBFBD><EFBFBD><CDB9>.<2E><><EFBFBD><EFBFBD>]x<>m<1A><>b<EFBFBD>}<7D><><EFBFBD><<3C>[ݻ<><DDBB>W<EFBFBD><57><EFBFBD><06>Vh<56><68>kY<6B><59><EFBFBD>><0B>e<12>5<EFBFBD>\raa<EFBFBD>F<06><>Sx̶<78>OcÐ<63><C390><EFBFBD><EFBFBD>[L<>e<EFBFBD>𗂤 7<><0C><><12>>@<40><><EFBFBD><0E>+|<7C><><EFBFBD><EFBFBD>;<3B><12><><07><><EFBFBD>.<2E><06>@Y'<27><><EFBFBD><EFBFBD><EFBFBD><03><>>E<>@0<><0E>@@<40><>H=C<><43>`ր<>b<><62>-Oz<>m<18><><EFBFBD>t>=<3D>=<3D><>3n!<21><><EFBFBD><EFBFBD><EFBFBD>8DM&<26><>J<EFBFBD>w<EFBFBD><77><0B>.]\0<EFBFBD>O?<3F>[<5B>4D#~<<3C>O<EFBFBD><4F><1C><><EFBFBD>\"<1E> o<><6F>t<><74><EFBFBD>BcLK1<4B><31> <09>YĉI<C489><49>x<EFBFBD><78><16>8Q<38><51>e)<11><><EFBFBD>`<12><><EFBFBD>ǐL<C790>6<1B>+<2B>جB<><02><>wbo<62>L]+VP<56><50><EFBFBD><EFBFBD>B<1B>E<EFBFBD><45>幊<EFBFBD>_V<5F><56><10>x<EFBFBD>r<EFBFBD>|[<0E><><EFBFBD><15>\"_~<7E><><EFBFBD><EFBFBD>HG<48>sp<><70>C<EFBFBD>\n\$<EFBFBD><EFBFBD>R`<60><>Ǯ` <20>\"<EFBFBD>@F?<3F> Q<><51>q<04><><EFBFBD>^<5E><>`<60>W\"<EFBFBD>;<05>\"IPD<EFBFBD><EFBFBD><EFBFBD>dž<04>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>oC<6F>n<EFBFBD><6E><07>}s<><07>x<17>2<EFBFBD><01>i<EFBFBD>wc%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>N<EFBFBD>\0I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>8<16>p<><70><EFBFBD><EFBFBD><EFBFBD>YP!<21>)<29>F5<08> <16><> <09><><EFBFBD>c<EFBFBD>.<2E><>o<EFBFBD>7dZ<64><03>`<*7<><37><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD>4w(<28>O<EFBFBD>r<08><>0n<0F><><EFBFBD><19><><EFBFBD><EFBFBD>9<0F><>'<01><><EFBFBD>t<EFBFBD>X<11>6g<36>6<><36>\"<EFBFBD>V:<3A><><03><><EFBFBD><EFBFBD>V<EFBFBD><56>`\rZ<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD>&!<21>_O\r<EFBFBD>O<02>D<EFBFBD> <09><><EFBFBD><19> ,<2C><>34/<2F><>o<EFBFBD><6F>m)<29><><EFBFBD>#}<7D><07><><EFBFBD>yĤ҈[n<>4\0<EFBFBD><03><><D<><0B>.<2E><><EFBFBD><EFBFBD> B<><42>>\"\r<EFBFBD>C<05><><16><>;<3B><1D>@<40><><EFBFBD><EFBFBD><EFBFBD><03><>\0<EFBFBD><EFBFBD>D0<EFBFBD>Z<>b\r<14><>V%\nRRA}<7D><><19><12>\"<EFBFBD>.<2E><>P<EFBFBD><50>>n1<6E>4<EFBFBD>=&:><3E>\$<EFBFBD>^RMpQ<70><51><EFBFBD>\$<14>L\0<EFBFBD>1<18><>𥀔<EFBFBD><F0A58094><EFBFBD>}<7D><><05>m<EFBFBD>H<EFBFBD>B<03><05> <09><> <09><><02>Ah1<68>V<EFBFBD>=&<26>L<15> A<><41><EFBFBD>T<EFBFBD>!<02>\\)^<5E>2è.<2E>W<1D>p.<2E>C<EFBFBD>Qؔ<><D894>\0<EFBFBD>\n`(<28>. 9<>@<40><><EFBFBD>`(<28>|\0ʦ<EFBFBD>><3E><><10><>#<03>@2D@֒<>\$<1C>E\0f<0B><07>r<EFBFBD>v\n<EFBFBD>*`<60><>.<0B>W<EFBFBD>s<EFBFBD>\\<02>|<7C>><3E>H<EFBFBD><48>*<2A><>Ar<41><72>Q<EFBFBD>j<EFBFBD><6A><04>P<EFBFBD>;<3B>D<|<14>I<EFBFBD>N<EFBFBD><4E>0UAX=)<29>k<><6B><0B>X0<58><30>v1<76>ݐ<EFBFBD>A<EFBFBD>U,#<23>DAc@(P<>AZt<5A><74>p[A<><04>/<2F><><EFBFBD><EFBFBD> 0<>0_B5Ik<49><6B>4<15>d<EFBFBD><64>bQ<62>g<EFBFBD>T1<1A><>%{ѩ<>=\$<EFBFBD>PI=KH<><48><EFBFBD><EFBFBD><03>\"0\\A; aҢ<61><D2A2>]<05>&7A<37>\n:Y<><59><EFBFBD>\$)<29><>\n<EFBFBD>.<2E>k§ <09>Ps\$<EFBFBD>\n<EFBFBD>Rp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+Ј/<2F>'<27>O<EFBFBD><4F>#\$,𡥰*dЀB`<60> <20>B <09><><EFBFBD><EFBFBD>AHTD1)I<>QtLN<4C>C<EFBFBD>=\0<EFBFBD><EFBFBD><EFBFBD>e<01><>\n{,<10><><EFBFBD><4B<><0C>Ii%<25><><EFBFBD>\"P<EFBFBD>\$BW<42>h%S<0C>P<><18><><EFBFBD>30MAE\n(<28>p<EFBFBD>A<EFBFBD>|c<06>)<29><><EFBFBD><EFBFBD>\n<EFBFBD>#Ǯ'\r8<>X'<05>[<10><><08><15>5C<35><43><EFBFBD>0<EFBFBD><30>B<<3C>BS0iBf<42>L<06>x <09>1f <09><>@<40>ДC <0C>;<3B><>C<EFBFBD>U,8<>b\0ޖt)\"2A<EFBFBD><0B>iRC<52>\n<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><>ì<02>; _<>X(<28><>\rC<EFBFBD>\r<EFBFBD>;<3B><>C_(<28><>B<EFBFBD>,-<2D>dC<64>\n\\9P<EFBFBD>C<EFBFBD><0B>.<2E><>=B<><42><EFBFBD><EFBFBD>-<2D>t<03>]P<><50>o<0E>\0<EFBFBD><EFBFBD>N <09><05>ֳH<D6B3>h<EFBFBD><68>^<5E><><03>F@<40>/<2F><<3C><05>\nDj<0E>`<17><><EFBFBD><EFBFBD>れl<E3828C><19><><EFBFBD>|/ !<11><0E>*<2A><><01>G<EFBFBD>3<EFBFBD>^<02>\n@<17><>'<27> C<07><><EFBFBD><11><>(<05><1B>H<><48>'&<12><>\"<EFBFBD><EFBFBD><1A>\rLF<EFBFBD><07><>2<13><>Dx<44><78><EFBFBD>!jD<6A>I@<<3C>vQ<><51>0<EFBFBD><30> <20><>C<EFBFBD><43>XH\0002<EFBFBD>^;i<>~<7E><><EFBFBD>TH<54>6<EFBFBD>5 C<><43>H5(<14><05>49<34>I <18>,SF<0C>_TS<54>F<EFBFBD>B5\0Cq!<21>`<60><><EFBFBD><EFBFBD><EFBFBD>\0O<14>P<EFBFBD>DEW<14>Q<EFBFBD>PEE<15>?<3F>Y<EFBFBD><59><S1]EY<15>Q<EFBFBD>_<EFBFBD>H<08><>KX8|X<>\\<EFBFBD>7<15>QqO<71>x<><78><EFBFBD><EFBFBD><EFBFBD>,G<11>J<EFBFBD>\\I2<><32>0SQ#<23><><0B>a\n<EFBFBD>,<\\<EFBFBD> <20>=\\]<5D>+<2B>%<17>I\n<EFBFBD><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>\n<EFBFBD>\\FiTĪ+<0E>,D<><12>K<EFBFBD>/<2F><><08>1<>\$'<27>Z1T<31><54><16>U<EFBFBD>PE |R@/<2F>({Q`0<><30>\\W<11>E9<16>Uщ<55>+<18>c <<3C>9DX<44>^E<>|R!lF,<2C> q<>\"<EFBFBD>H,d<>bŧ<eq<65>F]<18>ɎFk<16>UQ<55>FClRq<52><03>( <09><><EFBFBD>D<03>g<EFBFBD><67>F!De<44><65>Fw0ܱ]<5D><>le1<65>F%\$e<EFBFBD><EFBFBD>Ÿm<EFBFBD>M<EFBFBD>]ğ<13><><EFBFBD>ۓ<EFBFBD><17><05>ۀ<EFBFBD>x<0C><05>x\0<17><><10><05><>)<29>Xm`<17>[<1B>K`<60><><02><>]mP<6D>:i<>SM=@9<>pSFĘx<C498>B.<2E>t<0C><0C>\0<0F>p\0<EFBFBD>U<><55>\rNA;<3B><><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><13>x~<7E> <20>w<EFBFBD><07><1E>҅x<D285>8<0C><><1F><10>s`<60>!_<04>k<>\0P<EFBFBD><EFBFBD>1@<40>\$4<EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><EFBFBD><EFBFBD><13>1<EFBFBD><31>nª<6E><C2AA>*\0<EFBFBD>#R<11><>0?<3F> <09>'\0d<EFBFBD> <09><>(Hx<08>G<><1E>\$<EFBFBD><EFBFBD>\0<EFBFBD>H<>`(<28><><01><0E>x<>GD<47>tH<74>!<21>\nɁ <20>Ǟ<14>FJJ|<03>6<EFBFBD>>?<3F>XBQF<51><03><>Q<EFBFBD>\$`<60>\0>06<0E>T<EFBFBD>\r<EFBFBD><EFBFBD>Z\\<EFBFBD>: (+ <20>FJ<03>Q<><51><EFBFBD>df`>\0<EFBFBD><EFBFBD>d1<EFBFBD><EFBFBD>h<EFBFBD><EFBFBD>P<EFBFBD><07>pK<>\0<EFBFBD>T<EFBFBD>@0<>B<EFBFBD><42>H<EFBFBD>>5 <03>i 6Ɩ<36><C696>j<EFBFBD><1D>B8<><38>Z <20>?<3F><><EFBFBD><EFBFBD><11>4 7꼀<37><EABC80><EFBFBD>D*<2A><l<><6C><0C>H1 <20><><EFBFBD><0B>7<1F>5<EFBFBD>%<05>?leQFȝ<1F>\n`<<3C>bĊmr<6D><72><EFBFBD>d<EFBFBD><64><EFBFBD>\0<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ9<EFBFBD><EFBFBD>1+<03>V<EFBFBD><56>G<EFBFBD>\0ɒ1<EFBFBD>?#l<><6C><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD>Al\0<EFBFBD><12><08><19>̈'<27><><EFBFBD>3i<33><69><EFBFBD><EFBFBD>BD<42><EFBFBD><1F>٦o<08><1F>c<EFBFBD><12>ZX<5A><58>MJ\\<EFBFBD>#2<1C>mbJ<62>\n<0E>k@<40>G<EFBFBD>ikQf)(&\\~<7E>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><0C><0C><1F><>!*E(<0F>B<EFBFBD>&<12>T<EFBFBD>-<2D>`<03>R݃\n<EFBFBD><EFBFBD>\"i<EFBFBD>H<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>\n=<3D><>W<><57><<3C><><EFBFBD><EFBFBD>@ *Jz<16>7,<03>z<EFBFBD><7A>!<21>&<26><>\$C.<2E>H<EFBFBD><1F>\r<EFBFBD><EFBFBD><19>F<EFBFBD><46>`+?<3F><03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<><74>֟<EFBFBD><0E><><EFBFBD>u<EFBFBD><10>]-<2D><><08><>~<7E>b%x<0C>d)<29>\"|^BW<42><57><11><><EFBFBD>L3S(\nb<EFBFBD><EFBFBD>#<23><>A<EFBFBD><41><EFBFBD><0F><>R\"<EFBFBD><EFBFBD>&H<>CTؙi<>W<EFBFBD>f<03><0C>IX!q<><71><EFBFBD><02>D<EFBFBD><44> ^H<>T<EFBFBD> 9(̚<><CC9A>\0<EFBFBD><03>҇<><D287><1F><><EFBFBD>4)) <20>\$<EFBFBD><EFBFBD>~0<>6#\$<EFBFBD>*<2A>t<EFBFBD><74>#;<<3C>D<EFBFBD><44>ڤ<EFBFBD><DAA4>Rx<52>}*#<23><>3ʐ<13>g<EFBFBD>C<EFBFBD><43>c4<63><34><EFBFBD><16><><EFBFBD>`<60>@<40>&<26><08><><EFBFBD><EFBFBD><02>[<1A><>#<23>da?<3F><>Y<EFBFBD>n<>;<3B><03><>x<>:L<><4C><EFBFBD><EFBFBD>F-<2D>C<EFBFBD>_<EFBFBD><16><>rk<72> <09><><EFBFBD>\$<03><>2<EFBFBD><02>#\\K\nH<EFBFBD>+<2B><><12><>\r<EFBFBD>T<EFBFBD><EFBFBD>;<3B>+<2B>TR<54>2<><32><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>r<><72><EFBFBD>*D<r<><72>p<16><>!@I<><49>Z<EFBFBD>ҙ<EFBFBD><D299>(<28><>o<EFBFBD><03><>ChO<68><03>넚`<60><><0C><><EFBFBD>2<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,]<5D><>\rx<EFBFBD>@:@<40><11><><EFBFBD>\"<EFBFBD><EFBFBD>(H+R<><52><EFBFBD>-ܡ<>텱+<2B>b <20>Ib(<28><>aHH<48># I@)<29>ҙ\0<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>.@Ɍ<><C98C><EFBFBD><EFBFBD>\\<EFBFBD>i<EFBFBD><EFBFBD><EFBFBD>̵<12>3-`<0F><><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><<3C><>&<26><><EFBFBD> <20>Ҟ\r<EFBFBD>#<23>`ҍ*<2A>H\0<EFBFBD>L <20><>K<EFBFBD>. i\nv\0<EFBFBD>/Xe<58><65>0<14><>\0<EFBFBD><EFBFBD>/T<>@6K<36>)<29><><EFBFBD>\0<EFBFBD><EFBFBD>́<EFBFBD>!<19><>c<EFBFBD><EFBFBD><ED9EAC><13><>\n5<EFBFBD><01>E<EFBFBD>v\0<EFBFBD><EFBFBD>\0L<EFBFBD>Ҹ')<29>Vҍ;:&X<08><>@<40>,<2C>\0<EFBFBD>Jo,ळ<18><>1L<31>b<EFBFBD>ʎ<10><>s<1C>(<28>ǓK:ɴ<>b#I<>-؉R<D889>J<EFBFBD>\"@<40><>J<>W<EFBFBD>s<1E>:<03><>)Lt<02>ʁ6̬<15><>*<2A><><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD><01><><12><>;<3B>!F<>9 0<08>V<EFBFBD>G;<0E>,<2C>S<1A><0C><><EFBFBD>o]L<>3<EFBFBD>4<EFBFBD>:<3A>53<35>GL<>1h`<60><><EFBFBD>h'<27><>ÿK<C3BF>02Cjo\$N|<7C>HY<16>1<EFBFBD><31>#\$<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD>I<>\"<EFBFBD>Ԛ<EFBFBD>KJq1Ժ<EFBFBD>J<EFBFBD>0<19><>BW<42><57>1\$0<1C><><EFBFBD>伮<08><>\\<EFBFBD>\$&<26>T<EFBFBD><54>Հ<EFBFBD>L_5\"p4<>5H<35><48>H<EFBFBD>0<>ҌMR<4D><12><>[<5B><>6\0i7<>~ \0iB͇6@#<23><>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD>@`<60><>M*<2A><>M<EFBFBD>K<>LF %A<>Yh\r<EFBFBD>!j<><0C>sp,)-(`<60>,M<><0E>}<7D>#><3E>¤Q<C2A4><51>\r<EFBFBD>Ԍ<>WTҐ\n(<19>M<EFBFBD><4D>A<EFBFBD><41><EFBFBD><16>i<EFBFBD>l><<3C>ދs<DE8B>{(H\"<EFBFBD>M<EFBFBD>萤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>SN<10><> <20>M<EFBFBD>\r<EFBFBD>+<2B><><EFBFBD><EFBFBD><13><><13>6zZ@? 7M<37>9\0B<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD>Ijl<><6C>q<EFBFBD>*<11><>RM#T<><54>'<27>n<EFBFBD>쇒k)<29>9<EFBFBD><39>!<21><><EFBFBD>\"<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><08><><EFBFBD><12><><EFBFBD>/<2F>JO<4A>/<2F>+3<>\r˗.P[<5B>H<02><><EFBFBD>\n<EFBFBD>\r%#X8<58>m<EFBFBD><6D><0E><>1<EFBFBD>ZX6<58><36>6z<36>xn\0<EFBFBD>HT<48>|<7C>J4ms<6D><73><EFBFBD>)<1C> <20>K<<3C>̜<EFBFBD><11><><EFBFBD>l<EFBFBD>C<1C><><14><><EFBFBD>P<EFBFBD><50>.<0C>\0006@\$<16><><EFBFBD>\rKH<08>><3E><>K<16><><EFBFBD><12><><EFBFBD>;p5<70>D\0<EFBFBD>;t<08><>-#\$<EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>8<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>;<3B><02><>3ʦ/=@<0E><>?g-kA<6B>\"<EFBFBD>i4H82a<14><>%R2+<2B>F<EFBFBD><46><EFBFBD><1F>pa<70><61>@<40><1F>pm<70>I<EFBFBD>>\$<EFBFBD><EFBFBD>*?<16><><EFBFBD><13><>(\0<EFBFBD><07><>|<7C>\r<EFBFBD>ϩ5 1<>(\r<EFBFBD><EFBFBD>2<EFBFBD>˶`<60>OqmMJ<4D>\\<EFBFBD><EFBFBD> <09>>|<7C><><EFBFBD>O<EFBFBD>8<EFBFBD><0C>,:<3A>8<EFBFBD><0C>,<2C><><19>c<EFBFBD><13>r_<72><5F><EFBFBD><EFBFBD>Y<><59><18>c4D<34>&<02>\0<11><><19>d<><64>B<EFBFBD>e0\$<EFBFBD>T<01><1C><>~S<>&Z\n<EFBFBD><EFBFBD>R<EFBFBD>\n <09> <20>K<EFBFBD><1F>r<>:<3A><<3C><><EFBFBD><06><>%|<7C><><EFBFBD><EFBFBD><EFBFBD>9<1C><>oPM95 6PQ=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>5<EFBFBD><35><EFBFBD><EFBFBD>1<EFBFBD>@9<>m<1B>\r<EFBFBD>E<>`,<2C><>\rT<14>m<EFBFBD><6D>F P2Q<32><51>+}<7D>3<EFBFBD>^f<> )<13>Lnd<6E>`<60>\0<EFBFBD>+Ь<><D0AC><06>\$D<EFBFBD>R\0<EFBFBD><0B><>'<27><>J\rd~<7E>j\0<EFBFBD><EFBFBD><14>қ<EFBFBD><D29B>:\\<0F><>\nJ<EFBFBD>[<5B>?: <20><12>L<EFBFBD><10><EFBFBD><7F>:<3A>/+<2B>>(!%1<><31>f<08>g<EFBFBD>/<2F>;;3<><33><EFBFBD>v%|<7C>t<M<>C<EFBFBD><43><EFBFBD>DLC<><43><EFBFBD><0E><06><>Jo:<3A><><EFBFBD><EFBFBD><06> <0F>\n@9P<39>+Ȯ`<60><>ջ<><D5BB><EFBFBD><EFBFBD>/P5t1J0 O<>Ȍu5H<35>R<EFBFBD>MR<4D><52>ղ<EFBFBD><D5B2><EFBFBD>:D<>*<2A>ȞD<><44>T<EFBFBD>oD\$<EFBFBD>3<EFBFBD>6z<EFBFBD>=<05>T<EFBFBD><54>FT졵<54>R\r\\<EFBFBD><EFBFBD><EFBFBD>F\r@<11><<3C>)<29>o<S\$GL <09>\$t<EFBFBD>4-<2D>XZ]Έ<><CE88>f<EFBFBD><66>2i<32>s\$Q<><04>%6<><1B><0B>+G<>cSFz<46><7A>4+LlA=<3D>W<EFBFBD>.lG<6C>,<2C><>\re<1F><>R\0<0B>˔<CB94>)<29>3e<33>Qf<10>P<><03>V<EFBFBD><56><EFBFBD>.<02>x<EFBFBD>y<EFBFBD><79>H<EFBFBD>bDI<44>H<EFBFBD>x<EFBFBD>{<EFBFBD><EFBFBD>G<EFBFBD><EFBFBD>4<EFBFBD><0F>G<EFBFBD><47>ԎR\0<EFBFBD><EFBFBD> T<>R\n<03>%@<40>\nKI}%T<><54>S3\0<EFBFBD><EFBFBD>M<1E><1C>A<EFBFBD><41>EI\$<EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>M't<><74>\"E'A<><41>I<>(<28><>;JH<4A>b<EFBFBD><62>wH䂡<48><E482A1>9I<39>T<>G<EFBFBD>J<1C>T<EFBFBD>\0<EFBFBD>J5%<25><>QgJ<67>)s.R<>Ju#t<>RE<>%Q<><51>q.<2E><>c<EFBFBD><03>Kt<4B>4<EFBFBD><34><EFBFBD><EFBFBD>`<60><><EFBFBD>˂ U<14>NS\r'Ն<>F<EFBFBD>E<EFBFBD>6I<36>K<EFBFBD>(<28><><EFBFBD>\\\n@%H<<3C><>IL<49><4C><<3C>s\"(%@(L <09>Pq<50>\nC:aR<61><52>L<EFBFBD>3<04><>&rC<72>&SFZ<46>Y<EFBFBD>0<EFBFBD>><3E>ĸ@:53Md<4D>Ի<EFBFBD><D4BB><>R-4x 2I9G9iaGQ<47>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>)(<28>T<EFBFBD>\0<EFBFBD>FQt<>K<EFBFBD> LDeӔD<D394>kq<14>A<15>rAN@w<>DB&5l;<3B>ۉ8<02>sA\$<14>,h'<10>!U<><55>\nA<1B><>\r<EFBFBD>`(\$#@N<><4E><EFBFBD> <09><10>\n<EFBFBD>Jx<4A>04<><34><EFBFBD><EFBFBD><EFBFBD>O|<7C>o<><6F>\$<EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<>\r)Jƌ<4A>Ϡׇ<CFA0>\"(5<><35><EFBFBD><EFBFBD>B<EFBFBD><42>D<EFBFBD><44><EFBFBD>'9F<39>0<EFBFBD><1E>`<60>I<EFBFBD><03>5<EFBFBD><35>N<EFBFBD><07>c<EFBFBD>?E/<2F><17><>`=<3D><><EFBFBD><EFBFBD>K<EFBFBD>0!c0\0Ҽ|<7C><>\$<EFBFBD>H́F<><46>0I<30>FJG&<26>\"><3E><>\0<EFBFBD>u!<21>p<>4m<34><6D>\0F<EFBFBD>r<EFBFBD>L%HO<48><4F>D)A<>\0@<03>bX b<><62>d<EFBFBD>/A<>kl)А<><D090>OU<10>@6cM<63>b`<60>:<3A><02><>U:<3A>ӲO<D3B2><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<>I<EFBFBD><49><EFBFBD>\ng#<23>T<EFBFBD><02> )<29><><EFBFBD><EFBFBD>O\0<EFBFBD>\0<EFBFBD>` <09>\0<EFBFBD>(<28>i<EFBFBD><69><EFBFBD><EFBFBD> \\<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><EFBFBD>\nu>'<27>T<EFBFBD><08> <05>?j<02><>b~`&\0<EFBFBD>`4<>IBu L<12>SAz<41>C<><11><><10><>i~<7E>8z`!<21><>?R<>K-%<25><14>;53T<33>eL@<40>T<EFBFBD>,9qU\\<EFBFBD><EFBFBD> )=\0<EFBFBD>D<><44>A<EFBFBD><41><EFBFBD>`ɏ<><<3C><08><>&<26>@Tzc<7A><63><EFBFBD>(\n<03><><EFBFBD>;<3B>\0<EFBFBD><EFBFBD>4Q<>U5ԩU<D4A9><05>+Բ<1E>Wu.<2E>KV-M5<><35>`'<27><1E>IV<49>s5(<28><>e <09>alUd?p<>U_X\nZ<EFBFBD>YyU<79>J<EFBFBD>t<EFBFBD>sWeK<65>^<5E><>[\0B<> <09>_f<>MWJU~Cp<43><70>_5T<35><54>2\0 <20><><EFBFBD>yX<79>;iPB̕<42>'qD<>W-cQ9<51>*<2A>LF<4C>^<5E><>>p<\0<EFBFBD>Ć<05>6<EFBFBD>f3\\H,<2C><><EFBFBD>YQ<59><51>}<7D><><Ju<4A><19>Y<EFBFBD>f<EFBFBD><66><EFBFBD>%Y<>g`6V{LM<4C>M4<4D>)0<05>C<EFBFBD><43><EFBFBD><EFBFBD>j`9F갡<46>լ<11>Z<EFBFBD>x<EFBFBD>YV<59>Z<EFBFBD>i<EFBFBD><<3C>oZڜ5<DA9C><35>NH<4E>j<EFBFBD>OV<4F><14>m<EFBFBD><6D><EFBFBD><EFBFBD>[a<>HP<48>Tmm<6D><6D><EFBFBD>:j'\0<V<>[<5B>^ռ<><D5BC>0<EFBFBD><0C><>!?\\ou<6F><75><EFBFBD>[<5B>g<><67><EFBFBD>^mmUƀ<55>[C<>u<EFBFBD><75>Dmj<6D><6A>V<EFBFBD><56>R\$<15><>zga<67><19>Z<EFBFBD>sࢫ<73><0F>n<EFBFBD>\r<EFBFBD><EFBFBD>&<26><><EFBFBD><EFBFBD>+\0<05>.<2E><>]x<0E>̆<EFBFBD>ɽvc@Wk[<5B>u<EFBFBD><75>\0[[<5B>P݃<>]<5D>v]<5D><><15><>Z<0E>:+<2B>V<EFBFBD>ey<65><18><><15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>O<EFBFBD>hV<68><1A><U<>L<EFBFBD>^<5E>tM<18>\0O<EFBFBD><EFBFBD> %\\<13><01><>\\`<60>Q<EFBFBD><51><EFBFBD><EFBFBD>[T<><54>5<EFBFBD><35><13>|5<><35><EFBFBD>]Aj<41>2%[S<><53><EFBFBD>\0<EFBFBD>m<0B><>T[P8<50>o<07>+u\n<EFBFBD>MV<EFBFBD>UA<55>4)\\x<5<>W<EFBFBD>&<26>Z<EFBFBD><5A><EFBFBD><EFBFBD>)4<>U<EFBFBD><02>O<13>\0<EFBFBD>]<5D><>,<2C><>`<60>C<EFBFBD><43>Tppd<><64>? <20><>7\0<EFBFBD>\\x<EFBFBD>͢\n<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X4>}jJoXf<15><><EFBFBD>W<EFBFBD>S<><53><EFBFBD>J<EFBFBD>it<69><74><EFBFBD><EFBFBD>b\r<EFBFBD>v<1E>n<EFBFBD><6E><EFBFBD><EFBFBD>ɀ<EFBFBD>a{4@<40>Ta=vf<76>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>E<>a5<61>j<EFBFBD>X<EFBFBD>a\r<EFBFBD><EFBFBD><EFBFBD>س`틑u<ED8B91>gaE<61><45>jX<6A>Ռ<>mX<6D>`ŋ<>Y<EFBFBD>v<EFBFBD>h]<5D><>XI`͍-<2D><>aѓD<D193>\0<EFBFBD>݊<EFBFBD><EFBFBD>X<EFBFBD>c<EFBFBD>V5<56>~2@\r\r&<26><>d<08>VA<56><41>c݅<63>Ɔ<EFBFBD>c<15>6G<36>]\0<EFBFBD>5<EFBFBD><EFBFBD>D<EFBFBD>vF4<EFBFBD>aE<EFBFBD>VLW<EFBFBD>b<1D><>JX<4A>aU<61>6<1B><><EFBFBD>gi^<5E>MdX<64><58><EFBFBD>H<EFBFBD><12>o<EFBFBD><6F>YGd<64>ȷe<C8B7><65><EFBFBD><EFBFBD>X<EFBFBD>e<EFBFBD>vY<76>%[UgC<67>\n<EFBFBD>N!%6\0G<EFBFBD>0e<EFBFBD>aM <09>(<28>g<EFBFBD><67><EFBFBD>d<EFBFBD>UvS<76>9d0\"QyN<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>Sf<EFBFBD>]a<>W<EFBFBD>3<EFBFBD>+<2B><>af <20><>r<EFBFBD><72>)<29>M<01>Y<EFBFBD>[<5B>xa<78><61><EFBFBD>!<21><05><><EFBFBD><EFBFBD><EFBFBD><13><>zR<7A><0E><><EFBFBD>AY<41>\n<EFBFBD>v+4Y<34>g<EFBFBD>9zL<7A>ݠv<76><7F><1B>6\0<EFBFBD><EFBFBD>n<>mVx<56>iwu<77>/<2F>\r<EFBFBD>U<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>#cꝖ?<3F>af<61><66>v<EFBFBD>X<EFBFBD><58>U<EFBFBD><55><EFBFBD><EFBFBD>Ag<05><>)<29>h<><68><EFBFBD><11>He<><65><EFBFBD>Y\rfxCR<EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y\reM<EFBFBD>`2F<32>eͧ<65><CDA7>V<EFBFBD><1D>*<2A>Y<EFBFBD>i<EFBFBD>]aTړbͨ<62><01><>j}<7D>v<EFBFBD>XY<14><><EFBFBD>fکj]<5D><>uٲ<16><>6<EFBFBD>X<EFBFBD>j<EFBFBD><6A><EFBFBD>\"@\n<EFBFBD><EFBFBD>B\n<EFBFBD><EFBFBD>E<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <05><><17><>j<EFBFBD>gv1F<31>}<7D> 7J<37><1B>+͢,\0<05>Q\0<EFBFBD>;`B<><42>Z<EFBFBD>m<>k<><6B>Z<>~<7E><>bŮ<62><C5AE><EFBFBD><EFBFBD>m<><6D>&<26><>l<05>V<EFBFBD>Y<EFBFBD>l=}<7D><><05>c<EFBFBD><06><>5k<35><6B><EFBFBD><EFBFBD><EFBFBD>5g<35><67>`<60>Y<EFBFBD>8<EFBFBD>O6<4F><36><EFBFBD>lղ<6C><D5B2><EFBFBD>-d\\b<EFBFBD><EFBFBD>Z<EFBFBD>l<EFBFBD>]v<><04>mv5<76><35>m<><6D><EFBFBD><EFBFBD><EFBFBD>ؐ<EFBFBD>\r<EFBFBD>#? g<>V<EFBFBD><56><EFBFBD><EFBFBD>T<EFBFBD><54>@<40>)<29>]<5D><>\rx<EFBFBD><EFBFBD>k<1D><>><3E>k%\0;<3B><>d<EFBFBD><64><EFBFBD><EFBFBD>ٮ<0F>M65bL<62><4C>X֭<><D6AD><EFBFBD>SshE<68>֛\n`S%h'<27><>Z <20><15><>kZ=<3D><>5<EFBFBD>jmf<6D><66><0F>Z|o<>Q<|`U߂(<28>76,ق<03>:<3A><>֛]<5D>dpV<>a<EFBFBD><0C><><EFBFBD><EFBFBD>mm<6D>!<19><>l<EFBFBD><6C>\$<EFBFBD>E<EFBFBD>p<EFBFBD><EFBFBD>\0<EFBFBD>֨6E<EFBFBD>Ad<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<1E>5u<35>79<37>,mi<6D>Z<>pzȗ Y<>:<3A>Ģ><3E><><02><>b\\ip<EFBFBD>77<1B>f<>{<02>q<EFBFBD><71><EFBFBD>܃p\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><05>c5<63><13><>4<EFBFBD><15>6<EFBFBD><36>_c<5F><63>v<EFBFBD>\\;d5ė+\\.<2E><><EFBFBD>!<21>۟r<DB9F><72>5<EFBFBD>ܧoʷ\"9<EFBFBD>h<> XQr<51> 70\\<EFBFBD>q5<EFBFBD><EFBFBD><EFBFBD>3Ir<EFBFBD>9<0F>M<EFBFBD><4D><EFBFBD><EFBFBD><02><> <05>W<EFBFBD>A]\r<EFBFBD><EFBFBD>\\<EFBFBD>t|<7C>o\\_r<EFBFBD>ʗ!<21><>r<EFBFBD><72>WF<57>7s<37><73><EFBFBD>6]%tS<74>W>\0<EFBFBD>s<EFBFBD><EFBFBD>wWOEj<><6A><EFBFBD>\\<EFBFBD>m<EFBFBD><0F>hZ<68>Qʣs<1D>WS<57>9q<39><71><EFBFBD>]_r`CW'<10>^u<>7\\<EFBFBD>]<5D>ժ]qn-y<>(Y<>t<EFBFBD>\"<02>^<16>a<EFBFBD><61>]<15><><EFBFBD>aVgrmط^]<5D>sUή<55><1D><><EFBFBD>O<EFBFBD><4F>ݣZ<DDA3><5A>w]W<><0F><>wl]2<><32><EFBFBD><EFBFBD>XZ<58>tu<74>\0<EFBFBD> <09>tl6<6C>օA<D685>NQ<4E>VcpͿv<CDBF><76>3pj <20>P<EFBFBD>vd<0C>]<5D>w%<25># \\<1A><><0B><^v<>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>v5<EFBFBD><EFBFBD><EFBFBD>]U;q<><71>Xi<10>j<EFBFBD><06>^<5E><><EFBFBD>~W@<40><>l1<6C>S<EFBFBD>R<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>><3E>\n@<40><02><>`ɞ<><C99E>`<60>,PS<50>f<EFBFBD>X*<2A>\"<EFBFBD><EFBFBD>V<EFBFBD><EFBFBD>#<23><0F>?<05>@<15><08>B<EFBFBD><42>W^|<7C>E<EFBFBD>\0\"<EFBFBD><EFBFBD>y<EFBFBD> )<29><><EFBFBD>z2<10><>\0<EFBFBD>@:f<><66>^Oy<4F>3r<><72>:n)<29><><EFBFBD>h,<17><>D<0C>\n<EFBFBD><EFBFBD>.<2E>yr<79><72><EFBFBD><EFBFBD><EFBFBD>8<>C<02><><EFBFBD>!^<5E>z=귕<>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD>f\n<05> <15><><02>Qc<51><63>q\"<EFBFBD>\n<EFBFBD>,<2C><><0C>嗗<>\n<EFBFBD>'<27><02><>!r<><72>(<28><>«f><3E> -\0<EFBFBD>y<EFBFBD>n\0/<2F><>L<EFBFBD><4C><EFBFBD>/<2F><><02>I<><49><10><>\\<EFBFBD>D\0<EFBFBD>><3E><><EFBFBD><15><>z<EFBFBD>0<EFBFBD><30>ս|<7C><>7<EFBFBD><37><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><05>y<EFBFBD><79><01>_\\<EFBFBD>U<EFBFBD><EFBFBD><EFBFBD>^^\r<EFBFBD><EFBFBD>Ԁ<EFBFBD>{\ng \$<EFBFBD> }<7D><><EFBFBD><EFBFBD>_c{<EFBFBD><EFBFBD><EFBFBD><EFBFBD> S}<7D>*<2A>\0<EFBFBD><08><>8{}m<>#<23><>{y<EFBFBD><EFBFBD>ס(<28>z-<2D>\0<05>{ (<28>z<15>`&^v!r<><72>TzW<7A>^<5E>Zg<5A><67>\0<EFBFBD>~E<><45><EFBFBD><EFBFBD><EFBFBD><02>n <20><><02><>7<EFBFBD>ލ~<7E><>7<EFBFBD><37>[}<7D><><17>_<EFBFBD>}Q2<51>#<23><>|f\0<EFBFBD><EFBFBD>_<EFBFBD>\n<EFBFBD>n!r<>Ț<EFBFBD><C89A><EFBFBD><EFBFBD>ެe<><17>^<5E>{<EFBFBD><EFBFBD>`<60>^<5E>}<7D><><EFBFBD><EFBFBD>^<5E><>(<28><><EFBFBD>^<5E>z6W<>`~m<>7<EFBFBD>`'{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>|<7C><>@<40><02>}<7D><><EFBFBD>'_|]<5D><><EFBFBD>_|<7C><03><><EFBFBD>~<7E> ע߽z%<25><><EFBFBD><EFBFBD>ꚨkX#\0<EFBFBD><EFBFBD>7<><37><EFBFBD><EFBFBD>a<>U<EFBFBD> kC<6B><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>|<7C><><EFBFBD>\"<EFBFBD>=<3D><1D>8\$ǩz<15><><EFBFBD>ˀkX<0B><>yM<79>7<EFBFBD><37>6<EFBFBD><36><0C><><EFBFBD><EFBFBD>}\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>zv §Ky<4B>P<EFBFBD>D<EFBFBD><44>z@)<29><1E><><EFBFBD>uI<75>}T<><54><EFBFBD>'ʞ<> <09><>U/<2F><>*ɛ<>n`kC<6B><0F>y<EFBFBD><79>8N_<4E><5F><EFBFBD> <09>*<2A><><EFBFBD><EFBFBD><13><><EFBFBD><EFBFBD>y<EFBFBD>z7<7A><37><EFBFBD>}MZ<4D>#<23>\\%VXU_<01> <09>uar<61><0F><> U<>N<13><><EFBFBD>C}M<>W<EFBFBD>a<14>Bz8`aW{<EFBFBD><10>EaTv7ԧ<37>?2<><32>ea@<02><>X,^ܜ<1A>fU<11>v<06>Ea<45><EFBFBD>o<EFBFBD><6F><EFBFBD>W<EFBFBD><57><EFBFBD>W<EFBFBD>an<61>I\0<EFBFBD><04><>?<3F><><EFBFBD><EFBFBD>Hy<>\nW<EFBFBD>ǩyjf<EFBFBD>r<EFBFBD><EFBFBD>?e<>xz<78><7A><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<1C>@_<> <20>O<EFBFBD>%<25><><EFBFBD>&c<>T<EFBFBD>?<3F>w<>M<EFBFBD>}=<3D>U<<3C>g{@\\<EFBFBD><EFBFBD>'<27>y}<7D>J<EFBFBD><0F><><EFBFBD> x<>&oS<6F>\$\0)<29>M<EFBFBD><10>Wݏ<57><DD8F>Y\0<EFBFBD>U<><55><EFBFBD><EFBFBD><EFBFBD> <20> <09>P<08>{\0<EFBFBD><EFBFBD><EFBFBD>&<26><>a<EFBFBD>?<15>8<EFBFBD><38><EFBFBD>? 8<>__<5F>E<EFBFBD><45>>bS<62><53><EFBFBD>i<EFBFBD><69>Р<EFBFBD><D0A0><EFBFBD>?<3F><>HC<>D<EFBFBD>?@<40>@(bY{n<1D><><EFBFBD>?<3F><>*<2A><><EFBFBD>oy<6F><79>8<EFBFBD><38><EFBFBD>\n<EFBFBD><EFBFBD>j<EFBFBD><EFBFBD>/<2F>\\<EFBFBD>bߪL<EFBFBD>*X<><58>m<EFBFBD><6D>I<><49>ق<EFBFBD><0F><>Fm⋈>.<2E><>`<1B>~/\0<15>\r<EFBFBD><EFBFBD>/<2F><15><> <20>jɬ&z<03><08>R<EFBFBD><52><EFBFBD>=Ox<4F><78>ޭ<EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<>bӅ.J<>.<2E>X 8<><38>\rTw<EFBFBD><EFBFBD>*{x<EFBFBD><EFBFBD>yDzx<7A>ˇf68<36><38>鈖6<E98896>r<EFBFBD><0C><>2<EFBFBD><32><02><><EFBFBD>XLǩ2<C7A9><32><EFBFBD><EFBFBD>b}<7D><>%<25><><EFBFBD>a<EFBFBD><61>8<EFBFBD><38><EFBFBD>QV<51>N<EFBFBD><4E>c?<02><>b?\"t<EFBFBD><EFBFBD>b7<EFBFBD><EFBFBD>p)<29>_ܚ<5F><DC9A><EFBFBD>m<EFBFBD><6D><EFBFBD>~<10><>&<26>?&9<><39>`<>z<EFBFBD>* <20><>~<7E>P5A<35>B?<3F>˴<>0?<3F>\nS,a=T<>*<2A>4<EFBFBD><34><EFBFBD><EFBFBD>w<><77><EFBFBD><EFBFBD><EFBFBD>x=ǩ<><C7A9><EFBFBD><01><>(<28>w<EFBFBD>U-<2D>Ⳙ<EFBFBD><E2B398><19><><12>H<EFBFBD><48><EFBFBD>X*<2A>.<2E>L<EFBFBD>T<>&<26><>V?<3F><15>i<EFBFBD><69><1D><>ⷉ<EFBFBD>B<EFBFBD><10>G<EFBFBD><47>\$y d3<64>FR/<2F><><EFBFBD>ND<4E><44>aߑ89_n<5F><6E><EFBFBD><EFBFBD>\0V?\0<EFBFBD>X<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD>2 *du<64><75>5<EFBFBD>^<5E><02><><EFBFBD>!<21>}V<><17>aϒrj<72>*<2A>C<EFBFBD>8n\0<EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>ݒ^I<>\0<EFBFBD><EFBFBD>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M1ᩒ<31>\0Y7d<EFBFBD><EFBFBD><EFBFBD>/<2F><>d<EFBFBD><02><><EFBFBD>''<27><>\0<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>)^i<>c<EFBFBD><63><EFBFBD><1D><>b<EFBFBD>{<EFBFBD>M\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>1w<31>.<2E><>&0a<30>UV<>f<EFBFBD>B*<2A>yB<79> <09><>K<EFBFBD>\0\$<EFBFBD><EFBFBD> <20> <09>eE<65><45>[<5B>oe<14><><13><>Ĺ~&X<>AɄ<15><>Ab<41>T<EFBFBD><0B>b<EFBFBD><62><08>Iب<49>?nB<6E>\0<EFBFBD>^<13>B_<42><5F>X<17>e<EFBFBD><65>\r<EFBFBD><EFBFBD>'<27>ݖ2<DD96> <09><0B><11><>e<EFBFBD><65><EFBFBD>/@<1F>;<3B><>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DU=d<1F><>'<27>i(u<><75><EFBFBD><EFBFBD><EFBFBD>_O<5F>X*<2A><>_ƺ<5F>T <09><><EFBFBD> <09>J<EFBFBD>˒<EFBFBD> <09><1C>嗖[<5B>jT<6A>{<EFBFBD>@8<><38><EFBFBD>7<><15><><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><05>0<7F>\0&<26>T<EFBFBD>7<>d<<02>zc<7A><0F><><EFBFBD>kI<6B>*<2A>S<EFBFBD>[<5B>leZF* *\0<EFBFBD>-Z<>\0<EFBFBD><02>^i<>fG<66>.1i<EFBFBD>fP\n<EFBFBD>g<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>e<EFBFBD>ۀ<EFBFBD><EFBFBD><EFBFBD>kY<EFBFBD><EFBFBD>/<2F><>B<EFBFBD><42><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>dJq<4A>Kf<4B>?<3F>g<EFBFBD>L<EFBFBD><4C><1A>j <15><>{Bj<EFBFBD>m<EFBFBD><EFBFBD><02>)<29>f<EFBFBD>.e͜+h<><68><EFBFBD><EFBFBD>8o<38>v\n9-<2D><><EFBFBD><EFBFBD>\n<EFBFBD>֓(?p\n<EFBFBD>/<2F>\$?m<><6D>_<<3C><>%9<><39><EFBFBD><EFBFBD><EFBFBD>Nק<4E><D7A7><1E>\"<EFBFBD>/ǯ<>oi<><69>H<EFBFBD>nJ<6E>g<11>x<>!<21><><EFBFBD>oٮ\n<EFBFBD>(<17>_\$<18><><EFBFBD><1B>B<EFBFBD><42>~<7E><>|<7C><>͜L<CD9C>@Hy<>U<EFBFBD><55>*zX<7A><58><EFBFBD>5<>rfND<> <09><>N?<3F>5<18><>'<27>>A<>=<3D><>?#<23>a<EFBFBD><61>TE[Ra-<2D>N<12>S+q<><71><08><><EFBFBD>-<2D><>z5=呐ҹW<D2B9><57>5<EFBFBD>\n<EFBFBD>8<EFBFBD>bx~Y<>c<EFBFBD><63><EFBFBD><EFBFBD><18>ձ<EFBFBD>fF<66>,\n<02><0B><><EFBFBD>)<29><>|<7C><>Ǟ<>g <09>+k<><0B><>\0<EFBFBD>H<EFBFBD>*@ <20><>@Vy<18><><EFBFBD><EFBFBD><EFBFBD>|ז\0<EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>~<7E>)c<>b<EFBFBD>yF~J<><4A>,?F<>X<EFBFBD>h<18><>zq.<0F><><10><19><>V?(<28>yRU<52>V<EFBFBD>y<7F>+j<>\r<EFBFBD><EFBFBD>n<EFBFBD>?<3F><><EFBFBD> #<0F>V<EFBFBD><08><>h3<68>h <09><>\0i<EFBFBD>f4<EFBFBD>*\0q<EFBFBD>f{<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>><3E><>\"<EFBFBD><EFBFBD><EFBFBD>bjX<EFBFBD>f<><3E><><EFBFBD><EFBFBD>(b?b<><62>'<27>zH \0/<2F><>z<EFBFBD><7A>)<29>(b<02>~\$<EFBFBD>՟<>}<7D>')<29><>~c<><63>͢<EFBFBD><CDA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n+<2B>bp<62><70>.鞨b<E99EA8>\n<EFBFBD>i<EFBFBD>g<EFBFBD><EFBFBD>\nhs<EFBFBD><EFBFBD><EFBFBD>zh`<19><><02><><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66><17><>h<EFBFBD><02><>L瓢2<E793A2>j <20><>z-<2D><>(<0B><EFBFBD><EE85AA><EFBFBD><1E><><03>h<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?\0<0B>c<EFBFBD><63><EFBFBD>TY<54><EFBFBD><E281A4><EFBFBD>͏<EFBFBD>J܅@\$<EFBFBD><EFBFBD>\"f<EFBFBD>dg埦<EFBFBD>9<EFBFBD><EFBFBD><EFBFBD>{*g<>TiW!S<>9QH<51><48><EFBFBD>_<EFBFBD>C<EFBFBD><43><EFBFBD>.<0C><>_E<5F>^~x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡦<0B>\$<EFBFBD>C<EFBFBD><EFBFBD>B<EFBFBD>d'><3E> <09><><EFBFBD><01>:~y<>ã><3E>n&p<><70>B<EFBFBD>-<0F><EFBFBD><7F>c<EFBFBD>_<EFBFBD>~<7E>{Xޏ匎<04><><EFBFBD>k<EFBFBD>68<36>&m<>R?v<18>m<EFBFBD>3V<33>9<EFBFBD>q<EFBFBD><71>0 )<29>c<EFBFBD>#:<3A>#<23>d<EFBFBD><02><><06><><EFBFBD><EFBFBD> <20> <09><>[<5B><>iS<69><53>}<7D><><EFBFBD><15>Vu8<75>US<><<3C><><EFBFBD><EFBFBD>N<10><><EFBFBD><EFBFBD>ynt<6E><74><EFBFBD>{<EFBFBD>j<EFBFBD><EFBFBD>^ِ<><D990><EFBFBD>i<EFBFBD>Ϩ<EFBFBD>O<1A>'<27><><EFBFBD><EFBFBD>@#<23><><EFBFBD>ƀ<02>\"<EFBFBD><EFBFBD>gY<EFBFBD><1E><><EFBFBD>c<EFBFBD>{撣<EFBFBD>_թzp:<3A><><EFBFBD>?<3F>V<EFBFBD><56>(?<3F>jk #<23><><02><><EFBFBD>`P<02>~I<>+kV<6B><56><0B>U'<27>*~Q.^<5E><>U<><55>`F<><46><EFBFBD><EFBFBD><EFBFBD>e<15>]<5D>8<EFBFBD><38>\n<EFBFBD><EFBFBD><EFBFBD>قj<EFBFBD><EFBFBD><EFBFBD><0F><>aK<61><4B><1C><><EFBFBD>ǫn?<3F><>'p<>µ<EFBFBD><C2B5>ga<67><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><><EFBFBD>(e<><65><EFBFBD>v<17>Շ<><13><<13>1><3E><><EFBFBD>9P\"@<ш<><02><><11>\$`d<>9<EFBFBD><39><0E>g<EFBFBD>\0<EFBFBD><EFBFBD>F&<26>\rq<EFBFBD>\r1b\r<EFBFBD><EFBFBD><EFBFBD>\$;@ڃ<>-@<40><>I<>L܂<4C>TP#<23>;%<25><>aj<61><6A>\r}2rM<72><4D>eL<65>aR<61><52><13><><EFBFBD><EFBFBD><EFBFBD><0C>Ӄ<EFBFBD><D383>L<1E><>3I<33><0E><><EFBFBD><EFBFBD>k<EFBFBD>ard<11>k<EFBFBD><03>zs<11>#L<>IS<49><03>V<>z<EFBFBD>\0ۮ<EFBFBD>i<EFBFBD><EFBFBD>k<EFBFBD>B&<26><>ψ#X.<2E><><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>f<EFBFBD>{F :<3A><>S<EFBFBD><19>0<EFBFBD>3Ζj<>`<60>W<EFBFBD>濺<><E6BFBA><EFBFBD><EFBFBD><1B><>k<EFBFBD>Ce<43><65>f*8<>i|<7C><>أ}<7D>oY<6F>㧘<EFBFBD><E3A798>`\"\0<EFBFBD>!P)<29><0F>!P<><50><EFBFBD><EFBFBD>d<02>\n͜hnFKc<4B>^݈H<DD88><48><EFBFBD><EFBFBD>́><3E>)<29><><EFBFBD><1A> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>&<26><><EFBFBD><EFBFBD>zXK<58><4B><EFBFBD><06><>Plq<6C>UR<18><><01>F\\<EFBFBD><1F>u<EFBFBD>BxR<78>O<EFBFBD>F<EFBFBD><46>H<EFBFBD>v*}<7D><>lo<6F><7F>;'l<><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>@H )<29><><EFBFBD>J)<29>^{<EFBFBD>%<25><><EFBFBD><EFBFBD>D<15>O\0Ø<EFBFBD><EFBFBD>><3E>HJ<48>0<EFBFBD>><3E>;<3B><><EFBFBD>hUTBP<42>#<23><>{8<EFBFBD><EFBFBD>\0?<3F>:kqIa<49><61>]<5D><>Hк<48><D0BA>H<12>{4<EFBFBD>Jj]<5D>\"<04><>&<26><><EFBFBD>F<EFBFBD>)\$E54<EFBFBD>!e <09><>\0<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><13>ޕKx<4B>0<0B><><06>C,<2C>RAK/˿<>0<EFBFBD><30>%<07>Q6y<36><79><EFBFBD>r<EFBFBD><72><EFBFBD>P<EFBFBD><50><EFBFBD>،<EFBFBD><D88C><EFBFBD>\\<EFBFBD><02><>%<10><>R 01<30><31>Έ]/(8<>d<1D>F<EFBFBD><46><1C>\0ƀd<EFBFBD>ؙ<EFBFBD>^<5E><>TۘL)5s<>L\n<03><><EFBFBD>m<>G#<23><><EFBFBD><EFBFBD><EFBFBD>#\n+ 4<>kM<6B>D<EFBFBD><44>9]N <09>{R<EFBFBD><EFBFBD>*<2A><>>\0뵈5{U<EFBFBD><EFBFBD><EFBFBD>kA<6B><41>ƿijA<C4B3>9<><39><EFBFBD><EFBFBD><EFBFBD>T<><54><EFBFBD><EFBFBD><EFBFBD>T~\0<EFBFBD><EFBFBD>O<EFBFBD>\0asπ<EFBFBD><01>y<EFBFBD><79><EFBFBD>*ȕ<><C895><EFBFBD><EFBFBD>\"|r<><72>Oc<4F>y<EFBFBD>:G<> <09><>rz><<3C>D&<03>\r<EFBFBD><EFBFBD><EFBFBD>2H\rC\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><03><>rWm<57>)<29>R]<5D><>eI<65><49><EFBFBD>k<EFBFBD>Z<EFBFBD><5A>a)<29><><EFBFBD><EFBFBD>L<EFBFBD><4C>0<EFBFBD><30><0E>Tؤ<05>&;<1B>8<7F><38>mI<6D>.<2E>}<7D><>I<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD>n<EFBFBD>+4@<40>Je<4A><65><0C><>MY<4D><59><EFBFBD>P<F2AF8494><50>1݂Y<DD82><59><EFBFBD><16>\0<EFBFBD><EFBFBD>IT<49>/<2F><><EFBFBD><EFBFBD>*<13>Mha4z<34><7A>\r<EFBFBD><EFBFBD>[<5B>낉<04><><EFBFBD>R<EFBFBD><1F>!on<6F>/v<>`4TDQ<44><51>VW<56><19>T<EFBFBD><54><EFBFBD><04>M<EFBFBD><4D><EFBFBD><EFBFBD>)<29><>&<26>ۖn<12><>Z<EFBFBD><5A>ϼ<EFBFBD><CFBC><EFBFBD>Ik<><6B>}<7D><>Vg<56>Ƹ3<C6B8><33>#9^<5E><>D<EFBFBD>Q9k<39><6B><EFBFBD>k<EFBFBD><6B>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>\0<EFBFBD>o9JD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><EFBFBD><12><><EFBFBD><EFBFBD>G*<0F>՛<EFBFBD>n<EFBFBD><6E><0C>5<EFBFBD><35><EFBFBD><0F><>nú<6E><C3BA><EFBFBD><EFBFBD><EFBFBD>k<>kB<05><><03>E<EFBFBD>{<EFBFBD>RHkZnj<5A><C78C><<3C>F<EFBFBD>Z<EFBFBD>=<3D><><EFBFBD><EFBFBD>j<>K<>/%|<7C>3}<7D><>'R<><52><EFBFBD>o<EFBFBD>')<29>Sۖ<53><DB96>i@6<><36><01><><EFBFBD><0F>f8n<38><6E><EFBFBD><EFBFBD>VZY^<5E>\0<EFBFBD>?<3F>8<EFBFBD><38>o<6F><D7B7><EFBFBD><EFBFBD>W<EFBFBD>\r<EFBFBD><EFBFBD>M0<EFBFBD>\r<14><> <20><>Xb<58>ށ<EFBFBD><DE81>LL\r<EFBFBD><EFBFBD>7<EFBFBD>0<15>rDW<44>l<EFBFBD><6C><EFBFBD>L<EFBFBD>T8<54><0C>0<EFBFBD>k;<3B><><EFBFBD><EFBFBD><EFBFBD>K\"+Q<><51><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD>u<><75>y<EFBFBD>=v<>C[<5B><>1<EFBFBD><31><07> <20>%L<>m<EFBFBD><6D><EFBFBD>_<EFBFBD><5F> <20><18>6<EFBFBD> !.<03><><0E>[[ʵvL<76><4C>,<2C>}<7D><> 8<>raxg<78><19><><EFBFBD><EFBFBD><EFBFBD>%<25><>\$v<EFBFBD>#<03>5a<35><61><EFBFBD><EFBFBD><03>6R\"<EFBFBD><EFBFBD>!pO<70><4F>6z<36>}I\"<EFBFBD><EFBFBD><EFBFBD>><3E>ҿ<EFBFBD>ܙA<DC99><41>O<><4F>q<EFBFBD>9M<><4D>l<>k<EFBFBD>TԢ@\$<EFBFBD><EFBFBD>ȋ<EFBFBD>tF<EFBFBD>D<EFBFBD><EFBFBD>mb&|IDl<13><>@<40>Ipo<12><06>W9uرF<D8B1>5A<35><41>[<5B>۴<EFBFBD>&<26>Z<EFBFBD><5A><EFBFBD>n<EFBFBD>I{<05><>8<EFBFBD><38><12><1D>5qe4<><34>Yl<59>¬h<C2AC><68><05><><EFBFBD>@<40>qb%[y<><0F><>C<>c6<63><36>T'<27>6t<>\\Zk<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><19><><EFBFBD><EFBFBD>q<EFBFBD>)/<18><>q<EFBFBD><08><><EFBFBD>:<3A><>;<3B><>AE\0<EFBFBD>֫|qőƶ<C591><0C>Ηf<0E>@<40>F<EFBFBD>6<EFBFBD>:\0<EFBFBD><EFBFBD>3#\\F<EFBFBD><EFBFBD>Lcn<0E>m<><6D><16><><EFBFBD><EFBFBD><08><0C><>b<EFBFBD><62><EFBFBD>(<28>-<2D>Q<>l<EFBFBD>`2k<32>#Tm<54>G%{<EFBFBD>}=<3D><>k2<6B>'\"<EFBFBD>9S<EFBFBD><12><>2\"<EFBFBD><EFBFBD>+7!!,<2C>.<2E>|<7C>#\"W<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U <09><>\$7<EFBFBD>><3E>frP<0B>&6<>k<EFBFBD>m<EFBFBD><6D>{<EFBFBD>k<EFBFBD>l<EFBFBD>'Z<><5A><EFBFBD><EFBFBD><EFBFBD><EEBBA0>a<EFBFBD><06><><EFBFBD>r<EFBFBD><1F><>\0<<3C><><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8@2/<2F><>g)\\<EFBFBD><EFBFBD><EFBFBD>ʏ)<29><>k<EFBFBD>l<EFBFBD>'6<>qO<71><4F>\r<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>+<2B>5Љ<35><10><><EFBFBD>r<EFBFBD><72>E}ܵr<DCB5><72><EFBFBD>%|<7C><><EFBFBD>ˏ-|<7C>\0<EFBFBD><EFBFBD><EFBFBD>*<<3C><>\r<EFBFBD>t<EFBFBD>|<7C>r<EFBFBD><72><EFBFBD>&<26><<3C><17>pd<70>Hs<48><73><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53>D<EFBFBD><44><EFBFBD><EFBFBD><19>0:<3A>I<><49>)<<3C><06><>`kB<6B>\n;@<40><>WO-;/<05>x<EFBFBD>N<><4E>5y(<>N<>E<><45><EFBFBD>õ<08>y\\ <09>P&<26><>3H^<5E><><EFBFBD>w?P<>6f<36><66>uC<75>.)<29>v<EFBFBD>ͼ<EFBFBD><10>c<EFBFBD><63><EFBFBD>#<23>Y<EFBFBD>u<EFBFBD>'<27><><EFBFBD>!Z<><5A><EFBFBD>\0<EFBFBD>¡<EFBFBD>(<28><>p8<><38><EFBFBD><EFBFBD><EFBFBD><11>`0<><30>,o<07>sy<73><79>QE<51><45><EFBFBD>':<3A><><0C><><EFBFBD><0F><><04><15><><EFBFBD><EFBFBD>W<>r<EFBFBD>qO<71><4F><08><>r<EFBFBD>s<EFBFBD>!_<04>[<5B>Vaz#<23><><EFBFBD>: zM<7A>q <1F>9<EFBFBD><39>kT<6B><54><EFBFBD><EFBFBD><04><><12> <20><><EFBFBD>w<EFBFBD><16>R<>2a <09>W<EFBFBD><1D><><EFBFBD><EFBFBD><11><><EFBFBD>u<EFBFBD> 4]<5D>\rf<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>\ntC<EFBFBD>\0I<EFBFBD><EFBFBD><EFBFBD><1C><>!<21><><EFBFBD><EFBFBD>Ϗ=P(<28>'<27><>C\\<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>ӕ<><0B>M~#<1D>D<EFBFBD>(!<21>+<2B><><08><><EFBFBD>X<>\r<EFBFBD><EFBFBD>]<03><>gI<67><18>I<EFBFBD>|5<><35>s<EFBFBD><73>_J<5F><4A><03><>GK;\\vN<76>¶<EFBFBD>t<EFBFBD><74><0C><02>lG@Wm<1F>D<><44><1D><><EFBFBD>OA7m<13>8 \"\0<EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>|,t<><74> 5=3<><33>Գ<EFBFBD><04>iU<69><55>><3E>}E7A#)D=<3D>a <09><><EFBFBD>\r<EFBFBD><EFBFBD>{O<EFBFBD><EFBFBD>BOQ2+s<><15>:<3A><><EFBFBD>g<EFBFBD><67>=J<><4A><EFBFBD><EFBFBD><EFBFBD>6u<1E>M<EFBFBD>O=<3D><>t<05> <09>><3E><>i<><69><EFBFBD><EFBFBD><12><>Ѽ<EFBFBD>\0<EFBFBD>b`<60><>Y<EFBFBD><59><EFBFBD><EFBFBD>[<1A>Y <20>\$&<26><>i<><69>~<7E><><EFBFBD>\0<0B>e<EFBFBD><65>\r`1bX<62><58><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>5<EFBFBD> <20><>bG)<29>GD{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0o`7S\r<EFBFBD>?8<>%<25><><EFBFBD><EFBFBD>ѝf\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>qu<71>X<EFBFBD><58><EFBFBD><EFBFBD>ͿY%5<><35>y6<79>pe<70>8<>脀<EFBFBD>0`<60>e<EFBFBD>:8xO<78><4F><EFBFBD><EFBFBD>9d\n!.<2E><>~F<>=jo<6A><6F>%<25><><EFBFBD><EFBFBD>O֣<4F>;PP<50>֧V<01><>ᬐ+F;V<>d*<2A>rX<72><58>Յ<EFBFBD><D585><EFBFBD>u<EFBFBD><75>Ѕt3<74><33>Go\rQ<EFBFBD>g\\<EFBFBD><EFBFBD>u<EFBFBD>b<EFBFBD>><3E>qs<><10>1m<31>5<EFBFBD>LrCt<43>҇`<12><>vֺ=%<25>rK<1D>vo\rgK`<60><><EFBFBD>?[Q<>K4<4B><34>9<EFBFBD>|<03><>m<EFBFBD><6D><EFBFBD>Uڀ<<3C><><EFBFBD>0/Z<>%<25>5<EFBFBD>8`<60><><EFBFBD>5ïY}b]+<2B>Y<>FW<46>\$\\C<EFBFBD>Q5\0q<EFBFBD>bp<05>pj<12>u<EFBFBD><75>dн<64>u<EFBFBD><75><EFBFBD>i}p<><70>#'m<>W<EFBFBD>8<>oFW<46><57><1B>qQ|1T<31><54><EFBFBD>otd<74>AG<15>\\<EFBFBD>&&07<30>Eќ<45><D19C>t<EFBFBD>}<7D>f<EFBFBD>)Uҡ<55><D2A1><EFBFBD>,l<>=ʂ.\n<EFBFBD>uv<EFBFBD><04>n<12>=UW<55><13>p<EFBFBD>y<EFBFBD>!<21>s<EFBFBD>%wu<77><75><EFBFBD><11><><EFBFBD><EFBFBD>+<2B>ek<65>t<EFBFBD>vvFW<46>]<5D><><EFBFBD>wU<77><<3C><><EFBFBD>É<EFBFBD><C389>u_ek\rk<EFBFBD><EFBFBD> <09><><EFBFBD>P\"\n<EFBFBD>Y=qwy<77>`J<>4Pj<03>T<EFBFBD><54><EFBFBD>5<EFBFBD><10><>qG)gp<67><70><EFBFBD>R<EFBFBD><52>gnbp<62>&җzP(п=<3D><>7w<37><77><EFBFBD>I\$<EFBFBD><EFBFBD>!<21><>X<EFBFBD><58>v\\Y]<5D>{G<EFBFBD>ߠn<DFA0><6E>]<5D><>]<5D><><EFBFBD><EFBFBD><EFBFBD>;'X<>4Hy߸Ϣ<DFB8>J8'nrvg<76>'p<><07>^({<EFBFBD>> \0<EFBFBD>bW\\E<EFBFBD>v<EFBFBD>H<0C>qV<71>,<2C>y<EFBFBD>b<EFBFBD><62><EFBFBD><15>^P<>\rЇ<EFBFBD>W<EFBFBD><EFBFBD><EFBFBD>m<>f<0C><03>l<EFBFBD>k<EFBFBD>A><3E>(<28>3<EFBFBD><01>7R|E<>s<EFBFBD>#Q<><51>;Fr<46><72>2xresQ8A<38>@PtR <09><>]bmq <04>uժ<75>ޕw]qpL<70><4C>Li\nEօ>3G<33><47><EFBFBD>y<7F><79><EFBFBD><EFBFBD><16><>}<7D><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>lw<6C><77><<3C><>3w<0B>ݵ<EFBFBD>jF<6A>0p<>*u<><75>,}~,<19>h<EFBFBD><68><EFBFBD>W<EFBFBD><57><EFBFBD>XT<58><54>s<EFBFBD>8<EFBFBD><38>}qs<71>/wU<19>Y<EFBFBD><59>HR]<5D>\r<EFBFBD>Op<EFBFBD><EFBFBD><EFBFBD>LQ<EFBFBD><0B><>v<02>C@֘<><D698>s^<<17>[3<17><>T#.<2E><>A|^<5E><>j~<7E><> <1E>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>`i\0<EFBFBD>Ǟ<EFBFBD>i<>+l<>d<EFBFBD>xMm<4D>I<EFBFBD><<3C>H<EFBFBD><48><EFBFBD>OI{C%<25><>h<EFBFBD>`t<><74>wu%<25>Q:4<><34>\\8ݔH<EFBFBD>u>)<1F>/u><13>Z3<5A><33>@<40>oS<6F>b<EFBFBD>@<40><>/Ѽr<D1BC><72><EFBFBD><EFBFBD>ןx!<21><>v_\$H<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>I]<5D><>3<EFBFBD>=<3D><>Ii<49>O<EFBFBD>q<EFBFBD><71>Y\\<EFBFBD>}BtG6<47>\r<EFBFBD><EFBFBD>p]Ҷ<>=,lf<>\\<11><11><1D><>+<2B>P<EFBFBD>ݺ<EFBFBD>v<EFBFBD><76>7<EFBFBD><37>αpDv<><02><><EFBFBD>/<2F>y<EFBFBD><79>oe<6F><65>e<EFBFBD><65><EFBFBD>Y<EFBFBD>&<26>ba<62>9<18>#<23>O{S<EFBFBD><EFBFBD>i<EFBFBD>wo<EFBFBD><EFBFBD><EFBFBD>TL(<0C>ot<6F>^7_T<5F>[<5B>Ηi<CE97>N<EFBFBD>k<EFBFBD>]<5D><><1D><><1F>D><3E> <09>謑A.k) <20><><EFBFBD><EFBFBD>Yi<1F>K<EFBFBD>m&W<><57><EFBFBD><EFBFBD>Ɠ<EFBFBD><C693>xz<78><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M4̂[<5B>I<EFBFBD>%M<>g<EFBFBD><EFBFBD><7F>wX1<58>7J<1E>؛<EFBFBD>N<EFBFBD><4E>mz<6D><7A>Z]<5D><>t<EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD>X<>-<2D><><EFBFBD><EFBFBD>ui<75><69><17><><EFBFBD>͞<EFBFBD><CD9E>pd<70><<3C>ə.I<><49>d<EFBFBD>M.<0F>66(bUv<55><76><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>z<><7A>p<0B><><EFBFBD>)<29><EFBFBD><7F>O<EFBFBD>(<08>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>Uz<55>h<EFBFBD>Y2<59><32><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67>;<3B>?<3F><<18><>M<EFBFBD><4D><<10>Z<08>?>J<>q짴><3E>\0<EFBFBD><EFBFBD>D՝<EFBFBD>TEߗ{b<EFBFBD><EFBFBD>-t<>2g<32><67><1B><><EFBFBD><EFBFBD>w<EFBFBD><77>߹<1E>P<EFBFBD><50><07><>%/<2F>B<42><7F><EFBFBD><EFBFBD>o<EFBFBD><6F>T<EFBFBD>{<EFBFBD>Ӄ\\{<EFBFBD><EFBFBD>x<><7F>Z<EFBFBD>Y<EFBFBD><59>K<1A>Y<EFBFBD><59>[!.<2E>:<03><>ހY<0B>(<28><>.<2E><><EFBFBD>h+<2B>)<29>]|<7C><>Kv<76><7F><0C>.{<EFBFBD><EFBFBD><EFBFBD><10><><EFBFBD><EFBFBD><EFBFBD>=<19><>t<EFBFBD>?gK<67><4B>z<EFBFBD><7A><0C>4w<34><77>><3E>e<EFBFBD>l<EFBFBD>W><3E>ƾ<EFBFBD><C6BE>?P<><50><EFBFBD><EFBFBD>v<EFBFBD><1F>b<EFBFBD><62>냵吤<1F>\0<13><><11><0F><><EFBFBD>i<1D><>><3E>>wu<77>;a6<61><36><EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>?Ž<13>mdm6<6D><13>S<EFBFBD><53>U<0E><><EFBFBD><EFBFBD>anC<6E>z^<5E>!<21>4<EFBFBD>=<3D><0F><>|~M<><4D>?<1C><><EFBFBD>K<EFBFBD>?#<23><><EFBFBD><EFBFBD>O<EFBFBD>O<EFBFBD>M<EFBFBD>8<EFBFBD>3<EFBFBD>ۯc<>mN6bgI&tO<74><4F>\"<EFBFBD>,\r<EFBFBD>9=<3D>Ap#<23>'<27><>^w<1E>M<EFBFBD><4D><EFBFBD><EFBFBD>)<29>8T%w<>v<EFBFBD>^<5E><><EFBFBD><EFBFBD><<1D><>Ŷ<EFBFBD>\\O<EFBFBD><07><>}<7D><>\n<17><>3<EFBFBD>?Яh?E<>Yє<59>!<21><><EFBFBD><1F><>EaQ<61><51><EFBFBD>C<0E>3<EFBFBD>o<EFBFBD><6F>^<5E><><EFBFBD><EFBFBD>gA,<2C><19>WE<57><45><EFBFBD>1<EFBFBD>0%<25>XK4L<34><4C><18><>.<2E> ^<5E>|<7C>)<29>o<EFBFBD>auS<75>o<EFBFBD>=<3D><>i<EFBFBD><0F>?@<40>y4w<34>4>\n<EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><19>[<5B>lF<6C>cx~տ<><D5BF><04>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>}<7D><13><>2<EFBFBD><1D><>:<3A>4 #<23><><EFBFBD><EFBFBD>,|<7C><17><>tqa<>^<5E>!<21><>̘i\"<EFBFBD>..<2E><>r<EFBFBD><72>bg\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD><EFBFBD>|<01>#g<>}v<03>YX]!w,r<>^<5E>v<03><><EFBFBD>ݝI<DD9D><49>H!<21>;<3B><><EFBFBD>q<EFBFBD><71>J<>긒?z<>Wח<57><D797>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`I<><49><EFBFBD>7D<37>}<7D><>\0<EFBFBD><EFBFBD>u<EFBFBD>Ә+<2B>2~U<>,~<7E><>~]<5D>O 7ܜ<37>3E<33>W<EFBFBD>_K<><4B><EFBFBD><0E>:<3A><><EFBFBD><16>^s<><73><EFBFBD>_<EFBFBD><5F>P~=<3D>ʵr<CAB5><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04><>`6<05><>-T<C290>a<EFBFBD>H<><48><EFBFBD> t<><74>OS<4F>1Hyn<79><6E>\ntw<EFBFBD>K<><4B><EFBFBD>=<3D><><EFBFBD><EFBFBD>p<EFBFBD><70>&<26><>?<3F>vu<76><75><EFBFBD>><3E><>M<EFBFBD><4D><EFBFBD><EFBFBD>2n\$<EFBFBD><EFBFBD><EFBFBD>?LO9_<39>2A<01><><EFBFBD>ⲓi<E2B293><69>I2<49>|<7C><>WK<57>уw]eϿ<65><CFBF><1F><>u_<75>]?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B>=<3D>]<5D>Jv<76><7F><EFBFBD><1D>\$<EFBFBD><EFBFBD>E<>U<EFBFBD>#<23><07><><EFBFBD>ܷ?<3F>Lu<4C>f<EFBFBD><66>i<EFBFBD><69><EFBFBD><1F><><1E>\n<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>pm<EFBFBD><EFBFBD>X<EFBFBD>>t<03>f\rx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>*O<>(A<><41>P?4<><34>]<5D>x\r^<5E>E8nJRo\0¦<EFBFBD>%[<5B>\0004<EFBFBD><EFBFBD>w%_<>K<EFBFBD>[SJ^<5E><><EFBFBD><EFBFBD>n<EFBFBD>OK<4F>VU<>TP<54><50>ޅ9܁<39><DC81><EFBFBD><1D>?uF<75><46>S<EFBFBD>x <20>D<08><>W<EFBFBD><57>&Cx<><78>r<11><><EFBFBD>;<3B><>.8KyUB<1D>\0CJ <09><>!<21><><EFBFBD>HeW<65>J<EFBFBD>If<08><0B><><EFBFBD>\0<03><><EFBFBD>o<EFBFBD><6F>/<2F><>V <20><><17>5Z\0<EFBFBD><EFBFBD><EFBFBD><10>U<EFBFBD>K<EFBFBD>Y;E<><03>j<EFBFBD>wD<77><44><EFBFBD><12>%`n@<1B><>4FI*o\0`<60><><EFBFBD> <0F>V<EFBFBD><18>q)8c5Wz<57>EF<45>\0<EFBFBD><19>B<><42>~<7E><1B>DF<44><46><EFBFBD><0E>ŧP<0F>A<02>Y<EFBFBD><59>A]<5D>f<EFBFBD><66>*<2A><>-+Yf<<3C><02>ŷ<><C5B7><EFBFBD>/<2F>_<EFBFBD>°:DP<>y<>A,<2C>m<EFBFBD><15>b<><62>q<EFBFBD><71><EFBFBD>8<EFBFBD><38>X<EFBFBD><58>Hڷ<><DAB7><EFBFBD>\0<EFBFBD>@u\\<EFBFBD><14>!<21><07>d<EFBFBD>^Oڄ}%<01>l<EFBFBD>><3E><EFBFBD>V<EFBFBD><56>mY<6D>\rڽ21P\$<0C>5<EFBFBD>rH<>D<06><><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h<08> E<>e<>!@<40>[Z<><5A>4<><34>(<28>`QF5<02>\\(`O<>*@9\0f<EFBFBD>D<EFBFBD>~k<> \"J<EFBFBD>Q<EFBFBD><EFBFBD>BD<EFBFBD>\0@\$<1A>DN<44><4E><EFBFBD>\$<01><>k1<03> <09>}`(<28>R<EFBFBD>|`P<11><><EFBFBD><EFBFBD><EFBFBD>6\"KX<EFBFBD><02>5<>*<2A><0B>\0Pԙ<>[(\"f<12><><EFBFBD><EFBFBD><EFBFBD>y,<2C>1\$<EFBFBD><EFBFBD>;\"8\nL<EFBFBD><EFBFBD>YX7<EFBFBD><EFBFBD>ƞV9<EFBFBD>gX\ni<EFBFBD>HapSI<EFBFBD><EFBFBD>Y<02>,<2C><>!<21><18><>V<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>C8|<7C><17><><EFBFBD><0F>,<2C>N!<21>Iq<49>j<EFBFBD><6A><11>)<29><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>҈ZX9<07>+jȬZ<><5A>s,FI<46><07>g<EFBFBD>Ÿ<EFBFBD>K9<4B>Q<EFBFBD>I˜9c٫;M<>[<5B><><EFBFBD><EFBFBD>0<EFBFBD>U*<2A><14><><EFBFBD><EFBFBD>D<><44>r<EFBFBD>0h<1F><><EFBFBD><13>R<EFBFBD><52><EFBFBD>c<EFBFBD>a<0F><>)<29>L<11>&pG<70>F<EFBFBD>C_\0<EFBFBD>@94<39><34>̄<EFBFBD>F3<46>.<2E><>}<7D>{5f^<5E>T0<D7BF>l<EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD>A<><41><EFBFBD>2<EFBFBD><32>l<EFBFBD><6C><EFBFBD><EFBFBD>(+0Y<30><59><15><0F><>ь<EFBFBD>2<>,<03><><EFBFBD>x<EFBFBD><78>ȉ<EFBFBD><C889>B<><42>]<5D><><EFBFBD>vd-ݟ<15>0<05><19><>ނ8<DE82>m<EFBFBD><6D>%<25>g=ٓ<>&<26>-<2D>#<23>,Z<>:<3A><02><18><>c:x/<2F>e<EFBFBD><15>9d<39><64>͍Xe<>`@(*݃-F<0C><13>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><65>A<><41><13>.<2E>`<60><>X(<<3C>\r<EFBFBD><U<><55><EFBFBD>UD<55>J&<26><06><>#I<><49>\rF <09>/<2F>cl<63><0B>~<7E><><01><><EFBFBD>Aw_<77>˨<EFBFBD>l<1C><><EFBFBD>Z<EFBFBD><5A>A<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><19>20Q<30><51>A<EFBFBD>'<27>W*<0E><1D>xY2'<27><><EFBFBD>٘a\\<EFBFBD><<3C><> <09><>A<EFBFBD><41>ԙ<EFBFBD>P6tpg<18>\0B<0F>&U<><17>><3E><17>A<EFBFBD><41>W<07><><EFBFBD>3v/pz<70>7<EFBFBD><37><EFBFBD>\0<EFBFBD>V<> :k<>C<EFBFBD>A<EFBFBD>'<27>2<1C>O<EFBFBD><4F>[\0Eex<EFBFBD>Q)[;<3B> pQY<51><59><EFBFBD>bR<62>9<EFBFBD><39><11>b<EFBFBD><62>Y_&8pA<><41>#\$0]!x<>@<40>͞<EFBFBD>\"<EFBFBD>xP^<5E><><EFBFBD>2'<08><05>[\"qPh<18>3<EFBFBD><33>T<EFBFBD><54>|<05><05>a<02>[b<> \n<0C>F<EFBFBD><46><EFBFBD>H Բ<><D4B2>B\0<EFBFBD>\rXH<58><48><EFBFBD>&<26>τ<EFBFBD><CF84><11><'pH0<> <20>ma<>T#<23>]<5D><><EFBFBD><EFBFBD>0惊<30>U|s#(LLO<4C><4F>5g<><04>x<>hE,P<><50><EFBFBD><EFBFBD>i<EFBFBD> <09><>Lv]P<>!<V<><56> <09><><EFBFBD>8PrڃA <07><><(f<>l<EFBFBD>!A<>h!<07>x><3E>`<60><>5<EFBFBD><35>}<7D>2<>@S`<60>0<02>\n <09>C` <09><>!B<>\0<EFBFBD>& <20><>0<EFBFBD>Q핈<51>9<08><>94ƙ<34><1F><><EFBFBD>8g<38><67>I<EFBFBD>c\"z<0B><><EFBFBD><EFBFBD>Sc\n<EFBFBD><10>D\"<EFBFBD>)<29>J1<>c͋;X/<2F>~Y1<><31><02>~\$\$1laa!<21><><EFBFBD><EFBFBD><1F><16>\$<EFBFBD>G,aa*<2A><>^<5E><0B><12>f00<30>aLBㄱ6#<13>0<EFBFBD>X<><58>_<EFBFBD>pŵ<70><C5B5>\$<EFBFBD><EFBFBD>qcBhdb<64>B |h9<68><39>!bBq\0<EFBFBD>O<EFBFBD><EFBFBD>+<16>N<EFBFBD><4E>a=A<>.<2E><><13>0<EFBFBD><30><EFBFBD><EFBFBD>a<EFBFBD>B<EFBFBD>c\n<11>(rpz<><7A><EFBFBD>\"<EFBFBD>.<0F>>(X<>}aIc<02>9<EFBFBD>,)<29> мC¡&<26>\n<EFBFBD> hd0<64><30><EFBFBD>1I^<5E><><EFBFBD>d <20>)<29>aXð[c<10><>?95<39>1En<14><>'<27>VͣB<CDA3><42>n0VarCc4<63><08>K2V4<56>\"<EFBFBD><EFBFBD><EFBFBD>Kl8<EFBFBD><EFBFBD>?<3F>/<2F><,˚L<CB9A>2j&<26>ؚ<EFBFBD>8 k<>y<EFBFBD>݅<EFBFBD>P~F<>,v`1<>_Ӎ<><10><>@<13>ACU<43><55>ETiCf=<3D>{X<EFBFBD><EFBFBD>Zd\"¨<EFBFBD>(&V<01>װ<EFBFBD>DfJV<4A><56><EFBFBD><14><14>]<1A><>胓<0B><>; <20>k\"<EFBFBD><EFBFBD>B;`)!<21><>!<21>ql:<18><>m<EFBFBD><6D>)T\nz<EFBFBD>\n\0<EFBFBD><1B>C<EFBFBD>z<EFBFBD><7A>c<><63><EFBFBD>)˔ضK<><0E><>[| <20><>ټ<02>\0<EFBFBD>N<11><03>i<EFBFBD><69><1B>Zv<5A><76>陑[Vl\$<EFBFBD>Y<EFBFBD><EFBFBD>*fHU<48>+5<><1D><0F>ҶZe<5A><65><EFBFBD><EFBFBD><EFBFBD>Ws\\<EFBFBD><EFBFBD>k2<6B><0F>-K<>ֆ<EFBFBD><D686>DG<44>7@l<><6C>ˊ<EFBFBD>f<EFBFBD><66><EFBFBD>5<EFBFBD>Xf<58><66>Н<EFBFBD><1D>c<EFBFBD><63><EFBFBD>f<EFBFBD><66>_<EFBFBD><5F><EFBFBD><0E>:6<><36>@,<2C>'<<3C><><EFBFBD><EFBFBD>2<>Xس<58>l'<27><><EFBFBD><<3C><10>z,I<19>B<EFBFBD>g<EFBFBD><67><EFBFBD><13>\nFx̯J<EFBFBD><EFBFBD>i<><11>C<<3C>'<27><><EFBFBD><EFBFBD><EFBFBD>N\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<0F><03>3s<33>(<28><><13>Avop<6F>\"\r3qgu<>{8`<60><><18><>KhL<68><4C>yc\$mYҳ<59>h <20>9<EFBFBD>\n<EFBFBD>Ƅ<EFBFBD> <09><>46hi\r<EFBFBD><EFBFBD>{C<EFBFBD>d<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>]<5D><>)A<><41><04>K<EFBFBD>3<EFBFBD>i<EFBFBD>O<EFBFBD><4F>#FR<46>,<2C><>ߴxf4OA<4F><41>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$i<EFBFBD>Oɤ x<12><>C<>3xg\0<EFBFBD><EFBFBD><EFBFBD>+9<14><>-R<><52>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47>ݗ<><DD97><EFBFBD>(B<>ݣ<G \$<EFBFBD>\0(&X`0Oɦ<4F><1F><><EFBFBD><EFBFBD>`<60>4<EFBFBD>i<EFBFBD><69>,<2C><>P(npW<70>'\0_<EFBFBD>JO<14><>?<3F><>p<EFBFBD>C<EFBFBD><43>Zj;<07>?<3F>Hf)MS<4D>O<07>&<26><><EFBFBD><EFBFBD><EFBFBD>Uu<55>ڮ<><DAAE>d,Յ<BR<42><52><EFBFBD><EFBFBD>r<EFBFBD>g<>Ε<EFBFBD>/E[\r^W<><57>j<>١B#f<>|<7C>%b<14>n<12><>2\\<16>IV<49><56><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD>%<13>TkT\r7!5<>(t<0E><>F<EFBFBD>)q<1E><>ˈ<>F<EFBFBD>%<25><><EFBFBD><EFBFBD>̔<><CC94>c<EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD>6<EFBFBD><36>G<EFBFBD><47>r?&<26>)<29><><EFBFBD><EFBFBD>2<<3C><><EFBFBD><EFBFBD>H<EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD>> m<><6D>)<29>K<EFBFBD><04>`<>6<EFBFBD>R<EFBFBD><52><EFBFBD>4<EFBFBD>a<EFBFBD><61>m<EFBFBD>[o<><6F>G<EFBFBD>ߵ:<3A>Mt<4D><74><EFBFBD>Z\0 D<>tF<74>o<16>M<EFBFBD>9=<3D>KL q:<3A>]W<><57><0B><><EFBFBD><EFBFBD><10>(tP<>7<EFBFBD>@<40>B<><42>Mq<><71>k<EFBFBD><6B>M<EFBFBD>Ts\\Y<EFBFBD>2%<25><>?58<0E><>6<EFBFBD><36>\r\n<EFBFBD>M<EFBFBD><EFBFBD><EFBFBD>ὁ<EFBFBD><EFBFBD>·ok<1E><>N<EFBFBD>]<5D><>o<EFBFBD>T߾<54><DFBE>t<EFBFBD><74><EFBFBD><EFBFBD>J<10>Ms<1D><><EFBFBD><0C>J<EFBFBD>!{<EFBFBD>8u-<2D>]<5D>-4<1C><>*Xh<58><68>1Iۤ<49><DBA4><1F><>Ӏ0<>c4<63>8<EFBFBD>\0<EFBFBD>9<18><><EFBFBD>% <>&<06>R<EFBFBD>v+#n<>7*<1B>\re^:<3A><11>ۣ<EFBFBD><0C><><EFBFBD><EFBFBD>?<3F><><EFBFBD>ޱ,<2C>]<5D><><EFBFBD>wL]<5D>5ȠY9<59><03>Io<49><6F>(}> <20><>(<28><><EFBFBD>&`<60><1B><><EFBFBD> ^<5E>Ŭ<EFBFBD>_<EFBFBD>0\"{<EFBFBD><04>HN'<11><>_<EFBFBD>2<EFBFBD><10><05>m6<6D><36>Bb<42>\$~<7E><><EFBFBD>\$<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD><0F><>Ցj<D591><6A><EFBFBD>|<7C>T<EFBFBD><54><EFBFBD><EFBFBD>'\r<12><>E<EFBFBD>k<EFBFBD>Z<1C>g<EFBFBD><67><EFBFBD><02>Q<EFBFBD><51><1B>丈<>s<EFBFBD>G<>=<3D>*SS<02>r0<11><>1q_2<1<><31>\\8<EFBFBD><EFBFBD>p]<5D><><03><><EFBFBD>X=<3D>R<EFBFBD><52><EFBFBD>K\"<EFBFBD>%<25>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD>Q<EFBFBD>;(d<><64><EFBFBD><01>1<EFBFBD>D<EFBFBD><08>\\E<EFBFBD><EFBFBD>G<EFBFBD>Y<EFBFBD><1F><>ĽN<C4BD>:<3A><>\r<06>d(<28>`<0C>~b<>vp<76><70><EFBFBD>TC<54>1\\]<5D>VQ<10>TM<54><<3C><><EFBFBD><13>F^<14>:0@0<11>#<08>yI<79><49>@g<><67>g<12><>\0:8<>N<> <09>f<><66>A<EFBFBD>\\O<11>rn<72><6E>/<2F><><EFBFBD><EFBFBD><EFBFBD>n^<5E>=<3D><19><0E>e<EFBFBD><65><EFBFBD> 1<>><3E>2tr<74>)-<2D>x<EFBFBD>A<0F>c<1C>t`2<><32><EFBFBD>c<EFBFBD> <09><>R><3E>Qm5Y<35>%7kq<6B>\\<1A>lCX<43>Xl<58>\"Wc<11><>-9<><39><EFBFBD>r-K<>d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><4C>\r<EFBFBD><EFBFBD><EFBFBD>1x<EFBFBD>p_<EFBFBD><EFBFBD>Pmn<EFBFBD>^3χ<>VB<56>?S<><53><19>3\\dŧ/:#1<><31><EFBFBD><EFBFBD><EFBFBD>z3|gh<67><68>H<1F><>y~[632h<32><68>Hk<1B><<3C>\\<EFBFBD><EFBFBD>Y<EFBFBD>]1ԈkF<><17><><EFBFBD>(jѶԡ<D1B6><D4A1>DƐCY<01>ti0<69>q<EFBFBD><71>E<EFBFBD><45><EFBFBD>f4<66><34><EFBFBD>E<EFBFBD><45><EFBFBD>J<EFBFBD>\r[9<1A>4<1B>X<EFBFBD>6<>Ձ<EFBFBD><08>]<5D>x<EFBFBD>t<EFBFBD>Hk<1B><>}<7D>_5<>zxDz<03>#\\8J<EFBFBD>T<EFBFBD><EFBFBD>P<11>GQ<47>_<EFBFBD><5F>\0W\r<1A>5<EFBFBD><35><EFBFBD>K<13>c<EFBFBD>č6B<36>6C⤹<43>C<EFBFBD>6<><1C>YPBt<42><74><EFBFBD>P<>'lW^S<>6<EFBFBD>m<EFBFBD>f<EFBFBD><10><>w<>8<EFBFBD><38><EFBFBD><1A><><EFBFBD><EFBFBD>`<03><13>l<EFBFBD>tep>'<27>D<EFBFBD>V<>x<EFBFBD><78><EFBFBD><EFBFBD>jDoↅo<E28685><6F>pM5<4D>oӯ<11><>5<EFBFBD>v<><76>exK<78><4B><EFBFBD><EFBFBD><EFBFBD>\0<:Kmt<6D>\"8\\9<EFBFBD>ᮔ<1E>@<40><> <20><>8<EFBFBD>wB<77>A<><41>W<EFBFBD>3m-\$p<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD>.<2E>I<1B><>J<EFBFBD><4A><EFBFBD>N<EFBFBD>ĺ<><0B><><EFBFBD>\rdg<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<1C><><EFBFBD>n<EFBFBD>r<EFBFBD>\"O<>EE\r~;<1B><> dP<11><>&>O<><4F>R: H<><48>*<2A>ɿ4o<1C><>TtU<74>Q<EFBFBD>E\rE<EFBFBD><EFBFBD>*:\\\\<EFBFBD><EFBFBD><0F>\n<EFBFBD>GI<EFBFBD><EFBFBD>ݭ<EFBFBD>Jbx<EFBFBD><EFBFBD>ԟ6<EFBFBD>LQ<EFBFBD><EFBFBD><EFBFBD>:<3A><>h<EFBFBD>qң<71><D2A3>f<EFBFBD><66>? <20><><EFBFBD><EFBFBD>:<3A><>\\ѓ\r|<7C><>W3<57><33><EFBFBD><EFBFBD>7<EFBFBD>6<02>t<EFBFBD><1D><16>wתK<D7AA>ջ<EFBFBD>!<21>| c<><63><EFBFBD>M<EFBFBD><1D><19><><05><>a<EFBFBD><61><EFBFBD><EFBFBD>7cǁ,<2C><>A<>߇#<23><>#<23>E<EFBFBD><05><><EFBFBD><EFBFBD><03>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47>-V1<56><31>v<EFBFBD><76>4_ǜ<5F>f<<3C><>x<EFBFBD>.<2E><><EFBFBD>)<29>G<EFBFBD><!<21>?1<><31>m\$)<29>qB=0d<30>JOJc<4A><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43>g<EFBFBD><67>_i:\0Kܨ<05>Ia<49>jg<6A><67>F<EFBFBD>@&<26>Q<02>fu<66><75>2<EFBFBD>'<27>- M<><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<>G<EFBFBD>wI<15><><0B><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>=<3D>[?\n+s<>W<EFBFBD><57><EFBFBD>c<EFBFBD>\0e<EFBFBD>d<EFBFBD>y!LD<7F>Q<EFBFBD><04>\$)SY<<3C>*<2A><>.<2E><02>Mqآ<71>Nʇ<14>o<EFBFBD>l<><6C>%l1<6C>6<EFBFBD>_<EFBFBD><5F>q/]Ѷ<>Ip<16><><EFBFBD><EFBFBD>1DR<44><52>\ny<EFBFBD><EFBFBD><EFBFBD>(<1C><>V<EFBFBD><0B>f<EFBFBD>\nY\\<EFBFBD>鵄9<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P-<2D><><EFBFBD> <09>;uV<75><56>KD<4B><<3C><>0<EFBFBD><30>N<EFBFBD>@@<1E>&-<2D>z<EFBFBD><7A><EFBFBD>+<2B><><EFBFBD><EFBFBD>Dd<1A>+nl<6E><12><><EFBFBD>\n@J<><4A><EFBFBD>*l<><6C><18><08>7DM<44><4D><EFBFBD>=q<>\r<EFBFBD>!sqQ<71>¦<EFBFBD><C2A6>8^xP<78>T<0C>a<EFBFBD><61><13>I<12><>\r<EFBFBD>7h<EFBFBD><EFBFBD>5<EFBFBD>ȣt<EFBFBD>`yN9MA#<23>d<EFBFBD><64>ң<EFBFBD>@<40>Nܢ)<29>/\"T&<26>A<EFBFBD><41>`<13>\rig<EFBFBD>!H<>Nҋ(<28>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>ϟS<EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> J<><4A><EFBFBD> <20><19>O<><4F>BD<42><44>w N<>n><3E>y0<>)2<>u3)1<><31>\n<EFBFBD><04><><EFBFBD>0<EFBFBD>0<>/y<>ہ3H<33>}<7D>Ԋ<EFBFBD>n<1A><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD>PLI`<60>dZ<64>}<06>iO<69>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD>S=<3D>{B+##_<><5F>Kg<4B>~?<3F><1C><>2<>Q`<60>S<><53>'l\0<EFBFBD><01>![<5B>Ƕ<EFBFBD>R<EFBFBD> <09>ב<EFBFBD><D791><EFBFBD>Q<14><><EFBFBD><07>@ݸWI<57><49>l<EFBFBD>Ċ<EFBFBD><C48A>p愤ǧ]v<>|<12>(<04>O<EFBFBD>_<EFBFBD><5F>Zu<<3C>E<EFBFBD>`Q6.<2E>h,<2C>&N<>]3K<33><07>n<>[ȅ<04>LM<4C><4D><EFBFBD><EFBFBD><EFBFBD>Nj<4E><6A>:<3A>Q<EFBFBD><51><EFBFBD><14>*<11><>YxG3}@<40><>6<EFBFBD><36><EFBFBD>{\0hbQ`<60> <09><><EFBFBD><EFBFBD>kNS<7F>Ƕp><3E><>4c<34>0\r<04>c<EFBFBD><63>v<><76>=R8<1B>e<EFBFBD>@I#L<>=<3D>k֨<1E>(<1D>G<EFBFBD><05>\"ҁdav<61>`|<7C>s<1E><>ԒU<D492><55> ^<5E><>+TD<54>.7<EFBFBD><EFBFBD>D<EFBFBD>2T<06>=t<><74>.*<2A>]<5D>ϲTco+3~<7E><>!<21><><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD>MD<4D><07><>5*<2A><>G<EFBFBD><47>u\$<0F>t<><74>Kl<4B>J\$R<EFBFBD><EFBFBD> 0Q%1\rc<EFBFBD><07>!<21><><EFBFBD>>~9R<39>D<EFBFBD>Nϝ<4E><CF9D>xT<78><54>D<EFBFBD><44><EFBFBD>IgD\$D_<><5F> <09>J#<23><07><>i#<23><01>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a㠫<61><1F>%b2[<5B><><EFBFBD>R<02>[7<>&<26>U<EFBFBD><55><EFBFBD>f<EFBFBD><66>~<7E><><EFBFBD>)z<10><>Κu<CE9A><75><0B><><06>|<7C>\$<EFBFBD>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Wm+}<7D><><EFBFBD><EFBFBD>Os<4F><73>R@<40>A<EFBFBD><41>#i<>Y+<2B>##<23><>U<EFBFBD>ڂN<0B>d<EFBFBD>\0<EFBFBD>_<EFBFBD>5<EFBFBD> 0<06>6<EFBFBD>F<EFBFBD><46><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>)'ln<6C><6E>Y;Oە<4F><DB95>w<EFBFBD><77><EFBFBD>m<EFBFBD><6D><15><Rw߷<12>u4<75><34>N<EFBFBD><4E><EFBFBD><0E>vd<76>I<EFBFBD>Qm'<27><><04><>;0*<2A>\0=<3D><><EFBFBD>,JS<4A><53>?<3F>*<2A>:<3A>SJ0<4A>~IIA<A<13>d&- &<26><><EFBFBD><EFBFBD>R<52><7F>j@<40>59<35><03><>+<2B>C@<40>}<7D>\n=cC<><43>A<EFBFBD>(<28><><<3C><>P<EFBFBD><0E><>OX<4F>Ɏ<>Nkmn<6D><6E><EFBFBD>M<EFBFBD>Do<44><6F>[<5B>0!q<><71>\0<EFBFBD><EFBFBD>E\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>=<3D>N<EFBFBD>ݘ2Z'<27>5\"E<EFBFBD><14><>z)-<2D><>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>a&g<0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>Ǿ<<14>TқV<D29B><56><EFBFBD>QF<51>,x<><78><EFBFBD><EFBFBD>`%G<><0F><12>I<EFBFBD>w<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD>)<01><11>_<18><>uS!P뺈<50><EBBA88>d<>5ϏQ\"O<EFBFBD><10>F.<1C>?<3F>||\"<EFBFBD>)d<>PJO<4A>5<>~<7E>;*FjLt!c<>J<EFBFBD><1A>&<26><08><><EFBFBD>M<EFBFBD>ޥI<DEA5><10>2<EFBFBD>=M<><4D>IB<49>g\\ۂBuI1՚J<16><><EFBFBD>3<>?*<2A>c<EFBFBD><63><EFBFBD>aU<><55>!u攎U<E6948E><55>&<26>Aw<41><77>F<EFBFBD>JH<4A><48>R<EFBFBD><52>i\$<EFBFBD>ց<EFBFBD><EFBFBD><EFBFBD>~<7E> C<>l<EFBFBD>E\n3<EFBFBD><EFBFBD><EFBFBD>Fs<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8\"ǣ.<2E><>'.T<>|BQ<42>٥><3E><>s<EFBFBD>2<EFBFBD>4S<53><C294><14><>I<EFBFBD>N<EFBFBD><4E><EFBFBD>\\<EFBFBD>W<EFBFBD><EFBFBD><EFBFBD>%r<>u<0C><>&<26><>U}<7D><17>k<EFBFBD><6B>><3E><><EFBFBD>:<><DEB7><EFBFBD>=J<>sn<73><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>W<>\$Ri<EFBFBD><1C>RJH0Ɂ<30><C981>CFK<46><4B><EFBFBD><EFBFBD>Hj<>3?<3F>\$Kpz\"<EFBFBD>\0 .?<3F>1,<15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y?<3F>I\0<EFBFBD><06><06><><EFBFBD>¥<EFBFBD>@<11><14>X<>uV<04><10><>Uc,EXD<58>Ea걐<61>\"%D\n<EFBFBD><<3C><><EFBFBD>Yed<65> @(D<>\0<EFBFBD>Xȇg<EFBFBD><EFBFBD>ѕ<EFBFBD>@<40>V<EFBFBD>,<2C>Z 4<>e<EFBFBD>B<><12>D<EFBFBD>R/<2F>E<EFBFBD><45>`\"<EFBFBD>0<EFBFBD><EFBFBD>-TC<0C>u<EFBFBD> zA\"<EFBFBD>+W<>-<2D>H<EFBFBD>`<60><><EFBFBD>Ae<41>\\wJ&[<<3C>`ê<>%<25>Kh:<3A><>aĶInF<6E><46><EFBFBD>+<2B><><EFBFBD>0긥mK<1C><>ƲXP<58><50>[h0<68>9<EFBFBD>qeì,<2C>ڲ<EFBFBD>\$<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>d<EFBFBD>ˑXܻ<EFBFBD><1C><>j00e<30><65>_V<5F>\"Z<>C0+<2B><>eˮ<65><CBAE>Dz<44><7A>\$<EFBFBD><EFBFBD>M<EFBFBD>楥<08>E.v<<3C> t<08><><EFBFBD>+<2B>Y<EFBFBD>-<2D>]Q)0<><30><EFBFBD>;@?_.<2E><>0U<30><55>_<EFBFBD><5F>#<23><><EFBFBD><EFBFBD><0B>T<EFBFBD>|<7C><>\r<EFBFBD>\0T^<5E><>f<0W-؇<><D887><EFBFBD><EFBFBD><04><>eP<65>!<21><><EFBFBD><EFBFBD>\r #<18>2<EFBFBD>?Z1<>c<EFBFBD><63><1B><1B><><EFBFBD>[<18>Á\0<EFBFBD><0C><>+<06>,<2C>\n<EFBFBD><EFBFBD><EFBFBD>\\\"\"<EFBFBD><EFBFBD>Q<EFBFBD>&2ˇ<1A>i{<EFBFBD>J<05><>DW<44>K<EFBFBD><4B>2<EFBFBD><32><EFBFBD>J<EFBFBD>%<25>l<15>\0000<EFBFBD>a/ŀ+5<>s<02>*<2A>{`<60><>6<0C><>f\n<EFBFBD><EFBFBD><EFBFBD>CB<43>-06J<><05>P\\\n <20>h6pҌ<70><D28C>@<40>.<2E>3<19>3<EFBFBD>gJ<67><4A><EFBFBD>#1P<31><50><EFBFBD>pgZP<5A><50><EFBFBD><EFBFBD>s<EFBFBD>P<EFBFBD><50>^<5E>Jg<4A>N K<16>I<EFBFBD>\"Dl\"<EFBFBD>=<3D><>ApQ<08><><EFBFBD>=<3D>q<10>><3E>Bh<42>LCb<14>h<08>9<EFBFBD>y\\<EFBFBD>g)<05><><EFBFBD>6<EFBFBD>b<EFBFBD><62><EFBFBD>C?<3F><>lxZ1<><31>oݡ<>C<EFBFBD><43><EFBFBD>X<><58>A*<2A>ʍ<EFBFBD><CA8D>>b<><62><EFBFBD>Y<EFBFBD><59>xavVԙ<56>De<44>Q\0'sc8}<7D>CG8<47><38><16>'&XcF<63><46>\"<EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>?<3F>[tf<74><11>#LFr<46><72><1A>)<29><>i<EFBFBD><69>H<EFBFBD><48>f<><66><EFBFBD><1A>Dyi<79><69>1<EFBFBD><31><枅<>\">4<><34><EFBFBD><1F>e<Q#<23>~<7E>Hi<48><69>Nt!<21><><EFBFBD>\n&Dz.<2E><>H<EFBFBD><48><EFBFBD>\"<EFBFBD><EFBFBD>) <09><><EFBFBD>(%\"<01>0<EFBFBD><30>m<EFBFBD>u<EFBFBD>Y<EFBFBD><59><1E><>z<EFBFBD>g&<26><><EFBFBD>E<EFBFBD>6~[2<>b\0U <09>\nFE<46>J<0C>VbJ6<4A>2k<32>0<EFBFBD>Pȑ<]\$KZAs[C<7F>l<EFBFBD>3 <09><>g<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>8.5<18><1D>H<16><><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD>D<EFBFBD>r&}<7D>.k<>ܭ<EFBFBD>|L<>QE&FLI<4C>\"<EFBFBD><EFBFBD><EFBFBD>0kox<EFBFBD>#<23><12>7D<04><>!V9\rq<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>y<>[<5B><18><>Z<><5A>*<2A>mȔÚ<17><><EFBFBD>\\<EFBFBD>K<EFBFBD> <1D><>dzd<7A>o<EFBFBD><6F>*<2A>\"<06><06><><EFBFBD><EFBFBD>y<EFBFBD>Q<EFBFBD><51>ٻ0-#<23><>+<2B>'h<0F>]<5D><>/<2F><>Ȧ<EFBFBD><C8A6>F<EFBFBD><46><EFBFBD><EFBFBD>Ċ7y(S<>\$aM<EFBFBD>I\$<EFBFBD>\$uMI<1F>+93<0B><>/<2F><>ʎ<EFBFBD><13>\r9<EFBFBD>N<><14>L<EFBFBD>!<21>ː<EFBFBD>* <16><><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<0E>!<21>4<EFBFBD>c<><63>\\<04><>X<>8 u<C2A0>_<EFBFBD><5F><EFBFBD><EFBFBD>6<EFBFBD>0<EFBFBD><1D>;<3B><><EFBFBD><EFBFBD>O<17>&:<3A>&.<2E><11><>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>0<EFBFBD>eE<65>ѵȗp><3E><>Fa<46>Gz<47> <09><14><>mP<6D>=t<><74>i<EFBFBD><69><EFBFBD>V}<7D><1F>|<7C>}MP(<28>%<25><>e8<>u=6<>2<EFBFBD>I<EFBFBD><49>q<EFBFBD><71>f<17>f<7F>^MK<4D><4B><EFBFBD><EFBFBD><EFBFBD>><3E><>В\r<EFBFBD><EFBFBD><EFBFBD><07>^<5E>7d<37>vR<76>m <09>I<EFBFBD>H<EFBFBD><48>9<EFBFBD><39>>>]s<>R<EFBFBD> `<60>s<EFBFBD>gU<67>;<3B><>q<D4B0><12>%<25>!<21><>8<EFBFBD><38><06><><01>r<EFBFBD>D<EFBFBD>+<16>,<2C>nx͔5<CD94>Ȁ<17>]<5D>:J<>Դ<>I<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>Vr<01>!ͦ<><CDA6>3<EFBFBD><33><EFBFBD><EFBFBD>Vm)<29><>\$@E`<60><0E>,<2C>\0<EFBFBD>\0<EFBFBD><01><06>II<49><49>\0<EFBFBD><01>@s<>f<EFBFBD><66>8\0p\0<EFBFBD><01><08>\0005\0d\0<EFBFBD>pd<EFBFBD>\0<06>\0\0005<EFBFBD>2\0<EFBFBD>pD<EFBFBD> <09><><EFBFBD><EFBFBD>\0007<EFBFBD>2m<EFBFBD><01><> <09><>\0N%<25>38<33><01><><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD>N&<26><>8p|<7C><><EFBFBD><EFBFBD>ۀ\09<EFBFBD>f\0<EFBFBD><01><>)<><C293>NB<4E><42>\0<EFBFBD><01>`<13><><1B>\0d\0<EFBFBD>k4<EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD>&<26><02>;8<><01><><EFBFBD><EFBFBD>N;\0o8<EFBFBD>p<EFBFBD>T0s<>' <09>R\0g8<EFBFBD>q<EFBFBD><EFBFBD><EFBFBD>3<><33><17>\n\0s9Fp<<3C>P<13><><1E>d<EFBFBD>)8<01><>9<EFBFBD>3<EFBFBD><33>N4<>d<01>9<>s<EFBFBD><73><19><01>}9<>i<><13>g2N<32><4E>\0<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><13><>\0NH\0i9<EFBFBD>s,<2C><><EFBFBD><13><>L<EFBFBD>1\0b\0<EFBFBD>t<<3C><>3<><33>;Nf<4E><66>94<01><><EFBFBD><EFBFBD>S<EFBFBD>@\0005<EFBFBD><EFBFBD>:<3A>p<1C><><EFBFBD>Ӓg%<25><01><>\0<EFBFBD>p<EFBFBD><EFBFBD> <09><>\0Υ<>q8<71>t<EFBFBD><74><19>3<EFBFBD>g<07>Y<EFBFBD>^\0<EFBFBD><01><>I<EFBFBD>3<EFBFBD>g&N<><4E>i9:p<><70><EFBFBD>`\r p<>c<EFBFBD> \0<EFBFBD>rL<EFBFBD><EFBFBD><EFBFBD><13><>Μ<>g8p<01><>I<EFBFBD>S<EFBFBD><53>oN\r<EFBFBD><EFBFBD>8:q<><71>y<EFBFBD><79><EFBFBD><EFBFBD>f<EFBFBD><14><>\0<EFBFBD>u<0C> <09><13>g[N<><4E>:<3A>q|<7C><><EFBFBD>S<EFBFBD>g\rΔ<EFBFBD><EFBFBD>:2q<32><71><EFBFBD><EFBFBD>Ӯ<EFBFBD><1E>^\0s:<3A>q<EFBFBD><71>I<49>'E\0006<EFBFBD><EFBFBD>:t ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1A><>\0<EFBFBD>\0<EFBFBD> \$<EFBFBD>Y<EFBFBD><13><>N<>\0i:<3A>w,<2C><><EFBFBD>s<EFBFBD>g\n\09\0i:<3A>q<EFBFBD><71><EFBFBD><EFBFBD>eP<65><50><EFBFBD>G\0i8*wl<77><6C>ls<6C><73><EFBFBD>O2<4F><32>9q<><71><EFBFBD><EFBFBD>S<EFBFBD>g<EFBFBD>N<EFBFBD><4E>8<>y0i<><13>\0O!<21>Q8Fq|<7C><19>ӓ@Ω<>=;<3B>u\\<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>gy<EFBFBD>Q<EFBFBD>\0<EFBFBD>q<EFBFBD><EFBFBD>Y<EFBFBD>S<EFBFBD><EFBFBD>N<><4E><EFBFBD>:<3A>s4<73>)<29><13>'<1D>4<EFBFBD><34>8<EFBFBD>s<1C> <09><13>g<EFBFBD><67>\0i8s <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><16><>;<3B>y<EFBFBD><79> <09>3<EFBFBD>g\\N<EFBFBD><EFBFBD><EFBFBD>9 <01><>9<EFBFBD><39>'<0B>?\0i;<3B>u<EFBFBD>)<29>3<EFBFBD>gi<67>V<EFBFBD><56>:^{T<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>g\"<EFBFBD>c<EFBFBD><EFBFBD>\0<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>'<27>N<EFBFBD><4E>+=\"w\\<EFBFBD>yɳ<EFBFBD><EFBFBD>S<EFBFBD><EFBFBD>=<3D>r|<7C><><EFBFBD><EFBFBD>g<>κ<EFBFBD>;<3B>q<1C><>ީ<EFBFBD>g5<67>o<EFBFBD>=2zl<7A><6C><EFBFBD><13><><EFBFBD>N<15>q:\"w<EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD>%OB<4F><42>;rq<72><71> <09>s<EFBFBD><73>e<EFBFBD>5<EFBFBD><35>:vvL<76><4C><EFBFBD><13><>f<EFBFBD><66><EFBFBD>#:Fu<14>i峥g<E5B3A5>N<EFBFBD><4E><EFBFBD>8<EFBFBD>{4<EFBFBD>9<EFBFBD>S<EFBFBD>'IN <20>:<3A>x<EFBFBD><78>9<EFBFBD><39><EFBFBD>'/<2F>Ü8<>|\$<EFBFBD>9<EFBFBD><13><>J<EFBFBD>@<40><><<3C>x<<3C><><EFBFBD>3<EFBFBD>'DNn!=jq,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bOr<4F><72>m<EFBFBD>t<EFBFBD><74>)<29><><EFBFBD>'0+p<><70>8<EFBFBD>{d<EFBFBD><EFBFBD><EFBFBD><13><>%Ͻ<>I>nu<6E><75><EFBFBD><EFBFBD>s<EFBFBD>h\0P<1C><>:<3A> ,<2C><><EFBFBD>s<EFBFBD>g<1F><>&w><3E>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P\0<EFBFBD>7=v<><76><EFBFBD><13>(<03>9<EFBFBD>,\0<EFBFBD>xt<EFBFBD>y<EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>Ϛ<EFBFBD><<3C><>y<>3<EFBFBD><33><16><><EFBFBD><EFBFBD>;6<>\\<EFBFBD>Y<EFBFBD>ӣ<EFBFBD>O<><4F>a9Vut<75><74><EFBFBD><EFBFBD><EFBFBD>(!N<><4E> >{,<2C><>ͤq<CDA4>\$P<0F>Y<vs<76><73>i<EFBFBD>3Ч<33>N㞱>r<><72><EFBFBD>S<>'<27>ϫ<EFBFBD><CFAB>@~x<><78> <09>s<EFBFBD>g<EFBFBD>π#<23>A\ns\\<EFBFBD>Z<13>'<27><><1F><>?J}녒4<17><>N<EFBFBD><4E>9*{<EFBFBD><EFBFBD>I<EFBFBD>s<EFBFBD>'Tϛ*<2A>;<3B>rl<72>y<EFBFBD>t<06>N<1F>!A<>vt<76>9<EFBFBD>3<EFBFBD>g<EFBFBD>N<EFBFBD><4E>IBZx<5A><78>*<13><>EP}<7D>,m<><6D>\\<EFBFBD><EFBFBD><EFBFBD>Ӗ(U<>L<EFBFBD><4C>@<40>qL<71><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VΝ<56><CE9D>>*<2A><><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>r<EFBFBD>;^xt<78><74><EFBFBD>3<EFBFBD><33>3<EFBFBD>.<2E><>AV<41>\$<EFBFBD><EFBFBD>tg<>Τ<EFBFBD>\rB<12>L<EFBFBD>:<13>gг<>;><3E>u<04><><15><><EFBFBD><EFBFBD><EFBFBD><CE82>9.<2E>|<7C>iȳ<69>'OZ<4F>Q@<40>tD<74>Y<EFBFBD><13>@1P<31><50><EFBFBD>><3E><><EFBFBD>i<>s<EFBFBD>'iи<69>8<7F>~u<05>(eл<65>)Bʅ<42><CA85><EFBFBD><EFBFBD>f<EFBFBD><66>'<27>|<7C><>><3E>vt<76>Z<0E><><EFBFBD>K<EFBFBD>B<EFBFBD><42>?uE)<29><13>h:<3A><><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>Ô8g<38><67>H<EFBFBD><48>@fx<1C><><EFBFBD>3<EFBFBD><33> Ψ*<2A>:<3A><><EFBFBD><EFBFBD>YƓʧ*<2A>_<EFBFBD><5F>9<EFBFBD>pL<70><4C><EFBFBD>%<25>P<07>oCZ<43>-*<1D><><EFBFBD><EFBFBD>OTn!>.z<><7A>y<EFBFBD>)<29><>Oh<4F>3:fqD<71><44><EFBFBD><EFBFBD><04>=<3D><18>7C*w<><77><EFBFBD>!<21><><EFBFBD><EFBFBD>O<01>_DvrT<72>y<EFBFBD><0F><1A>Ӝw9<77><39><04><><EFBFBD>s<EFBFBD>hM<68>7<EFBFBD>Q;<3B><>u<12><><EFBFBD><EFBFBD>gNʝ;8<>M<0C>\$<EFBFBD><EFBFBD><EFBFBD>ZP\0<EFBFBD>h\0ƀ<EFBFBD><EFBFBD><EFBFBD>(<28><>'<27><><EFBFBD><EFBFBD>[>Rt4<74> <09><><EFBFBD>'<><7F><EFBFBD><EFBFBD>><1E><><EFBFBD><EFBFBD>-<2D><>'<27>т<EFBFBD><D182><|<7C><>z<13>ԧdO<64><4F>9<<3C>r<EFBFBD><72><EFBFBD>(<28>\$g^<5E>a<EFBFBD><61>DV~u<12><><EFBFBD>3g\\Q@<40>%@R<><52><0B><>S<EFBFBD>(,Q<1A>YF<59>}<7D>T:<17>[<5B><>O<EFBFBD><4F>B<>rhY<>M(<28><>i<EFBFBD>)><3E>{<EFBFBD> <09><>HH<48>P.<2E>GF&s<>i<>TXg<58>OC<4F>F<><46><0C><>sب<73>N<1D>)=<1E>X<03><><EFBFBD><EFBFBD><EFBFBD>Q͠8um<14>;3<><33><EFBFBD>N<1C><>?<3F>pL<70><4C><EFBFBD>3<EFBFBD>'<27>Q;<3B><>9B<39><42><EFBFBD>0<><30>g~QJ<51>5<V<><56><02>s<>h<1F><0F>;<3B>|\\<EFBFBD>:<03><><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD>E<EFBFBD><45><EFBFBD><0C>><3E>6<EFBFBD><36><EFBFBD>\n<EFBFBD><EFBFBD>><3E>r}<13><><13><>֫k\0<EFBFBD>C<06><><11><>S<EFBFBD>'O<05><>9.<2E><><EFBFBD><19><13>gi<67> <09><>Fp\$<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>OC<EFBFBD><EFBFBD><J<4A>j<06><>@ϋ<>/=v<><76><EFBFBD><EFBFBD>0S<30><53>4<EFBFBD><18>:<3A>~t<><74><EFBFBD>T&'R<1D><>: abm<62><6D><13>gxN[IC4<43>5Y<><59><EFBFBD>h<EFBFBD>NO<4E><4F>H<EFBFBD>w<EFBFBD><77><EFBFBD>;<3B><18><>N<EFBFBD><4E><EFBFBD>9<02><><EFBFBD>**s<><73>;Β<>e=&s}<15>K<13><><EFBFBD><EFBFBD>I<EFBFBD>':\n`I㳓<49>0<02><1B>I<EFBFBD>zl<7A>:<0C><01><>N<EFBFBD><4E>I֎<49>JI<4A>|<7C>yOϞ@<40><>5<1C><>3<EFBFBD>'<27>N<0F>EV<45><14><><EFBFBD><EFBFBD>(<28>N4<4E><34>=<3D>{<EFBFBD><EFBFBD><EFBFBD>+3<>h<EFBFBD>ғ<EFBFBD><D293>>:<3A><<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\QW<EFBFBD><EFBFBD><<3C>u<EFBFBD><75>Z<1A>b'<1F>5<EFBFBD>Fn<46><6E>:<15>v<EFBFBD>Ѡ<><D1A0>? \$<EFBFBD><EFBFBD><EFBFBD>49<EFBFBD>%<25>p<EFBFBD>?=<16>\$<EFBFBD><EFBFBD>s<><73>jN,<2C>:<3A><><EFBFBD><1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51>Am<0B><>4<06><>Pģ?*q<>,<2C>B<EFBFBD>0gP<><50><EFBFBD>@V|<7C><>\nW<EFBFBD>R)^<5E>I<><49><EFBFBD><EFBFBD><EFBFBD>t<>i^<5E><03>=<3D>t<EFBFBD>%<25>\"4<EFBFBD><EFBFBD>)Oo<4F>\0<04><>m\n<EFBFBD>G<EFBFBD><EFBFBD>'^O❟><3E>|<7C>J\n<EFBFBD><EFBFBD>h<EFBFBD>Ѯ<EFBFBD><EFBFBD>Bړ<EFBFBD><EFBFBD>zW<EFBFBD><EFBFBD>'<27>O<EFBFBD><4F>-<1D><>9<EFBFBD><39><EFBFBD>Q<>=8p<38><70>yC\r&O̿<4F><CCBF>/:<3A><>Vљ<56>\0 ~<7E>BY<42>S#e<><65>-<2D><>7f<37>L<EFBFBD><4C>P2˦Q <09><><EFBFBD>.V<><56>ɘ<EFBFBD>2<EFBFBD><32><EFBFBD>&Y<><59>I6\\<EFBFBD><EFBFBD>ِBfc/ޙ<>%Yj<59>[#<23><>f<EFBFBD>͚_<CD9A>.<2E>8<EFBFBD><38>!ޱ<>cfW%<25><>?F6<46>R%<25>2a\nښ4<>@f)<29><>v<EFBFBD><76><0E><>;<3B>k@R\0<EFBFBD><EFBFBD>L<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>{6<EFBFBD><EFBFBD>,<2C>%<25><><EFBFBD>e<EFBFBD>\r@<40><>y\nV鱁<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>L<1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>=M<><4D>c<1D>24<32><0E>\nanN\$d><3E>2<EFBFBD>̚=4<>_<EFBFBD>N&\$u8Ə<EFBFBD><EFBFBD><1B>y.<2E><><EFBFBD>+.iPVi<56>1<EFBFBD><31>nŞ<6E><C59E>9<EFBFBD><39>l<EFBFBD><17><13>g<EFBFBD>ʁeL<65>9<EFBFBD><39>E<EFBFBD><45>@o<(B<>l<EFBFBD><6C><EFBFBD>n<EFBFBD><6E>\"<EFBFBD><EFBFBD>_<EFBFBD>\nҝ@<40><><EFBFBD>mn<1E><0F>`<60>\n<EFBFBD> <09>;<3B>pM <09>H~͘<>i9<69>T<04><19><>iU*<2A>n+\0<EFBFBD><EFBFBD><16><>0Z<0F>OA<4F><41>-zz<7A><19><><EFBFBD><EFBFBD><EFBFBD><08><11><05>\rH<EFBFBD>4DKc<EFBFBD>M<EFBFBD><EFBFBD>3<><33>D<EFBFBD>I<EFBFBD>Su\0uO<EFBFBD>\nt3<EFBFBD><14>W<EFBFBD>0<EFBFBD>ftɬ<1A>3<EFBFBD><33>r<EFBFBD>\$<0B><><17><15><>?<3F>jNMѶ \0В<EFBFBD><EFBFBD>5<><35>Vi<56><69>4b<34><62><0E>T6<54>0<EFBFBD><30> <09>T\nd<EFBFBD>PY<EFBFBD>c<>kQA<>1X0<58><30><EFBFBD><EFBFBD>K<EFBFBD>T4<54><1C>\"eB<19><><T\$<EFBFBD>I<EFBFBD>S<EFBFBD>]V--<2D><>]p)<29>!*<14>g&M<>?<3F><>qA<>1<EFBFBD>fp\0<EFBFBD><EFBFBD><EFBFBD>0 <09><0C>!<21>5<1C><1F><14><14>R<EFBFBD>Xҳ\0jL<EFBFBD>(<28><>&i<><69><EFBFBD>6+e@!<21><>w!䭒TCRb}P5<50><35><EFBFBD>v<EFBFBD><76>^<5E><><EFBFBD><EFBFBD>f<EFBFBD>̝<EFBFBD><[v<>mmL<4C><D881><EFBFBD>P<EFBFBD><50>}8&#<23><>*8<><38><EFBFBD> <20><><EFBFBD><EFBFBD>ډu<1B><>\\<EFBFBD>5Q<EFBFBD>H<EFBFBD>#X<><58>7*<2A>`+e<>l<EFBFBD>V<><56>d<EFBFBD>Lŗi8ꑌy<EA918C><79>1@<40>qQʙ<51>I*<2A>\$<EFBFBD><EFBFBD><EFBFBD>T*c<>MٕC<1E>0<>Ya<59>eq<05><><14><><EFBFBD>h<EFBFBD><68><EFBFBD>l<15><>[,U<><55>)<29>GԨaǵ<><C7B5>2\n<EFBFBD>칃<EFBFBD>)D<>^<5E>UE<55><45><EFBFBD>(j35<33>YO4l<34><6C><EFBFBD> f@§+<06><><1A>{6<EFBFBD><0C><><EFBFBD>Î<EFBFBD>0\rje<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>Fd<EFBFBD>%w^\0<EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>^<0C><><EFBFBD><EFBFBD><EFBFBD>'\$<EFBFBD><01>3)P0<50>9Y<39><59>Y\0<EFBFBD>P,<2C><><EFBFBD>-<2D><17><15>^<5E><><05>Pd`̷<><CCB7><EFBFBD><EFBFBD>j<EFBFBD>O)b<7F>%R<>%Y%<25><><EFBFBD>A<0B>9y<39>5<><35><15>e<EFBFBD><65>Z\n<EFBFBD>OZ<EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>MTN<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>5E<EFBFBD>\0BԾ.;I<19>̃)<29>TF<54><08><>3;<3B>sP<73><50><EFBFBD>/8<><38>T<EFBFBD><54>|*rh<72><68><EFBFBD>(6\$\0<EFBFBD>py?~<7E>L\0<15>Ϫ\r<08><><EFBFBD><13><EFBFBD><7F>`<60><>\0<EFBFBD>L<EFBFBD><EFBFBD>LuO<75><1D><><EFBFBD>eTB<54>\$#<23>0<EFBFBD>\0*<2A>0[<5B><>U)<29><>-P\\<EFBFBD>a<>T*<2A><>M<><08><><EFBFBD>(jt2<0C>%M2<4D><32>Ƈ<><C687>`<60><><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>c&0<>m<EFBFBD>*<2A><>ff#T.`9<>L<13><>U<_GL<47><4C><EFBFBD>3<EFBFBD>I5&j<>B<EFBFBD>T<EFBFBD><54>U<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>&<26>_<EFBFBD>]Q<><51>K<06><><EFBFBD>X<EFBFBD>Ջ<EFBFBD><D58B> <09>eS<65>a<EFBFBD><61>*<2A>3fORU<52>Iv?<3F><>aՑf<D591>N<05>z<EFBFBD>F-,<2C>Y<EFBFBD><59> <20><>Vv#<23>Y<EFBFBD><uO!BU<42><55><16>X<02>TJ<54><4A>]<5D>rUC'<27><><EFBFBD>V<EFBFBD>Tz<54><7A>]<5D>EU<45>`3V<33>q=(>Um*<2A><>7<EFBFBD>7W0<57><30>36<33><36>i<EFBFBD>8UԘ3WReS<65><53>ui<75>!<21><c<>.]@<40>d<EFBFBD>`X<><04>_<EFBFBD>ȝ<EFBFBD>L7*<2A><><EFBFBD><EFBFBD>\0G'<14>F%P<>Ot<4F>jׁ<6A><D781>TPmQj<51><10>`<60>ӈ<EFBFBD><D388>NF<4E>}_hX<68>G<EFBFBD><47><EFBFBD><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>(v<><76><EFBFBD><EFBFBD><EFBFBD>S˅<53><CB85>B<EFBFBD>U`<60>A<EFBFBD>KK<4B><4B>/<2F>W<><57>r<EFBFBD><72>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>d<><1F><><EFBFBD>=:<3A><><EFBFBD><EFBFBD><EFBFBD>V<12><>Ȗ<EFBFBD>[<5B><><EFBFBD><EFBFBD>j<EFBFBD><6A>H<EFBFBD> <20><16>T<1A><><EFBFBD><EFBFBD>J<EFBFBD>y<EFBFBD>F<EFBFBD>Ϊ<EFBFBD>}<7D><>̏<EFBFBD><CC8F>UW<55>aW<61><57><EFBFBD>-<2D>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>\$%c<><63><EFBFBD>[*<2A>2<EFBFBD><32><EFBFBD>X<EFBFBD><58>=d<><64>,<2C>*<2A><>7b<37>Uª+(j<><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>Yr<59>ueʯ<65>\n<EFBFBD><EFBFBD><EFBFBD>:<3A>mYB #<08><>L<1B><><EFBFBD>\\<EFBFBD><1A>F<EFBFBD>}dZ<64><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<><13>Y<EFBFBD>˕f<CB95>;<3B><><EFBFBD>= <09><><EFBFBD>Z<EFBFBD><5A>em*<2A><>h<EFBFBD><68>V<EFBFBD>L<EFBFBD>h&K5k+<1D><><EFBFBD>\rj<>%e<>oU=a<><61>8<EFBFBD><38><07><><EFBFBD>[<5B>\\<EFBFBD><EFBFBD><EFBFBD>۱<EFBFBD><EFBFBD><EFBFBD>W<01><>U<EFBFBD><55>u<EFBFBD>k><3E><><EFBFBD>6<EFBFBD><36><EFBFBD>(<>c<10><><EFBFBD>C<1B><>Y<EFBFBD>x<05><>0<EFBFBD>k<1D>խ<1E>j<EFBFBD><6A><<3C>{<15>kG<6B>ۭWv<57><76>]<5D><>,<2C>*V\\F\rYՉ<EFBFBD>^<5E>l<EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><>lڿ~<7E><>A<EFBFBD><41><EFBFBD>W<EFBFBD><57><EFBFBD>`5<>a<EFBFBD>4ƪ<34>[m<>%`J<><10>W<EFBFBD>V<08><>F<>]b<>T_+\n/<2F><><EFBFBD>r<><72>S:ÕM<C395><4D>V!f<><02>3x25S+OV+^<5E>X<EFBFBD><58>e<><65><10>+V3<56><33>~<7E><>z<>̴k}1<1C><><EFBFBD>&<26>nv#<23><><EFBFBD>Ug\0<EFBFBD>\\5<EFBFBD>%qI<71><49>+<2B>W<19><>UȬ<55><0C><><EFBFBD>Z<EFBFBD><5A>W<02>gYV<59>&45<34>*LVg<56><67>V<1E>Z<EFBFBD><5A>אs<D790>*6`<60>IRڹK%<25><><EFBFBD>e<18><><EFBFBD><EFBFBD>9Va~<7E>s<EFBFBD>ϕ<EFBFBD>+C<><43><EFBFBD>RZ<52>S<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ևHZ%<25><><EFBFBD><EFBFBD> \$<EFBFBD>+{<EFBFBD>ޭ<10>݉<EFBFBD><DD89><EFBFBD><12><>*<2A><>><3E><>Vƺj<C6BA><6A><EFBFBD><EFBFBD><EFBFBD>kLU<4C><55>T˚}i<>,<15><>V<><56>\\<EFBFBD><0F>t<EFBFBD><74>̄+<2B>W-<2D><><07><>}wx3<78><33><EFBFBD><EFBFBD><EFBFBD>sZ<73><0B>l\n<EFBFBD>5<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD>g%\\<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD><0C>Y\nV<EFBFBD>_<EFBFBD><EFBFBD>i<EFBFBD>P<EFBFBD>t<EFBFBD><01>C<><43>J<EFBFBD>Y<EFBFBD><59>/<2F><>U<EFBFBD><EFBFBD>g!^l<02><05>:+ԃ<>\0I\0<EFBFBD>^<5E><><02><1A><>3W<33>A<EFBFBD>_^<5E>iZ&b<><62><03>U<EFBFBD>+E^<5E><><EFBFBD>Ba\0<EFBFBD>\n<EFBFBD><EFBFBD>#<23>^<5E>Z<>c2g<>ښS{\0<EFBFBD>Ę<EFBFBD><EFBFBD>7D<><0F>P/<2F>hum}ѯ2Ȟ\0<EFBFBD><EFBFBD><EFBFBD>|<7C>Ҋ<EFBFBD><D28A><EFBFBD><EFBFBD><EFBFBD>5!<21><02><><EFBFBD><EFBFBD>_\"<EFBFBD><EFBFBD>V<14><17>`S<><0F>Ђ<EFBFBD>59f5<> <09>Ua*|<7C><>A<EFBFBD><41><EFBFBD><EFBFBD>Z<EFBFBD>ף<EFBFBD>10<31><30>ez<65><7A><EFBFBD><EFBFBD><EFBFBD>)Će<C486>^ѐ<>@X-<2D><>k<EFBFBD>Y&<26>á<EFBFBD><C3A1><EFBFBD>z<EFBFBD><7A><EFBFBD>*<2A>3\0<EFBFBD>β<EFBFBD>-|ʅ<><CA85>,Th<54>1Lb<4C>-1<><31><EFBFBD><EFBFBD>*<2A>\0_^<5E><15><>.f<><15><><EFBFBD><EFBFBD>fOF<4F><46><EFBFBD>9<EFBFBD>QbKX*f<>Z<EFBFBD> u<z<><7A><EFBFBD><EFBFBD>(<28>AiON<14>}<7D>5}<7D><><EFBFBD><04>k1:<3A>%q<><08><04>X<EFBFBD><58><EFBFBD>y2<01><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XGU<47><55><1A>Sc<53><06> <09>X;`<60>\n<EFBFBD><15>\n<EFBFBD><EFBFBD><10><>S¬hP<>emzg<7A><67>+x<><78><EFBFBD>az<61><7A>><3E>d<>,/<2F>j'0<><30>m{j<EFBFBD>T<EFBFBD>l2<EFBFBD>Y+Ea<45><61>=_k\r<EFBFBD>aS<61><53><EFBFBD>j<EFBFBD><EFBFBD><EE9B95>X,7,=uj^VΥs<<3C><>)YP4<1C><>f<><15>;<11>,<<3C>5+<2B>b><3E><><EFBFBD>5<EFBFBD><35><EFBFBD>@0<><30><EFBFBD>͡<EFBFBD><CDA1>@<40>n5<6E>&ءd<D8A1><64><EFBFBD>TsV<73>V(<28>(3<><33><EFBFBD>X<EFBFBD>٭<EFBFBD>Ƒ<EFBFBD><C691><EFBFBD><EFBFBD>X<EFBFBD><58>d )<29><><EFBFBD>6)ړX<DA93><58>&ò<>xv'<15>a<EFBFBD><61><EFBFBD><EFBFBD>c<0E><>W1,\\<EFBFBD>bX<EFBFBD>h<EFBFBD>ae<EFBFBD><EFBFBD>@<19><><EFBFBD>X<>&ocT<63><54>)vlШ<6C><D0A8>W0a_P\0?%P\\<EFBFBD><EFBFBD>lqV<EFBFBD><EFBFBD>(ˬ><3E>=K<15>+RXب}<7D><><<3C><><EFBFBD>W<>S<EFBFBD><53><EFBFBD><EFBFBD>ҝ5VʁD<CA81><44>z<EFBFBD><7A>'<27><12><>';k<><6B>5T<<3C>&Nx<4E><78><EFBFBD>5*<2A>{<EFBFBD> <09>r<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>f<EFBFBD>,ܙa3<61><33>6 %<25>P~\0 <09><>I<EFBFBD>X<EFBFBD>e@<40>DA><3E><><EFBFBD>:53q<33><71><16>-<2D><>c5 <1A>6<11>V<EFBFBD>٘<EFBFBD><D998><EFBFBD><EFBFBD>l<EFBFBD>+<2B>0<EFBFBD><30>eca<63>͓<EFBFBD>\"V><19><>бQb<51><62>5<EFBFBD><35>7<EFBFBD>ٚ<EFBFBD>/<2F>f3_<33><02>;<3B><>l<EFBFBD>YG<59>P<><50>3*\nv+<2B><><EFBFBD><EFBFBD>\ni><3E><>t:<3A><>V,<2C><>@'d<> w\\<EFBFBD><EFBFBD>YKVO_F<04><>+\n<EFBFBD><19><>f<0F>&V<><56>EP+<2B><>³<EFBFBD>l`L<><4C>\"<EFBFBD>U<EFBFBD><EFBFBD>N@+<2B>8<EFBFBD><38><EFBFBD><0E>0<02><>j<EFBFBD><6A><EFBFBD>/<2F><><EFBFBD><EFBFBD>z<18>R<EFBFBD>k<EFBFBD><6B>+\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʞ<EFBFBD>p(7<><37>Y<EFBFBD>/sl<73><6C>v̑6k\n<EFBFBD>P<EFBFBD><EFBFBD>Xɳ8<EFBFBD><EFBFBD>%<25><02>VfI<66><49>س?aˡC<CBA1>J;+<2B><>X<EFBFBD><58><EFBFBD>V<EFBFBD><1D><> <09><><EFBFBD>+<2B>*<2A><><EFBFBD>A3<05><01><>ڙ<EFBFBD>U<EFBFBD>=f<><66><EFBFBD>z<>`<1A><><0F><>\0<EFBFBD><EFBFBD>\$<EFBFBD>;<3B>aZ<61><5A>(<28>Mc<4D><63>[d<><64><EFBFBD>s<03>X<EFBFBD><58>`?<3F>'<27>Qv2@(\0W\0<EFBFBD>f<1A>c{;<3B>&<26>s/<2F><>?c%S<><53>V\"I<EFBFBD><EFBFBD>?d<><64>ĭ<EFBFBD>{F25+<2B>sT<73>eP<65>Q<EFBFBD>-<2D>rp<72><70>`lWA<57><41>WCR<><0C>*O<><4F>`<60>2<EFBFBD><32>:<3A>`<15><>0<EFBFBD>b<EFBFBD>͚ͥ1vok<6F>k<EFBFBD><6B>@<40><><EFBFBD>u<EFBFBD>=<3D>k462C<32>AʯgT<67><54><EFBFBD>v[<15>HĒ<48>ah<61><68>%<25>:<3A><><EFBFBD><EFBFBD>N<EFBFBD>~a:(<28><10><06><>AZ06<30>k<EFBFBD><6B>mB<6D><42><EFBFBD><EFBFBD>!<01><>jy<12><05>:<3A><> <09><><EFBFBD>Gn<47><6E><EFBFBD>+@<40><><EFBFBD>l<EFBFBD><6C><EFBFBD>\0<EFBFBD>M0<02> <09>I<EFBFBD>ͫóʹ<C3B3>T<>C <09>RMV<4D><56>0<EFBFBD>aMih<69><68><EFBFBD><EFBFBD>:vh<76><68>Za'<27>^<5E><>+IK*vq<76>A<13><0F><><EFBFBD><EFBFBD><EFBFBD>Gʜ<47><CA9C>N<>r'<14>\nӅ<EFBFBD>P <09><>ت<D8AA><D7B9>ęHͧ{N<EFBFBD> <20>HX<48><58>}d<12>}2<><32><EFBFBD><EFBFBD><EFBFBD>W0<57><30>н<EFBFBD><D0BD>5N<35><4E><EFBFBD>WI<57>Zs<0F>i<EFBFBD><69>tZ<>L<EFBFBD>MM<><4D><0C>µX<C2B5>4Ub<55>l/<2F>8pM2<4D>5<EFBFBD>ʜ<10><><EFBFBD>V<EFBFBD><56><EFBFBD>ev<65><1D><><1C><><EFBFBD>+,<2C><><EFBFBD><EFBFBD>I'8C<><10>T<><54>l<01><><EFBFBD>F@<0C><>m<19><>\n<EFBFBD>r<EFBFBD>8X<>Sj<53> <06><><02><>X<>nh<6E><68> <20><1D><><EFBFBD>XB<58>R<>p<EFBFBD><70>MՖg7]<14><>ĮW<C4AE><01>%<25>M<EFBFBD>hU<`<0B><03><>4p<0C><><EFBFBD>1<EFBFBD>\\<EFBFBD><EFBFBD>*<2A>]<5D>k^<12>cGi]<5D><1F>| \$<EFBFBD>*p0<0C><0B>!Qx<51>\0ؖHy<EFBFBD>w<EFBFBD><0B><>\0002\0^<01><><EFBFBD>Yk<15><><06>\$<EFBFBD>F<EFBFBD>K<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>n<EFBFBD><EFBFBD><EFBFBD>,<2C>3lR<6C>ݱ`<60>@\rm<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*<18>,kd<6B>_<03>[\0ol<EFBFBD><EFBFBD>=<3D><><16>-<2D><>(J\0<EFBFBD>٢<EFBFBD><EFBFBD>c<EFBFBD>I\0<EFBFBD>[9^:<18><><04><>g<EFBFBD><67><EFBFBD>:<3A>%!^Z<><05><>b<EFBFBD><62>Q,[H<>Ml<4D><6C>-<2D><>i<EFBFBD><69>-<2D>[A<>ImNٍ<4E>eV<65>-<2D>[A<>_mr<6D>U<EFBFBD>\0\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[?<3F><>l<EFBFBD><6C>-<2D>C<EFBFBD><16>m<EFBFBD><6D>-<2D><><1E><>m<EFBFBD>Y<EFBFBD><16>š[I<><49>m<EFBFBD><6D>m<EFBFBD>[i<><69>@/<><CE82>m<EFBFBD>ص<EFBFBD><D8B5>n<EFBFBD><6E>-<2D><>f<EFBFBD><66>m<EFBFBD><6D>յKb<4B><62><EFBFBD><EFBFBD><EFBFBD><1A><>n<1E>KqA<71><41>À4<C380><34>l<EFBFBD><6C>=<3D>{q6<EFBFBD>m<EFBFBD><EFBFBD>[<5B>7mB<6D>=<3D><>s<EFBFBD><73><EFBFBD><EFBFBD>ۗ<EFBFBD>9n<1E>E<EFBFBD>;pӲ\0[<5B><>-J<><4A>pc<70><63><EFBFBD><EFBFBD>m<EFBFBD>[D<>)n<><02><><EFBFBD>r<EFBFBD><72>-<2D>R<EFBFBD><52>q<<3C><><EFBFBD><EFBFBD>+f3<66>-<2D>[¶<><<3C><>%<25><>v<EFBFBD><76><EFBFBD><EFBFBD>۬<EFBFBD><DBAC><EFBFBD><EFBFBD><EFBFBD>}<7D>Kp<4B><70>([p<><70>l<EFBFBD><6C>e<EFBFBD>+r`<17>[<5B><>m<><6D>e<EFBFBD><65>z<EFBFBD><7A>([<5B><><EFBFBD>m<EFBFBD><6D>e<EFBFBD>{<EFBFBD><EFBFBD>(۸<>Yo&<26>=<3D>y<><79>-<2D>[η<>Hn<6E>}<7D><>-<2D>P<EFBFBD><50><EFBFBD>><3E><><EFBFBD><EFBFBD>k}v<>'d[<5B><>kl<6B>p<1D><>W-<2D>[<5B><>oz<6F>=<3D>ˁ6<CB81><36><05><1C>)o<><6F><1D>k<EFBFBD><6B><EFBFBD>(<28>\\<10><>l<EFBFBD><6C><EFBFBD><EFBFBD>K<EFBFBD>6Ũ<36>\\<02>#p<> -<2D>k<EFBFBD><6B><06>l[<5B><>)o<><6F>c<>\"<EFBFBD><EFBFBD>n\n<EFBFBD>(<28><>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD>.<2E><>prvE<76>+<2B>`<17>O\\&<26>Wp<57><70>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>n<18>D<EFBFBD><44>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14>\\G<EFBFBD>y9<06><><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>.!\\V<EFBFBD><EFBFBD>:<3A><><EFBFBD>ěf3<66><33>&\\C<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T[ڶcB<63><42><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD>n6[<5B><><EFBFBD>B<EFBFBD><42><15>\nn/P<><50><EFBFBD>q<EFBFBD>ߝÀ<DF9D>f<EFBFBD><66><1B>5<EFBFBD>;\"<EFBFBD>]<5D>+<><1D>܂\0<EFBFBD>r<12><>ȫ<EFBFBD><C8AB>gO۸<4F> q<><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r.&<26><04>[r0<01>țj`<60>\\M<EFBFBD>Iq<EFBFBD><EFBFBD>Y<>v<EFBFBD>.R\\<EFBFBD><EFBFBD>Sq<EFBFBD><EFBFBD>u<EFBFBD>K<EFBFBD>6<EFBFBD>.R\\|X<>pn<70><6E><EFBFBD>{<EFBFBD>vӮ]\\]<5D>uq<1A><>«<EFBFBD>W-<2D>,[<5B><>ys<16>m<EFBFBD>[<5B><>!`F<><46><EFBFBD>s*<2A>-Ȼ<>74n\\˹}sF<73><05><1B>W4nb,<2C><><EFBFBD>s<1E><><EFBFBD><1B>3<>)<29><>4<EFBFBD>><12><><EFBFBD>{<EFBFBD>9<>/τ<><CF84>sw\r<EFBFBD><0B><>.v'<27> sn<73><6E><EFBFBD>ۜ<EFBFBD><1F>u\\4\0F<01>z<EFBFBD><7A><EFBFBD>7<EFBFBD> <09>~<7E>~<7E><>=bp<0C> <09><>-<2D>A\\<EFBFBD><EFBFBD><EFBFBD>>b<>u<EFBFBD>v<EFBFBD>Dnv<6E>)<29>)s<>v<EFBFBD><76>p7s<37><73><EFBFBD>\0s<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>}ϫ<>W?.b<>ƺ;8<><38><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD>χ<EFBFBD>[s<><73>]<5D>{<EFBFBD>w6n<EFBFBD><EFBFBD> <20><>=<16>m<EFBFBD>K<EFBFBD>w'<16><><EFBFBD>*<2A>t<EFBFBD>p<EFBFBD><70><0B>3<><04>@<40>iu<12><><EFBFBD><EFBFBD><EFBFBD>7P.<2E>]D<>yt<12>,䫤<>Ю<EFBFBD><D0AE>ҹo:<06><><EFBFBD>+<2B>Ӈn<D387><6E>I<EFBFBD><49>:*<2A><><EFBFBD>ۜ<EFBFBD><DB9C>.<2E><><03><>s<EFBFBD><73>,<2C><1B><>P<EFBFBD>s<EFBFBD>_<EFBFBD><5F>u<1E>m<EFBFBD><6D><EFBFBD>s<EFBFBD>.<2E><>b<EFBFBD><62>=6<><<3C><1B>7Z.oO<1D><>u<EFBFBD><75>m<1D><>7\\.<2E><>r<EFBFBD>=8<><38><EFBFBD><EFBFBD>k<EFBFBD><6B>ۮ<EFBFBD><DBAE>c<EFBFBD>u<><75>t<EFBFBD><0B><>`.{O&<26>v<12><><EFBFBD>j<05>H<EFBFBD>vΣ<76>u=cX+<2B><><EFBFBD>.<2E>τ<EFBFBD>KvP\r<EFBFBD>K<>F<EFBFBD>i'ݥ<><04><><EFBFBD>2zW7in<69>,XO<58>t<EFBFBD><74>%<25>z=n<><6E>һsvڑ<76><DA91>;<3B>o&<26><>ɻ<EFBFBD>v<EFBFBD>p<15>+<2B>Wonڬ<6E><DAAC><EFBFBD>v<EFBFBD><76>m<EFBFBD>˔7h<37>u<EFBFBD>*Y=b<>D<EFBFBD><44><EFBFBD>7q(<28><>Ի_9><3E><>ܻ<EFBFBD>Wsn<73><6E>\r<EFBFBD><EFBFBD>tB<EFBFBD>=<3D>k<EFBFBD><6B>E<EFBFBD><45>ݫ4<DDAB>H<EFBFBD><48><EFBFBD>ڙ<EFBFBD>h<>3<EFBFBD><33><EFBFBD><EFBFBD>v<EFBFBD>{5<EFBFBD>;<3B><>w.<2E>]<5D><><EFBFBD>><3E><>u<EFBFBD>)<29><>~<7E><><EFBFBD>8<EFBFBD><38>w<EFBFBD>}e<>{<EFBFBD><EFBFBD>O<EFBFBD><EFBFBD>O<18>Gu<06>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>x><3E>(0><3E><><EFBFBD>P<EFBFBD><0F><>w:<3A>X,[<5B>N<EFBFBD><4E>3^<1D>Cv<43><76>*;<3B>w<EFBFBD>)<1A><12>Qx\"x<EFBFBD><EFBFBD>;<3B>Ww.<2E>^4<><34>w:<3A><><EFBFBD>K<EFBFBD>7jn<6A>^4<>_u<5F><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w.<2E>^D<>!v<><76>U<EFBFBD>K<EFBFBD><4B>[<5B>\"^<15><>v<EFBFBD><76><EFBFBD><EFBFBD>K<EFBFBD>^.<2E>]~<7E><>w<EFBFBD><77><15>[<5B>Ӈ.<2E>݈<EFBFBD><DD88>v:<3A><><EFBFBD>{<EFBFBD><EFBFBD>d<EFBFBD>/<2F><><EFBFBD>-y~<7E>u<03><>wg<77>/<2F>\n&Om<06><><EFBFBD><0B><>#N<>]<5D>;x<>5L<35><4C><EFBFBD>3ܯ=ݱvv<02><11><0B>ן<EFBFBD>f]=Yr<><72><15><><EFBFBD><EFBFBD>tM/ܡ<><DCA1>w<><EEB1A7>7<EFBFBD>nP݆<50>Cy<43>5L<35><0B>78<37>Hލ<48><DE8D>zv<7A>}<7D>;<3B><><EFBFBD>o9ޒ<39>y<><79><EFBFBD><EFBFBD><0B><>=/U<06><>/z<><7A><EFBFBD><EFBFBD><1B>3<EFBFBD>m<EFBFBD><6D>S<>k^^EoD]<5D><><EFBFBD>%<25><><EFBFBD>%<25><>qפ<>\0%<25><><EFBFBD><EFBFBD>Yƻ<59><1A>5<EFBFBD>X\\Պ<EFBFBD><EFBFBD>(<28><>\"<EFBFBD><EFBFBD>0p<EFBFBD>3C_<EFBFBD>B<EFBFBD><12>|&X^<5E>q<EFBFBD>k<EFBFBD>6<EFBFBD><36>Y<>=<3D><>#<0B>+<2B><>\0<EFBFBD>b<EFBFBD><EFBFBD>-g<><67>0t<30>*2<><32><EFBFBD><EFBFBD>b<EFBFBD>ME<4D>{<15> <20>2<EFBFBD><32><EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<16>k<EFBFBD>W|<7C><><EFBFBD><15>5<EFBFBD>Z<EFBFBD><5A><EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD>r<><14><><EFBFBD><EFBFBD><EFBFBD><1F>G<EFBFBD><47>W\$L<EFBFBD>8j<EFBFBD><EFBFBD><EFBFBD>*<1F>\"_sN<EFBFBD><EFBFBD>Zi<5A>Lv<4C><76>X<0C>|<7C><>K V'O/_U<5F><55>N<EFBFBD><4E>})3ڕ<33>H/`A<><41>|ѧ<>6f<36><66><EFBFBD>/b^ƫM{\"<EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD>p<EFBFBD><18>^ΫM{@<40><>W<EFBFBD>*<07><>^Խ<>ٌ3#+鷶<><E9B7B6>^܅<>ȅ}S<><53><10>*<2A>4g<34><67>|<7C><><EFBFBD>,;<3B><17>/sW1d\np<EFBFBD><EFBFBD>-Y{<EFBFBD>ui<EFBFBD><EFBFBD>U<EFBFBD><EFBFBD>ƿJ<EFBFBD>]<5D>\n<EFBFBD>U#<23>E<EFBFBD>C<EFBFBD>aTJT<><54>Yl\r<EFBFBD>}<7D><1F><>V֮COxbv<62>!C\0P<EFBFBD><EFBFBD>\n<1A><>8J֕u&<>~Uk<55><01>O/<2F>_`<60><14><><EFBFBD>E]<5D>E<EFBFBD>w/<2F>Xz']O9T\n<EFBFBD>6<EFBFBD><15>+U<>ʭ[Xb<58><62>k<EFBFBD><6B>>o<>֏<EFBFBD>[:<3A><>e<EFBFBD>0<>Y<EFBFBD>BJ<42><4A>~<7E>?!3<><33>u<EFBFBD>\"^<5E>b<EFBFBD>Y*<2A><><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD>u<EFBFBD>E<EFBFBD>x<EFBFBD><16>E<EFBFBD>(]<5D><><EFBFBD><EFBFBD><EFBFBD>;<3B><>}V<><56>x*̷<>!3<>`_!{z<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>k<0F><><EFBFBD>)<12><>u<EFBFBD>ᕤ<EFBFBD>{_<EFBFBD><EFBFBD>U{<EFBFBD><10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<><5F>Z<>ˌ2<19><><EFBFBD><EFBFBD><EFBFBD>C#<23>k]<5D>Z<><5A>ְ<EFBFBD>/<2F>\0D<EFBFBD><EFBFBD><12><>3K<33><4B><EFBFBD>ɯ<EFBFBD><C9AF>d<EFBFBD>ڟ<>8<EFBFBD>\$0Ro<EFBFBD>ؠ<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><1A><><EFBFBD><EFBFBD>*<14>k<EFBFBD><6B>R<EFBFBD><52><EFBFBD><EFBFBD>V̨ <09>V<EFBFBD>lnӉ<6E>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54>bR<>}<7D>j<EFBFBD><6A>ܙm<DC99><0C><><EFBFBD>^\n<EFBFBD>-<2D><>u<EFBFBD>P1<50>`R<><52>}MJe<4A><65>j<EFBFBD>#<23>K4<4B><34>,<2C><><EFBFBD>t\r֜:<3A> <18>k .lO<6C>l<EFBFBD>(<28><>8<EFBFBD>q<EFBFBD><71><EFBFBD>%rY<72><59><EFBFBD>FO<EEB6B8><4F>tN<74><4E>2W<32>WT\"uj<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}T<>@<40><><EFBFBD>7k<>S<16>Vw<>ڀ姮\\<EFBFBD><EFBFBD>G<03><><<0E><>I\r<EFBFBD><EFBFBD>p:/<03><>'<27>0<EFBFBD><30>s{M<EFBFBD>%\"G%:<3A>ڔu<DA94><75>Z<EFBFBD>j<EFBFBD><6A>Yg<59><67><EFBFBD>J<EFBFBD>><3E><>,<2C><>W<04><>T|<7C>&<26>5<EFBFBD><35><EFBFBD><18><04>bX<62><58><EFBFBD>3<><33><EFBFBD>X<EFBFBD><58><EFBFBD>Jv<4A>s<EFBFBD>TS<54><18>I6<01>M FI&<26>h<EFBFBD>Y<EFBFBD><59>q蒨PY&Ƽx<>!I6\n4!<21><0B><>)&<26>07<30>Q10<02> n<>ъ7<D18A>X<EFBFBD>3H<33>ru\00053<><33>Cڊ<43><DA8A>`<60><1C>@<S_p<<3C>j<12><><1B>\\@<40><>T<EFBFBD>Ĩ<EFBFBD><C4A8><EFBFBD>t<>*<2A><><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>+<11>P@M{<EFBFBD>8C<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><07><>GMV&<26><><EFBFBD><EFBFBD>ڭ<EFBFBD><DAAD>z<EFBFBD>0<EFBFBD>@<40><>;<3B>:Ł?<05>4<>Q<EFBFBD><51><EFBFBD>a{<EFBFBD>\r<EFBFBD><EFBFBD>H<EFBFBD>7˓H<CB93><48>أ`|<7C>uL\"<EFBFBD><EFBFBD><EFBFBD>s<16><10>\"\0f<0E><><EFBFBD>PTlF<6C>G.<2E><>\n3<EFBFBD>u.X+<1D><>TvND<01><>\r<EFBFBD>\\̇*tb}<7D>݀<07>3 l[<5B><><EFBFBD><EFBFBD><EFBFBD>\0c<><63>!a<><61>g<EFBFBD>u<>e)mF,<0E><>Y=Du<44>-<2D>Ӭq<D3AC><71>M<EFBFBD><4D><EFBFBD><EFBFBD>yͅ<19><>7\0<EFBFBD>0<<3C><>w<>nEF'K<><4B><EFBFBD>>ab]<5D><><EFBFBD>\n<EFBFBD>&䮘Y<E4AE98>|<7C>Zv<5A>p<><70><EFBFBD><EFBFBD>Z<EFBFBD><EFBFBD>c<EFBFBD>uT<18><><EFBFBD>[<5B>.Mx<4D>7<EFBFBD><37><EFBFBD><EFBFBD>O<EFBFBD>+N<14>k Ki<4B>:<3A><>05<30><35>b<>\r<EFBFBD><EFBFBD>w'<27>2<<3C>A3\\<EFBFBD><EFBFBD><EFBFBD>%60<36><30>V<>u7<75>ͦjk<6A><6B><EFBFBD><EFBFBD><EFBFBD>|w1<77>r'<27><>um<75><6D>%@I:d<><64>l\\R<EFBFBD><EFBFBD> <1A>5<EFBFBD><35>@֦<>p<EFBFBD><70><EFBFBD>i<EFBFBD><69><0F>)<29>5<0C><>W<1C>;H<><19><>`<60>Ä0<><30><EFBFBD><EFBFBD>pǁ<70><C781>Z<EFBFBD>d3<13><13><>s<EFBFBD><73>*mV<6D>_<0E><1C>:<3A>s<EFBFBD><73><16>R<01><0E>i)oDp<44><70><EFBFBD>ol<18><>qf<71><66>H<EFBFBD>a<EFBFBD><61>Qbt<>x<EFBFBD><78> <20>5\0rG<EFBFBD><EFBFBD><EFBFBD>/<2F>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD>`<60><><17><>4X<34><58>-Ť<03>9<EFBFBD><39><EFBFBD><EFBFBD><19><@s;<3B><17><>{<EFBFBD> \"<EFBFBD>jj<EFBFBD>£0<EFBFBD>a<EFBFBD><EFBFBD>h6LFy<>%<25><><16>\n<EFBFBD><EFBFBD><11><>孾p<E5ADBE><70><EFBFBD><EFBFBD>8ی^k<>:c<18><>V\$<EFBFBD>2V'<27>\r<EFBFBD>A?8<><38>X<EFBFBD><58><11>=<3D><><0F>CG<43><47><0C><18>ζ#<23><>c_<63><5F>='<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@Vc<56>bB<62>,<2C><>(<28>\$<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD>(J<>WF<57><46><11>%\\+<2B><><EFBFBD><EFBFBD>`:<3A>n<01><><EFBFBD>#<23>Gч<47>1<EFBFBD><31>\"g<EFBFBD><EFBFBD>m<EFBFBD>ba<EFBFBD>x{q5<EFBFBD>mm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD>؉<EFBFBD>8<01>u<EFBFBD><75>Bh&POxV<01><>p<EFBFBD><70>ݬ&&&<26><>`V<><<3C><0B>Q<EFBFBD><13>*<2A>;<3B><><EFBFBD><EFBFBD><EFBFBD>E]݊N'<27> <20>6<EFBFBD><36>T<EFBFBD>H<1B>Xv Ȫ-<2D><>aEBv<42><76><11>Q{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>Ciڝ7<DA9D>Top<6F>f<EFBFBD><66><EFBFBD>#LV<4C>0<0E><>H<EFBFBD><48>u<EFBFBD><75>>)<29>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>]<12>4<1D><>4<><34><EFBFBD>uB:[<5B>p<EFBFBD>R*T:0)x<><78>M<EFBFBD><4D><EFBFBD>=<3D><><EFBFBD><EFBFBD><17><>J<EFBFBD><4A><EFBFBD>b<EFBFBD>#*<2A>쪠8<ECAAA0>(@=;V1cSk<03>P\n`a]g`P<><50>Sh<53><68>.<2E>U<EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD><0B><>X\\:<3A>`<60><01>\0v<EFBFBD><EFBFBD><EFBFBD>|<7C><>M<EFBFBD><4D>`ֱE+<2B><><EFBFBD><16>><3E>_<EFBFBD>J<EFBFBD>v<01>Ť\n<EFBFBD>V<EFBFBD>0l`m<><6D><EFBFBD><02>N<EFBFBD><4E>*<2A>H<EFBFBD><48>F<EFBFBD>H<EFBFBD>T<EFBFBD><54><EFBFBD>\0<EFBFBD><18>?,b%ұ<><D2B1>-<2D>6\n-ld+ʬ<><CAAC><EFBFBD>T/:<3A><>^R<>f<EFBFBD>K:LXBm<42><6D><EFBFBD>r<EFBFBD>IvKV,<2C>R<><52>e<EFBFBD>pq<70><71><EFBFBD>D<EFBFBD><44>^&\0Ea&<1F>.<2E>\0<EFBFBD><EFBFBD>B]#b<><62><EFBFBD><17><><03><><18>\$<0E>@<11>6<EFBFBD><36>E<02><><02>f<13><14>o<02>9<EFBFBD>L<EFBFBD><4C>, <09><><18><>M\0SJ<EFBFBD><10><19>gx҉<78>cYY_<59>{P)<29>\n<EFBFBD>y\"<EFBFBD>Y-<1C>r]<5D>#8ۖ<38>cd<13>4<EFBFBD>^3<>6!\\<EFBFBD>(ˑ<><CB91>w<0C>א\\<EFBFBD>ۀ<>捰\rjf<EFBFBD>Ɨk`<60>\0<EFBFBD>3l䙅<EFBFBD><EFBFBD><EFBFBD>kI/݇<><DD87>n<EFBFBD>N@:<3A><>'<27>p<EFBFBD><70>\0");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"<EFBFBD>PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6<><36>\0\0\0000PLTE\0\0\0<EFBFBD><EFBFBD><EFBFBD>+NvYt<59>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>su<73>IJ<49><4A><EFBFBD><EFBFBD>/.<2E><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<04><>\0\0\0tRNS\0@<40><>f\0\0\0 pHYs\0\0\0\0\0<EFBFBD><EFBFBD>\0\0<01>IDAT8<54>Ք<EFBFBD>N<EFBFBD>@<10><>E<><45>l϶<><01>p6<1A>G.\$=<12><><EFBFBD>><3E><> w5r}<7D>z7<7A>><3E><>P<13>#\$<EFBFBD><EFBFBD>K<EFBFBD>j<EFBFBD>7<EFBFBD><EFBFBD>ݶ<><DDB6><EFBFBD><EFBFBD>?4m<34><6D><EFBFBD><EFBFBD><EFBFBD>t&<26>~<7E>3!0<>0<EFBFBD><30>^<5E><>Af0<66>\"<EFBFBD><EFBFBD><11>,<2C><>*<2A><>4<EFBFBD><34><EFBFBD>o<EFBFBD>E<EFBFBD><45><08><>X(*Y<><59><EFBFBD><EFBFBD> 6 <09>PcOW<4F><15><>܊m<DC8A><6D>r<EFBFBD>0<EFBFBD>~/<2F><>L<EFBFBD>\rXj#<23>m<><6D><EFBFBD>j<EFBFBD>C<EFBFBD>]G<>m<EFBFBD>\0<EFBFBD>}<16><><04>ߑu<DF91>A9<41>X<EFBFBD>\n<EFBFBD><EFBFBD>8<EFBFBD>V<EFBFBD>Y<>+<2B>D#<23>iq<69>nKQ8J<38>1Q6<11><>Y0<59>`<60><1D>P<EFBFBD>bQ<>\\h<>~><3E>:pSɀ<1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GE<47>Q=<3D>I<EFBFBD>{<EFBFBD>*<2A>3<>2<EFBFBD>7<EFBFBD>\ne<>L<>B<EFBFBD>~<7E>/R(\$<EFBFBD>)<29><><EFBFBD> <20><>HQn<51>i<EFBFBD>6J<> <<3C><>-.<2E>w<EFBFBD>ɪj<C9AA>Vm<56><6D><EFBFBD>m<EFBFBD>?S<>H<EFBFBD><48>v<EFBFBD><76><EFBFBD><EFBFBD>Ʃ<EFBFBD><C6A9>\0<EFBFBD><EFBFBD>^<5E>q<EFBFBD><1B>)<29><0F><>]<5D><>U<>92<39>,;<3B>Ǎ<17>'p<><70><EFBFBD>!X˃<58><CB83><EFBFBD><EFBFBD>L<EFBFBD>D.<2E>tæ<74><C3A6>/w<14><><EFBFBD><EFBFBD>R<><1B> w<>d<EFBFBD><64>r2<72>Ƥ<EFBFBD>4[=<3D>E5<45>S+<2B><>c\0\0\0\0IEND<EFBFBD>B`<60>";}exit;}if($_GET["script"]=="version"){$o=get_temp_dir()."/adminer.version";@unlink($o);$q=file_open_lock($o);if($q)file_write_unlock($q,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}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"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$ad);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
|
||
lang($u,$Ff=null){$ua=func_get_args();$ua[0]=$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}function
|
||
lang_format($Yi,$Ff=null){if(is_array($Yi)){$Jg=($Ff==1?0:1);$Yi=$Yi[$Jg];}$Yi=str_replace("'",'’',$Yi);$ua=func_get_args();array_shift($ua);$md=str_replace("%d","%s",$Yi);if($md!=$Yi)$ua[0]=format_number($Ff);return
|
||
vsprintf($md,$ua);}define('Adminer\LANG','en');abstract
|
||
class
|
||
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
|
||
function
|
||
attach($N,$V,$F);abstract
|
||
function
|
||
quote($Q);abstract
|
||
function
|
||
select_db($Nb);abstract
|
||
function
|
||
query($H,$jj=false);function
|
||
multi_query($H){return$this->multi=$this->query($H);}function
|
||
store_result(){return$this->multi;}function
|
||
next_result(){return
|
||
false;}}if(extension_loaded('pdo')){abstract
|
||
class
|
||
PdoDb
|
||
extends
|
||
SqlDb{protected$pdo;function
|
||
dsn($nc,$V,$F,array$Xf=array()){$Xf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$Xf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
|
||
\PDO($nc,$V,$F,$Xf);}catch(\Exception$Ic){return$Ic->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
|
||
quote($Q){return$this->pdo->quote($Q);}function
|
||
query($H,$jj=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';return
|
||
false;}$this->store_result($I);return$I;}function
|
||
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
|
||
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
|
||
true;}function
|
||
next_result(){$I=$this->multi;if(!is_object($I))return
|
||
false;$I->_offset=0;return@$I->nextRowset();}}class
|
||
PdoResult
|
||
extends
|
||
\PDOStatement{var$_offset=0,$num_rows;function
|
||
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
|
||
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
|
||
function
|
||
fetch_array($qf){$J=$this->fetch($qf);return($J?array_map(array($this,'unresource'),$J):$J);}private
|
||
function
|
||
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
|
||
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
|
||
seek($C){for($s=0;$s<$C;$s++)$this->fetch();}}}function
|
||
add_driver($t,$B){SqlDriver::$drivers[$t]=$B;}function
|
||
get_driver($t){return
|
||
SqlDriver::$drivers[$t];}abstract
|
||
class
|
||
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$insertFunctions=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$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
|
||
function
|
||
connect($N,$V,$F){$f=new
|
||
Db;return($f->attach($N,$V,$F)?:$f);}function
|
||
__construct(Db$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(array$m){}function
|
||
unconvertFunction(array$m){}function
|
||
select($R,array$M,array$Z,array$wd,array$Zf=array(),$z=1,$D=0,$Sg=false){$te=(count($wd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$wd,$Zf,$z,$D);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$wd&&$te&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($wd&&$te?"\nGROUP BY ".implode(", ",$wd):"").($Zf?"\nORDER BY ".implode(", ",$Zf):""),$z,($D?$z*$D:0),"\n");$ji=microtime(true);$J=$this->conn->query($H);if($Sg)echo
|
||
adminer()->selectQuery($H,$ji,!$J);return$J;}function
|
||
delete($R,$bh,$z=0){$H="FROM ".table($R);return
|
||
queries("DELETE".($z?limit1($R,$H,$bh):" $H$bh"));}function
|
||
update($R,array$O,$bh,$z=0,$Mh="\n"){$Bj=array();foreach($O
|
||
as$x=>$X)$Bj[]="$x = $X";$H=table($R)." SET$Mh".implode(",$Mh",$Bj);return
|
||
queries("UPDATE".($z?limit1($R,$H,$bh,$Mh):" $H$bh"));}function
|
||
insert($R,array$O){return
|
||
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function
|
||
insertReturning($R){return"";}function
|
||
insertUpdate($R,array$L,array$G){return
|
||
false;}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
commit(){return
|
||
queries("COMMIT");}function
|
||
rollback(){return
|
||
queries("ROLLBACK");}function
|
||
slowQuery($H,$Li){}function
|
||
convertSearch($u,array$X,array$m){return$u;}function
|
||
convertOperator($Tf){return$Tf;}function
|
||
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
|
||
quoteBinary($_h){return
|
||
q($_h);}function
|
||
warnings(){}function
|
||
tableHelp($B,$xe=false){}function
|
||
inheritsFrom($R){return
|
||
array();}function
|
||
inheritedTables($R){return
|
||
array();}function
|
||
partitionsInfo($R){return
|
||
array();}function
|
||
hasCStyleEscapes(){return
|
||
false;}function
|
||
engines(){return
|
||
array();}function
|
||
supportsIndex(array$S){return!is_view($S);}function
|
||
indexAlgorithms(array$ti){return
|
||
array();}function
|
||
checkConstraints($R){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($R)."
|
||
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'",$this->conn);}function
|
||
allFields(){$J=array();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
|
||
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
SqlDb{var$extension="SQLite3";private$link;function
|
||
attach($o,$V,$F){$this->link=new
|
||
\SQLite3($o);$Ej=$this->link->version();$this->server_info=$Ej["versionString"];return'';}function
|
||
query($H,$jj=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
|
||
false;}elseif($I->numColumns())return
|
||
new
|
||
Result($I);$this->affected_rows=$this->link->changes();return
|
||
true;}function
|
||
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;}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==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
|
||
__destruct(){$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
PdoDb{var$extension="PDO_SQLite";function
|
||
attach($o,$V,$F){$this->dsn(DRIVER.":$o","","");$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}}}if(class_exists('Adminer\SqliteDb')){class
|
||
Db
|
||
extends
|
||
SqliteDb{function
|
||
attach($o,$V,$F){parent::attach($o,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
|
||
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a"))return!self::attach($o,'','');return
|
||
false;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=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");static
|
||
function
|
||
connect($N,$V,$F){if($F!="")return'Database does not support password.';return
|
||
parent::connect(":memory:","","");}function
|
||
__construct(Db$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($R,array$L,array$G){$Bj=array();foreach($L
|
||
as$O)$Bj[]="(".implode(", ",$O).")";return
|
||
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Bj));}function
|
||
tableHelp($B,$xe=false){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}function
|
||
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$Ye);return
|
||
array_combine($Ye[2],$Ye[2]);}function
|
||
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$J[$R][]=$m;}return$J;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){return
|
||
array();}function
|
||
limit($H,$Z,$z,$C=0,$Mh=" "){return" $H$Z".($z?$Mh."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($R,$H,$Z,$Mh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$Mh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Mh."LIMIT 1)");}function
|
||
db_collation($j,$jb){return
|
||
get_val("PRAGMA encoding");}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=""){$J=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$K){$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($B!=""?" WHERE name = ".q($B):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$B=$K["name"];$U=strtolower($K["type"]);$k=$K["dflt_value"];$J[$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"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($G!="")$J[$G]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$B]["auto_increment"]=true;$G=$B;}}$di=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$di,$Ye,PREG_SET_ORDER);foreach($Ye
|
||
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($J[$B])$J[$B]["collation"]=trim($A[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$di,$Ye,PREG_SET_ORDER);foreach($Ye
|
||
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$J[$B]["default"]=$A[3];$J[$B]["generated"]=strtoupper($A[4]);}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$di=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$di,$A)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$Ye,PREG_SET_ORDER);foreach($Ye
|
||
as$A){$J[""]["columns"][]=idf_unescape($A[2]).$A[4];$J[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$J){foreach(fields($R)as$B=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$hi=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$K){$B=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$g)as$zh){$v["columns"][]=$zh["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$hi[$B],$mh)){preg_match_all('/("[^"]*+")+( DESC)?/',$mh[2],$Ye);foreach($Ye[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$B))$J[$B]=$v;}return$J;}function
|
||
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$p=&$J[$K["id"]];if(!$p)$p=$K;$p["source"][]=$K["from"];$p["target"][]=$K["to"];}return$J;}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(){return
|
||
h(connection()->error);}function
|
||
check_sqlite_name($B){$Qc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Qc)\$~",$B)){connection()->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Qc));return
|
||
false;}return
|
||
true;}function
|
||
create_database($j,$c){if(file_exists($j)){connection()->error='File exists.';return
|
||
false;}if(!check_sqlite_name($j))return
|
||
false;try{$_=new
|
||
Db();$_->attach($j,'','');}catch(\Exception$Ic){connection()->error=$Ic->getMessage();return
|
||
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
|
||
true;}function
|
||
drop_databases($i){connection()->attach(":memory:",'','');foreach($i
|
||
as$j){if(!@unlink($j)){connection()->error='File exists.';return
|
||
false;}}return
|
||
true;}function
|
||
rename_database($B,$c){if(!check_sqlite_name($B))return
|
||
false;connection()->attach(":memory:",'','');connection()->error='File exists.';return@rename(DB,$B);}function
|
||
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
|
||
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$vj=($R==""||$jd);foreach($n
|
||
as$m){if($m[0]!=""||!$m[1]||$m[2]){$vj=true;break;}}$b=array();$kg=array();foreach($n
|
||
as$m){if($m[1]){$b[]=($vj?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$kg[$m[0]]=$m[1][0];}}if(!$vj){foreach($b
|
||
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
|
||
false;}if($R!=$B&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)))return
|
||
false;}elseif(!recreate_table($R,$B,$b,$kg,$jd,$_a))return
|
||
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($B).", $_a)");queries("COMMIT");}return
|
||
true;}function
|
||
recreate_table($R,$B,array$n,array$kg,array$jd,$_a="",$w=array(),$jc="",$ja=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$kg[$x]=idf_escape($x);}}$Rg=false;foreach($n
|
||
as$m){if($m[6])$Rg=true;}$lc=array();foreach($w
|
||
as$x=>$X){if($X[2]=="DROP"){$lc[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$Ae=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$kg[$d])continue
|
||
2;$e[]=$kg[$d].($v["descs"][$x]?" DESC":"");}if(!$lc[$Ae]){if($v["type"]!="PRIMARY"||!$Rg)$w[]=array($v["type"],$Ae,$e);}}foreach($w
|
||
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$jd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$Ae=>$p){foreach($p["source"]as$x=>$d){if(!$kg[$d])continue
|
||
2;$p["source"][$x]=idf_unescape($kg[$d]);}if(!isset($jd[" $Ae"]))$jd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Ua=array();foreach($n
|
||
as$m){if(preg_match('~GENERATED~',$m[3]))unset($kg[array_search($m[0],$kg)]);$Ua[]=" ".implode($m);}$Ua=array_merge($Ua,array_filter($jd));foreach(driver()->checkConstraints($R)as$Wa){if($Wa!=$jc)$Ua[]=" CHECK ($Wa)";}if($ja)$Ua[]=" CHECK ($ja)";$Fi=($R==$B?"adminer_$B":$B);if(!queries("CREATE TABLE ".table($Fi)." (\n".implode(",\n",$Ua)."\n)"))return
|
||
false;if($R!=""){if($kg&&!queries("INSERT INTO ".table($Fi)." (".implode(", ",$kg).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($kg)))." FROM ".table($R)))return
|
||
false;$fj=array();foreach(triggers($R)as$dj=>$Mi){$cj=trigger($dj,$R);$fj[]="CREATE TRIGGER ".idf_escape($dj)." ".implode(" ",$Mi)." ON ".table($B)."\n$cj[Statement]";}$_a=$_a?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$B&&!queries("ALTER TABLE ".table($Fi)." RENAME TO ".table($B)))||!alter_indexes($B,$w))return
|
||
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));foreach($fj
|
||
as$cj){if(!queries($cj))return
|
||
false;}queries("COMMIT");}return
|
||
true;}function
|
||
index_sql($R,$U,$B,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($R."_"))." ON ".table($R)." $e";}function
|
||
alter_indexes($R,$b){foreach($b
|
||
as$G){if($G[0]=="PRIMARY")return
|
||
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($T){return
|
||
apply_queries("DELETE FROM",$T);}function
|
||
drop_views($Gj){return
|
||
apply_queries("DROP VIEW",$Gj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
move_tables($T,$Gj,$Di){return
|
||
false;}function
|
||
trigger($B,$R){if($B=="")return
|
||
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$ej=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$ej["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($B)),$A);$Hf=$A[3];return
|
||
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($Hf?" OF":""),"Of"=>idf_unescape($Hf),"Trigger"=>$B,"Statement"=>$A[4],);}function
|
||
triggers($R){$J=array();$ej=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$ej["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$A);$J[$K["name"]]=array($A[1],$A[2]);}return$J;}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($I){return
|
||
get_val("SELECT LAST_INSERT_ROWID()");}function
|
||
explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
|
||
found_rows($S,$Z){}function
|
||
types(){return
|
||
array();}function
|
||
create_sql($R,$_a,$ni){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$B=>$v){if($B=='')continue;$J
|
||
.=";\n\n".index_sql($R,$v['type'],$B,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$J;}function
|
||
truncate_sql($R){return"DELETE FROM ".table($R);}function
|
||
use_sql($Nb){}function
|
||
trigger_sql($R){return
|
||
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
|
||
show_variables(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$B=$K["name"];if($B!="pragma_list"&&$B!="compile_options"){$J[$B]=array($B,'');foreach(get_rows("PRAGMA $B")as$K)$J[$B][1].=implode(", ",$K)."\n";}}return$J;}function
|
||
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$Wf)$J[]=explode("=",$Wf,2)+array('','');return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Vc){return
|
||
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Vc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
|
||
PgsqlDb
|
||
extends
|
||
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
|
||
_error($Dc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$j=adminer()->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$ii=adminer()->connectSsl();if(isset($ii["mode"]))$this->string
|
||
.=" sslmode='".$ii["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)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
|
||
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
|
||
value($X,array$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
|
||
select_db($Nb){if($Nb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Nb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
|
||
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
|
||
query($H,$jj=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
|
||
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
|
||
warnings(){return
|
||
h(pg_last_notice($this->link));}function
|
||
copyFrom($R,array$L){$this->error='';set_error_handler(function($Dc,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);return
|
||
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
pg_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
pg_fetch_row($this->result);}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$J->type=(preg_match(number_type(),$U)?0:15);$J->charsetnr=($U=="bytea"?63:0);return$J;}function
|
||
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
PgsqlDb
|
||
extends
|
||
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
|
||
attach($N,$V,$F){$j=adminer()->database();$nc="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$ii=adminer()->connectSsl();if(isset($ii["mode"]))$nc
|
||
.=" sslmode='".$ii["mode"]."'";return$this->dsn($nc,$V,$F);}function
|
||
select_db($Nb){return(adminer()->database()==$Nb);}function
|
||
query($H,$jj=false){$J=parent::query($H,$jj);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
|
||
warnings(){}function
|
||
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
|
||
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
|
||
Db
|
||
extends
|
||
PgsqlDb{function
|
||
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$A)){$L=explode("\n",$A[2]);$this->affected_rows=count($L);return$this->copyFrom($A[1],$L);}return
|
||
parent::multi_query($H);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","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");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f))return$f;$Ej=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$Ej)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$Ej);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
|
||
__construct(Db$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->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f))$this->generated=array("STORED");$this->partitionBy=array("RANGE","LIST");if(!$f->flavor)$this->partitionBy[]="HASH";}function
|
||
enumLength(array$m){$_c=$this->types['User types'][$m["type"]];return($_c?type_values($_c):"");}function
|
||
setUserTypes($ij){$this->types['User types']=array_flip($ij);}function
|
||
insertReturning($R){$_a=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($_a)==1?" RETURNING ".idf_escape(key($_a)):"");}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$rj=array();$Z=array();foreach($O
|
||
as$x=>$X){$rj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$rj)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
slowQuery($H,$Li){$this->conn->query("SET statement_timeout = ".(1000*$Li));$this->conn->timeout=1000*$Li;return$H;}function
|
||
convertSearch($u,array$X,array$m){$Ii="char|text";if(strpos($X["op"],"LIKE")===false)$Ii
|
||
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Ii~",$m["type"])?$u:"CAST($u AS text)");}function
|
||
quoteBinary($_h){return"'\\x".bin2hex($_h)."'";}function
|
||
warnings(){return$this->conn->warnings();}function
|
||
tableHelp($B,$xe=false){$Qe=array("information_schema"=>"infoschema","pg_catalog"=>($xe?"view":"catalog"),);$_=$Qe[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".html";}function
|
||
inheritsFrom($R){return
|
||
get_vals("SELECT relname FROM pg_class JOIN pg_inherits ON inhparent = oid WHERE inhrelid = ".$this->tableOid($R)." ORDER BY 1");}function
|
||
inheritedTables($R){return
|
||
get_vals("SELECT relname FROM pg_inherits JOIN pg_class ON inhrelid = oid WHERE inhparent = ".$this->tableOid($R)." ORDER BY 1");}function
|
||
partitionsInfo($R){$K=connection()->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".driver()->tableOid($R))->fetch_assoc();if($K){$ya=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $K[partrelid] AND attnum IN (".str_replace(" ",", ",$K["partattrs"]).")");$Oa=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
|
||
array("partition_by"=>$Oa[$K["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$ya)),);}return
|
||
array();}function
|
||
tableOid($R){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($R)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
|
||
indexAlgorithms(array$ti){static$J=array();if(!$J)$J=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = 'btree' DESC, amname");return$J;}function
|
||
supportsIndex(array$S){return$S["Engine"]!="view";}function
|
||
hasCStyleEscapes(){static$Qa;if($Qa===null)$Qa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Qa;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){return
|
||
get_vals("SELECT datname FROM pg_database
|
||
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
|
||
ORDER BY datname");}function
|
||
limit($H,$Z,$z,$C=0,$Mh=" "){return" $H$Z".($z?$Mh."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($R,$H,$Z,$Mh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$Mh):" $H".(is_view(table_status1($R))?$Z:$Mh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Mh."LIMIT 1)"));}function
|
||
db_collation($j,$jb){return
|
||
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}function
|
||
logged_user(){return
|
||
get_val("SELECT user");}function
|
||
tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$H
|
||
.="
|
||
UNION ALL
|
||
SELECT matviewname, 'MATERIALIZED VIEW'
|
||
FROM pg_matviews
|
||
WHERE schemaname = current_schema()";$H
|
||
.="
|
||
ORDER BY 1";return
|
||
get_key_vals($H);}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j){if(connection()->select_db($j))$J[$j]=count(tables_list());}return$J;}function
|
||
table_status($B=""){static$Fd;if($Fd===null)$Fd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
|
||
relname AS \"Name\",
|
||
CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($Fd?",
|
||
pg_table_size(oid) AS \"Data_length\",
|
||
pg_indexes_size(oid) AS \"Index_length\"":"").",
|
||
obj_description(oid, 'pg_class') AS \"Comment\",
|
||
".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
|
||
reltuples as \"Rows\",
|
||
inhparent AS inherited,
|
||
current_schema() AS nspname
|
||
FROM pg_class
|
||
LEFT JOIN pg_inherits ON inhrelid = oid
|
||
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
|
||
AND relnamespace = ".driver()->nsOid."
|
||
".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return
|
||
in_array($S["Engine"],array("view","materialized view"));}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$J=array();$ra=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(a.attrelid, a.attnum) AS comment".(min_version(10)?",
|
||
a.attidentity".(min_version(12)?",
|
||
a.attgenerated":""):"")."
|
||
FROM pg_attribute a
|
||
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
|
||
WHERE a.attrelid = ".driver()->tableOid($R)."
|
||
AND NOT a.attisdropped
|
||
AND a.attnum > 0
|
||
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$A);list(,$U,$y,$K["length"],$ka,$va)=$A;$K["length"].=$va;$Ya=$U.$ka;if(isset($ra[$Ya])){$K["type"]=$ra[$Ya];$K["full_type"]=$K["type"].$y.$va;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$y.$ka.$va;}if(in_array($K['attidentity'],array('a','d')))$K['default']='GENERATED '.($K['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$K["generated"]=($K["attgenerated"]=="s"?"STORED":"");$K["null"]=!$K["attnotnull"];$K["auto_increment"]=$K['attidentity']||preg_match('~^nextval\(~i',$K["default"])||preg_match('~^unique_rowid\(~',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$A))$K["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$J[$K["field"]]=$K;}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$wi=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $wi AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial, pg_am.amname as algorithm, pg_get_expr(pg_index.indpred, pg_index.indrelid, true) AS partial
|
||
FROM pg_index
|
||
JOIN pg_class ON indexrelid = oid
|
||
JOIN pg_am ON pg_am.oid = pg_class.relam
|
||
WHERE indrelid = $wi
|
||
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$nh=$K["relname"];$J[$nh]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$nh]["columns"]=array();$J[$nh]["descs"]=array();$J[$nh]["algorithm"]=$K["algorithm"];$J[$nh]["partial"]=$K["partial"];if($K["indkey"]){foreach(explode(" ",$K["indkey"])as$ee)$J[$nh]["columns"][]=$e[$ee];foreach(explode(" ",$K["indoption"])as$fe)$J[$nh]["descs"][]=(intval($fe)&1?'1':null);}$J[$nh]["lengths"]=array();}return$J;}function
|
||
foreign_keys($R){$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
|
||
FROM pg_constraint
|
||
WHERE conrelid = ".driver()->tableOid($R)."
|
||
AND contype = 'f'::char
|
||
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$A)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$We)){$K['ns']=idf_unescape($We[2]);$K['table']=idf_unescape($We[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$A[4],$We)?$We[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$A[4],$We)?$We[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
|
||
view($B){return
|
||
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($B).")")));}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="information_schema";}function
|
||
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$A))$J=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
|
||
nl_br($J);}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" ENCODING ".idf_escape($c):""));}function
|
||
drop_databases($i){connection()->close();return
|
||
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
|
||
rename_database($B,$c){connection()->close();return
|
||
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$b=array();$ah=array();if($R!=""&&$R!=$B)$ah[]="ALTER TABLE ".table($R)." RENAME TO ".table($B);$Nh="";foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$Aj=$X[5];unset($X[5]);if($m[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":" ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$ah[]="ALTER TABLE ".table($B)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Oh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($Oh).")":"DROP DEFAULT"));if(isset($X[6]))$Nh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Oh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$Aj!="")$ah[]="COMMENT ON COLUMN ".table($B).".$X[0] IS ".($Aj!=""?substr($Aj,9):"''");}}$b=array_merge($b,$jd);if($R==""){$P="";if($E){$eb=(connection()->flavor=='cockroach');$P=" PARTITION BY $E[partition_by]($E[partition])";if($E["partition_by"]=='HASH'){$zg=+$E["partitions"];for($s=0;$s<$zg;$s++)$ah[]="CREATE TABLE ".idf_escape($B."_$s")." PARTITION OF ".idf_escape($B)." FOR VALUES WITH (MODULUS $zg, REMAINDER $s)";}else{$Qg="MINVALUE";foreach($E["partition_names"]as$s=>$X){$Y=$E["partition_values"][$s];$vg=" VALUES ".($E["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Qg) TO ($Y)");if($eb)$P
|
||
.=($s?",":" (")."\n PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$vg";else$ah[]="CREATE TABLE ".idf_escape($B."_$X")." PARTITION OF ".idf_escape($B)." FOR$vg";$Qg=$Y;}$P
|
||
.=($eb?"\n)":"");}}array_unshift($ah,"CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($ah,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Nh)array_unshift($ah,$Nh);if($ob!==null)$ah[]="COMMENT ON TABLE ".table($B)." IS ".q($ob);foreach($ah
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
alter_indexes($R,$b){$h=array();$ic=array();$ah=array();foreach($b
|
||
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")$ic[]=idf_escape($X[1]);else$ah[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R).($X[3]?" USING $X[3]":"")." (".implode(", ",$X[2]).")".($X[4]?" WHERE $X[4]":"");}if($h)array_unshift($ah,"ALTER TABLE ".table($R).implode(",",$h));if($ic)array_unshift($ah,"DROP INDEX ".implode(", ",$ic));foreach($ah
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($T){return
|
||
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
drop_views($Gj){return
|
||
drop_tables($Gj);}function
|
||
drop_tables($T){foreach($T
|
||
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
|
||
false;}return
|
||
true;}function
|
||
move_tables($T,$Gj,$Di){foreach(array_merge($T,$Gj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Di)))return
|
||
false;}return
|
||
true;}function
|
||
trigger($B,$R){if($B=="")return
|
||
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($B);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=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$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
|
||
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$cj=trigger($K["trigger_name"],$R);$J[$cj["Trigger"]]=array($cj["Timing"],$cj["Event"]);}return$J;}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){$L=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));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["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$J;}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,$K){$J=array();foreach($K["fields"]as$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
|
||
idf_escape($B)."(".implode(", ",$J).")";}function
|
||
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
|
||
explain($f,$H){return$f->query("EXPLAIN $H");}function
|
||
found_rows($S,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$mh))return$mh[1];}function
|
||
types(){return
|
||
get_key_vals("SELECT oid, typname
|
||
FROM pg_type
|
||
WHERE typnamespace = ".driver()->nsOid."
|
||
AND typtype IN ('b','d','e')
|
||
AND typelem = 0");}function
|
||
type_values($t){$Cc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($Cc?"'".implode("', '",array_map('addslashes',$Cc))."'":"");}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($Bh,$g=null){if(!$g)$g=connection();$J=$g->query("SET search_path TO ".idf_escape($Bh));driver()->setUserTypes(types());return$J;}function
|
||
foreign_keys_sql($R){$J="";$P=table_status1($R);$fd=foreign_keys($R);ksort($fd);foreach($fd
|
||
as$ed=>$dd)$J
|
||
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($ed)." $dd[definition] ".($dd['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
|
||
create_sql($R,$_a,$ni){$sh=array();$Ph=array();$P=table_status1($R);if(is_view($P)){$Fj=view($R);return
|
||
rtrim("CREATE VIEW ".idf_escape($R)." AS $Fj[select]",";");}$n=fields($R);if(count($P)<2||empty($n))return
|
||
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($n
|
||
as$m){$tg=idf_escape($m['field']).' '.$m['full_type'].default_value($m).($m['null']?"":" NOT NULL");$sh[]=$tg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$Ye)){$Oh=$Ye[1];$ci=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Oh)):"SELECT * FROM $Oh"),null,"-- "));$Ph[]=($ni=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Oh;\n":"")."CREATE SEQUENCE $Oh INCREMENT $ci[increment_by] MINVALUE $ci[min_value] MAXVALUE $ci[max_value]".($_a&&$ci['last_value']?" START ".($ci["last_value"]+1):"")." CACHE $ci[cache_value];";}}if(!empty($Ph))$J=implode("\n\n",$Ph)."\n\n$J";$G="";foreach(indexes($R)as$ce=>$v){if($v['type']=='PRIMARY'){$G=$ce;$sh[]="CONSTRAINT ".idf_escape($ce)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$ub=>$wb)$sh[]="CONSTRAINT ".idf_escape($ub)." CHECK $wb";$J
|
||
.=implode(",\n ",$sh)."\n)";$vg=driver()->partitionsInfo($P['Name']);if($vg)$J
|
||
.="\nPARTITION BY $vg[partition_by]($vg[partition])";$J
|
||
.="\nWITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J
|
||
.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($n
|
||
as$Xc=>$m){if($m['comment'])$J
|
||
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Xc)." IS ".q($m['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($G?" AND indexname != ".q($G):""),null,"-- ")as$K)$J
|
||
.="\n\n$K[indexdef];";return
|
||
rtrim($J,';');}function
|
||
truncate_sql($R){return"TRUNCATE ".table($R);}function
|
||
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$bj=>$aj){$cj=trigger($bj,$P['Name']);$J
|
||
.="\nCREATE TRIGGER ".idf_escape($cj['Trigger'])." $cj[Timing] $cj[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $cj[Type] $cj[Statement];;\n";}return$J;}function
|
||
use_sql($Nb){return"\connect ".idf_escape($Nb);}function
|
||
show_variables(){return
|
||
get_rows("SHOW ALL");}function
|
||
process_list(){return
|
||
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Vc){return
|
||
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$Vc);}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");}}add_driver("oracle","Oracle (beta)");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="oci8";var$_current_db;private$link;function
|
||
_error($Dc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$l=oci_error();return$l["message"];}function
|
||
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Nb){$this->_current_db=$Nb;return
|
||
true;}function
|
||
query($H,$jj=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["message"];return
|
||
false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
|
||
new
|
||
Result($I);$this->affected_rows=oci_num_rows($I);oci_free_statement($I);}return$J;}}class
|
||
Result{var$num_rows;private$result,$offset=1;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$x]=$X->load();}return$K;}function
|
||
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
|
||
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
|
||
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_OCI";var$_current_db;function
|
||
attach($N,$V,$F){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);}function
|
||
select_db($Nb){$this->_current_db=$Nb;return
|
||
true;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=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(Db$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($R,array$L,array$G){foreach($L
|
||
as$O){$rj=array();$Z=array();foreach($O
|
||
as$x=>$X){$rj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$rj)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
hasCStyleEscapes(){return
|
||
true;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){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($H,$Z,$z,$C=0,$Mh=" "){return($C?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$C).") WHERE rnum > $C":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$C):" $H$Z"));}function
|
||
limit1($R,$H,$Z,$Mh="\n"){return" $H$Z";}function
|
||
db_collation($j,$jb){return
|
||
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
|
||
logged_user(){return
|
||
get_val("SELECT USER FROM DUAL");}function
|
||
get_current_db(){$j=connection()->_current_db?:DB;unset(connection()->_current_db);return$j;}function
|
||
where_owner($Og,$ng="owner"){if(!$_GET["ns"])return'';return"$Og$ng = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
|
||
views_table($e){$ng=where_owner('');return"(SELECT $e FROM all_views WHERE ".($ng?:"rownum < 0").")";}function
|
||
tables_list(){$Fj=views_table("view_name");$ng=where_owner(" AND ");return
|
||
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$ng
|
||
UNION SELECT view_name, 'view' FROM $Fj
|
||
ORDER BY 1");}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j)$J[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$J;}function
|
||
table_status($B=""){$J=array();$Fh=q($B);$j=get_current_db();$Fj=views_table("view_name");$ng=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).$ng.($B!=""?" AND table_name = $Fh":"")."
|
||
UNION SELECT view_name, 'view', 0, 0 FROM $Fj".($B!=""?" WHERE view_name = $Fh":"")."
|
||
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$J=array();$ng=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$ng ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$y="$K[DATA_PRECISION],$K[DATA_SCALE]";if($y==",")$y=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();$ng=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($R)."$ng
|
||
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$ce=$K["INDEX_NAME"];$lb=$K["DATA_DEFAULT"];$lb=($lb?trim($lb,'"'):$K["COLUMN_NAME"]);$J[$ce]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$ce]["columns"][]=$lb;$J[$ce]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$ce]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
|
||
view($B){$Fj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Fj.' WHERE view_name = '.q($B));return
|
||
reset($L);}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
explain($f,$H){$f->query("EXPLAIN PLAN FOR $H");return$f->query("SELECT * FROM plan_table");}function
|
||
found_rows($S,$Z){}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$b=$ic=array();$gg=($R?fields($R):array());foreach($n
|
||
as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$fg=$gg[$m[0]];if($X&&$fg){$Jf=process_field($fg,$fg);if($X[2]==$Jf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$ic[]=idf_escape($m[0]);}if($R=="")return
|
||
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$ic||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$ic).")"))&&($R==$B||queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)));}function
|
||
alter_indexes($R,$b){$ic=array();$ah=array();foreach($b
|
||
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($ah,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$ic[]=idf_escape($X[1]);else$ah[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($ic)array_unshift($ah,"DROP INDEX ".implode(", ",$ic));foreach($ah
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
foreign_keys($R){$J=array();$H="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($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
|
||
truncate_tables($T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views($Gj){return
|
||
apply_queries("DROP VIEW",$Gj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
last_id($I){return
|
||
0;}function
|
||
schemas(){$J=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($J?: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($Dh,$g=null){if(!$g)$g=connection();return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Dh));}function
|
||
show_variables(){return
|
||
get_rows('SELECT name, display_value FROM v$parameter');}function
|
||
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$x=>$X)$J[]=array($x,$X);return$J;}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
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Vc){return
|
||
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Vc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="sqlsrv";private$link,$result;private
|
||
function
|
||
get_error(){$this->error="";foreach(sqlsrv_errors()as$l){$this->errno=$l["code"];$this->error
|
||
.="$l[message]\n";}$this->error=rtrim($this->error);}function
|
||
attach($N,$V,$F){$vb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$ii=adminer()->connectSsl();if(isset($ii["Encrypt"]))$vb["Encrypt"]=$ii["Encrypt"];if(isset($ii["TrustServerCertificate"]))$vb["TrustServerCertificate"]=$ii["TrustServerCertificate"];$j=adminer()->database();if($j!="")$vb["Database"]=$j;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$N),$vb);if($this->link){$ge=sqlsrv_server_info($this->link);$this->server_info=$ge['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
|
||
quote($Q){$kj=strlen($Q)!=strlen(utf8_decode($Q));return($kj?"N":"")."'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Nb){return$this->query(use_sql($Nb));}function
|
||
query($H,$jj=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
|
||
false;}return$this->store_result($I);}function
|
||
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
|
||
false;}return
|
||
true;}function
|
||
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
|
||
false;if(sqlsrv_field_metadata($I))return
|
||
new
|
||
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
|
||
true;}function
|
||
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
|
||
Result{var$num_rows;private$result,$offset=0,$fields;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'DateTime'))$K[$x]=$X->format("Y-m-d H:i:s");}return$K;}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);$m=$this->fields[$this->offset++];$J=new
|
||
\stdClass;$J->name=$m["Name"];$J->type=($m["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
|
||
seek($C){for($s=0;$s<$C;$s++)sqlsrv_fetch($this->result);}function
|
||
__destruct(){sqlsrv_free_stmt($this->result);}}function
|
||
last_id($I){return
|
||
get_val("SELECT SCOPE_IDENTITY()");}function
|
||
explain($f,$H){$f->query("SET SHOWPLAN_ALL ON");$J=$f->query($H);$f->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
|
||
class
|
||
MssqlDb
|
||
extends
|
||
PdoDb{function
|
||
select_db($Nb){return$this->query(use_sql($Nb));}function
|
||
lastInsertId(){return$this->pdo->lastInsertId();}}function
|
||
last_id($I){return
|
||
connection()->lastInsertId();}function
|
||
explain($f,$H){}if(extension_loaded("pdo_sqlsrv")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_SQLSRV";function
|
||
attach($N,$V,$F){return$this->dsn("sqlsrv:Server=".str_replace(":",",",$N),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_DBLIB";function
|
||
attach($N,$V,$F){return$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);}}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=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$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
|
||
function
|
||
connect($N,$V,$F){if($N=="")$N="localhost:1433";return
|
||
parent::connect($N,$V,$F);}function
|
||
__construct(Db$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($R,array$L,array$G){$n=fields($R);$rj=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Pa=0;$me=array();foreach($O
|
||
as$x=>$X){$Pa++;$B=idf_unescape($x);if(!$n[$B]["auto_increment"])$me[$x]="c$Pa";if(isset($G[$B]))$Z[]="$x = c$Pa";else$rj[]="$x = c$Pa";}$Bj=array();foreach($L
|
||
as$O)$Bj[]="(".implode(", ",$O).")";if($Z){$Rd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Bj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($rj?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$rj):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Rd?$O:$me)).") VALUES (".($Rd?$e:implode(", ",$me)).");");if($Rd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Bj));return$J;}function
|
||
begin(){return
|
||
queries("BEGIN TRANSACTION");}function
|
||
tableHelp($B,$xe=false){$Qe=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Qe[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($B))."-transact-sql";}}function
|
||
idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
|
||
table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
|
||
get_databases($hd){return
|
||
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
|
||
limit($H,$Z,$z,$C=0,$Mh=" "){return($z?" TOP (".($z+$C).")":"")." $H$Z";}function
|
||
limit1($R,$H,$Z,$Mh="\n"){return
|
||
limit($H,$Z,1,0,$Mh);}function
|
||
db_collation($j,$jb){return
|
||
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}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){$J=array();foreach($i
|
||
as$j){connection()->select_db($j);$J[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
|
||
table_status($B=""){$J=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$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="VIEW";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$qb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$ui=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($R));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, d.definition [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($ui))as$K){$U=$K["type"];$y=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($y?"($y)":""),"type"=>$U,"length"=>$y,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$A)?str_replace("''","'",$A[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$qb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($ui))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
|
||
indexes($R,$g=null){$J=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($R),$g)as$K){$B=$K["name"];$J[$B]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$B]["lengths"]=array();$J[$B]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$B]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}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(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
|
||
drop_databases($i){return
|
||
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
|
||
rename_database($B,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");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($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$b=array();$qb=array();$gg=fields($R);foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$qb[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($jd[$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($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$fg=$gg[$m[0]];if(default_value($fg)!=$k){if($fg["default"]!==null)$b["DROP"][]=" ".idf_escape($fg["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
|
||
queries("CREATE TABLE ".table($B)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$B)queries("EXEC sp_rename ".q(table($R)).", ".q($B));if($jd)$b[""]=$jd;foreach($b
|
||
as$x=>$X){if(!queries("ALTER TABLE ".table($B)." $x".implode(",",$X)))return
|
||
false;}foreach($qb
|
||
as$x=>$X){$ob=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($x));queries("EXEC sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = $ob,
|
||
@level0type = N'Schema',
|
||
@level0name = ".q(get_schema()).",
|
||
@level1type = N'Table',
|
||
@level1name = ".q($B).",
|
||
@level2type = N'Column',
|
||
@level2name = ".q($x));}return
|
||
true;}function
|
||
alter_indexes($R,$b){$v=array();$ic=array();foreach($b
|
||
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$ic[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
|
||
false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$ic||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$ic)));}function
|
||
found_rows($S,$Z){}function
|
||
foreign_keys($R){$J=array();$Qf=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q(get_schema()))as$K){$p=&$J[$K["FK_NAME"]];$p["db"]=$K["PKTABLE_QUALIFIER"];$p["ns"]=$K["PKTABLE_OWNER"];$p["table"]=$K["PKTABLE_NAME"];$p["on_update"]=$Qf[$K["UPDATE_RULE"]];$p["on_delete"]=$Qf[$K["DELETE_RULE"]];$p["source"][]=$K["FKCOLUMN_NAME"];$p["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
|
||
truncate_tables($T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views($Gj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Gj)));}function
|
||
drop_tables($T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables($T,$Gj,$Di){return
|
||
apply_queries("ALTER SCHEMA ".idf_escape($Di)." TRANSFER",array_merge($T,$Gj));}function
|
||
trigger($B,$R){if($B=="")return
|
||
array();$L=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));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
|
||
triggers($R){$J=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($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}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($Bh){$_GET["ns"]=$Bh;return
|
||
true;}function
|
||
create_sql($R,$_a,$ni){if(is_view(table_status1($R))){$Fj=view($R);return"CREATE VIEW ".table($R)." AS $Fj[select]";}$n=array();$G=false;foreach(fields($R)as$B=>$m){$X=process_field($m,$m);if($X[6])$G=true;$n[]=implode("",$X);}foreach(indexes($R)as$B=>$v){if(!$G||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$B=idf_escape($B);$n[]=($v["type"]=="INDEX"?"INDEX $B":"CONSTRAINT $B ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$B=>$Wa)$n[]="CONSTRAINT ".idf_escape($B)." CHECK ($Wa)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
|
||
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$jd)$n[]=ltrim(format_foreign_key($jd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function
|
||
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
|
||
use_sql($Nb){return"USE ".idf_escape($Nb);}function
|
||
trigger_sql($R){$J="";foreach(triggers($R)as$B=>$cj)$J
|
||
.=create_trigger(" ON ".table($R),trigger($B,$R)).";";return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Vc){return
|
||
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Vc);}}class
|
||
Adminer{static$instance;var$error='';function
|
||
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.3.0")."' width='24' height='24' alt='' id='logo'>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($N){return
|
||
h($N);}function
|
||
database(){return
|
||
DB;}function
|
||
databases($hd=true){return
|
||
get_databases($hd);}function
|
||
pluginsLinks(){}function
|
||
operators(){return
|
||
driver()->operators;}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
2;}function
|
||
headers(){}function
|
||
csp(array$Gb){return$Gb;}function
|
||
head($Kb=null){return
|
||
true;}function
|
||
bodyClass(){echo" adminer";}function
|
||
css(){$J=array();foreach(array("","-dark")as$qf){$o="adminer$qf.css";if(file_exists($o)){$Zc=file_get_contents($o);$J["$o?v=".crc32($Zc)]=($qf?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$Zc)?'':'light'));}}return$J;}function
|
||
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'System'.'<td>',html_select("auth[driver]",SqlDriver::$drivers,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.'Server'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.'Username'.'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password','<tr><th>'.'Password'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->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,$Hd,$Y){return$Hd.$Y."\n";}function
|
||
login($Se,$F){if($F=="")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(array$ti){return
|
||
h($ti["Name"]);}function
|
||
fieldName(array$m,$Zf=0){$U=$m["full_type"];$ob=$m["comment"];return'<span title="'.h($U.($ob!=""?($U?": ":"").$ob:'')).'">'.h($m["field"]).'</span>';}function
|
||
selectLinks(array$ti,$O=""){$B=$ti["Name"];echo'<p class="links">';$Qe=array("select"=>'Select data');if(support("table")||support("indexes"))$Qe["table"]='Show structure';$xe=false;if(support("table")){$xe=is_view($ti);if($xe)$Qe["view"]='Alter view';else$Qe["create"]='Alter table';}if($O!==null)$Qe["edit"]='New item';foreach($Qe
|
||
as$x=>$X)echo" <a href='".h(ME)."$x=".urlencode($B).($x=="edit"?$O:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
|
||
doc_link(array(JUSH=>driver()->tableHelp($B,$xe)),"?"),"\n";}function
|
||
foreignKeys($R){return
|
||
foreign_keys($R);}function
|
||
backwardKeys($R,$si){return
|
||
array();}function
|
||
backwardKeysPrint(array$Da,array$K){}function
|
||
selectQuery($H,$ji,$Tc=false){$J="</p>\n";if(!$Tc&&($Jj=driver()->warnings())){$t="warnings";$J=", <a href='#$t'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$J<div id='$t' class='hidden'>\n$Jj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($ji).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".'Edit'."</a>":"").$J;}function
|
||
sqlCommandQuery($H){return
|
||
shorten_utf8(trim($H),1000);}function
|
||
sqlPrintAfter(){}function
|
||
rowDescription($R){return"";}function
|
||
rowDescriptions(array$L,array$kd){return$L;}function
|
||
selectLink($X,array$m){}function
|
||
selectVal($X,$_,array$m,$jg){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":(preg_match('~json~',$m["type"])?"<code class='jush-js'>$X</code>":$X)));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$J="<i>".lang_format(array('%d byte','%d bytes'),strlen($jg))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
|
||
editVal($X,array$m){return$X;}function
|
||
config(){return
|
||
array();}function
|
||
tableStructurePrint(array$n,$ti=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";$mi=driver()->structuredTypes();foreach($n
|
||
as$m){echo"<tr><th>".h($m["field"]);$U=h($m["full_type"]);$c=h($m["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$mi['User types'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($ti["Collation"])&&$c!=$ti["Collation"]?" $c":""))."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".'Auto Increment'."</i>":"");$k=h($m["default"]);echo(isset($m["default"])?" <span title='".'Default value'."'>[<b>".($m["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($m["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
|
||
tableIndexesPrint(array$w,array$ti){$ug=false;foreach($w
|
||
as$B=>$v)$ug|=!!$v["partial"];echo"<table>\n";$Sb=first(driver()->indexAlgorithms($ti));foreach($w
|
||
as$B=>$v){ksort($v["columns"]);$Sg=array();foreach($v["columns"]as$x=>$X)$Sg[]="<i>".h($X)."</i>".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"<tr title='".h($B)."'>","<th>$v[type]".($Sb&&$v['algorithm']!=$Sb?" ($v[algorithm])":""),"<td>".implode(", ",$Sg);if($ug)echo"<td>".($v['partial']?"<code class='jush-".JUSH."'>WHERE ".h($v['partial']):"");echo"\n";}echo"</table>\n";}function
|
||
selectColumnsPrint(array$M,array$e){print_fieldset("select",'Select',$M);$s=0;$M[""]=array();foreach($M
|
||
as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($x!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array('Functions'=>driver()->functions,'Aggregation'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$s++;}echo"</div></fieldset>\n";}function
|
||
selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",'Search',$Z);foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h(idx($_GET["fulltext"],$s))."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"</div>\n";}$Ta="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$s][op]",adminer()->operators(),$X["op"],$Ta),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Ta }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint(array$Zf,array$e,array$w){print_fieldset("sort",'Sort',$Zf);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),'descending')."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",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='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
|
||
selectLengthPrint($Ji){if($Ji!==null)echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Ji)."'>","</div></fieldset>\n";}function
|
||
selectActionPrint(array$w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($w
|
||
as$v){$Jb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Jb)$e[$Jb]=1;}$e[""]=1;foreach($e
|
||
as$x=>$X)json_row($x);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(array$vc,array$e){}function
|
||
selectColumnsProcess(array$e,array$w){$M=array();$wd=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$wd[]=$M[$x];}}return
|
||
array($M,$wd);}function
|
||
selectSearchProcess(array$n,array$w){$J=array();foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){$hb=$X["col"];if("$hb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$sb=array();foreach(($hb!=""?array($hb=>$n[$hb]):$n)as$B=>$m){$Og="";$rb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Wd=process_length($X["val"]);$rb
|
||
.=" ".($Wd!=""?$Wd:"(NULL)");}elseif($X["op"]=="SQL")$rb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$rb=" $A[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Og="$X[op](".q($X["val"]).", ";$rb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$rb
|
||
.=" ".adminer()->processInput($m,$X["val"]);if($hb!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$sb[]=$Og.driver()->convertSearch(idf_escape($B),$X,$m).$rb;}$J[]=(count($sb)==1?$sb[0]:($sb?"(".implode(" OR ",$sb).")":"1 = 0"));}}return$J;}function
|
||
selectOrderProcess(array$n,array$w){$J=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC":"");}return$J;}function
|
||
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
|
||
selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function
|
||
selectEmailProcess(array$Z,array$kd){return
|
||
false;}function
|
||
selectQueryBuild(array$M,array$Z,array$wd,array$Zf,$z,$D){return"";}function
|
||
messageQuery($H,$Ki,$Tc=false){restart_session();$Jd=&get_session("queries");if(!idx($Jd,$_GET["db"]))$Jd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Jd[$_GET["db"]][]=array($H,time(),$Ki);$fi="sql-".count($Jd[$_GET["db"]]);$J="<a href='#$fi' class='toggle'>".'SQL command'."</a>\n";if(!$Tc&&($Jj=driver()->warnings())){$t="warnings-".count($Jd[$_GET["db"]]);$J="<a href='#$t' class='toggle'>".'Warnings'."</a>, $J<div id='$t' class='hidden'>\n$Jj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$fi' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($Ki?" <span class='time'>($Ki)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Jd[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editRowPrint($R,array$n,$K,$rj){}function
|
||
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$rj=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$rd){if(!$x||(!isset($_GET["call"])&&$rj)){foreach($rd
|
||
as$Cg=>$X){if(!$Cg||preg_match("~$Cg~",$m["type"]))$J
|
||
.="/$X";}}if($x&&$rd&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$J
|
||
.="/SQL";}if($m["auto_increment"]&&!$rj)$J='Auto Increment';return
|
||
explode("/",$J);}function
|
||
editInput($R,array$m,$ya,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$ya value='-1' checked><i>".'original'."</i></label> ":"").($m["null"]?"<label><input type='radio'$ya value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$ya,$m,$Y,$Y===0?0:null);return"";}function
|
||
editHint($R,array$m,$Y){return"";}function
|
||
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$B=$m["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$J="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$J=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$J=idf_escape($B)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($B)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($B).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$J="$r($J)";return
|
||
unconvert_field($m,$J);}function
|
||
dumpOutput(){$J=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function
|
||
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
|
||
dumpDatabase($j){}function
|
||
dumpTable($R,$ni,$xe=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($ni)dump_csv(array_keys(fields($R)));}else{if($xe==2){$n=array();foreach(fields($R)as$B=>$m)$n[]=idf_escape($B)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$ni);set_utf8mb4($h);if($ni&&$h){if($ni=="DROP+CREATE"||$xe==1)echo"DROP ".($xe==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($xe==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
|
||
dumpData($R,$ni,$H){if($ni){$af=(JUSH=="sqlite"?0:1048576);$n=array();$Sd=false;if($_POST["format"]=="sql"){if($ni=="TRUNCATE+INSERT")echo
|
||
truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n
|
||
as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Sd=true;break;}}}}$I=connection()->query($H,1);if($I){$me="";$Na="";$Be=array();$sd=array();$pi="";$Wc=($R!=''?'fetch_assoc':'fetch_row');$Cb=0;while($K=$I->$Wc()){if(!$Be){$Bj=array();foreach($K
|
||
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$sd[$m->name]=true;continue;}$Be[]=$m->name;$x=idf_escape($m->name);$Bj[]="$x = VALUES($x)";}$pi=($ni=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Bj):"").";\n";}if($_POST["format"]!="sql"){if($ni=="table"){dump_csv($Be);$ni="INSERT";}dump_csv($K);}else{if(!$me)$me="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Be)).") VALUES";foreach($K
|
||
as$x=>$X){if($sd[$x]){unset($K[$x]);continue;}$m=$n[$x];$K[$x]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$_h=($af?"\n":" ")."(".implode(",\t",$K).")";if(!$Na)$Na=$me.$_h;elseif(JUSH=='mssql'?$Cb%1000!=0:strlen($Na)+4+strlen($_h)+strlen($pi)<$af)$Na
|
||
.=",$_h";else{echo$Na.$pi;$Na=$me.$_h;}}$Cb++;}if($Na)echo$Na.$pi;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Sd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
|
||
dumpFilename($Qd){return
|
||
friendly_url($Qd!=""?$Qd:(SERVER!=""?SERVER:"localhost"));}function
|
||
dumpHeaders($Qd,$sf=false){$mg=$_POST["output"];$Oc=(preg_match('~sql~',$_POST["format"])?"sql":($sf?"tar":"csv"));header("Content-Type: ".($mg=="gz"?"application/x-gzip":($Oc=="tar"?"application/x-tar":($Oc=="sql"||$mg!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($mg=="gz"){ob_start(function($Q){return
|
||
gzencode($Q);},1e6);}return$Oc;}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($pf){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$_f=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$_f)<0?h($_f):"")."</a>","</span></h1>\n";if($pf=="auth"){$mg="";foreach((array)$_SESSION["pwds"]as$Dj=>$Rh){foreach($Rh
|
||
as$N=>$zj){$B=h(get_setting("vendor-$Dj-$N")?:get_driver($Dj));foreach($zj
|
||
as$V=>$F){if($F!==null){$Qb=$_SESSION["db"][$Dj][$N][$V];foreach(($Qb?array_keys($Qb):array(""))as$j)$mg
|
||
.="<li><a href='".h(auth_url($Dj,$N,$V,$j))."'>($B) ".h($V.($N!=""?"@".adminer()->serverName($N):"").($j!=""?" - $j":""))."</a>\n";}}}}if($mg)echo"<ul id='logins'>\n$mg</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$pf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($pf);$ia=array();if(DB==""||!$pf){if(support("sql")){$ia[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>";$ia[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>";}$ia[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>";}$Xd=$_GET["ns"]!==""&&!$pf&&DB!="";if($Xd)$ia[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>";echo($ia?"<p class='links'>\n".implode("\n",$ia)."\n":"");if($Xd){if($T)adminer()->tablesPrint($T);else
|
||
echo"<p class='message'>".'No tables.'."</p>\n";}}}function
|
||
syntaxHighlighting(array$T){echo
|
||
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.3.0",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Qe=array();foreach($T
|
||
as$R=>$U)$Qe[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Qe).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$_i=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n
|
||
as$m)$_i[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($_i)."); });\n";}}echo"</script>\n";}echo
|
||
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
|
||
databasesPrint($pf){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Ob=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".'Database'."'>".'DB'.": ".($i?html_select("db",array(""=>"")+$i,DB).$Ob:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".'Use'."'".($i?" class='hidden'":"").">\n";if(support("scheme")){if($pf!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".'Schema'.": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Ob</label>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
|
||
input_hidden($X);break;}}echo"</p></form>\n";}function
|
||
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
|
||
as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["inherited"])echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'Select data'."'>".'select'."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($P)?"view":"structure"))." title='".'Show structure'."'>$B</a>":"<span>$B</span>")."\n";}echo"</ul>\n";}}class
|
||
Plugins{private
|
||
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
|
||
__construct($Hg){if($Hg===null){$Hg=array();$Ha="adminer-plugins";if(is_dir($Ha)){foreach(glob("$Ha/*.php")as$o)$Yd=include_once"./$o";}$Id=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ha.php")){$Yd=include_once"./$Ha.php";if(is_array($Yd)){foreach($Yd
|
||
as$Gg)$Hg[get_class($Gg)]=$Gg;}else$this->error
|
||
.=sprintf('%s must <a%s>return an array</a>.',"<b>$Ha.php</b>",$Id)."<br>";}foreach(get_declared_classes()as$db){if(!$Hg[$db]&&preg_match('~^Adminer\w~i',$db)){$kh=new
|
||
\ReflectionClass($db);$xb=$kh->getConstructor();if($xb&&$xb->getNumberOfRequiredParameters())$this->error
|
||
.=sprintf('<a%s>Configure</a> %s in %s.',$Id,"<b>$db</b>","<b>$Ha.php</b>")."<br>";else$Hg[$db]=new$db;}}}$this->plugins=$Hg;$la=new
|
||
Adminer;$Hg[]=$la;$kh=new
|
||
\ReflectionObject($la);foreach($kh->getMethods()as$nf){foreach($Hg
|
||
as$Gg){$B=$nf->getName();if(method_exists($Gg,$B))$this->hooks[$B][]=$Gg;}}}function
|
||
__call($B,array$rg){$ua=array();foreach($rg
|
||
as$x=>$X)$ua[]=&$rg[$x];$J=null;foreach($this->hooks[$B]as$Gg){$Y=call_user_func_array(array($Gg,$B),$ua);if($Y!==null){if(!self::$append[$B])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
|
||
class
|
||
Plugin{protected$translations=array();function
|
||
description(){return$this->lang('');}function
|
||
screenshot(){return"";}protected
|
||
function
|
||
lang($u,$Ff=null){$ua=func_get_args();$ua[0]=idx($this->translations[LANG],$u)?:$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
|
||
Plugins(null):new
|
||
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
|
||
__construct(){parent::init();}function
|
||
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Md,$Ig)=explode(":",$N,2);$ii=adminer()->connectSsl();if($ii)$this->ssl_set($ii['key'],$ii['cert'],$ii['ca'],'','');$J=@$this->real_connect(($N!=""?$Md:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($Ig)?intval($Ig):ini_get("mysqli.default_port")),(is_numeric($Ig)?null:$Ig),($ii?($ii['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($J?'':$this->error);}function
|
||
set_charset($Va){if(parent::set_charset($Va))return
|
||
true;parent::set_charset('utf8');return$this->query("SET NAMES $Va");}function
|
||
next_result(){return
|
||
self::more_results()&&parent::next_result();}function
|
||
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
|
||
Db
|
||
extends
|
||
SqlDb{private$link;function
|
||
attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return
|
||
sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
|
||
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
|
||
set_charset($Va){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Va,$this->link))return
|
||
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Va");}function
|
||
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
|
||
select_db($Nb){return
|
||
mysql_select_db($Nb,$this->link);}function
|
||
query($H,$jj=false){$I=@($jj?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
|
||
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
|
||
true;}return
|
||
new
|
||
Result($I);}}class
|
||
Result{var$num_rows;private$result;private$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
mysql_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
mysql_fetch_row($this->result);}function
|
||
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
|
||
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_MySQL";function
|
||
attach($N,$V,$F){$Xf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$ii=adminer()->connectSsl();if($ii){if($ii['key'])$Xf[\PDO::MYSQL_ATTR_SSL_KEY]=$ii['key'];if($ii['cert'])$Xf[\PDO::MYSQL_ATTR_SSL_CERT]=$ii['cert'];if($ii['ca'])$Xf[\PDO::MYSQL_ATTR_SSL_CA]=$ii['ca'];if(isset($ii['verify']))$Xf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$ii['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$Xf);}function
|
||
set_charset($Va){return$this->query("SET NAMES $Va");}function
|
||
select_db($Nb){return$this->query("USE ".idf_escape($Nb));}function
|
||
query($H,$jj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$jj);return
|
||
parent::query($H,$jj);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="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");static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($_h=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$_h;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
|
||
__construct(Db$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->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=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->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Numbers']["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"<code class='jush-sql'>UNHEX</code>":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
|
||
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
|
||
insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$Og="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Bj=array();foreach($e
|
||
as$x)$Bj[$x]="$x = VALUES($x)";$pi="\nON DUPLICATE KEY UPDATE ".implode(", ",$Bj);$Bj=array();$y=0;foreach($L
|
||
as$O){$Y="(".implode(", ",$O).")";if($Bj&&(strlen($Og)+$y+strlen($Y)+strlen($pi)>1e6)){if(!queries($Og.implode(",\n",$Bj).$pi))return
|
||
false;$Bj=array();$y=0;}$Bj[]=$Y;$y+=strlen($Y)+2;}return
|
||
queries($Og.implode(",\n",$Bj).$pi);}function
|
||
slowQuery($H,$Li){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Li FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Li*1000).") */ $A[2]";}}function
|
||
convertSearch($u,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u);}function
|
||
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
|
||
ob_get_clean();}}function
|
||
tableHelp($B,$xe=false){$Ue=($this->conn->flavor=='maria');if(information_schema(DB))return
|
||
strtolower("information-schema-".($Ue?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ue?"mysql$B-table/":"system-schema.html");}function
|
||
partitionsInfo($R){$pd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $pd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$zg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $pd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($zg);$J["partition_values"]=array_values($zg);return$J;}function
|
||
hasCStyleEscapes(){static$Qa;if($Qa===null){$gi=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Qa=(strpos($gi,'NO_BACKSLASH_ESCAPES')===false);}return$Qa;}function
|
||
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
|
||
indexAlgorithms(array$ti){return(preg_match('~^(MEMORY|NDB)$~',$ti["Engine"])?array("HASH","BTREE"):array());}}function
|
||
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($hd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
|
||
limit($H,$Z,$z,$C=0,$Mh=" "){return" $H$Z".($z?$Mh."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($R,$H,$Z,$Mh="\n"){return
|
||
limit($H,$Z,1,0,$Mh);}function
|
||
db_collation($j,array$jb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$J=$jb[$A[1]][-1];return$J;}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(array$i){$J=array();foreach($i
|
||
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
|
||
table_status($B="",$Uc=false){$J=array();foreach(get_rows($Uc?"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$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")$K["Name"]=$B;$J[$K["Name"]]=$K;}return$J;}function
|
||
is_view(array$S){return$S["Engine"]===null;}function
|
||
fk_support(array$S){return
|
||
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
|
||
fields($R){$Ue=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$m=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$td=$K["GENERATION_EXPRESSION"];$Rc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Rc,$sd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Xe);$k=$K["COLUMN_DEFAULT"];if($k!=""){$we=preg_match('~text|json~',$Xe[1]);if(!$Ue&&$we)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($Ue||$we){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return
|
||
stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$Ue&&preg_match('~binary~',$Xe[1])&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Xe[1],"length"=>$Xe[2],"unsigned"=>ltrim($Xe[3].$Xe[4]),"default"=>($sd?($Ue?$td:stripslashes($td)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Rc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Rc,$A)?$A[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($sd[1]=="PERSISTENT"?"STORED":$sd[1]),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;$J[$B]["algorithm"]=$K["Index_type"];}return$J;}function
|
||
foreign_keys($R){static$Cg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Db=get_val("SHOW CREATE TABLE ".table($R),1);if($Db){preg_match_all("~CONSTRAINT ($Cg) FOREIGN KEY ?\\(((?:$Cg,? ?)+)\\) REFERENCES ($Cg)(?:\\.($Cg))? \\(((?:$Cg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Db,$Ye,PREG_SET_ORDER);foreach($Ye
|
||
as$A){preg_match_all("~$Cg~",$A[2],$ai);preg_match_all("~$Cg~",$A[5],$Di);$J[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',$ai[0]),"target"=>array_map('Adminer\idf_unescape',$Di[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function
|
||
view($B){return
|
||
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function
|
||
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
|
||
as$x=>$X)sort($J[$x]);return$J;}function
|
||
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
|
||
error(){return
|
||
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" COLLATE ".q($c):""));}function
|
||
drop_databases(array$i){$J=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
|
||
rename_database($B,$c){$J=false;if(create_database($B,$c)){$T=array();$Gj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Gj[]=$R;else$T[]=$R;}$J=(!$T&&!$Gj)||move_tables($T,$Gj,$B);drop_databases($J?array(DB):array());}return$J;}function
|
||
auto_increment(){$Aa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Aa="";break;}if($v["type"]=="PRIMARY")$Aa=" UNIQUE";}}return" AUTO_INCREMENT$Aa";}function
|
||
alter_table($R,$B,array$n,array$jd,$ob,$yc,$c,$_a,$E){$b=array();foreach($n
|
||
as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$jd);$P=($ob!==null?" COMMENT=".q($ob):"").($yc?" ENGINE=".q($yc):"").($c?" COLLATE ".q($c):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($E){$zg=array();if($E["partition_by"]=='RANGE'||$E["partition_by"]=='LIST'){foreach($E["partition_names"]as$x=>$X){$Y=$E["partition_values"][$x];$zg[]="\n PARTITION ".idf_escape($X)." VALUES ".($E["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P
|
||
.="\nPARTITION BY $E[partition_by]($E[partition])";if($zg)$P
|
||
.=" (".implode(",",$zg)."\n)";elseif($E["partitions"])$P
|
||
.=" PARTITIONS ".(+$E["partitions"]);}elseif($E===null)$P
|
||
.="\nREMOVE PARTITIONING";if($R=="")return
|
||
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function
|
||
alter_indexes($R,$b){$Ua=array();foreach($b
|
||
as$X)$Ua[]=($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($R).implode(",",$Ua));}function
|
||
truncate_tables(array$T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views(array$Gj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Gj)));}function
|
||
drop_tables(array$T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables(array$T,array$Gj,$Di){$oh=array();foreach($T
|
||
as$R)$oh[]=table($R)." TO ".idf_escape($Di).".".table($R);if(!$oh||queries("RENAME TABLE ".implode(", ",$oh))){$Wb=array();foreach($Gj
|
||
as$R)$Wb[table($R)]=view($R);connection()->select_db($Di);$j=idf_escape(DB);foreach($Wb
|
||
as$B=>$Fj){if(!queries("CREATE VIEW $B AS ".str_replace(" $j."," ",$Fj["select"]))||!queries("DROP VIEW $j.$B"))return
|
||
false;}return
|
||
true;}return
|
||
false;}function
|
||
copy_tables(array$T,array$Gj,$Di){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
|
||
as$R){$B=($Di==DB?table("copy_$R"):idf_escape($Di).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return
|
||
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$cj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Di==DB?idf_escape("copy_$cj"):idf_escape($Di).".".idf_escape($cj))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return
|
||
false;}}foreach($Gj
|
||
as$R){$B=($Di==DB?table("copy_$R"):idf_escape($Di).".".table($R));$Fj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Fj[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($B,$R){if($B=="")return
|
||
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
|
||
reset($L);}function
|
||
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
routine($B,$U){$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$bi="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$_c=driver()->enumLength;$hj="((".implode("|",array_merge(array_keys(driver()->types()),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$_c)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Cg="$bi*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$hj";$h=get_val("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$Cg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$hj\\s+":"")."(.*)~is",$h,$A);$n=array();preg_match_all("~$Cg\\s*,?~is",$A[1],$Ye,PREG_SET_ORDER);foreach($Ye
|
||
as$qg)$n[]=array("field"=>str_replace("``","`",$qg[2]).$qg[3],"type"=>strtolower($qg[5]),"length"=>preg_replace_callback("~$_c~s",'Adminer\normalize_enum',$qg[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$qg[8] $qg[7]"))),"null"=>true,"full_type"=>$qg[4],"inout"=>strtoupper($qg[1]),"collation"=>strtolower($qg[9]),);return
|
||
array("fields"=>$n,"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,array$K){return
|
||
idf_escape($B);}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ID()");}function
|
||
explain(Db$f,$H){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
|
||
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
|
||
create_sql($R,$_a,$ni){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$_a)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
|
||
truncate_sql($R){return"TRUNCATE ".table($R);}function
|
||
use_sql($Nb){return"USE ".idf_escape($Nb);}function
|
||
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
|
||
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
|
||
show_variables(){return
|
||
get_rows("SHOW VARIABLES");}function
|
||
show_status(){return
|
||
get_rows("SHOW STATUS");}function
|
||
process_list(){return
|
||
get_rows("SHOW FULL PROCESSLIST");}function
|
||
convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function
|
||
unconvert_field(array$m,$J){if(preg_match("~binary~",$m["type"]))$J="UNHEX($J)";if($m["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$Og=(min_version(8)?"ST_":"");$J=$Og."GeomFromText($J, $Og"."SRID($m[field]))";}return$J;}function
|
||
support($Vc){return
|
||
preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Vc);}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");}function
|
||
types(){return
|
||
array();}function
|
||
type_values($t){return"";}function
|
||
schemas(){return
|
||
array();}function
|
||
get_schema(){return"";}function
|
||
set_schema($Bh,$g=null){return
|
||
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
|
||
page_header($Ni,$l="",$Ma=array(),$Oi=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Pi=$Ni.($Oi!=""?": $Oi":"");$Qi=strip_tags($Pi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->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,initial-scale=1">
|
||
<title>',$Qi,'</title>
|
||
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.3.0"),'">
|
||
';$Hb=adminer()->css();if(is_int(key($Hb)))$Hb=array_fill_keys($Hb,'light');$Ed=in_array('light',$Hb)||in_array('',$Hb);$Cd=in_array('dark',$Hb)||in_array('',$Hb);$Kb=($Ed?($Cd?null:false):($Cd?:null));$gf=" media='(prefers-color-scheme: dark)'";if($Kb!==false)echo"<link rel='stylesheet'".($Kb?"":$gf)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.3.0")."'>\n";echo"<meta name='color-scheme' content='".($Kb===null?"light dark":($Kb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.3.0");if(adminer()->head($Kb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.3.0")."'>\n";foreach($Hb
|
||
as$tj=>$qf){$ya=($qf=='dark'&&!$Kb?$gf:($qf=='light'&&$Cd?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$ya href='".h($tj)."'>\n";}echo"\n<body class='".'ltr'." nojs";adminer()->bodyClass();echo"'>\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Ej=unserialize(file_get_contents($o));$Yg="-----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($Ej["version"],base64_decode($Ej["signature"]),$Yg)==1)$_COOKIE["adminer_version"]=$Ej["version"];}echo
|
||
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."});
|
||
document.body.classList.replace('nojs', 'js');
|
||
const offlineMessage = '".js_escape('You are offline.')."';
|
||
const thousandsSeparator = '".js_escape(',')."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ma!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.get_driver(DRIVER).'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:'Server');if($Ma===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ma)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ma)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ma
|
||
as$x=>$X){$Yb=(is_array($X)?$X[1]:h($X));if($Yb!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$Yb</a> » ";}}echo"$Ni\n";}}echo"<h2>$Pi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
|
||
page_headers(){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(adminer()->csp(csp())as$Gb){$Gd=array();foreach($Gb
|
||
as$x=>$X)$Gd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Gd));}adminer()->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$Bf;if(!$Bf)$Bf=base64_encode(rand_string());return$Bf;}function
|
||
page_messages($l){$sj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$mf=idx($_SESSION["messages"],$sj);if($mf){echo"<div class='message'>".implode("</div>\n<div class='message'>",$mf)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$sj]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
|
||
page_footer($pf=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($pf);echo"</div>\n";if($pf!="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_token(),'</form>
|
||
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
|
||
int32($uf){while($uf>=2147483648)$uf-=4294967296;while($uf<=-2147483649)$uf+=4294967296;return(int)$uf;}function
|
||
long2str(array$W,$Ij){$_h='';foreach($W
|
||
as$X)$_h
|
||
.=pack('V',$X);if($Ij)return
|
||
substr($_h,0,end($W));return$_h;}function
|
||
str2long($_h,$Ij){$W=array_values(unpack('V*',str_pad($_h,4*ceil(strlen($_h)/4),"\0")));if($Ij)$W[]=strlen($_h);return$W;}function
|
||
xxtea_mx($Pj,$Oj,$qi,$_e){return
|
||
int32((($Pj>>5&0x7FFFFFF)^$Oj<<2)+(($Oj>>3&0x1FFFFFFF)^$Pj<<4))^int32(($qi^$Oj)+($_e^$Pj));}function
|
||
encrypt_string($li,$x){if($li=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($li,true);$uf=count($W)-1;$Pj=$W[$uf];$Oj=$W[0];$Zg=floor(6+52/($uf+1));$qi=0;while($Zg-->0){$qi=int32($qi+0x9E3779B9);$pc=$qi>>2&3;for($og=0;$og<$uf;$og++){$Oj=$W[$og+1];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Pj=int32($W[$og]+$tf);$W[$og]=$Pj;}$Oj=$W[0];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Pj=int32($W[$uf]+$tf);$W[$uf]=$Pj;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($li,$x){if($li=="")return"";if(!$x)return
|
||
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($li,false);$uf=count($W)-1;$Pj=$W[$uf];$Oj=$W[0];$Zg=floor(6+52/($uf+1));$qi=int32($Zg*0x9E3779B9);while($qi){$pc=$qi>>2&3;for($og=$uf;$og>0;$og--){$Pj=$W[$og-1];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Oj=int32($W[$og]-$tf);$W[$og]=$Oj;}$Pj=$W[$uf];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Oj=int32($W[0]-$tf);$W[0]=$Oj;$qi=int32($qi-0x9E3779B9);}return
|
||
long2str($W,true);}$Eg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$Eg[$x]=$X;}}function
|
||
add_invalid_login(){$Fa=get_temp_dir()."/adminer.invalid";foreach(glob("$Fa*")?:array($Fa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Fa-".rand_string());if(!$q)return;$re=unserialize(stream_get_contents($q));$Ki=time();if($re){foreach($re
|
||
as$se=>$X){if($X[0]<$Ki)unset($re[$se]);}}$qe=&$re[adminer()->bruteForceKey()];if(!$qe)$qe=array($Ki+30*60,0);$qe[1]++;file_write_unlock($q,serialize($re));}function
|
||
check_invalid_login(array&$Eg){$re=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$re=unserialize(stream_get_contents($q));file_unlock($q);break;}}$qe=idx($re,adminer()->bruteForceKey(),array());$Af=($qe[1]>29?$qe[0]-time():0);if($Af>0)auth_error(lang_format(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Af/60)),$Eg);}$za=$_POST["auth"];if($za){session_regenerate_id();$Dj=$za["driver"];$N=$za["server"];$V=$za["username"];$F=(string)$za["password"];$j=$za["db"];set_password($Dj,$N,$V,$F);$_SESSION["db"][$Dj][$N][$V][$j]=true;if($za["permanent"]){$x=implode("-",array_map('base64_encode',array($Dj,$N,$V,$j)));$Tg=adminer()->permanentLogin(true);$Eg[$x]="$x:".base64_encode($Tg?encrypt_string($F,$Tg):"");cookie("adminer_permanent",implode(" ",$Eg));}if(count($_POST)==1||DRIVER!=$Dj||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Dj,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($Eg);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($Eg&&!$_SESSION["pwds"]){session_regenerate_id();$Tg=adminer()->permanentLogin();foreach($Eg
|
||
as$x=>$X){list(,$cb)=explode(":",$X);list($Dj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($Dj,$N,$V,decrypt_string(base64_decode($cb),$Tg));$_SESSION["db"][$Dj][$N][$V][$j]=true;}}function
|
||
unset_permanent(array&$Eg){foreach($Eg
|
||
as$x=>$X){list($Dj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($Dj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Eg[$x]);}cookie("adminer_permanent",implode(" ",$Eg));}function
|
||
auth_error($l,array&$Eg){$Sh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Sh]||$_GET[$Sh])&&!$_SESSION["token"])$l='Session expired, please login again.';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$l
|
||
.=($l?'<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($Eg);}}if(!$_COOKIE[$Sh]&&$_GET[$Sh]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$rg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$rg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$l,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";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Eg);page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Md,$Ig)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$Ig,$A)&&($A[1]<1024||$A[1]>65535))auth_error('Connecting to privileged ports is not allowed.',$Eg);check_invalid_login($Eg);$Fb=adminer()->credentials();$f=Driver::connect($Fb[0],$Fb[1],$Fb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new
|
||
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Se=null;if(!is_object($f)||($Se=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($Se)?$Se:'Invalid credentials.')).(preg_match('~^ | $~',get_password())?'<br>'.'There is a space in the input password which might be the cause.':'');auth_error($l,$Eg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($za&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$je="max_input_vars";$ef=ini_get($je);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$ef||$X<$ef)){$je=$x;$ef=$X;}}}$l=(!$_POST["token"]&&$ef?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$je'"):'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"){$l=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$l
|
||
.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
|
||
print_select_result($I,$g=null,array$dg=array(),$z=0){$Qe=array();$w=array();$e=array();$Ka=array();$ij=array();$J=array();for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($ye=0;$ye<count($K);$ye++){$m=$I->fetch_field();$B=$m->name;$cg=(isset($m->orgtable)?$m->orgtable:"");$bg=(isset($m->orgname)?$m->orgname:$B);if($dg&&JUSH=="sql")$Qe[$ye]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($cg!=""){if(isset($m->table))$J[$m->table]=$cg;if(!isset($w[$cg])){$w[$cg]=array();foreach(indexes($cg,$g)as$v){if($v["type"]=="PRIMARY"){$w[$cg]=array_flip($v["columns"]);break;}}$e[$cg]=$w[$cg];}if(isset($e[$cg][$bg])){unset($e[$cg][$bg]);$w[$cg][$bg]=$ye;$Qe[$ye]=$cg;}}if($m->charsetnr==63)$Ka[$ye]=true;$ij[$ye]=$m->type;echo"<th".($cg!=""||$m->name!=$bg?" title='".h(($cg!=""?"$cg.":"").$bg)."'":"").">".h($B).($dg?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
|
||
as$x=>$X){$_="";if(isset($Qe[$x])&&!$e[$Qe[$x]]){if($dg&&JUSH=="sql"){$R=$K[array_search("table=",$Qe)];$_=ME.$Qe[$x].urlencode($dg[$R]!=""?$dg[$R]:$R);}else{$_=ME."edit=".urlencode($Qe[$x]);foreach($w[$Qe[$x]]as$hb=>$ye)$_
|
||
.="&where".urlencode("[".bracket_escape($hb)."]")."=".urlencode($K[$ye]);}}elseif(is_url($X))$_=$X;if($X===null)$X="<i>NULL</i>";elseif($Ka[$x]&&!is_utf8($X))$X="<i>".lang_format(array('%d byte','%d bytes'),strlen($X))."</i>";else{$X=h($X);if($ij[$x]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($ij[$x]<=9||$ij[$x]==246?" class='number'":"").">$X";}}echo($s?"</table>\n</div>":"<p class='message'>".'No rows.')."\n";return$J;}function
|
||
referencable_primary($Kh){$J=array();foreach(table_status('',true)as$vi=>$R){if($vi!=$Kh&&fk_support($R)){foreach(fields($vi)as$m){if($m["primary"]){if($J[$vi]){unset($J[$vi]);break;}$J[$vi]=$m;}}}}return$J;}function
|
||
textarea($B,$Y,$L=10,$kb=80){echo"<textarea name='".h($B)."' rows='$L' cols='$kb' 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,array$Xf,$Y="",$Rf="",$Fg=""){$Ci=($Xf?"select":"input");return"<$Ci$ya".($Xf?"><option value=''>$Fg".optionlist($Xf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Fg'>").($Rf?script("qsl('$Ci').onchange = $Rf;",""):"");}function
|
||
json_row($x,$X=null){static$bd=true;if($bd)echo"{";if($x!=""){echo($bd?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$bd=false;}else{echo"\n}\n";$bd=true;}}function
|
||
edit_type($x,array$m,array$jb,array$ld=array(),array$Sc=array()){$U=$m["type"];echo"<td><select name='".h($x)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($ld[$U])&&!in_array($U,$Sc))$Sc[]=$U;$mi=driver()->structuredTypes();if($ld)$mi['Foreign keys']=$ld;echo
|
||
optionlist(array_merge($Sc,$mi),$U),"</select><td>","<input name='".h($x)."[length]' value='".h($m["length"])."' size='3'".(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($jb?"<input list='collations' name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($m["collation"])."' placeholder='(".'collation'.")'>":''),(driver()->unsigned?"<select name='".h($x)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"CURRENT_TIMESTAMP":$m["on_update"])).'</select>':''),($ld?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
|
||
process_length($y){$Bc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$Bc(?:\\s*,\\s*$Bc)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$Bc~",$y,$Ye)?"(".implode(",",$Ye[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
|
||
process_type(array$m,$ib="COLLATE"){return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],driver()->unsigned)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $ib ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
|
||
process_field(array$m,array$gj){if($m["on_update"])$m["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$m["on_update"]);return
|
||
array(idf_escape(trim($m["field"])),process_type($gj),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
|
||
default_value(array$m){$k=$m["default"];$sd=$m["generated"];return($k===null?"":(in_array($sd,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($sd=="VIRTUAL"?"":" $sd")."":" GENERATED ALWAYS AS ($k) $sd"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$k)&&(preg_match('~char|binary|text|json|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$k))?(JUSH=="sql"&&preg_match('~text|json~',$m["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$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}function
|
||
edit_fields(array$n,array$jb,$U="TABLE",array$ld=array()){$n=array_values($n);$Tb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$pb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($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'$Tb>".'Default value',(support("comment")?"<td id='label-comment'$pb>".'Comment':"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($n))."]","+",'Add next'),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
|
||
as$s=>$m){$s++;$eg=$m[($_POST?"orig":"field")];$ec=(isset($_POST["add"][$s-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$s)))&&(support("drop_col")||$eg=="");echo"<tr".($ec?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>";if($ec)echo"<input name='fields[$s][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>";echo
|
||
input_hidden("fields[$s][orig]",$eg);edit_type("fields[$s]",$m,$jb,$ld);if($U=="TABLE")echo"<td>".checkbox("fields[$s][null]",1,$m["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$s'".($m["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Tb>".(driver()->generated?html_select("fields[$s][generated]",array_merge(array("","DEFAULT"),driver()->generated),$m["generated"])." ":checkbox("fields[$s][generated]",1,$m["generated"],"","","","label-default")),"<input name='fields[$s][default]' value='".h($m["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$pb><input name='fields[$s][comment]' value='".h($m["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?icon("plus","add[$s]","+",'Add next')." ".icon("up","up[$s]","↑",'Move up')." ".icon("down","down[$s]","↓",'Move down')." ":""),($eg==""||support("drop_col")?icon("cross","drop_col[$s]","x",'Remove'):"");}}function
|
||
process_fields(array&$n){$C=0;if($_POST["up"]){$He=0;foreach($n
|
||
as$x=>$m){if(key($_POST["up"])==$x){unset($n[$x]);array_splice($n,$He,0,array($m));break;}if(isset($m["field"]))$He=$C;$C++;}}elseif($_POST["down"]){$nd=false;foreach($n
|
||
as$x=>$m){if(isset($m["field"])&&$nd){unset($n[key($_POST["down"])]);array_splice($n,$C,0,array($nd));break;}if(key($_POST["down"])==$x)$nd=$m;$C++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
|
||
false;return
|
||
true;}function
|
||
normalize_enum(array$A){$X=$A[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
|
||
grant($ud,array$Vg,$e,$Of){if(!$Vg)return
|
||
true;if($Vg==array("ALL PRIVILEGES","GRANT OPTION"))return($ud=="GRANT"?queries("$ud ALL PRIVILEGES$Of WITH GRANT OPTION"):queries("$ud ALL PRIVILEGES$Of")&&queries("$ud GRANT OPTION$Of"));return
|
||
queries("$ud ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Vg).$e).$Of);}function
|
||
drop_create($ic,$h,$kc,$Gi,$mc,$Re,$lf,$jf,$kf,$Lf,$yf){if($_POST["drop"])query_redirect($ic,$Re,$lf);elseif($Lf=="")query_redirect($h,$Re,$kf);elseif($Lf!=$yf){$Eb=queries($h);queries_redirect($Re,$jf,$Eb&&queries($ic));if($Eb)queries($kc);}else
|
||
queries_redirect($Re,$jf,queries($Gi)&&queries($mc)&&queries($ic)&&queries($h));}function
|
||
create_trigger($Of,array$K){$Mi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Of.$Mi:$Mi.$Of).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
|
||
create_routine($wh,array$K){$O=array();$n=(array)$K["fields"];ksort($n);foreach($n
|
||
as$m){if($m["field"]!="")$O[]=(preg_match("~^(".driver()->inout.")\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$Vb=rtrim($K["definition"],";");return"CREATE $wh ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($wh=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Vb):"\n$Vb;");}function
|
||
remove_definer($H){return
|
||
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
|
||
format_foreign_key(array$p){$j=$p["db"];$Cf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($Cf!=""&&$Cf!=$_GET["ns"]?idf_escape($Cf).".":"").idf_escape($p["table"])." (".implode(", ",array_map('Adminer\idf_escape',$p["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
|
||
tar_file($o,$Ri){$J=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($Ri->size),decoct(time()));$bb=8*32;for($s=0;$s<strlen($J);$s++)$bb+=ord($J[$s]);$J
|
||
.=sprintf("%06o",$bb)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$Ri->send();echo
|
||
str_repeat("\0",511-($Ri->size+511)%512);}function
|
||
ini_bytes($je){$X=ini_get($je);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(array$Bg,$Hi="<sup>?</sup>"){$Qh=connection()->server_info;$Ej=preg_replace('~^(\d\.?\d).*~s','\1',$Qh);$uj=array('sql'=>"https://dev.mysql.com/doc/refman/$Ej/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$Ej)."/",'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',$Qh)."&id=",);if(connection()->flavor=='maria'){$uj['sql']="https://mariadb.com/kb/en/";$Bg['sql']=(isset($Bg['mariadb'])?$Bg['mariadb']:str_replace(".html","/",$Bg['sql']));}return($Bg[JUSH]?"<a href='".h($uj[JUSH].$Bg[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Ej":""))."'".target_blank().">$Hi</a>":"");}function
|
||
db_size($j){if(!connection()->select_db($j))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
|
||
format_number($J);}function
|
||
set_utf8mb4($h){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$h)){$O=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->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"]&&!$l)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$l,false);echo"<p class='links'>\n";foreach(array('database'=>'Create database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$x=>$X){if(support($x))echo"<a href='".h(ME)."$x='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$i=adminer()->databases();if($i){$Dh=support("scheme");$jb=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=>$T){$vh=h(ME)."db=".urlencode($j);$t=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"<th><a href='$vh' id='$t'>".h($j)."</a>";$c=h(db_collation($j,$jb));echo"<td>".(support("database")?"<a href='$vh".($Dh?"&ns=":"")."&database=' title='".'Alter database'."'>$c</a>":$c),"<td align='right'><a href='$vh&schema=' id='tables-".h($j)."' title='".'Database schema'."'>".($_GET["dbsize"]?$T:"?")."</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_hidden("all").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_token(),"</form>\n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".'Loaded plugins'."</h3>\n<ul>\n";foreach(adminer()->plugins
|
||
as$Gg){$Zb=(method_exists($Gg,'description')?$Gg->description():"");if(!$Zb){$kh=new
|
||
\ReflectionObject($Gg);if(preg_match('~^/[\s*]+(.+)~',$kh->getDocComment(),$A))$Zb=$A[1];}$Eh=(method_exists($Gg,'screenshot')?$Gg->screenshot():"");echo"<li><b>".get_class($Gg)."</b>".h($Zb?": $Zb":"").($Eh?" (<a href='".h($Eh)."'".target_blank().">".'screenshot'."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}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;var$size;function
|
||
__construct(){$this->handler=tmpfile();}function
|
||
write($zb){$this->size+=strlen($zb);fwrite($this->handler,$zb);}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"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$n)),$M);$K=($I?$I->fetch_row():array());echo
|
||
driver()->value($K[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:'No tables.';$S=table_status1($a);$B=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($B!=""?$B:h($a)),$l);$uh=array();foreach($n
|
||
as$x=>$m)$uh+=$m["privileges"];adminer()->selectLinks($S,(isset($uh["insert"])||!support("table")?"":null));$ob=$S["Comment"];if($ob!="")echo"<p class='nowrap'>".'Comment'.": ".h($ob)."\n";function
|
||
tables_links($T){echo"<ul>\n";foreach($T
|
||
as$R)echo"<li><a href='".h(ME."table=".urlencode($R))."'>".h($R)."</a>";echo"</ul>\n";}$ie=driver()->inheritsFrom($a);if($ie){echo"<h3>".'Inherits from'."</h3>\n";tables_links($ie);}elseif($n)adminer()->tableStructurePrint($n,$S);if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$ld=foreign_keys($a);if($ld){echo"<table>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($ld
|
||
as$B=>$p){echo"<tr title='".h($B)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$p["source"]))."</i>";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($p["table"]))."'>".($p["db"]!=""&&$p["db"]!=DB?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$p["target"]))."</i>)","<td>".h($p["on_delete"]),"<td>".h($p["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";$Xa=driver()->checkConstraints($a);if($Xa){echo"<table>\n";foreach($Xa
|
||
as$x=>$X)echo"<tr title='".h($x)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($x))."'>".'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($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$fj=triggers($a);if($fj){echo"<table>\n";foreach($fj
|
||
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}$he=driver()->inheritedTables($a);if($he){echo"<h3 id='partitions'>".'Partitions'."</h3>\n";$vg=driver()->partitionsInfo($a);if($vg)echo"<p><code class='jush-".JUSH."'>BY ".h("$vg[partition_by]($vg[partition])")."</code>\n";tables_links($he);}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$xi=array();$yi=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$Ye,PREG_SET_ORDER);foreach($Ye
|
||
as$s=>$A){$xi[$A[1]]=array($A[2],$A[3]);$yi[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$Ui=0;$Ga=-1;$Bh=array();$jh=array();$Le=array();$sa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Jg=0;$Bh[$R]["fields"]=array();foreach($sa[$R]as$m){$Jg+=1.25;$m["pos"]=$Jg;$Bh[$R]["fields"][$m["field"]]=$m;}$Bh[$R]["pos"]=($xi[$R]?:array($Ui,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$Je=$Ga;if(idx($xi[$R],1)||idx($xi[$X["table"]],1))$Je=min(idx($xi[$R],1,0),idx($xi[$X["table"]],1,0))-1;else$Ga-=.1;while($Le[(string)$Je])$Je-=.0001;$Bh[$R]["references"][$X["table"]][(string)$Je]=array($X["source"],$X["target"]);$jh[$X["table"]][$R][(string)$Je]=$X["target"];$Le[(string)$Je]=true;}}$Ui=max($Ui,$Bh[$R]["pos"][0]+2.5+$Jg);}echo'<div id="schema" style="height: ',$Ui,'em;">
|
||
<script',nonce(),'>
|
||
qs(\'#schema\').onselectstart = () => false;
|
||
const tablePos = {',implode(",",$yi)."\n",'};
|
||
const em = qs(\'#schema\').offsetHeight / ',$Ui,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
|
||
</script>
|
||
';foreach($Bh
|
||
as$B=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($B).'"><b>'.h($B)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X='<span'.type_class($m["type"]).' title="'.h($m["type"].($m["length"]?"($m[length])":"").($m["null"]?" NULL":'')).'">'.h($m["field"]).'</span>';echo"<br>".($m["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$Ei=>$lh){foreach($lh
|
||
as$Je=>$gh){$Ke=$Je-idx($xi[$B],1);$s=0;foreach($gh[0]as$ai)echo"\n<div class='references' title='".h($Ei)."' id='refs$Je-".($s++)."' style='left: $Ke"."em; top: ".$R["fields"][$ai]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$Ke)."em;'></div></div>";}}foreach((array)$jh[$B]as$Ei=>$lh){foreach($lh
|
||
as$Je=>$e){$Ke=$Je-idx($xi[$B],1);$s=0;foreach($e
|
||
as$Di)echo"\n<div class='references arrow' title='".h($Ei)."' id='refd$Je-".($s++)."' style='left: $Ke"."em; top: ".$R["fields"][$Di]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$Ke)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Bh
|
||
as$B=>$R){foreach((array)$R["references"]as$Ei=>$lh){foreach($lh
|
||
as$Je=>$gh){$of=$Ui;$cf=-10;foreach($gh[0]as$x=>$ai){$Kg=$R["pos"][0]+$R["fields"][$ai]["pos"];$Lg=$Bh[$Ei]["pos"][0]+$Bh[$Ei]["fields"][$gh[1][$x]]["pos"];$of=min($of,$Kg,$Lg);$cf=max($cf,$Kg,$Lg);}echo"<div class='references' id='refl$Je' style='left: $Je"."em; top: $of"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($cf-$of)."em;'></div></div>\n";}}}echo'</div>
|
||
<p class="links"><a href="',h(ME."schema=".urlencode($ca)),'" id="schema-link">Permanent link</a>
|
||
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){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");$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Oc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$ve=preg_match('~sql~',$_POST["format"]);if($ve){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->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';
|
||
":"")."
|
||
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$ni=$_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){adminer()->dumpDatabase($j);if(connection()->select_db($j)){if($ve&&preg_match('~CREATE~',$ni)&&($h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1))){set_utf8mb4($h);if($ni=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo"$h;\n";}if($ve){if($ni)echo
|
||
use_sql($j).";\n\n";$lg="";if($_POST["types"]){foreach(types()as$t=>$U){$Cc=type_values($t);if($Cc)$lg
|
||
.=($ni!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($Cc);\n\n";else$lg
|
||
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$B=$K["ROUTINE_NAME"];$wh=$K["ROUTINE_TYPE"];$h=create_routine($wh,array("name"=>$B)+routine($K["SPECIFIC_NAME"],$wh));set_utf8mb4($h);$lg
|
||
.=($ni!='DROP+CREATE'?"DROP $wh IF EXISTS ".idf_escape($B).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($h);$lg
|
||
.=($ni!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}echo($lg&&JUSH=='sql'?"DELIMITER ;;\n\n$lg"."DELIMITER ;\n\n":$lg);}if($_POST["table_style"]||$_POST["data_style"]){$Gj=array();foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));$Lb=(DB==""||in_array($B,(array)$_POST["data"]));if($R||$Lb){$Ri=null;if($Oc=="tar"){$Ri=new
|
||
TmpFile;ob_start(array($Ri,'write'),1e5);}adminer()->dumpTable($B,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Gj[]=$B;elseif($Lb){$n=fields($B);adminer()->dumpData($B,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($B));}if($ve&&$_POST["triggers"]&&$R&&($fj=trigger_sql($B)))echo"\nDELIMITER ;;\n$fj\nDELIMITER ;\n";if($Oc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$B.csv",$Ri);}elseif($ve)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));if($R&&!is_view($S))echo
|
||
foreign_keys_sql($B);}}foreach($Gj
|
||
as$Fj)adminer()->dumpTable($Fj,$_POST["table_style"],1);if($Oc=="tar")echo
|
||
pack("x512");}}}adminer()->dumpFooter();exit;}page_header('Export',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
';$Pb=array('','USE','DROP+CREATE','CREATE');$zi=array('','DROP+CREATE','CREATE');$Mb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Mb[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"<tr><th>".'Output'."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$Pb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],'User types'):"").(support("routine")?checkbox("routines",1,$K["routines"],'Routines'):"").(support("event")?checkbox("events",1,$K["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$zi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$K["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$Mb,$K["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
',input_token(),'
|
||
<table>
|
||
',script("qsl('table').onclick = dumpClick;");$Pg=array();if(DB!=""){$Za=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Za>".'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'$Za></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Gj="";$Ai=tables_list();foreach($Ai
|
||
as$B=>$U){$Og=preg_replace('~_.*~','',$B);$Za=($a==""||$a==(substr($a,-1)=="%"?"$Og%":$B));$Sg="<tr><td>".checkbox("tables[]",$B,$Za,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$Gj
|
||
.="$Sg\n";else
|
||
echo"$Sg<td align='right'><label class='block'><span id='Rows-".h($B)."'></span>".checkbox("data[]",$B,$Za)."</label>\n";$Pg[$Og]++;}echo$Gj;if($Ai)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=adminer()->databases();if($i){foreach($i
|
||
as$j){if(!information_schema($j)){$Og=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$Og%",$j,"","block")."\n";$Pg[$Og]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$bd=true;foreach($Pg
|
||
as$x=>$X){if($x!=""&&$X>1){echo($bd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$bd=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');echo'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$ud=$I;if(!$I)$I=connection()->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_hidden("db",DB),($ud?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th></thead>\n";while($K=$I->fetch_assoc())echo'<tr><td>'.h($K["User"])."<td>".h($K["Host"]).'<td><a href="'.h(ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.'Edit'."</a>\n";if(!$ud||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(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();exit;}restart_session();$Kd=&get_session("queries");$Jd=&$Kd[DB];if(!$l&&$_POST["clear"]){$Jd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Import':'SQL command'),$l);$Pe='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$ei=adminer()->importServerPath();$q=@fopen((file_exists($ei)?$ei:"compress.zlib://$ei.gz"),"rb");$H=($q?fread($q,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($hf=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($hf,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$Zg=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Jd||first(end($Jd))!=$Zg){restart_session();$Jd[]=array($Zg,time());set_session("queries",$Kd);stop_session();}}$bi="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Pe)[^\n]*\n?|--\r?\n)";$Xb=";";$C=0;$xc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$nb=0;$Ec=array();$sg='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Pe.'|$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$Vi=microtime(true);$ma=get_settings("adminer_import");$oc=adminer()->dumpFormat();unset($oc["sql"]);while($H!=""){if(!$C&&preg_match("~^$bi*+DELIMITER\\s+(\\S+)~i",$H,$A)){$Xb=preg_quote($A[1]);$H=substr($H,strlen($A[0]));}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^($bi*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$A)){$Xb="\n\\\\\\.\r?\n";$C=strlen($A[0]);}else{preg_match("($Xb\\s*|$sg)",$H,$A,PREG_OFFSET_CAPTURE,$C);list($nd,$Jg)=$A[0];if(!$nd&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{if(!$nd&&rtrim($H)=="")break;$C=$Jg+strlen($nd);if($nd&&!preg_match("(^$Xb)",$nd)){$Ra=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($Jg>0&&strtolower($H[$Jg-1])=="e"));$Cg=($nd=='/*'?'\*/':($nd=='['?']':(preg_match("~^$Pe|^#~",$nd)?"\n":preg_quote($nd).($Ra?'|\\\\.':''))));while(preg_match("($Cg|\$)s",$H,$A,PREG_OFFSET_CAPTURE,$C)){$_h=$A[0][0];if(!$_h&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{$C=$A[0][1]+strlen($_h);if(!$_h||$_h[0]!="\\")break;}}}else{$xc=false;$Zg=substr($H,0,$Jg+($Xb[0]=="\n"?3:0));$nb++;$Sg="<pre id='sql-$nb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($Zg)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$bi*+ATTACH\\b~i",$Zg,$A)){echo$Sg,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Ec[]=" <a href='#sql-$nb'>$nb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Sg;ob_flush();flush();}$ji=microtime(true);if(connection()->multi_query($Zg)&&$g&&preg_match("~^$bi*+USE\\b~i",$Zg))$g->query($Zg);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Sg:""),"<p class='error'>".'Error in query'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Ec[]=" <a href='#sql-$nb'>$nb</a>";if($_POST["error_stops"])break
|
||
2;}else{$Ki=" <span class='time'>(".format_time($ji).")</span>".(strlen($Zg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($Zg))."'>".'Edit'."</a>":"");$oa=connection()->affected_rows;$Jj=($_POST["only_errors"]?"":driver()->warnings());$Kj="warnings-$nb";if($Jj)$Ki
|
||
.=", <a href='#$Kj'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$Kj');","");$Mc=null;$dg=null;$Nc="explain-$nb";if(is_object($I)){$z=$_POST["limit"];$dg=print_select_result($I,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ef=$I->num_rows;echo"<p class='sql-footer'>".($Ef?($z&&$Ef>$z?sprintf('%d / ',$z):"").lang_format(array('%d row','%d rows'),$Ef):""),$Ki;if($g&&preg_match("~^($bi|\\()*+SELECT\\b~i",$Zg)&&($Mc=explain($g,$Zg)))echo", <a href='#$Nc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Nc');","");$t="export-$nb";echo", <a href='#$t'>".'Export'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."<span id='$t' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$ma["output"])." ".html_select("format",$oc,$ma["format"]).input_hidden("query",$Zg)."<input type='submit' name='export' value='".'Export'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$bi*+(CREATE|DROP|ALTER)$bi++(DATABASE|SCHEMA)\\b~i",$Zg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang_format(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$oa)."$Ki\n";}echo($Jj?"<div id='$Kj' class='hidden'>\n$Jj</div>\n":"");if($Mc){echo"<div id='$Nc' class='hidden explain'>\n";print_select_result($Mc,$g,$dg);echo"</div>\n";}}$ji=microtime(true);}while(connection()->next_result());}$H=substr($H,$C);$C=0;}}}}if($xc)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang_format(array('%d query executed OK.','%d queries executed OK.'),$nb-count($Ec))," <span class='time'>(".format_time($Vi).")</span>\n";elseif($Ec&&$nb>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Ec)."\n";}else
|
||
echo"<p class='error'>".upload_error($H)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$Kc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Zg=$_GET["sql"];if($_POST)$Zg=$_POST["query"];elseif($_GET["history"]=="all")$Zg=$Jd;elseif($_GET["history"]!="")$Zg=idx($Jd[$_GET["history"]],0);echo"<p>";textarea("query",$Zg,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>";adminer()->sqlPrintAfter();echo"$Kc\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>";$_d=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$_d (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Kc":'File uploads are disabled.'),"</div></fieldset>\n";$Vd=adminer()->importServerPath();if($Vd)echo"<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>".h($Vd)."$_d</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_token();if(!isset($_GET["import"])&&$Jd){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Jd);$X;$X=prev($Jd)){$x=key($Jd);list($Zg,$Ki,$sc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$Ki)."'>".@date("H:i:s",$Ki)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Pe).*~m",'',$Zg)))),80,"</code>").($sc?" <span class='time'>($sc)</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"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$rj=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
|
||
as$B=>$m){if(!isset($m["privileges"][$rj?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$B]);}if($_POST&&!$l&&!isset($_GET["select"])){$Re=$_POST["referer"];if($_POST["insert"])$Re=($rj?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Re))$Re=ME."select=".urlencode($a);$w=indexes($a);$mj=unique_array($_GET["where"],$w);$ch="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Re,'Item has been deleted.',driver()->delete($a,$ch,$mj?0:1));else{$O=array();foreach($n
|
||
as$B=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($B)]=$X;}if($rj){if(!$O)redirect($Re);queries_redirect($Re,'Item has been updated.',driver()->update($a,$O,$ch,$mj?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$I=driver()->insert($a,$O);$Ie=($I?last_id($I):0);queries_redirect($Re,sprintf('Item%s has been inserted.',($Ie?" $Ie":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($n
|
||
as$B=>$m){if(isset($m["privileges"]["select"])){$wa=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$M[]=($wa?"$wa AS ":"").idf_escape($B);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$l=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$n){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K
|
||
as$x=>$X){if(!$Z)$K[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}edit_form($a,$n,$K,$rj,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$xg=driver()->partitionBy;$_g=driver()->partitionsInfo($a);$ih=referencable_primary($a);$ld=array();foreach($ih
|
||
as$vi=>$m)$ld[str_replace("`","``",$vi)."`".str_replace("`","``",$m["field"])]=$vi;$gg=array();$S=array();if($a!=""){$gg=fields($a);$S=table_status1($a);if(count($S)<2)$l='No tables.';}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$n=array();$sa=array();$vj=false;$jd=array();$fg=reset($gg);$qa=" FIRST";foreach($K["fields"]as$x=>$m){$p=$ld[$m["type"]];$gj=($p!==null?$ih[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Xg=process_field($m,$gj);$sa[]=array($m["orig"],$Xg,$qa);if(!$fg||$Xg!==process_field($fg,$fg)){$n[]=array($m["orig"],$Xg,$qa);if($m["orig"]!=""||$qa)$vj=true;}if($p!==null)$jd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$ld[$m["type"]],'source'=>array($m["field"]),'target'=>array($gj["field"]),'on_delete'=>$m["on_delete"],));$qa=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$vj=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$fg=next($gg);if(!$fg)$qa="";}}$E=array();if(in_array($K["partition_by"],$xg)){foreach($K
|
||
as$x=>$X){if(preg_match('~^partition~',$x))$E[$x]=$X;}foreach($E["partition_names"]as$x=>$B){if($B==""){unset($E["partition_names"][$x]);unset($E["partition_values"][$x]);}}$E["partition_names"]=array_values($E["partition_names"]);$E["partition_values"]=array_values($E["partition_values"]);if($E==$_g)$E=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$E=null;$if='Table has been altered.';if($a==""){cookie("adminer_engine",$K["Engine"]);$if='Table has been created.';}$B=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($B),$if,alter_table($a,$B,(JUSH=="sqlite"&&($vj||$jd)?$sa:$n),$jd,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$E));}}page_header(($a!=""?'Alter table':'Create table'),$l,array("table"=>$a),h($a));if(!$_POST){$ij=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($ij["int"])?"int":(isset($ij["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($gg
|
||
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$K["fields"][]=$m;}if($xg){$K+=$_g;$K["partition_names"][]="";$K["partition_values"][]="";}}}$jb=collations();if(is_array(reset($jb)))$jb=call_user_func_array('array_merge',array_values($jb));$zc=driver()->engines();foreach($zc
|
||
as$yc){if(!strcasecmp($yc,$K["Engine"])){$K["Engine"]=$yc;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($K["name"])."' autocapitalize='off'>\n",($zc?html_select("Engine",array(""=>"(".'engine'.")")+$zc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($jb)echo"<datalist id='collations'>".optionlist($jb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".'collation'.")'>\n");echo"<input type='submit' value='".'Save'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$jb,"TABLE",$ld);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Auto Increment'.": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Default values',"columnShow(this.checked, 5)","jsonly");$qb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$qb,'Comment',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($qb?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($qb?"":" 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($xg&&(JUSH=='sql'||$a=="")){$yg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",'Partition by',$K["partition_by"]);echo"<p>".html_select("partition_by",array_merge(array(""),$xg),$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",'Partitions'.": <input type='number' name='partitions' class='size".($yg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($yg?"":" class='hidden'").">\n","<thead><tr><th>".'Partition name'."<th>".'Values'."</thead>\n";foreach($K["partition_names"]as$x=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($x==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$x)).'">';echo"</table>\n</div></fieldset>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$de=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$ae=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$de[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$de[]="SPATIAL";$w=indexes($a);$G=array();if(JUSH=="mongo"){$G=$w["_id_"];unset($de[0]);unset($w["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$v){$B=$v["name"];if(in_array($v["type"],$de)){$e=array();$Ne=array();$ac=array();$be=(support("partial_indexes")?$v["partial"]:"");$Zd=(in_array($v["algorithm"],$ae)?$v["algorithm"]:"");$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$Yb=idx($v["descs"],$x);$O[]=idf_escape($d).($y?"(".(+$y).")":"").($Yb?" DESC":"");$e[]=$d;$Ne[]=($y?:null);$ac[]=$Yb;}}$Lc=$w[$B];if($Lc){ksort($Lc["columns"]);ksort($Lc["lengths"]);ksort($Lc["descs"]);if($v["type"]==$Lc["type"]&&array_values($Lc["columns"])===$e&&(!$Lc["lengths"]||array_values($Lc["lengths"])===$Ne)&&array_values($Lc["descs"])===$ac&&$Lc["partial"]==$be&&(!$ae||$Lc["algorithm"]==$Zd)){unset($w[$B]);continue;}}if($e)$b[]=array($v["type"],$B,$O,$Zd,$be);}}foreach($w
|
||
as$B=>$Lc)$b[]=array($Lc["type"],$B,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$b));}page_header('Indexes',$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$v=end($K["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($w
|
||
as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$K["indexes"]=$w;}$Ne=(JUSH=="sql"||JUSH=="mssql");$Vh=($_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
|
||
';$Td=" class='idxopts".($Vh?"":" hidden")."'";if($ae)echo"<th id='label-algorithm'$Td>".'Algorithm'.doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'<th><input type="submit" class="wayoff">','Columns'.($Ne?"<span$Td> (".'length'.")</span>":"");if($Ne||support("descidx"))echo
|
||
checkbox("options",1,$Vh,'Options',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
|
||
';if(support("partial_indexes"))echo"<th id='label-condition'$Td>".'Condition';echo'<th><noscript>',icon("plus","add[0]","+",'Add next'),'</noscript>
|
||
</thead>
|
||
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$x=>$d)echo
|
||
select_input(" disabled",$n,$d),"<label><input disabled type='checkbox'>".'descending'."</label> ";echo"<td><td>\n";}$ye=1;foreach($K["indexes"]as$v){if(!$_POST["drop_col"]||$ye!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ye][type]",array(-1=>"")+$de,$v["type"],($ye==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($ae)echo"<td$Td>".html_select("indexes[$ye][algorithm]",array_merge(array(""),$ae),$v['algorithm'],"label-algorithm");echo"<td>";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$ye][columns][$s]' title='".'Column'."'",($n?array_combine($n,$n):$n),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span$Td>",($Ne?"<input type='number' name='indexes[$ye][lengths][$s]' class='size' value='".h(idx($v["lengths"],$x))."' title='".'Length'."'>":""),(support("descidx")?checkbox("indexes[$ye][descs][$s]",1,idx($v["descs"],$x),'descending'):""),"</span> </span>";$s++;}echo"<td><input name='indexes[$ye][name]' value='".h($v["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n";if(support("partial_indexes"))echo"<td$Td><input name='indexes[$ye][partial]' value='".h($v["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>".icon("cross","drop_col[$ye]","x",'Remove').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ye++;}echo'</table>
|
||
</div>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
',input_token(),'</form>
|
||
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$l&&!$_POST["add"]){$B=trim($K["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,$K["collation"]));}else{$i=explode("\n",str_replace("\r","",$B));$oi=true;$He="";foreach($i
|
||
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$K["collation"]))$oi=false;$He=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($He),'Database has been created.',$oi);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$l,array(),h(DB));$jb=collations();$B=DB;if($_POST)$B=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$jb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$ud){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ud,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add"]||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".($jb?html_select("collation",array(""=>"(".'collation'.")")+$jb,$K["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"]&&$_GET["db"]=="")echo
|
||
icon("plus","add[0]","+",'Add next')."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schema has been dropped.');else{$B=trim($K["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',$l);if(!$K)$K["name"]=$_GET["ns"];echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" autofocus value="',h($K["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_token(),'</form>
|
||
';}elseif(isset($_GET["call"])){$ba=($_GET["name"]?:$_GET["call"]);page_header('Call'.": ".h($ba),$l);$wh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Wd=array();$lg=array();foreach($wh["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$lg[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Wd[]=$s;}if(!$l&&$_POST){$Sa=array();foreach($wh["fields"]as$x=>$m){$X="";if(in_array($x,$Wd)){$X=process_input($m);if($X===false)$X="''";if(isset($lg[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($lg[$x]))$Sa[]="@".idf_escape($m["field"]);elseif(in_array($x,$Wd))$Sa[]=$X;}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ba)."(".implode(", ",$Sa).")";$ji=microtime(true);$I=connection()->multi_query($H);$oa=connection()->affected_rows;echo
|
||
adminer()->selectQuery($H,$ji,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$g);else
|
||
echo"<p class='message'>".lang_format(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$oa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($lg)print_select_result(connection()->query("SELECT ".implode(", ",$lg)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Wd){echo"<table class='layout'>\n";foreach($Wd
|
||
as$x){$m=$wh["fields"][$x];$B=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$B);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$B,""));echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
',input_token(),'</form>
|
||
|
||
<pre>
|
||
';function
|
||
pre_tr($_h){return
|
||
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($_h))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
|
||
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($A){$cd=pre_tr($A[2]);return"<table>\n".($A[1]?"<thead>$cd</thead>\n":$cd).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($wh['comment']))));echo'</pre>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_GET["name"];$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Di=array();foreach($K["source"]as$x=>$X)$Di[$x]=$K["target"][$x];$K["target"]=$Di;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $B"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($B==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Foreign key has been dropped.':($B!=""?'Foreign key has been altered.':'Foreign key has been created.')),$I);if(!$K["drop"])$l='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',$l,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($B!=""){$ld=foreign_keys($a);$K=$ld[$B];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
|
||
<form action="" method="post">
|
||
';$ai=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$hg=get_schema();set_schema($K["ns"]);}$hh=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Di=array_keys(fields(in_array($K["table"],$hh)?$K["table"]:reset($hh)));$Rf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".'Target table'.": ".html_select("table",$hh,$K["table"],$Rf)."</label>\n";if(support("scheme")){$Ch=array_filter(adminer()->schemas(),function($Bh){return!preg_match('~^information_schema$~i',$Bh);});echo"<label>".'Schema'.": ".html_select("ns",$Ch,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$Rf)."</label>";if($K["ns"]!="")set_schema($hg);}elseif(JUSH!="sqlite"){$Qb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Qb[]=$j;}echo"<label>".'DB'.": ".html_select("db",$Qb,$K["db"]!=""?$K["db"]:$_GET["db"],$Rf)."</label>";}echo
|
||
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="Change"></noscript>
|
||
<table>
|
||
<thead><tr><th id="label-source">Source<th id="label-target">Target</thead>
|
||
';$ye=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$ai,$X,($ye==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$x)."]",$Di,idx($K["target"],$x),"","label-target");$ye++;}echo'</table>
|
||
<p>
|
||
<label>ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),'</label>
|
||
<label>ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),'</label>
|
||
',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_token(),'</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$ig="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$ig=strtoupper($P["Engine"]);}if($_POST&&!$l){$B=trim($K["name"]);$wa=" AS\n$K[select]";$Re=ME."table=".urlencode($B);$if='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$ig=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$wa,$Re,$if);else{$Fi=$B."_adminer_".uniqid();drop_create("DROP $ig ".table($a),"CREATE $U ".table($B).$wa,"DROP $U ".table($B),"CREATE $U ".table($Fi).$wa,"DROP $U ".table($Fi),($_POST["drop"]?substr(ME,0,-1):$Re),'View has been dropped.',$if,'View has been created.',$a,$B);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($ig!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'Alter view':'Create view'),$l,array("table"=>$a),h($a));echo'
|
||
<form action="" method="post">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],'Materialized view'):""),'<p>';textarea("select",$K["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_token(),'</form>
|
||
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$pe=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$ki=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($K["INTERVAL_FIELD"],$pe)&&isset($ki[$K["STATUS"]])){$Ah="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["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).$Ah.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Ah)."\n".$ki[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$l);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Name<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
|
||
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
|
||
<tr><th title="datetime">End<td><input name="ENDS" value="',h($K["ENDS"]),'">
|
||
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$pe,$K["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$ki,$K["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
|
||
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
|
||
<p>';textarea("EVENT_DEFINITION",$K["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_token(),'</form>
|
||
';}elseif(isset($_GET["procedure"])){$ba=($_GET["name"]?:$_GET["procedure"]);$wh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$l){$eg=routine($_GET["procedure"],$wh);$Fi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$x=>$m){if($m["field"]=="")unset($K["fields"][$x]);}drop_create("DROP $wh ".routine_id($ba,$eg),create_routine($wh,$K),"DROP $wh ".routine_id($K["name"],$K),create_routine($wh,array("name"=>$Fi)+$K),"DROP $wh ".routine_id($Fi,$K),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$ba,$K["name"]);}page_header(($ba!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($ba):(isset($_GET["function"])?'Create function':'Create procedure')),$l);if(!$_POST){if($ba=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$wh);$K["name"]=$ba;}}$jb=get_vals("SHOW CHARACTER SET");sort($jb);$xh=routine_languages();echo($jb?"<datalist id='collations'>".optionlist($jb)."</datalist>":""),'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',($xh?"<label>".'Language'.": ".html_select("language",$xh,$K["language"])."</label>\n":""),'<input type="submit" value="Save">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
';edit_fields($K["fields"],$jb,$wh);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",(array)$K["returns"],$jb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
|
||
',script("editFields();"),'</div>
|
||
<p>';textarea("definition",$K["definition"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($ba!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$ba));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["sequence"])){$da=$_GET["sequence"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$B=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($da),$_,'Sequence has been dropped.');elseif($da=="")query_redirect("CREATE SEQUENCE ".idf_escape($B),$_,'Sequence has been created.');elseif($da!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($da)." RENAME TO ".idf_escape($B),$_,'Sequence has been altered.');else
|
||
redirect($_);}page_header($da!=""?'Alter sequence'.": ".h($da):'Create sequence',$l);if(!$K)$K["name"]=$da;echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($da!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$da))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["type"])){$ea=$_GET["type"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ea),$_,'Type has been dropped.');else
|
||
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,'Type has been created.');}page_header($ea!=""?'Alter type'.": ".h($ea):'Create type',$l);if(!$K)$K["as"]="AS ";echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
';if($ea!=""){$ij=driver()->types();$Cc=type_values($ij[$ea]);if($Cc)echo"<code class='jush-".JUSH."'>ENUM (".h($Cc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$ea))."\n";}else{echo'Name'.": <input name='name' value='".h($K['name'])."' autocapitalize='off'>\n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"<p><input type='submit' value='".'Save'."'>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$B=$_GET["name"];$K=$_POST;if($K&&!$l){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$B",($K["drop"]?"":$K["clause"]));else{$I=($B==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($B)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Check has been dropped.':($B!=""?'Check has been altered.':'Check has been created.')),$I);}page_header(($B!=""?'Alter check'.": ".h($B):'Create check'),$l,array("table"=>$a));if(!$K){$ab=driver()->checkConstraints($a);$K=array("name"=>$B,"clause"=>$ab[$B]);}echo'
|
||
<form action="" method="post">
|
||
<p>';if(JUSH!="sqlite")echo'Name'.': <input name="name" value="'.h($K["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",$K["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_token(),'</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B="$_GET[name]";$ej=trigger_options();$K=(array)trigger($B,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$ej["Timing"])&&in_array($_POST["Event"],$ej["Event"])&&in_array($_POST["Type"],$ej["Type"])){$Of=" ON ".table($a);$ic="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$Of:"");$Re=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($ic,$Re,'Trigger has been dropped.');else{if($B!="")queries($ic);queries_redirect($Re,($B!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Of,$_POST)));if($B!="")queries(create_trigger($Of,$K+array("Type"=>reset($ej["Type"]))));}}$K=$_POST;}page_header(($B!=""?'Alter trigger'.": ".h($B):'Create trigger'),$l,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table class="layout">
|
||
<tr><th>Time<td>',html_select("Timing",$ej["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$ej["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$ej["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$ej["Type"],$K["Type"]),'</table>
|
||
<p>Name: <input name="Trigger" value="',h($K["Trigger"]),'" data-maxlength="64" autocapitalize="off">
|
||
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$K["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_token(),'</form>
|
||
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Vg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$_b)$Vg[$_b][$K["Privilege"]]=$K["Comment"];}$Vg["Server Admin"]+=$Vg["File access on server"];$Vg["Databases"]["Create routine"]=$Vg["Procedures"]["Create routine"];unset($Vg["Procedures"]["Create routine"]);$Vg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Vg["Columns"][$X]=$Vg["Tables"][$X];unset($Vg["Server Admin"]["Usage"]);foreach($Vg["Tables"]as$x=>$X)unset($Vg["Databases"][$x]);$xf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$xf[$X]=(array)$xf[$X]+idx($_POST["grants"],$x,array());}$vd=array();$Mf="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$Ye,PREG_SET_ORDER)){foreach($Ye
|
||
as$X){if($X[1]!="USAGE")$vd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$vd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$Mf=$A[1];}}if($_POST&&!$l){$Nf=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Nf",ME."privileges=",'User has been dropped.');else{$zf=q($_POST["user"])."@".q($_POST["host"]);$Ag=$_POST["pass"];if($Ag!=''&&!$_POST["hashed"]&&!min_version(8)){$Ag=get_val("SELECT PASSWORD(".q($Ag).")");$l=!$Ag;}$Eb=false;if(!$l){if($Nf!=$zf){$Eb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $zf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Ag));$l=!$Eb;}elseif($Ag!=$Mf)queries("SET PASSWORD FOR $zf = ".q($Ag));}if(!$l){$th=array();foreach($xf
|
||
as$Gf=>$ud){if(isset($_GET["grant"]))$ud=array_filter($ud);$ud=array_keys($ud);if(isset($_GET["grant"]))$th=array_diff(array_keys(array_filter($xf[$Gf],'strlen')),$ud);elseif($Nf==$zf){$Kf=array_keys((array)$vd[$Gf]);$th=array_diff($Kf,$ud);$ud=array_diff($ud,$Kf);unset($vd[$Gf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$Gf,$A)&&(!grant("REVOKE",$th,$A[2]," ON $A[1] FROM $zf")||!grant("GRANT",$ud,$A[2]," ON $A[1] TO $zf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($Nf!=$zf)queries("DROP USER $Nf");elseif(!isset($_GET["grant"])){foreach($vd
|
||
as$Gf=>$th){if(preg_match('~^(.+)(\(.*\))?$~U',$Gf,$A))grant("REVOKE",array_keys($th),$A[2]," ON $A[1] FROM $zf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$l);if($Eb)connection()->query("DROP USER $zf");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$l,array("privileges"=>array('','Privileges')));$K=$_POST;if($K)$vd=$xf;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Mf;if($Mf!="")$K["hashed"]=true;$vd[(DB==""||$vd?"":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($K["host"]),'" autocapitalize="off">
|
||
<tr><th>Username<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
|
||
<tr><th>Password<td><input name="pass" id="pass" value="',h($K["pass"]),'" autocomplete="new-password">
|
||
',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["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"));$s=0;foreach($vd
|
||
as$Gf=>$ud){echo'<th>'.($Gf!="*.*"?"<input name='objects[$s]' value='".h($Gf)."' size='10' autocapitalize='off'>":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$_b=>$Yb){foreach((array)$Vg[$_b]as$Ug=>$ob){echo"<tr><td".($Yb?">$Yb<td":" colspan='2'").' lang="en" title="'.h($ob).'">'.h($Ug);$s=0;foreach($vd
|
||
as$Gf=>$ud){$B="'grants[$s][".h(strtoupper($Ug))."]'";$Y=$ud[strtoupper($Ug)];if($_b=="Server Admin"&&$Gf!=(isset($vd["*.*"])?"*.*":".*"))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":"").($Ug=="All privileges"?" id='grants-$s-all'>":">".($Ug=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$s-all'); };"))),"</label>";$s++;}}}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?',"$fa@$_GET[host]"));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$De=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$De++;}queries_redirect(ME."processlist=",lang_format(array('%d process has been killed.','%d processes have been killed.'),$De),$De||!$_POST["kill"]);}}page_header('Process list',$l);echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap checkable odds">
|
||
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$s=-1;foreach(process_list()as$s=>$K){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
|
||
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K
|
||
as$x=>$X)echo"<td>".((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$x=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$x=="sql_text"&&$X!="")?"<code class='jush-".JUSH."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':h($X));echo"\n";}echo'</table>
|
||
</div>
|
||
<p>
|
||
';if(support("kill"))echo($s+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";echo
|
||
input_token(),'</form>
|
||
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$ld=column_foreign_keys($a);$If=$S["Oid"];$na=get_settings("adminer_import");$uh=array();$e=array();$Gh=array();$ag=array();$Ji="";foreach($n
|
||
as$x=>$m){$B=adminer()->fieldName($m);$vf=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$B!=""){$e[$x]=$vf;if(is_shortable($m))$Ji=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$B!="")$Gh[$x]=$vf;if(isset($m["privileges"]["order"])&&$B!="")$ag[$x]=$vf;$uh+=$m["privileges"];}list($M,$wd)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$wd=array_unique($wd);$te=count($wd)<count($M);$Z=adminer()->selectSearchProcess($n,$w);$Zf=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$nj=>$K){$wa=convert_field($n[key($K)]);$M=array($wa?:idf_escape(key($K)));$Z[]=where_check($nj,$n);$J=driver()->select($a,$M,$Z,$M);if($J)echo
|
||
first($J->fetch_row());}exit;}$G=$pj=array();foreach($w
|
||
as$v){if($v["type"]=="PRIMARY"){$G=array_flip($v["columns"]);$pj=($M?$G:array());foreach($pj
|
||
as$x=>$X){if(in_array(idf_escape($x),$M))unset($pj[$x]);}break;}}if($If&&!$G){$G=$pj=array($If=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($If));}if($_POST&&!$l){$Mj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$ab=array();foreach($_POST["check"]as$Wa)$ab[]=where_check($Wa,$n);$Mj[]="((".implode(") OR (",$ab)."))";}$Mj=($Mj?"\nWHERE ".implode(" AND ",$Mj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$pd=($M?implode(", ",$M):"*").convert_fields($e,$n,$M)."\nFROM ".table($a);$yd=($wd&&$te?"\nGROUP BY ".implode(", ",$wd):"").($Zf?"\nORDER BY ".implode(", ",$Zf):"");$H="SELECT $pd$Mj$yd";if(is_array($_POST["check"])&&!$G){$lj=array();foreach($_POST["check"]as$X)$lj[]="(SELECT".limit($pd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$yd,1).")";$H=implode(" UNION ALL ",$lj);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$ld)){if($_POST["save"]||$_POST["delete"]){$I=true;$oa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$B=>$X){$X=process_input($n[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$te){$I=($_POST["delete"]?driver()->delete($a,$Mj):($_POST["clone"]?queries("INSERT $H$Mj".driver()->insertReturning($a)):driver()->update($a,$O,$Mj)));$oa=connection()->affected_rows;if(is_object($I))$oa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$Lj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$I=($_POST["delete"]?driver()->delete($a,$Lj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Lj)):driver()->update($a,$O,$Lj,1)));if(!$I)break;$oa+=connection()->affected_rows;}}}$if=lang_format(array('%d item has been affected.','%d items have been affected.'),$oa);if($_POST["clone"]&&$I&&$oa==1){$Ie=last_id($I);if($Ie)$if=sprintf('Item%s has been inserted.'," $Ie");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$if,$I);if(!$_POST["delete"]){$Mg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$Mg),$Mg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+click on a value to modify it.';else{$I=true;$oa=0;foreach($_POST["val"]as$nj=>$K){$O=array();foreach($K
|
||
as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($nj,$n),($te||$G?0:1)," ");if(!$I)break;$oa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang_format(array('%d item has been affected.','%d items have been affected.'),$oa),$I);}}elseif(!is_string($Zc=get_file("csv_file",true)))$l=upload_error($Zc);elseif(!preg_match('~~u',$Zc))$l='File must be in UTF-8 encoding.';else{save_settings(array("output"=>$na["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$kb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Zc,$Ye);$oa=count($Ye[0]);driver()->begin();$Mh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Ye[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Mh]*)$Mh~",$X.$Mh,$Ze);if(!$x&&!array_diff($Ze[1],$kb)){$kb=$Ze[1];$oa--;}else{$O=array();foreach($Ze[1]as$s=>$hb)$O[idf_escape($kb[$s])]=($hb==""&&$n[$kb[$s]]["null"]?"NULL":q(preg_match('~^".*"$~s',$hb)?str_replace('""','"',substr($hb,1,-1)):$hb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang_format(array('%d row has been imported.','%d rows have been imported.'),$oa),$I);driver()->rollback();}}}$vi=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $vi",$l);$O=null;if(isset($uh["insert"])||!support("table")){$rg=array();foreach((array)$_GET["where"]as$X){if(isset($ld[$X["col"]])&&count($ld[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$rg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$rg?"&".http_build_query($rg):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($n?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Gh,$w);adminer()->selectOrderPrint($Zf,$ag,$w);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Ji);adminer()->selectActionPrint($w);echo"</form>\n";$D=$_GET["page"];$od=null;if($D=="last"){$od=get_val(count_rows($a,$Z,$te,$wd));$D=floor(max(0,intval($od)-1)/$z);}$Hh=$M;$xd=$wd;if(!$Hh){$Hh[]="*";$Ab=convert_fields($e,$n,$M);if($Ab)$Hh[]=substr($Ab,2);}foreach($M
|
||
as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($wa=convert_field($m)))$Hh[$x]="$wa AS $X";}if(!$te&&$pj){foreach($pj
|
||
as$x=>$X){$Hh[]=idf_escape($x);if($xd)$xd[]=idf_escape($x);}}$I=driver()->select($a,$Hh,$Z,$xd,$Zf,$z,$D,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$D)$I->seek($z*$D);$wc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($D&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$wd&&$te&&JUSH=="sql")$od=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ea=adminer()->backwardKeys($a,$vi);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>".(!$wd&&$M?"":"<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>");$wf=array();$rd=array();reset($M);$eh=1;foreach($L[0]as$x=>$X){if(!isset($pj[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$B=($m?adminer()->fieldName($m,$eh):($X["fun"]?"*":h($x)));if($B!=""){$eh++;$wf[$x]=$B;$d=idf_escape($x);$Nd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$Yb="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$qd=apply_sql_function($X["fun"],$B);$Zh=isset($m["privileges"]["order"])||$qd;echo($Zh?"<a href='".h($Nd.($Zf[0]==$d||$Zf[0]==$x||(!$Zf&&$te&&$wd[0]==$d)?$Yb:''))."'>$qd</a>":$qd),"<span class='column hidden'>";if($Zh)echo"<a href='".h($Nd.$Yb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]&&isset($m["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($x)."');");echo"</span>";}$rd[$x]=$X["fun"];next($M);}}$Ne=array();if($_GET["modify"]){foreach($L
|
||
as$K){foreach($K
|
||
as$x=>$X)$Ne[$x]=max($Ne[$x],min(40,strlen(utf8_decode($X))));}}echo($Ea?"<th>".'Relations':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$ld)as$uf=>$K){$mj=unique_array($L[$uf],$w);if(!$mj){$mj=array();reset($M);foreach($L[$uf]as$x=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$mj[$x]=$X;next($M);}}$nj="";foreach($mj
|
||
as$x=>$X){$m=(array)$n[$x];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($X);}$nj
|
||
.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr>".(!$wd&&$M?"":"<td>".checkbox("check[]",substr($nj,1),in_array(substr($nj,1),(array)$_POST["check"])).($te||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$nj)."' class='edit'>".'edit'."</a>"));reset($M);foreach($K
|
||
as$x=>$X){if(isset($wf[$x])){$d=current($M);$m=(array)$n[$x];$X=driver()->value($X,$m);if($X!=""&&(!isset($wc[$x])||$wc[$x]!=""))$wc[$x]=(is_mail($X)?$wf[$x]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$nj;if(!$_&&$X!==null){foreach((array)$ld[$x]as$p){if(count($ld[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$ai)$_
|
||
.=where_link($s,$p["target"][$s],$L[$uf][$ai]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$mj))$_
|
||
.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($mj
|
||
as$_e=>$W)$_
|
||
.=where_link($s++,$_e,$W);}$Od=select_value($X,$_,$m,$Ji);$t=h("val[$nj][".bracket_escape($x)."]");$Ng=idx(idx($_POST["val"],$nj),bracket_escape($x));$rc=!is_array($K[$x])&&is_utf8($Od)&&$L[$uf][$x]==$K[$x]&&!$rd[$x]&&!$m["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$n[idf_unescape($A[2])]["type"]:$m["type"]);$Hi=preg_match('~text|json|lob~',$U);$ue=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$t'".($ue&&($X===null||is_numeric(strip_tags($Od))||$U=="money")?" class='number'":"");if(($_GET["modify"]&&$rc&&$X!==null)||$Ng!==null){$Ad=h($Ng!==null?$Ng:$K[$x]);echo">".($Hi?"<textarea name='$t' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$Ad</textarea>":"<input name='$t' value='$Ad' size='$Ne[$x]'>");}else{$Te=strpos($Od,"<i>…</i>");echo" data-text='".($Te?2:($Hi?1:0))."'".($rc?"":" data-warning='".h('Use edit link to modify this value.')."'").">$Od";}}next($M);}if($Ea)echo"<td>";adminer()->backwardKeysPrint($Ea,$L[$uf]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$D){$Jc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$D)))$od=($D?$D*$z:0)+count($L);elseif(JUSH!="sql"||!$te){$od=($te?false:found_rows($S,$Z));if(intval($od)<max(1e4,2*($D+1)*$z))$od=first(slow_query(count_rows($a,$Z,$te,$wd)));else$Jc=false;}}$pg=($z&&($od===false||$od>$z||$D));if($pg)echo(($od===false?count($L)+1:$od-$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($pg){$bf=($od===false?$D+(count($L)>=$z?2:1):floor(($od-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($s=max(1,$D-4);$s<min($bf,$D+5);$s++)echo
|
||
pagination($s,$D);if($bf>0)echo($D+5<$bf?" …":""),($Jc&&$od!==false?pagination($bf,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$bf'>".'last'."</a>");}else
|
||
echo"<legend>".'Page'."</legend>",pagination(0,$D).($D>1?" …":""),($D?pagination($D,$D):""),($bf>$D?pagination($D+1,$D).($bf>$D+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$fc=($Jc?"":"~ ").$od;$Sf="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$fc' : checked); selectCount('selected2', this.checked || !checked ? '$fc' : checked);";echo
|
||
checkbox("all",1,0,($od!==false?($Jc?"":"~ ").lang_format(array('%d row','%d rows'),$od):""),$Sf)."\n","</fieldset>\n";if(adminer()->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>
|
||
';$md=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($md['sql']);break;}}if($md){print_fieldset("export",'Export'." <span id='selected2'></span>");$mg=adminer()->dumpOutput();echo($mg?html_select("output",$mg,$na["output"])." ":""),html_select("format",$md,$na["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($wc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<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"),$na["format"])," <input type='submit' name='import' value='".'Import'."'>","</span>";echo
|
||
input_token(),"</form>\n",(!$wd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Variables');$Cj=($P?show_status():show_variables());if(!$Cj)echo"<p class='message'>".'No rows.'."\n";else{echo"<table>\n";foreach($Cj
|
||
as$K){echo"<tr>";$x=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($x)."</code>";foreach($K
|
||
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$ri=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$B=>$S){json_row("Comment-$B",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$x)json_row("$x-$B",h($S[$x]));foreach($ri+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=format_number($S[$x]);if($X>=0)json_row("$x-$B",($x=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($ri[$x]))$ri[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$B","?");}}}foreach($ri
|
||
as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Bi=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Bi&&!$l&&!$_POST["search"]){$I=true;$if="";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"])$I=truncate_tables($_POST["tables"]);$if='Tables have been truncated.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$if='Tables have been moved.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$if='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$if='Tables have been dropped.';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$if
|
||
.="<b>".h($R)."</b>: ".h($K["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$if='Tables have been optimized.';}elseif(!$_POST["tables"])$if='No tables.';elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$if
|
||
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$if,$I);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Ai=tables_list();if(!$Ai)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"]=driver()->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";$T=0;foreach($Ai
|
||
as$B=>$U){$Fj=($U!==null&&!preg_match('~table|sequence~i',$U));$t=h("Table-".$B);echo'<tr><td>'.checkbox(($Fj?"views[]":"tables[]"),$B,in_array("$B",$Bi,true),"","","",$t),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($B)."' title='".'Show structure'."' id='$t'>".h($B).'</a>':h($B));if($Fj)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$x=>$_){$t=" id='$x-".h($B)."'";echo($_?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($B)."'$t title='$_[1]'>?</a>":"<span$t>?</span>"):"<td id='$x-".h($B)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($B)."'>":""),"\n";}echo"<tr><td><th>".sprintf('%d in total',count($Ai)),"<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$x)echo"<td align='right' id='sum-$x'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$_j="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$Vf="<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"?$_j."<input type='submit' name='check' value='".'Check'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$_j.$Vf:(JUSH=="sql"?"<input type='submit' value='".'Analyze'."'> ".on_help("'ANALYZE TABLE'").$Vf."<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")?adminer()->schemas():adminer()->databases());if(count($i)!=1&&JUSH!="sqlite"){$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p><label>".'Move to other database'.": ",($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">'),"</label> <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\[/) || $T);":"")." }"),input_token(),"</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";$yh=routines();if($yh){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td></thead>\n";foreach($yh
|
||
as$K){$B=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["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";$Ph=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Ph){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($Ph
|
||
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";$yj=types();if($yj){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($yj
|
||
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";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($L
|
||
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?'At given time'."<td>".$K["Execute at"]:'Every'." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.'Alter'.'</a>';echo"</table>\n";$Hc=get_val("SELECT @@event_scheduler");if($Hc&&$Hc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Hc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Ai)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |