Files
lis/public/adminer.php
T
2025-01-27 08:16:55 +07:00

1795 lines
465 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 4.8.1
*/function
adminer_errors($Cc,$Ec){return!!preg_match('~^(Trying to access array offset on value of type null|Undefined array key)~',$Ec);}error_reporting(6135);set_error_handler('adminer_errors',E_WARNING);$ad=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($ad||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Ii=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Ii)$$X=$Ii;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection(){global$g;return$g;}function
adminer(){global$b;return$b;}function
version(){global$ia;return$ia;}function
idf_unescape($v){if(!preg_match('~^[`\'"]~',$v))return$v;$qe=substr($v,-1);return
str_replace($qe.$qe,$qe,substr($v,1,-1));}function
escape_string($X){return
substr(q($X),1,-1);}function
number($X){return
preg_replace('~[^0-9]+~','',$X);}function
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
remove_slashes($tg,$ad=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($z,$X)=each($tg)){foreach($X
as$he=>$W){unset($tg[$z][$he]);if(is_array($W)){$tg[$z][stripslashes($he)]=$W;$tg[]=&$tg[$z][stripslashes($he)];}else$tg[$z][stripslashes($he)]=($ad?$W:stripslashes($W));}}}}function
bracket_escape($v,$Na=false){static$ui=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($v,($Na?array_flip($ui):$ui));}function
min_version($Zi,$De="",$h=null){global$g;if(!$h)$h=$g;$nh=$h->server_info;if($De&&preg_match('~([\d.]+)-MariaDB~',$nh,$C)){$nh=$C[1];$Zi=$De;}return(version_compare($nh,$Zi)>=0);}function
charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
script($yh,$ti="\n"){return"<script".nonce().">$yh</script>$ti";}function
script_src($Ni){return"<script src='".h($Ni)."'".nonce()."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($P){return
str_replace("\0","&#0;",htmlspecialchars($P,ENT_QUOTES,'utf-8'));}function
nl_br($P){return
str_replace("\n","<br>",$P);}function
checkbox($D,$Y,$db,$me="",$uf="",$hb="",$ne=""){$I="<input type='checkbox' name='$D' value='".h($Y)."'".($db?" checked":"").($ne?" aria-labelledby='$ne'":"").">".($uf?script("qsl('input').onclick = function () { $uf };",""):"");return($me!=""||$hb?"<label".($hb?" class='$hb'":"").">$I".h($me)."</label>":$I);}function
optionlist($_f,$gh=null,$Ri=false){$I="";foreach($_f
as$he=>$W){$Af=array($he=>$W);if(is_array($W)){$I.='<optgroup label="'.h($he).'">';$Af=$W;}foreach($Af
as$z=>$X)$I.='<option'.($Ri||is_string($z)?' value="'.h($z).'"':'').(($Ri||is_string($z)?(string)$z:$X)===$gh?' selected':'').'>'.h($X);if(is_array($W))$I.='</optgroup>';}return$I;}function
html_select($D,$_f,$Y="",$tf=true,$ne=""){if($tf)return"<select name='".h($D)."'".($ne?" aria-labelledby='$ne'":"").">".optionlist($_f,$Y)."</select>".(is_string($tf)?script("qsl('select').onchange = function () { $tf };",""):"");$I="";foreach($_f
as$z=>$X)$I.="<label><input type='radio' name='".h($D)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$I;}function
select_input($Ia,$_f,$Y="",$tf="",$fg=""){$Yh=($_f?"select":"input");return"<$Yh$Ia".($_f?"><option value=''>$fg".optionlist($_f,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$fg'>").($tf?script("qsl('$Yh').onchange = $tf;",""):"");}function
confirm($Ne="",$hh="qsl('input')"){return
script("$hh.onclick = function () { return confirm('".($Ne?js_escape($Ne):lang(0))."'); };","");}function
print_fieldset($u,$ve,$cj=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$ve</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($cj?"":" class='hidden'").">\n";}function
bold($Ua,$hb=""){return($Ua?" class='active $hb'":($hb?" class='$hb'":""));}function
odd($I=' class="odd"'){static$t=0;if(!$I)$t=-1;return($t++%2?$I:'');}function
js_escape($P){return
addcslashes($P,"\r\n'\\/");}function
json_row($z,$X=null){static$bd=true;if($bd)echo"{";if($z!=""){echo($bd?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$bd=false;}else{echo"\n}\n";$bd=true;}}function
ini_bool($Ud){$X=ini_get($Ud);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function
set_password($Yi,$M,$V,$F){$_SESSION["pwds"][$Yi][$M][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function
q($P){global$g;return$g->quote($P);}function
get_vals($G,$d=0){global$g;$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$d];}return$I;}function
get_key_vals($G,$h=null,$qh=true){global$g;if(!is_object($h))$h=$g;$I=array();$H=$h->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($qh)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
get_rows($G,$h=null,$n="<p class='error'>"){global$g;$yb=(is_object($h)?$h:$g);$I=array();$H=$yb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!is_object($h)&&$n&&defined("PAGE_HEADER"))echo$n.error()."\n";return$I;}function
unique_array($J,$x){foreach($x
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$I=array();foreach($w["columns"]as$z){if(!isset($J[$z]))continue
2;$I[$z]=$J[$z];}return$I;}}}function
escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return
idf_escape($z);}function
where($Z,$p=array()){global$g,$y;$I=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$d=escape_key($z);$I[]=$d.($y=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):($y=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($p[$z],q($X))));if($y=="sql"&&preg_match('~char|text~',$p[$z]["type"])&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$z)$I[]=escape_key($z)." IS NULL";return
implode(" AND ",$I);}function
where_check($X,$p=array()){parse_str($X,$bb);remove_slashes(array(&$bb));return
where($bb,$p);}function
where_link($t,$d,$Y,$wf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$wf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
convert_fields($e,$p,$L=array()){$I="";foreach($e
as$z=>$X){if($L&&!in_array(idf_escape($z),$L))continue;$Ga=convert_field($p[$z]);if($Ga)$I.=", $Ga AS ".idf_escape($z);}return$I;}function
cookie($D,$Y,$ye=2592000){global$ba;return
header("Set-Cookie: $D=".urlencode($Y).($ye?"; expires=".gmdate("D, d M Y H:i:s",time()+$ye)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
stop_session($gd=false){$Qi=ini_bool("session.use_cookies");if(!$Qi||$gd){session_write_close();if($Qi&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Yi,$M,$V,$l=null){global$kc;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($kc))."|username|".($l!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Yi!="server"||$M!=""?urlencode($Yi)."=".urlencode($M)."&":"")."username=".urlencode($V).($l!=""?"&db=".urlencode($l):"").($C[2]?"&$C[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($B,$Ne=null){if($Ne!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$Ne;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function
query_redirect($G,$B,$Ne,$Dg=true,$Jc=true,$Tc=false,$gi=""){global$g,$n,$b;if($Jc){$Fh=microtime(true);$Tc=!$g->query($G);$gi=format_time($Fh);}$Ah="";if($G)$Ah=$b->messageQuery($G,$gi,$Tc);if($Tc){$n=error().$Ah.script("messagesPrint();");return
false;}if($Dg)redirect($B,$Ne.$Ah);return
true;}function
queries($G){global$g;static$yg=array();static$Fh;if(!$Fh)$Fh=microtime(true);if($G===null)return
array(implode("\n",$yg),format_time($Fh));$yg[]=(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return$g->query($G);}function
apply_queries($G,$S,$Fc='table'){foreach($S
as$Q){if(!queries("$G ".$Fc($Q)))return
false;}return
true;}function
queries_redirect($B,$Ne,$Dg){list($yg,$gi)=queries(null);return
query_redirect($yg,$B,$Ne,$Dg,false,!$Dg,$gi);}function
format_time($Fh){return
lang(1,max(0,microtime(true)-$Fh));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($Qf=""){return
substr(preg_replace("~(?<=[?&])($Qf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
pagination($E,$Pb){return" ".($E==$Pb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
get_file($z,$Xb=false){$Zc=$_FILES[$z];if(!$Zc)return
null;foreach($Zc
as$z=>$X)$Zc[$z]=(array)$X;$I='';foreach($Zc["error"]as$z=>$n){if($n)return$n;$D=$Zc["name"][$z];$oi=$Zc["tmp_name"][$z];$Db=file_get_contents($Xb&&preg_match('~\.gz$~',$D)?"compress.zlib://$oi":$oi);if($Xb){$Fh=substr($Db,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Fh,$Jg))$Db=iconv("utf-16","utf-8",$Db);elseif($Fh=="\xEF\xBB\xBF")$Db=substr($Db,3);$I.=$Db."\n\n";}else$I.=$Db;}return$I;}function
upload_error($n){$Ke=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($n?lang(2).($Ke?" ".lang(3,$Ke):""):lang(4));}function
repeat_pattern($cg,$we){return
str_repeat("$cg{0,65535}",$we/65535)."$cg{0,".($we%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
shorten_utf8($P,$we=80,$Mh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$we).")($)?)u",$P,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$we).")($)?)",$P,$C);return
h($C[1]).$Mh.(isset($C[2])?"":"<i>…</i>");}function
format_number($X){return
strtr(number_format($X,0,".",lang(5)),preg_split('~~u',lang(6),-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace('~[^a-z0-9_]~i','-',$X);}function
hidden_fields($tg,$Jd=array(),$lg=''){$I=false;foreach($tg
as$z=>$X){if(!in_array($z,$Jd)){if(is_array($X))hidden_fields($X,array(),$z);else{$I=true;echo'<input type="hidden" name="'.h($lg?$lg."[$z]":$z).'" value="'.h($X).'">';}}}return$I;}function
hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
table_status1($Q,$Uc=false){$I=table_status($Q,$Uc);return($I?$I:array("Name"=>$Q));}function
column_foreign_keys($Q){global$b;$I=array();foreach($b->foreignKeys($Q)as$r){foreach($r["source"]as$X)$I[$X][]=$r;}return$I;}function
enum_input($T,$Ia,$o,$Y,$zc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$Fe);$I=($zc!==null?"<label><input type='$T'$Ia value='$zc'".((is_array($Y)?in_array($zc,$Y):$Y===0)?" checked":"")."><i>".lang(7)."</i></label>":"");foreach($Fe[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$db=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$I.=" <label><input type='$T'$Ia value='".($t+1)."'".($db?' checked':'').'>'.h($b->editVal($X,$o)).'</label>';}return$I;}function
input($o,$Y,$s){global$U,$b,$y;$D=h(bracket_escape($o["field"]));echo"<td class='function'>";if(is_array($Y)&&!$s){$Ea=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$Ea[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$Ea);$s="json";}$Ng=($y=="mssql"&&$o["auto_increment"]);if($Ng&&!$_POST["save"])$s=null;$pd=(isset($_GET["select"])||$Ng?array("orig"=>lang(8)):array())+$b->editFunctions($o);$Ia=" name='fields[$D]'";if($o["type"]=="enum")echo
h($pd[""])."<td>".$b->editInput($_GET["edit"],$o,$Ia,$Y);else{$zd=(in_array($s,$pd)||isset($pd[$s]));echo(count($pd)>1?"<select name='function[$D]'>".optionlist($pd,$s===null||$zd?$s:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($pd))).'<td>';$Wd=$b->editInput($_GET["edit"],$o,$Ia,$Y);if($Wd!="")echo$Wd;elseif(preg_match('~bool~',$o["type"]))echo"<input type='hidden'$Ia value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$Ia value='1'>";elseif($o["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$Fe);foreach($Fe[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$db=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$D][$t]' value='".(1<<$t)."'".($db?' checked':'').">".h($b->editVal($X,$o)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'>";elseif(($ei=preg_match('~text|lob|memo~i',$o["type"]))||preg_match("~\n~",$Y)){if($ei&&$y!="sqlite")$Ia.=" cols='50' rows='12'";else{$K=min(12,substr_count($Y,"\n")+1);$Ia.=" cols='30' rows='$K'".($K==1?" style='height: 1.2em;'":"");}echo"<textarea$Ia>".h($Y).'</textarea>';}elseif($s=="json"||preg_match('~^jsonb?$~',$o["type"]))echo"<textarea$Ia cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$Me=(!preg_match('~int~',$o["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$o["length"],$C)?((preg_match("~binary~",$o["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$o["unsigned"]?1:0)):($U[$o["type"]]?$U[$o["type"]]+($o["unsigned"]?0:1):0));if($y=='sql'&&min_version(5.6)&&preg_match('~time~',$o["type"]))$Me+=7;echo"<input".((!$zd||$s==="")&&preg_match('~(?<!o)int(?!er)~',$o["type"])&&!preg_match('~\[\]~',$o["full_type"])?" type='number'":"")." value='".h($Y)."'".($Me?" data-maxlength='$Me'":"").(preg_match('~char|binary~',$o["type"])&&$Me>20?" size='40'":"")."$Ia>";}echo$b->editHint($_GET["edit"],$o,$Y);$bd=0;foreach($pd
as$z=>$X){if($z===""||!$X)break;$bd++;}if($bd)echo
script("mixin(qsl('td'), {onchange: partial(skipOriginal, $bd), oninput: function () { this.onchange(); }});");}}function
process_input($o){global$b,$m;$v=bracket_escape($o["field"]);$s=$_POST["function"][$v];$Y=$_POST["fields"][$v];if($o["type"]=="enum"){if($Y==-1)return
false;if($Y=="")return"NULL";return+$Y;}if($o["auto_increment"]&&$Y=="")return
null;if($s=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$o["on_update"])?idf_escape($o["field"]):false);if($s=="NULL")return"NULL";if($o["type"]=="set")return
array_sum((array)$Y);if($s=="json"){$s="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads")){$Zc=get_file("fields-$v");if(!is_string($Zc))return
false;return$m->quoteBinary($Zc);}return$b->processInput($o,$Y,$s);}function
fields_from_edit(){global$m;$I=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$D=bracket_escape($z,1);$I[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$m->primary),);}return$I;}function
search_tables(){global$b,$g;$_GET["where"][0]["val"]=$_POST["query"];$jh="<ul>\n";foreach(table_status('',true)as$Q=>$R){$D=$b->tableName($R);if(isset($R["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$H=$g->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$H||$H->fetch_row()){$pg="<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>";echo"$jh<li>".($H?$pg:"<p class='error'>$pg: ".error())."\n";$jh="";}}}echo($jh?"<p class='message'>".lang(9):"</ul>")."\n";}function
dump_headers($Hd,$Ve=false){global$b;$I=$b->dumpHeaders($Hd,$Ve);$Mf=$_POST["output"];if($Mf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Hd).".$I".($Mf!="file"&&preg_match('~^[0-9a-z]+$~',$Mf)?".$Mf":""));session_write_close();ob_flush();flush();return$I;}function
dump_csv($J){foreach($J
as$z=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$J[$z]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$J)."\r\n";}function
apply_sql_function($s,$d){return($s?($s=="unixepoch"?"DATETIME($d, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$d)"):$d);}function
get_temp_dir(){$I=ini_get("upload_tmp_dir");if(!$I){if(function_exists('sys_get_temp_dir'))$I=sys_get_temp_dir();else{$q=@tempnam("","");if(!$q)return
false;$I=dirname($q);unlink($q);}}return$I;}function
file_open_lock($q){$nd=@fopen($q,"r+");if(!$nd){$nd=@fopen($q,"w");if(!$nd)return;chmod($q,0660);}flock($nd,LOCK_EX);return$nd;}function
file_write_unlock($nd,$Rb){rewind($nd);fwrite($nd,$Rb);ftruncate($nd,strlen($Rb));flock($nd,LOCK_UN);fclose($nd);}function
password_file($i){$q=get_temp_dir()."/adminer.key";$I=@file_get_contents($q);if($I||!$i)return$I;$nd=@fopen($q,"w");if($nd){chmod($q,0660);$I=rand_string();fwrite($nd,$I);fclose($nd);}return$I;}function
rand_string(){return
md5(uniqid(mt_rand(),true));}function
select_value($X,$A,$o,$fi){global$b;if(is_array($X)){$I="";foreach($X
as$he=>$W)$I.="<tr>".($X!=array_values($X)?"<th>".h($he):"")."<td>".select_value($W,$A,$o,$fi);return"<table cellspacing='0'>$I</table>";}if(!$A)$A=$b->selectLink($X,$o);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$I=$b->editVal($X,$o);if($I!==null){if(!is_utf8($I))$I="\0";elseif($fi!=""&&is_shortable($o))$I=shorten_utf8($I,max(0,+$fi));else$I=h($I);}return$b->selectVal($I,$A,$o,$X);}function
is_mail($wc){$Ha='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$jc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$cg="$Ha+(\\.$Ha+)*@($jc?\\.)+$jc";return
is_string($wc)&&preg_match("(^$cg(,\\s*$cg)*\$)i",$wc);}function
is_url($P){$jc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^(https?)://($jc?\\.)+$jc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$P);}function
is_shortable($o){return
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$o["type"]);}function
count_rows($Q,$Z,$ce,$sd){global$y;$G=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($ce&&($y=="sql"||count($sd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$sd).")$G":"SELECT COUNT(*)".($ce?" FROM (SELECT 1$G GROUP BY ".implode(", ",$sd).") x":$G));}function
slow_query($G){global$b,$qi,$m;$l=$b->database();$hi=$b->queryTimeout();$vh=$m->slowQuery($G,$hi);if(!$vh&&support("kill")&&is_object($h=connect())&&($l==""||$h->select_db($l))){$ke=$h->result(connection_id());echo'<script',nonce(),'>
var timeout = setTimeout(function () {
ajax(\'',js_escape(ME),'script=kill\', function () {
}, \'kill=',$ke,'&token=',$qi,'\');
}, ',1000*$hi,');
</script>
';}else$h=null;ob_flush();flush();$I=@get_key_vals(($vh?$vh:$G),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
get_token(){$Ag=rand(1,1e6);return($Ag^$_SESSION["token"]).":$Ag";}function
verify_token(){list($qi,$Ag)=explode(":",$_POST["token"]);return($Ag^$_SESSION["token"])==$qi;}function
lzw_decompress($Ra){$gc=256;$Sa=8;$jb=array();$Pg=0;$Qg=0;for($t=0;$t<strlen($Ra);$t++){$Pg=($Pg<<8)+ord($Ra[$t]);$Qg+=8;if($Qg>=$Sa){$Qg-=$Sa;$jb[]=$Pg>>$Qg;$Pg&=(1<<$Qg)-1;$gc++;if($gc>>$Sa)$Sa++;}}$fc=range("\0","\xFF");$I="";foreach($jb
as$t=>$ib){$vc=$fc[$ib];if(!isset($vc))$vc=$nj.$nj[0];$I.=$vc;if($t)$fc[]=$nj.$vc[0];$nj=$vc;}return$I;}function
on_help($rb,$sh=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $rb, $sh) }, onmouseout: helpMouseout});","");}function
edit_form($Q,$p,$J,$Li){global$b,$y,$qi,$n;$Rh=$b->tableName(table_status1($Q,true));page_header(($Li?lang(10):lang(11)),$n,array("select"=>array($Q,$Rh)),$Rh);$b->editRowPrint($Q,$p,$J,$Li);if($J===false)echo"<p class='error'>".lang(12)."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
';if(!$p)echo"<p class='error'>".lang(13)."\n";else{echo"<table cellspacing='0' class='layout'>".script("qsl('table').onkeydown = editingKeydown;");foreach($p
as$D=>$o){echo"<tr><th>".$b->fieldName($o);$Yb=$_GET["set"][bracket_escape($D)];if($Yb===null){$Yb=$o["default"];if($o["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$Yb,$Jg))$Yb=$Jg[1];}$Y=($J!==null?($J[$D]!=""&&$y=="sql"&&preg_match("~enum|set~",$o["type"])?(is_array($J[$D])?array_sum($J[$D]):+$J[$D]):(is_bool($J[$D])?+$J[$D]:$J[$D])):(!$Li&&$o["auto_increment"]?"":(isset($_GET["select"])?false:$Yb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$o);$s=($_POST["save"]?(string)$_POST["function"][$D]:($Li&&preg_match('~^CURRENT_TIMESTAMP~i',$o["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$Li&&$Y==$o["default"]&&preg_match('~^[\w.]+\(~',$Y))$s="SQL";if(preg_match("~time~",$o["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$s="now";}input($o,$Y,$s);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($p){echo"<input type='submit' value='".lang(14)."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($Li?lang(15):lang(16))."' title='Ctrl+Shift+Enter'>\n",($Li?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(17)."…', this); };"):"");}}echo($Li?"<input type='submit' name='delete' value='".lang(18)."'>".confirm()."\n":($_POST||!$p?"":script("focus(qsa('td', qs('#form'))[1].firstChild);")));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
<input type="hidden" name="save" value="1">
<input type="hidden" name="token" value="',$qi,'">
</form>
';}if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
lzw_decompress("\0\0\0` \0\0\n @\0C\"\0`EQ?tvM'Jdd\\b0\0\"s5AXPaJ08#RTz`#.cXȀ?-\0Im?.M\0ȯ/(%\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("\n1ٌ̇l7B14vb0fsn2Bѱ٘n:#(b.\rDc)a7El ñi1̎s-4f i7t4yZf4iATVV f:Ϧ,:1b2`# >:7G1sLXD*bv<܌#e@:4!fot:<o\ni',a_:iBv|N4.5Nfivphl֚O= OFQk\$id2T p6-Z6h:a,2#8А#6nJht4O42ok*r@p@!?6r[L:2Bj!HbP=!1V\"0\nSD7C!! +=tC.C: +=%c1MR/EȒ42`8(ӹ[W =yS b=BS+ ɯ@pL4Ydq6 Ac܌Ψk[&>Zpkm]u-c:Ntδpҝ8=#[.ޯ~myPP|I֛Q9v[Q\nr'g+T2Vz48( Ey*#j2]R)[NR\$<>:>\$;>\rHT\nwN <Gw\\Y_Rt^>\r}S\rz4=\nL%J\",Z8i0u?s3 #ى:E]xs^8K^*0w~:iv2w^77cu+U%{P*4̼LX./!1Cqx!HFdLĠ`6 5fĆ=Hl V1\0a2;6_ه\0&ZSd)KE'n[ X\0F[Pޘ@!Y,`\"ڷ0Ee9 yF>9bF5:\0}Ĵ(\$37H MA6R{Mq7GCC m2(Ct>[-t/&C ]etG̬4@r><Sq/QhmL#K|6fKP\r%tV=\"SH\$} )w,W\0Fu@b 9\rr2#DXyOI>n Ǣ%'_t\rτz \\1hl]Q5Mp6kqh\$H~|!*4`SS tPP\\g7\n-:袪plBc(wO0\\:w p4{TjO6HÊrq\n%%y']\$aZ.fcq*-FWkzjlg:\$\"N\r#dÂsc̠\"j\rՒPh1/DA)[knp76YR{MP@\n-a6[zJH,dlBho+#Dr^^eE ĜaPJGzt2XVȳB_%K=Eb§kU(.!ܮ8 I.@Kxn:P32mH C*:vT\nR 0uҧ]P /JQd{L޳:Y2bT 34cV=L4r !BY6MeLio9< GƕЙMhm^UN Tr 5HiM/n흳T[-<__3/Xr(< uҖG NX20\r\$^:'9O;k fN'ab,V1HI!%6@\$EGڜ1(mUrս`iN+Ü)0lf0[UV-:I^\$sb\reugh~9߈bf+0 hXrݬ!\$e,w+3_Ak\nkrʛcu WdY\\={.čgp8t\rRZvJ:>Y|+@Ct\rjt6 %?ǎ>/ 9F`וv~KRWz lmwL9Y* qxzSeݛ~Dxɟi72_{53t_z3d)C\$?KӪP%T& &\0PNA^~p Ϝ\r\$b*+D6궦ψJ\$(olh&KBS>;zxoz>oZ\nʋ[vȜ2OxِV0f2Blbk6ZkhXcd0*KTH=πp0lV \rnm)((:#E:CC \rG\ré0i :`Z1Q\n:\r\0 q:`-M#}1;q#|ShlD\0fiDpL``0y1\r=MQ\\ %oq\0 1211 ќbi:\r/Ѣ `)0@›I1NCOZ1q1 ,\rdIǦvj1 tB⁒0:0 1A2V0%f i3!&QRc%q&w%\rV#Qw`% m*ry&i+r{*(rg(#(2()R@i- 1\"\0R.e.r, ry(2Cb!Bޏ3%ҵ,R1&tba\rL-3 \0 Bp194O'R3*=\$[^iI;/3i5 &}17# ѹ8\"789*23!!1\\\08rk9;S23 ړ*:q]5S<#383# e=>~9S螳r)T* a@іbes:-*;,ؙ3!i #1 +n *@3i71_FS;3F\rA3>x: \r0@-/w7SJ3 .F\$OB%4+t'gLq\rJtJM2\r7T@)ⓣd2P>ΰFi಴\nr\0bk(DKQ1\"2tP\r,\$KCt5#)P#Pi. U2C~\"");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("f:gCI\n83)781x:\nOg#)r7\n\"`|2gSiH)NS\r\"0@)`(\$s6O!V/=' T4=iS6IOG#XVCsZ1.hp8,[H ~Cz2lc3sIb4\nF8TIU*fzr0EyfY.:I(c΋!_l^^(N{S)rqYl٦33\n+GyixV3wuh^ra۔c\r(.ˆCh<\r)ѣ`743'm5\nP:2Pq C}ī38B0hRr(0b\\0Hr44B!p\$rZZ2܉.Ƀ(\\5 |\nC(\"P. NRTΓ>HN8HP\\7Jp~2%OC1.C8·H*jS( / 6KU<2 pOI`ⳈdOH5-4pX25-Ңۈz7 \" (P\\32:]U ߅!]<Aۤl\r\0v#J8wmɤ<ɠ%m;p#`XDiZN09 `wJD29t*yNiIh\\9:xﭵyl*ȈY8W?ޛ3 !\"6n[\r*\$ Ƨnzx9\r|*3ףp:(p\\;mz9Œ8Nj2\rHH&(z7ik cet2:SHȠ/)x@tri98V+^WڦkZYlʣ4Ƌ\\E{7\0pDi-T0l%=˃9(5\n\nn,4\0a}܃.Rs\02B\\b1S\0003,XPHJspd K CA!2*W2\$+f^\n1zE Iv\\2.*AE(db܄9Dh&?HsQ2x~nÁJT2&eRGQTwݑP\\)6sh\\3\0R '\r+*;RH.!['~%t< pK#‘!lLe,&\$ `CXӆ0֭:Mh ڜG!&3D<!23?hJe h\rmNiNHl7vWI . -5֧ey\rEJ\ni* \$@RU0,\$UEªu)@(tSJkp!~d`>\n ;#\rp9jɹ]&Nc(rTQUS\08n`ybLO5,>xf䴒+\"I{kM[\r% [ e a1! ԮF@b)R720\nWLܜҮtd+0wgl0n@ɢiM\nAM5n\$EױNl%1 AkriFBol,muNx-_֤C( fl\r1p[9x(izQl8C XU TbI`p+V\0;CbX+ϒs]H[kxG*]awn!6mSIK~/ӥ7eeNS/;dA>}l~ %^ fآpڜDEat\nx=*dTj2j\n ,e=M84aj@Tsnf\n6\rd0Y'%ԓ~ Ҩ< AHG8΃\$z{u2*a>(wK.bP{o´ z#28= 8>A,e+Cx*-b=m,alzk\$W,mJiʧ+0[ .RsKXZ L2`(CvZ\$׹,D?HNxX)M\$,*\nѣ\$<qşh!SxsA!:K}RA2kXp\n<l3VV}g&Yݍ!+;<YYE3rَCo5ճkkۣtU)[}ul:D+Ϗ _o h1400bK  lG#|UdIK7^@O\0HHi6\r\\cg\02B*e\n zr !nWz& {H'\$X w@8DGr*H'p#Į\nd , ,;g~ \0#E\rI`'%E.]` Л %&m\r%4Sv#\nfH\$% -#qBQ-c2 & ] qh\rl]sh 7n# -jEFrl&d zF6\"|s@z )0rpڏ\0X\0|DL<!o*D{.B<E0nB( |\r\n^ h!r\$(^~/pqBO,\\#RR%dHj ` ̭ V bSdiEohr<i/k\$-\$o+ŋlO&evƒijMPA'u' ( M(h/+WDSo. n.n((\"h&p//1D̊j娸E&⦀,'l\$/.,dWbbO3BsH:J`!.,F7(Կ  1ls ҎŢqX\r~R鰱`ҞY*:RrJ%L+n\"\r͇H!qb2Li%Wj#9ObE.I:67\06+%. a7E8VS?(DGӳB%;/<\r >M@HD s Z[tHEnx(Rx@GkjW>#T/8c8Q0_IIGII!YEdE^tdth`DV!C8\rb3!3@33N}ZB3 330M(>}\\tf fI\r 337 X\"td,\nbtNO`P;ܕҭ\$\nZѭ5U5WU^hotPM/5K4EjKQ&53GXXx)<5D\rV\nr5b܀\\J\">1S\r[-D u\r)00Yˢ k{\n#\r^|uܻU_nU4U~Yt\rI@䏳R 3:uePMS0TwWXDKOU;U\nOYYQ,M[\0_DWJ*\rg(]\r\"ZC6u+YY6ô0q(8}3AX3Th9jjfMtPJbqMP5>Yk%&\\1 dE4 Yn \$<U]Ӊ1mbֶ^\"NVppeMWܢ\\)\n \nf7\n2 r8=Ek7tV7PLa6v@'6ij&>;`a \0pڨ(J)\\nĬm\02eqJPtf j\"[\0X,<\\ +md~ s%omn),ׄԇ\r48\r mEH]HWM0D߀~ˁK E}|f^\r>-z]2sxDd[stS \0Qf-K`twT9Z \nB9 Nb<BI5ooJpJNd\r2\"xHCݍ:9Yn16zr+z\\m T @Y2lQ<2O+%.Ӄh0AZ2R1/hH\rXaNB& M@[xʮ8&LV͜v*jۚGH\\ٮ &s\0Q\\\"b \rBsw BN`7Co(\nè19*E SU0U t'|m?h[\$.#5 pyB@R]@|{P\0x/ w%EsBdCU~O׷P@X]Z31{eLYڐ\\(*R` \nQCF*pX|`N\$[@U Z`Zd\"\\\")I:toD \0[-g*`hu%,IHm6}Nͳ\$ MUYf&1e]pzImG/ w !\\#54IdEhqѬkx|kqDbz?>:[LƬZX:jw5 Y0 “\$\0CdSg{@\n` C M # t}xN{۰)CFKZj\0PFYBpFk0<>D<JEg\r.28U@*5fkJD4TDU76/@ K+J@=WIOD85MN\$R\05\r_EIϳNly\\qUQ \n@ۺpP۱7ԽN\rR{*qm\$\0Rԓq È+U@BOf*MC`_ ˵NT5٦C׻ \\We&_X_؍hB3%FW|Gޛ'[łV#^\r GRPFg Yi z\n+^/\\6bdmh@qAh),JWcmem]ӏekZb0Y]ymfeB;OwapDW{\0-2/bNsֽ޾RaϮh&qt\n\"iRmhzeFS7PP:BsmY d7}3?*tlT}~=c 3;TL5* ~#Asx-7f5`#\"NbG@e[s-M6qq he5\0Ң*bISFή9}p-`{ɖkP0T<Z90<՚\r;!g\r\nK \n\0*\nb7(_@,e2\r]K+\0p C\\Ѣ,0^@;X\r?\$\rj+/BPJ{\"a6|\n\0\\5  15 6 .[U د\0d8Y:!=X.uC!SopB7ůRh\\hE=y:< :u280siTsB@\$ @u Q.T0M\\/d+ƃ\n= dA) \r@@h38.eZa|.7 Ykc'D#Y@Xq=M44B AMdU\"Hw4(>8C?e_`X:A9øpGGy6FXrl1ػBÅ9RzhB{\0^-0%D5F\"\"™i`nAf \"tDZ\"_V\$!/D٦̀F,25jTy\0Nx\rYl#Eq\nB2\n64!/ \nQ*;)bRZ0\0CDo ˞48e\nS%\\PIk(0u/ G\\}4FpG_G?)got[v\0?b;`(یNS)\nx=+@7j0,1Åz>0GcLVX %Q+oFܶ>Q-clwz5G@(hcHr?Nb@lx3U`rwUt8=l#l䨉8E\"O6\n1e`\\hKfV/зPaYKO x Ojr7F;B̒>ЦV\rĖ|'Jz#PBY5\0NC^\n~LrRgeZ\0x^i<Q/)%@ʐfBHf{%P\"\"@)DE(iM2S*yS\"e̒1ט\n4`ʩ>Q*ynTu ~%+WXKQ[ʔlPYy#D٬D<FL@6'\rF`!%\n0c˩%c8WrpG.TDoUL2*|\$:Xt5XYIp# ^\n:#D@1\r*K7@D\0CCxBhEnK,1\"*y[#!יٙl_/x\05Z4\0005Jh\"2 %Yaa1SO4%niPߴq_ ʽ6~I\\ddD3g^@^6 _HD.ksL@ɈnI~\rb@ӀNt\0s]:uX b@^1\02?T6dLNe+\0:Ёlz6q=̺x N6O,%@s0\n\\) L<C|PbA>I\" ^K4g IXi@PjE&/1@f Nx0 co,C'y#6F@РH0{z3t|cXMJ.*B)ZDQ\0T-vXa*,*<b#xјdPKG8 yK \\# =)g ȑh&8])C\nô9zW\\gM 7! ,9\$T\",%.F!˚ A--g\0002R>KE'U_I9˼j(Q@@4/7'J.RT\0]KSDAp5\rH0!´e d@Rҝ9S;7HBbxJ_viU`@SAMXGXiU *':VWJvDN'\$zh\$d_yZ]Y]P*h֧e;pe\$kw*7NDTx_ԧGi&PԆb\\EH\$iE\"cr0l?>C(W@322aI{B`ڳiŸGo^6E\rGMp1iIX\00032Kzl&ֆ'IL\\\"7>j(>jFG_& 10IA31=h q\0Fķ_JԳVΖ܆q՚ (/dOC_sm<gx\0\"\n@EkH\0J8(km[S4\nY40+ L \n#Bӫb%R ֖׭R:<\$!ۥr; %|ʨ(|H\0]cҡ= 0Z\"\"=X)fN6V}F=[ৢhu-\0tbW~QiJL5׭q#kbWnQT!encS[+ִE<-a]ŃYb\n\nJ~|JɃ8 Lpo NܨJ.ŃS2c9jy-`a\0*ֈ@\0+mg61Me\0Q _}!IGL f) Xo ,Shx\0000\"h+LM јZ j\0/\$>u*Z9Ze+JtzRKԯDyq0C-fmBI|HBsQlX.|c[ ZhZlx@'mlKrQ26]ҷnd[񎩇d\"GJ9uBoan@nlW|*gX\nn2F |x`DkuPP!Q\rr`W/ 1[-o,71bUsN7Gq.\\Q\"CCT\"*?uts]٩Pz[[YFϹFD3\"]u۝)w z:#Iiwp ɛ{o0n;\\x\0qm&~79 [HqdLO2v|Bt\\ƤHdH\" N\n\0 GgFF}\"&QEK{}\rrכt7Nuó[Agh;S¥ |y[Ն_bȨ!+RZX@0NP%jD¯z [U\"{e8>EL4Jн07 d Q^`0`]c<g@hy8p.ef\neh aXmSjBژQ\"\rK3=>ǪAX[,,\"'<%aӴ.\$\0%\0sVpM\$@j>}Ve\$@̈́ #(3:`UYu @V#E G/XD\$havxS\"]k18aя9dJROӊs`EJUom{lB8(\n}eib, ;N͇Q\\ǸI5yR\$!>\\ʉguj*?nM޲h\r%U(dNd#}pA:-\\ A*42I\r֣ 0h@\\Ե83rq]d8\"Qƙ:cy4 ᑚda€Π6>UA:@2\$eh2FəN+\rԀ(Ard*\0[#cj>!(SLe TM 9\0W:BD3J_@srue +'B}\"B\"z2rlxF[L˲Ea9cdb^,UC=/2/\$C#8}D6 `^;6B0U7_= ,1j1V[. H9(1ҏLzC \$.Afh㖫DrY He~or19م\\߄P)\"Q,eLw0\0;w Xǝqo~>9>}dc\0gfq&9-J#3^4m/\0\0006n8>䈴cph_A@[7|9\$pMh>5KE=hAt^V \" cB;it@,\n)s`;4Iy-0yeʨUBv3HPG5s|\r\$01l3(*oF~PK.,'J/Ӳtd:n\njYz(wZ#Z Io@1λ \$=VWz nB aAq@Ip @lH{UoXfӿ\\z.,-\\ڗ^y n^BqzX㉡\$*J72D4.!M0DFGLmc*mcI^tjl7替SQ.ihLڱB6Ԅh&Jl\\Wecf%kj pR=i@.(2klHUW\"ojp!S5pL'`\0O *Q3X“lJ\08\n\r*ar`<&XBh8!x& Bht\$]cLd<`\0ςawO%;BCQ\r̭pPQZZAu=N&ia\nmK6I}n t\nd)bp\"g'07u&@ 78XNx\$BZB/MgBiѧ\\mmIĀ;5=#&4PՍqA\\,q\ncBw\0BgjD@;=0mk\rIJ` '5k-{\0_Mu2׆q>)9W\n d+ԧG\rn4O:581:Κ?(yGgWK \r7m5.eHhJAk# L..\\=UЄ:>7W+^yDbGOZ4r(|xPr,y8qaܩO2kn#p2Ljؔ.cUcłj\$8Ĭ~7ZR:׆89Ψw(aL%-,쿌#f%8|c%XW\n}6H˞#&J,'zMMຑ܆ /y6YQںdәd:Ep2gg/,Ո'8 ^;UWN{OCziKXڔNdGRCJYiy#>zSMUcRORԾ0)0]:=Ϟt'\$srF67  =\$B !qs 1\"v%Il<b!ۮ6(Cd-^<H`~2KzKٜԱ y,qA*\0}Cpb\\S5'(|MW5;\$5 T|;kt@;9);i.;_F=DM`H\0 N @%wdPb\$H|k[dCI!:l,<utNeϝW^w'6Dfu ihIZ:~ϣrz3+uoCs2buaXwWK HԶ27>WyMJrpTL|`f:Atd|i[wjW 7aueA5Q' ʐ\0 3Ҿ\$\rk)a;H=֐~IGI<\"I1'蠙Gcm\0P\nw#>xB\"Em|2\$}<3PYXgo<qE\"`4g8r]\n:qVbTm9K&ғĤm7)@Qz=ߵűH\n}Oi}\r٣.vpJW&u550 5PI\nl\0O5*= P-H \0f%tぺ*S:?ȂHq4K@Ԭ܂.O(Z\$]onzA!t85<WR2[8n5\$I浕Z]'}ET\n.&7V@_Do&J64ij\$ELut+IТأ~SSZT XPYz\"\$V_]M(7t_S /tĂmH:\05- _Z'# 1P,}(~\0!Җ`-P\ney (`9O!;5\n\${UA7![ YF> 8&!CLH(\0'Ǐ2d\r%;k抐4_O>5@DҼ\0VA6' AYSrԾ4+h@bOM\0@\rJm0\08O;kӠA(6| `8 \0&EV\0VwkNKxdpsALAXku\0t Ԣ.>(NK'fldA?++N~kPR\0xʑBK]bU\\̛d\0S@Q͉b\0\0b\0_\\@\nNOA PfԏAj M4<9 +`S w3T7XT!\0ePAIb 1!\04' @!8\0/!:K, CASXfeM.::t._d81v`B\"!.^*N.^\n&\r(. O0@Pnjڗ#&rH< !3(i @Aa { ¬#S6𨘶F@Y[O(./B) L02B؈-ƀqpJ<\0\n\0/@8C4P\r )F\$q.]\"B# #\\84\$s:.(*Oi>|#T'`Bua/CTKaX8`p\0`\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS _6r:ECIo:CXc\r؄J(:=Ea28x?'iSANNxsNBVl0S Ul(D|҄P>E㩶yH ch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0\0Dbc!Q7Шd8~N)Eг`Ns`S)O /<x9o3n2!r:;+9\n<`b\\?`4\r#`<Be B#N \r.D`j4par >8\$c1cc{n7ANRLi\r1!( j´+62X8+.\r!xh' 6S\0RO\n1(W07q:NE:68n+մ5_(s\r /m6P@EQ9\nV-\".:J8weqX]Y XezW 7Z1hQfuj4Z{p\\AUJ<k@ɍ@}&L7 UwuYh2@u P7Ah3 ÛXEͅZ]l@Mplv) HWy>Y-Y/hC[*F#~!`\r#0Pf \\^%B<\\fޱ&/OL\\jFjZ1\\:ƴ>NXaFAfh{\"s\n64?8^p\"ȸ\\e(PNq[gr&}PhW*r_sPh\nom#.\0@pdW \$ҺQ۽Tl0 HdH)ۏ )PHgUBe\rt:\0)\"t,[(DO\nR8!Ƭ֚lAV4hSq<@}gK]]=90'wA<a~WD|A2XU2yŊ=p)\0P sn3rf\0FvG I@%+_I` \r.NKI[ʖSJaUfSzM %\"Q|9Bcaq\08#<a:z1Uf>Zle5#U@iUG‚ns;gxLpP?BQ\\b 龒Q=7:ݡQ\r:t:y( \nd)\nX;CaA\rPGH!@9\n\nAl~HV\nsիƯbBr3\rP% ф\r}b/Α\$5PC\"wB_UgAt^QUjBvh졄4) +)<j^<L4U*Bg*nʖ- 9 O\$طzyM3\\9.oE(i 7 tߚ-&\nj!\ryyD1g]yR7\"~)TZ0E9MYZt Xe!f@{Ȭyl 8;R{8Įe+UL'F18PE5- _!7[2J;HRǹ8p痲݇@0,ծpsK0\r4\$sJ4DZI'\$cLRMpY&iz3GzҚJ%P-[/xT{pzCv:V'\\KJaM&Ӿ\"eo^Q+h^iT1ORl,5[ݘ\$)jLƁU`S`Z ^|r=n登TU 1Hykt+\0vD\r <ƙjGt*3%kY ܲT*|\"ClhE(\r8r{0D_.6и;rBjO'ۜ>\$`^69#4Xmh8:c0;;\\'(t'+ ̷^ ]Nv#,vOiϖ><SA\\\\!3*tl`u\0p'7P9bs{v{7\"{ra(^Eg/U9g/`\nL\n)(Aa\"  &P@O\n0(M&FJ'! 0<H*|*OZm*n/b/ .o\0dn)i:RP2m\0/vOXFʳψ\"000bgj\$n0} @ =MƂ 0nP/pot.̽ g\0)o\n0\rF bio}\n̯ NQ ' xFaJL\r\r0' d oep4Dʐq(~ \rEprQVFHlKjN&j!H`_bh\r1 n!Ɏ z \\\r`V_k\"\\ׂ'V\0ʾ`ACV`\r%\rk@NB !\n\0Z 6\$d,%%laH\n#S\$ !\$@2I\$r{!J2HZM\\hb, '||cj~gr`ļ\$ +A1E <L\$Y%-FDdL\n@bVf;2_(Lп <%@ڜ,\"dNer\0`Z 4'ld9-#`Ŗj6ƣvN͐f&B\$ (Z&278I P\rk\\2`\rdLb@E2`P( B' 0&{:dB1^؉*\r\0c<K|5sZ`O35=@5C>@W* =\0N<g6s67Sm7u? {<&L.3~D\rŚ x),rin/O\0o{0k]3>m1\0I@9T34+ԙ@eGFMC\rE3Etm!#1D @H(n <g,V`R]@3Cr7s~GIi@\0v5\rV' P\r\$<b%(DdPWb fO x\0} lb&vj4LSִԶ5&dsF M4\".HM01uL\"/J`{xǐYu*\"U.I53Q3QJg5s&jьu٭ЪGQ MTmGBt l-c*\rZ7*hs/RUVBNˈԊiLk.trYi-S3\\TOM^G>ZQj\"iMsSS\$Ib fu:SB|i8 v#D4`.^HM_ռuUz`ZJ e@Cea\"mb6ԯJR T?ԣXMZІpQvjjV{C\r7 5{P]\r?QAA2񾠓V)Ji-N 99fl Jm;u@<FѠej ĦI<+CW@Zl1<2iF7`KG~L&+NYtWH飑w ls'gq+LzbizŢzW zdW(y)vE4,\0 \"d\$B{!)1U5b p#}m=@w P\0\r `O| ɍYEOu_\n`F`}M.#1f*ա zuc xf8kZRs2ʂ-Z2+ʷ(sUcDѷ X!u&-vPر\0'LX Lo >Վ\r@P\rxFEȭ % =5N֜?7NÅw`hX98 qzd%6̂t/ Ll,KaN~ ,'ǀM\rf9w!xx[ϑG8;xA-I&5\$D\$%´ ]&o-39Lzy6 ;uzZ 8_ɐx\0D?X7yOY.#38ǀeQ*Gwm Y ]YOYF)z#\$e)/z?z;^FZg`^e# ?eM3u0>\"?@חXv\"\r6v~OV~^gđٞ'f6:-Z~ O6;zx;&!+{9Mٳd \r,9W ݭ:\rٜ@睂+]-[gۇ[s[iiqyx+|7{7|w}E WWk|J؁xmq xwyj#e(ߞþ {ڏyM@ɂY(g͚-J(@ ;y#SYp@%so9;+ ;ZNٯº kVu[x|qON? `u6||X س|Ox!:ϗY]c\rh9n 8' \rS.1USȸX+z]ɵ?C\r\\ \$`)U|ˤ|Ѩx'՜<̙e|ͳ LMylкO]{ѾFD}yuĒ,XL\\x;UWtv\\OxWJ9ȒR5WiMi[Kf(\0\rM7;6KʦI\rxv\rV3ɱ.R|^2^0߾\$Q[Dܣ>1'^X ~t1\"6L+AeI~@ pM>m<SK-HT76SMfg=GPʰP\r>2Sb\$C[()%Q#G`uGwp\rkKezhjzi(rOT=7~ 4\"ef~ dVZU-b'VJZ7)T8.<RM\$'by\n5_ wU`ei޿JbguS?`+ Mg7`\0_- _?F\0X[J8&~D#{P\"\0\0F ?*^wО:u3xK^w߯y[Ԟ(#/zr_g?\0?1wMR&M?StT]ݴG:I)B v1<t6:W{x:=ޚ:!!\0xq&0}z\"]ozjw6JP۞[\\ }`S\0qHM/7BP]FT8S5 /I\r\n O0aQ\n>2j;=ڬdA=pVL)X\n¦`e\$TƦQJk7*O .ġ\r\$#pWT>!v|}נ.%,; f*?\0pD! #:MRcB/06 7@ \0VvghZ\nR\"@F EI\n8&2bXPĬͤ=h[+ʉ\r:F\0:*\r}#!\"c ;hŦ/0ޒEj]Z\0@iW_h;VRbP%! b]SBUl r\r-\0\"Q=Ih FLFxRэ@\0*j5k\00' @ElOHCx@\"G41`ϼP(G91\0\"f:Qʍ @`'>7ȎdR41>rIHGt\nRH 71fh)D8B`(V<Q8c? 2E4j\09\r͐@\0'FD,!H=*E(?Ѫ&xd_HǢE6~uG\0RXZ~P'U=@l+A\nhIiƔPGZ`\$P.;E\0} Q%jAWإ\$!3r1 {Ӊ%i=IfK!e\$80!h#\\HF|i8tl\$lli*(GL  \$x.q\"Wzs{8d`&W\0&E15jWbćVR-#{\0Xig*7VF3`p@#7 0[Ү[éh˖\\o{T]Ŧᑀ8l`f@reh\nW2*@\0`K(L̷\0vT\0c'L: 0@L1T0bhW|\\-DN\ns3\"2&\rU+^ReSni0u˚b J2sps^n<Fla\0\0mA2`|؟6 nr\0Dټ7&mߧ-)\\݌\n= ;*bT y7c|o/:tP<Y:K&C 'G/@Q*8 v/&W6p.\0u3Bq:(eOPp \r0(ac>N| t\n6v_e;y6fgQ;yβ[S gǰOuddH H=Z\r'qC*)gEO \" !k('`\nkhT*s5REa\n#!1\0;S@( lI v\rnj~63 ΈI:h\n.2pl9Bt 0\$bp+ǀ*tJsJQ8;4P(ҧѶ!.Ppk@)65 !(\n+{`=H,Ɂ\\Ѵ4\"[C1-luo4[E%\"w] ( ʏTe)KAE={ \n`;?-G5I.%q%EsgFs KGn4i/,i0ux)73SzgV[hDp'L<TM jP*o\nH\n4M-WNA/@8mHRptpV=h*0 1;\0uGT6@s\0)6ƣT\\(\"U,C:5iKlۧE*\"r.@jRJQ/L@SZP)(jjJL*\0\r-Q*g9~P@H\n-e\0Qw%^ ET< 2He\0 e#;ITl+A+C*Yh/D\\!鬚8»3EE/}0tJ|1Qmn%(p!\n±U)\rsEX5u%B- w]*E)<+qyV@mFH BN#]YQ1:V#\$<&Xxt@]GԶj)-@qL\ncIY?qC\rv(@X\0Ov<R3XQJ 99lxCuīd vTZkl\rJ\\o&?o6Eq\r '3ɪJ6'Y@6FZ50VTyC`\0VS!&66rDf`ꛨJvqzF@ݵ҅Z.\$kXkJ\\\"\"֝i:E\roX\0>PPmi]\0aV=I6jK3ZQmEb0: 32V4N6!l@hhU>: E>j0g\\|Sh7yބ\$,5aė7&:[WX4q Jׂc8!HVDĎ+D:9,DUa!X\$ЯڋG܌Bt9-+otLqKx6&%xtR\"πRIWA`c}l6~*0vkp68z+qXw*EIN*qPKFO\0,(|k *YF5;<6@QU\"\rbOAXÎvv)Ho`ST pbj1+ŋe ʀQx8@ 5\\Q,ĉNޘb#YHp1kB8NoX3,#Uک'\"eeH#zq^rG[:\rmng 5V]-(W0~kh\\ Z`lk ojW!.hF[tAweM૫3!nK_SFj-S[r̀w0^hf-?X5/IY V7ad 8bqbn\n1YRvT,+!NT2I߷K`K\"O)\nY4!}K^D@na \$@ \$Aj\\D[= bHpSOAGho!F@lU`Xn\$\\͈_˘` HB]2 \"z0i1\\w.fy޻K)  p0XS>1 *,]\r\"<cQ\$tq. <+t,]L!{gX\$6v %GH EX*0ۊ)q nC)I\" `KF@d5Ap{\\pɾNr'S(+5Њ+\"ĀU0iː! nMbrK r|a@x|ka 9WR4\"?5pۓkߒ7—Hp5YpWG#rʶAWD+`=\"}@H\\pЀߋ)C3!sO:)_F/\r4<A\nn/T3f7P16OYлϲq;؁aXtS<9nwsx@1Ξxs?3Ş@54 oȃ0pR\0 yqL&S^:Q>\\4OInZnv3 3+PL( .x\$«CCnAkc:L6rwhnrZ==jђ6}MGu~3bg4s6sQ#:3g~v3<+<a}ϧ=e8'n)ӞcCz4L=h{iJ^~wgDjL^=6ΧNӔ\\DNE?h:S*>+uhh҅WE1jxt't[wS9T[,jvtA#T9jK-ޠYiQe?_Wz @JkWYhpuj|z4 im O5\0>|9זgVyu=}gs_V{k@r^(wH'a=iN4_{6tϨϗe[h-Ul?J0O\0^Hl\0.Zxu\"< /7 i:\nǠ;!3_0`\0H`2\0H#h[P<עgm@~(\0ߵk Yv#>\nz\n@Q\n(G\n'k5n@_`Ї_l1wpPw\0coEl{ݾ7o0Ibϝnz {8w=|/y3a߼#xq@ka!\08dmR[wvNjRGp8v\$Zmt ǽuop`2m|;#xmn~;VE3O\r,~ow[N} clyO;?~^j\"Wz:'xW. u(Ýq<gvhWq\\8)M\\5vڷx=hib-|bpyDЕHh\rcey7pxG@D= 1!4Ra\r9!\0'Y@>iS>oofsO 9.\"Fl20E!QːD9 dBW4\0y `RoF>Fa00 2<IP'\\I\0\$\n R aU.\"1ІeY砢Zq1|#G!PP\0|HFnp>W:`YP%ď\na8P> `]4`<r\0Îz484`mh:ΪHDj+p>*8ՠ08A:с]wúz>9\n+:iiPoG01)ZږneR֖gMgsLCr!3R )00sIJVPpK\n|9e[ˑD0z4ϑo,N8ns#{蓷z3>BS\";e5VD0[\$7z0=8 T 3Q'RnL'\0o,\0:[}(| X>xvqW? tBE1wG;!݋5΀|0JI@#uņI\\p8!'l-lSB,ӗ]1ԕHN8%% /;FGSh\\لct2|W\$t<hO+#BaN1{yw2\\Z&)db',X xm~H@:d >=- lK܏J\0́@rϥ@\"( AZ7h>\\#>\0XrYYxŝq=:Թ\rlomgbD_TxC0.yR]_ZǻWI G Mɪ(|@\0SOs {@k}FXSb8=_ l\0=g{HyG s_J\$hkFqd4ω'>vϏ!_7Vq@1zuSejKdyuS.2\"{K?s˦hRd `:yGھ\nQ ow'hS>LX}eG@9W|Ϲ@_uZ=,!}\0I@#\"'Y`\\?p,Gל_'G T#oH\r\"o}?O鼔7|'=8MQyaH?߮ \0bUd67I O\"-2_0\r ?hO׿t\0\0002~° 4K,oh Pcz`@\"H; ,= 'S.bSCcR,~X@ '8Z0&(np<pȣ32(.@R3@^\r+@,\$ ϟEtB,⪀ʰh\r><6]#;C8P3;@L,+>p(#-f1z,8ߠƐP:9R۳)e\0ڢR!\nr{eGA@*nD6N\rR8QK0>PN IQ=r<;& fNGJ;UAAP&`);!s\0pp\rn(@%& SdY uC,8O#oRv,#|7\"CpB`j X3 ~R@v9B# @\n 0>T-5/= E\n ˆd\"!;p*nZ\08/jX\r>F Pϐe>OL O  0\0 )k㦃[ ϳ'L 1 1\0C1T `RʐzĚp< .>5\0 > Bnˊ<\"heî s! H{ܐ!\r\r\"|>R1d\"U@D63>o\r vL:K2+0쾁>\0 B{!r*Hy;`8\0دd\r02A?+\0Å\0Aw Sl\r6co=0z/J +W[~C0e30HQPDPY}4# YDp) |@&-/F T aH5#H.A>0;.Yġ *D2=3 pBnuDw\n!zCQ \0HQ4D*7\0J%ıpuD(O=!>u,71TM+31:\"PRQ?P+11= M\$ZlT7,Nq%E!S2&U*>GDS&ozh8881\\:Z0hT C+#ʱA%D!\0XDA3\0!\\#h9bT!dYj2S\nA+ͽHwD`(AB*+%EX.ˠB#ȿ &XeEo\"|r8W2@8Da|NhJ8[۳Wz{Z\"L\0\0Ȇ8x۶X@ Eh;af1;nhZ3E0|AtB,~W8^Ǡ׃<2/ 8+۔O+%P#ή\n?߉?O\\]7(# (!c)NMFE#DXg)0A\0:rB``  QH>!\rB\0V%ceHFHm2B 2I`#D>n\n:L9C0\0x(\nL\"G\n@`[\ni'\0)y)&(p\0N \"N:8.\r!'4|ל~ʀ \"cDlt0c5kQQר+ZGk!Fc4Rx@&>z=\$(?(\n쀨> ҵCqیt-}G,tGW xqHfb\0\0zT9zwЅDmn'ccbH\0z3! HHz׀Iy\",-\0\"<2'#H`d-#cljĞ`i(_dgȎǂ*j\r\0> 662kj<Cq9ĐI\r\$CAI\$x\rH78 ܀ZpZrR_U\0l\rIRXi\0<r~xS%^%j@^T33ɀGHz&\$(q\0f &8+\rɗ%2hCxI lbɀ(hSY&B`fxvn.L+/\"=I0d\$4 7rA(42gJ(D=F (-'ĠXG29Z=,r`);x\"8;>&',@2pl:0lI\rrJDhAz22p`O2h8HĄwtBFg`72{,Kl߰%C%om+X41򹸎\n2p ZB!=VܨȀ+H6*\0k%< K',3rI;8\0Z+Eܭ` +lW+-tfbQ_-Ӏޅ+ 95LjJ.Gʩ,\\ԅ.\$2J\\-1-cˇ.lfxBqK,dˀ8AKo-3Kr/| /\\r,!Y10@&|+J\00P 3J-ZQ \r&\nL*jĉ|\"˺A/8)1#7\$\"6\n>\n7L1h9\0BZd#b:\0+A22\nt̜O2lʳ.LHC\02+L\\rKk+˳.ꌒ;(Dƀ1sds9P4@. AnhJ13K03J\$\02Lk3Q;3n\0\0,sI@u/VA1UM<Le4D2V% Ap\nȬ235A-Tu53۹1+fL~\n -> ҡM4XLS͟*\\@ͨYkSDM5 XfDsUs% ̱p+K6/ݒ8Xނ=K6pH%3ͫ7lIK0LDu`P\rSO͙&(;L@ψN>S28(`JErF 2SEM M\$qE\$ã/I\$\\ID\"\nw.tS ђP#\nW-\0:jR^S8;d`E+(XrM;3;B,*1&2XS)< L9;RSN gIs+ӰK<sLY-Z:A<OO*2vW7+|˻<T9hy\$<#ρ;v\$O\0 ,Hk -Ϛ\rϣ;O>7>3@O{.4pO?Tb.. ~O4S>1SS*4Pȣ>3\0W>2><P?4@t\nNAxp%=P @C@R˟?x\n0NwO?TJC@# .dMt&=\\4A:L\$N:\rI' Arግ;\r/C BӮi>L7:9|C\$)z@tl:>C \nBi0G,\0FD%p)o\0\n>`)QZIKG%M\0#\0DQ.H'\$E\n \$ܐ%4ID3o:L\$m 0 B\\(8hDCsDX4TK{x`\n,\nE:p\n'>o\0tI` -\0D/KP`/H\$\n=>UFP0UG}4B\$?E %TWD} *H0T\0t\"!o\0E7R.tfRFu!ԐD\n\0F-4VQH%40uN\0DQRuE )I\n&Qmm #\\ D(\$̓x 4WFM&ԜR5H%q[F+IF \nTR3DLoy4TQ/E[ў<t^F)Q+4QI#IF'TiѪX!ѱF*nR>5pKm+sIREM\0(R?+HҀJ\"T D\$ 4wQ}Tz\0G8|xR6R 4XR6\n4ymNQNM&RH&2Q/7#қ{'ҍ,|\n .\0>{o#1D;?UҕJ9*jFNщJ #~%-?CL3@EP{`>QȔ%O)4R%I@%,\"I<\$ԉTP>\n\0QP5DkOFTY<oQ=T\0x 5D,0?i?x mE}>|[\0&RLHS9GI1䀖M4VHoT-S)QGF [TQRjN#x]N(U8\nuU\n?5,TmԞ??@U\nu-R9U/S \nU3IEStQYJu.QFo\$&i KPC6>5G\0uRu)U'R0ЀDuIUJ@ :V8*Rf%&\\RMU9RfUAU[TUQSe[\0KeZUaUhmS<,Rs`&Tj@G!\\x^0>\0&p΂QQ)TUPs@%\0W `\$(1Q?\$CQp\nOJX#V7Xu;!YBSc+V#MUWHURDžU-+VmY}\\OKM\$SeToVHT!!<{RZA5R!=3U({@*Ratz\0)QP5հN5+P[9V%\"\nGSL9l\rVؤ[ouUIYR_TYp5O֧\\q`U[Bu'Uw\\mRUԭ\\Es5K\\V\\S{AZ%O\$F>5EWVm`Wd]& \$Ό!RZ}ԅ]}v5ZUgQ^y` !^=FR^vUKex@+r5#@?=uΓsץYNsS!^c5\$.u`\0XE~19JUZ@#1_[4J2\n\$VI4n\0?4aR!U~)&B>tRI0 _EkTUS|Uk_8&E(?@J5JUBQT}HVjQx\neVsU=VN4ղؗ\\xR34GD\": KQ>[\rY_#!#][j<6خX c#KL}>`'\05XcU[\0(Wt|tR]p/]H2IQO1SQjZHm)d^SXCY\rtu@Jp%M ?UQ\n=Rar:ԿE-G\0\$d]meh*QWtc`AY=S\r m-=MwH]J\" f\"{#9TeMcNIDU6g2ݝe aLQ&&uTX51Y>S֊Q#Ij\0WP?ub5FULn)V5R@\$ !%oP'EUP-Bp\nF\$S4tUF|{qȓ0Umjs\$ڛjcڐ֫aZI5Xj26&>v\n\r)2_kGTJeQ-cZVMֽz>]acc`tHj6+kM\0>##3l='^6\0èvZ9Se\"bΡB>)/T=9\0`P\$\0]/0ڪk-6{k[F\r|SѿJMQD=/WXVa'atol冶Xj}C@\"KPom3\0#HVv~{?gx n|[?U[rhG` 3#Gk%L\0I`CD \"\0ŧ#cN6ڹf;ѤeeF7/N\r:QG9 \$Iռ]TWGsdWMIfBcۤ!#cnu&(S_wSf&TZ:0CSLN`ܳYj=Z!=rV]g ӣrXl-.U'uJuJ\0sJ'W%\\>?BVj4J}I/-ҝrRLS3\0,RgqӭTf>1\0_\\V8 Ztc耆<^\\llj\0T]CwΓzIZwNpVWjvY>2 o\$|UWL%{toX3_RJ5~6\"Zl}`kceR=^U Ԏ1ѽw 7edvb=\0f,m)Gp)9L>| \"@5 `:\0,t@xlJb6aA\0ػAR[A0\$qoAS@<@y\"as.V^讥^\0H[H@bK)z\r=^zB\0No<̇t<x \0ڬ0*RI{^E:{1E0Y/c\"\04F7'\n0`UT?MPl4r ( Z|&t\"ILw+m}Wi\r>U__u63y[8T -V}x_~%7{jMo_E~]P\$JCaXG 9\0007Ń5A# \0.\r˴_%\n\r#<MxJ|2\0;o^a+F笀Lk;_#M\\ pr@õOR~ zANEYO (1N׉R8Cn?O)1A Do\0\rǢ?kJ\",OFa-b6]PS5xC=@jLL:\"胻Ίl#Bk@N:>|B9 :N\$S CB:j6ΉJkuK_W͢ØI=@Tv\n0^o\\Ӡ?/&u._\rC+c~Jb6e\0yѡ\0wxh8j%SVH@N'\\ۯN`n\runKqUB+f>G\r=@G d\n)FO ÈfCɅX|I]3auyUi^9y\no^rt\r8͇#N VY;c*%V<#h9r\rxcv(\ra(xja`g0V̼Qx(glհ{gh`sW<Kj';)Gnq\$p+Ɍ_d^& Dx!bv!EjPV'(=b\r\"bL\0bt\n>J1;ۈ4^sQ p`fr`7xE<l 8s'PT ֺ˃z_T[>:`1.;7@[>6!*\$`\0`,@?m>>\0LCǸRn/+`;C\0*<F+q M;1K\n:b3j1l:c>Yhގ#;85:\\\0XH…aM1\\L[YCvN\0+\0t#\$ !@*l FdhdF&Ƙf)=04x\0004ED6K\0nN];q4sj-=-8\0D f5p4J^'Ӕ[H^NR FKwz EgF|!codbx\0-6,E_3up /wz(exRaHYce59d\00 @2@ҐYfeyYcMוh[ez\rv\\0e\\[ueNY`ۖ]9h姗~^Yqe]qe_|6!u`fJ {7M{YهjeCS6\0DuasFL}\$ȇ(MbƤ,0Buίт2 gxFљ{an:i\rPjerrGBYM+ q iY`0,>6fo0o Xf\0VL!fl6 /1e\0>kbf\r!uf<%(r˛a& Y!mBg=@\r; \r5phI9bm\$BYˋgx#@QEOm90\"!tˉЇO* \0>%\$orN&s9f4g~jMfwygy\\`X1y5x^z_,& k|1xA6 \no蔻&xgg{r?緛-|t3}gHgK9J<CC197gh6!0HcdyfDA;9T0\0p! 6^.S²?E(PΈ .5hEPJv.+\$5>P+?~g6\rhpz(W\"y:FadŬ6:fi\0A;e^wf >y`-\r\0hr\rr8i\"_ 9CIfXˈ2\"ŢhL~\"%V:!%xyizygvx]}qgZ i|`+ _g٣譞6PAʀ\$=9h|p!.!i^8zVCZ\"(9U)!DgU\0j?`4LTo@BNa{r:\n̟E8æ&=E*Z:\n?g̊h.N5(Shi2*cf@7z\"|rP.ǀL8T'k:(q2&ED2~ر9 v8@^X=X`qZQ֮`9j5^@竸nqv3(I6jdT\\ 3,hk3(3PuV|\0阮Uk;JQ. :J\r1nBI\r\0ɬh@?N\nsh\";r~7O\$(5R ʽjFYFܔ~f\"vۓo˨º#aP<h-3麝/Gxni@\"G?,ZpxX`v4X[I7åX c !b}j_95qti6fٞ5pX'2r0ƺD,#GU2؏I\rl( =Aa쩳-8dbS4~H ;06b{޺Rs3z Nބ`ˆ+4<^ay }ryk&4@?~cE@LS@z^qqN</Hj^sC`sbgGy^\nN\n:GN}c\n +=p1NTB[dЋܹ`noj;jěwhc9p̡[y405͋N+ο`Xda/zn*P#t赸~9W V~=#n) 2;j:JkC!>x5==2. |'[';v;:SA &[men˵<6ma=Y.神:g;I߻x[IJ\0~zaYwT\\`V\n~P)zJQ@[ {D Bv|i-EK;^n{:Nh;2ƀpѴ6罘99XhQ~iA@D j}ozLVѳ~ 8B?# F}FTdezcFg7Η 6#.E££S.J35J;n5:ySCvoս.{ d\\0?W\0!)'Eg;+\0 YNtbp+c\0B=\" cT:Bc PIDV0!ROlO N~aF|%ߺ)O WoQw:ٟl0h@:օ8Q&[nFp,æ@JTw9(<{ƐO\r ڂ\$m/HnP\$o^U\"{Ė<.nq8\r\0;n+޳3n{D\$7 ,Ez7\0l!{8.s8PAFxrp+@d9OP5lK/\\msqvQ/ !z7o:qV5?GHOO\$l+,\r;~Ač錳{`7|Ăr'Ji\rc+|#+<&қ<W,>^P&nJhe%dCizXA'D>ΈEk@Bw(.\n99AhNckN d`p`%23Hb2&<9R(tTH z' o>4?\rZwӂ4`Ї鍆NӀ'-I0(Srw,Kr'-2Hlo-U_'W#'/j6̉ȫ\0<j1EQTTrBcm16͈g٫:w6ͯh@1I:2pL/w:őK<E<J76Ӏs.̲sZ/\$AsEyϜrr:w?Չ!?ǙZM9՝\01?ARͦ%7>MARr}sr)\\t-8=ЎU,WOCsՆ#w5ERlM*D1>]gKV\n\\s܇8͹seͧ9so~w4xf@D96\0 @.@9\0C;Ky+J٥u<\\`c{ӋE>yJ=l/-7Z46uC5PΩRVʳlVaNx`մ?U7(HP}jVJzNQJSs-gQ!aV_SwRO3amZXwZo'waOoZ![\n<ZOҶ'Omo[a=Q>:T\n\0=mjATRbu(I:\$vWuS\\V8v\\g!Mжu_&is\\CRVM]tXT7\\UoTo_ԯݛS?alS-LutZGei` }XZi}QyW[iTYo(ZE\\}nٍifڋWd%Tpu3uTf5)v]UR3VEY]X\n^VqSS}XiGfv>SvJMQvڕ\\g]QYEݵ#1Vl5UEK]\0SU?\\BwSU7mZV5\\Wfէ[eUr{G\\U,W[]xVj5mTVj~u7\0VU'tw?ms5Vvݏq}u-Uq]ݗc]W]Tt:fMke][-p}^I[XDYVdO] seNZWY[tV?3ǵMݙ`t^wd:qTL@@>]j\rFqv-LvGKwiLwIPMoǹMgv[Uss~ w:BANE{!-do\0}& hXA5%٣fzLH5d Y_%vә!m]%=B>E [#^}hYFa>{gSp[FDa6nx98LI㈫Na=S@bPk.NHl\0:2#Θ;vO}9ik] &{ 2|a &Q)Ǹ:&.\05q\0JL64hy3ޢaރIzO\"yBʳ{3%5r(mx.7rb%^eM2\0x!b}.Y6\$qS\"^|xEa Xǡ59'TR c9W1AΔP؏h 6'o-p T(\nn\rŐ1RRUgxPe#*kT<<>b;\0gL.<kZvz8~y7Yȁ7wOdn><E3wSۆ@ oW1 Һze޽1z\0f=c㊤g{>np\0Α:HBn6FBrW=C>M.1~@3G98q<S|Y8QP`L[qz۫PN<{_-ٮdOd-NB74B N.VQ3{IcP\$h<R yy?G:ng;Ah!&+> ˀ;Mˌ 6SNڌ=#`T#+n;r,X|#\r#?\nD>|VSeϗ~Jm99\ns{S|r],~˹ qI?\"|w%|j\0rE,kSnd8B.1\"/|؃] EϜNlxI IcŸ.|\$8DFPK3\\jxUC/җ A{e ܾ\rpU\n՟Wlo­ Y{`]' s/|o3r};[nOM7 ߣؼqq(_lqsNy;igt:ՙqk{?zo'jcy߄ggkwf8Vc7fAY+Kx=gKAkT,95rd+Gٯ[%Aw柞7%{m8%_mqV˨_%!Ei~h~C߭~%_rLkDy~?p1O!?v\\Pm\"<E6 EVzk9z ~/պ!Q>ONm3r Fle;M߷Ͻ_a!~Cfb}3 Kf.  }.DX i5|?=\0???@Õfu~a^nyQ;q)sS,\"G\nu%UYAKl\nBI86VCcO\0`}.x,-N@~TG'dJy1zlæfgABa!M\\<z4ƿ@/CÂ@ Qq)x/.7inD#= *79cFd2(.V3\$g`A᧋rl|mb/qEô!bU@9i;ppdפ=1yxx =v=(vs_Boɂց#K\r n\\# fPXu-3& J&,F(9v0 &@khZy gCԋz Áhi=s9T eT>g3dtF2b&:\0PB-Q8~LSMڷcgTh'f(\$.EV LAIߌrg\r0 T1P`1d\r4=6@F F=ɂ6A>NAV (\$A/ ;?gf^ \n&KOn{]g˛8cўϷ\n7Lt:ѠhFVO\rJ)b(\"OBm o\$]TSHZ^Kw \\[A9('لcۑb0 KsrBx\n*Baz6o\ry&tX1p'^M<Cg`48GHzd?gX.@,7w۞:+TiUX16Ls:\rL6fr\r`t67~gxgH9 JO=-\$4?r٪4O:z{D`21Fܵ(DM;&́ڭU>I6c߸@\r//ԕ_H\n7z 7aɻ[9D'}BORݟB#s]z!(D@L^ x@ouOD!e`\nak>0`-*8EZ6=f%c㛰K=F\rShyN[v*v\r@Ah*L\$AA\\%* p\r*==8 \$W\r [Jx0yZ+&YHA~A\n,\\(p!F<6S&IP`6Xz+df\ris+&5/rEM^\$R(RQEw3 lH*m\0BqarLBQz6~lB\rI®GXVbsmBH c_K\$p-:8Nj:х-#F \0aiBs\\)<.!\\N bIw8͹ tPjW`y\0&0i? Ҕ:Ia)=C,a&Mapƃ \$IIFc\0!Yxa)~C1PZ L3TjC\0y`\\W\\t\$2\n+a\0aKb\n]C@?I\rHヮKs%N ^9CL/=%ۨh:?&PEY>5 n[Gْ%V*w<gJ]*wd]B5^֢OQ>%s{ԅ 畫;WzGi*RnG9E,(u*Ւ×XsR:5;)RNvK(RMb_{F<<3:%HVYS\n%L+{o.>Z(QkN!,:rH}nRNkI [ӧg֤;mYҳg% 9V~-J_g\\ɮQ\n!t\\UY-tZnd:Bʽ*]')twɫ[BUm*r4ؖ*yvvZչ+GHZnP܅|\nT %#\\AX\0}5b+wrXwܲ1u%Cg=Iv`cre0`..<h+H̝^\\jyF%]B\0r+>%Zx %C.`Vn1KSk\rX|[;6H U@D:޻Mj Ε?bA+G\0thxbL`64MޛY#hfD=ew=c+H:.%^\$DZrAzjfLl7o\0-Edމyz'V ӞW ZK+d(AfyP?xR^h'A\0:p\rd(Vdt SFcHȟ]rrCHY X_/fͽ 4 7e6D{,<<Z^j\" \n+ƀMY9A(<Pllp ,>Ѐ{E9&Ghh{(Agg8(@jTngZŰJx@icՋ(p'oJ0MnĀ&\r'\0Ց\rqF4)cL_oJ}5co|6m}Q4Qb[xm( &@;+򘥮f|I R48 { `k`ur`W㸱`\")fI\n;8Zjg~!j%TE\\\r3EjjFXZ AykHXdgCQ΀0d t zk` @\0001\0nH\04\0g&.\0 \0O(P@\rE\0l\0X\rE8x@ԋ\0^z@E\0.^Qq\"YD_p&3\0mZ.Pp\rsv\"0`w ,_`\rc/]xq3\0q.pq\0002_iъE\0a1bwJ \0l\01,`1y\09#?0T^q\$F6/\$dFDyJ0b\0 W\0.c‘{c E\0s3l]@\rbF\"\02`\"7/\0a ^04eQ{c<ьj/_ѐc\0001*28BA\0000xƔiؾ1F50ljH\"F30\\_q\0fTl_0тBEČ#3]sƽ64_X1\0ƽd``\rS_JMV/f1\0005I6tf4F34fF-6d\"4k\$h±#Ě\06_01c@F /d]XQ#G\n5gqEF\nm\\DnqYFv1/4`q4=8bq|\00043mX1e\0.\\QcI .7\\x` \"\0i^3(籒\"Ev4l_q\$F\r#UE䍩^9t.\03|r1\069l^xѼPF-]\n0vQy\"G2,sxQq#F+\0/Diq}8[6,j\0 cmoN5ehQvGLH<T_Q?Fɋ..\$fyEC2l1s#EDlohѲj8eűbF!9`xqC7hx٣Ŏ7^xK<h ,uG);lu #<kb\0sR.wֱ#z~w2|x(\0001':v\0001G挿?|` .2X#G8K@<z1ƹ\"9|j G/6qGs7/\0001bߍ:|8Q#~FW4g#<F\r 2XQ#Fvk7x1#Ǝ@rhFZ;frcy!\r _x1\"H10Twٲc\rF1 \n8dXrԌ2Db{d4HrA<~1dBHI[J?q~k0t#F\r#0\\h\rGEttc7U!=D_cN\0y6a Fg!v1q1@eѳcGo\n/ƲE\"3t`#cH<cqF%?Tb蹱d) r0qcE>3\$tyECl`9)VFHMJ7f\$HHQ ;ri7#F-FHQ#\0G!1^&4vG&7g\$\0G\rr/dR(s6@'RAǬ&g\0k z=|Hٱ^J]sd,\$1<cqǦJ_bGQvJرH5 FpIc[@rvH%3Dc<I\$M.dr1c=F.4c2bG.!L|{Xѳ{INFdxqscݍ#Ea)#GJm.\$=GhAN=sŤE͑GG\\a10HF.tg8ä[Idn8F.TF3E6riqsF 6xrL=nFTod>-3|2\$0= :xcHI\"NP\$bQ\$F }F%?(G3\$O\$^x2T0R#D:E|i/2XG8-\$Hv=d `:laxI:XRJRmxJ#\nGG9!N{cI&IR=I\r&j:8g#H'3_xbH}>7cُ\"&K<x2H\"6@db뱭e;)!.]/dm*f6,vɪL(qAI87d9TtcULX%HI*z:|IXqs-Bq^(Raq(~e 9JU+-eq*nT>\$ѫerαp\nռ\$es+VIbeq:#]cc7r\nf,gYTC% }\0\\*EWPa:E,&Wp)xlM3\0t\0/IipD'\0 k\$TF]fdMȀK\$H(@ɔ(znWҤ_Mݔ*\0elF^H W*BZPe֘R/dR—Rʅ\0Ku,yH)\"SXI'Z= LR3\n'[k6@;}RI _)w[ \nnʓbBrl,\$v԰H\\s* .QtBdb@?3S`a@K\\.~f),?|&ӶKZ9.X+S|\0PʼEe/\0V^K\0\n- :Sز)ת0j9TXBK\"ů²,2'2P,xpKꗪ \"D#TVD1Ao;ؕ/9TH%V`WJ<9aeʰK/V^/Q\nBZ\"9 XүM~\$5\$0d IU2^X\n *E7I\nV3+aIiNKKg0az*V#bJyMҦeZ V`U1C.\rF-j&LUp9s鹊+Q&1RmӱgZ ,.Xr yZ첰032A1ւeN(?Al ,Nue\$|r_%E05E}\$X2%Ze \n\";<9ah a]8*u LdR0+Qm. ,GM_2edBݸ,S2>U԰4vl~e22Yg2nf=\$%ٖFfa)fTƶGg2W,[X>)tA]R*&Z6j2|\0(p 9 ?`n-lZn!H9zL9VLϹyݢZJhRgEfLU~`4Yx)\$BQR#ÕS,6i#Y,;Cri&X]\nw54Kx\n*&TW+SлqNcyIW\0W5cɫ&+Vr)Kg? |gRhR%K)Z#5k漻`l:LsC[MUB6ldѓJ1nl:j\0h *)p/ާ5\\<9V/ޫhTdjrMbx\n]RWR MaU3=`0o,Zl }mlmLS6\\tΙL\\%JK7oѩefMoCYv慭NV4=RsJ*hhn-m44yHM|isU=A\$ڭiϙ>ppQfq,5sUL8}ݬ٪#XHI9U8c:If7kl5}fLYN2ް}& ic,I3R6r؉3b͍6>lXYfL)+S,ى*elU\"ed\"Zږ6ZDE9%΂Y9rmtE'.M[4^ɷ;Mw59av+70ld%<3_<lN(v+7YRl΅Ӫ]. 4I)=փNT]۹'U^?S7XCũӨ1u9EߙkL;NhSqNXk;1[LgpVB1_gs;RlENT8w,s1Pxrq3(;Z yӾ'{O _rȪMg|I92eLfO\rYnkuSNv9Vk 3ǧ.̛v9zyd)NY&s\$jd'6͔Q<V)e+:جYjtpu<ʖ3]qMY:9XSgIÝ*mCvGR@֯jT=:e(\0_Vn,?p 3'Π\r|\"igTnP皤\nӔq,Sf.YQ AA,ZeSsE\rv TQZ\"pIsUAϛ\0vZ}rKtfP f9{^Jς\n0%NGګ*~lD.Ke6[,%-~쵕jRO;@ ˨enb_%sKŜYY0LWjrՐφ!BPvfwګMR22z4rh;#M@}\0|M\0=ځ=f-!6pg[P4C[5:\rCtàu@ۺ<ifNun[!u8j{&9KuFQlRi(CA䮙s4\0Y;fB<{嘼R_I~6|MWTA]4e@JeP|[r5*Bt)%-\0Pjm usBi^*z0YK.`[Y2Ы|XB(?З.\$l,XD\njOD->_< ֝\0sh\\ea\\\0e䑙Y`7U\"eCYTzt:V9P_aЕF\0M2eHCZ?V'}cYa?Qh8 0 QCM`6,JeZZ\"GWuu\r>49KI%LV9։Z{VEOX;oagP\$\nRX@}!-SiRqz ITH.\nk\n\nT>\n–?E`5D+f?#zIZ7T[Qs#D\$ PI 3*:9YIH HX0D!u7JmYB}Er8Q\n}'PS Q\$`R)^(OP\0aKm3\$H.X)V`9 .Y18eU`X9 \\LcjIE N鍫6WDXB Z:|Ϥ: E-P-&)*l)Puy|RLh.p_*QA@ ?,ƧY)tч<P*jVuQ:2\0L?J,TPHLE%\0yP(YJZTHX\r Q4hO;\\vV#TWw\\`?JR2=F]I5TMjI9,(ƤDv|t)Wy-]zea,pQ6\$I-g=%SW#TPܐ)T&]X15jB8Vӥ\nem yh*d bd!0gRJ\\ Mt1R\n\nx._u+Ƽ;*4θ)]\\l(m\"QnT(*\0 `1H@2 6h YcH_ f?a7=KKdetH2\0/\062@b~`\0.\0v) !~JPĝT—O{t\0005/ீ\rJ ^0a!)8%KޘPP4~H\r+Lb/24)GKe0eS1B -0jfS wLΙid L\r1hȩS MJJht)+?Le5n|FHMN5jɩSHL4=TDMn6Zm@I@S`)'7fzSzx~OU1kSFMOU4p٣2\000076k#xSl'K77\nlxSuLR77stxS}GM78*qt#xSOM\"78u)ӏ\09r)Sr2; )7Njm/xӿsNڞ:jy4SgO:1=\ncT;{Sȧ/ORH\r=tTO\\zx4SM>j|TiSO~\$lO}t٧Oz*%]PPvU\"ݧK@\nojH;P>1FdP.5Bظ \r 3uB< L#<QPECʁu*\nۨyPNl\r6?KmBZijHO2}1JM_MmD&KQ6FzvQj;jj)*mEʌ 9FdQv5eGɵdԄEM\0+D\"j)SDQҤpZfƂmR&HUہ%{Rv0m0z䧟Lƥ@'ER?eJ>ԝMIYTR/.UTYRΡL:jNԅRL5ji&,OmJD5,9Q1hTfNޥQ'7Lih\rcjԝSzu\0nԺg9@c\rT%LAfTMT9uQ\n)USuD:jU ƨPږq*EڪKSbl\\ڤFŪGTzgJHSF \"Q:1;RꦵL*~EߪoTҦ \\z:]SꕱBU^JuR*kE TQtRg2UjV\$_SmPHU\\T[Uʫ5Jhٵ\\UpV7a_* =R>\0I*VX:hU8jTKZ\\:)jT8 WZUbJ8 R=YUVUR\\:-jѫiV.[zҪ-{TZuojU3 [>E %\\h#bՅWZ-\\CW>]ںg4#KTrwj\$z-RjtjU*Wtp\n4'NMxUX32[x+\$BUS*qUͪqXZ}Sx@-W\n5XZՅJU2=\\F+V0]XXU0-VJ+/Zʮ5sjDU޲%bɵ V%Y^u@dբWŲRk&YR\\ŒRkYcVO-\\ kdKoXK/9]VO-U<@嬥Vγ[6U=eϵo4TݭY0eHդ\r96(󮝕+7ybrI |\0:Fz\n|s<R%J]F3jΣYZ^<5XIJ M`nO\\B&rsQuzx TVwJ 5g ?vqF49ӝ6zjOV\ru=@ʒfT͚y ֫pKaXU9m\nekMo5\nhTVv: s\\p>L:)O=nk}jS&֮~yeܚ)jtVRVsr:+ao,!Tl*n5\\Udv+M\\)]B|Jl;45pLӵئ7Li[~bmtSe\"Bvd@ͧS4)ؒZ\$)5ic!Ό\\R*SDw\$9tS\nGfPԛʸ* KDVy5uȦJב\\C\$W,M\\5k^Vs5kֻM^{uϤwFQJHgWNk8ʉ+1br˕VX]dLjYTv6twy˕kvx=5h8]˷x\"c|ufU\0ҧ5jȩ}Pkn̚Rlf٪+ۣ>c4W+ TDoqSXb}}hn&<?/3-áhqn p %)SyP\r͵m-f5[\\=T}y )Ydؤ46#Y>3נm\n09h;40+ae\nȃİȞ!)@xx}\$AFÑ0N R ӄU?b5!+׭\0Gw{ӤlI )w- 4;p8ؤ;@\r\n\r N5ƅF\\ӹhgPE il0 X%)\nLk^2<5FdI<FjbMd' ƲDBmaOYXgg8Z V%mf%F-,\naFwfs0G乑Z\n 1;J1\"iPByCt;l4ҡJmLX+l{8\"\nV(\$Y\0d\\݆6D9BHd%16f \"TJ`/>C=c?e!k*3l~i, Az/d Moڲn\"ɽzTr}eٌ{MaC7f iT/6WP8Fa`5Mf2V]['}cn4]heZŧ\r2XllGa`((\0_lOf&f1c8D{Q S 6p\0\0\rq3 m&*f;p6r^cϳ`ɵ&zn^ڱ;DSoj^=L'g5&Ef&|\nK 6?bX*.fψE~&9!dk@v\"FGx\\=E7XP2[:\0׎X~7X64(\";B\nXhy&Zl\nKCp`mS 2U;G8{-WBm\$F\rl&BY2\rmAőwZ6RВ%d_T5``BaGcXK\r\0gN\\;Ns ^\nuѲVwzUF\"\0T-,^\02 / EW/\0¼ľ4;\"K-NZ McλRVNeZwjŠ6aKVlN?jt2T/[Nj|0t% #\0`5F<X@\nӢZF\\-mcd2p5Gv'B'7{k *'LAZ|Ik\n-.C6 k-Sk]_\$+Gנ[^z ]k8\\F|?B ^B̎|@BzPW/R?[!bBkѠ' (e:xfr7\r_qMa\0#7|Q&\0Ɂ@)1뮆LA[Pt\0`6\\ezxvՈπU:ڱTϗ>f\nql+K(|\\ѠG @(*iS%F\rR\$CL;dļg-\$m?lhʝ3?PY\0");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0!M*)o) qe#L\0;";break;case"cross.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0##\naFo~y._wa1J GL6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0 MQN\n}a8y\0\0;";break;case"down.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0 M*)[W\\L&ٜƶ\0\0;";break;case"arrow.gif":echo"GIF89a\0\n\0\0\0!\0\0\0,\0\0\0\0\0\n\0\0iӲ޻\0\0;";break;}}exit;}if($_GET["script"]=="version"){$nd=file_open_lock(get_temp_dir()."/adminer.version");if($nd)file_write_unlock($nd,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$g,$m,$kc,$sc,$Bc,$n,$pd,$vd,$ba,$Vd,$y,$ca,$pe,$sf,$eg,$Jh,$_d,$qi,$wi,$U,$Ki,$ia;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$ba=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$Rf=array(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$Rf[]=true;call_user_func_array('session_set_cookie_params',$Rf);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("zend.ze1_compatibility_mode",false);@ini_set("precision",15);$pe=array('en'=>'English','ar'=>'العربية','bg'=>'Български','bn'=>'বাংলা','bs'=>'Bosanski','ca'=>'Català','cs'=>'Čeština','da'=>'Dansk','de'=>'Deutsch','el'=>'Ελληνικά','es'=>'Español','et'=>'Eesti','fa'=>'فارسی','fi'=>'Suomi','fr'=>'Français','gl'=>'Galego','he'=>'עברית','hu'=>'Magyar','id'=>'Bahasa Indonesia','it'=>'Italiano','ja'=>'日本語','ka'=>'ქართული','ko'=>'한국어','lt'=>'Lietuvių','ms'=>'Bahasa Melayu','nl'=>'Nederlands','no'=>'Norsk','pl'=>'Polski','pt'=>'Português','pt-br'=>'Português (Brazil)','ro'=>'Limba Română','ru'=>'Русский','sk'=>'Slovenčina','sl'=>'Slovenski','sr'=>'Српски','sv'=>'Svenska','ta'=>'த‌மிழ்','th'=>'ภาษาไทย','tr'=>'Türkçe','uk'=>'Українська','vi'=>'Tiếng Việt','zh'=>'简体中文','zh-tw'=>'繁體中文',);function
get_lang(){global$ca;return$ca;}function
lang($v,$hf=null){if(is_string($v)){$hg=array_search($v,get_translations("en"));if($hg!==false)$v=$hg;}global$ca,$wi;$vi=($wi[$v]?$wi[$v]:$v);if(is_array($vi)){$hg=($hf==1?0:($ca=='cs'||$ca=='sk'?($hf&&$hf<5?1:2):($ca=='fr'?(!$hf?0:1):($ca=='pl'?($hf%10>1&&$hf%10<5&&$hf/10%10!=1?1:2):($ca=='sl'?($hf%100==1?0:($hf%100==2?1:($hf%100==3||$hf%100==4?2:3))):($ca=='lt'?($hf%10==1&&$hf%100!=11?0:($hf%10>1&&$hf/10%10!=1?1:2)):($ca=='bs'||$ca=='ru'||$ca=='sr'||$ca=='uk'?($hf%10==1&&$hf%100!=11?0:($hf%10>1&&$hf%10<5&&$hf/10%10!=1?1:2)):1)))))));$vi=$vi[$hg];}$Ea=func_get_args();array_shift($Ea);$kd=str_replace("%d","%s",$vi);if($kd!=$vi)$Ea[0]=format_number($hf);return
vsprintf($kd,$Ea);}function
switch_lang(){global$ca,$pe;echo"<form action='' method='post'>\n<div id='lang'>",lang(19).": ".html_select("lang",$pe,$ca,"this.form.submit();")," <input type='submit' value='".lang(20)."' class='hidden'>\n","<input type='hidden' name='token' value='".get_token()."'>\n";echo"</div>\n</form>\n";}if(isset($_POST["lang"])&&verify_token()){cookie("adminer_lang",$_POST["lang"]);$_SESSION["lang"]=$_POST["lang"];$_SESSION["translations"]=array();redirect(remove_from_uri());}$ca="en";if(isset($pe[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ca=$_COOKIE["adminer_lang"];}elseif(isset($pe[$_SESSION["lang"]]))$ca=$_SESSION["lang"];else{$wa=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$Fe,PREG_SET_ORDER);foreach($Fe
as$C)$wa[$C[1]]=(isset($C[3])?$C[3]:1);arsort($wa);foreach($wa
as$z=>$xg){if(isset($pe[$z])){$ca=$z;break;}$z=preg_replace('~-.*~','',$z);if(!isset($wa[$z])&&isset($pe[$z])){$ca=$z;break;}}}$wi=$_SESSION["translations"];if($_SESSION["translations_version"]!=578941549){$wi=array();$_SESSION["translations_version"]=578941549;}function
get_translations($oe){switch($oe){case"en":$f="A9Dy@s:G(ff :Sa2 \"1..L'Im#s,KOP#I@%9i4o2ύ,9%Pb2ar\n2NC(r41C`(:Eb9Ai:&㙔yFY\r\n 8ZS=\$A `=܌0\ndF n:Zΰ)QmwOmfpQ΂qaį#qw7SX3o\n>ZMzis;̒_:#|@46:\r-z|(j*0:-h8)+r^1/Лη,ZӈKX9,p:>#(6qB742Lu*/h\nHh\n|Z28\0Cz7J H\nj=-B6pʥ):81#<Ђ9XЀD49Ax^;rA473\0_AУJ\0|63,x481Oӈ#c:9 ;̶T*<Ua/8&#΁7\0Aq37|*B=6ƍ: ƀޫˌ3 #fM׀P:\nL\$D9\0 -CG8nRZ\n\0@ˇ5V6461@&\ruJ|1.m5e6d4/B Z0ʺsǭj\$C\".\$Qk`R_D:gJ\0Ap;@@U%4N 4v\0\nz5/6X3`Y|L +XA\\с=GD:2BEC]<@MW%Յ58Pt ٔKFQԅ%JRMLM<9TVcuP9[Xp\r(Cx9v\"S0,bR*MJu2߰.S8kBl9~@|4?ἐ@gvOKk'䦡h@L9C#BBC3Qu/Si(Ѡa00#jM簚\0 @q\nI\$H\"Pqa\"L2@yɉ3H|HÙN\\JG>5KJ13hѺ9Gd!0@\rx){v,ZKBPHIN8d'=:X;-k\$^ ܐk#I !ٕH`Ƀ~2<x=U%ZcO\naQ<38unS<qPZ 3\$x'D?\$(ɒ0\$ Dvޗ:I/\rV(\n5ʔ\0U\n @ &ZWb7'QN41 vdBizRQFa(QT_Ns2,!Āy s5X[z<'MTOQAY%y?\$0\$0a3 \$,(xģ66tɳΥ@fl\\gmNMU.!Y@+t֪7G *Z\nd9'K[K/ɔ2jxe,P\\`^+-&U%o̓/-h'•40cM<\rU ~T! \$ _tS=FNۂv.`^a!0ar‰yE=]BZ\\,9@NQ/Λ*<2Z.lL BtJgIBșfkX.ɸ)cX.ݲSrZ(SD#ҶbF\$9\$(b7*5iAÝw֡2dC,!d]2:-\$ΓOG\"QbYq_m]~;&ѳ\r E6GK.QuC-cw7Xji80\"0ų.\0bW9e%OF̨OKI|CvӲ\nv\r\0VN\\2YdZ:;[CFݹ929KBxKOqn5{پ9!eb5{GMgȚnW)bCw5|..}(7CA.I<;~K*q6|K!QT, ^&*e~\n~~J˥<QEOr0'n }\\J>|vJ?wPN~7չ/YXi\0Kb/5j92\"N6.o..o,*6)FHaH00d \0fuO֋PX&B\0!)Z^\$02W0pF6p.H0^N\nTnN~t Ƙ,W^4d+\r\r8LBIp tGe\nyP%n%\0<D\0J7NP^0ވ 2nP\rbL\"c\"cpQH#l#\"-e\rA \rV `BF0thx\r tA\"pvv\nppc\\.,Zmll *֏\"f3v4J.&6.lUt\n\0hrU*K\"@e\$: <B\n' .qNXKޫ\$5&K_& Rq\$TF6\$'m'*k`mϏ\$:bcnN2N\rD,F0VN@%2Y\"vj\0=t\0qp\\YDR\0,\0/- \"-LPDD\\\$Ϻs'2'N3\0\\";break;case"ar":$f="CPl*\r,&\nA(J.0Se\\\rb@0,\nQ,l)µAj_1CMe S\ng@OgXDM)0cAn8e*y#au4 Ir*;rSUdJ }*zU@X;ai1l(n[ydu 'c(oFe3Nbp2NSӳ:LZzP\\bu.[Q`u !Jy&2(gTSњMx5g5KK¦0ʀ(7\rm87(9\rf\"7N9 4x荶 x;#\"2ɰW\"J\nB'hk ūbDi\\@pyf9V?TXWF{3)\"W9|eRhUҪ1P>\"o|7LQi\\ H\"#1|t\n|'e:\n&T=) V KvҨ2\rT BPO p6 #oPhYh޳\02\0yq3:x}\rcAPHp_pBJ`|6-+3A#kt4px!ŴUOL3 jQ8ddmWKVɣn\"@P0Cu%R#;Ȓ'g|Ye/J]R\n\"]6B6+/sIGʊ' j>\\zlUHE*WM&dF2Ѱ[GLB666^cJ\$Br)\"k.l5<dNwU;Ƽ ayO[k\\֞\rY֌dluqh9l;k¿FwDx@P!jo KAߺcJS @g@e7-V2ɛ:\r* \0Q4\r ҆b033 :BAP7, T:%X \r3Cr!3\"{M 7Sv\n)0\\B BU&4ZL¡@͊(tOX XqQ.HdXЮ_ ~/C` @0\"56J{/b*b\\ \"WT+&a5R@8܈RyUWw_7 `\\#PR IChp5ᵂI.tS XC[C>]H%'환dr=4Jd{ x6:@iCq->a1D86aPeXK,Ԇi?f jVIijBԙ633C3\\l+NCPxٛ*(oF~f\$lsCN( Czăppˑfc\rL4u(=4:Ih ) h*3ӂڐт&r\$BCKb&Uߥx`Q>(bVFRQbQJ99b\nYV\$QfHy3\"<r6g)6k82\rf,z΁CBn!cHkZPbN\0¡ \"*? ]FQ!6o:ShC}iM*{bi%ڟ\n \n (ۆP!kl*LZ0T\n @746VzwJ#HiGETVʒBRlVPxNT(@.HA\"\\VN,)E?Qa`;\0l W,)TKJLD%t LRQ>\"P^ŔԱ6\r7DjA d,š.i9N/P3aF*!{b\0pAI'kw[қX\\pAK*񋔱W=\$\0#!5C\0PS\r!TiS lHAR%<7HBӍhevN`6Q|W]q'\$Jm*.N2QMV#ͳcD>f_QRoH>aX)>Cmk2_c)' Aa \\!%Y©DLdh]ixJH;PʤR{ł}U(9˴.\$\n2e\$&A>,4~YmޑM\"2P\\[WģO\\֑u4QFw!\n  G}UNǕA x6<`-KLKe\"yh<O+( h=]:\0V c\0002\nV<bp\$CvbgDendCh!b0*̷IG:\"nO~PBcv~# \rey:xW6RfnBle\\>>A\nn)~\"f Є :?K\rOr1:+\$P˄\0P: @RQp5-(wT-XM\$/w^RIqMPngM\\~1MM\$'\$zpQRLg0Qd|[C#:n]/\"O(+1N\r\n~~0*[kNaR1)'S>P#>/P//fZ0ocg4I*H12\0)P?LƧqdV\$D=!D<o !D įQ0qdr~G0mN2el1)mI)~fRPZqx!+Q=Ҳq:rP{9F^\"p\$@SnvfBP\nt:B\r+ppO13,21S 1+0/3'P2R1s2;`mLPM]24CIP6,6hPFu430a5cHI3 9U*3E03:vsi;\"1e;\"H ijU\"m5m54%;qvC SA 91S!.ETr: /B#4'<@0#k/.FkCNR'/UA\";\rV `ց\$\\fnx r[fJ\rB\nphHO%#C >#0G\08(2nI`H&|uxr~s2~\0E7LPS?4 Æ ]Ų8/Q=%%Q=K3Lgfa*3(0Pk~Ep_>PeT-U f4CH\0` XQNV&lp\$bWc G.s1l\$'0nT)(Hb 0hX`Z  \08l:O~gpV:c'c'~,!\"N6IX\rnV7e6_2ZTKO:?K@ \0t @\n`";break;case"bg":$f="P\rE@4!Aw hZ(&~\nfaN`D4\"]4\r;Ae2a.arp|.W.X4FP\$hRs}@ЗpДB4sE΢7f&E,iX\n FC1l7cMEo)_G_<},k놊qPX}F+97i Z贚iQ_aZ*n^S9YV~]X\\R6}j} l4v=3 \0@D |¤[^]#s.3d\0*X7p@2C9( : #9\07A8\\z8Fcm X4 ;r'HS26A>¦65 ܸkJ&j\"K9{.-^:*U?+*>S3z>J&SK&hR&:ɒ>IJLH,/\r/SYF.Rc[?ILθ/t#\nK<h=[DV9v))#1,գQBŤC*5\\ ʰ2\rHFuG #wπF|cƣ:\rx!9Db@2D49Ax^;pz^@]x729 xDlW4V6H7x.6Г\\Vd VUN l<;ݴ;N<XP bUr\n7`J2!<?(4!JyA wQS4҄#䃶s@'զ\$/sn].76𝠯jq%ƸE0D)ݪ>QYi\"4 \$ҩcf9\0ں~s\$z#P&D) &JnxSIQ>W\r@DYJ<JˆL!pdu(cۊ8,W \\& \r9]\rb\0o e\"s38ǵSCaJDLABĖ.DHO46Z\$@EDA)֫PD\r!j[+D:tueћV\$/e:.Cp.(i5 LL<J#ADCNI\"2'y^NAF;\082FVp ZQ)J/2CJk,\$T:Ks.e|KI3q-yg&в\0JAY'3*ˆQF@:Pך^'9C\"c2D3(eL;aB٘rfxS8@4Z|O ؔ\n&2`Җq\r&:SPvqU`,\"oD9rrՙ'Q:*Y%d쥕_B4fAH@!S@AXS)>h*.e'>Sø3iINJ/1RJU3 gٮSTwc)\\/FܩrVghF4@Ã`lQ@heq3HJë`: :<4 cJl{HU+%8(·VeJw\n (&-x-?R^jj@׸c,Hv\r13ۦ,sGa[InJ(h銇4ʹ7&Œ*Gg4sWgdh(eOaY(4O!?'t2#\\wʙzM2nM}FVXTwJ)AE*Q&sHjM(PD5%Qd^BoeAV%?ej@)\\JtH%ɶt\0[_; 0\nw+6Qʂ)\$IXd4E_򊆅qkĖtuEA\nttLui~bO]RO K/&M6RKWeFlϓ-tq'Zj2wlJ%¹\nUqT\rU\rSHXᰞ½ /`<\"x-}WsB\$\"J'3m ZV>bqrӿU;(eE!*KHL 3fB;xyrRƫWaTQflV4dtKs~Dخ4V~WЍdv_܀Jכ\rQ1\rP0?rNdw<o>x*5dsR\0S:;kk6^:\\[ߊ7N ΢ yٟ;\\nv(jB#<jR\0Ŧ%t Fk\rd.As.d:8\$l.7Rz,NEW-4 \n \0@ E\0G&\0c6G_TD%M>K,@#8hqQ(. F̲% qìzºi *ʣ+0 cd\\008cJ-(+ FЪ;+\rp\n8\"Xn\rk#6%Ľ( K ZN-fZPj1~.*Pwj.!</ zJ,F-Y) 3 L즍DŽ\r`4ѐ+؟EA;Q3gZX>X&@Bj!Boz%\\B\"Hz,Mz:2(6 ]7g&.5ȁMR.*g&n~CRR0J-U(ʁc\$)Npk/Ա;cn[v\"(GO.\"ڽHQDE@b.bjBr\\K*ŔvRPĉMZ\\.%(`\$.N~lsB<\0PQ@T(UeJg)wn4lk(T@r͒@c'Jn\$N/£*r7p5M(t)~YO(sg%9{5'_:sss}\\39<B*35\r-<\$c+d?0R3S(3-%>V*  ?6\0q8/5T&\0y;t51)=?B:SsV.31l2tZtR8k>Nx:}@{lg2z|\$?E)FS@iG.hxusX}BD)Rl0iPo;nuJ\\OmN{<F4K\$Ob<7:V+IOIOQEJI4yt[QQOƋ26CS^4 DFA|X\\UHtM'U*QF؈cU%Q)85Fv&e2'\$:ar70\"].6M>H%86SESP?'[33[U+P)ҋVe8[nCU^aMuAfS}_' 6\r`[n+\"Z']BE\\ӫ[Qv4Zh?]Qj3 OvNVScTμT_V(d fr,0O !ppvdږih7NPtF\$BP:.6K^q*u_q%3Wi Ppd֯m0)jo9uQgB.'mP*̓v[V_^Vlmlүq\nYVB|iX'%lV3id6 WsS5R0/oQs oL-\"]PU]#b ?A\"9pS{I@7l\$]57ARg273,R!\rf/ Q>oIB\"@7%=;w~5A2\0\0b:bbdsfZ+kHDMnhIAK\0\nq\rh1 ?]In)f|1P)m{Xg2~r7 Vֱ|(yT?oy_ '@EDp3cdTa/N'ZK.eTrN4OglqA0db%̧.koR)CnXYMw_yXD>xoR.sMryP)&+0U4,D-v'NGYNO98Yܱ \rgXO)1* %<ic#,\$]XNd%JtLѹIjM|cKڔhOQȐ\$=WN=1Of\rE\0 s0V}z/eUv5U|W\"#";break;case"bn":$f="S)\nt ]\0_ XD)L@4l5BQp 9\n\0,hSE0ba%. H\0.b2nDe*DM,Ovх\$:IKg5U4L Nd!u>&a\\@'JxS4PDz.SE<OSkbOafhb\0Br)QWE{KPP~9\\l*_W 7ɼ 4NQ 8'cIg2O9d0<CA: #ܺ%35!nnJmk ,q@ᭋ(n+L9xkI2L\0I#Vܦ#`B4: ,X2,(_) 7*\npp@2C9.#\0#2\r78M:c2@L S6\\4\0/n:&.Htļ/02TgPEt̥L, L5HLGj%Rt-I04=XK\$GfJzR\$a`(+b0z5qL/\nS5\"P1[R]ԬRW|KkZ^H\n|8CY|NKՅDJ !B# &M=<?!\01o& e9S;/>/E CC Xh9 0z\r8a^(\\0ل7x7BxDlI46#H7xQ(M,Mє|zELPF5dE0DtDJQ} }07-[/RQ(7 B9\rBO>gې+A.^ԅUI+S3Dҭ]TUst}~s](\"k#6Oew.<@l=b\n/}й\r :K~Qp5K2Bض8u)G޹5kővrBH\n?AN\",[64{\0c !\$ T1dfq\0h͚'YjYE* ЦcL\\ sD'eRjAG }،GuAT\n551kR3SZJѼۋ\n)9,.AK\$20?b)/#ic!GUMvRh3O<u72t2n\$ҕp\n;}@0lf\n%\nbX)8AP7w\0 `:| \r3àr!3({e:PL jwhא\npT<)7>M Ʀi Ū֚^l\r6fM[Xrmp@8\\:0eMq-%&A[ʓv@'{m\015:QMa8Vm(wl7&\\sp^l&Chp=J )KTC[|PI{ZmbCR*uw!MY13H\r41@)uy3W?\0h<0@@=\r/mF%AQ^TI@\$ u1-,6CnR(.@=Qk&c{Oxey\09CLa;s>M496{DQo8QVڃ1TC;]VHS+lnD\np@˜R\rEpZreIHEMaDX(JYQS?gdVP*Lj-Q\rXp \r!J,*&5?7<at69\$w:\$|q!>dif9 5:N0PgDP.3 '0CZ-7lK%phBK&\"ͽrZGLC#WXȹm8|SV7 \nqXlPcMSE7m 9i<7_@xӁvbELf\"G@glڻɑ\\αdݗ3Q񈯬#AF[ 41\\)FDLHs ' X2JB~ћJB^\nqBèȽwkl\$B>]GXWe&JyYF*V1]oSmX̹c:Xԁt%-MMcDԨuE/\\OIaJ.@h5;06 ђϥqE]Gx9ŤDŽW*[=ZlUWI˜iP +\0e=؋A[s-̺~ig=D]unwZdd\"ƌ\\Dz}*HJ>vp!NcwF\$>F*e\rBìHNJT`(e%t!b3P\$+G#X3R# \rA I0JWTpv \n`\rtMOIfn X?E&\$Fdž)n^z@^6y\n~z1,t 1P'k'*/o}o>}ϜJP1@p0BtB-c*1bZ1gQ÷‰Rp:M者*\$qôΎrWA\n,O(0Gf4HQP{qpvsPv:Į 0dB1vjP&NDzx#hqe¸1mAcvΐqž#&Ubvb#.](/x`wO uܓb&z'Bgv2l-b5OJӧvR#st ,Hi'EUd\n& p`U-wx(]\0woJ%O%\$w\"7'!_do-0%Ū] 01 0AW2[R>J24#7!qM.rW4q6/5hF%7M7fnd\"Hdl\$V\0` #R&.vKs *(V0sjB{Z\rC/?3;6K.K23u5z_P,~V2\\@|*(ao\rb3S[8K0t:t>q.8-7*8P+, FNRTV1I;I7T4S\0/%U3X{t\nsHTQ%qJSI|xI)J3u.E@RYIqLrKNw s5>0k6@ц.17,)6‘^] OS1)BO3&(RP355HU\" C5rDFT!L5EN4D0(G}4UoK5r0iF(HCrE=m+1 \\N۴=Y.R-j1Mܭ[{>5Z’SYb}TՐ&M1!8%,0Tt2 \"TG409\\eAe=RPIOBS<9K'dtMq7UW6@`DNDXs`U6Vy8u%UTtvn2-/eTYfT%tCVԙW}iee !gjSwe6:Gjjį v ֵklwpܭ+hA&/LqA,) ,s/f6X}qSsvd8)NIWg6aH>HIrid<}vS)uo@f)u|g;tQmXܣWu0vVawyX0.(HcB|hRN ։JWr \$U,3KzLhWfr_{w{lw1uU|j|D}M%}Svגzwxo=)u%q`%N%\n]׀W5~LV8V.h.[Wkx33XJ]Rt2QmVwkMkG #axGQX[%чxeMvHm+p7.Vl)Y'H2DxUDn_wxAQYqW(cd\nqv5bsJBV]<1+Yxt']5;\nmWdžRяu;TY lX'.2D\rLAO26g2 5\rTj\rV ` i i\"\rO\npqD.[]:)Su:-B6sX;yRa4+!Y7|v)\$Ј7 \092v\\MZrt#0Od\0%~PL8w \ny#@\0h@RLsi*BRgWRxn!Œ8;YgZ8(6ͪsB,5%)]8Ri>C<l ߘ@_^Z6Cկ8 =g\0ӟ ԇ\\nC1kY\r\0!%<(|žqGK_S@g`NQ`b<d\"ZB)/k_ZrctY[c&up\n/8ceM \r@?N{pDn,DV \0@ t\n`";break;case"bs":$f="D0\reLS? E34S6MƨAt7ptp@u9 xN0V\"d7dp؈LAHa)̅.RL p7LX\n FC1l7AGn7(UlbeēѴ>4)yFY\n,΢Af -e3Nw|H\r]ŧ43XݣwA!D6eo7Y>9q\$iMpVtbq\$٤\n%LITk)0h4 \n\n:\n:4P ;c\"\\&H\ro 4x@,\nlEj+)\n Cr5ү/~;.j&f)|0B87, +-+;2t 2Q9l:br܀\n@>,\nhԣ4cS=,## J<ծ1mP梌o P\";C5OB#'\n\0x C@:t 4˘x BJh|6hB3.cj>4px!=/ @B è:! `EF;N2_\n6]'\r O†ԃ##Pbd=\$@8G`ܿN\"83 #2[]#üH, M3Z3nbZh:\"9קȸɡۂMN67kN\"d9.#H:'zRS18}`H s#6_P؀ʼMO\"rbv=<?-J_[vW\"6OkBҿ< uGrip5Z̳x72%@o57NTA (sVz5QN)d Ip\n)%TSQ22ΟsV(TH3C\r'uJs8X b,`RYgpOϢ[\0'I.\nP\nr\"[jNJ!@и.OVkX̠.V +~VX&(Cr}9ȕIpH18%A˙~pT@0r=!ͮ\nj,!\n~(X` 0f UMe& ,VBa113Iw}@BsP##@,\r\0(9Uj\nX 4K*3Xh4VmJ5qyi35n 9-TN͘cf3lfh(&/aL)g;S;hkf0u%ٺsIkTk6g'842# hlޝFI\"xwDenՙ0MR \rUMΛ5* MK2e@˜TʔBG,+Ш3@Ѣ2&x\$\\3\r>\nn2kV\\)jadiB\0Sq=J@B0TE<)Ӌ^Iܵlą2٤j@'@BD!P\"\0PhD̙eF)W@-o&8VJ/-5iԺ[@Stn`'tj lStE\03Nuv+'.SMż?7KnvPyBix-&\"][Ak =\\/4ӆ QLMLxƗ*;\$ SoezqG\n`K<hcz4c.eQt.5P;2(\\әaN5AT:gN! H>!8KHxC~8*!Ebf))6-p0<ݶbO%Gc#ܿ T! \$\nC\nm2U(͠@/ lFKH̠Gt IDw#ֽDSщSk6 HUܓ9\r܅y10\\ ˙sN 9\"s{\0d\" r8K#N!gsrO7A㽂sȈ3\\s\"Zy}ƈ(|<8Ucl;愓R<)T71y7 |sd0tXlmx4`3EK_ ^QY1g: %/CUm ,\$S\$Mu~OqpObs_{V\nՆ9`vxlB k\"Ҥ(#\" hP0@\0 -`C3gG^te\"xe\0n'C)lOȂL-CCenǰdOC/ o%bO2\\O Ǣ<FMtNHM'bLGJ\rQ \r#(0 Mb*Pu̍C(nH,'}4\"iz&Te[3f>4\$JHPꛍz(NGhEF \"B &#(8\"\nY)\\l|\$lJO16MylE_DO\n0h`(1q=\r\$Iakf8wQ)ܱ~օ-x q!~lb1>\"V1/RF@]b1h2 %RO!&0&-2ۉI!Rlorq( `xT0S NI>Ą%pl\$ɍҬ/%'Mj!dž 1g\nCrD&Nd%/^&~(=\$.`Q-QHv82[?/s/\r2-/(31&j7NbR]3ci39.D;3-> %bj1,:'0ƒrA0H”7o8SbO7n?E(nphEABd#k~cЕ~dO;8#D 1d\rVV)\0C\"\\M\"PB \0\np{sj2Xq\r%+t\"p~R6i\$f|*+#13DC:/ik?O3f\"NF1MEID@=0K\0H%MB+,Id>hm\nȭ:OT{seBtKsϝM80%e`1*k2>t13qLKPW'pnpT.z0\rDCm2(`tCG|'2P\"#lq'-2laFG ?HMc..D Oc\nDAV\n:Ğ*";break;case"ca":$f="E9je3NCP\\33ADis9LF(d5MC @e6 Ɠrd`gIhpL9Q*K5L S,W-\r<e4&\"Pb2ar\n1eyg4&Q:h4\rC MXa+\\>RLK&v 3épt0Y\$l1\"P d\$Ě`o9>U^y==\n)n+ OoM|*uNr9]x {d3jP(c2&\"::\0\rrh(8p\r#{\$j#Ri*˜hB8BDƒJ4hn{K !/28,\$ #@:.̀(p4h*; ppi{]\0RL\"r2qT;ÇBHPu&#p3Z &fRM,ը#P2&M\0c| >D\n0c27 X44{W D49Ax^;ځr?Rr3_J|63.xB)@X+7Bj/A`N:!L%l.57}\"1,[.+ui& @1-Ly@ڽG)@KFl=WoB nx3 ,T\n;/cL#TIV.!(20؃zR6\r~'N!7CtPZoRd2RDKZ - V22\0(+RC4ᴎ9+1J8~Oѣ,x(5zhB(WLLei8D[!y=fӔƼj9 Nqʏʓ}Q,N h0MJx8 1>̀T\rp򆌓VD`3C)K>̱R\n)a>O? ܒ]\n@rC0bLLYK1g-Tlz/K, }^+BF+4#˪:*9H Z_eP|k<KY=h50yW1BιPF0|\nbֺ̚RS@I9.N\"t*+H%>3t\r]8GJ\0re P2RUBш\rt#6hlTP 3&(FW_z @\$ x DjEqGCW\r`i5B*#Ͱ7y \rەF9e\r, \0c\rԻNnfٛi\$N}S\nA&@p A9>s\\II9V])#Nfcj%\$6MI=Q&@&D\"M\$dHi \$5!>uFY~FO0¡R؟h^\nRa[LN3tcN:4yVg0RG*Oe<ɉ83WU&A0P^%%>`)Vԩp\0U\n @D0\"f,r r#8rA%DA%'\\S_:#xhI2 /di7ANxzvިo\r@<ަ%_9;X۔AY#\$x@ \"\nĽJ4X aILi-J|EBh ##*Y;7Qzif\r\$!<DʽqOpqqɍpejnȕ&wSRH+zfX#(&@[ s@ ceBiDY(NG˫\rͰ01O-`j<\r8\0PRCqQ&SPHhDz!T! \$J]z.O;N\"4 x !\0c5@pcCd|[BIe0Ѧà.;>r80pL 1`ɇ6K %er}I82)PpVQDs,ʦ3 \$DIˉR& jpUNXd`\nqibPzL(\\&9?.;=žW&l }rI!9 1dsΡZ\rÆiVb\n5<wW0#љKL\$͜c8oqSޅLje%ɍ.qmR!`!0DcdJJL3 +DWG.7X)L*%DV8lfœ\$(,fd_@Pmh% RI/Z\",T,,Nl%/l`wd(o0BQ+ j~wLGLM,>Rvd{G]Bs=pGP2g5\0bN0{\rOP&=@Hl܍Fe=FԈ/PXP\rP&NzmPN.ct̅62d%%9CH\0C+Q/K@unRP߃✳%%R Q:Fd@\r-J%eLG06I\r:-@_K\0!/}e\$b(k1ưbPv,_ p&/ev0oM5\rMpclLMʣ&iLknSQ \r\rJ &-bt̲d120ٲ(9}PK3p(R`;\rwB%y%ck%`R\n/%}&2:{&~Mp:1 \$)(-6ތ\\ղ)d'R2f`R \"'U-([.Mb\n\\YSH/.ҥ0\r\"b `2@eBh?@Y\"E<3`\"qMdƠH/4n4,:lepN Zd\rVVZi&.|`B\n@\nZ΀VX'4Э7cx<J\$ P_*sP-%@y==dc\$60u\"L *ib- &L]*6!C\">;1fh'fzUDHlJᬂ\0/>6F3\">BjF GyH0J>UF1Tp\n| 5\n^`&ԃqe(2iFUMcC0p ܳ fop\$\0dJ{\$0&\r\"iGxFdtCD/D;@ bu3 9-/G9H~'_R|PH .pSm'GJD.]~@T \0t @\n`";break;case"cs":$f="O8'c!~\nfaN2\rC 2i6Qh90'Hib7ii6ȍA;͆Y@v2\r&yHsJGQ8%9e:L:e2Zt@\n FC1l7AP4Tت;j\nbdWeHa1M̬Ne^/J-{JplPDle2bc u:F\rbʻP77LDn[?j1F7I61T7r{FE3iǓ^0bbp@c4{2&\0r\"JZ\r(挥bk:CP)z=\n 1c(*\n99*^:42Y a8 QF&X?|\$߸\n!\r)<iRB87x65n\r#D8je)\n\r9(jF\$AH̐ P\0(MRD9h*O kPI l=2Lȭxf!\02ÐL~ 0z\r8a^h\\05Tx9ㄜ9HJ|;&A(K7^0Xn=e#C{R#5]7CkH77`x.޶l:[‰7\\+ 0}Pʁ([ 0dcJ:.o2:(\n\"P#BL>9 Ŋz`zY@:\\g @FYCX'CH=\"փ#I+cFMBb`Ȉ`WZi.zGH\"&La[@V2̹ZŰNs+{{%\n'K(#s4v#GfEKXR\0;\$+\"S:(WQEyw8z=Í1H9C2 ҟ@_TK=> Qf pR-F9bv\0mjL10\\UiML|CV(TA`I'H7B%SM\0P[!;BHY0C(#\\W+!>NRQ6Azi F5p bgHJoȒ7)PBUA\r!a,ERYB?-0V/ @%\0>a8D,Wr#QTR%:MDTΑ҄j52FQBd4D\n++ ?j_EV:Yk4;t[JܸLm%/(AELx`7`'qBN@sצ`z<*IXAp:nPY8 ]IHvQKh\0TQ^YX)qNaxz;IXLGduL>Jp9)8Ԅ\0 4Vj:\n\n)A,z# -PPu%.\r (AIUAK \\yA^WG#y\"e(R8_3DF^pI aL)`\\ 8e;D.?V\"CcDH<XK3MO Ӂih!:&<-= BOֱ6F~g)EL\nդUDfgaC^\n<!@'0 iJu/wje<Hg FƃRn/+wk)V_\\_1\$؆޻\0F\n\$ߓq\$~Dm>GVHz'|VRP\$IRViM\"M4⪰+Hz\0,7c/1F*['A Ud55LI0)bp9`I1+ AoAuA<\"wX0c\n{fqu.w#i8|G\nPO>Rj^ZѠc/`M|aMPux1Sȑ&ńiK\nSy8&}nZ50vgg#f2a(t\"\r@(!~M\\lwg |3tw_'(k\"n`42šC <MfkBerIvAۍiAF@BT! \${I#z\\r\$LQ#k\rl*V .yki.T8DxJ[tX.Yvhcf]<>dx׻]1 ;^u2 ˝-2fUU^lv̄2?;G(\\=;>Ysb {Hٶ㋐Tf'QDD<S 4koffVG%`ES\"(\0w !/ŸXEtXN;?ukbFlP`(RL8t1\07:c#~C~lzcDcN75J#'P> /~7yp6A_`dܐB&4w.v\r#4&\"0dN#xrijmAppv `4 'm L,'\r b\n|M+)NrU+/ffj `@L40~FMP ِtΥf\\U`\rF;k,Gڐ#1)J\r^{~HǢ'l{gf0|`(%g}A: }8+Alp4ћF@q4ThDgb7=QeO2ތRnp`OŃ 1 [ ԕL' ުψ7&,Q\\d&'>!.,|x##ȤEjȆh9\"lebX\$\r#N&<'\$\$+0ޒd<0cM(\"l-!P& 0n G,R\"1K^Qx孼a{,sJ/IPu70M\nz3.2C:=x@Fn b*M\nf<<F9,/45Q5I-O`@F97Ks5^qL7xkÝ8 a1%bg@DBC\$x;::0m ;y<1'60S1\":93lR3C4W><rtu%RT#;rtE#!ts\nq+@mt\$OĆI.\nl+CA35O`GDEBO>5`g2'GgT= > 4!/a`T4AHH5JcGIqI:V b2e\rf924#m\r4(CD1'K+@#CWOGNe\rV;†n\" e!W\0Oj|?f|D'2E'f\$Gafo&\npѦ(O4\\VmmqP5tmPLB&\"/E\$zphbrtƘB? f# b9GHfG&B(9[4F\n/ld'\$ҋ*\$AcPJ(2S&v\0MO468̨XG#aQƄjcg%ct2rH ,<{d#R l;^9\$CAP\$pׂh(Bf 'IUE1i2\"epJ#eCSLxuka,)ǮmL˦6\rc?k8k->f\n6\rx I@@";break;case"da":$f="E9 Qk5NCP\\33AADeA\"o0#cI\\\n&Mpci :IMJs:0#sBS\nNFM,8PFY80cAn8h(r4& I7S |lIFS%o7l51r(6n7 13/)@a:0\n]te8g:` hB\rgЛ)03h\n!pQTk7WX'\"h.e9<:t=3ȓ.@;)CbҜ)bDMB*ZH 8:';M< 9\r#jEBp:Ѡ#j\"<<crRbjhT @-;\rȘޑ?X\0P\0P2(X {0c., Ob0;#7o2\0yI CC.8a^H\\ȻγzC\r:0\"px!N+0cj2=@P5Ta\"0;\r#([RBpж+#hl1]c(%-\$?\r|x\r#{0 3 #Ўhم5ȭÄXyt\r9~ 1!I40cF3BC\$2@K!`Z9l)\"`Z5lr\\2ܻZ09,' 3oRp/ R\$B*W0-[nZ\"\n=08P2 ܃XN&)`B ϴx3j*7ųhuAA89#8µV#(P9=k842I[m#k:UU21#JD@T S]P* 2UJ;Uy-7+}OX%\r(6Pax(\\cB Ag67 `΂A1\0e?B2u rSz5JHwUi`u\nA6)A|A,dL 7J\\m@hѹ3F|1@@\rX .,P[O=[=<\$:\rA6VFMᤶ#\\*A锸>Dc!s6H\n\0T|P((K2!R/!Ry0ET4@\\K>+Q>>*\$d0~Q7\"I!442.u^UH) FPkיh1CBTK qafx3^R\r]\nС2DC˻/%>'=,}cK\r1ڣ.TY\0¢LsJfh /d\rA\nJe;'@Eq\$ j Zc k2Dp\\äky9H0T\n{PrXpy\0pROn8PT@-K 7Rqm. iܷ™S\$\r%\\EшF\rHE \$#}TQ\n( ^!:D%erM6>he).LkezIӢN\\˹{*:Epp D9E\neY*RtHzCpXVs(\$\\xtDJq4!IZMbd&IC1:\rF5g!h '̢.2-&5&ޙkGe@ :AIH\rEG1v> \r\nP 0)ݡ>STh\$ V|l.HA{\0^U1d%})b* e\$\\\0O jgPs~rZD%V5tl4:ZjmFPȥZKO=ɫ[k-bvoVw\rĽJA#|Kžy-SQ+P0-H%lIZc\$)Ok\"IK9APZ_fA6u@o7riQ2aRC՘s ƍ5<n*J2ϑ;xcEHmȎE2\\9:\"nZc n@^EޑB#DgQK\"+7o 1mvuOo&KrMC΍̻6u/ao/4^=Y ]E} Bc[N\\efg1ח2ɕ}o*\\oS#PqjLlec 234ȇ(fo\n\r28, 7.*\"z>#;\")lxOʳ/%\$mF fr\\OjZplOttOHct\$00q ВFN\n\n\r8k`R,J/lcO I :EONoe om \\Ǣ;)&?+/C41d&:PB'F\0)X:\rq?Ѕ ;\nk BG_F1>f\rEJ1O& lˑu\0*}јC4bq̀Б K1Q\nd@;qi3C\rpUcQ\"ӱ(I^e\"m %(D \0 fӢLb !:]0׭C#/ـd8\rV\rd \rmpbQ\$(fPWJ\n\nK\$jh M((B@Vn#X\r&nECz67Zj2T\rL\"Q%٣£E\"0r}.@hB 0K |#>cKFD\"Af nj>i-q2J21Bl\0s\"c(542BBb2+)S2k^dk#&\roi>. ~i8H- bBBt;5)-Fl 'U\"03 ܹ `B/@- Je;0B<k@`@-JBb\"";break;case"de":$f="S4@s4S% pQ \n6LSpo 'C)@f2\rs)0aii6Mddb\$RCI[0cI S:y7at\$tCf4(e*,t\n%Mbe6[@rdQfa&7n9ԇCіg/* )aRA`m+G;=DY:֎QK\nc\n|j']C\\<,:\r٨U;Izdg#7%_,aa#\\\np7\r:Cx\$k6#zZ@x:x;C\"f!1J *n.2:8QZ,\$ 00sΎH̀KZC\nTm{SC' 9\r`P2 \03#dr5\rZ\$4)hˌC /0\"Dh B`3 U&9`2\r\np CTv1ij7mB4\r{Ԕև BDxmZpP}R!xDlOF4^0cݎ5)C:C3+++C@ NHRb.2{.9c+9<HKe\$ZM3SÁB 7pRjzP-.a)<B3ދT3(yNP11(Kͅ Oֺ773~&2و%j@:/z1آ&^sC \$u24 ]65˔'<Sϡ}\n6e C\riwJ0MKW6#mkX<v׊07Nu<5Fv4a'wao Zi=sWh3 e\\#t;+^?%c`ބ\r+:vBp D 4LH NC`./؏? CgO D e pZ'f\nA2'rt ?J^A2ȇ\$:Uk}WS&@fʴVCZam-żr\\dlCrqՄ`C[9#{/bgq]pK (\rƵ@Ț^2~j\ruj]=`uP&2k[+l;Yr⎡r78`ڇn,cdML+Ԭ0r'-h@N[!3@'P\n (Ц\rr\n/D*oipEM6) !+5p0u'oP(d 3:|&QW\0!Nq[ت93uOJN,#A)Hr4Q2@^9W7Rm n=eL- xOUN~8,eβh+|cZ3_x00 \nޜS2D:dD<W_g%BM*蜓xAI@ =%\"vA\0FJRqt\nA 0a\\CKm}>ЮGbp1h䛇%EhCA3ЄD(kO}-@`RIadc9G)%-Z; x9>V \re 75A5 .z\n0T\n4i 5 Gvnd0#obRp`pAr *\0BEE\"Yr5%3>r)Bxp\$rzLN?i>'Ͷ:AE_O*G\rH9%6`?7z‚ 3`8iz,Obz iӥj\r]7|pDf<13l`5)`(5DK=_;|3tg\\ZrDLCgH=f*[R|6Z/p Ӣ\n\nb5\\a5'uɺJ\"d¡tkǀRXuw_RTEC{S\",t\$nb'uC?6D]FP 06fMT󫀕xS3\\4yb}3g\r*C,=2:ޖL!F, ʰ:6FGu ɛ3h^`\rmȵ:BqDS`XbB(}ojP'?lR~q{3F-κ,Nr!~)&fѱ2.61LPǰFc\nIRS`d59\\PyŎ^v )>t8tE AQI0χb#g#n /+p- 0,J89Uhi\" ifkĨA {Dr 5D0^k,jPh1FdbvY6ܢ6\0Z\nn9oj\0P ,ɬs\04uc\\\rPА\n&NL0c3 5pu`xyp\nc,C\nN:<,&@O5ξ{΢q&VP\"0#h'pl,ipPό_cπc\r0\0CT4>6THB\0E #ZBiTWK&on+/Z+ Š+_`+paQdM' \rއF\"-=Caa\0p͹!q}þϒ!%g\"*'\0B)k01A\$P#P(&rL(E&nC%>R#` JMΈPgȘj10G \"g)5 U\"^1pj&DJ2jv1\r2fV#g\nC\" `kGPb#%/Qn}&/;0> /1R#1ros+ҷ33,x\ncH1'5_4275 UK6-Z%Ne FsWR) s!9sk#2&`A 9\"%B=`\r\$R`i\$e A-m{+2,<Ư)=bf gm|˘Ʌ.NϚ;H|%,\r#L'qFhf\rW>2`0jj{+\$FtFѶ{ \np4ޙl6&q>/P7=P\"b;E\"M+\"Nf&m5-i0ĥC: |:G874#I4Bt.%fI]H#'S>QT-FjL6:*2# .l<'\$S\\̣#Ib: GU\0u4 TNuQBqQ,0Q\"PÔUM.(oXd#Gr+A\$\0d\$rUdNtQ-##<cRCOIOF\r Ovc#, PK0 a[qD2(~~ϖ%*#I7/b";break;case"el":$f="J=Z &r͜gY{=; E30\ng\$YH9zXňUJfz2'gakxc7C!(@˥jk9sVz8UYzMI!U>PT-N'DS\nΤTH}k-(KTJח4j0b2as ]`株t0sOjC;3TA]ҺaOr4vOxB-wJ`#k4L[_\"h-2_ɡUk]ôu*\"Mn?O3)\\̮(R\nB\\\nhg6ʣp7kZ~A@ٝL&.WB\"@I1H@&tg:0Z'1vgʃCB5x7(9\r\" #1 # x929 [yJx‰[ʇ+\\FOz\n]&,Cv, [WBk4F9~lD//!D((H@KC╖=APXJPHF[(eHBܚ;\\tC%%%%*d72Puh,FuӼdӇn @gAu0XZ^eAKq8\$􌄗era,# 49N=O\01s T4sl;#7A\0y3:xﻅ}LAt3(;2\r (4#x|5pSdqYR`aoF>RYD:>=cajvվ:Prs\$&rX+#ݨ#( C2>NyZb^Ri_x*w)s?Obj31u.P]3 &5T/\$mY\$ (\\:~w!%vg\n)eXFsZm(FkBLaDE@?r@'Y\"\nםHB&Q9FYtNJcuLTb \naD&Đ`hR xgJ;rDUqI)A? 1:TH#T^ ,2V)J=Ĩ>NPE\")MB\$H\"tn2Ѯ\" ii6&*a\rc'I1(x|a`]a\0]-ͳ6j3~]eXkI9\"#ϒ{>%/xT <8FNee*gE)\"!:A:Ap !9K'|u@ԱʠTВBTQ'KE }SqYFt|:%Ԍir ((x@Rtr!V=g96P5HdhM6[{qnmջvc~Np`Xw)ZÚ.^ Hbyԝ ZHϺJVSsSP\0ĀDY6XҾ_ 16tnV 3Njطa[\")VlKG qSk0CɅ#sP*.½tJmB!wthȄۊ(P]e\$=bK\r`6Âba2daզ4pl\rᝠa6ZM\0ګn!6Mr@I+ZtƇ !jy 7`T4@@P\0\\ϒs/!fMh! L u'0okU/aztk?4Aq\r\\>\r1~~8;KJTI\"traL)idT I\r3BE\$g\nSVs7W#%Q*O4d<2%@F6HjbP\$ZzKjf_Cv k^D{+ dD MCj 53R k0G'!Q囥\$(%@R¨T~:n>R62 -~oFdͧfD J*lZ^EvSae`\r%BSD\"^WD߂@i3*W(!/'Iq\"P#/IH>4gYF&|R8>*qTXo)1j)g3(Yte41M*ڻJ+r 5S;i˪g'?#|9H@\"Q\n5;qJJYv)rXJq>Sy1bRQ3k6t+PHN-%᜛%;8CBbL\\ui&/z-`'`t* x,B}L4R#>N9XX\"\rȞc,Bm7k֝Oi05I'dB_@ PO|PuPdp4xJx̏'(\nZ)DB((W,#2cj/f0- cȉB`P&I:\$!dI8lg*\$x\$\n\")!ixzht \$pG:'H+6t cbJd \n`\0\r\$iF\$fGPgIN /D4Zg@#'ˢ\"X|T\"6q&+4bs?\\4JZ'P5 W JC!D,/\r2c\"Q\"\"05r4(R8I#1 '9¾b0(Ҿ\"E@ +{UbNp(P=%\$bz)B**&r++hxP %='2l^0T\r^%φ]PX&'~s\0D%:;4e3ǔanIl& -p4dO35n&vcF^X H zTzJ-hIp.EPF<<32[8\ra\n(D3\0:-ǤZ>#s!IG^*q&k?=?9v=,\$>Ќ G@OBPC??6B8D\\bOT>:\$h(*JI\$<)Rbf6\n8\\ZZp3H'; ;%ptx/͐_O~4Fh~%L}%,SE`=\0S CQ>4YieONRaZ5 PCEITE[Q/l<)DS@h] )IC4]\$bcQiE>6vtRS.-d+(v5*Y#_&\"&b&(|OGW*Wk-}'u!x7,oY\r'O{)n% /Q8;#1PH<5FU\\dPD)\\?S\$:C^]\0WQWSR8G֩i &CZ%/\"wrvTO^wBKb#.4.M~f98C7c-l'wLmcE\"\\d(i(K\\V<E0Ȕuiu^oYQMW&@cD^MLvw-M[=4w[5))RU0_BTU!npmv% SU6VO`nx5܉OuO,Pm<aW@1r5OpVuv@xr !Q\0r7\\B\"\nhwl:oJK/φͧ5r#WBcYBpY_e_UGY\r֓pUWu uJCV7ut, ~WatdF[p5|wb2hAePz] }σX|t¥v\02\"JVS{:xc~EX7ɸC\r?BNv+T1B\"qv\$7|}HuGgl{p7<8x_DMoC<,H/U{VxܳV O+f~WGK%1Cx!ZotkK(XQщwB!\rUl~cxD7:\$_ux'J%D}]›Ur!jBS['5c`VD7Iq\$~Ϙ#Q,(?\ng9RGQXR'cb)*6i\rV `Ԁ֩ StNKa~p dW>5.=%1hWekBCAy\\4}@\nZ@9-?A5\$9BEM\0r|V| _ȱ\nFTO;8mdJVc[=3s56,QkҞBCz;ijVob NB͏2]dԖ=o.er\"!63VH.]O StrCG`_sXkB;Dǔ n(T+RUx;>_BcjK3;qtXd[TuG[ BlQUG0M5H=6vNe6ʇJeyF¾INqe 3ٽhf1'\\ 1zCo;!GoPc\";)w:Ğ+YGckp3͎DwbO!gHNU2b+ M8|hCeX\r jQ;fwQ.qG^E/3)";break;case"es":$f="_NgF@s2Χ#x% pQ8 2yb6Dlpt0h4QY(6Xk\nxE̒)te Nd)\nrb2\0d3\rFqn4U@Qi3L&ȭVt24&̆1)L(N\"-DˌMQvU#vBgSx#W Ўu@R < fqӸprq߼n3t\"OB7(%vI U7{є 9M 9J: bM ;\"h(-\0ϭ`@:0\n@6/̂.#R)ʊ84 0p*\r(4C\$\\.9**aCk쎁B0ʗÎз P P:F[**.<41h.o0x35>+̩L!ʢ7C|&\r7STyc*# ڴOP(2-Im*Rc:Jc A#8410z\r8a^]Ts-8^\r9 xDjܑ-#2ܜ x!h+F\r=7F4S7:c*,\nåM*0L# ߶:<x U\0<\0NQeF\rGg/8S\$%8_=H+B d;.x،:1-ALi&Qk 4e69*\"(c;(&<0WcS/F&)=7F'.j.)\"`u`Vjv.RSKPxn-)8lf\n9+ցv)?@=\n\r#LĴCv\";،*&ku)d4qB;A#PΫDho7l8Cx\"FGPGJ\npZDVK35>KHsBɀKI l\n)&LKi_@@0I@Od*Fq*C*U}# ,c:VZYEiP2?+uo^\r{^\\0bԼ׬+\$#F\nH(L[8Iނ\0 /.\$ p\r&1|QYAi-E\"Kyp?`BhЌ\$x`P '!v N 0c~gWq\"57a,lDCf 8*Kd4RQ‘p430cȒSȊO̒4@P 4\n\nP))0G CFGm01xfr4#.s;}aC<0D`n\nC0%ȸ,THmCeh^S\nAb\nyp.Yƨɥ7K&Qg4<'\rm8K\"~I'\"0! KuvRB:!*a4 \$L<:)\n!4H!\"ŕJzMdv*jjxO\naQ[rG 1p8\$z0x k6o(~|ȴLk5\r* a4U `[P \$Z*P+XHA'\$h3Y2V3jO\$6 ` U\$-bnB H)_CRś#b-0R\n!qaAq3`1f4ݘ@JLxbCfׯG n1\$0Lj%xbFBN!ƯY37dɯԔ)@CsIYE>U@C\n6XbQ8T y?'fTVaNt5]Y\0yHgw#wœ2oNRY+d;Sj}xRvvNwKbl~[2n% ZN{a!Hg*̵%T9bMCu\$A[wIK< r)I4Wœ^Q%/HԷbUrXCROWPCH/+l`˙O\r|,d]C5[<NKC2wl`TԸ1<y\"GǚtG܇\0FtfU&|\"Rq#c!y䌾Ţ>FW:<tE`\noLyM05yDfکmC!7Yy'+Ae\rmEBׂUICu0#h-q+XYiX1H|\r̹Yc &1C29?9zTz~Ĺyښ,p> 1uOd`po3%?#[geu=SiS _PɱrnblCP'\0`RlPOCô#C* |0*OgLV-vm,v\\<E'rdpNwPHbf :y\nn6&,x.K,N\\d.0+ h\nd6F+ P]D,fBCւ8&,:ʾ]BG d^ iCP/&LDpν\rp8O`Y*PkS.' \0FP O1-ttcmk\r\rF|9or\rITe=Lz&#jܪ0 kN܍ pqQJuhv7plfh1\"X8bJ\$.rF>ͼ\r&1x1Oa0qqq7*ki pүg G;q(j\"*X.r.c)28R3 #)h\r\$Q(Pr!P0\$%gR'#؍lcq'S(N(S_&Ju(NlBU*%FyMD6r'R&h \r WJveM\n2e#\$ObP.%gmBf 13\0L\0d0D\"D#'0@\"iG \r0@ \npc0b&;  o^BH椀#pmфI@lt/hЏe8ȥфmR!4d_e \n0#h<' 4JjBN ľ9D&2#H| .ȥ JIbt\rB &Od/,5#<Mx2J8NMT#\$%D0unbOcvo4pLwlp'\$M`0d{d>#xPoNDO7`Cs7m!7d'v,XCT&UDu vCM#\\N/-%2H@ \0t @\n`";break;case"et":$f="K0a 5MC)~\nfaF0M\ry9 &!\n2IIنcfp(a53#tΧS%9pNS\$X\n FC1l7AGH\n7&xT\n*LP| j\n)NfS9f\\U}: 4NғqUj;F| :/IIR7aýatp'#<{Л]a U7spr9ZfC)2ӤWROcҽ jx2nv)\nZގ~2,X#j*D (2<p,<1E`P:Ԡ88#(!jD0`P#+% JAH#xR\"Z9D\$(\\ )07prr7rL/N3p:\"\" N x QrP9<?Ä\0#'N@ߵkU T , `@7D3:xg#H|ׁxDC26H7x&FMj'8*Z,j߲I \"7_@P7H5 P&N,T:,.<8;70m6?\nH@P22C`됻/AEڥiB|ԳCF%,[2#(\r#H `\r#X֣.\rp.H**1\0&;cuGC\n\"Û'hܿ_9QitbË_bDuf(5Cha_7 #l\0B*s@ z(!0m'o6IJ KL0 X7k_kQf'20FQp\n@ow80<UR 8@7௓ \r !\n<0RN &P\rij@Fr zc]d*fX%e՞֌>ZYl^~]0]kxEvj6u.{R@gAeQ_ 6{Cd4=\"bC)5&px\r؃~bJY )f,場:Ul>(VxA8[sO *Dz#rVH@CԪCBRbV×9XoU*LLpĶL%li1 )|4Ci&A̚RSx#(P2\0hqH@ёN\n (N&cJ\"cf\nS@h!T o6d*@jU\\pp<\0Yh8c[6\\c6.S\nA6JQasCvc8'KRobI S ^2 6 I\"*WE!!sbOf>!E%AIhc&\$i P L*רk ]5nq4\rFjVh+y.&4YJ@p\rC)[\\a51[h\0Sq5 0TU<f*{\"\$^m1΃(yKER6f\$[xNT(@+aA\"z{3246j\rE3*iHu^H<BVpQ7ȑ`\nC*\r /:QD7U[1b>W2#QF11&z@Vo nZW|i.t\rS}hl )\"S5\nTdX*:n.ej`C! B݆G)cOÛ!*s4!;o &5JoQ '%DLF\nLa.xd73pQS 0H֧%ZRkI\"\$:@`Շ^m1rxiP\"`SKXq4P 0+\$44SPZiM \" VEW`n2\rgXue%J& o][O\rkz(;Tb`;1NOw\"0HI%la?J%\"a;ۜn]Բ_;B[€e,oPrOU`gEvX}tA7J570fMƥc|o%Nr\0;&S\\CƄ)uHoT漨e9z\\43ubq97LOΎ&kQV`ڄI?&J#јot'VAzCͅ8fGߊ2Z r(DnlLNruO#rP l/st'G\\_b#ԬgF1\0o\0P6v0Md\npW\$N8DŽˆ4!\$ hPՂ9ZRИKl.tJmU \0`~k85ZHtX6=⨖\$.BH]h0se}\r\r' Ipc.\$Re\\4\$V mu] jխBZ<jf;e`ĨaF0?aOOa&af!p%1u1{ N`s0\rM\n|n\nq8 1V}0q \"slrӑ @\"\rf %<\0Q&y\nBڐzPPPx` iu\"p|Tnk]lu!*vLnߨ&=2N\rl5\r%r(cPd0RH7!t R^pF9LJo\"\$2\$rF&ny,H`Jr:׍bOWʰ-2%RoQDkw,{/\0P\r؍QE\$7ұ(NO\"r)922on:t \r`,\0 & ڲItl0N515\\,*%6ȉ7qeSrh `6nnt7F<dW M:o8ld\rV\rbfb!?\np=܈BJ;JҸ\$eЏPƠHZu/''l\0 M`J0Q\"Cjn\\J>V4E> lV#\\d _&&CLi20d\n d+Afn#1LD#t4#Q>|3#6( `fN\$OKD`XE̍QwCi:BpQK OD& \0VN(k\nN2QFLLfbN\"dW9x>-<*ԅHMI\$0\nNxC9c O-CY(c307j\$^ +w \0@ t\n`";break;case"fa":$f="B™6P텛aTF6(J.0Se aQ\n\$6Ma+X!(At^.2[\"S-\\J )Cfh!(i2o D6\nsRXĨ\0Sm`ۘk6Ѷmkv6 C!ZQdJɊX+<NCiWQMb\"* 5o#dv\\%ZA#g+>mc[Pvrs\rZUs/Hr%)NƓqGXU+)6\r*<7\rcp;\09Cx0C2 2a:#c8AP c2+d\"%e_!y !m*Tڤ%Br 9jS&%hiT-%,:ɤ%@5Qb<̳^& \\ z\" 72J&Y[MkLn 3XK#) \r*Fj/lN#鼩5(ƌZT3CTV2zK3 ( k°3\rðB # o`bBt! B:\rx !F9ı8X9 0z\r8a^\\05 x7ݺ9 xDl\n=46H7x9Q5WU3d\$jB3M<\$kᐌ DD.b,Ȯ0Cu@NJ\n􈕲he'3!_d\n[KQ0:zVjD\$D#Yc01::40⿺nf2yy++B'i Tsyf/(\nb*OwԱsT}]'ѓ7| )ⶹ*GIxvޑ:?F)_?.q?i̤2jάL:wJﬔ*X!zjaHsB\n0@0np Ct_k%:zWK!:`l(*ܮtvg(iqG*\$ӆ H)x\r 6aBh8Aa{)]zX9 &RWK:1AC>m!?-.\"Dh\$L%q=EyV0qEa%J&\n\0C,(9\0Oh W\n7 ui pƹW:]kw׬^|^PtaPOkbemd=Eܮa!*ɻbtI>2LA>͢RĖ3 \\t.ػ^1A\nJ8d(ĈK |DŽ0p%jS+\"H:0[hq3T%@*s0ZhBU0@`l\n!heh3A)\nêY9L4 1rI0*l>5(\"LM:2u1)q% P B\\PwD A0Rq5| rDi=p3%PCAlRL@! 8 U\$D* KH ) Qxk_qf6Ht8SMI.I&Qecd̬ATN/My0Qd3xI#Ak!Y%d\rjY%CC(UG@:k#(v4UdSI1;\$nIF2UUHBy\nHŒ] G#4\\RI'F;1=6)&qZJ+քDJauB0T16\rU!WUi]tEs=vPn9TTD`p \n@\"sy&\\ai֬3?LhI>_C0nșS?D~D\"kfky\r'>\"R?'֍T*\0<X~2ةQG!hy7og=]oa?4hrhGH*lyZiQ!@`u<%UW\"B'c#UKaGy>sMYp|ASoHUV]MfY&1Uk^>WBng(V\"I>%%|782֜TӍ^IB;4餣G=}\"+yדS\\+S MRtغ2Υ X[P 00\r(ab.KQ*D Y\r1#iQȦ4X|Q12P~TaGCzh-r _ƞx{\\|}˗9/9%:KMrmJnI6n8 ~\\şw4gv\r? ckzMZԤLчt`O\$㭼Jh\0r&joN 4<k,͌r;OGܻp:ѧL%*63l0dFx\$d&lP4>HrM&v)nj0Ljc|A^憜F@\r(&RMgh-\r~~bHvjA8#\rJa%Q1 pW&%q*lжk j)J>0)԰rdd*hor眺.+Rk-hgSLPByn,CSRq\n\$}pYQ T2èlq@yoRhP\"vJDap!! R\$1p!cNc FX NOy!Q<q1Q.NgY!1!E#n2DUNc%&6fFF1>SN\nIh|?a\n,+8@QN84n'?r7i\"d!O\"ѧQ1*%rK+#+p\0˧>jR\r(1/\"RpkҤxns.-.P<Ip*h2f*jlJ=RN20+.ң1r*<4S+J\$&.~S2ʉs l3cF7<rOO6sҽ.ԃQL2jv.lYJiprCq>K3TE@rS^FS:c~5-\"WhBg4 0Dì3f. `7 @l\n9>'Q\nphxA,4\">]C\no;-'[ƻEmB)R3o (MFʹ*INV%i9g<GR.,8Ϣ02'p |\n,J}p<&TPF}-V\"8ް-NNrPMDr̂MN&iMlY!C|VFDnM&r(}\nu,06.6Czxyv UQKGZ1Oð&5'1Jq T#YQ wG\0UU(Y-Hu5T<%5f->ceHe'n\$`";break;case"fi":$f="O6Nxa9L#P\\33`d7Άi&H\$:GNal4ep(u:&蔲`t:DHb4oABbv?Kd3\rFqt<\rL5 *Xk: +dndj0IZAa\r';e KjINw}G\r,k2h@Ʃ(våap1I݈*mMqzaMC^mv;c㞄凃PFKuҡt2£s1eţxo}Z:L9-fS\\5\rJv)jL0M5nKf(ږ390`KPR2i<\r8'\n\r+9\0ϱvԧN+D #zd:'L@4*fŠA\0,0\rr䨰jj%-*%k(%r`AS#JlDp+p)+MM:BBX'9-tBN##\0SH5\"@(@4Ry@sK\0悥#@6a\0x3Рt\$\rzWJp|c|cN C'Es7c(Hܶ\rcR׶,@:*\0Wlvx:!.2l@ -(<Ƒ)&O|l R.H!߈ãp֢E3C>f4ŔU3X N +s2)B (n)\"[ЖW\r-ɰ&&Z;#3A0q3V q* Cjb(&s * o; CR[#Mr׳|\\֖m0wB覽bE0圠#3 ӘJ2,H4CoNTE\"79/sE.a('!HE\")\$xS\n_\$?x~G_驀1@@yE\" `Mc0PAccMU\rf\0P#A4Si\n=V:-џu|X!e,Ŝւ.j-ey6\"8%C@d5Ę\" !t.jbY 7s\nCw]#>o\n!#b,_ aUJY=hƸڵe7!TAP|AjS\rTdϊ\\CG)\0̇\$n?@Ѥ`0Ns0oW).IOXP`^  {M4a@t&<K¥>P A <-4 8E@S-NPV8e.Dh\r׉P<'~kG(?(&\0ʲI)T@s#(,t\0C\naH#JQ(&z{24T:.qwf1l\r4O޸ya-vHA(=]P\rǪA05CS@ \r+I:W;:@'0 W[Tmrq\rZ;,Glxd7`\"\$[L`<0Н bHD#[\$bKMd.l!{% 8\rA@BD!P\"@(LQ=yOI41\nz\n\r,HƨꓗnMxrǼ&e;OMQ789W4bcT'W!+q;:V!\$\"<2\\:z6)Gέ z/q.U*hv-Ķg\"U14iZNk!͓.~hT<nOd&d:1Hb\0r^Csql]*bΩ15ٸf25\$t8I\r\$})IHhdQhy;EQ3YRVjːZP\n!q4xy\\ȖwyQI\0^8i\r,u-`y/48\08\$|u/? D`yKTӽy`<+7йAE&iiCdACr;q r*2āq9wL:Q'ULE&IjqY|*sEtA;s=~x^\n\n?^qYwF`cYR 'DLv8ZW8.S9/_v_#ʾ 1D暸u}Qn):s~&R/4:c\n~H4PP rg_\"SRq YemCb fZA&Ife\0eFF^j(&\$n,vJQ\0`l+\" )1\$C@r&o (/dMhpVK\0v8PS4I-ɘ\$nJPhЄ0oJ<OI\n<`̪S\n\nHiG ~ ~&J4F\"ʢFp\n\r(d#2AKP\$|EhALR@h=ceM nm~u#b{6mP0MX[ bk_Oz0j= *\r -!PO P-1g j%1,uI@f(\"`v\"k80l.2P>X NHoܑBk둦0G&#hƐ9Mj \"r\r!#2',TO#P \0%zaH\nr:.G\$?CU/j:#1&RhC&Ne)\$Ox\n6\$f(2luMڑH%}\r12k1+ HiEc] /w-IK_oxQ@>0~O@#vc\rR&fb(T2̂KpȆ)\"DE13(<n]'@pKNKDHa0jd\rV6咈ˠpJnKؐQ:,\np#(\n#LSTt‚ Ƃqrb#0#.]<oV \$\$D<')\0a5ˢz\$k1+\"26Q.&Fj%pۯRyL-6\"0QT&Nj)B) rˆID*7сD \$F/ xM%&&MpXh aM.F1̀g@R\$Q62V7-fPMB3-EJ<3PaOD\n t;JHRcRrI&rLC&/,c\r`-\n3dB>";break;case"fr":$f="E 1iu9 fSi7\n \0% (m8g3Ie IcIi Di6Lİ22@sY2:JeS\ntLM&Ӄ PsLe Cf4(iƓ<B\n LgStgMCL7j?7Y3:NxINa;OB',f&BuLK^\rfΈ9g!uzc7'z\\ήk nM<303P*X7P0rP2\rTBp;#D2\$ ; C(2#K+\0P4 &\\£8)Qj‘C'\rhʣD2B4ˀP 윲ɬIN‘;'\"c˞a\r)KqGJs *IK7Ph:O.ڵ>UK=uC3(J\nL6 1\r\r%ʋh'\$(Sh4 1ġ`@'C*3t 5r%8^2{ZăJ|6B 3%7x'B &\r<7TJaiLS+@;@8D,H2cc&P0Cu @7hݣ6S\$(Hh͕93\0<#&E^b23\n>3V1X%7e*J:O6 :ѲnoV4hbzä־aR([ĺ716@9KBw\nd9٘#k yϟэu;a&(q+dT ?1(:\"J{KJ\n{\$YTgux2BItHH#|3`JRFRtM(NFU\n jH<`p[-MqeϕnE^q(&\$# 0՛AMJn%!#4XÛ sT&@\\:HA\$%2H\$1kCHRJL+mnW\\=/x|&v`F,ShPkYG\"|AnTS\$\"> KDB%V\\ r.`So˵w< _!>dea@K4\n \$ҺPeCq1YJNJ >?glԣ'AQ1,BqA{9GStϧ+t1@1\r̬HO7D(ʔQIFA?rYRw3Ч4r\0P @+A\0(*P :1\rF6c(BO_W ʉ _%y\r5σ7&̾-XHRn{7S\nAT\nRNVE΂\rg3`&y\$RTѕeP A )<9nd\r&7vhL\r,ENjMZ+Ù2nuVJZ(:N|qR}0OӀ˜T'ŎhRcH Mb͠cV *Fv~--9lc!'Ě \02\n֛{`L]/H̷bDR0va1\0)/UeƼ=CT(Bi,\$012\0PO *\0BE8\"Pq\nK]Kð!BK\$TA'n`8Q.ĞƀΨ22LIBHm0T L'{^(WcS69^cTSC*8 oN%Qg:%-\\K*#L6,! rzf}/37yV8J5TMStBJo\09)0څL`o0R鳉7GE=Q;L:Ӽ k}RC1l{U ҍY!iגe\nd})L,n2Ө~uƒp8U2JCSqV(Q5-rGF ³DxH3Aa#cR(Ct`C7#=u!gv\"c C+Dg3]6PAR\rQb#~J\r* \0mqz.;ckYę,񪕐uN7.݇y\nDiFkwk' \n'nS0,i/ehWMG&Yo;bP\r\"\0\n9W xi>WuZlA:J8ENkFN@@?c\n1bfiX-.ьw͊'3?;If J &*VI4 w4|&PƮ2pxgȖl\"N qf\"gb` `,ȇR' \0aR&BViL~P27\rpzipӭ\n]-Px' M=p\r;\"ұ'5 !S=qè\0'Oyz)1Acqj<\$< N?z,d~NonP`Q/\$1 4NQw#?qD!In0PQOQ1pkR!,i#%x/S5-+\$siJ6 (* b \nj=!!JJ<k\0=.<1!.d13M&:'.\"Q ,IpK)+Oo*0bM4ddc&aP/,G5*a-x +Qr.a+ .\\͂0F2%&<\$ es*q]0h3Nm53SEH\0P\"F=c+&+&5+*6jS*t\rO)+39#9r53?:=9.SU(Q:ӗ6#'9N,J9-0:S; R;=sNLN-=`B\0Q*rS@+>>NA.=Ac(GBS`.Ns0lad@\$ S4puRDdD4tYDAC?qf汎Lj 7JFg6v+@t\$h<ttC1抌GN!;4FRFI0V6!+.JBb\rV36ebr'bm!bN<1c8lh\npѶf!MЃSt'\$BH.-mPuE[5uPR(|&D\nEVCX8u\08p%\$\r=1p},a qbgN4MC83@cBU:*u7PB\\\\PqEBGU4c-]S*_UJ@SFöW<Қ#o9^b#*g.?lN76<&0<f2o:\n,r<0\0( 1A[ #ͬ+7&77Y͕攔#\rs<sX %C\0ekCPD\r";break;case"gl":$f="E9jg:P\\33AADy@Tl2\r&a9\r1h2aBQ<A'6XkYx̒lc\nNFId1\0BM h,@\n FC1l7AF# \n74u&e7B\rƃ b7fS%6P\n\$ף]EFS'M\"cr5z;djQ0·[(p% \n# ˇ)A`Y'7T8N6BiRhGcKz&Q\nrǓ;T*uZ\n9M4K9Ț\n X0А\nkҲCIYJr *40m4pꆖ{Z\\.\r/ \rR8?i:\r ~!; D\nC* (\$V60\0Q!X@1 *JD7DP4 5**H <6<RB8cI+dNJ\nRsPjTM eB@0[Co\$#(]0X(͌D49Ax^;tiY)Ar3\0_ِp^*ڼ*r*|\nc*@1HqNb\r,:HK~&j5-bsp\n)7SPG\0<HKm._IھQ6Ry:N<Xd<B \$3U&*#C3TFB͌!B4ZuK;dƦp(*ne\" DRT)\\\$ݰN/\\P(U[kN.[׷#2S0}s؝\rCUbJI]1(M8Ib x=l.\"FA%Xj*q:ЯSt4n-BP8\nTb;B##\0kJEgfPJ!+Vb \$ * :\$0j\"H; !9fn!CJd \\TpM>Hu{.ՂK>҆JVPZYl-\0w\\J.UκCp/*}GD=k#\$h9P>\$Wi\r&Gɪe\nU>sHlN<P\\cZemվWm?1u?BEWzzA8\0*aO8OBU) +iC! Xq09 6O,`&%iNCW3@C9؛͓ޒSgp 6(X 2a\r\0(o{q7dÈSFl@)\0gKRAUl\r-MuGA*?UJA:nUHg[ ȐIܐ\n5PFOP3B*LjnG2H0+fy8Li×A\$\$v(Jvm੊jDȄ*JZ{F~ò`\rI&(ZQfUPL 7)88+@ \n<)F [mnI%H2\$3sl;H\$KHA!*iԊXrVcf0vJ\nd*Q3W%P5^Z!ƙ\"o \\iBxMC\nT RM<'\0 A\nlxR\nXG PB`ExOP\n TÅm#wadj.U{?nsΫLS`ĆNЎ0 XC7߈O'JNKjȫJh?vzYCVs*tY m~6T߀\nqKND.V\"Nb\$iTʼWaN\\@+(\nNѵ6\r\0PDhgnljJcۊʓq<~#l zRnԛ\"\rzU\$0A_2!L@XY)U[\rhBT! <\"iD@fu\\jj䃑H/HΙx fǜR;+MTXFg[\\Tg \0Aёpx&BnNz\\ŀ<QClHLGZ*c,WU󸠮:\\.ҌpIf,**B|]Ai5ќ(9^7l%^sGW1Ia!D\"2v=+s_27iNR׌C\"dn c~!sv*wLKp~~^e<2H-H4 \\IL!l\$\\}Cp\$% .D 02r0^^#>)LB51zpPVۧ>g~0PH p| XmVOfLˇj&+'Ϧ0ͅ\nL\nOoGrd3oNGxoc; 8xc'#+\rJ2N&/f/,\r nTd 0\n\$+/DQC*B.4/vbĞoF)\"&*bz3)6Y↜\$^ #C\".ƄNjqTDjҶ(0 ZC&Dehъ+t\rzфh2\$P оAP=\" \" w Mcp.2z`ðM',KipT#NR>7#%D݃pl2`%2[\$2{K\nl'RO'0h0^vk\0B>\" ׃\0MQKЫ)w&2Mr)ҭ!+R\$i +?&җ\$%+./1/j7/P7\r/ '0Fw!R. i\$*H3: &\0QrP2BڇnBX\r(b4.5Z6Khp1~<\$0277sQhO09E\nd\rV e j\" C6RkKCH\$P\"cpO\nqH\nZ}\"FcO*/ #9G`C&`Cb;_<Cm <.(paC;F`uJMDF<hƀ3>(4\"2<(N0db0ȌCx\0DACHHMi*HP 1%\n)\rIuIOexIeԥh3֌\0,tLJΎ4prǥ8\$0bU'A (J6\r:~.1cn2Rl{2,!B5\0#+Fd1()N\n؈U*)G?H /C`2*FC7(qgOXm+";break;case"he":$f="J5\rtU@ ak(ffP<= R\rt]SFRd~ kT-t^q ` z\02nI&A-yZV\r%S`(`1 ƃQp9'K&cu4 Q K*u\ruIЌ4 MH㖩|Bjs=5.-uF}D 3~G=`1:F9k)\\ N5%(n5spr9BQt0'3(o2dp8xY \"O{J!\ryRi&J \nҔ'**- ӯHv&j\nA\n7t. |Ģ6'\\h-,Jk(;.!Rc1)!+mzHiz.DZvGMzwpI Hs(fr h7;s>1#3ѯsoh4@:@o\0D4C(C@:tt 4\rp_RTÐJX|6Om3<Ck4px!9ړ8&)}؃!3PTIRI0Ap+#IA(!1<զLO\"02Ҁi\$t&pNi_wn {PD蹮S <O̩ĀN  2#rtn<\$w;G\nb\$\\5|\\r7B7yO #oMiTa\" H#if+~n|Kʦ-|p5(9#cڥ7u{v(:X9Lկc601gi2!B7OΛ}'2wl[rp:VP2 ;l'l7a4 Q A(@IgUXV\\+X!aP^{ݠt[ `BLX[ku\n59811 N\rq \$S)5PِrvC&f^UV]E~xX} s\$!7G\n(A'j_T4\\ ?^\rt Y-@0AQЉl6` G8he`3;êR!::p4:{]dVElx4kBMqk0@@P\0M\0C[*1 ܥoTa4`<Tg: ;rhHgH U+n\nQph\r!V ά0!6@d q/6DAH 0hf\$؊Z.A1f(#\$E,BHW2@Z *#(Z;JY{3K&1RM0u\n\0¥2#uLkfH %Wp#y\0[Oz 1:t˓ '*LL@IJy8# ^ J_DA(XX`R C6!h\\dy*OZɮ,/K\rKQ8\r)flc (Nb'&`M=&rlHbmҗ>BJ<]d@hٶ䚎PHɾ^\\=K/GFG\0DCф\"\"R]-FbLi2CKM0Z+zClXI+9/d k^=\"7IS%o#&VD{l gmΗ=g׏\\61B5&g,buЫh\$a4tH*t<\rofEbJu\$A*@FH0o@H ](BtOhH\"a F\"^LDŽ䬜9rA< >ˉj-` D7L\nZJ^)KfXhͭdX.'D y¢ ;7k =Gj He\"դwk2|&[Fe 90.,A/xZBϘI09QAZ/S_ \" (%pO)\\I9m8bv&s@rikUTʊ4VCC'qb\n, 6]|)07DoR9[}wṇ|Ǽu`[æ\$<1>!0&/9/n :_u@zVD/)'XKrm>qg4r[az\"lYo\$E]>s݇Mk6'+WDR{\\QkXdfX*~6n]5\$ȖJ2m\0\"8\rNO^n^C\$o0,\$ʹ\09!pp8#\"Lg4l 4\$IJDl\nFm'@M-c\"mp\rwcpkh\nJOmvll*4ìiqm\nca\$B 9\\򆄦\\Mp  00Ұpϐpf\0ip7Ni/nKGPBzq\nslu+>IyTLciodJs]B8Oc#\"`j\\%d4\">ıMp_OPDB%)I\"dMx#ZJDKclnr{P@T\0q63rcP@lLdq ':c\rZ@\$Kq|B^G\$\$3ڌb<1LFd2>&0\$Ǡg#\$Mleڬ\"0yxNI XC2o 0x/**:8zO f/-x/P\nk!+(Ξ'nXr,/k&e @-X#g xK/dmDn\"!(#l:9m ԼH^ eb(y1R@þw-.0&*e02(\0";break;case"hu":$f="B4e7P\\33\r5 d8NF0Q8mC|e6kiL 0 CT\\\n Č'LMBl4fjMRr2X)\no9D:OF\\@\n FC1l7AL5 \nLLtn1eJ7)F)\n!aOL5xLsTV\r*DAq2QǙdu 'c-L 8'cI'Χ!!4Pd&nMJ6Ap<W>do6N\n\" a}c1=]\n*JUn\\t(;1(6B5x737I8Z7*9c;\"n̘RL 玊zd\r謫jmc#%\rTJe^D<cHα (-C\$M#*;9ʻF@ޠq< H(0S4Hd=?Af IC\r\$ B8: P6 =))cj \rJP1l(&L 1BA\0\r=dC\02\0x\n@C@:tN28^!xDl֮46H7x&X#bK5Lk'*i /n/!bM\rI\n:B7=xJ2 ɠyj3f 68bl2l<o:wI꜃K> 3 #R2B[fB4#Zp3@1`^T(B碭V5t5B:GYm!5(# Xq6n-Z1#t~( Я S\$3qT-m?RN8zv ݦ1ڑ`~b:vnzBd>8:P6 ǻuN&tTt8Xa\r֔\0ed7+uɸL('liB53bB^>`@kס\r +El:\rZ\nIg %Cb@e.gE~P\nOW\nS%zZU ,Ԭ場[ h;CAr\\aH׺ѹzξWl0\"RjKdT ]Nq0Xc2IHDK)fE墴֪[+mnƈԹ T ѱu0|Á<d7\$C8FIF=RC* !eY ȫk\"I(G)Քcfɀc!_s\"r^A2-VMg8 @\r,QyFMA̜8j\rZ`(B :\"GɸC^*q+l6S &zAIsC4rNCA\r!i?ڭ'&8'#e@C\naH#\0`#,<*|\nF|P Z3=)D̛a<2VgpDCɧU)h!vpH-l9̂T[6ICM~rEZ\n<)B` lL[8Cr}<!ahm:Ws9*׸1VA`I\\*&TɬP0@t,|LB#F\\\rmYkx\n q*p΃xp*a=Y!Xt\$9 gm-uȋgCNBscSj\nh@voT:opO=IdcCxbk93\$GOyT<`111b͵ 19͆!e\nbɣC<f}P9IS'F \\Or -8<\$xAP2`a ܎Ғ\r<Leb|# DB<ڴm lbNibE6k 8Is++=Awj \"El*\$ 7\"dAP*#AA:P4Nj2nk:\$3^WىLq8Pf8[qk]YY<f\0VV.85(#\"rU9Kԣry#Xtʺ+0>9އV*z7[5D{!Nd sI(.hkcz\n-\"QkCouY׮@\\2#AQG%1Bx֐v oEdR\$d\naܬH;8BYs#L&YU璆EXl5اl|nSae _c[ o_9X)[s`?+/HV\"P2F)K9Cm@Al4)\nif^ 0Db\r,T͌=p:l:T։ug%';d| -fFDg,g*@P(˜-ZBpLvPN\0y<iЎg \n08F6 g~c y\nVg|9\n3AV\r.hNr0䇐NACe2p<\n-3/T\r,?0*\r|;\$ ƚ\04@h/C0I&Qn6ƆY\"c!RG\"FvʋBZ1>q^W#k)}K VDq%J1\"1dOL' /L2dG'/as M\\6mb&\n f1%@M7I#?#LR\$Ul;J#7\"w +@Xk\"RN2\0^ :B\rr-'2 m)d\$jsFm\r% b\r-~2/%&*!}rU+]-9ED9b_\0}C C/2, /rG,FAr-r>0m(gy0S%236i!\"B\r24mU\rP(*E4U,2;51%甿%mܯlP,8\rH#*Q`?C3rgE4ɩpWf%;,Ȑ\0ʻO/?<liDu<~o+=l<=2@ޤ\nVXAVSqb%(T\$r4BF\n\rV8%W&\re pEnؘJx\nZH+Ccn>Hz{x'}4{z<\$D\$@FgB%b/bJ\"JRC0I9~Z<q۳uER+s3\" ޼)tOtn=7\0ibeo:p,Mat\"sJ B-?/є+rJ6U<qUBqb|\"ϥScV5L2ieL jѵA +&&\"<tU@WD _MpX/ytSSAlV`t`\"?x#+d(3 CVb\r2W6qܨH<uV+ Lex-ab*\rd+5/D-a8+ ;N񶇤.(-af^@\r";break;case"id":$f="A7 \"Ʉi7BQp 9A8Nig:@e9'1p(e9NRiD0I*7 0#d@%9L@tAP)l`1 ƃQp93||+6bUt0͒Ҝf)NfS+Դo:\r@n7#Il2:c>㘺Mp*4Sq7hA]l7c' 'D\$H4U7z o9KHd7xNg3ȖC\$s**JH5mܽb\\Ϫˠ,R<Ҏ\0Ε\"IOA\0ArBS87 ڠ&#CSk\\1(DCN.\0P\\0\"(6( j\"n c`H@lp4lB6O4C(C@:t<(spܔ@}C ^)1@M\n| ҒPaH?0z.@P7HI2d:Bd77J2\$#%dhܮ7V4x #K\"RC6#c:4B2B3sXHx 2I 96r:k\"\"r5E|h f20C! J)\"`1L.j5Jv.\rrk!H\rv_i(21@BKV[P)kNv6i{,ŭCM;@@( /k,,רJL;1x3-5Z%*\r>< <c6\r:`0h@A\\ی@iC%f귡Q%`\"R4+K4;O3{SUp^@G.~^c@q23Ij_IU?5G(šSx;(rT9@YUzm/HrA\rt/^% |CԘXP(PŲBnHfzgGW@as)٧wEA2a#1PJB`[LBk(N  \ncC(!UG>2fT˙ʺt&: S%\n'2A4j7CJRFF1TԱ481eC{Y(! ) \$JI%(] /y]g@PP d94!U9DcP\r!!RZHxy1t'E@cyR!ņ!y~S 5ܠhI7#&h@xS\n9WM /P\"ʁ,A3@H0b<B]3mɹ'A a*HrrwP= \0PK\$!~/X+ 8PT*\0B`E@('G\"Z}}MHG hR.6)#Ыƅge CީzG\$\n<ry'f.,%tCJ\\2G%a <5J*\nqgd,) e`:B<Z+M-༇%M[Ib+vZDb#iˠPVEe{ wDӐsJZY\n|7Q75d0qFDup6rTDCM&=\"\n\nF܄-kOZ]nAa Pƈf\r;#BPGlG @r! ]\0ee 29Zأ)HR-u4gb ;fР׋3_lsQ(<'yc6yù<Z#zs>0x9%.SIԩT+F;ը&S0`H(tA]S h/n=Z[h;W|#_ fHN#nZ:q 2fmkp<ݻYUo۬u[`}Du>Wũ\n3;*BvN/LxYJqH 3[4k숗!7ΰں\n\rc0#˶m>k#xsvs.s--.Bu{lLTuN]k]kzteݙN:k9 5[nu \\59\\5=޿o|m~m?.'0AT\$ՄA\0j^-x4]&>d-nGSqi+yH\rq<x>N^µ'0x0<x,A>ߞBٷh\rhEǯ~6#q#5f/Y0NdžJ;\rAg-NxO[\"v>b2bƓPIbf*kwiJNPDLI-.kjNI&fR0^nH&q|/[njD0= ÀЊ\n Ю10\$p\\E <\\\$h\\MDǦAphp0P`\rdN;j ZLdƆT+ 9,Hj,fx. 5Zd>\rVЦ\"ʩFzcDux'`PZʠ\n\nZR# 0'j=,x` ^n ,dgC٢;d &N\$j,7\"@E(!\r ީ%fR&Xc:Bc 4Zτqc,2f͕!\rbtݐM\0MŤ (j^ʩ@ZNdlr9Xf.V^^j |#d/\0A.&&&Cb] EcX2~q%l\$(Z\r(40oDt fo\\ De HBDj2\0";break;case"it":$f="S4Χ#x% (a9@L&)o l2\rp\"u91qp(ab㙦I!6NsYf7Xj\0BcH 2NgC,Z0cAn8S|\\o& N &(܂ZM7\r1Ib2Ms:\$Ɠ9ZY7D C#\"'j !4Nz Sfʠ 1c0x-TE% \n\"&V3Nw⩸#;pPCΤ&C~~Fthts; #Cbl7\r*(椩j\n4QP%\r(*\r##Cv`N::MпN\\) P2.cʍ\rҶ)J:H**^BC\$^ OP vɺ\\7I('#t\r# ڵHսO1l;@X\0x\rC@:tL 38^w. xDj2Мi x!Z+5M=TKvY Df&\n/K`*vMb/r;#ʙº!\r:\0<M}_7\"\rã~6TЭc(0c&ЧwM88,(3B8P.R\$TN36Aa`W2#v\0(P0kq[+JL.n\\122ڻeIƒ6ΰH@.NHa.B d+5\n-\n1)\nZ](CXԬ2HB739%+ \r<EÌAͣ*x ;(P9/ 4sl\rŸPޖÓDޡ0Ts#_u.T<TT*V,ܭ 49aT*kU(0V0Hr&đ.T}B?jYL?:\nTTH{t[+ |ɡ'!TS1- *3GY*m a#̘'Ea Ш2vHz\n4:Q!bI\r3\$pC\$\$#L1;?E]B@\$\r8((9& -l2hZ\$y|Vjr@A;7ІR5kT(WId*I+8\\Kl1O/C4M8o7BJ˜R9% 8-fp`D[`i@9\rDK\r3('.&K^L1_)jMZBf@2y\$1Sj&!HL*O\0C!(~ 5 !)mW1m2\$cVk\0%3Tz-= J\nYRrFt4\0U\n @ͫD0\"ޏdS) \"NS\n \rl*ce\\'\$bZ\nuT` OITԂp] uls\0SrfH#&@\$y`tyr,XJ4m1 ILQe\"(U-E:T.eՏQEL|Ft-9\nnFv g;D*!iւC0sbE m zgTkjsfvȕ곋c ,T3F,4:CqT1L‚2H'e_Y%Aa Q\"ge>Gc\0y ˬt9c5 _%07Ӻ֧ \0O jUI\n9'=,\0 Z;Ey j%4<2pR-_FKhR|5'u9~|[A\$\"H)Ͳs;J[RZUA\\2#h2S<EÁ*]naPh ,((1[*}\\Vn\r'g7{2;%͜#K]\"'ƪl%q*L\$^Qs8B܉I](%}@\\ْ?iAX/O\"m6<:@o\r((V)n5ERr7xR,ݬ_)E%0m8!\\ ܡ?ynq;HNrR\nY59z412<|Z(O9#:Qtm-z`B[R0ˎNK1xg!wk?=~Eּhs\$ZOu4|b]2\nC\n4 \$ۜb4e~\$:xjtp|rS<Djj2Tn:^ӓf߉*2!NXpbZ&lZ'UNPp\\,rH4#\0.88>&*J0 dd8G;6Nd#v.7\0UDb`xMLPmC4\r\n+Ўd\nK Ć[KTG\"\0M䦣dn? E7 c䰖Z\r ΪF,-bVDJDb|B4D\rFnD1DUCwpDQq0,xO0wg1jO0BЌqZJ5l\"J\nHO tC\$DN K ef dkN/z..B0T</80f2ڪBx p]b1lI^\ni`A 9@jJ M<Iv``NAX*i\npsr/EM*&dւJP-4Jkz,p@&1bP%GlfG 0;#z)-r% b# \$֪t&*rH9Md/0B1̌,|q :!H#4,b&2-oB-C1-CRI=L@5c(\"8vN?o-\"B\\2ep-\$4e겥NhϺ A#.n DXfʍ2,\"Yk,b, еD:\"g.-F'\09P(sf#\"p\r,\nALfhl, \0t @\n`";break;case"ja":$f="W'\nc/ɘ2-޼Oᙘ@SN4UƂPԑ\\}%QGqB\r[^G0e< &0S8r&#APKY}t Q\$IÕ8B0 <h5\rSR9P:aKI T\n\n>Ygn4\nT:Shi1zRxL&g`ɼ 4NQ 8'cIg2Myd05CAtt0S~9 s=O\\ t\\mtTBЪOsW:QP\npp@2C99##X2\rZ7\0\\28B#b B >h1\\se ^1ReLr?h1Fz P B**;@1.%[,;L)K2Aɂ\0MRrZzJzK12#eRiYD#|έN(\\#R8U8NOYsI%`j3A\$rsqP(VO,[(sDSUT\\yQJsøsQDR# 4@A\nBt3\r #܎w  7<1B-`45D12\0y|3:x\rrAt3(E\r[Yr X#x}u=pANE\$ЎhK3J seb*WjZt)MtxNA \n7^PJ2D/3F&o8g9+AJEr@1\$DsN'^1HNDeBtu\\pO2mАV3\\tdè67nKm\r c\nb\0pdZ@.s#[Tu][aZIwЗHd6҉B8'V+x#A(]KWud &`+AY/e~U\$~B!yFt+I09C0n^9%leápf 4JfpAP7n :%0 \r3@bY !0@A \\a: PLNTQ@AE&\rJ7LUh!8xC\"af1\$cLqH+'B:3Ng!3L *#A6🀉S\"\ncV{Z2K1hu\nf{\r\"pP†tiaȕ0*Xbev:,L2Xpɡܧe\$6lY0tφ\rr !̯*YlI<\rmf`H@)Y _#XD\r0ieQF8ʁ7a0>\0cs4I1Fhr`14.F#dp/Hx*\$<?B2D \$[UPф6tCכfmMen:׃\r;,:hy qnՂ2  a90`sҜS¨!0hj)i9D3-2Hjg&ڛxOPLGg0ƁD,'-\$ÔQȣ4n\0EF B!M@)a:2Pm)C[0cBTâpsO\naQ𬔠PI&hj.X)\\3Vv1\nѸij/Ki 3X\0@mF\nA|gjayXt8˨qQtBxNT(@(\n \"PtyL*wwLz+.Ki6H2|D}>e1ZhoE2 !b\"8'I{rs\"\\ڊ-YW)>jjndsl9*r*-١ jxw UpV]^i%f-TJ# VK!- YPlH~dGĝ˨L\"lN9xQUb4,LV +ʣMm=VA' FbWx,~m[Rf4*XkU/o_P*K<l}\nì.GW6NWM\r4/3T! \$ 9qmƱuSڇjŃ&IA^cʪ֢@L޸Rz_BGhp/ZެjaL9>9[\\b\"@>PA300\0@J%X[vXm&K_I.4!|5b-hA\\2%l(ސE4ƸhsmZtoIbbbO!Zjb6Ă 2\$2lFȽn8\$ogl&lkGof*0k 20Mt\0000Oa0Рh(ؘ k͜-vnH0zqgXD~8mgY\r>gBĘ}P #nvE0JdW0h|-j>|bn R fx͖m\nBgYBMwјzK F!x(,\"kz oKn_ѻ1vqcF NفUkt\"h0E> ł\r~cD,S\"*LBq4~C\rW >+\$2B0HԑBLbiFANhi* mr 1,j{!.jAC(^c mAg:1X391q~10{'.N9-1\0ܢ8S΃ s4,s>T3BU4m-Q#5>0֒ pSu-i83y-[9%)q9w-8EZM%X#rs#-0#r<dMS;:SWsMsRN+<.R9<@tA53'rx*.;1T;<&jӯ>BB*x Na0=a(2kNȎ\"Y4\r7xd.8yJsvEgIvt/&p-/fh\rV `օ _ \n\r Ȳ`̬\r C*L\np i9\\ҀYHP }.,a,F:d^S49d2m\rUL2#&n.lELT%6}&>qv ~=c#Tܢz'1j9)0ˆhy*\n5/UNax5B8LPR[{ct5#V&LdKZ40s'VK#a~nzv .`C4 @^ Y!\0qJLA\rZ(2a(bVk. LFM\\ #x\"[u\06CQӝ73v}֥\rfXV2Ol!\0";break;case"ka":$f="A n\0%` jᙘ@s@1#  (0\0T0V4]AC%PjXP\n9=A`hJs!O­AG ,I# itAg\0Pb2as@U\\)]'V@h]'I.%ڳ:Bă UM@TzƕduS*wyyOd(OƐNo<ht2>\\r֥;7HP<6%Imswi\\:\rP3ZH>{A:P\"9 jt> Ms<.ΚJl*-;.JAJK ZmO1Kӿ2mpvK^(.O!FLڪ RkjA/9+e |#w/\nK+!Ln=,J\0ͭu4AݥN:<Y.\nJMΓ,H00ө΢R‹vM XO,T[Sg#R8­ڜ֤EUau*s=@k;YOdA3 j+)+tKW[/:X@ h7 re_R7pUV\\ 3ZJ(J\r3:xp9 x79c~2@*N\nx8*uJJ.Sk4U\r{PBtV8-=\\[z9l8JVJpd/=!({6:Y4@7t4WRtB-FjNIL«sw }m=R=OI-]\r7p\r>:З[yPkA͚=)_ϋ!BTWT0?}.\n'Y\\sNrz(%[;\$ [>mnRXQ!L(^ W uSrC) %,o[AzSr2^CιB>q%:Q@#%]lq4U>\r\n1Dԍ!4<@PݬUx;p)Jd\".WW.YdWpv/\":W \n!\r9<BuQe<8Tz3/1S\"FZNz@nfRG\$st*U:T\nH'ZG 1/+Me Jmǹ1-{u|IoS aT)Kyf\$ÜTJ;&e 26g l~Z/ 7h#MjUctGIsUÀg\\ Yu_ @<jLk:] m\re:&,I1zBnKd@Dv>%e,b٫7ͦ|D :40B#Nt-C\$K-LY)IR\"NA2jeӥО#`&sR<KSF2򌜔\"H,\n915Fq#{TÎ&SjtEM =8%0I:b*r(xid1;L㩖&ݚ>J!,uqcGNp |uvު:\0)\0Z*=țYZl @fkӆJ2eJ,#^!3샽o}J~R%6v<ε˜R>:F+m:%n#2D&NtRRڵO|-.b#FNcFzh(}TwGcz`(V)]\n,}5u-(GV=Ua?RfEJCoq?\n<)K q#94T“N-+~Ty?N%oM{.SNe-[\r,^ XMO.Ѽ#@5D>TRӱ2Hlqz'7tMU`|5S!k&skuJձCKVp|qj-+I\\*:9h61*C']Bg|DKYW^ t&z?c7[e@ij⢉-P K[\0\\pK[qI*8UtPZ:5'\\y2=?%oXVr I6+CG\\V\"j[ae?֚AvjnХ\$+mu;XGOr:U*\$io9jL@k/fS+zAO=]IFwc^eŝ<d @+\n#O~e*wbVٲJ.+-\rO?18T\n!06W&m*\nfd~XdWFEpA0Q'\$\0^/\"Ս\nE,8##\$ ,h ZeD(/'PdbC<l,|]fL?#+LcX͠s\"vorK HMO^kvl6)DȏNx/:Y b>qk)F|\rҀ/BѯHPUK\\1BK(Kǯb2o.4@D#W 1O2T1bA1\rS\0:rIzZnN ^JˆB\nW<]f'gtǂ{iQvR+\"| )Q;\$c\"MVh'/nLN@ЯՇ 4 HP.vǦ 1rN9q!ddD\$\r(OFH31!p\n,\$‰\nhUR}&;&oHry,&Qhm+Tm\nBȡ!Cw'R[v\$`=4-8Tn]((R8='2cM*/•0h-Q܄ʰ1f>\$C.B\$k6):Qt-V*RHG\$i3R\"h[c38ETK_]7ˆb .21E9s-5Jk3.ƦJ]s6nQlF\r,r,ViAQ҇=\r=H=T3=.=fҶs{&t4{%Aq1%B)0R#ҍB+Cy<o2ECD4Wo@%m7D\\?G1Bo@qgܭOHB1/h]J]?K?2JK4G1bL3;EFEKK8[<\$(So@NFJՏEAEh18o#9kjxBS&S@Ȗ?2'2C)S/<IMO~(*DuOA *=JSJsECTK\$2}N)1W5q!(egR4[NKZ TSSY10XF[LHՅCOF&I#/Yr>Y0\nX{a[4Jޘ{Wd!`?l\"TRO]DEy0Y5%-vst kvv\$Xԁ+5_p.ԥ+%+737hi\rVm,\$~gߖE\n2N)3t\$vO@\n`p4H6h8JQ\\b;/\0on狨kl\$\0TKELTxnfy(0|7qKgJ@\n26~g G< 0Av bt-@j1q`THtoh?Յ>/ElZqb6A;LJg^ąxIRvJmwdQm^m.KqdΝ<.v TI:1;98,i>M?淍wļ4RKzc+9DtʯHvr;qK#1;i6ʱ?I'g@:B|2T =\"ZhRuq?.*sx+'Qprn)l &.*Wmr\r*5;dIb5a,QԜF\$";break;case"ko":$f="EdHڕL@؊ZhR? E30شDc:!#t+BuӐd<LJN\$HiBvrZ2X\\,S\n%ɖ\n؞VA*zc*D0cAn8k#-^O\"\$S6u\$-ah\\%+SLAv:G\n^в(&Mؗ-V*vֲ\$O-F+NR6u-tQ}K'Rπlq#Ԩ9NӤ#d`'cIϟV *[6aM P7\rcp;\09Cx䠈0C2 2a:8H8CC 2JʜBvhLdxR@\0n)0*#Leyp0.CXu<H4\r\rA\0<\nDj /q֫<uz8jr LRX,SDžQvu \\:ŝmvBZ!%)Sy!eLӚuv\$,5TjLŝu@@yE}GB6|;1K#H0c@98@0ð1\rC:\rxo`F`@]@2D49Ax^;p\$3(2\r8А \r#x|-i[HP;#rD&XB\$Ei?ř\0cyeiU/1NF&%\$?j@1`KՅQ%;5dy2\0: 0OgDJbp³<\n9EBcDP).-KLt H #pd \r1#s(1TrY/\\Tj4AYNDj z{!vhsO{ b<(Ǵ̓S2-y 8,z~J\n@\n|nTD\r!\rЕB (xYr2.S9T;DeeG#VrZ3bTo\rnD˅qg`o 9a  [J\r2\nYΉq4Al,N fdC\rh ZQ\rHdZ/\0#a )vrMt=\nã)bJP}c.(0x͈Rk`mH/! (q! @P3L,ei_}X`%%rbY(i, !8<Ńж\0CSd᭑hC \rBH*41C8%* 6;ć(r6\\^yFƃWrLTCrDq53\$\05P:@LG`G`!,X6U*C4%z }g nDCo[ײ\"{#D+9jda8/5fi40Hg`48\$xebyBuS\nAfp MО%LI3IEyMD5Z4(V%IH)E0\"dMA#PY[&YTj:R< TPBI+ɛnq\$ D6)P\r q\r;\0+A\n<)CoBXk\"B,T>zߊ JE꽌p \"*\niqXJi/&\"q#dl K~@fOrE*Y.ȸb> )Īޛ%L!9i)PU%S!`Lvc&?AR}<tF>aDB%&XY Oeւf#[\"{9)Qw2W:>kk;w^U{M}yTP׷(,Bu,_E**UV*6/S7J,K|JWu`-{VQ#R6FDuKP!@7uzr< չMS`iU@KK<0'M\"U/WQ I^\"mXOasNkͺ.ۇ]CtarXk,)[@sے/BTҀNaST͌ @BH@[hXc\n/]vdy%a0\0/\r2g\"ZZ<@|eL2yxڇГ[ X) x\n p{^:Q\\s;.Gfkf7>fPQyO\rFk4j{,=t~~OV TI~}j ##tcCs<#3#63kFʁ,M\\k&T2=b q/p#\$C%F4+tcX儠20Mm\$P1T/PjL9Pb6oNو4_c/fUD\$ND#=\$\"l#F8a7I|*\n\np|nMH08#.`Q\0P\\/lS-iW2-zpA|3i\0MpwH+ޤG-mo=n114{Z\$EbnV6Z 4QLn͂ m~?na0q1!p:b!%bo!2(R6a:S,@ҧ,p*hvL#4W\$+=E}.N||ĺ\$Q9f`iR3p[r0+n*Q\"٣Ea{\$RM:6NmhuLᫎ<D%ЇH:\"b 66Ǣ:Qp)DP2'2D쒥Vf \"'rM9,%n%-R܁0r1-q*I2/,R50aR1R8grC1p3nR,d2H@t//A;(7\ria,sd+2#E7\"64@I82U&~Su6!a`TNn5D68w5%M:yrk;\$%&*( CJL 8k<4J83!nr.n ͞%0=h?b=()>:&#^M\n4(t(+,%P1Qfh\rVk:\rhPApCd \r ̊( \r'DJ\npI/Fc oM<#%<#Ch6>gLCNqN'BOhi\$CC' L l,GF|!R5GN9j6gx\"gM-w>A\0TPdsL~N2.B|G6kg<cL4KTeK\"<6!ԩ0f60%S4gB;Ud3|\nJD)8,\0%dcW#ڻ%5`~ds/18NuGo 0\"V@S640C?k)%:Rjh5 TjBOlb~m6F15lt\"&S1rX#u(*Nd";break;case"lt":$f="T4FH% (e8NǓY@W̦á@f\rQ4k9MaŌ!^- Nd)!BaS9lt:F 0cAn8 U i0#InP!D @l2Kg\$)L=&:\nb+ulF0jo:\r#(8Yƛ/:E @t4MHI'S9P춛hb&Nq|JPVuo^<k49`\$g,#H(,1XI3&U7spr9XC X2k>6cF8,c@c#:Lͮ.X@0Xض#rY#z\"*ZH* Cд#RӍ()h\"<\rb 2C+\n5Hh2l)ht2:H:Rdp;4Qn)KP%_\r鬛8.1=-P43[\nB;%DK,Z jp< #ϥ.aTʎAC AЀX D49Ax^;pR\\z(2t\r*Vpx!H  dDTK_bckx 2a>\$. 6͚C\n\nD(=.ʀق3_\rc./Q@\$8P29%_#MXJg<\$*uh\nHҿ<]\rSsOR&%Yh8F\"QQ[ 65mk*9c\n\"`@:fOҽN9v oNG 42L=\r)Coߌ~IG;4ͳB\$DnG/8wwqHy>S~5J -it}s\rĥz@rYDq\"o 6*uRl *,JӓaY+@֋xo,-cgCg՚`C((`K!;,JNwm(ɟ^M.LRC\rujd%ZYlu\n\\ 7Zu@;\$\nf}qJQ*( ز ։HYw%SJr/RB2Z]l\\a[H\0|Q&r\r&AHDtJ !QwG 8aP#8eUy\n˳+2b^e33~aj\r`C9Ư;!/^I`\rÖՅ.\0i\r!c,i..:KMQP APDA:(!RgyBI/5F]`px'\rĂDU;+7leԼ@:М:pʄe;,!0!-'<L Dn&iu sI0ΧrRJi/.C\0ڎcA.#m\$5&RtkXy2\nՠDs/5p\rr8*P\\g\"Ws<I/fH+q17|QƆ0XvJb*1ea\rV~pCV\\Aj}M\"[j1[H2ma`G+:{ڔC5pBqI:SSD<9áh#WjM4)حIOľfJP\$ CqR =f0%\";v‘+r+8G:w.}Lx:ysL>Kay\"Zrx\"<.WwO5fރRaY;0-A,L(Bİt:&HѺ; ='JIJ*K\n=ZM~a,(_f\re&>>%hS\r!WpdyH~RVQ钲HIut tŋ\rԬ{SB cfg\\(%*P[oQД7 k\"}&+\"#8.(R{!y+՘dm\n&v }6f<J;a*@@ <!.iFRQ.)M}Y+'lg:uF8y3?Bcyy(\0^K8&I[:>X_:ntKk_Lm\r-&\"GIyv.~lAE3w[G0O~C_+P8~C&'N x: Gdc&S\09'QCCP 3ΔGAN\r\rt奨\$XM\ri;V X`l nm{e=Nr)Sz_ٟ> @DDr (:`\$+\0Kl%,iycJ Ā7Æ`\r;\0dDP;D Bp 0z- #\"B:5b,#ÆT&RĐ[\0Lˏϯ .Ad\0\n\n P \nn\ng%oL0yE/n'\\n./Dadm0\$z\$w aBb\"/7DQT<qY-J7:zL:hi,`B<i\"#ކl7/J1(P),h%N7.\$(oAb^gѠ0cR%3̱,<#\rmƯ\rPDk Ox;cjPR&\"+05Obo!,Re?,#!2+\nS`6c1+\rbY\nKq'-<Β|-`rl;r&҈oy!?*E++rR32( \0zGF0 H08\$vÙ%/m-\"ФN!qlR\0,,\"0\$#,.o/4.+1GIb&O2dm,2\\P\0M'32 G3\$\$ /|*gaBfΩ6qhꓥ'df ss)O:\$H:&^fꡀ;S^%NC>s4e\rV h: XOkV]j n;\"zJ*@\npH²`\$oH D=E,;Q1oF#4T0XCmP\$8`o\0+8\"`,b/eL8bcBya3D*496]\",e\r]x4 D\$%JͭFFMH @)6GI6Lp\0>4/Oa@ޔ\$PG \n@c&I̶\"#\"Q\0Cb<nF'pWm,JGp{pvq\\JR&\0%1QCF\r \nq4=-;Zs%r&\\\nD%1QL}EA\nʧd \\RM\r.d\" kI\n2)͠/c@";break;case"ms":$f="A7 \"t4BQp 9S @n0Mb4d 3d&p(=G#is4Nn3 0r5h Nd))WFSQ%h5\rQs7PcaT4 f\$RH\n*(1A7[0!i9`JXe6鱤@k2!)Bɝ/B k4C%A4Js.g@ œoF6sBe9NyC J|y`J#h(GuH>Tk7r\":7Nqs|[8z,c*<h7)Z\"íBR| 3P7z0Z% p\n,X0PA#Cd2\0P2ɳ'7E%a6\"x::+7N 6M06.\$/\0@J1IpOH4\r-- 44C(C@:t\\(x| MC ^)AHB|Jr‚\nm8h%&5\$ :B`'J20˞˞c|MV!\"Z|\r,7V31 *2h`P&LT) qƨZ›ɁL:,K+j'\nz\$ w-jEӊÓ݊b77 \ns*͗4 %(lIѰ:S4@#~Qк5Z m Pi\r. >cxA\\\\<9r`)6-d?# ('#x3-K:2)o N7-CLS|j#rrtaK(3+{weIw~s12F +&/å\rr0D&8 kК5<TT*X+epxd-\$T4~d:f,d~AAgĞjuzJc}6?T!NB*U*VbUrVѺWO\0snjJ\0c\\|@R6̃8eM\0 Y>\$N\r!>}cYFH>OcFq|D`Gbo5 H4С j]Ip.HPLoei!7a@\$j\0()@<NR\\*Yhy`٘  J\r%F<K|T39F2\n\ryRk7D%āP:42:}R~Q_to'!0I٠Md G\\de3\$4#!J19-A'sYGAAHmT!&2iA3y\n6#`L8 0M?=zRkp|P L*\$^!F5s]2MN5szl6|;\n,l]Qd8̰F\nE _KiTs'W (1\" PO *\0BE6l\"Pm\n*K&];TR-rFcErI`iH\0ӓMF^IɝVTl94\rk]vUY;.4MvR3_q\r{v+ 'L8ǭq6\"\"t)@2Xe ZKbrqIp ˜e\$2E@+HzKᥧJBGjc[\nf#XeԧlbSZIDES.7BW˓Q{E)ǙgZa>Q,ΒR <4Ħi_CcK K0<T{R\\E!D:\0l*;\n _\0i\nH!2vQy7%N/ \$j T:dөeƏS#lnڌ-K5FaTDZF'ڤXm;][`Juwa+\"g^ImNƮ9~K;ȶ#L2s\n@lDҌdžA\$mqw2o.FRKدFdTZ^''+* v29ޔ7q)e,?Sc1,Q/QRF~NP`\\qAM:Y_y1ٗwZh #h&{viJT[zM\r=158~9,'\ru[ṼXd2Ẁl^Koc|/hrFG+4w2fUtv^ *s'Wg e}E<D)~7Y~\nF \\صtoF0z0~ȆF\\lJl! Ηnp:p(`o%C^σ\"b1TŒ&?J/26B\$~U/2, oEДn[-\\ Z[e \0ce ff`@\nCf\0dp 0VPI[G\r-af \\F\rB-t?p< PH-&Ⱥm:/\"P`cpK8蘱bA~nh 0-HMN_I.ZB20%>iz>:*p|!\r<RN&bRd>\rV b gcTbtVBC*3Q~DJ,h\nZJb oIO(NmHݎ \0hSŒ\".ʚ|LJ8~Pq%[n\r}EYXk@LM'v.\"w2p)0H\r3bf2Fjvd1{o苺gr&l T ;@@ Dҩ*û/bB2#B/~(\"\"Z29,;R(Ɠ0 à9f'0 >~od";break;case"nl":$f="W2N)~\nfaO7Ms)j5 FSn2X!o0 p(a<MSle 2tI&#y+Nb)̅5!Qq;9`1 ƃQp9 &pQi3M`(ɤf˔Y;M`@߰ \n,Xn7s4'S,:*R 5't)<_u'5>2žvt+CN6DϾG#U7~ ʘr({S X2'@m` c9ȚOc.Nc(j*%\n2Jc2DbO[چJPʙ ahl8:#H\$#\"::01p@, ,' NKjܠX3; \rь#h)\$k G0B1S̢H6;l:<5\"|1\r  jPA4PIc@,C:!4E0zQ#txgɍD a}{_xDԬ ˰ڡ+x!!7H:2i\\\\1*:=:@PbOmͪ;\rC'+î\n4t+JCVi=#pH(0CrLSUS3ѣ(0b; #`2q#u1K\"-'Zh3\"̗C2Td5\n3t# #h%ފb\rhC+.s{GRf=-[q<]ϩpPzQ,6ȈCPنrl\\Rhs5\"ڮQ.}X=]3j&#Ù`,\n%iR2\\pN#WW6{#kߟ3ʊ*%6d2R;i\\΃a>%Mrp8 T LX  ,UVZYhFC[(\0G,] u״S!%5 ;/T8ĊMp˓tq\r8u%Tv à 'Yl/[9\\≘t&%rJY*(\$MSDOHqHD\$`AcK_G3DC`jb%!3/eR{uiJsP1d˃KAF%<xҙeEM \0\"\$Du\0(*2^Zff4SN*fT4^b`DkDp悕tI톳#D)D>J4\rSpx ) O\\X<(& B\$=+f\$MI9'dM\$GeyFEǸ:P\nl*\$@fi+9y\"blpqhm3{<(jnTQ&@'0 ]y6e@J(Xk.ORGH=2VdCJxeN zb72k y1VA7V]:*LT]b!52C\nt\".\0U\n @g\0D0\"`IxmPi(IV\n ʹ&Ss 8VC(l~Bxmfx#X9b]Ɲ+g񆣍..K(hTӭ9@>.Ԗ& ȅ2LXS8<H/eOr8\$lDxcs]1THTL!y \\ 4`חv& ݁0L(`R&A<xQTӇE0B~_B AfF0e+\$pGU/a#')(cM\\ ^ޫ#\0H8B,7T/5C \0=4@vVA^4#쀔S\"Z PtY /RPk=R-QH\$c WKto\rHmfJfh2I>4 (auzZP]4&N}m-GΦSl:l-\r܋Vk0wLNڄDg:MoE?@\0EE ]6OfFk?c\nŅW`K/\\J9%2F*Y̔WWj}ǜ.]_9ls09\r}5[x[9L;\n`pD>ں&(nͧR\\-{i^T=M玐PdcTm{&'Rwt[]ˣ :6 έVkg˒Ε::sgiךO@K<\0ܺ MWԵwG~}v=YK,,E#&\\2z?'e aȀ'R:-4\n\rU`j\rER2bnSMHҖb:5?\0bN\r(:0B:,e+b;2&o\0`&\n/LjL%noHk&]hXLI6Tհcvl;LtN&o,rGfk^C|);ڽJzτ\$ \r/= OTFmg\r\nE|ɐn\r#0sB`Ц+&oR10&i#^/. \$1BR;L\nS|eYV̹\rn\ntpq|qgl φ\ntL#Tx\"Cy1p\"3 <\nEt!bf/cRE!fd#Gb5(\rBo.x\r%\\B~Tek2bn \r0e\rVD&o\$:8NǪ'd!M924X'fʒ\nZLj..9\"R#x'D -\r<(@(m0#B#CV*gP&M ҇6(NN^1Q\$\$8#\0E,F\$%F8aqIM jMl7m+ILN2Hg^IRq.Bc0%Y 6 *8GPo\"Μ#5)bj*c83Œ8R\0'La3Y`,j%kDlxm.L9`24# _tࠂ:NF\\),` !/vR3†@NUEL0,dg\0m1R}N\"7K\$ \0@ t\n`";break;case"no":$f="E9 Qk5NCP\\33AADeA\"atl\\u6xA%kl9!B)̅)#I̦Zi¨q,@\n FC1l7AGCyo9Lq\n\$?6B%#)\n̳hZr&K(6nW mj4`qe>\rKM7'*\\^w6^MҒa>mv>t4 j Lw;iy`N-1B9{Sqo;!G+Da:]у!ˢgY8#Ø H֍R> O6Lbͨ)2,\"8 ɀ= @CHL ;!N2\n86/˓69k[B C\"9C{f*R<HR;\rP\0s(-̢HS\"t)B6\n\"1o\r' (1>a\04@:Ԍ\09P XП D4&ÀxY]\0Ar3X_O#J(|6ĩ+>L}'7Bo:+RՎH;WT>-'.#\n7-8憌`!-1_&7*EC.64޶\ri\":1(0c;-î8#\"l\\0# 0)ۼ4C:6*8)n8pHN#BC\$2A9Z9l(wMRouX2 P 3u|(-7*HD\0bZ<\"L.3*_Z(^2 \0܃KPr\$c(ZhН-M.P3k*37xG \n8孃G-¶0%[Ӄ(P9)H:Orz\ry! @MU !GR n5J;UJ:*`P*] ϩm&iibRKZDasl'a@r _I9˜n_Дj@6w\"UmVbúO]%xúwb0|䃁ycd* !SNQ;5f0c\$RckѯBvMm8axC\"\nbk\"z !(l|IK)LsfD`1YKs.%̦)ʅ.H-H#P @h*p((*#VRDBz\r-pLr2;aR&[j%\0_dR#&H4\0_YA8)JPR49n:AO6JKI!08oi\0#Rs{2& Ia.&E5)1IrK!ÈH-!RHyz~bI'œ { r4Pe@̤B>i .Q| e֖\"Z/xOĥ8e%Le̿o; ! <M\$.6 I4\\D#@irmAJ?HRb쭍JΌ\n3T\0U\n @߮\0D0\"fS:MK]ΚBaK d2&>䁕Ȗ]fBJII:'S1  ,k7T\r)@NV^D| a\r4T_hҚZd;E,<5\\_,,WHzaӑɿ[XD=4iPa` W*[+tLzˉ%Y\\]'j4r'qyڗn. o\n#so\n#-H(Hd[N/VRSt7)A\\PBHP.ijrhRNFMyW(20 \0KNisxKTz!JC 'a5͋zŔ976G11} k{)' %|7|flR' IP8uRR##3A#0oYQ&\0+P]%hL d\$p]\\[J b|WZ3 'd(8@\\8)m@p>=t{\n(/f-ڔ9ta\"4n!\"r. .uRu~F- oʃ/(ifр1-A vF\"|-E(R0\n (']+*|^2d}9)쒚c :=\"}ݙzYս|iyGҾW9 [:m&6'> ;|4#gD'|R3d_'zo\$xP{ڰ(i\$4 dE`Ti Nv(B-8y&Tdh\$0gc¤'Dp\")fP-] pN̶\\5 )n\$ ː\0ξ6lP%,BS / pЭ P(M,oϞ0\r.7S8 [.Z K\0d'q\0\r#<M1&/as*eĵ80\r :\\00\"xo\n00@Q!p12(1n)e1afaV 9^m*N .σ Л 41o\rqH1D~N\$!1i\nLLc }\0c21\nڝirbARN\"Q6TBR/\0a%&@>&DO,\r\$mxm1/ dF\rV\rd!H.8q~5<5j\npx<ޣbS&)G2MRkx-.(se\rXo1!@Z1(4̮CX f6E[\0j :@\0^уLxC\\S:r2B12Z\$6+s*0#3j54N53D&c\"2,}p_`U\$09.0\\,Tol- bڼ\nf!X@%2c41%=(`T0\nx!@-+0 #\n-i Fn\"";break;case"pl":$f="C=D)eb)e7BQp 9s\r&ybob\$Gs(M0gin0!Sa`b!29)V%9 Y 4I0cAn8X1b2i<\n!GjC\r6\"'CD7 8k@r2юFF6ՎZB .j4 Ui'\nv7v;=SF7&A<؉rZpk'z\n*κ\0Q+5Ə&(y7r7C\r0c+D7`:# \09ȩ{<em(2ZNx! t*\n-򴇫PȠϢ*# j3< P:;=C;#\0/J9IB87#H{80\"S4H6\r )mcBNOc \$@Z0skr1\r3Ø\n寍d9T2.X #Ƃp(,S\0@Hp4\r`&420z\r8a^\\N?#8^pBAxD{ \r3򞎃H7x*cx04r)C#j KRRL Ϣ2C\"40Ό\"NSN]?*;BX6I\nm3 =Pa%bH1K<8эA6Ȱ]B0pD >X3 bpc\n'`P J:0H00R\0|I':%0Bk49\nb@+nsߋ.Qit\\\\Y}zO;4sH<tR\0!Pٸ\$w\"^6Ou=4w#8=DaBl:Q`(\00e7)eɳ 6&#AH9 3\$>MyRm\$2Jhuw=P;d1 2 t^V&HNU,*}jB8_ ] 4#rtIYab<)q2*D`at1CZeQ\0:BE+AmT~y\$0\nTj\$HwX \rXLVzZkUk.\$a\\+6FP]@їÔ&W&P\\s%1I)5<Wzp \"R\nPhQ\"rR+],`eYAi-EԠ[҈9. )`T u.d9.hfX.Øn~0.TA}G4)rA aA@ \0001KQ5\0 T~\nPHl\rIeA3uNx ֕4JaM &iZv\r@+E  QvsEF3G%ęfb %/)=DrvDPTLHH ѝa2v(h5CFBc7CRaadч\" 6~ P?W7PB\r&PδieBPМiMD[D\0C\naH#M`4S\0O!rD\n?@~o] R H\\8RG=`BᯯR˺YLK܁)8>A\0|} 2O_\"<c\rY%9WP /\0f 84B;ZV)Ek\"bK _)TE\0%bq*VʒAlm̵w9s(w8@Ppd\$̺5e\0ƙr;uldZ.&@\n sbM~;(9hC LiWxΙ2̔\r@!,q(\rݤ@Q%\$)yNPB{*v6pd9ެÛvFB\rPj\r|*\nJ<>NCz+a=5 ^2D\"roXТg%%vj0]xtzV5z6aԠӭӛb,L|҃\"87NХnRN0!<UK@b4w>lǤ)yxWgPmT!IH=g)|N @BH#얇v\${Sqo;LGée@2@2(H<d[b#W% ۽Kky{j2LNod1z\"zWQG;*˦Pƀ)~i}O\0(Z~`~?3\0gNr#B8*D B0O^̉P<\0 L\nH7d \"z52`ĭa2>_Ɋ5HD(M@كLBJFK0k9 p-Ϊd\"C#8RHz`'. ȀФ0:G֤-(0ΐdF n0 xC&\0gt<cF&Á6 C\"@d4&UlQ44`\n(({`w\$xgFx\r\" vpRHHQw1Tpא~yiJQeQ1ChY/q\ryD\rcqX Ŀl\n/ e.ώhf 1 !L! %).3!pf C)fs%\$ѥ ̱ JŅf2lcfg,NqD@%jI'68BY!Z%8p\$Vrolx?%I,\$)Gp@ED 3'd%G-dF05:&(r'*sq\r0&0\0bND/xMb:*9̺*W\rRb\n2BDQ[6m561m16\\%x{9\rJGqf%=C8,T@ 8rE\nlT2 A2`S7#ο=02Q<?424q@ a%!SJ|?@O@2\0b+D2\"him>3=gBB#>d\rt*4\r?3IC 4ӕEJF6P\${((sBTF4\$./oC,7 Ԉ;H_rԊ6_DTVt鴂x'Κ 5zd\nI[ CTHt&J#v@X-=zRLc#63H<O<:###\$XeU&\r5-R5Sg%C3bn^#aR ͧ!U3#oT[%vsVTL@`*?QFrJ\$c)ú),1,O.,\$6)B/^ \np&u\n4 ,j\$2rm ]uu`Z\rk@D# \0#֪&8(-՞n#XbJ9@WGBj'\$tSP9ef5\$#VO\0C`gА>=MC2B @ތcJg\"ZvV\nbsֆ^06wV/֣^o0j3Q37HB9E{gu:V%\"\n` ͥOe6I\$p̦v&\rGz-BW,=Ptlpm# -V:MAuǤV U܃KJ>OMfP36h#hnLbBt[BQ\nby@%";break;case"pt":$f="T2Dr:OF(J.0Q97js9էc)@e7&2f4SI. & 6'I2dfsXl@%9jTl 7E&Z!8h5\rQz4Fi7M  &))8&̆X\n\$py1~4נ\"^ &aV#' ٞ2Hd0vfβK\$Syx`\\[\rOZxN-&gM[<7ES<n5stIܰl0)\rT:\"m<#0;\"p(.\0C#&/K\$aR`@5(L4cȚ )ҏ6Q`7\r*Cd8\$jCCjPr!/\n\nN%ln1/=m7lnP4ȃRR+1Oq4+J>++8jQRрP2\r\rSpr # <F S4VB)(9 `@ C:3:xiѵB7 r3@^8BUJ|33.懁x'J2k;F҃R>]ılk+4kb`07̺϶PH @1(HKbcx:1=LNtpr2 ok2c{5˚Lj٤ӭl1x፛=F6\rr' C K)zԍ3b0k#bMZ57g ܤ&L Il)MX>B6=dr\"cN>tV4( #l8(rV֌(Z\"OOkہL9( v\$\\o P9L8a4m*Y0z8 k&HT\r\0@d6!34@ XGK?k\n)^L{M JW2nNM96KbֹXM\$\$F\r2Y+-fúT\n\0yH/+, }^+.W5Fa 49wf\r B4,,JYK1g-T[An-Nj\\8#>)'+l`k@w\$J8&!bjh  qp+w:DP'2`4TABɻ@'X* Xl~DXˆc# Ġ4\"p'(AA@\$\r@ LXs#\0hsVĻV&Ўk9#N@Q:zSJwW7*β1x2 (C\naH#B\$(S7\nH^Zq,.1НʊZM Q]1X^s~ -!@ jc'Ii6NI&\$DC&W&ζRisHpz\0¢\$/@ҳ.@BqrN3֨LVpeAI + ]CT@'5yȒ `i!bvFƢ(\\Ta9('@BD!P\"˼(LAXcv9bX0<d͗ ]1mY}Q,!F`aQAj GP)(U!CIJpH!;z%=VtcJi6&B(D̽R\0PV ,6@#h釄M*o̻XQ[!Ѵ)Cbk:LEKBdHHdItah쩶\")MɉPe\$Rqkb5ɓ^UWBCjQbeiװ!wA2{uX0T\$9`\"c SQk<VMrlXu\"I@xN5\n!\nuTDI#%*Y`/,,h64Q\r_»k zFf:c_ܔ\rfUtDC %Wp\"'SaēqaR^ӌƳdyrSޕ\n &܊IEVriK<}8fVDHP*(.{AC!2,yaE06c [\r&P\$ol]ZN\\x<\"X?\")b/wwL9+n #?%}~}QFN\$Dk.򯀛 6C{H,|u:gHӈ+y8G@GBo,9Yc,pg BbxaoL/Z1ξlDOňon9DVo9T70,&Np{*6PDthՉ캂:oLb5\rZ`\r_QREde<d,N|%냞?I`3cp\$b6oXDob&@ OmZRdDDpXC:gfPk0OR0=\rJGBSpц*\0lp1ƢZa=-po]I,ZHf\rq^2\"Dj(`g|\0SB2*Olc(P+qB󍖫qhQ/TXq \0DZ`y5#J\nّc#\nj\$2NlOaU&W_/bu^\0Q' q( %b)qD1Nqz!4fd.h(> C'-t%1L2J֑%bb\0=bQ9(jS2%p  \r Ng|KÌ8Y~pH_Nm+@Bf_bdШ6/n1XW72N2rc\rVm@@\$AHl E#1%:o ZmXqC06\nZNg4dNO. Ԫ㉸)8GjVO`f/\",2^>ͯ\0\rr1F\\涆L]y:\$rati.Tr50c\n6F(g|Fh1P`b'o2P# G6Pd0i( VCSR?oR5I\n\0T3B ׇj|E\"6Sov{E|M4h\\#&:D+BSIB1!=R<v%Ip}I. @krsM>,XG(=>";break;case"pt-br":$f="V7jm̧(1? E30\n'0f\rR 8g6e6 rG%oihXj2LSIp 6NLv>%9\$\\n 7FZ)\r9h5\rQz4Fi7M &)A9\"*RQ\$sNXHfF[\"MQ'Sfs!\r4g฽fLo7TY|%7RA\\iA_fDIA\$QT*fyܕM8䜈;Kn؎v9Ȝ @35z7ȃ2k\nںR43Ґ 30\nD%\r:kCj=p3C!0J\nC,|+/╪r\00e;\nت .3>,\$2SҼA#\n͉zz7M( 0AM!#!\0@;J\0TBI*9 `@UCF3:xgU<ax c ^+ѻp̾'|=T&O+ۼ*cb\rG jH8_\07JB^7G C :\"6\nuY4K,1yx5桪cCC5=6L6%hӌw(0I\r  VG٣n:4И*TwKB BibR M-5V\\*&L[>c( H[!PaE<`Ϡ2C+6\\A7\r#b<HS(3}\\p hYuO8\"@WS+ >>q\r{1:V9lxp3mSXx3NtÌ0IޠBeê634&<0w\0 d O+p\n)~ޱBQ7*n90CN-0䯙*}`ՆV:Yk5guLZ`7`WTE@#һr\$f4\nBm0-D3`NBi`j\n!c\rWebZ J 8_2: }pmYPH\$P75>Mݗ~Sj /êk2e&bH VIRa Ѯ* V<LqM6>b2gCB3/z%0ȠJ0whRJ232A̐LJ &\r`1 nIvٍsppo/J%Ġ[d)rUl[0 ǖ<&?ԕ? ) SNr(ZuHhLU2NB:)\"Q'L4!HF<!` 0 (LrHy5h ,J7d6iD-\$y[a\0¢1J E:U;1%Hq18mЎUu\\4eL7hb#UodqBI!EYS=PLCs킒@q}㾃C5hȓ7 k:&4Er.ϛN<'\0 A\n\\ЈB`Eda1Sh((qnd6@\r-)zO,)GKު}/_@<Qy.m!\n u%\$5Uus 2a۳J ˹*EE{sA@4xi(dϼv `qe\\GiY8JRUpu#t:̇<Ns'f06>CҚe@(6A\"Fm纵_RB̘,he(+N[b4;X!%ЪOZ0\rD93%}CqX\0T9{&!`(( 4t[\rg%`\r\rIRNtRs'b T! \$_P[ʕSWH9%h& L4lLӲ7ӹdA# ZɊ7qML1^-^&Vczn}iJ,B2k)Ŀ\"{;PSwX9}FmƷcB1Fq-f>+<_ԃpA;y\r'3+ڐ̰a\\B)ۘUBD0\"B8xS|Sh^w (;.uJL&9 cA!g|\\2`m@}>|mï@O!߆DxL|~?y}V%\\9u,c|v%\r?Mr褐L+Af^%pV(h ɨp\"jS_]ﳌzqZ \$ٹn vZ_12vRG4ĜL@v2 ,4\$\004cI7\0P/x/m\0,NCL ^P ;UOdpNRDpHҩXx2c\0h\$.Umx`0z4OPcPM458m> \0A\n#`ӫG\0e P\nm= VLj7 {B%cGiH*b XW|D#Z\"TQ_\r00,k MQ\nB\nQ?\r\$MM,l<Lp9 l#c 3u\rN؋Zo* 1p@%/h(_Vc̀pHfIi@ŒpȰSb8ɩB`ŃnOg&pQus<13isłxd7 RFl/Dt'4.ώn&/P&\r3  RFIU\$].2W\$OI%3!3w%ĬR3 3Y:rxY'Ҡ\$/*BԒQr*+lJT\rO))=,RmOԂt nP\"+0[.)2/2`1KJ-V3h'\"\\FS!bF+/f^46#r1C(f!I3/5Ī!gc\rVk,\r\\9#4:'1p@C1\nZg\$3O Y3(b 6hp8#Ϯi%#0æOoS`K`!>ʇ#:'(T\r1Xt8|R+J\\e1LQCՂRdat`BnL>q.7p1i3e\$DEI=/|̶6ph=F|ͭE4t!W2lH0Hc\r*b\$/JDAJ>MeI4/ 0MQl[d#G?.\"`k\$Dl6#Nc3B396Th2A&%oR5qR&Lb̲g'\\;\$Ĩ3>:";break;case"ro":$f="S:VBl 9LSBQp @p:\$\"cfLL#>eL1p(/iiLI@- Nde9% @nh|X\n FC1l7AFsyo9B&\rن7 F԰82`uZ:LFSazE2`xHx(n9̹gIf;=,f o :n N,h2YYN;΁ Af2r'-K !{:<ٸ\nd& g-(0`PތP7\rcp;)'# -@2\r+C*9Ȟ˨ބ:/a62āJE\n,Jh#JhV9 #JA(0\r,+ѡ9P\"ڐ./q) #x2l1 C0LK0q6%3̎A06IgA2/\0P!03@Ήxf*Έ*Zʝ\r>9+R9/9 l,;CCefJ9 `@%C3:xyR^Ar3_ZJ|6 3/\n,x9\$X.P#UBh̥C _<o.E\r93ɍ\rbANJ+r3h\r>ŠP #s;9jSY#J2YF88s:\" 56+C:,ͽ)1ţLJ ɩ!\rp( Dռ\\kR` #:Ѹj:JZ2j2#r&9 W189xӒ P/u=MXMBGiML ʃ˾\rL7|M:\"_'cWJ]]j sHzuSB\nD( ;̞[bh6\$m\\4b'\$yW<Øf(a[Ġa aV҈w(`@L f1z\r)0U^qza ֻWz^az%\r >)'Bp'\$\$XN1K\0uñ׊+|fL ='5\nQ2:|8ƹW<^]x/%轖_q~y )ʧ(m4s{C[\nD*+9P!19q!Q.W%8V\r'p-M7Q1?pb¸Z`V8y 9/0#&y2HPdhAfyq,l(xCrKJ_n#G|8䬂 Q CK\"*v![d;i\r:0DD%hIC\naH#\00L yEa1< H3Dr\$JJE(y.VrkRMC\nX\nKOI@^\$qldKGY7KS#RD*gP s+50˜T-y\$T/.I<rA-WgˆJI}zQu@Bmq J6?N \n@)M,P( \ṅh3XrjO@QR+T cf M߃~m(z#I۴Yz Uˠ&A1!3zɀPM( ʳ,\$\$S*ydј۠d,#h#wI{ځɭe(Vk ʝ&Z3`u (T>/jTl͜ oA|5IB\$Zo\$~zO3SCVvn(wNҲ¦.ޞ1:VC&\r7w*Qt<eo{g@7H:d3@\n 8cٛ914NJ6|bt,4=5zl%ݼ\0PE'm\n[?բYPeDAa!ֺeK!C)R\rlخ;x 3#:5((HXcrN/ֿ%zdg12<̨9d@<O`s6]o?ǫs\$\"6=]ZUûEg M㲐ٹU\"fzM7=]bH)\0@ c&)\$o3dPvCy|g&#+)SW ^r%ѐf߸{?}\\O3bFx~Xtlk1p>k@R_יj`b*CJNb\"LQnL.kM%|\nsCoENJ&<OFbVKB֐>=@PfrIJU8FL̟\"rLwG+Ob{ LL\n҆ OgZp 3 0Hlv%t20\$*JhgpoyO7-dJ5̃ \"g0~lw'c8k 6#i #:P>MPKx ^<b,cx%B\\\\\rc;(JZ&( [k(#J&h׍b\rؑ^mJkl\r0 O0/U0UdI@W. O\n8c.r\$OD\"M!)GV׫<4e j JԂB:@aDE,'d:j\0v\n<&A w(QJ\nu ҋ  CP)g m\$\$ʲFl<EoAp*b\n !rLw.2W. \"{/.7.R*Ҹ=S s !,1\"s&K2//\"(d6s834\$oKT!L#135HrC6_\"*I\$g/3jM y0NM3!MH8STd67z\nL3;  *x3Wjf\$ O?eΨm,°J>1s(lhXWgl/s3p:jo?S;2/@b%\rVFb\rq7 p\"WB&R.H\$r\r+IF \npGBN&JhY\$=c,:#B\$g fgxgbO\r\0{3GPl);:\$#sb.02AvLh#heLDBjMT PfPC/`rϺfZЫFTu .2#!eI26l2k\$d<G1e RfjjD4x;ljXCF&#DG>22dg8oLp\$@fep/ƧEbF:u&CJ CW8mz54Tf\r~2 ')E(#4\$ \0t @\n`";break;case"ru":$f="I4Qb\rh-Z(KA{ᙘ@s4\$hX4mEF yAg \nQBKW2)RA@apz\0]NKWRiAy-]!& pCE#yl\n@N'R)\0 Nd*;AEJK F\$V&'AA0@\n FC1l7c+&\"IK,qϴ.u9L,&NsDMe!_ZG*r;i9Xpd6ky}V\nPػN3\0\$,:)f(nB>\$e\nmz!0<=S<lP*Ei;(P1WjtEk!S<9DzT\nkX]\$ ٶj4y >N:D.˜Š\r=T>+h<F.\"]-1d\nþ\\,3:Mbd5N(+2JUC%G#\nT,`#HkΖŵJLjm})TʣU%cĻ7\$qN\r 9\0Gj\nu2N\$=\\R2OճuƌnT6HhԿ2O9r0wdVr# 4(`?3S\r\$Bb_EV۸A\rc[ЌG\0x0@2D49Ax^;pÓeP\\7C8^2x0c xD\rFPs臧)*D2\\x. #El@&.# wd< ;3Urh_2:MZݻD2 \$p6a? H5B;`&vO㪯וnCwB)2M/*8* W`#6L5br󭊁 H,HLIKpGPKzp+MBpM9-TLAA&’R)!M\0[`KEkX1*P?{?,0kZԌSI1\"T.tCuq}'vKXZi(<`WejTkGQXVHgKJ5[\";+-E\$#\"43&F4]t9/ BqAH9)q`-ĺK@s\r!73\nbA:\$ QbU*#xR}YLdL Ru'^ĪC8L焂?2[of0\\WJA^T#ʶyHIğ;:XO ^gF P2\")\r@е,M]3-;'r6qQ=i ~jTie`f\\iM!q3:JeeS_9&IQ,=p^mj%d94I &0rQvZ{QjmUZ{lM6^&`a-&\$XG%WTgy` O4YTbK1Sxi\$\n\\Q)VpݏiA5F\\yW[;i dF;'zBmp>0K!<Cgm&xLUIռ\\Ft)pM18%#a.٩qSSi#j\nJa#Z\n2ɰ\"\nP!\n%JOci4(S_ʈD\nKyOf`:\"B]LSEѨ\nK#xh^f3wM0`\$Ņ=_Keqn*ML_C]7p)*gs'Z`wL4m+*Y 00-)`Rf0bVQ8J^P<}'m[Xèg}5/3]E'= u<1;QEvx0\\bq\\eP=r{9?DJkڭrS ҀNcOgQ`-c4DTy@'0Y`*zXP叏MϘT-9~Ш􅳒\ni/Rz/LjR8@B _EGh`QGU<p4I}'`d\\HIt8ѡ>;x2Li+IWo-\nC9AE`&l']J\\؟tBLK\rTND£*OUED?~D#o r3N.YU}ĠrX>5%9lw՟,aC%TY4K\$8z\"v`da2z'XD\0\nbDŽ.@tN\n\0\n\rt\"N(\"*.IXF8p\\#+#Du>vH#ZZ!\0HPR̐t*I##[OD Gg dNt'GGc g.4'DŽB`s400prNL\r^LHu0uWrcO(nTPpsǢ: ;\"-*f[\n-s\0gNQj#!JF*B)A nxNZpb\0KLnV9%\\`\n H\rL^(l҄@&.0dK5l \"GykS@y:hA/%~n`+ 0F\01d!Qnv\n,* / %<r(!DnFU!DV\\Ճ\0,hWX\\b%8&m#azb;,j\$(\$(#((RҒ(O )QCu({*ho#ܫ (bc>#2\"b%=N(o-[. %/-.n!#¶R?0\0#%E n(.[.\$b\rLXJt`'أ\$5 u3i~Qcd:v0a#3i\$RgJJ\"2?8,1s9bQ2X- K0k\r'bK/\"(\npn;Ks{7,S#oD'T]=)'f\0R-D*'sab\"0tK\nSCZ?Q?E(=ؤX+?\rM=rVPk@c^ͤ4Ġ/NI@a!*S6au;)D3\\ĸ܍\0_> \ntKh#1<e:<0=L*Ģ4;E6MJHa:P+/5.\$5OJ 5\"4?L,p@uz*SRTc,+RPġSqo ΗQ:R`VT#RQQΩV!8£ {mXuHRsr/Y2XA& %\\&-TPA\$-ChuH~c&%1XG䢲gRbHZ\$~#\\#ri\"_8RʦD)uZ4hu 0@0(KP1,T1*gNwh\"tO!9J\n3FW g;/UX3gI w6YKhM4wgzԣ5mMԔ[i*@Z4,5k=(U>N2U\$k1o[qnB{n!A\roBx1i[\"РDqe6`@5wh\nI3\nw#Sarv,75'QhR6gЧefx VS4tr\$1uCwn%w`\$/\$HDcO]AVjt1\0[kX00xu59Bbj\\wb|pi1<:WTҩuwBw{jo-w퀰\rAwFeOkk6#=zmt{J#[q nY-X.EXX-8]lYR17oAM2xyw͡zKo\$qG\\]\$Zx U!>W!uzUu(.KZz W9QUcDH /31/Y-KrO(Q0*uuqq2MJgOK5SH3\rYtC{F9L0\n8W-<qTQTvq'T_TYm˓x;j;*gX#a-dXWȴ+&T\ruYcn2~*uv\0n\\â8\n qmo YfxqJ %rq&ju64O&X_\0P,`źOIUqgVbCo=7řu3A-@HKifZDc\"\$Tzyr92xe-4/e'\rgz4Ws+^“3<bTbKU4eTLZ:dpd\n)#MFZ**s;z̉d3ѯ˯QtVy6hE^S;G?\rF.l+q]մ䍵5`HrdDK @ubR OձL }Guy0m1SpqbOC4tG0%@L\na{ۜz)~X&xB,\0zTSXZ@";break;case"sk":$f="N0FP% (](a@n2\rC l7&P\rhl25rxdB\$r:\rFQ\0B18-9H0cAn8)D&sLb\nbM&}0a1g̤k02pQZ@_bԷ0 _0ɾh\rY83Nbp/ƃNbaaWwM\r+o;ICv\0!F\"<lbXjv&g0<zn59\"iH0 {TףC8@ØH\0oڞ>d z=\n1H5*j+P2`2I5eKX<b6 P+P,@P)`2h:3 Pʃu%4D999\$s@PHElP\$-64ɀr99#dN1Cp jLÜ ~9pִ):\r {TB2\0x\$(C@:t/09Ș!|)`ZC ^)ډ̉c7^0H&JNUk,J6X)LVПr6:Bv7c\\+m AcCh <pbC1B sJs4H:\0C.>:J:uJ:Xᆱ0Or\03#;y|9@P2Ez~X =(J u+id*E^5r6\rc\0!7!ˆT-nd=.#l1C2oVN64B=eX a}~QR6傟ح' Z`;#l\$\"3w^RLʣV,`m]9L)3q\0YTntI&a'6gJI)3HO uU \r75ts ͠M0p]A@h PPL!jV'CeNĄ;*f)\nEXju媋!ipQk\\+rb^f\"v \nw\nU*y`P F䒒VVUB`P[\r8-\"z񁑦@ p'\rCbR#fֿPM^D\"{Ns\"0vY &\$ŠSԀ?)3Ӄ_ML0cdE!|1nD\rd\"9Pl0@ l* 5lbdB) ӥCL\0PSH\nl6c4|2tYAg1_4( Y7ғ ηu)0RR2gFbbdm MIJB7v\0i/fA,%B5a'\\^w2SHI!a+XPa9gK26\n HXc\$\$(jPӱ焞)O\naQf4pD՚1sFPi Hp\01A]\\-A,@\\\0SuʞɼP8!PuM6RRèdI5!aQ9@p \n@\"p!&\\Ni!-`\$\$t撨Vp1\$6G<!TȁDYE6tNA!WV(c}N-gP{l웆\nc|3/f|daC7[9Nm(ĘȱNS0\092TL=>q-\0>pT0 3|ClppM:Мf\r\nND2u%F<UsصE\0jHm2A xD=R*/j\$x35(ڽk#nƌ1zVMx\n,e]\nXN\n\$[8h:xT\n!Ak V]R)h>fpA/+\0̠L\r0#qEfXzPuZIҼrsxpL\0gSV pO\\{9[`ǩD\"M\$ܐKIcG <:\$Hk\n̗a`tye0y=^ғ;(<==0SU@܆I)Sc1CE> G_\"K!B)\0ɘ H!HeP}cҁd\$zX(c蓂B7b6F0JCMbb\"θ; =b.4̈́Ԃ;napp'vBMf۰,\"6-n\"\rFc\$@}\\ (\"~HLY\$OW\0b Gc.PG I(#p˅\$IƾܨXI4c(I*Ɔ j\\ 3 S@gxpeVoxBI'09-q'mgu:~zq MPzzB{,go10f16cFQhJk-\r!t\$;81<tQQb&|&b`,CQQޡZE1q[\0\rF\\IB,n!lfiS,=bբfI 6&\\&fu!}#e\",jL\"[B.Xl:Tr.,F²O\"O-R\\'MdV&+2\$i&1'+M +\n -d:8(B2lc.C1=Rrr_92(c&yD(0z /@jEƠ bLs -\$Tu:DlQ.K.?51uapu, 8fnevqpcς7A7C-i/3\$BP'VYL@Et3o-JY;'3/Gy<89d:9F\nR.-<ne1:F.m+[?tV\$ߴ(11?ӂ}?Ӗ}BeJ/JAӹ@tT\\+p'EdF7\nYB1f4Rӝmdh[4+ʭfЅ~oHc& 4EOJ\0Wc]JO&\$\n1G(%\n\n\"E,\$#@|\rV\rh>?++,(%cB&TGG@K\"*@ZEb6<\0L Wh1lU\$%HY)KCVFV_tmh)),#\nB#>& J Ĝ\nRFI_\0r>)#dgC ҊVrrE<. gEl'J/iL)4JdJe :Uo)vih0p͢(&ޥtaQ;q`'V4zr`Ed3`-h+2az:S\r0rv({&1ed5CZGNZ\$Pd5\"g 1ED1[m\n-Ur# j9<6S<&\nTugWo\nK \0@ t\n`";break;case"sl":$f="S:Dib#L&H% (6l7@d0\rY]0XI \r&y'̲%9J nnS鉆^  #!j6 !n7F9<lI/*LQZvccMQ3g#N\0e3Nb Pp@sNnbf.Pl5MBz 67Qfn_T9n3'Q(p]/SqwNG(.St0FC~k#?9)9ȗ`4c<Mʨ 2\$R%Jp@*^;1!ֹ\r#b ,0J`:B0H`&#x2!\"l;* 1#Jh_!\\LLTA(\$izF()ϐ*5R<l|h jB?H~0r8@/ h\0C\$&`3:xY͵Ar43x^Q\0J@|\rH7^0{,:%P7c\nDC;Z2 KH [d ]r.H77e&BR(K\n I5.xf\r8_\"T6(;ŠP%A## =2OfF8:d6U/0s- qNZ9'ӉE\r3&#~` BIxqib6\rˢ\\-(CX^a#zv\"}[< qn.=MP,5\n}KN!slh4jj;6s\rwcޏTS *#0̝* x2N*\r앚7,3g@T0haR S&9ӮGxT1ǔͬ P\n CK*xJƐUPbV\nZ+e\rJ >9H%ɱE G¬)=AЕ Ѐ|H X<D\\^p ZՊ@ut VC> !8u!>xi,:)(gViD\$ >6J 7`@ b\$%ׄk.=I8^rpa@䖅f\$Q(_yS1ѐ RX e钆>7С,TzB_. AH\$t'Dny/k@I\"gH93e6iOn;6z,yjqÃS*sH QQ.NdZrS\nA,n ! @xk5^#dqFA!YQd<H|1D8 \nbk0b<'7GHf(qgcG ' 1/g30bvV@'0B\rG]*dipHdf]Rk9Hj! Ad)6[{ v#\0M0T-\n O^IOx95r&\rf:\0u3MDm4,jhu,d껃pca)rl|5ճ6hI\n`'vGl8&a8y4d^*\\>6&q/E[ cÕA{'IB\\@q<pdzc+@\0ErR]hro) z\0xr t8'2fPZEeӜS:?˳ +-`KDTd\$2R,+B\0002u%|αs\r{6EHC®wI7@ٛn4L%(A4lL+zBJrb:qL&p\\˘\n0|Â+\\2j%1O [&}2&Aa U}SQ'{Ivt \r01mIZ.0@2-a/z\n`:h[ i7+irV]2(  h6{vn]iTCYovP]~j^Go}w ;5S%#oM÷\\SS6b#\$ռ<Q§ \"x>w%7Rߜf7ψH͖9(qϝDS^zHbZ\$6O`w\"8J#vr]^ooL҆Sٗ@xNf+ɸ C\n\"~\"G}`KڋnvGͺ.,\rձ|OPR>Nu+a0UexG̜Un.M>I,Yhb*\rWoBr5\$Cu\$\n-\\@ܧ\0ҁ\$Z8F\0l: i>\$b<\"`;MPϞ!|PDM(!lpFϻ`v'5\0#Tʏu\$#VvM@'Kl btnÐ\$n#:\rnI|ٍ \n\"\nkz%P 06N\r ۰\n(pA-p07 %\nJi A\r ,ϫjw*A(ϋiovDH\"L67Թf<6h [K6BJ .bl\$X5\$9jL>chDtYzk*T]a:n(|Υw.❑0)B['(K d&(q#)oͱ QBlI?@q!\$uTB\$ fXdNc: 1pd[!O 4  \r+reR!(L}Ng±%r'\nh`h+p/Z1hd,\rbf\r+)!q+‡,&ʲz\r,e!-Ҵ- 1_.,P%qk.2+0l(\$ ȾKu3\\m'r \r#T!12!\0D2G22.M1G&D0*3I/Y2Rg1B;[6u,qBɢx/cb-2U&+{`sdqGd\ri= 8|s3P:b:4__ Š,\nrJ?v`996и2ojI02\";.s62N/Q_@nJ_= Ikg2I\07t%~.\nZ{.R\"tO>}FNn 'B\$tmdF#4]:Ի @mECi<dN#|en%- OC %\r*Y=MZ:\$n F.*,nKPn.^QP'/QQr3c2-@\$U*u9&&aD.̀\n'.c5l'Up )\r>+QG\0 TGi=\"Zf\\@5\08T&*΋ؐ#dC&.ss#@2-A]\r#v?+n";break;case"sr":$f="J44P-Ak @ 6\rh/`P\\33` hEC \\fLJⰦe_ DehhQ jQ*1a1CV9%9P u6ccUP/ABPb2as\$_TI0.\"uZH-0ՃAcYXZ5V\$Q4Yiqc9m:MQv2\ri;MS9 :q!:\r<˵ɫxbx>DqM|];ٴRTRҔ=q0!/kV֠N)\nS)H3<Ӛƨ2EH2 ׊pp@2C9(B# #2\rs78Frcf2-d⚓EDN+1\"&,n kBր4 ;XM`& pIu2Qȧsֲ>k%;+\ryHSI6!,,Rն ƌ#LqNSFl\$d@0\ne3{TR\n,!\"D 3FK,Вzs3UD<o>@2\r`G r #p|^#rP2\0y3:x\rwFp_#rLK@|6n \$3Fck4px!D3L[ jh#4TM\0\\QRYz8'6]tb9\rF#>N(/^X:\$Ƶhbv^+G.:0\nfG*5?ɺĪnST@;c\$ \"[z\$wU7\"m >I(7戮H&fs PRʖb|5jf[JA`()yK@Q<<gۓL ZU:֘m!Tۅ#4e 44Ln]jm1p\0?+Yx\0004 #iu0z B\$M\$A @ Fh7Fcc\\i Ck)IXRɻ_ Z5`qkmX8#>\rXW ΠАsb!9I@\nN(`2\"Ob+zFr\r*99IU8C\"bf14 dLLR[-6Fˁ> 6Zޤ/ d܋1ne\"\"QbzECMG'^bdxx\$\$&cluF+'\r2uXmewsoD3Β20T&(t]bO\"Z=/wk t\r|f0l\r1&%2o3Pą&YrzP\" vN[\$A\0Eiiu!aWy%{ĺ)S2!A\0P BŴ\\SX.ի/JCh41iO19G02Ԉ;hV ZF ܫEe,c1a;)i n::-eDBS\nA&\0\\Avl,Wʑ ] UK\$> 5H*CYTi<%\nV%iBdd2vv{.9̌lɤK\"'yiJ!<)K%,Y>ē5h2)X (HTrTdݴ5\$B7F\"'3\0 Wh@X 9,,#K8Cs}\r4{pA~9GA#C:Odʇ ĨAWp \n@\"A\0(KTH \0R &]ou\"OK^D^!j|P P(wVҾjRo<b_yyjB\"JQF;BU\"%z\$g_,+\"ƕqJk=0).YB*YBmJUn xQ\nE\\oh? &'Aޮr0LWy7~bVi%rlӟ R V\0cJLVstἩĠ+\\JoT-OldtK;؜XHS\r!ڪ_,xS .X\"QsZ>>T\$# \";}9!;ʕ|܌4< !h&S>\$.v{\$CPYd/lQx=̒y42KdCNeHZTs4!J%\nh\n6e7+=y_z3+޶\n!A>ny I?*nNB<kb:o^6H0p \$y#S,!v␗BE2\"b'l6?B04:.r1DHLoHnAB?l(0_\"nPSipC{p&o.-p13 \n0⨿ij(PN̵ \"-k \$+\rD\ri C0\n\r\"I'P p@YP_b@ &dF\$~H%)AmM%+WW|஠t&->N҂D&AbXqhj/TnwHQ\r-y\0C,\0jOMPQOrƠ&(@L#pQ?&.1sepd q\\OD\n.M #!Q~bdcZ!d%5\n03xx\$\$F@9H\"JTM('#V\$j%&'ʃ?LOoBQe GK&=>M(Β3\rZ˱rԊnl&dT2f*з\$(j.<q#{\0N+010k\"q!c!%!-\"o~m=.b3!\"\"(Ğ*sW/<k,QC\nPQF0'sВkfݳlN?*r&0_(h7e8\n68YH\"3G.B3;e\\xmK<RO O<1bKP\"?,*? F\"3?k@\$tt A*\"y4%S%[H ¯B>1k&# *:!B?O>>S=ofFmtJ\\\$-D8OBm҆lL12CYQ%Ԕ3NMJ3yJci>KC԰n\"QIqkP<ކneIO2s-MKA1IjW۔LvDo?QEK(i\")`mϽ8'4EJ>\$7:\"NINSS#Rl}{HT)k^S=Vv '1HVx0? \"A~VHM.JA[pduKվ)5V/pžUS]]!+UL?#6U=8[j5{_`'& O[Nv\"O\\PObr7K>\"a\$Y@obD\0\$m9NP,HV!Աfuf)IZ\$f_NaKT5EUcLz):E5wZ \rSV ?@9GkPd=KEBMpJk6 V\\?9/N}BF\$泱9* w4iH\rVvCqVL.ꨆr(@ j@ZؙTBp:ml@j)pWlĂp0+:kMrRA@j*NTD@\rT B[s9t.fGACR T’n,)+tl&Eq~2YF1 Igy/h,eTbn.Av3m=O2/stQMx\$u,kF!x-p?MJ~I6V1/ \nC;~\r\0|4 \$%Tv2Z \rU-|rݴ6M3~EVP.@_ jSqf'HZKS\\)j*D\n%d\"t\r\$3- H5#K/\r::QlEske.`";break;case"sv":$f="BCŖ!(J.! 3԰#IeLADd0i6MQ!3Β:3ybkB BS\nhFLqAd3\rFqt7ATSI:a6&<b2&')Hd7#qu]D).hD r46\\o0\"򳄢?ԍzM\ng gfuRh<#mw\r7B'[m0\n*JL[N^4kMhA\n's5Nu)ɝH'o2&60#rB\"0ʚ~R<9(A02^7*Z0nH9<<P9Bp6mv֍/8Cb*ҋ3B6'R:60-\"34 P<2j7Bbn1>SlPdr<# ڎ?@Т\06x\nLԬ@R480z\r\r9Ax^;ցrECr3^c k 9O7x@(@5 o+\r#X:s C\\\"p /\04  C>2`P7ғ[`Lj_B\r*6DM3QV2E#mP#u43*gMn&*(9-xC.bx۰2<\n:#%&E޽c\\A\nbxv<7dX;B\\M7:`\0003H3w0i\r>C>L46\"Y{׮;\"NO6E0jL,^ WEAc6۫C(:삓7#0W);Rτj46&<zҦaac<[H9l@ \$*>lU`ǴP>f37 Z_c\rTB\nk [{\0_8D\"@\nQ\0A s)>桜 U:Uj:*bժ`] \"b=b肮LbZfɂ6X?aHL`x@d?i`AU\05R*h bV\nZumD<J_4>UbzX<8i JLdjZ \$~pFzOxC}H4Mu\nTѩ5B}3eF)Y\$c\\3ID z%z#H0RsKA]f\$RH\n\0hGt>2`PSK N᪗HNIRjVa;@eɛ\r& bv@aRRc2CXR0g*2pY\n\"ycp dcn'S\nAnL\r2ެƲR4\\&ܜh,Y>(V\nD:HLtQeH'5Dl!sk2 .jhB 2\n}PDPBO\naP k%wʐ&ֻ%Ȼ F[UP_CIeiا1#%&B[/\r4:9AX]YerL#1A\0nDZZX[a\$\"\0D!P\" ' G >v \n ׅJmdz0M:^׽lۓN;4Vl_Om\$aIs= XNqfjeNK[81ě2v1:+q<H\r&ۛЦHI'&rRZXmfaB8(l< \$*Kip>@hn p[20<63c4\\WaȾtJ{Vmݺ{%dFCwhy|qS|d]\0kJfa\n86[ ȭܻ@-[}):X ` &F9kJItAo*+O1X&&4mcpTԭ,F:l{ޚ)n\rLhAomhVq*%9Ifi25\rm^L%2DLvOwd{KrjKa/Wfj 33Zp\"I7zaͧKsξpC6ԳJku`m\r1C, Ĕ&On-]u~Y쑫w:I4;w\r<3@Ro&naа>^p@* yv=!c⺐St}wuCCś/wWJOءϚp'craKwCwLo39oOmD*aO\r\nܿy:@bh\n\rZG kbb4\$cBEġi ط\"!d*9<=7)NCL-ښL'ֻ^ox@0z믈,4]-DԂ.΂K*d/\n\"R 0S0.9%(HE@hd~/WKF3Lq\r\",@\n.p/ Ze&Vp:3 `i F2\\jdA&6'FL`Ԃ\n?\nHbe r TC1 (qa-b`EΪ|DZPab[ n11r5- M8C\rpAnZu11ѱF\n{ -JE.ĩ\"wDn}4\"<\0e * 2CðJ\nF1`0m\0Ɖ<X#:<SΤ dm'j`-\nkڥ@2,p^K&'P>hdF\rV\rd\$ 5+**>P\r+\nX\rdӏ\\ة~\0ҵ/2BKΟ%(TJsgjMhCn ˂.&<^\n,yNFSnQ Gt&CɔJ HN*'AE&K'JBv쬏-lqi5lxފ.-80D],f(pF\0b(\"Mm<܇NP=2<BK~/ë0`5kd'tAk@1>K0f7'0\rg.7QHFw#[@z<r\r@";break;case"ta":$f="W* iF\\Hd_ +BQp 9t\\U@W (<\\@1 |@(:\r S.WAht]R&\\I`DJ\$:X`*rj1k,Յz@%95|Udߠj䦸 Cf4~Lgp:E5e&@.quW[\"+@m\0,-һ[׋&a;Dxr4&)s<!:\r?8\nRl[zR.<\n8N\"0AN*Åq` &B%0dB(BֶnK*9QāB4:Nr\$Ţ)20\n*[;\09Cx0o7:\$\n5O9PR\0BnzAJ<>p4rK)TB|%(DFF\r,t]Tjr D:=KW-D4:\0ȩ]_4b-,WBG \rz6O&ʲpՊIG=:2F6Jr Z{<CM,s|87-@Z6|YL\"#s*Myp& )#6jZdy*cLt2hZV'\n )IJ 6 l\"D,nrVYҲY%w)m;uucy%\0P2\rDNs<s #rOMKO ?#44C(C@:td(3Pp_?tL\0|6O3MCkR\r^0&)X \n~\"-SernÎط%-_0S\rw)݀sZO\$B+3R[q7Wi ^ PjR\\*B](W !7\$HA(dFK\0S\nTfa7@_\n9kT雖Pj` :r\nM\n‰# !6'C`u |/gRo!:!9h={x_@A ҆wY]`%oH{ShU'\\l_X3\0!2B'ipB\$AKnv1@|O\$0BaH&-};ȹ \\ĤAkq 8 N^&)!\"p̈\$`&:g HHaM-'z!6Et_suEu46lFa#>Y@/)˧֮QҘ,nCrmABPDui9F (/d}N:<S_d\")C̘o}6JTM|*8C*OMI7T|*Z ު5JEoaC\n;gv 0lo\0ϗ&XT\r#+qN03E@@P:Hn:pPMl|0ЪDfZ]7\\+{cea>09W{:C#tGyҺwRkv.ڷNu64*W[I/I -9jUH?D`M~_A #AB.3m&79ՙ^ ׀f4U]u:`샻o܇'v]TTOA<j.P3PT@\\*>X0S=uWZQ\n밈Q46uT.%;V*'sS+\r1 cA3_^\r}9S|CAa\0ǁi`)vEST!݊\$Z B@H\n#|}y+\ru+,jxL|O)='XTÐt>;9þؓ惚~qv%2so ~h3AsA╁8F)Nxkj5k=,dHsCѪ`ق\r5~BV4l@7W3'/Ȝ؅w1u<KuxgGpV{t-3`@Hm8M|CCN9V'p'2RTBO\naSDDLmS3asB͚,,g\\tb\r (3le 2à͔\n&.u+)A(edž-44эSbSHb94+\$LfK<P.P*P\0D0\"эa{p6Jjf@Py&}%<i2Yg=o8%BCXd:\$Nb&\r0\n_QBKl _ ĤJ*\\ɂx0Of%]N\"IPTJsJ\"-|f_\"Іp>C&\n.Z\\u / \0ĥ%,n,JB<FKj@+*,M(FP\nFC=r K,D&%1>ͨ5nN-LL?\$\rl/~ <Z\$0ldf'tJ`g/7mnN\n`HcN\n`=Ϯ\r#F4 l{>e#\n,\rȮHT\nm4² kJT=@U\$VpvH'0b\0\rrD* o 1\"`B1\$.U @(al!_\"0qc%Bb1\$DFSTچ>r+,g\neb\0yg%(B\0F\"#qja\ri ?!\nNfȥp \0@\r\$ꬮzpPlSpTnj7H^B6Ja:]3'60}  F*c] F/@3!%݇LCSb|< di1pXqm qrD3k3З7{QQ3FB)bR&֦Ie7PϮel5\"93Y9s\\\rX3:s?P{,7Q<a*S4i<R;Ì Zr@M IV\0+#~B(0M&&+7hȊX(T^#FGSMAC-#B§n-Ϩ6lp@άjF\nJKIdUe(:jp)nk)\rA\r~-(dAɫ=\0^kMS67h)+%Pc؄fr599\nHD-481d]fBt!8/.U;7tUG;;N UiN~nP\ntT81TN#+Wt:XSU;I7YmY2WRY[8p1ֆ0<.5rBS\ruuV Ȧ uvh+M 5MSAR~9,p򓰆gaNO9r 4r\r s4TQ[\\\\r:\"!\0,rm\$`QT4Vfc,' mƗ\\T@u6uq\05vs]ee5UK@MAIܦi/ 59 iVu] k<plefkoʦdTCjjeZ( q/nT?Pukmw#phq7Vp6[4)k7\n+H0/|O2ꆩsWӾ!֊9lW5Ά35g8o+KebvqvuI%ww4vGEf5Ja^֓W\$!Uz9[o}WRExR!ZOCSeuw|'UVwWfr/\" 4:Q\rzp;Qy 2A|esUu*G11QLzqhTrHk&LIAK<1&xԙX I-hFD2#Rv羓.w'5R8s x{3'p6| ~ 5kJS!UuXZ&7@\$8!i9X.-\$ |Z'vӐW HGzQ;UU7Qnw1ԋ~sAG,_PC,^Cz\0< qUn}72ȢRp Vず(kf|r痴ρҿكu)57Jyޟ9Şp^97r U+I#PC'|g,/JSa6/+6ܨiXUbuuv+)sykI7y+WMyOH!az YcvمƣJP?GQJ88ڈK\nUZH%)qN[5JZ`Dx̧dc+i7mC}q :ۃ:qZ7Ց!W(9i+c!'Y_.*56~uEi9?g1@Zq̟N[Ch[_ %RhfIZYm&x\$zh󸛞G;[aWc?;y{ǻ8ǸZ9Y@cjTWu)P%W+vhZEE2zx  u)yG)Ǵj.2+A\n CxI@\r >4yZSN =p'T[-?52nT#GE6(5@{,#FPBWŐ\rV `sQM@,+ڄ \nZ\nI\"y(j!d3Aa)mUQ[j#\$cqgo]SsUI0][#\n2x\n.IM2l5v Y\$wd1L{Ӧ@AU3ϗC(}w;qnRUɹPE?b?{f_yrQ9:C{fY089PmI9QuzYeZ+uf0ZcnU[e6\n><- {QCf[.,,` yVɷf^m6h&^;cB~oi7\"Co\$?@Jw>@\r=s24'lğ~ @SaIbغ0/E݄\n=gΉ6̜\$Ë0'\n|ȝ>qma)6\0h@=܁0s2\$^T \0@ t\n`";break;case"th":$f="\\! M@0tD\0 \nX:&\0*\n8\0 E30/\0ZB (^\0AK 2\0&b8KG n I?J\\)b.) \\S\"s\0CWJ_6\\+eV6rJé5k]8@%994fv2  #!j65:i\\( zʳyW ej\0MLrS{q\0ק|\\Iq n[R|7;Z4 =j.Y7D 7i6LS0x4\r/0Oڶp\0@-pBP,JQpXD1jCb2α;󤅗\$3\$\r6мJ+.6Q󄟨1`P#pάP.JV!\00@P7\ro7(9\r\"@`9 >xp89i؃+¿6MJԟ1lY\$O*U@,8nx\\5T(6/\n58 BNH\\I1rlHÔY;r|ՌIM&3I h_QB1,nm1,;,dE;&id(UZb!NTE^m0AIKW\0EV#*\\`e94t!JP+\"xvV ;GM ֈg%'eӃ,Ŋg(# *>>38Pc0c9ʣ8@0S;;C#4C(C@:tL ;v9N#8^2} 9P^188 7^0-ޟKt\nd\\x+Uf\rˇ[2͌7WL1NEԵn#VK WgXpsd2cs1`},vc2.jtJTF孇\$BN[-8=V7HÂ-\0PDsA:l%\nNB',Ff za\r0(J6%u]]1#GIB~vVCۅ-a5dZONCkTlqq\nMrvI+l\$FkkpҺ@F a\reZ\0S\n!1+\"WnB^R\"Q+}-tS҄2F22ޔ1IlpB5w;LOrS!A0J<.r, \\\n,Dx[0|h\\zcp!%)1 FycbqM+pe78 D ,CA7`I)(\0ѹ\n<A\0uվA\0l\r*7(8 !0PAS,\rm:PPM*y8?`og~,d@X\n4DJ4\r!c\\۝sѺWNkNCv X3+M%SZ,'\$,it`R6¸/jz0F;W%`&t DrI<\0T[r9@# kv4JQk&BHm6\0fA2@C[P^e-\n[0pge\rxb80d^ qAJ#uo40k~)~vJT*R?9ȼ уoQҫ;MΒ{]QI܃@\$\0@\n @)U(R^zN߹܀7SUJ\no`w>XCA)6M@桛OMކU\\{r04;{Hgsb3&keyQ#h- aL)hNIL\"%z%0SݹW TWUijEXǭIaSdDXWKav8FV3vu<MuzW`\$Pz[{͊^\\qa?dkn96:1kPϔZVM+8V=*4\\cL6\nU\$jM̞x\0pcZsEO,pC*V}bT'pI؀jpz3DF6d`\r\r7BTۻ r=N Ш!3jDENˉ\n.p \n@\"{?i&^ 0Qy9G%pQc^]>(]Z4MXFV6Q~3)2JQKxK 7Ot%7xi>zmh6\"IvVSx~iz:*Jlk\\Ѷq \\\$j eLP. +9|,0h&( \0b)'p(ʄo-\r 􈌶J8?,İ7\0c/|XKzX: ^ L'.b`|_Xb{op0TZ2' apH BfDITS|HJ\"t? DS‹Eúf,VäҠgE8b[v8\"\nirǶf\"̦&N\n`\rMOFf T6Q<H\0^3\nöI\"[&'e\\D&qrC5H%R;^d6.n8@PC1OKdE&+)<c)0ϖADeg&og;9WmXD`Oc P\"+dfJW#֢9e].\n DF)/FxBJ[\$5#I\$1'kǥf\"[V\"?\n)zP9hke)Z9~G28[CPaf}DJ9HE Tm.Vhjh2[QǶ<Y²;\nRIeRDLs}DK&(E 8-+p.1Z<3;/Ǯ]2:DY4Nm \n:)EH+rN\0W~+2B:F+gSә8Y)IIU9e7C[ n I z8fbX@AB=Y=nE*Vh0S\n./\0G 6 Ds%./<Iz;p3pU2Dli6ov낡A} h TBBW11}At\\irII?DsF FQP:I`8SFI|9u%OnLBS% MI0Q%^Si<d F+aDIt!IH 8}4HM<+NNgOcLi+=\"O4^W f>H?fC0H<,u=L4YBÚz԰SHT\r Q=Dd*DRCC{bgTH4KM+nYn'93C]BTo}cOH<5 ;N/AVG*7GsG^1\\0 lq(q/(\rNF``O]HP54(Cq3aQ}_N- P49<bt2VY`AbQ57Vs~e`:#hv>U`jaw;_1zLtb%`<%Z@qHRa}C^O<v1]ԓR+kt{aOeI \$\r̼xP cnc\r s6bVlk4cNp(/r9BjFRgЍ _n^IK9stVImE<wAmS<]}uk7uatJvvSowmcw;tCwdA/['tV\"I+yUQR73-) u0[[pi|CygIKR8\0v7pW7lbixURu{VMvPjA0|Aa_6kf}1FLvTOl5} ś_GXO \r!JoW.Mh-'+/K%:\$ZQ45BT_G^2\\6g5}%oA-DKG0t<ҋQd;ezj\rV `b\093%-N`΄\rO\npj 8ёtBϴR6b10Ǯ&lߒ@.?fVT9D ULd6XLM{µCy]rYDx9C\" \rtwg2pYu'KX.z)oE,uf6\r4  @ʫ/Z@\n~TXܝ)@-{v\0=рv\n \"mr#Qw^B/7VXL\"#6St6zbg[@r6 ?iUqӣ5Bz4e*@osz'w̛:l[z|:#\"zdn;;%l2enF9Fv+9d9i}y:edNj `> x\\Nv+eoC 1㶅[ \0t @\n`";break;case"tr":$f="E6M i=BQp 9 3!i6`'y\\\nb,P!= 2̑Ho<NXbn)̅'b):GX@\n FC1l7ASv*|%4F`(a1\r !^2Q|%O3vKsfSdkXjyat5XlF:ډix\\Fa63]7F ӺAE= 4\\KK:L&QTk78KH0 Ffe9<8SpNÙJ2\$(@:N\r\nl40@50J / SB:/Bl-P45\n6iA`ЍH `P2`H<4m @3N)#:6c:T*Qb\nPB^-\\/#BJĦ.832 #r<790Ɏh03=p4\"*C X9 0z\r8a^\\0Ј<\$8^3\r+\\ ,x:\r.x!O9#́B8'b=##C\"\rlDάrx*-dX\"-.J2&ԉs{E*J:x\$#K0 \n x<-{xqPh2HF]\$NVP0CC4SÒ#Zh B`Ҁ\"k>It:+-/R1x9X&BrN 7 7NBa|f)<`\\M:{иMZmZRWzS'\\\"״I(}I~|oǀSr@I+t7w#@C(39Cdd:'LO.=\$|5Ä0=A<bv9d762.<.b@\"FLEÙ8m2҈&' O[AaxG 'PjCDQ\0\n>|fd͒:XkEFAV*ZurwWCep/&ol\\)%xx,^嶷`~L`d6('EBHoP q^+#P.6&YChCdWJ_,IY)<蒳>@E0ƤL0srGWr7FIO&l\"|*ߒTA,\"HX]/FKg)1tJ<\r\$.&Ё'\n7 u]HDC0Ȟbg<\n\n()-rS\0* <(qFb bx]PAq!hEA,v\$r>0 32@\n\r,PF hujMu1<:NgrJ\005\rF|YÐm1p6cI\"%Z`eLY\0A\0L&\0GASsfeTa OWd'8ӌh<eE~pn|*^ P L*>A]#jeٗTH0Qϑ<T3'N\$UFpXl'\$\r+=h{J\nmDg3Y ~}SOA\rKЩPQ1>^\"AL47p[ `E܄P*ZrG@@*xE |\\`.\$R.c%ȁڛ[QV\nf\0Xk9lИ%b/.P}Xa \r''*FǗ7&\nq%2\rzNnuj%qL3,\n ^xD,E/h:xʭOyj]8>[pRN[рAW/ekZ3!eD}f(Ka9#5z#Rg/P32qcGC6t`;HG|\riY*574DA51sM!I4O=hޓ2(˭Aa J\\ C\r'1P^Uثw]LM>DO\r wF!Ɍ/\"} x{5(s.\r6oii~T\rm—T OB<\rQOzN0r~oze\"Ӗ^heG2WI&dR\$L5@Pؖd(p)g3TX!9+eG6;K˫.R\n{ܤ\"Y6:kԉ>\rf.3+Ϻo\$?\\Ь'4u1mZ,Ȳ\\.fDѷ@#OJl\0\$<\rE_b@m#NZ/TcB\0*`Gdr/LHTHopV̪f+ gQp\"\nHPSL\"p!NCR7`a\0,FAr0NC x&\r&#/ /7PņS o̬E\n2\":xWc#a498&òLQ*(c~`\$D1(t& ͧM^\rMp o1}QyM\0 O-0Q~q1 \"͹J*CGdz-xJcp\"~\"Mp\nш\$pbqqn;*[\$#I\$HfpgC P!\"̤\\ ! %q\rC\"rDrIgz%kW%%~JrniQ%&9!y!Rw#M[1\"2e(M%)u)m.1 Q;\$,rr\$O+or'ʲ;d,Ʊ`x.CBNb=-₭Y/D8>3 \"dmQ\n/P .pv4 f)c.8 c`% \0I`i/O@&\npn A11Z<\\+0n0J3 Luf9%5g:GĂ,z:r:/,SK\"\r4&&S6mܢ|0X]hM,Sl\"!k\$b~7(<(,ZzB1s-,),vOD[)c~\0EEL @\$p=\r\0e>l\0@辀8@N\0\\R{\"4E/q4t1 t?CMbf3C\rb>CFK\$j\r`jjh@";break;case"uk":$f="I4ɠh-`&KBQp 9 rh- -}[ZH`RdbrbhdZGH\rMs6@Se+ȃE6JTdJsh\$g\$Gfj >Cf4jSdRB\rhSE6\rVG!TIV{ZLʔi%QBvUXhZ k7*M)4/55CBh HT6\\htvclVYj ׶ԮpNUf@;If\r:bibj i%lh%.\n{;y\$CCI,#DĖ\r5X?jвH)Lxݦ(kfBK{))ƯFHm\\F \$jH!d*B郴՗.C\$.)D\nlb9kjķ\\̐ʾD\rZ\rqd隅1#D&?l&@1M1\\`hr@:,΢[\nC*(kYCO9 \"%iKQ%\nY D!5ҰM.ȣD'-(b5jClhGUN/Ҙ;s ?K p h7 *.6e,4ky2^8(| !\09 0z\r8a^\\08^\rp^8 #; ^,f]Ԝ%/|\$i\rIq-}\r\0ըҡpjIP݄Yikؽ\r6\n&4 F\$Q,ė=EU/C'2}MP\n5Ge!s=]!SNլ(<m1ܤ#8}3sI12*{REcW*.xmTGF{u1FmPLғ|4ÓbB [m!Ap[\n\0\"1\n( a5x2u.Cuì=/0@dh棑P\"yNh!%t!CluЈ%2 f`0ъ QnEl\"ֈ\$\rNy#Buvލd:ܺ 0QŞtV\\a^P)z@bDCa A2@AIRRKI&Cti!4ܠL6@74* ^mف\$ГRQ!hr .D:e2V)hIv&%=v;>arZ3)eLś3Mk'/<sK,BuK8RT㜲ι|f.34fJYs6|Qؠ&JmAVT\$XQCC/VqOg;TشJk8w*MrAĬr\n`a )\$g;h2fٜ3Lhm^%0a&OBn-,!!H*S_L*q:J%]&Mԅ7o\")oGP\\&]Xu-3/f,͚vrwgFPe2564\r1\n(9<-k>DP*% EVS\\\$`U+@AʂI NJ:<8)PT 9]OhzJ6YlyBUSSiH Ng*ՄUcC EɐSٳOpӰP @G\00NR9bE\r*#\n*aYrZ462RH#~Obq]t\"=MN7XŬQDRU ,TuRQ#J`:~4\$˜RǙٜmetevƖǃj [|hr D:d\r᫆R ty ީ[2)h\$R2p9G֔EtoCYCr ;TSSŔ\nM==΂B\nUxM*!xO\naQHH1~3]M-U!\$_xc4TbY4,9@60Yӝ`C\n(F\n@#ÜG,| I[q֛qn<ȑ\01}C7;4:D6 7Y b !&Ƅs#x̤RYy4j1/IZjϲZV2OTxM moQ*㋷%2WN#aq2SK11-p6Fd\\y\$\$_pW\n/qb{UGc=D%Xb!xg\n[BS4'O>9I ʽV(VxѦ#f8\$ff`!Hj1(0-b||7ˆ7RBkpR7o;pH!hnhBRF\$LLH2qGʂCp2!nkCɧnJgVP`%tbpb츻ʨ{dd-.(^D/Κ&f|Bh쥎x(M.ʈZ\\\$V`\n P8G-Jb* |x\nHd-LGT7PQVWqZSD%m&)%\$#+gDOG*(d%lǻL)1XQl6r&ў1z~J-meBu7i Cr'MqwQqW XQƜqSQ1, m68syJR,+qg\$NFz2O!̼4 L>[x\$\$%Fb'+%#`2L,cc.0J: q:\n|Ն?*D~\$k\"oF%Lq\$ 5%,B(<DQlqi.oZq&?/Q)?/`#BQq._.1OCD^ILQ1q1pLq3#n(OTN4g򍂻2l\"<{R[#{:\0,\$رhς?-SG>\"fD)0dss#\r3q\".w\";B;;>FL\0Pbp.5.^ ̳;_2r]|W2s/7EKA4(-4?T 5t ;%Ȣ#2J+?D ;HLtF^1<Szd-CE W*SO!g+/cC GQ=FNiFur /gCGtFH|tIJ'C&m8lKj`E3FNM\$X #OIn  k\nɕET'Ei=Dk*E\r\$. cP[J<EMܴ&iR.7Pc<NY\"\nxY \$k皿UZnaqPCQ+ 5VEm5pNWﰊnT!b:'\n7u FS9N{G\r]%/i\0]!]B\$+?Ou`& ]4B۵ƿDշf\nUV6,qTn%']b1Oػ%P\n.nyއR?!EOTKFfԃg&aRMf!h\$hvsLp\\p2J|lG!bv+Of1jckvohwE`.,~6:mO]gb^V >i)D\0,o0ԓh+kWnpKly*6q7* +mEDtWb4qȱT70\$&tQР6 ghe iqwEvcPNqrW\nsW[r,vה:Lg1zvE(YCoqzʊQ 3tSscׅQQ]J>vLRӎ|&Ik%L\"Zy\r`jT6X'5óԧfmwe8~7wU[,(~qϘ<rL7qKM-U M8|SBxi\\\rWQl*X)zgˢ6z\rNUX.w`0.CS\0@\nZ젱O>uxThZ)7moxQQ?EX'pöL(-k2cp 7BS,\$ EDYO;90tu[):YSGyn\$9u%v`R/ b)CGwF#\0FY?xts?U%yq/v\"=y4C\$tS+XY\\QPo)\r\0h\$eVbTo-<UV ]+lQ¢!Z@\n `ǐ1}(txgֲu\0uβ5LK&kC<Z1w#Y`Zua<6n\0 9EF5Lv=";break;case"vi":$f="Bp& *(J.0Q,Z)v@Tf\npjp*VC`]rY<#\$b\$L2@%9IΓd3\rFqt9N1QEhj [J;o\n(Ub daI¾RiD\0\0A)X8@q:g!C_#y̸6: ڋ.K;.}Fͼ S06\\vN5n5x!r7C 1 #(͍&:;#\"\\!%:8!KH+ڜ0R7wC(\$F]]+0Ҏ9jjPeFdc@J*#ӊX\n\npEɚ44K\nd@3&!\03Z0H(\";mh#\njh-aC3&IO>%*l΢jVJzT\"Pib2dC&! bk:V\0P(2\raYSiD_+3## \$\rACPP1p0j ;(:\"9pX9 0z\r8a^\\0Vcx7]9 xDkc36LP| +T2\$Uh ƀaHl\nxYee |ú@P0Cu\"<(P92DH:7TC'I9h&L5v'-%\rP0dP!)R <Q֢zn ~/E,eLaM]@ֳBEŵM\$\r2H;Wkߕ-a13P tiP3ʥ*ol)\"`<dP0@3lH!b'w\"i>]f(gwMQv~MJ\nO\n%\nx]*߃X}\"FʲLnB B:<J7 A@~A ?p C(xj!mxh4=\"\r!Pn ,4B\rL Z5G9ӻH]Q\rwqFeb+AAʆ\\j;(<\"0k@jU]JˉAw8lC\"^ yUW_;6 \"saL02\":>@ȉpPu\$@tM'i!!~#*A{EJ.SBNE>f:)_ ~/\0\$>҄90¡ 10|aQ\$ȢKy^ĖBEB3P5(X \\6\raz[ h3Z*zh D^D7Q\rˡQHt]!ܩNw\\зAA@\$hȜ\$\"dBE(1XpAB@GR@hD:(|L>a0V ;tRBB::12k' F`yfC[/)@AF.Xu)Fi Y}=*\\DxHAIFۤF?+z'jj(.*N!DM^;L@mH)%\$\$m@Aؽ\rBAA9s.\nt#YUFdKxP L*EӾI  b9r RItv|LCyWgӛ./GoD#Js%=HrU=Uv\$7ZI8Fb%eM,I#R PtJbUȐ QFvbNV\$9k-uԏ@ Y M'ܴeBD94X \" ^NoDCL.(3<>g!-&vi9L\n*eN0uf=z,|n)E<<g6DjM\rpµ,q[NoEI4(deUPzh2s͞X\$p\"ifƽ\0:cTGzNS1\"&ϒl=SO8s7ZH?Dۡ/EDWvSV\0 Re2*o\\u,@T\n!|DKMB7ZM~Q!o s dX\"ĝ.}-kb앎iR,I<b|A .<g4Ti]2 Tbce+~}8TK6o҂NA&6/rI5 EUS=yR>FUbKYk{viJÖq''ĂmD*L#8d.{\$߂6\"F-6)mfh@8BR92D&\n~T?P)\0~'(eRh!t\"ؖPFl' R\$9l.P*T.oRp8\0\0\$0lN NjhAKrOGuj^X\$\0\r  HӍ3 g\0{pg|pcz|bHh8lO\"]]|Gc\"\"\$dʪ9^% 1*0\rԠPL9~rH\rSr]XP0xDXpe h\\\$Ąh&n|{N<TĔg}A015ga\nɍ0GԋM}\r\rC[/ byP0. !&Zol\nN7.X8DL\"SAv,g.N:&j]g\nIs \$`Ydlf'\$XJ.'o\"pV,Fm#b9V /OB' Ϻ[Ү-I'L)G-(\$OqK&.2eY-&[\rQj\",N 0Nr0 gNE(&\$Xw\"n0q\" ̥11\"RMXlf[+4VMzLf`%PCX0&'s5e :KR\\; zj)s|1\0\\ :-\n*\rM\n\$G0HXJIE> \nq ڵ/RqX\$ts\"0tX,rP(s{=m*6(jnLkT,UŌ6dV,\0Iw̎M#+0æFa/\0:x\r,HԜhQB|\$qKup\n8T)AJo I\"!#xډM”de@i8r+Mf. .Nh'\n@@zTBk*D\n 2BߤEb\$́A,U̞lUIӨ!4@j2,\rf#:X%3oΠ\04b";break;case"zh":$f="A*s\\r|% :\$\nr.2r/dȻ[8 S8r!T \\sI4brЀJs!J:2rST⢔\nh5\rSR9Q*-Y(eȗB+΅FZI9PYj^FX9P2s&֒E~yc~#}Krsk|i-r̀)c(Cݦ#*J!AR\nkP/WtZU9WJQ3Wq*'Os%dbʯC9Mnr;NP)Z'1T*J;)nY59XS#%Ans%O-30*\\OĹlt0]6r^-8\0J|r\nÑ)VYm*QBr.IlY,T^C@<# 4(tdlR>\\.D/r/i&\r3:xY\rBPp9 x79cv2:e1AANIP|GI\0DYS1,ZZL9H]6\$O]&J6\r&דzi,Xur=ZS8tIdKLWeE9TrPDOZ}Dg)\0^[Tnw D%8sN]\"^9zW%s]d̲:Da&I\\VE]2Ą!dD#ECGmL)\"fnI57NSMy'1Q14\\ oSGAM7l/61+->]4sOtOdIJ0DW*?hDݗi6D:Ijst_\r-O:>aHXdV.LC<C\$@(lC\$Hֲ6WKKD1!>:@lCt:ȑ( X\"U\nV*`]~ o\r:TA3_:X'PQ'E  l0/5]8i૑TOQ4N *U*VbúV!]+|(x9́h)\$p\"Jd+r \n9D`CbBT\$\$1\$Ws 1\n*ݐ 8\$F) \\SI\nr# iR*qS`(LdTCb0Dԛ<9pHse8G3@Kt0r,\\@<%s\nxq +Ht!1-ZM4\"S\nAqI9f+?E\"v5-)M:CW UJQ\nd܂8ީI.tWʓR9Y(>\\(&,|R\nzҰ(\"EƻX# tV}is \"M2P(B( m0^Ir`d 2w2`ؤǕO+\n 8PT@--\"KjHK*/Әe&Zqe0& EEw`qvtq\rts̤Gts&|9@bnv JYDQ NQЄ23BA:ΉHs9AiMaB9sWtaߐ\$W:B{㤿YnhM1@!թWchģHZL Gws/&R&CIa'e۱!~/Pz':U͘p6ObC 1DcthOXx E/e*\0Ju@XYM0f=n#Q6/\r!% 姢Ԭ:\\o_&!\nH )8kAV1tRUf_A\\2-g z%P <[QRk>bץOAiG!.\$/%쾶Q 9B^6 3W&QetKq,^hE^v?H&)Ds'QBR2Yy΃5{őgDtDt\\KK+-(_ /)ieg\r\"ƹSD\"H|oM]fzwb\\cG y{?h ;g#\0gwSjsf{I\\>z..RSJZ 咒Xa-,e.\n=e%E @RoHȔuM?gPɤ-6d̜!U-5<NqNCHk Ӟo_~R/\0n`-e F~NN*ȴz/E*0B/iJdُЦL\0?Ff'<A6|/bo& K gC\n T&&0p ΐ- o aHjLH^\rd 0˰\0P\rPy\rGu\0HD0n*X` Dj (-!t׃BbbH\"B}0DIa`zխ^~\$\0y\07VIh>B|Bm,\nZl*x\"6#eۥJL.A76͌ܜ/ed6Ad3Gq RŪ‡䤦\$]n/RCIm\$Pdx*lq%j\\OX4igL!nr\$SĹ.N']#dpDMD\\ \r\$2\\Έ]G\"^BbMr3#c@@ +-2ֻ2kr (R#|rL";break;case"zh-tw":$f="^\\r|% :\$\ns.eUȸE9PK72(Ph)ʅ@ :i %cJe R)ܫ{ Nd TP\\Õ8 Cf4aS@/%NNd%гCɗBQ+B_MK,\$uowfT9WKʏW2mizX:P *_/g*eSLKۈι^9H\r7Zz>0)ȿN\nr!U=R\n^JTO](I]EJ4\$yhr2^?[eCr^[#k֑g1')T'9jB)#,%')n䪪hVd=Oa@IBOs¦KJ12A\$&8mQdlYr%\0JԀD& Hi/\rUw.x].2ft(t KS?2]*X!rB]# 4(te k\0Tr{4Ǒ42zF@4C(C@:t 49Ox3(9JP|t)!B1/B|GI\\CD=z%yRQ s-~W?JQ]\$:A(\\{1(MZS\0<(P9*iXBJy<EAvtCdY+{GePmj{_^6Cvs|sGD1T\\yjzP2@tS%\0N%+ 6kA~)\"`As\$6f\rbeUxN*`X'@]0WVTu-jvGϥ.r9tv?ebݿQ<^GXZx.|1ġDa?)^׹P=DD#i`92AML4rD3-Jў( sDF\n\0M+qЂK%Bt/`5r\ndN\" {Y\"q'@2r@9\n+2xD։rX+\rbul0Z Ij-`^xn !40`b_:\\su@ H`^ znr\$f٨4P:*QN X b,eYh5)\r8Jư|\n#W 2 \0Kh\"PED*\rDR!*fXE hiHBl9:O\0X09D21J\$:\n#1q܈L(3\"/U)/&\$\n6)P%9(90B*@!Y0v !GSZ&,L0!2`@˜R:ֵJĩQxj~XWlD &Țd9pH\rY'(Ah%ٜ()s 893eo ^ÕNs H4DiHFX(&htm#\"VVbZht50T\n 2P ȝOt>S% 4Z@(JU 8PT*\0B`EL Ҥ\$h&dGop]8FƘ9DRvEE/O\0#4Z:dޛ H@,SxȕA\nڐy\"\$0\"\0]a O='W\0aB,UcEnQdA4*wpLBVGfa,SES 8<2Ň8M=01tзHs F.sӺ\\T딟1!tL>Ԋ Ąjc6tض; QJ\0OC K'N`8}EQIfEmxKVop>\"|_zDbN ŸMt\rPDg=ɸ`5ۘT['@[n\\l\n BHec_Q'&: V#,㧎]N4uPV\"\\`\\#H L>sH0V'2cbArIw.EfӘ54f\$9\\{Xp;<0lX|Od_ t\"\rQZƍ%uަt1Ǐ%ŧ%6~E#fhƒ]㯛}w7y\\|w#ރ9;O[gDEA#{X]x8lva˼w[~\nK&\0N'0э!C!P5\"vT%n3hPl%nnLb:6\\\r7>\"lV_⨙ciW,H4,D/Z&a\nCg-C\n,\nk p l\rptk M}\rmr0PAP^,\nu:!梙b '7bpf\r&*a!m}Q(tij/T~*p]eB7Jx\$pNf< `B1-1!\0w\nt1n̍Cq1fqf1LAQm<Oqzbԭ?'emMm9@)I1Fq10pA, \r\0 hl~4gN݄0\rƍ+2D<AH_AF0b\$0#k#!\\\$\rD\"\0}9rr:#ق~5ƌJC(\$N\$8P\nZ@w*)ƧL&#~^,%A8mVz\r3)Jt_r좬Ό⚭ /8\"uRz,1ZvnBG#\$/Za`_OV0- OyAk&%Mv/ox0~p'62~.p)*LX \r|.\0 }48amti.12\$Bi^y3S8]! &t~HOB1L";break;}$wi=array();foreach(explode("\n",lzw_decompress($f))as$X)$wi[]=(strpos($X,"\t")?explode("\t",$X):$X);return$wi;}if(!$wi){$wi=get_translations($ca);$_SESSION["translations"]=$wi;}if(extension_loaded('pdo')){class
Min_PDO{var$_result,$server_info,$affected_rows,$errno,$error,$pdo;function
__construct(){global$b;$hg=array_search("SQL",$b->operators);if($hg!==false)unset($b->operators[$hg]);}function
dsn($pc,$V,$F,$_f=array()){$_f[PDO::ATTR_ERRMODE]=PDO::ERRMODE_SILENT;$_f[PDO::ATTR_STATEMENT_CLASS]=array('Min_PDOStatement');try{$this->pdo=new
PDO($pc,$V,$F,$_f);}catch(Exception$Hc){auth_error(h($Hc->getMessage()));}$this->server_info=@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);}function
quote($P){return$this->pdo->quote($P);}function
query($G,$Ei=false){$H=$this->pdo->query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(21);return
false;}$this->store_result($H);return$H;}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result($H=null){if(!$H){$H=$this->_result;if(!$H)return
false;}if($H->columnCount()){$H->num_rows=$H->rowCount();return$H;}$this->affected_rows=$H->rowCount();return
true;}function
next_result(){if(!$this->_result)return
false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
result($G,$o=0){$H=$this->query($G);if(!$H)return
false;$J=$H->fetch();return$J[$o];}}class
Min_PDOStatement
extends
PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch(PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch(PDO::FETCH_NUM);}function
fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=(in_array("blob",(array)$J->flags)?63:0);return$J;}}}$kc=array();function
add_driver($u,$D){global$kc;$kc[$u]=$D;}class
Min_SQL{var$_conn;function
__construct($g){$this->_conn=$g;}function
select($Q,$L,$Z,$sd,$Bf=array(),$_=1,$E=0,$pg=false){global$b,$y;$ce=(count($sd)<count($L));$G=$b->selectQueryBuild($L,$Z,$sd,$Bf,$_,$E);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$_!=""&&$sd&&$ce&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($sd&&$ce?"\nGROUP BY ".implode(", ",$sd):"").($Bf?"\nORDER BY ".implode(", ",$Bf):""),($_!=""?+$_:null),($E?$_*$E:0),"\n");$Fh=microtime(true);$I=$this->_conn->query($G);if($pg)echo$b->selectQuery($G,$Fh,!$I);return$I;}function
delete($Q,$zg,$_=0){$G="FROM ".table($Q);return
queries("DELETE".($_?limit1($Q,$G,$zg):" $G$zg"));}function
update($Q,$N,$zg,$_=0,$kh="\n"){$Wi=array();foreach($N
as$z=>$X)$Wi[]="$z = $X";$G=table($Q)." SET$kh".implode(",$kh",$Wi);return
queries("UPDATE".($_?limit1($Q,$G,$zg,$kh):" $G$zg"));}function
insert($Q,$N){return
queries("INSERT INTO ".table($Q).($N?" (".implode(", ",array_keys($N)).")\nVALUES (".implode(", ",$N).")":" DEFAULT VALUES"));}function
insertUpdate($Q,$K,$ng){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($G,$hi){}function
convertSearch($v,$X,$o){return$v;}function
value($X,$o){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$o):(is_resource($X)?stream_get_contents($X):$X));}function
quoteBinary($ah){return
q($ah);}function
warnings(){return'';}function
tableHelp($D){}}$kc["sqlite"]="SQLite 3";$kc["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class
Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
__construct($q){$this->_link=new
SQLite3($q);$Zi=$this->_link->version();$this->server_info=$Zi["versionString"];}function
query($G){$H=@$this->_link->query($G);$this->error="";if(!$H){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
false;}elseif($H->numColumns())return
new
Min_Result($H);$this->affected_rows=$this->_link->changes();return
true;}function
quote($P){return(is_utf8($P)?"'".$this->_link->escapeString($P)."'":"x'".reset(unpack('H*',$P))."'");}function
store_result(){return$this->_result;}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->_result->fetchArray();return$J[$o];}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($H){$this->_result=$H;}function
fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$d=$this->_offset++;$T=$this->_result->columnType($d);return(object)array("name"=>$this->_result->columnName($d),"type"=>$T,"charsetnr"=>($T==SQLITE3_BLOB?63:0),);}function
__desctruct(){return$this->_result->finalize();}}}else{class
Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
__construct($q){$this->server_info=sqlite_libversion();$this->_link=new
SQLiteDatabase($q);}function
query($G,$Ei=false){$Se=($Ei?"unbufferedQuery":"query");$H=@$this->_link->$Se($G,SQLITE_BOTH,$n);$this->error="";if(!$H){$this->error=$n;return
false;}elseif($H===true){$this->affected_rows=$this->changes();return
true;}return
new
Min_Result($H);}function
quote($P){return"'".sqlite_escape_string($P)."'";}function
store_result(){return$this->_result;}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->_result->fetch();return$J[$o];}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($H){$this->_result=$H;if(method_exists($H,'numRows'))$this->num_rows=$H->numRows();}function
fetch_assoc(){$J=$this->_result->fetch(SQLITE_ASSOC);if(!$J)return
false;$I=array();foreach($J
as$z=>$X)$I[idf_unescape($z)]=$X;return$I;}function
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
fetch_field(){$D=$this->_result->fieldName($this->_offset++);$cg='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($cg\\.)?$cg\$~",$D,$C)){$Q=($C[3]!=""?$C[3]:idf_unescape($C[2]));$D=($C[5]!=""?$C[5]:idf_unescape($C[4]));}return(object)array("name"=>$D,"orgname"=>$D,"orgtable"=>$Q,);}}}}elseif(extension_loaded("pdo_sqlite")){class
Min_SQLite
extends
Min_PDO{var$extension="PDO_SQLite";function
__construct($q){$this->dsn(DRIVER.":$q","","");}}}if(class_exists("Min_SQLite")){class
Min_DB
extends
Min_SQLite{function
__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
select_db($q){if(is_readable($q)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$q)?$q:dirname($_SERVER["SCRIPT_FILENAME"])."/$q")." AS a")){parent::__construct($q);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return
true;}return
false;}function
multi_query($G){return$this->_result=$this->query($G);}function
next_result(){return
false;}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$ng){$Wi=array();foreach($K
as$N)$Wi[]="(".implode(", ",$N).")";return
queries("REPLACE INTO ".table($Q)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$Wi));}function
tableHelp($D){if($D=="sqlite_sequence")return"fileformat2.html#seqtab";if($D=="sqlite_master")return"fileformat2.html#$D";}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
connect(){global$b;list(,,$F)=$b->credentials();if($F!="")return
lang(22);return
new
Min_DB;}function
get_databases(){return
array();}function
limit($G,$Z,$_,$kf=0,$kh=" "){return" $G$Z".($_!==null?$kh."LIMIT $_".($kf?" OFFSET $kf":""):"");}function
limit1($Q,$G,$Z,$kh="\n"){global$g;return(preg_match('~^INTO~',$G)||$g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($G,$Z,1,0,$kh):" $G WHERE rowid = (SELECT rowid FROM ".table($Q).$Z.$kh."LIMIT 1)");}function
db_collation($l,$nb){global$g;return$g->result("PRAGMA encoding");}function
engines(){return
array();}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
count_tables($k){return
array();}function
table_status($D=""){global$g;$I=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($D!=""?"AND name = ".q($D):"ORDER BY name"))as$J){$J["Rows"]=$g->result("SELECT COUNT(*) FROM ".idf_escape($J["Name"]));$I[$J["Name"]]=$J;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$J)$I[$J["name"]]["Auto_increment"]=$J["seq"];return($D!=""?$I[$D]:$I);}function
is_view($R){return$R["Engine"]=="view";}function
fk_support($R){global$g;return!$g->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($Q){global$g;$I=array();$ng="";foreach(get_rows("PRAGMA table_info(".table($Q).")")as$J){$D=$J["name"];$T=strtolower($J["type"]);$Yb=$J["dflt_value"];$I[$D]=array("field"=>$D,"type"=>(preg_match('~int~i',$T)?"integer":(preg_match('~char|clob|text~i',$T)?"text":(preg_match('~blob~i',$T)?"blob":(preg_match('~real|floa|doub~i',$T)?"real":"numeric")))),"full_type"=>$T,"default"=>(preg_match("~'(.*)'~",$Yb,$C)?str_replace("''","'",$C[1]):($Yb=="NULL"?null:$Yb)),"null"=>!$J["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$J["pk"],);if($J["pk"]){if($ng!="")$I[$ng]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$T))$I[$D]["auto_increment"]=true;$ng=$D;}}$Ah=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($Q));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Ah,$Fe,PREG_SET_ORDER);foreach($Fe
as$C){$D=str_replace('""','"',preg_replace('~^"|"$~','',$C[1]));if($I[$D])$I[$D]["collation"]=trim($C[3],"'");}return$I;}function
indexes($Q,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Ah=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($Q));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Ah,$C)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$C[1],$Fe,PREG_SET_ORDER);foreach($Fe
as$C){$I[""]["columns"][]=idf_unescape($C[2]).$C[4];$I[""]["descs"][]=(preg_match('~DESC~i',$C[5])?'1':null);}}if(!$I){foreach(fields($Q)as$D=>$o){if($o["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($D),"lengths"=>array(),"descs"=>array(null));}}$Dh=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($Q),$h);foreach(get_rows("PRAGMA index_list(".table($Q).")",$h)as$J){$D=$J["name"];$w=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($D).")",$h)as$Zg){$w["columns"][]=$Zg["name"];$w["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($D).' ON '.idf_escape($Q),'~').' \((.*)\)$~i',$Dh[$D],$Jg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Jg[2],$Fe);foreach($Fe[2]as$z=>$X){if($X)$w["descs"][$z]='1';}}if(!$I[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$I[""]["columns"]||$w["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$D))$I[$D]=$w;}return$I;}function
foreign_keys($Q){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($Q).")")as$J){$r=&$I[$J["id"]];if(!$r)$r=$J;$r["source"][]=$J["from"];$r["target"][]=$J["to"];}return$I;}function
view($D){global$g;return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($D))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($l){return
false;}function
error(){global$g;return
h($g->error);}function
check_sqlite_name($D){global$g;$Qc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Qc)\$~",$D)){$g->error=lang(23,str_replace("|",", ",$Qc));return
false;}return
true;}function
create_database($l,$mb){global$g;if(file_exists($l)){$g->error=lang(24);return
false;}if(!check_sqlite_name($l))return
false;try{$A=new
Min_SQLite($l);}catch(Exception$Hc){$g->error=$Hc->getMessage();return
false;}$A->query('PRAGMA encoding = "UTF-8"');$A->query('CREATE TABLE adminer (i)');$A->query('DROP TABLE adminer');return
true;}function
drop_databases($k){global$g;$g->__construct(":memory:");foreach($k
as$l){if(!@unlink($l)){$g->error=lang(24);return
false;}}return
true;}function
rename_database($D,$mb){global$g;if(!check_sqlite_name($D))return
false;$g->__construct(":memory:");$g->error=lang(24);return@rename(DB,$D);}function
auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){global$g;$Pi=($Q==""||$hd);foreach($p
as$o){if($o[0]!=""||!$o[1]||$o[2]){$Pi=true;break;}}$c=array();$Kf=array();foreach($p
as$o){if($o[1]){$c[]=($Pi?$o[1]:"ADD ".implode($o[1]));if($o[0]!="")$Kf[$o[0]]=$o[1][0];}}if(!$Pi){foreach($c
as$X){if(!queries("ALTER TABLE ".table($Q)." $X"))return
false;}if($Q!=$D&&!queries("ALTER TABLE ".table($Q)." RENAME TO ".table($D)))return
false;}elseif(!recreate_table($Q,$D,$c,$Kf,$hd,$La))return
false;if($La){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $La WHERE name = ".q($D));if(!$g->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($D).", $La)");queries("COMMIT");}return
true;}function
recreate_table($Q,$D,$p,$Kf,$hd,$La,$x=array()){global$g;if($Q!=""){if(!$p){foreach(fields($Q)as$z=>$o){if($x)$o["auto_increment"]=0;$p[]=process_field($o,$o);$Kf[$z]=idf_escape($z);}}$og=false;foreach($p
as$o){if($o[6])$og=true;}$nc=array();foreach($x
as$z=>$X){if($X[2]=="DROP"){$nc[$X[1]]=true;unset($x[$z]);}}foreach(indexes($Q)as$ie=>$w){$e=array();foreach($w["columns"]as$z=>$d){if(!$Kf[$d])continue
2;$e[]=$Kf[$d].($w["descs"][$z]?" DESC":"");}if(!$nc[$ie]){if($w["type"]!="PRIMARY"||!$og)$x[]=array($w["type"],$ie,$e);}}foreach($x
as$z=>$X){if($X[0]=="PRIMARY"){unset($x[$z]);$hd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($Q)as$ie=>$r){foreach($r["source"]as$z=>$d){if(!$Kf[$d])continue
2;$r["source"][$z]=idf_unescape($Kf[$d]);}if(!isset($hd[" $ie"]))$hd[]=" ".format_foreign_key($r);}queries("BEGIN");}foreach($p
as$z=>$o)$p[$z]=" ".implode($o);$p=array_merge($p,array_filter($hd));$bi=($Q==$D?"adminer_$D":$D);if(!queries("CREATE TABLE ".table($bi)." (\n".implode(",\n",$p)."\n)"))return
false;if($Q!=""){if($Kf&&!queries("INSERT INTO ".table($bi)." (".implode(", ",$Kf).") SELECT ".implode(", ",array_map('idf_escape',array_keys($Kf)))." FROM ".table($Q)))return
false;$Bi=array();foreach(triggers($Q)as$_i=>$ii){$zi=trigger($_i);$Bi[]="CREATE TRIGGER ".idf_escape($_i)." ".implode(" ",$ii)." ON ".table($D)."\n$zi[Statement]";}$La=$La?0:$g->result("SELECT seq FROM sqlite_sequence WHERE name = ".q($Q));if(!queries("DROP TABLE ".table($Q))||($Q==$D&&!queries("ALTER TABLE ".table($bi)." RENAME TO ".table($D)))||!alter_indexes($D,$x))return
false;if($La)queries("UPDATE sqlite_sequence SET seq = $La WHERE name = ".q($D));foreach($Bi
as$zi){if(!queries($zi))return
false;}queries("COMMIT");}return
true;}function
index_sql($Q,$T,$D,$e){return"CREATE $T ".($T!="INDEX"?"INDEX ":"").idf_escape($D!=""?$D:uniqid($Q."_"))." ON ".table($Q)." $e";}function
alter_indexes($Q,$c){foreach($c
as$ng){if($ng[0]=="PRIMARY")return
recreate_table($Q,$Q,array(),array(),array(),0,$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($Q,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
truncate_tables($S){return
apply_queries("DELETE FROM",$S);}function
drop_views($bj){return
apply_queries("DROP VIEW",$bj);}function
drop_tables($S){return
apply_queries("DROP TABLE",$S);}function
move_tables($S,$bj,$Zh){return
false;}function
trigger($D){global$g;if($D=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$v='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Ai=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$v\\s*(".implode("|",$Ai["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($v))?\\s+ON\\s*$v\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$g->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($D)),$C);$jf=$C[3];return
array("Timing"=>strtoupper($C[1]),"Event"=>strtoupper($C[2]).($jf?" OF":""),"Of"=>idf_unescape($jf),"Trigger"=>$D,"Statement"=>$C[4],);}function
triggers($Q){$I=array();$Ai=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($Q))as$J){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$Ai["Timing"]).')\s*(.*?)\s+ON\b~i',$J["sql"],$C);$I[$J["name"]]=array($C[1],$C[2]);}return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function
explain($g,$G){return$g->query("EXPLAIN QUERY PLAN $G");}function
found_rows($R,$Z){}function
types(){return
array();}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($dh){return
true;}function
create_sql($Q,$La,$Kh){global$g;$I=$g->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($Q));foreach(indexes($Q)as$D=>$w){if($D=='')continue;$I.=";\n\n".index_sql($Q,$w['type'],$D,"(".implode(", ",array_map('idf_escape',$w['columns'])).")");}return$I;}function
truncate_sql($Q){return"DELETE FROM ".table($Q);}function
use_sql($j){}function
trigger_sql($Q){return
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($Q)));}function
show_variables(){global$g;$I=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$z)$I[$z]=$g->result("PRAGMA $z");return$I;}function
show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$zf){list($z,$X)=explode("=",$zf,2);$I[$z]=$X;}return$I;}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Vc){return
preg_match('~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Vc);}function
driver_config(){$U=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);return
array('possible_drivers'=>array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite"),'jush'=>"sqlite",'types'=>$U,'structured_types'=>array_keys($U),'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL"),'functions'=>array("hex","length","lower","round","unixepoch","upper"),'grouping'=>array("avg","count","count distinct","group_concat","max","min","sum"),'edit_functions'=>array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",)),);}}$kc["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){define("DRIVER","pgsql");if(extension_loaded("pgsql")){class
Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error,$timeout;function
_error($Cc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
connect($M,$V,$F){global$b;$l=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($M,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$l!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Zi=pg_version($this->_link);$this->server_info=$Zi["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
quote($P){return"'".pg_escape_string($this->_link,$P)."'";}function
value($X,$o){return($o["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
quoteBinary($P){return"'".pg_escape_bytea($this->_link,$P)."'";}function
select_db($j){global$b;if($j==$b->database())return$this->_database;$I=@pg_connect("$this->_string dbname='".addcslashes($j,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->_link=$I;return$I;}function
close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function
query($G,$Ei=false){$H=@pg_query($this->_link,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->_link);$I=false;}elseif(!pg_num_fields($H)){$this->affected_rows=pg_affected_rows($H);$I=true;}else$I=new
Min_Result($H);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
false;return
pg_fetch_result($H->_result,0,$o);}function
warnings(){return
h(pg_last_notice($this->_link));}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($H){$this->_result=$H;$this->num_rows=pg_num_rows($H);}function
fetch_assoc(){return
pg_fetch_assoc($this->_result);}function
fetch_row(){return
pg_fetch_row($this->_result);}function
fetch_field(){$d=$this->_offset++;$I=new
stdClass;if(function_exists('pg_field_table'))$I->orgtable=pg_field_table($this->_result,$d);$I->name=pg_field_name($this->_result,$d);$I->orgname=$I->name;$I->type=pg_field_type($this->_result,$d);$I->charsetnr=($I->type=="bytea"?63:0);return$I;}function
__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
Min_DB
extends
Min_PDO{var$extension="PDO_PgSQL",$timeout;function
connect($M,$V,$F){global$b;$l=$b->database();$this->dsn("pgsql:host='".str_replace(":","' port='",addcslashes($M,"'\\"))."' client_encoding=utf8 dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",$V,$F);return
true;}function
select_db($j){global$b;return($b->database()==$j);}function
quoteBinary($ah){return
q($ah);}function
query($G,$Ei=false){$I=parent::query($G,$Ei);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}function
warnings(){return'';}function
close(){}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$ng){global$g;foreach($K
as$N){$Li=array();$Z=array();foreach($N
as$z=>$X){$Li[]="$z = $X";if(isset($ng[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Li)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")")))return
false;}return
true;}function
slowQuery($G,$hi){$this->_conn->query("SET statement_timeout = ".(1000*$hi));$this->_conn->timeout=1000*$hi;return$G;}function
convertSearch($v,$X,$o){return(preg_match('~char|text'.(!preg_match('~LIKE~',$X["op"])?'|date|time(stamp)?|boolean|uuid|'.number_type():'').'~',$o["type"])?$v:"CAST($v AS text)");}function
quoteBinary($ah){return$this->_conn->quoteBinary($ah);}function
warnings(){return$this->_conn->warnings();}function
tableHelp($D){$ze=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$A=$ze[$_GET["ns"]];if($A)return"$A-".str_replace("_","-",$D).".html";}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
connect(){global$b,$U,$Jh;$g=new
Min_DB;$Mb=$b->credentials();if($g->connect($Mb[0],$Mb[1],$Mb[2])){if(min_version(9,0,$g)){$g->query("SET application_name = 'Adminer'");if(min_version(9.2,0,$g)){$Jh[lang(25)][]="json";$U["json"]=4294967295;if(min_version(9.4,0,$g)){$Jh[lang(25)][]="jsonb";$U["jsonb"]=4294967295;}}}return$g;}return$g->error;}function
get_databases(){return
get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");}function
limit($G,$Z,$_,$kf=0,$kh=" "){return" $G$Z".($_!==null?$kh."LIMIT $_".($kf?" OFFSET $kf":""):"");}function
limit1($Q,$G,$Z,$kh="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$kh):" $G".(is_view(table_status1($Q))?$Z:" WHERE ctid = (SELECT ctid FROM ".table($Q).$Z.$kh."LIMIT 1)"));}function
db_collation($l,$nb){global$g;return$g->result("SELECT datcollate FROM pg_database WHERE datname = ".q($l));}function
engines(){return
array();}function
logged_user(){global$g;return$g->result("SELECT user");}function
tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support('materializedview'))$G.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$G.="
ORDER BY 1";return
get_key_vals($G);}function
count_tables($k){return
array();}function
table_status($D=""){$I=array();foreach(get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", ".(min_version(12)?"''":"CASE WHEN c.relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\", c.reltuples as \"Rows\", n.nspname
FROM pg_class c
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
".($D!=""?"AND relname = ".q($D):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return($D!=""?$I[$D]:$I);}function
is_view($R){return
in_array($R["Engine"],array("view","materialized view"));}function
fk_support($R){return
true;}function
fields($Q){$I=array();$Ca=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment".(min_version(10)?", a.attidentity":"")."
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
JOIN pg_attribute a ON c.oid = a.attrelid
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
WHERE c.relname = ".q($Q)."
AND n.nspname = current_schema()
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$J){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$J["full_type"],$C);list(,$T,$we,$J["length"],$xa,$Fa)=$C;$J["length"].=$Fa;$cb=$T.$xa;if(isset($Ca[$cb])){$J["type"]=$Ca[$cb];$J["full_type"]=$J["type"].$we.$Fa;}else{$J["type"]=$T;$J["full_type"]=$J["type"].$we.$xa.$Fa;}if(in_array($J['attidentity'],array('a','d')))$J['default']='GENERATED '.($J['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$J["null"]=!$J["attnotnull"];$J["auto_increment"]=$J['attidentity']||preg_match('~^nextval\(~i',$J["default"]);$J["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~(.+)::[^,)]+(.*)~',$J["default"],$C))$J["default"]=($C[1]=="NULL"?null:idf_unescape($C[1]).$C[2]);$I[$J["field"]]=$J;}return$I;}function
indexes($Q,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Sh=$h->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($Q));$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Sh AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $Sh AND ci.oid = i.indexrelid",$h)as$J){$Kg=$J["relname"];$I[$Kg]["type"]=($J["indispartial"]?"INDEX":($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX")));$I[$Kg]["columns"]=array();foreach(explode(" ",$J["indkey"])as$Rd)$I[$Kg]["columns"][]=$e[$Rd];$I[$Kg]["descs"]=array();foreach(explode(" ",$J["indoption"])as$Sd)$I[$Kg]["descs"][]=($Sd&1?'1':null);$I[$Kg]["lengths"]=array();}return$I;}function
foreign_keys($Q){global$sf;$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($Q)." AND pn.nspname = current_schema())
AND contype = 'f'::char
ORDER BY conkey, conname")as$J){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$C)){$J['source']=array_map('idf_unescape',array_map('trim',explode(',',$C[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$C[2],$Ee)){$J['ns']=idf_unescape($Ee[2]);$J['table']=idf_unescape($Ee[4]);}$J['target']=array_map('idf_unescape',array_map('trim',explode(',',$C[3])));$J['on_delete']=(preg_match("~ON DELETE ($sf)~",$C[4],$Ee)?$Ee[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE ($sf)~",$C[4],$Ee)?$Ee[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function
constraints($Q){global$sf;$I=array();foreach(get_rows("SELECT conname, consrc
FROM pg_catalog.pg_constraint
INNER JOIN pg_catalog.pg_namespace ON pg_constraint.connamespace = pg_namespace.oid
INNER JOIN pg_catalog.pg_class ON pg_constraint.conrelid = pg_class.oid AND pg_constraint.connamespace = pg_class.relnamespace
WHERE pg_constraint.contype = 'c'
AND conrelid != 0 -- handle only CONSTRAINTs here, not TYPES
AND nspname = current_schema()
AND relname = ".q($Q)."
ORDER BY connamespace, conname")as$J)$I[$J['conname']]=$J['consrc'];return$I;}function
view($D){global$g;return
array("select"=>trim($g->result("SELECT pg_get_viewdef(".$g->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($D)).")")));}function
collations(){return
array();}function
information_schema($l){return($l=="information_schema");}function
error(){global$g;$I=h($g->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$C))$I=$C[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($C[3]).'})(.*)~','\1<b>\2</b>',$C[2]).$C[4];return
nl_br($I);}function
create_database($l,$mb){return
queries("CREATE DATABASE ".idf_escape($l).($mb?" ENCODING ".idf_escape($mb):""));}function
drop_databases($k){global$g;$g->close();return
apply_queries("DROP DATABASE",$k,'idf_escape');}function
rename_database($D,$mb){return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($D));}function
auto_increment(){return"";}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){$c=array();$yg=array();if($Q!=""&&$Q!=$D)$yg[]="ALTER TABLE ".table($Q)." RENAME TO ".table($D);foreach($p
as$o){$d=idf_escape($o[0]);$X=$o[1];if(!$X)$c[]="DROP $d";else{$Vi=$X[5];unset($X[5]);if($o[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$c[]=($Q!=""?"ADD ":" ").implode($X);if(isset($X[6]))$c[]=($Q!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$yg[]="ALTER TABLE ".table($D)." RENAME $d TO $X[0]";$c[]="ALTER $d TYPE$X[1]";if(!$X[6]){$c[]="ALTER $d ".($X[3]?"SET$X[3]":"DROP DEFAULT");$c[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($o[0]!=""||$Vi!="")$yg[]="COMMENT ON COLUMN ".table($D).".$X[0] IS ".($Vi!=""?substr($Vi,9):"''");}}$c=array_merge($c,$hd);if($Q=="")array_unshift($yg,"CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($yg,"ALTER TABLE ".table($Q)."\n".implode(",\n",$c));if($Q!=""||$tb!="")$yg[]="COMMENT ON TABLE ".table($D)." IS ".q($tb);if($La!=""){}foreach($yg
as$G){if(!queries($G))return
false;}return
true;}function
alter_indexes($Q,$c){$i=array();$lc=array();$yg=array();foreach($c
as$X){if($X[0]!="INDEX")$i[]=($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")$lc[]=idf_escape($X[1]);else$yg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($i)array_unshift($yg,"ALTER TABLE ".table($Q).implode(",",$i));if($lc)array_unshift($yg,"DROP INDEX ".implode(", ",$lc));foreach($yg
as$G){if(!queries($G))return
false;}return
true;}function
truncate_tables($S){return
queries("TRUNCATE ".implode(", ",array_map('table',$S)));return
true;}function
drop_views($bj){return
drop_tables($bj);}function
drop_tables($S){foreach($S
as$Q){$O=table_status($Q);if(!queries("DROP ".strtoupper($O["Engine"])." ".table($Q)))return
false;}return
true;}function
move_tables($S,$bj,$Zh){foreach(array_merge($S,$bj)as$Q){$O=table_status($Q);if(!queries("ALTER ".strtoupper($O["Engine"])." ".table($Q)." SET SCHEMA ".idf_escape($Zh)))return
false;}return
true;}function
trigger($D,$Q){if($D=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q)." AND trigger_name = ".q($D);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$J)$e[]=$J["event_object_column"];$I=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers '."$Z ORDER BY event_manipulation DESC")as$J){if($e&&$J["Event"]=="UPDATE")$J["Event"].=" OF";$J["Of"]=implode(", ",$e);if($I)$J["Event"].=" OR $I[Event]";$I=$J;}return$I;}function
triggers($Q){$I=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q))as$J){$zi=trigger($J["trigger_name"],$Q);$I[$zi["Trigger"]]=array($zi["Timing"],$zi["Event"]);}return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
routine($D,$T){$K=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
FROM information_schema.routines
WHERE routine_schema = current_schema() AND specific_name = '.q($D));$I=$K[0];$I["returns"]=array("type"=>$I["type_udt_name"]);$I["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = '.q($D).'
ORDER BY ordinal_position');return$I;}function
routines(){return
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
FROM information_schema.routines
WHERE routine_schema = current_schema()
ORDER BY SPECIFIC_NAME');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($D,$J){$I=array();foreach($J["fields"]as$o)$I[]=$o["type"];return
idf_escape($D)."(".implode(", ",$I).")";}function
last_id(){return
0;}function
explain($g,$G){return$g->query("EXPLAIN $G");}function
found_rows($R,$Z){global$g;if(preg_match("~ rows=([0-9]+)~",$g->result("EXPLAIN SELECT * FROM ".idf_escape($R["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Jg))return$Jg[1];return
false;}function
types(){return
get_vals("SELECT typname
FROM pg_type
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
AND typtype IN ('b','d','e')
AND typelem = 0");}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){global$g;return$g->result("SELECT current_schema()");}function
set_schema($ch,$h=null){global$g,$U,$Jh;if(!$h)$h=$g;$I=$h->query("SET search_path TO ".idf_escape($ch));foreach(types()as$T){if(!isset($U[$T])){$U[$T]=0;$Jh[lang(26)][]=$T;}}return$I;}function
foreign_keys_sql($Q){$I="";$O=table_status($Q);$ed=foreign_keys($Q);ksort($ed);foreach($ed
as$dd=>$cd)$I.="ALTER TABLE ONLY ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." ADD CONSTRAINT ".idf_escape($dd)." $cd[definition] ".($cd['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($I?"$I\n":$I);}function
create_sql($Q,$La,$Kh){global$g;$I='';$Sg=array();$mh=array();$O=table_status($Q);if(is_view($O)){$aj=view($Q);return
rtrim("CREATE VIEW ".idf_escape($Q)." AS $aj[select]",";");}$p=fields($Q);$x=indexes($Q);ksort($x);$Cb=constraints($Q);if(!$O||empty($p))return
false;$I="CREATE TABLE ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." (\n ";foreach($p
as$Xc=>$o){$Tf=idf_escape($o['field']).' '.$o['full_type'].default_value($o).($o['attnotnull']?" NOT NULL":"");$Sg[]=$Tf;if(preg_match('~nextval\(\'([^\']+)\'\)~',$o['default'],$Fe)){$lh=$Fe[1];$_h=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($lh):"SELECT * FROM $lh"));$mh[]=($Kh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $lh;\n":"")."CREATE SEQUENCE $lh INCREMENT $_h[increment_by] MINVALUE $_h[min_value] MAXVALUE $_h[max_value]".($La&&$_h['last_value']?" START $_h[last_value]":"")." CACHE $_h[cache_value];";}}if(!empty($mh))$I=implode("\n\n",$mh)."\n\n$I";foreach($x
as$Md=>$w){switch($w['type']){case'UNIQUE':$Sg[]="CONSTRAINT ".idf_escape($Md)." UNIQUE (".implode(', ',array_map('idf_escape',$w['columns'])).")";break;case'PRIMARY':$Sg[]="CONSTRAINT ".idf_escape($Md)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$w['columns'])).")";break;}}foreach($Cb
as$zb=>$Ab)$Sg[]="CONSTRAINT ".idf_escape($zb)." CHECK $Ab";$I.=implode(",\n ",$Sg)."\n) WITH (oids = ".($O['Oid']?'true':'false').");";foreach($x
as$Md=>$w){if($w['type']=='INDEX'){$e=array();foreach($w['columns']as$z=>$X)$e[]=idf_escape($X).($w['descs'][$z]?" DESC":"");$I.="\n\nCREATE INDEX ".idf_escape($Md)." ON ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." USING btree (".implode(', ',$e).");";}}if($O['Comment'])$I.="\n\nCOMMENT ON TABLE ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." IS ".q($O['Comment']).";";foreach($p
as$Xc=>$o){if($o['comment'])$I.="\n\nCOMMENT ON COLUMN ".idf_escape($O['nspname']).".".idf_escape($O['Name']).".".idf_escape($Xc)." IS ".q($o['comment']).";";}return
rtrim($I,';');}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
trigger_sql($Q){$O=table_status($Q);$I="";foreach(triggers($Q)as$yi=>$xi){$zi=trigger($yi,$O['Name']);$I.="\nCREATE TRIGGER ".idf_escape($zi['Trigger'])." $zi[Timing] $zi[Event] ON ".idf_escape($O["nspname"]).".".idf_escape($O['Name'])." $zi[Type] $zi[Statement];;\n";}return$I;}function
use_sql($j){return"\connect ".idf_escape($j);}function
show_variables(){return
get_key_vals("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
show_status(){}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Vc){return
preg_match('~^(database|table|columns|sql|indexes|descidx|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~',$Vc);}function
kill_process($X){return
queries("SELECT pg_terminate_backend(".number($X).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){global$g;return$g->result("SHOW max_connections");}function
driver_config(){$U=array();$Jh=array();foreach(array(lang(27)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(28)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),lang(25)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(29)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(30)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),lang(31)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$z=>$X){$U+=$X;$Jh[$z]=array_keys($X);}return
array('possible_drivers'=>array("PgSQL","PDO_PgSQL"),'jush'=>"pgsql",'types'=>$U,'structured_types'=>$Jh,'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL"),'functions'=>array("char_length","lower","round","to_hex","to_timestamp","upper"),'grouping'=>array("avg","count","count distinct","max","min","sum"),'edit_functions'=>array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",)),);}}$kc["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){define("DRIVER","oracle");if(extension_loaded("oci8")){class
Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$errno,$error;var$_current_db;function
_error($Cc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
connect($M,$V,$F){$this->_link=@oci_new_connect($V,$F,$M,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
true;}$n=oci_error();$this->error=$n["message"];return
false;}function
quote($P){return"'".str_replace("'","''",$P)."'";}function
select_db($j){$this->_current_db=$j;return
true;}function
query($G,$Ei=false){$H=oci_parse($this->_link,$G);$this->error="";if(!$H){$n=oci_error($this->_link);$this->errno=$n["code"];$this->error=$n["message"];return
false;}set_error_handler(array($this,'_error'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return
new
Min_Result($H);$this->affected_rows=oci_num_rows($H);oci_free_statement($H);}return$I;}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($G,$o=1){$H=$this->query($G);if(!is_object($H)||!oci_fetch($H->_result))return
false;return
oci_result($H->_result,$o);}}class
Min_Result{var$_result,$_offset=1,$num_rows;function
__construct($H){$this->_result=$H;}function
_convert($J){foreach((array)$J
as$z=>$X){if(is_a($X,'OCI-Lob'))$J[$z]=$X->load();}return$J;}function
fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function
fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function
fetch_field(){$d=$this->_offset++;$I=new
stdClass;$I->name=oci_field_name($this->_result,$d);$I->orgname=$I->name;$I->type=oci_field_type($this->_result,$d);$I->charsetnr=(preg_match("~raw|blob|bfile~",$I->type)?63:0);return$I;}function
__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
Min_DB
extends
Min_PDO{var$extension="PDO_OCI";var$_current_db;function
connect($M,$V,$F){$this->dsn("oci:dbname=//$M;charset=AL32UTF8",$V,$F);return
true;}function
select_db($j){$this->_current_db=$j;return
true;}}}class
Min_Driver
extends
Min_SQL{function
begin(){return
true;}function
insertUpdate($Q,$K,$ng){global$g;foreach($K
as$N){$Li=array();$Z=array();foreach($N
as$z=>$X){$Li[]="$z = $X";if(isset($ng[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Li)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")")))return
false;}return
true;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
connect(){global$b;$g=new
Min_DB;$Mb=$b->credentials();if($g->connect($Mb[0],$Mb[1],$Mb[2]))return$g;return$g->error;}function
get_databases(){return
get_vals("SELECT tablespace_name FROM user_tablespaces ORDER BY 1");}function
limit($G,$Z,$_,$kf=0,$kh=" "){return($kf?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($_+$kf).") WHERE rnum > $kf":($_!==null?" * FROM (SELECT $G$Z) WHERE rownum <= ".($_+$kf):" $G$Z"));}function
limit1($Q,$G,$Z,$kh="\n"){return" $G$Z";}function
db_collation($l,$nb){global$g;return$g->result("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
engines(){return
array();}function
logged_user(){global$g;return$g->result("SELECT USER FROM DUAL");}function
get_current_db(){global$g;$l=$g->_current_db?$g->_current_db:DB;unset($g->_current_db);return$l;}function
where_owner($lg,$Nf="owner"){if(!$_GET["ns"])return'';return"$lg$Nf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$Nf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Nf?$Nf:"rownum < 0").")";}function
tables_list(){$aj=views_table("view_name");$Nf=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Nf
UNION SELECT view_name, 'view' FROM $aj
ORDER BY 1");}function
count_tables($k){global$g;$I=array();foreach($k
as$l)$I[$l]=$g->result("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($l));return$I;}function
table_status($D=""){$I=array();$eh=q($D);$l=get_current_db();$aj=views_table("view_name");$Nf=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($l).$Nf.($D!=""?" AND table_name = $eh":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $aj".($D!=""?" WHERE view_name = $eh":"")."
ORDER BY 1")as$J){if($D!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
is_view($R){return$R["Engine"]=="view";}function
fk_support($R){return
true;}function
fields($Q){$I=array();$Nf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($Q)."$Nf ORDER BY column_id")as$J){$T=$J["DATA_TYPE"];$we="$J[DATA_PRECISION],$J[DATA_SCALE]";if($we==",")$we=$J["CHAR_COL_DECL_LENGTH"];$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$T.($we?"($we)":""),"type"=>strtolower($T),"length"=>$we,"default"=>$J["DATA_DEFAULT"],"null"=>($J["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$I;}function
indexes($Q,$h=null){$I=array();$Nf=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
FROM all_ind_columns aic
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
WHERE aic.table_name = ".q($Q)."$Nf
ORDER BY ac.constraint_type, aic.column_position",$h)as$J){$Md=$J["INDEX_NAME"];$qb=$J["DATA_DEFAULT"];$qb=($qb?trim($qb,'"'):$J["COLUMN_NAME"]);$I[$Md]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Md]["columns"][]=$qb;$I[$Md]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Md]["descs"][]=($J["DESCEND"]&&$J["DESCEND"]=="DESC"?'1':null);}return$I;}function
view($D){$aj=views_table("view_name, text");$K=get_rows('SELECT text "select" FROM '.$aj.' WHERE view_name = '.q($D));return
reset($K);}function
collations(){return
array();}function
information_schema($l){return
false;}function
error(){global$g;return
h($g->error);}function
explain($g,$G){$g->query("EXPLAIN PLAN FOR $G");return$g->query("SELECT * FROM plan_table");}function
found_rows($R,$Z){}function
auto_increment(){return"";}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){$c=$lc=array();$Hf=($Q?fields($Q):array());foreach($p
as$o){$X=$o[1];if($X&&$o[0]!=""&&idf_escape($o[0])!=$X[0])queries("ALTER TABLE ".table($Q)." RENAME COLUMN ".idf_escape($o[0])." TO $X[0]");$Gf=$Hf[$o[0]];if($X&&$Gf){$mf=process_field($Gf,$Gf);if($X[2]==$mf[2])$X[2]="";}if($X)$c[]=($Q!=""?($o[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($Q!=""?")":"");else$lc[]=idf_escape($o[0]);}if($Q=="")return
queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($Q)."\n".implode("\n",$c)))&&(!$lc||queries("ALTER TABLE ".table($Q)." DROP (".implode(", ",$lc).")"))&&($Q==$D||queries("ALTER TABLE ".table($Q)." RENAME TO ".table($D)));}function
alter_indexes($Q,$c){$lc=array();$yg=array();foreach($c
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$i=($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($yg,"ALTER TABLE ".table($Q).$i);}elseif($X[2]=="DROP")$lc[]=idf_escape($X[1]);else$yg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($lc)array_unshift($yg,"DROP INDEX ".implode(", ",$lc));foreach($yg
as$G){if(!queries($G))return
false;}return
true;}function
foreign_keys($Q){$I=array();$G="SELECT c_list.CONSTRAINT_NAME as NAME,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.OWNER as DEST_DB,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN,
c_list.DELETE_RULE as ON_DELETE
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = 'R'
AND c_src.TABLE_NAME = ".q($Q);foreach(get_rows($G)as$J)$I[$J['NAME']]=array("db"=>$J['DEST_DB'],"table"=>$J['DEST_TABLE'],"source"=>array($J['SRC_COLUMN']),"target"=>array($J['DEST_COLUMN']),"on_delete"=>$J['ON_DELETE'],"on_update"=>null,);return$I;}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($bj){return
apply_queries("DROP VIEW",$bj);}function
drop_tables($S){return
apply_queries("DROP TABLE",$S);}function
last_id(){return
0;}function
schemas(){$I=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($I?$I:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
get_schema(){global$g;return$g->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
set_schema($dh,$h=null){global$g;if(!$h)$h=$g;return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($dh));}function
show_variables(){return
get_key_vals('SELECT name, display_value FROM v$parameter');}function
process_list(){return
get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \'USER\'
ORDER BY PROCESS
');}function
show_status(){$K=get_rows('SELECT * FROM v$instance');return
reset($K);}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Vc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Vc);}function
driver_config(){$U=array();$Jh=array();foreach(array(lang(27)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(28)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(25)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(29)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$z=>$X){$U+=$X;$Jh[$z]=array_keys($X);}return
array('possible_drivers'=>array("OCI8","PDO_OCI"),'jush'=>"oracle",'types'=>$U,'structured_types'=>$Jh,'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),'functions'=>array("length","lower","round","upper"),'grouping'=>array("avg","count","count distinct","max","min","sum"),'edit_functions'=>array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",)),);}}$kc["mssql"]="MS SQL (beta)";if(isset($_GET["mssql"])){define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class
Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
_get_error(){$this->error="";foreach(sqlsrv_errors()as$n){$this->errno=$n["code"];$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function
connect($M,$V,$F){global$b;$l=$b->database();$_b=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");if($l!="")$_b["Database"]=$l;$this->_link=@sqlsrv_connect(preg_replace('~:~',',',$M),$_b);if($this->_link){$Td=sqlsrv_server_info($this->_link);$this->server_info=$Td['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function
quote($P){return"'".str_replace("'","''",$P)."'";}function
select_db($j){return$this->query("USE ".idf_escape($j));}function
query($G,$Ei=false){$H=sqlsrv_query($this->_link,$G);$this->error="";if(!$H){$this->_get_error();return
false;}return$this->store_result($H);}function
multi_query($G){$this->_result=sqlsrv_query($this->_link,$G);$this->error="";if(!$this->_result){$this->_get_error();return
false;}return
true;}function
store_result($H=null){if(!$H)$H=$this->_result;if(!$H)return
false;if(sqlsrv_field_metadata($H))return
new
Min_Result($H);$this->affected_rows=sqlsrv_rows_affected($H);return
true;}function
next_result(){return$this->_result?sqlsrv_next_result($this->_result):null;}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->fetch_row();return$J[$o];}}class
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
__construct($H){$this->_result=$H;}function
_convert($J){foreach((array)$J
as$z=>$X){if(is_a($X,'DateTime'))$J[$z]=$X->format("Y-m-d H:i:s");}return$J;}function
fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function
fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function
fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$o=$this->_fields[$this->_offset++];$I=new
stdClass;$I->name=$o["Name"];$I->orgname=$o["Name"];$I->type=($o["Type"]==1?254:0);return$I;}function
seek($kf){for($t=0;$t<$kf;$t++)sqlsrv_fetch($this->_result);}function
__destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class
Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function
connect($M,$V,$F){$this->_link=@mssql_connect($M,$V,$F);if($this->_link){$H=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");if($H){$J=$H->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$J[0]] $J[1]";}}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function
quote($P){return"'".str_replace("'","''",$P)."'";}function
select_db($j){return
mssql_select_db($j);}function
query($G,$Ei=false){$H=@mssql_query($G,$this->_link);$this->error="";if(!$H){$this->error=mssql_get_last_message();return
false;}if($H===true){$this->affected_rows=mssql_rows_affected($this->_link);return
true;}return
new
Min_Result($H);}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
mssql_next_result($this->_result->_result);}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;return
mssql_result($H->_result,0,$o);}}class
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
__construct($H){$this->_result=$H;$this->num_rows=mssql_num_rows($H);}function
fetch_assoc(){return
mssql_fetch_assoc($this->_result);}function
fetch_row(){return
mssql_fetch_row($this->_result);}function
num_rows(){return
mssql_num_rows($this->_result);}function
fetch_field(){$I=mssql_fetch_field($this->_result);$I->orgtable=$I->table;$I->orgname=$I->name;return$I;}function
seek($kf){mssql_data_seek($this->_result,$kf);}function
__destruct(){mssql_free_result($this->_result);}}}elseif(extension_loaded("pdo_dblib")){class
Min_DB
extends
Min_PDO{var$extension="PDO_DBLIB";function
connect($M,$V,$F){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$M)),$V,$F);return
true;}function
select_db($j){return$this->query("USE ".idf_escape($j));}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$ng){foreach($K
as$N){$Li=array();$Z=array();foreach($N
as$z=>$X){$Li[]="$z = $X";if(isset($ng[idf_unescape($z)]))$Z[]="$z = $X";}if(!queries("MERGE ".table($Q)." USING (VALUES(".implode(", ",$N).")) AS source (c".implode(", c",range(1,count($N))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$Li)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).");"))return
false;}return
true;}function
begin(){return
queries("BEGIN TRANSACTION");}}function
idf_escape($v){return"[".str_replace("]","]]",$v)."]";}function
table($v){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($v);}function
connect(){global$b;$g=new
Min_DB;$Mb=$b->credentials();if($g->connect($Mb[0],$Mb[1],$Mb[2]))return$g;return$g->error;}function
get_databases(){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($G,$Z,$_,$kf=0,$kh=" "){return($_!==null?" TOP (".($_+$kf).")":"")." $G$Z";}function
limit1($Q,$G,$Z,$kh="\n"){return
limit($G,$Z,1,0,$kh);}function
db_collation($l,$nb){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($l));}function
engines(){return
array();}function
logged_user(){global$g;return$g->result("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($k){global$g;$I=array();foreach($k
as$l){$g->select_db($l);$I[$l]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function
table_status($D=""){$I=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment FROM sys.all_objects AS ao WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($D!=""?"AND name = ".q($D):"ORDER BY name"))as$J){if($D!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
is_view($R){return$R["Engine"]=="VIEW";}function
fk_support($R){return
true;}function
fields($Q){$vb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($Q).", 'column', NULL)");$I=array();foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default]
FROM sys.all_columns c
JOIN sys.all_objects o ON c.object_id = o.object_id
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.parent_column_id
WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN ('S', 'U', 'V') AND o.name = ".q($Q))as$J){$T=$J["type"];$we=(preg_match("~char|binary~",$T)?$J["max_length"]:($T=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$T.($we?"($we)":""),"type"=>$T,"length"=>$we,"default"=>$J["default"],"null"=>$J["is_nullable"],"auto_increment"=>$J["is_identity"],"collation"=>$J["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$J["is_identity"],"comment"=>$vb[$J["name"]],);}return$I;}function
indexes($Q,$h=null){$I=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE OBJECT_NAME(i.object_id) = ".q($Q),$h)as$J){$D=$J["name"];$I[$D]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$D]["lengths"]=array();$I[$D]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$D]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?'1':null);}return$I;}function
view($D){global$g;return
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',$g->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($D))));}function
collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$mb)$I[preg_replace('~_.*~','',$mb)][]=$mb;return$I;}function
information_schema($l){return
false;}function
error(){global$g;return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$g->error)));}function
create_database($l,$mb){return
queries("CREATE DATABASE ".idf_escape($l).(preg_match('~^[a-z0-9_]+$~i',$mb)?" COLLATE $mb":""));}function
drop_databases($k){return
queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$k)));}function
rename_database($D,$mb){if(preg_match('~^[a-z0-9_]+$~i',$mb))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $mb");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($D));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){$c=array();$vb=array();foreach($p
as$o){$d=idf_escape($o[0]);$X=$o[1];if(!$X)$c["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$vb[$o[0]]=$X[5];unset($X[5]);if($o[0]=="")$c["ADD"][]="\n ".implode("",$X).($Q==""?substr($hd[$X[0]],16+strlen($X[0])):"");else{unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($Q).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$X)][]="";}}}if($Q=="")return
queries("CREATE TABLE ".table($D)." (".implode(",",(array)$c["ADD"])."\n)");if($Q!=$D)queries("EXEC sp_rename ".q(table($Q)).", ".q($D));if($hd)$c[""]=$hd;foreach($c
as$z=>$X){if(!queries("ALTER TABLE ".idf_escape($D)." $z".implode(",",$X)))return
false;}foreach($vb
as$z=>$X){$tb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($D).", @level2type = N'Column', @level2name = ".q($z));queries("EXEC sp_addextendedproperty @name = N'MS_Description', @value = ".$tb.", @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($D).", @level2type = N'Column', @level2name = ".q($z));}return
true;}function
alter_indexes($Q,$c){$w=array();$lc=array();foreach($c
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$lc[]=idf_escape($X[1]);else$w[]=idf_escape($X[1])." ON ".table($Q);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q):"ALTER TABLE ".table($Q)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
false;}return(!$w||queries("DROP INDEX ".implode(", ",$w)))&&(!$lc||queries("ALTER TABLE ".table($Q)." DROP ".implode(", ",$lc)));}function
last_id(){global$g;return$g->result("SELECT SCOPE_IDENTITY()");}function
explain($g,$G){$g->query("SET SHOWPLAN_ALL ON");$I=$g->query($G);$g->query("SET SHOWPLAN_ALL OFF");return$I;}function
found_rows($R,$Z){}function
foreign_keys($Q){$I=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($Q))as$J){$r=&$I[$J["FK_NAME"]];$r["db"]=$J["PKTABLE_QUALIFIER"];$r["table"]=$J["PKTABLE_NAME"];$r["source"][]=$J["FKCOLUMN_NAME"];$r["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($bj){return
queries("DROP VIEW ".implode(", ",array_map('table',$bj)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
move_tables($S,$bj,$Zh){return
apply_queries("ALTER SCHEMA ".idf_escape($Zh)." TRANSFER",array_merge($S,$bj));}function
trigger($D){if($D=="")return
array();$K=get_rows("SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
WHERE s.xtype = 'TR' AND s.name = ".q($D));$I=reset($K);if($I)$I["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$I["text"]);return$I;}function
triggers($Q){$I=array();foreach(get_rows("SELECT sys1.name,
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($Q))as$J)$I[$J["name"]]=array($J["Timing"],$J["Event"]);return$I;}function
trigger_options(){return
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
schemas(){return
get_vals("SELECT name FROM sys.schemas");}function
get_schema(){global$g;if($_GET["ns"]!="")return$_GET["ns"];return$g->result("SELECT SCHEMA_NAME()");}function
set_schema($ch){return
true;}function
use_sql($j){return"USE ".idf_escape($j);}function
show_variables(){return
array();}function
show_status(){return
array();}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Vc){return
preg_match('~^(comment|columns|database|drop_col|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Vc);}function
driver_config(){$U=array();$Jh=array();foreach(array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(28)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(25)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(29)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$z=>$X){$U+=$X;$Jh[$z]=array_keys($X);}return
array('possible_drivers'=>array("SQLSRV","MSSQL","PDO_DBLIB"),'jush'=>"mssql",'types'=>$U,'structured_types'=>$Jh,'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL"),'functions'=>array("len","lower","round","upper"),'grouping'=>array("avg","count","count distinct","max","min","sum"),'edit_functions'=>array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",)),);}}$kc["mongo"]="MongoDB (alpha)";if(isset($_GET["mongo"])){define("DRIVER","mongo");if(class_exists('MongoDB')){class
Min_DB{var$extension="Mongo",$server_info=MongoClient::VERSION,$error,$last_id,$_link,$_db;function
connect($Mi,$_f){try{$this->_link=new
MongoClient($Mi,$_f);if($_f["password"]!=""){$_f["password"]="";try{new
MongoClient($Mi,$_f);$this->error=lang(22);}catch(Exception$rc){}}}catch(Exception$rc){$this->error=$rc->getMessage();}}function
query($G){return
false;}function
select_db($j){try{$this->_db=$this->_link->selectDB($j);return
true;}catch(Exception$Hc){$this->error=$Hc->getMessage();return
false;}}function
quote($P){return$P;}}class
Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
__construct($H){foreach($H
as$fe){$J=array();foreach($fe
as$z=>$X){if(is_a($X,'MongoBinData'))$this->_charset[$z]=63;$J[$z]=(is_a($X,'MongoId')?"ObjectId(\"$X\")":(is_a($X,'MongoDate')?gmdate("Y-m-d H:i:s",$X->sec)." GMT":(is_a($X,'MongoBinData')?$X->bin:(is_a($X,'MongoRegex')?"$X":(is_object($X)?get_class($X):$X)))));}$this->_rows[]=$J;foreach($J
as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=count($this->_rows);}function
fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$z=>$X)$I[$z]=$J[$z];next($this->_rows);return$I;}function
fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
array_values($I);}function
fetch_field(){$je=array_keys($this->_rows[0]);$D=$je[$this->_offset++];return(object)array('name'=>$D,'charsetnr'=>$this->_charset[$D],);}}class
Min_Driver
extends
Min_SQL{public$ng="_id";function
select($Q,$L,$Z,$sd,$Bf=array(),$_=1,$E=0,$pg=false){$L=($L==array("*")?array():array_fill_keys($L,true));$xh=array();foreach($Bf
as$X){$X=preg_replace('~ DESC$~','',$X,1,$Ib);$xh[$X]=($Ib?-1:1);}return
new
Min_Result($this->_conn->_db->selectCollection($Q)->find(array(),$L)->sort($xh)->limit($_!=""?+$_:0)->skip($E*$_));}function
insert($Q,$N){try{$I=$this->_conn->_db->selectCollection($Q)->insert($N);$this->_conn->errno=$I['code'];$this->_conn->error=$I['err'];$this->_conn->last_id=$N['_id'];return!$I['err'];}catch(Exception$Hc){$this->_conn->error=$Hc->getMessage();return
false;}}}function
get_databases($fd){global$g;$I=array();$Wb=$g->_link->listDBs();foreach($Wb['databases']as$l)$I[]=$l['name'];return$I;}function
count_tables($k){global$g;$I=array();foreach($k
as$l)$I[$l]=count($g->_link->selectDB($l)->getCollectionNames(true));return$I;}function
tables_list(){global$g;return
array_fill_keys($g->_db->getCollectionNames(true),'table');}function
drop_databases($k){global$g;foreach($k
as$l){$Og=$g->_link->selectDB($l)->drop();if(!$Og['ok'])return
false;}return
true;}function
indexes($Q,$h=null){global$g;$I=array();foreach($g->_db->selectCollection($Q)->getIndexInfo()as$w){$ec=array();foreach($w["key"]as$d=>$T)$ec[]=($T==-1?'1':null);$I[$w["name"]]=array("type"=>($w["name"]=="_id_"?"PRIMARY":($w["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($w["key"]),"lengths"=>array(),"descs"=>$ec,);}return$I;}function
fields($Q){return
fields_from_edit();}function
found_rows($R,$Z){global$g;return$g->_db->selectCollection($_GET["select"])->count($Z);}$xf=array("=");}elseif(class_exists('MongoDB\Driver\Manager')){class
Min_DB{var$extension="MongoDB",$server_info=MONGODB_VERSION,$affected_rows,$error,$last_id;var$_link;var$_db,$_db_name;function
connect($Mi,$_f){$hb='MongoDB\Driver\Manager';$this->_link=new$hb($Mi,$_f);$this->executeCommand('admin',array('ping'=>1));}function
executeCommand($l,$rb){$hb='MongoDB\Driver\Command';try{return$this->_link->executeCommand($l,new$hb($rb));}catch(Exception$rc){$this->error=$rc->getMessage();return
array();}}function
executeBulkWrite($Ze,$Xa,$Jb){try{$Rg=$this->_link->executeBulkWrite($Ze,$Xa);$this->affected_rows=$Rg->$Jb();return
true;}catch(Exception$rc){$this->error=$rc->getMessage();return
false;}}function
query($G){return
false;}function
select_db($j){$this->_db_name=$j;return
true;}function
quote($P){return$P;}}class
Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
__construct($H){foreach($H
as$fe){$J=array();foreach($fe
as$z=>$X){if(is_a($X,'MongoDB\BSON\Binary'))$this->_charset[$z]=63;$J[$z]=(is_a($X,'MongoDB\BSON\ObjectID')?'MongoDB\BSON\ObjectID("'."$X\")":(is_a($X,'MongoDB\BSON\UTCDatetime')?$X->toDateTime()->format('Y-m-d H:i:s'):(is_a($X,'MongoDB\BSON\Binary')?$X->getData():(is_a($X,'MongoDB\BSON\Regex')?"$X":(is_object($X)||is_array($X)?json_encode($X,256):$X)))));}$this->_rows[]=$J;foreach($J
as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=count($this->_rows);}function
fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$z=>$X)$I[$z]=$J[$z];next($this->_rows);return$I;}function
fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
array_values($I);}function
fetch_field(){$je=array_keys($this->_rows[0]);$D=$je[$this->_offset++];return(object)array('name'=>$D,'charsetnr'=>$this->_charset[$D],);}}class
Min_Driver
extends
Min_SQL{public$ng="_id";function
select($Q,$L,$Z,$sd,$Bf=array(),$_=1,$E=0,$pg=false){global$g;$L=($L==array("*")?array():array_fill_keys($L,1));if(count($L)&&!isset($L['_id']))$L['_id']=0;$Z=where_to_query($Z);$xh=array();foreach($Bf
as$X){$X=preg_replace('~ DESC$~','',$X,1,$Ib);$xh[$X]=($Ib?-1:1);}if(isset($_GET['limit'])&&is_numeric($_GET['limit'])&&$_GET['limit']>0)$_=$_GET['limit'];$_=min(200,max(1,(int)$_));$uh=$E*$_;$hb='MongoDB\Driver\Query';try{return
new
Min_Result($g->_link->executeQuery("$g->_db_name.$Q",new$hb($Z,array('projection'=>$L,'limit'=>$_,'skip'=>$uh,'sort'=>$xh))));}catch(Exception$rc){$g->error=$rc->getMessage();return
false;}}function
update($Q,$N,$zg,$_=0,$kh="\n"){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($zg);$hb='MongoDB\Driver\BulkWrite';$Xa=new$hb(array());if(isset($N['_id']))unset($N['_id']);$Lg=array();foreach($N
as$z=>$Y){if($Y=='NULL'){$Lg[$z]=1;unset($N[$z]);}}$Li=array('$set'=>$N);if(count($Lg))$Li['$unset']=$Lg;$Xa->update($Z,$Li,array('upsert'=>false));return$g->executeBulkWrite("$l.$Q",$Xa,'getModifiedCount');}function
delete($Q,$zg,$_=0){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($zg);$hb='MongoDB\Driver\BulkWrite';$Xa=new$hb(array());$Xa->delete($Z,array('limit'=>$_));return$g->executeBulkWrite("$l.$Q",$Xa,'getDeletedCount');}function
insert($Q,$N){global$g;$l=$g->_db_name;$hb='MongoDB\Driver\BulkWrite';$Xa=new$hb(array());if($N['_id']=='')unset($N['_id']);$Xa->insert($N);return$g->executeBulkWrite("$l.$Q",$Xa,'getInsertedCount');}}function
get_databases($fd){global$g;$I=array();foreach($g->executeCommand('admin',array('listDatabases'=>1))as$Wb){foreach($Wb->databases
as$l)$I[]=$l->name;}return$I;}function
count_tables($k){$I=array();return$I;}function
tables_list(){global$g;$ob=array();foreach($g->executeCommand($g->_db_name,array('listCollections'=>1))as$H)$ob[$H->name]='table';return$ob;}function
drop_databases($k){return
false;}function
indexes($Q,$h=null){global$g;$I=array();foreach($g->executeCommand($g->_db_name,array('listIndexes'=>$Q))as$w){$ec=array();$e=array();foreach(get_object_vars($w->key)as$d=>$T){$ec[]=($T==-1?'1':null);$e[]=$d;}$I[$w->name]=array("type"=>($w->name=="_id_"?"PRIMARY":(isset($w->unique)?"UNIQUE":"INDEX")),"columns"=>$e,"lengths"=>array(),"descs"=>$ec,);}return$I;}function
fields($Q){global$m;$p=fields_from_edit();if(!$p){$H=$m->select($Q,array("*"),null,null,array(),10);if($H){while($J=$H->fetch_assoc()){foreach($J
as$z=>$X){$J[$z]=null;$p[$z]=array("field"=>$z,"type"=>"string","null"=>($z!=$m->primary),"auto_increment"=>($z==$m->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}}return$p;}function
found_rows($R,$Z){global$g;$Z=where_to_query($Z);$pi=$g->executeCommand($g->_db_name,array('count'=>$R['Name'],'query'=>$Z))->toArray();return$pi[0]->n;}function
sql_query_where_parser($zg){$zg=preg_replace('~^\sWHERE \(?\(?(.+?)\)?\)?$~','\1',$zg);$lj=explode(' AND ',$zg);$mj=explode(') OR (',$zg);$Z=array();foreach($lj
as$jj)$Z[]=trim($jj);if(count($mj)==1)$mj=array();elseif(count($mj)>1)$Z=array();return
where_to_query($Z,$mj);}function
where_to_query($hj=array(),$ij=array()){global$b;$Rb=array();foreach(array('and'=>$hj,'or'=>$ij)as$T=>$Z){if(is_array($Z)){foreach($Z
as$Nc){list($kb,$vf,$X)=explode(" ",$Nc,3);if($kb=="_id"&&preg_match('~^(MongoDB\\\\BSON\\\\ObjectID)\("(.+)"\)$~',$X,$C)){list(,$hb,$X)=$C;$X=new$hb($X);}if(!in_array($vf,$b->operators))continue;if(preg_match('~^\(f\)(.+)~',$vf,$C)){$X=(float)$X;$vf=$C[1];}elseif(preg_match('~^\(date\)(.+)~',$vf,$C)){$Tb=new
DateTime($X);$hb='MongoDB\BSON\UTCDatetime';$X=new$hb($Tb->getTimestamp()*1000);$vf=$C[1];}switch($vf){case'=':$vf='$eq';break;case'!=':$vf='$ne';break;case'>':$vf='$gt';break;case'<':$vf='$lt';break;case'>=':$vf='$gte';break;case'<=':$vf='$lte';break;case'regex':$vf='$regex';break;default:continue
2;}if($T=='and')$Rb['$and'][]=array($kb=>array($vf=>$X));elseif($T=='or')$Rb['$or'][]=array($kb=>array($vf=>$X));}}}return$Rb;}$xf=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);}function
table($v){return$v;}function
idf_escape($v){return$v;}function
table_status($D="",$Uc=false){$I=array();foreach(tables_list()as$Q=>$T){$I[$Q]=array("Name"=>$Q);if($D==$Q)return$I[$Q];}return$I;}function
create_database($l,$mb){return
true;}function
last_id(){global$g;return$g->last_id;}function
error(){global$g;return
h($g->error);}function
collations(){return
array();}function
logged_user(){global$b;$Mb=$b->credentials();return$Mb[1];}function
connect(){global$b;$g=new
Min_DB;list($M,$V,$F)=$b->credentials();$_f=array();if($V.$F!=""){$_f["username"]=$V;$_f["password"]=$F;}$l=$b->database();if($l!="")$_f["db"]=$l;if(($Ka=getenv("MONGO_AUTH_SOURCE")))$_f["authSource"]=$Ka;$g->connect("mongodb://$M",$_f);if($g->error)return$g->error;return$g;}function
alter_indexes($Q,$c){global$g;foreach($c
as$X){list($T,$D,$N)=$X;if($N=="DROP")$I=$g->_db->command(array("deleteIndexes"=>$Q,"index"=>$D));else{$e=array();foreach($N
as$d){$d=preg_replace('~ DESC$~','',$d,1,$Ib);$e[$d]=($Ib?-1:1);}$I=$g->_db->selectCollection($Q)->ensureIndex($e,array("unique"=>($T=="UNIQUE"),"name"=>$D,));}if($I['errmsg']){$g->error=$I['errmsg'];return
false;}}return
true;}function
support($Vc){return
preg_match("~database|indexes|descidx~",$Vc);}function
db_collation($l,$nb){}function
information_schema(){}function
is_view($R){}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
foreign_keys($Q){return
array();}function
fk_support($R){}function
engines(){return
array();}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){global$g;if($Q==""){$g->_db->createCollection($D);return
true;}}function
drop_tables($S){global$g;foreach($S
as$Q){$Og=$g->_db->selectCollection($Q)->drop();if(!$Og['ok'])return
false;}return
true;}function
truncate_tables($S){global$g;foreach($S
as$Q){$Og=$g->_db->selectCollection($Q)->remove();if(!$Og['ok'])return
false;}return
true;}function
driver_config(){global$xf;return
array('possible_drivers'=>array("mongo","mongodb"),'jush'=>"mongo",'operators'=>$xf,'functions'=>array(),'grouping'=>array(),'edit_functions'=>array(array("json")),);}}$kc["elastic"]="Elasticsearch (beta)";if(isset($_GET["elastic"])){define("DRIVER","elastic");if(function_exists('json_decode')&&ini_bool('allow_url_fopen')){class
Min_DB{var$extension="JSON",$server_info,$errno,$error,$_url,$_db;function
rootQuery($ag,$Db=array(),$Se='GET'){@ini_set('track_errors',1);$Zc=@file_get_contents("$this->_url/".ltrim($ag,'/'),false,stream_context_create(array('http'=>array('method'=>$Se,'content'=>$Db===null?$Db:json_encode($Db),'header'=>'Content-Type: application/json','ignore_errors'=>1,))));if(!$Zc){$this->error=$php_errormsg;return$Zc;}if(!preg_match('~^HTTP/[0-9.]+ 2~i',$http_response_header[0])){$this->error=lang(32)." $http_response_header[0]";return
false;}$I=json_decode($Zc,true);if($I===null){$this->errno=json_last_error();if(function_exists('json_last_error_msg'))$this->error=json_last_error_msg();else{$Bb=get_defined_constants(true);foreach($Bb['json']as$D=>$Y){if($Y==$this->errno&&preg_match('~^JSON_ERROR_~',$D)){$this->error=$D;break;}}}}return$I;}function
query($ag,$Db=array(),$Se='GET'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($ag,'/'),$Db,$Se);}function
connect($M,$V,$F){preg_match('~^(https?://)?(.*)~',$M,$C);$this->_url=($C[1]?$C[1]:"http://")."$V:$F@$C[2]";$I=$this->query('');if($I)$this->server_info=$I['version']['number'];return(bool)$I;}function
select_db($j){$this->_db=$j;return
true;}function
quote($P){return$P;}}class
Min_Result{var$num_rows,$_rows;function
__construct($K){$this->num_rows=count($K);$this->_rows=$K;reset($this->_rows);}function
fetch_assoc(){$I=current($this->_rows);next($this->_rows);return$I;}function
fetch_row(){return
array_values($this->fetch_assoc());}}}class
Min_Driver
extends
Min_SQL{function
select($Q,$L,$Z,$sd,$Bf=array(),$_=1,$E=0,$pg=false){global$b;$Rb=array();$G="$Q/_search";if($L!=array("*"))$Rb["fields"]=$L;if($Bf){$xh=array();foreach($Bf
as$kb){$kb=preg_replace('~ DESC$~','',$kb,1,$Ib);$xh[]=($Ib?array($kb=>"desc"):$kb);}$Rb["sort"]=$xh;}if($_){$Rb["size"]=+$_;if($E)$Rb["from"]=($E*$_);}foreach($Z
as$X){list($kb,$vf,$X)=explode(" ",$X,3);if($kb=="_id")$Rb["query"]["ids"]["values"][]=$X;elseif($kb.$X!=""){$ci=array("term"=>array(($kb!=""?$kb:"_all")=>$X));if($vf=="=")$Rb["query"]["filtered"]["filter"]["and"][]=$ci;else$Rb["query"]["filtered"]["query"]["bool"]["must"][]=$ci;}}if($Rb["query"]&&!$Rb["query"]["filtered"]["query"]&&!$Rb["query"]["ids"])$Rb["query"]["filtered"]["query"]=array("match_all"=>array());$Fh=microtime(true);$eh=$this->_conn->query($G,$Rb);if($pg)echo$b->selectQuery("$G: ".json_encode($Rb),$Fh,!$eh);if(!$eh)return
false;$I=array();foreach($eh['hits']['hits']as$Ed){$J=array();if($L==array("*"))$J["_id"]=$Ed["_id"];$p=$Ed['_source'];if($L!=array("*")){$p=array();foreach($L
as$z)$p[$z]=$Ed['fields'][$z];}foreach($p
as$z=>$X){if($Rb["fields"])$X=$X[0];$J[$z]=(is_array($X)?json_encode($X):$X);}$I[]=$J;}return
new
Min_Result($I);}function
update($T,$Cg,$zg,$_=0,$kh="\n"){$Yf=preg_split('~ *= *~',$zg);if(count($Yf)==2){$u=trim($Yf[1]);$G="$T/$u";return$this->_conn->query($G,$Cg,'POST');}return
false;}function
insert($T,$Cg){$u="";$G="$T/$u";$Og=$this->_conn->query($G,$Cg,'POST');$this->_conn->last_id=$Og['_id'];return$Og['created'];}function
delete($T,$zg,$_=0){$Id=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Id[]=$_GET["where"]["_id"];if(is_array($_POST['check'])){foreach($_POST['check']as$bb){$Yf=preg_split('~ *= *~',$bb);if(count($Yf)==2)$Id[]=trim($Yf[1]);}}$this->_conn->affected_rows=0;foreach($Id
as$u){$G="{$T}/{$u}";$Og=$this->_conn->query($G,'{}','DELETE');if(is_array($Og)&&$Og['found']==true)$this->_conn->affected_rows++;}return$this->_conn->affected_rows;}}function
connect(){global$b;$g=new
Min_DB;list($M,$V,$F)=$b->credentials();if($F!=""&&$g->connect($M,$V,""))return
lang(22);if($g->connect($M,$V,$F))return$g;return$g->error;}function
support($Vc){return
preg_match("~database|table|columns~",$Vc);}function
logged_user(){global$b;$Mb=$b->credentials();return$Mb[1];}function
get_databases(){global$g;$I=$g->rootQuery('_aliases');if($I){$I=array_keys($I);sort($I,SORT_STRING);}return$I;}function
collations(){return
array();}function
db_collation($l,$nb){}function
engines(){return
array();}function
count_tables($k){global$g;$I=array();$H=$g->query('_stats');if($H&&$H['indices']){$Qd=$H['indices'];foreach($Qd
as$Pd=>$Gh){$Od=$Gh['total']['indexing'];$I[$Pd]=$Od['index_total'];}}return$I;}function
tables_list(){global$g;if(min_version(6))return
array('_doc'=>'table');$I=$g->query('_mapping');if($I)$I=array_fill_keys(array_keys($I[$g->_db]["mappings"]),'table');return$I;}function
table_status($D="",$Uc=false){global$g;$eh=$g->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$I=array();if($eh){$S=$eh["aggregations"]["count_by_type"]["buckets"];foreach($S
as$Q){$I[$Q["key"]]=array("Name"=>$Q["key"],"Engine"=>"table","Rows"=>$Q["doc_count"],);if($D!=""&&$D==$Q["key"])return$I[$D];}}return$I;}function
error(){global$g;return
h($g->error);}function
information_schema(){}function
is_view($R){}function
indexes($Q,$h=null){return
array(array("type"=>"PRIMARY","columns"=>array("_id")),);}function
fields($Q){global$g;$Be=array();if(min_version(6)){$H=$g->query("_mapping");if($H)$Be=$H[$g->_db]['mappings']['properties'];}else{$H=$g->query("$Q/_mapping");if($H){$Be=$H[$Q]['properties'];if(!$Be)$Be=$H[$g->_db]['mappings'][$Q]['properties'];}}$I=array();if($Be){foreach($Be
as$D=>$o){$I[$D]=array("field"=>$D,"full_type"=>$o["type"],"type"=>$o["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($o["properties"]){unset($I[$D]["privileges"]["insert"]);unset($I[$D]["privileges"]["update"]);}}}return$I;}function
foreign_keys($Q){return
array();}function
table($v){return$v;}function
idf_escape($v){return$v;}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
fk_support($R){}function
found_rows($R,$Z){return
null;}function
create_database($l){global$g;return$g->rootQuery(urlencode($l),null,'PUT');}function
drop_databases($k){global$g;return$g->rootQuery(urlencode(implode(',',$k)),array(),'DELETE');}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){global$g;$vg=array();foreach($p
as$Sc){$Xc=trim($Sc[1][0]);$Yc=trim($Sc[1][1]?$Sc[1][1]:"text");$vg[$Xc]=array('type'=>$Yc);}if(!empty($vg))$vg=array('properties'=>$vg);return$g->query("_mapping/{$D}",$vg,'PUT');}function
drop_tables($S){global$g;$I=true;foreach($S
as$Q)$I=$I&&$g->query(urlencode($Q),array(),'DELETE');return$I;}function
last_id(){global$g;return$g->last_id;}function
driver_config(){$U=array();$Jh=array();foreach(array(lang(27)=>array("long"=>3,"integer"=>5,"short"=>8,"byte"=>10,"double"=>20,"float"=>66,"half_float"=>12,"scaled_float"=>21),lang(28)=>array("date"=>10),lang(25)=>array("string"=>65535,"text"=>65535),lang(29)=>array("binary"=>255),)as$z=>$X){$U+=$X;$Jh[$z]=array_keys($X);}return
array('possible_drivers'=>array("json + allow_url_fopen"),'jush'=>"elastic",'operators'=>array("=","query"),'functions'=>array(),'grouping'=>array(),'edit_functions'=>array(array("json")),'types'=>$U,'structured_types'=>$Jh,);}}class
Adminer{var$operators;function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'>Adminer</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($i=false){return
password_file($i);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($M){return
h($M);}function
database(){return
DB;}function
databases($fd=true){return
get_databases($fd);}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(){return
csp();}function
head(){return
true;}function
css(){$I=array();$q="adminer.css";if(file_exists($q))$I[]="$q?v=".crc32(file_get_contents($q));return$I;}function
loginForm(){global$kc;echo"<table cellspacing='0' class='layout'>\n",$this->loginFormField('driver','<tr><th>'.lang(33).'<td>',html_select("auth[driver]",$kc,DRIVER,"loginDriver(this);")."\n"),$this->loginFormField('server','<tr><th>'.lang(34).'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'."\n"),$this->loginFormField('username','<tr><th>'.lang(35).'<td>','<input name="auth[username]" id="username" value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("focus(qs('#username')); qs('#username').form['auth[driver]'].onchange();")),$this->loginFormField('password','<tr><th>'.lang(36).'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'."\n"),$this->loginFormField('db','<tr><th>'.lang(37).'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'."\n"),"</table>\n","<p><input type='submit' value='".lang(38)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(39))."\n";}function
loginFormField($D,$Bd,$Y){return$Bd.$Y;}function
login($_e,$F){if($F=="")return
lang(40,target_blank());return
true;}function
tableName($Qh){return
h($Qh["Name"]);}function
fieldName($o,$Bf=0){return'<span title="'.h($o["full_type"]).'">'.h($o["field"]).'</span>';}function
selectLinks($Qh,$N=""){global$y,$m;echo'<p class="links">';$ze=array("select"=>lang(41));if(support("table")||support("indexes"))$ze["table"]=lang(42);if(support("table")){if(is_view($Qh))$ze["view"]=lang(43);else$ze["create"]=lang(44);}if($N!==null)$ze["edit"]=lang(45);$D=$Qh["Name"];foreach($ze
as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($D).($z=="edit"?$N:"")."'".bold(isset($_GET[$z])).">$X</a>";echo
doc_link(array($y=>$m->tableHelp($D)),"?"),"\n";}function
foreignKeys($Q){return
foreign_keys($Q);}function
backwardKeys($Q,$Ph){return
array();}function
backwardKeysPrint($Oa,$J){}function
selectQuery($G,$Fh,$Tc=false){global$y,$m;$I="</p>\n";if(!$Tc&&($ej=$m->warnings())){$u="warnings";$I=", <a href='#$u'>".lang(46)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."$I<div id='$u' class='hidden'>\n$ej</div>\n";}return"<p><code class='jush-$y'>".h(str_replace("\n"," ",$G))."</code> <span class='time'>(".format_time($Fh).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($G)."'>".lang(10)."</a>":"").$I;}function
sqlCommandQuery($G){return
shorten_utf8(trim($G),1000);}function
rowDescription($Q){return"";}function
rowDescriptions($K,$id){return$K;}function
selectLink($X,$o){}function
selectVal($X,$A,$o,$Jf){$I=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$o["type"])&&!preg_match("~var~",$o["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$o["type"])&&!is_utf8($X))$I="<i>".lang(47,strlen($Jf))."</i>";if(preg_match('~json~',$o["type"]))$I="<code class='jush-js'>$I</code>";return($A?"<a href='".h($A)."'".(is_url($A)?target_blank():"").">$I</a>":$I);}function
editVal($X,$o){return$X;}function
tableStructurePrint($p){echo"<div class='scrollable'>\n","<table cellspacing='0' class='nowrap'>\n","<thead><tr><th>".lang(48)."<td>".lang(49).(support("comment")?"<td>".lang(50):"")."</thead>\n";foreach($p
as$o){echo"<tr".odd()."><th>".h($o["field"]),"<td><span title='".h($o["collation"])."'>".h($o["full_type"])."</span>",($o["null"]?" <i>NULL</i>":""),($o["auto_increment"]?" <i>".lang(51)."</i>":""),(isset($o["default"])?" <span title='".lang(52)."'>[<b>".h($o["default"])."</b>]</span>":""),(support("comment")?"<td>".h($o["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint($x){echo"<table cellspacing='0'>\n";foreach($x
as$D=>$w){ksort($w["columns"]);$pg=array();foreach($w["columns"]as$z=>$X)$pg[]="<i>".h($X)."</i>".($w["lengths"][$z]?"(".$w["lengths"][$z].")":"").($w["descs"][$z]?" DESC":"");echo"<tr title='".h($D)."'><th>$w[type]<td>".implode(", ",$pg)."\n";}echo"</table>\n";}function
selectColumnsPrint($L,$e){global$pd,$vd;print_fieldset("select",lang(53),$L);$t=0;$L[""]=array();foreach($L
as$z=>$X){$X=$_GET["columns"][$z];$d=select_input(" name='columns[$t][col]'",$e,$X["col"],($z!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($pd||$vd?"<select name='columns[$t][fun]'>".optionlist(array(-1=>"")+array_filter(array(lang(54)=>$pd,lang(55)=>$vd)),$X["fun"])."</select>".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($z!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
selectSearchPrint($Z,$e,$x){print_fieldset("search",lang(56),$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"){echo"<div>(<i>".implode("</i>, <i>",array_map('h',$w["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h($_GET["fulltext"][$t])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"</div>\n";}}$Za="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(57).")"),html_select("where[$t][op]",$this->operators,$X["op"],$Za),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Za }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}}echo"</div></fieldset>\n";}function
selectOrderPrint($Bf,$e,$x){print_fieldset("sort",lang(58),$Bf);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),lang(59))."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(59))."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($_){echo"<fieldset><legend>".lang(60)."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($_)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($fi){if($fi!==null){echo"<fieldset><legend>".lang(61)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($fi)."'>","</div></fieldset>\n";}}function
selectActionPrint($x){echo"<fieldset><legend>".lang(62)."</legend><div>","<input type='submit' value='".lang(53)."'>"," <span id='noindex' title='".lang(63)."'></span>","<script".nonce().">\n","var indexColumns = ";$e=array();foreach($x
as$w){$Qb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Qb)$e[$Qb]=1;}$e[""]=1;foreach($e
as$z=>$X)json_row($z);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($xc,$e){}function
selectColumnsProcess($e,$x){global$pd,$vd;$L=array();$sd=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$pd)||in_array($X["fun"],$vd)))){$L[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$vd))$sd[]=$L[$z];}}return
array($L,$sd);}function
selectSearchProcess($p,$x){global$g,$m;$I=array();foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$I[]="MATCH (".implode(", ",array_map('idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$lg="";$wb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Ld=process_length($X["val"]);$wb.=" ".($Ld!=""?$Ld:"(NULL)");}elseif($X["op"]=="SQL")$wb=" $X[val]";elseif($X["op"]=="LIKE %%")$wb=" LIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$wb=" ILIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$lg="$X[op](".q($X["val"]).", ";$wb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$wb.=" ".$this->processInput($p[$X["col"]],$X["val"]);if($X["col"]!="")$I[]=$lg.$m->convertSearch(idf_escape($X["col"]),$X,$p[$X["col"]]).$wb;else{$pb=array();foreach($p
as$D=>$o){if((preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$o["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$o["type"]))&&(!preg_match('~date|timestamp~',$o["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$pb[]=$lg.$m->convertSearch(idf_escape($D),$X,$o).$wb;}$I[]=($pb?"(".implode(" OR ",$pb).")":"1 = 0");}}}return$I;}function
selectOrderProcess($p,$x){$I=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$I;}function
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
selectEmailProcess($Z,$id){return
false;}function
selectQueryBuild($L,$Z,$sd,$Bf,$_,$E){return"";}function
messageQuery($G,$gi,$Tc=false){global$y,$m;restart_session();$Cd=&get_session("queries");if(!$Cd[$_GET["db"]])$Cd[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n";$Cd[$_GET["db"]][]=array($G,time(),$gi);$Ch="sql-".count($Cd[$_GET["db"]]);$I="<a href='#$Ch' class='toggle'>".lang(64)."</a>\n";if(!$Tc&&($ej=$m->warnings())){$u="warnings-".count($Cd[$_GET["db"]]);$I="<a href='#$u' class='toggle'>".lang(46)."</a>, $I<div id='$u' class='hidden'>\n$ej</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $I<div id='$Ch' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($G,1000)."</code></pre>".($gi?" <span class='time'>($gi)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Cd[$_GET["db"]])-1)).'">'.lang(10).'</a>':'').'</div>';}function
editRowPrint($Q,$p,$J,$Li){}function
editFunctions($o){global$sc;$I=($o["null"]?"NULL/":"");$Li=isset($_GET["select"])||where($_GET);foreach($sc
as$z=>$pd){if(!$z||(!isset($_GET["call"])&&$Li)){foreach($pd
as$cg=>$X){if(!$cg||preg_match("~$cg~",$o["type"]))$I.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file|bool~',$o["type"]))$I.="/SQL";}if($o["auto_increment"]&&!$Li)$I=lang(51);return
explode("/",$I);}function
editInput($Q,$o,$Ia,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$Ia value='-1' checked><i>".lang(8)."</i></label> ":"").($o["null"]?"<label><input type='radio'$Ia value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$Ia,$o,$Y,0);return"";}function
editHint($Q,$o,$Y){return"";}function
processInput($o,$Y,$s=""){if($s=="SQL")return$Y;$D=$o["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$I="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$I=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$I=idf_escape($D)." $s $I";elseif(preg_match('~^[+-] interval$~',$s))$I=idf_escape($D)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$I="$s(".idf_escape($D).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$I="$s($I)";return
unconvert_field($o,$I);}function
dumpOutput(){$I=array('text'=>lang(65),'file'=>lang(66));if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function
dumpFormat(){return
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($l){}function
dumpTable($Q,$Kh,$ee=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Kh)dump_csv(array_keys(fields($Q)));}else{if($ee==2){$p=array();foreach(fields($Q)as$D=>$o)$p[]=idf_escape($D)." $o[full_type]";$i="CREATE TABLE ".table($Q)." (".implode(", ",$p).")";}else$i=create_sql($Q,$_POST["auto_increment"],$Kh);set_utf8mb4($i);if($Kh&&$i){if($Kh=="DROP+CREATE"||$ee==1)echo"DROP ".($ee==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($ee==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($Q,$Kh,$G){global$g,$y;$He=($y=="sqlite"?0:1048576);if($Kh){if($_POST["format"]=="sql"){if($Kh=="TRUNCATE+INSERT")echo
truncate_sql($Q).";\n";$p=fields($Q);}$H=$g->query($G,1);if($H){$Xd="";$Wa="";$je=array();$Mh="";$Wc=($Q!=''?'fetch_assoc':'fetch_row');while($J=$H->$Wc()){if(!$je){$Wi=array();foreach($J
as$X){$o=$H->fetch_field();$je[]=$o->name;$z=idf_escape($o->name);$Wi[]="$z = VALUES($z)";}$Mh=($Kh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Wi):"").";\n";}if($_POST["format"]!="sql"){if($Kh=="table"){dump_csv($je);$Kh="INSERT";}dump_csv($J);}else{if(!$Xd)$Xd="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$je)).") VALUES";foreach($J
as$z=>$X){$o=$p[$z];$J[$z]=($X!==null?unconvert_field($o,preg_match(number_type(),$o["type"])&&!preg_match('~\[~',$o["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$ah=($He?"\n":" ")."(".implode(",\t",$J).")";if(!$Wa)$Wa=$Xd.$ah;elseif(strlen($Wa)+4+strlen($ah)+strlen($Mh)<$He)$Wa.=",$ah";else{echo$Wa.$Mh;$Wa=$Xd.$ah;}}}if($Wa)echo$Wa.$Mh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function
dumpFilename($Hd){return
friendly_url($Hd!=""?$Hd:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($Hd,$Ve=false){$Mf=$_POST["output"];$Oc=(preg_match('~sql~',$_POST["format"])?"sql":($Ve?"tar":"csv"));header("Content-Type: ".($Mf=="gz"?"application/x-gzip":($Oc=="tar"?"application/x-tar":($Oc=="sql"||$Mf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Mf=="gz")ob_start('ob_gzencode',1e6);return$Oc;}function
importServerPath(){return"adminer.sql";}function
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.lang(67)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(68):lang(69))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(70)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(71)."</a>\n":"");return
true;}function
navigation($Ue){global$ia,$y,$kc,$g;echo'<h1>
',$this->name(),' <span class="version">',$ia,'</span>
<a href="https://www.adminer.org/#download"',target_blank(),' id="version">',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
</h1>
';if($Ue=="auth"){$Mf="";foreach((array)$_SESSION["pwds"]as$Yi=>$oh){foreach($oh
as$M=>$Ti){foreach($Ti
as$V=>$F){if($F!==null){$Wb=$_SESSION["db"][$Yi][$M][$V];foreach(($Wb?array_keys($Wb):array(""))as$l)$Mf.="<li><a href='".h(auth_url($Yi,$M,$V,$l))."'>($kc[$Yi]) ".h($V.($M!=""?"@".$this->serverName($M):"").($l!=""?" - $l":""))."</a>\n";}}}}if($Mf)echo"<ul id='logins'>\n$Mf</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$Ue&&DB!=""){$g->select_db(DB);$S=table_status('',true);}echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.8.1");if(support("sql")){echo'<script',nonce(),'>
';if($S){$ze=array();foreach($S
as$Q=>$T)$ze[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$ze).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}$nh=$g->server_info;echo'bodyLoad(\'',(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$nh):""),'\'',(preg_match('~MariaDB~',$nh)?", true":""),');
</script>
';}$this->databasesPrint($Ue);if(DB==""||!$Ue){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(64)."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(72)."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(73)."</a>\n";}if($_GET["ns"]!==""&&!$Ue&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(74)."</a>\n";if(!$S)echo"<p class='message'>".lang(9)."\n";else$this->tablesPrint($S);}}}function
databasesPrint($Ue){global$b,$g;$k=$this->databases();if(DB&&$k&&!in_array(DB,$k))array_unshift($k,DB);echo'<form action="">
<p id="dbs">
';hidden_fields_get();$Ub=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title='".lang(75)."'>".lang(76)."</span>: ".($k?"<select name='db'>".optionlist(array(""=>"")+$k,DB)."</select>$Ub":"<input name='db' value='".h(DB)."' autocapitalize='off'>\n"),"<input type='submit' value='".lang(20)."'".($k?" class='hidden'":"").">\n";if(support("scheme")){if($Ue!="db"&&DB!=""&&$g->select_db(DB)){echo"<br>".lang(77).": <select name='ns'>".optionlist(array(""=>"")+$b->schemas(),$_GET["ns"])."</select>$Ub";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type='hidden' name='$X' value=''>";break;}}echo"</p></form>\n";}function
tablesPrint($S){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S
as$Q=>$O){$D=$this->tableName($O);if($D!=""){echo'<li><a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select")." title='".lang(41)."'>".lang(78)."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($O)?"view":"structure"))." title='".lang(42)."'>$D</a>":"<span>$D</span>")."\n";}}echo"</ul>\n";}}$b=(function_exists('adminer_object')?adminer_object():new
Adminer);$kc=array("server"=>"MySQL")+$kc;if(!defined("DRIVER")){define("DRIVER","server");if(extension_loaded("mysqli")){class
Min_DB
extends
MySQLi{var$extension="MySQLi";function
__construct(){parent::init();}function
connect($M="",$V="",$F="",$j=null,$gg=null,$wh=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Fd,$gg)=explode(":",$M,2);$Eh=$b->connectSsl();if($Eh)$this->ssl_set($Eh['key'],$Eh['cert'],$Eh['ca'],'','');$I=@$this->real_connect(($M!=""?$Fd:ini_get("mysqli.default_host")),($M.$V!=""?$V:ini_get("mysqli.default_user")),($M.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$j,(is_numeric($gg)?$gg:ini_get("mysqli.default_port")),(!is_numeric($gg)?$gg:$wh),($Eh?64:0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function
set_charset($ab){if(parent::set_charset($ab))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $ab");}function
result($G,$o=0){$H=$this->query($G);if(!$H)return
false;$J=$H->fetch_array();return$J[$o];}function
quote($P){return"'".$this->escape_string($P)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
connect($M,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(79,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
false;}$this->_link=@mysql_connect(($M!=""?$M:ini_get("mysql.default_host")),("$M$V"!=""?$V:ini_get("mysql.default_user")),("$M$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
set_charset($ab){if(function_exists('mysql_set_charset')){if(mysql_set_charset($ab,$this->_link))return
true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $ab");}function
quote($P){return"'".mysql_real_escape_string($P,$this->_link)."'";}function
select_db($j){return
mysql_select_db($j,$this->_link);}function
query($G,$Ei=false){$H=@($Ei?mysql_unbuffered_query($G,$this->_link):mysql_query($G,$this->_link));$this->error="";if(!$H){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
true;}return
new
Min_Result($H);}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
false;return
mysql_result($H->_result,0,$o);}}class
Min_Result{var$num_rows,$_result,$_offset=0;function
__construct($H){$this->_result=$H;$this->num_rows=mysql_num_rows($H);}function
fetch_assoc(){return
mysql_fetch_assoc($this->_result);}function
fetch_row(){return
mysql_fetch_row($this->_result);}function
fetch_field(){$I=mysql_fetch_field($this->_result,$this->_offset++);$I->orgtable=$I->table;$I->orgname=$I->name;$I->charsetnr=($I->blob?63:0);return$I;}function
__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
Min_DB
extends
Min_PDO{var$extension="PDO_MySQL";function
connect($M,$V,$F){global$b;$_f=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Eh=$b->connectSsl();if($Eh){if(!empty($Eh['key']))$_f[PDO::MYSQL_ATTR_SSL_KEY]=$Eh['key'];if(!empty($Eh['cert']))$_f[PDO::MYSQL_ATTR_SSL_CERT]=$Eh['cert'];if(!empty($Eh['ca']))$_f[PDO::MYSQL_ATTR_SSL_CA]=$Eh['ca'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$M)),$V,$F,$_f);return
true;}function
set_charset($ab){$this->query("SET NAMES $ab");}function
select_db($j){return$this->query("USE ".idf_escape($j));}function
query($G,$Ei=false){$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ei);return
parent::query($G,$Ei);}}}class
Min_Driver
extends
Min_SQL{function
insert($Q,$N){return($N?parent::insert($Q,$N):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
insertUpdate($Q,$K,$ng){$e=array_keys(reset($K));$lg="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$Wi=array();foreach($e
as$z)$Wi[$z]="$z = VALUES($z)";$Mh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Wi);$Wi=array();$we=0;foreach($K
as$N){$Y="(".implode(", ",$N).")";if($Wi&&(strlen($lg)+$we+strlen($Y)+strlen($Mh)>1e6)){if(!queries($lg.implode(",\n",$Wi).$Mh))return
false;$Wi=array();$we=0;}$Wi[]=$Y;$we+=strlen($Y)+2;}return
queries($lg.implode(",\n",$Wi).$Mh);}function
slowQuery($G,$hi){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$hi FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($hi*1000).") */ $C[2]";}}function
convertSearch($v,$X,$o){return(preg_match('~char|text|enum|set~',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->_conn).")":$v);}function
warnings(){$H=$this->_conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return
ob_get_clean();}}function
tableHelp($D){$Ce=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
strtolower(($Ce?"information-schema-$D-table/":str_replace("_","-",$D)."-table.html"));if(DB=="mysql")return($Ce?"mysql$D-table/":"system-database.html");}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
connect(){global$b,$U,$Jh;$g=new
Min_DB;$Mb=$b->credentials();if($g->connect($Mb[0],$Mb[1],$Mb[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version('5.7.8',10.2,$g)){$Jh[lang(25)][]="json";$U["json"]=4294967295;}return$g;}$I=$g->error;if(function_exists('iconv')&&!is_utf8($I)&&strlen($ah=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$ah;return$I;}function
get_databases($fd){$I=get_session("dbs");if($I===null){$G=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$I=($fd?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function
limit($G,$Z,$_,$kf=0,$kh=" "){return" $G$Z".($_!==null?$kh."LIMIT $_".($kf?" OFFSET $kf":""):"");}function
limit1($Q,$G,$Z,$kh="\n"){return
limit($G,$Z,1,0,$kh);}function
db_collation($l,$nb){global$g;$I=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$C))$I=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$C))$I=$nb[$C[1]][-1];return$I;}function
engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function
logged_user(){global$g;return$g->result("SELECT USER()");}function
tables_list(){return
get_key_vals(min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
count_tables($k){$I=array();foreach($k
as$l)$I[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$I;}function
table_status($D="",$Uc=false){$I=array();foreach(get_rows($Uc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($D!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
is_view($R){return$R["Engine"]===null;}function
fk_support($R){return
preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&min_version(5.6));}function
fields($Q){$I=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$J){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$J["Type"],$C);$I[$J["Field"]]=array("field"=>$J["Field"],"full_type"=>$J["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($J["Default"]!=""||preg_match("~char|set~",$C[1])?(preg_match('~text~',$C[1])?stripslashes(preg_replace("~^'(.*)'\$~",'\1',$J["Default"])):$J["Default"]):null),"null"=>($J["Null"]=="YES"),"auto_increment"=>($J["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$J["Extra"],$C)?$C[1]:""),"collation"=>$J["Collation"],"privileges"=>array_flip(preg_split('~, *~',$J["Privileges"])),"comment"=>$J["Comment"],"primary"=>($J["Key"]=="PRI"),"generated"=>preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$J["Extra"]),);}return$I;}function
indexes($Q,$h=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$h)as$J){$D=$J["Key_name"];$I[$D]["type"]=($D=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$D]["columns"][]=$J["Column_name"];$I[$D]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$D]["descs"][]=null;}return$I;}function
foreign_keys($Q){global$g,$sf;static$cg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$Kb=$g->result("SHOW CREATE TABLE ".table($Q),1);if($Kb){preg_match_all("~CONSTRAINT ($cg) FOREIGN KEY ?\\(((?:$cg,? ?)+)\\) REFERENCES ($cg)(?:\\.($cg))? \\(((?:$cg,? ?)+)\\)(?: ON DELETE ($sf))?(?: ON UPDATE ($sf))?~",$Kb,$Fe,PREG_SET_ORDER);foreach($Fe
as$C){preg_match_all("~$cg~",$C[2],$yh);preg_match_all("~$cg~",$C[5],$Zh);$I[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$yh[0]),"target"=>array_map('idf_unescape',$Zh[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$I;}function
view($D){global$g;return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("SHOW CREATE VIEW ".table($D),1)));}function
collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I
as$z=>$X)asort($I[$z]);return$I;}function
information_schema($l){return(min_version(5)&&$l=="information_schema")||(min_version(5.5)&&$l=="performance_schema");}function
error(){global$g;return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function
create_database($l,$mb){return
queries("CREATE DATABASE ".idf_escape($l).($mb?" COLLATE ".q($mb):""));}function
drop_databases($k){$I=apply_queries("DROP DATABASE",$k,'idf_escape');restart_session();set_session("dbs",null);return$I;}function
rename_database($D,$mb){$I=false;if(create_database($D,$mb)){$S=array();$bj=array();foreach(tables_list()as$Q=>$T){if($T=='VIEW')$bj[]=$Q;else$S[]=$Q;}$I=(!$S&&!$bj)||move_tables($S,$bj,$D);drop_databases($I?array(DB):array());}return$I;}function
auto_increment(){$Ma=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$Ma="";break;}if($w["type"]=="PRIMARY")$Ma=" UNIQUE";}}return" AUTO_INCREMENT$Ma";}function
alter_table($Q,$D,$p,$hd,$tb,$_c,$mb,$La,$Wf){$c=array();foreach($p
as$o)$c[]=($o[1]?($Q!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($Q!=""?$o[2]:""):"DROP ".idf_escape($o[0]));$c=array_merge($c,$hd);$O=($tb!==null?" COMMENT=".q($tb):"").($_c?" ENGINE=".q($_c):"").($mb?" COLLATE ".q($mb):"").($La!=""?" AUTO_INCREMENT=$La":"");if($Q=="")return
queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)$O$Wf");if($Q!=$D)$c[]="RENAME TO ".table($D);if($O)$c[]=ltrim($O);return($c||$Wf?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$c).$Wf):true);}function
alter_indexes($Q,$c){foreach($c
as$z=>$X)$c[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
queries("ALTER TABLE ".table($Q).implode(",",$c));}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($bj){return
queries("DROP VIEW ".implode(", ",array_map('table',$bj)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
move_tables($S,$bj,$Zh){global$g;$Mg=array();foreach($S
as$Q)$Mg[]=table($Q)." TO ".idf_escape($Zh).".".table($Q);if(!$Mg||queries("RENAME TABLE ".implode(", ",$Mg))){$bc=array();foreach($bj
as$Q)$bc[table($Q)]=view($Q);$g->select_db($Zh);$l=idf_escape(DB);foreach($bc
as$D=>$aj){if(!queries("CREATE VIEW $D AS ".str_replace(" $l."," ",$aj["select"]))||!queries("DROP VIEW $l.$D"))return
false;}return
true;}return
false;}function
copy_tables($S,$bj,$Zh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
as$Q){$D=($Zh==DB?table("copy_$Q"):idf_escape($Zh).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $D"))||!queries("CREATE TABLE $D LIKE ".table($Q))||!queries("INSERT INTO $D SELECT * FROM ".table($Q)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J){$zi=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Zh==DB?idf_escape("copy_$zi"):idf_escape($Zh).".".idf_escape($zi))." $J[Timing] $J[Event] ON $D FOR EACH ROW\n$J[Statement];"))return
false;}}foreach($bj
as$Q){$D=($Zh==DB?table("copy_$Q"):idf_escape($Zh).".".table($Q));$aj=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $D"))||!queries("CREATE VIEW $D AS $aj[select]"))return
false;}return
true;}function
trigger($D){if($D=="")return
array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return
reset($K);}function
triggers($Q){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($D,$T){global$g,$Bc,$Vd,$U;$Ca=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$zh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Di="((".implode("|",array_merge(array_keys($U),$Ca)).")\\b(?:\\s*\\(((?:[^'\")]|$Bc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$cg="$zh*(".($T=="FUNCTION"?"":$Vd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Di";$i=$g->result("SHOW CREATE $T ".idf_escape($D),2);preg_match("~\\(((?:$cg\\s*,?)*)\\)\\s*".($T=="FUNCTION"?"RETURNS\\s+$Di\\s+":"")."(.*)~is",$i,$C);$p=array();preg_match_all("~$cg\\s*,?~is",$C[1],$Fe,PREG_SET_ORDER);foreach($Fe
as$Qf)$p[]=array("field"=>str_replace("``","`",$Qf[2]).$Qf[3],"type"=>strtolower($Qf[5]),"length"=>preg_replace_callback("~$Bc~s",'normalize_enum',$Qf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Qf[8] $Qf[7]"))),"null"=>1,"full_type"=>$Qf[4],"inout"=>strtoupper($Qf[1]),"collation"=>strtolower($Qf[9]),);if($T!="FUNCTION")return
array("fields"=>$p,"definition"=>$C[11]);return
array("fields"=>$p,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[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 = ".q(DB));}function
routine_languages(){return
array();}function
routine_id($D,$J){return
idf_escape($D);}function
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
explain($g,$G){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$G);}function
found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
types(){return
array();}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($ch,$h=null){return
true;}function
create_sql($Q,$La,$Kh){global$g;$I=$g->result("SHOW CREATE TABLE ".table($Q),1);if(!$La)$I=preg_replace('~ AUTO_INCREMENT=\d+~','',$I);return$I;}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
use_sql($j){return"USE ".idf_escape($j);}function
trigger_sql($Q){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function
show_variables(){return
get_key_vals("SHOW VARIABLES");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
show_status(){return
get_key_vals("SHOW STATUS");}function
convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function
unconvert_field($o,$I){if(preg_match("~binary~",$o["type"]))$I="UNHEX($I)";if($o["type"]=="bit")$I="CONV($I, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))$I=(min_version(8)?"ST_":"")."GeomFromText($I, SRID($o[field]))";return$I;}function
support($Vc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view")))."~",$Vc);}function
kill_process($X){return
queries("KILL ".number($X));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){global$g;return$g->result("SELECT @@max_connections");}function
driver_config(){$U=array();$Jh=array();foreach(array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(28)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(25)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(80)=>array("enum"=>65535,"set"=>64),lang(29)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(31)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$U+=$X;$Jh[$z]=array_keys($X);}return
array('possible_drivers'=>array("MySQLi","MySQL","PDO_MySQL"),'jush'=>"sql",'types'=>$U,'structured_types'=>$Jh,'unsigned'=>array("unsigned","zerofill","unsigned zerofill"),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),'functions'=>array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"),'grouping'=>array("avg","count","count distinct","group_concat","max","min","sum"),'edit_functions'=>array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",)),);}}$xb=driver_config();$kg=$xb['possible_drivers'];$y=$xb['jush'];$U=$xb['types'];$Jh=$xb['structured_types'];$Ki=$xb['unsigned'];$xf=$xb['operators'];$pd=$xb['functions'];$vd=$xb['grouping'];$sc=$xb['edit_functions'];if($b->operators===null)$b->operators=$xf;define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ia="4.8.1";function
page_header($ji,$n="",$Va=array(),$ki=""){global$ca,$ia,$b,$kc,$y;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$li=$ji.($ki!=""?": $ki":"");$mi=strip_tags($li.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
<html lang="',$ca,'" dir="',lang(81),'">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<title>',$mi,'</title>
<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=4.8.1"),'">
',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.8.1");if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.8.1"),'">
<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.8.1"),'">
';foreach($b->css()as$Ob){echo'<link rel="stylesheet" type="text/css" href="',h($Ob),'">
';}}echo'
<body class="',lang(81),' nojs">
';$q=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($q)&&filemtime($q)+86400>time()){$Zi=unserialize(file_get_contents($q));$wg="-----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($Zi["version"],base64_decode($Zi["signature"]),$wg)==1)$_COOKIE["adminer_version"]=$Zi["version"];}echo'<script',nonce(),'>
mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')");?>});
document.body.className = document.body.className.replace(/ nojs/, ' js');
var offlineMessage = '<?php echo
js_escape(lang(82)),'\';
var thousandsSeparator = \'',js_escape(lang(5)),'\';
</script>
<div id="help" class="jush-',$y,' jsonly hidden"></div>
',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
<div id="content">
';if($Va!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$kc[DRIVER].'</a> &raquo; ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$M=$b->serverName(SERVER);$M=($M!=""?$M:lang(34));if($Va===false)echo"$M\n";else{echo"<a href='".h($A)."' accesskey='1' title='Alt+Shift+1'>$M</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Va)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Va)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Va
as$z=>$X){$dc=(is_array($X)?$X[1]:h($X));if($dc!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$dc</a> &raquo; ";}}echo"$ji\n";}}echo"<h2>$li</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($n);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define("PAGE_HEADER",1);}function
page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Nb){$Ad=array();foreach($Nb
as$z=>$X)$Ad[]="$z $X";header("Content-Security-Policy: ".implode("; ",$Ad));}$b->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$ef;if(!$ef)$ef=base64_encode(rand_string());return$ef;}function
page_messages($n){$Mi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Re=$_SESSION["messages"][$Mi];if($Re){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Re)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Mi]);}if($n)echo"<div class='error'>$n</div>\n";}function
page_footer($Ue=""){global$b,$qi;echo'</div>
';switch_lang();if($Ue!="auth"){echo'<form action="" method="post">
<p class="logout">
<input type="submit" name="logout" value="',lang(83),'" id="logout">
<input type="hidden" name="token" value="',$qi,'">
</p>
</form>
';}echo'<div id="menu">
';$b->navigation($Ue);echo'</div>
',script("setupSubmitHighlight(document);");}function
int32($Xe){while($Xe>=2147483648)$Xe-=4294967296;while($Xe<=-2147483649)$Xe+=4294967296;return(int)$Xe;}function
long2str($W,$dj){$ah='';foreach($W
as$X)$ah.=pack('V',$X);if($dj)return
substr($ah,0,end($W));return$ah;}function
str2long($ah,$dj){$W=array_values(unpack('V*',str_pad($ah,4*ceil(strlen($ah)/4),"\0")));if($dj)$W[]=strlen($ah);return$W;}function
xxtea_mx($pj,$oj,$Nh,$he){return
int32((($pj>>5&0x7FFFFFF)^$oj<<2)+(($oj>>3&0x1FFFFFFF)^$pj<<4))^int32(($Nh^$oj)+($he^$pj));}function
encrypt_string($Ih,$z){if($Ih=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ih,true);$Xe=count($W)-1;$pj=$W[$Xe];$oj=$W[0];$xg=floor(6+52/($Xe+1));$Nh=0;while($xg-->0){$Nh=int32($Nh+0x9E3779B9);$rc=$Nh>>2&3;for($Of=0;$Of<$Xe;$Of++){$oj=$W[$Of+1];$We=xxtea_mx($pj,$oj,$Nh,$z[$Of&3^$rc]);$pj=int32($W[$Of]+$We);$W[$Of]=$pj;}$oj=$W[0];$We=xxtea_mx($pj,$oj,$Nh,$z[$Of&3^$rc]);$pj=int32($W[$Xe]+$We);$W[$Xe]=$pj;}return
long2str($W,false);}function
decrypt_string($Ih,$z){if($Ih=="")return"";if(!$z)return
false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ih,false);$Xe=count($W)-1;$pj=$W[$Xe];$oj=$W[0];$xg=floor(6+52/($Xe+1));$Nh=int32($xg*0x9E3779B9);while($Nh){$rc=$Nh>>2&3;for($Of=$Xe;$Of>0;$Of--){$pj=$W[$Of-1];$We=xxtea_mx($pj,$oj,$Nh,$z[$Of&3^$rc]);$oj=int32($W[$Of]-$We);$W[$Of]=$oj;}$pj=$W[$Xe];$We=xxtea_mx($pj,$oj,$Nh,$z[$Of&3^$rc]);$oj=int32($W[0]-$We);$W[0]=$oj;$Nh=int32($Nh-0x9E3779B9);}return
long2str($W,true);}$g='';$_d=$_SESSION["token"];if(!$_d)$_SESSION["token"]=rand(1,1e6);$qi=get_token();$eg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$eg[$z]=$X;}}function
add_invalid_login(){global$b;$nd=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$nd)return;$ae=unserialize(stream_get_contents($nd));$gi=time();if($ae){foreach($ae
as$be=>$X){if($X[0]<$gi)unset($ae[$be]);}}$Zd=&$ae[$b->bruteForceKey()];if(!$Zd)$Zd=array($gi+30*60,0);$Zd[1]++;file_write_unlock($nd,serialize($ae));}function
check_invalid_login(){global$b;$ae=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Zd=($ae?$ae[$b->bruteForceKey()]:array());$df=($Zd[1]>29?$Zd[0]-time():0);if($df>0)auth_error(lang(84,ceil($df/60)));}$Ja=$_POST["auth"];if($Ja){session_regenerate_id();$Yi=$Ja["driver"];$M=$Ja["server"];$V=$Ja["username"];$F=(string)$Ja["password"];$l=$Ja["db"];set_password($Yi,$M,$V,$F);$_SESSION["db"][$Yi][$M][$V][$l]=true;if($Ja["permanent"]){$z=base64_encode($Yi)."-".base64_encode($M)."-".base64_encode($V)."-".base64_encode($l);$qg=$b->permanentLogin(true);$eg[$z]="$z:".base64_encode($qg?encrypt_string($F,$qg):"");cookie("adminer_permanent",implode(" ",$eg));}if(count($_POST)==1||DRIVER!=$Yi||SERVER!=$M||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($Yi,$M,$V,$l));}elseif($_POST["logout"]&&(!$_d||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(85).' '.lang(86));}elseif($eg&&!$_SESSION["pwds"]){session_regenerate_id();$qg=$b->permanentLogin();foreach($eg
as$z=>$X){list(,$gb)=explode(":",$X);list($Yi,$M,$V,$l)=array_map('base64_decode',explode("-",$z));set_password($Yi,$M,$V,decrypt_string(base64_decode($gb),$qg));$_SESSION["db"][$Yi][$M][$V][$l]=true;}}function
unset_permanent(){global$eg;foreach($eg
as$z=>$X){list($Yi,$M,$V,$l)=array_map('base64_decode',explode("-",$z));if($Yi==DRIVER&&$M==SERVER&&$V==$_GET["username"]&&$l==DB)unset($eg[$z]);}cookie("adminer_permanent",implode(" ",$eg));}function
auth_error($n){global$b,$_d;$ph=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$ph]||$_GET[$ph])&&!$_d)$n=lang(87);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$n.=($n?'<br>':'').lang(88,target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$ph]&&$_GET[$ph]&&ini_bool("session.use_only_cookies"))$n=lang(89);$Rf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$Rf["lifetime"]);page_header(lang(38),$n,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".lang(90)."\n";echo"</div>\n";$b->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(91),lang(92,implode(", ",$kg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Fd,$gg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$gg,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(93));check_invalid_login();$g=connect();$m=new
Min_Driver($g);}$_e=null;if(!is_object($g)||($_e=$b->login($_GET["username"],get_password()))!==true){$n=(is_string($g)?h($g):(is_string($_e)?$_e:lang(32)));auth_error($n.(preg_match('~^ | $~',get_password())?'<br>'.lang(94):''));}if($_POST["logout"]&&$_d&&!verify_token()){page_header(lang(83),lang(95));page_footer("db");exit;}if($Ja&&$_POST["token"])$_POST["token"]=$qi;$n='';if($_POST){if(!verify_token()){$Ud="max_input_vars";$Le=ini_get($Ud);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Le||$X<$Le)){$Ud=$z;$Le=$X;}}}$n=(!$_POST["token"]&&$Le?lang(96,"'$Ud'"):lang(95).' '.lang(97));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=lang(98,"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.lang(99);}function
select($H,$h=null,$Ef=array(),$_=0){global$y;$ze=array();$x=array();$e=array();$Ta=array();$U=array();$I=array();odd('');for($t=0;(!$_||$t<$_)&&($J=$H->fetch_row());$t++){if(!$t){echo"<div class='scrollable'>\n","<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($ge=0;$ge<count($J);$ge++){$o=$H->fetch_field();$D=$o->name;$Df=$o->orgtable;$Cf=$o->orgname;$I[$o->table]=$Df;if($Ef&&$y=="sql")$ze[$ge]=($D=="table"?"table=":($D=="possible_keys"?"indexes=":null));elseif($Df!=""){if(!isset($x[$Df])){$x[$Df]=array();foreach(indexes($Df,$h)as$w){if($w["type"]=="PRIMARY"){$x[$Df]=array_flip($w["columns"]);break;}}$e[$Df]=$x[$Df];}if(isset($e[$Df][$Cf])){unset($e[$Df][$Cf]);$x[$Df][$Cf]=$ge;$ze[$ge]=$Df;}}if($o->charsetnr==63)$Ta[$ge]=true;$U[$ge]=$o->type;echo"<th".($Df!=""||$o->name!=$Cf?" title='".h(($Df!=""?"$Df.":"").$Cf)."'":"").">".h($D).($Ef?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($D),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($J
as$z=>$X){$A="";if(isset($ze[$z])&&!$e[$ze[$z]]){if($Ef&&$y=="sql"){$Q=$J[array_search("table=",$ze)];$A=ME.$ze[$z].urlencode($Ef[$Q]!=""?$Ef[$Q]:$Q);}else{$A=ME."edit=".urlencode($ze[$z]);foreach($x[$ze[$z]]as$kb=>$ge)$A.="&where".urlencode("[".bracket_escape($kb)."]")."=".urlencode($J[$ge]);}}elseif(is_url($X))$A=$X;if($X===null)$X="<i>NULL</i>";elseif($Ta[$z]&&!is_utf8($X))$X="<i>".lang(47,strlen($X))."</i>";else{$X=h($X);if($U[$z]==254)$X="<code>$X</code>";}if($A)$X="<a href='".h($A)."'".(is_url($A)?target_blank():'').">$X</a>";echo"<td>$X";}}echo($t?"</table>\n</div>":"<p class='message'>".lang(12))."\n";return$I;}function
referencable_primary($ih){$I=array();foreach(table_status('',true)as$Rh=>$Q){if($Rh!=$ih&&fk_support($Q)){foreach(fields($Rh)as$o){if($o["primary"]){if($I[$Rh]){unset($I[$Rh]);break;}$I[$Rh]=$o;}}}}return$I;}function
adminer_settings(){parse_str($_COOKIE["adminer_settings"],$rh);return$rh;}function
adminer_setting($z){$rh=adminer_settings();return$rh[$z];}function
set_adminer_settings($rh){return
cookie("adminer_settings",http_build_query($rh+adminer_settings()));}function
textarea($D,$Y,$K=10,$pb=80){global$y;echo"<textarea name='$D' rows='$K' cols='$pb' class='sqlarea jush-$y' 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
edit_type($z,$o,$nb,$jd=array(),$Rc=array()){global$Jh,$U,$Ki,$sf;$T=$o["type"];echo'<td><select name="',h($z),'[type]" class="type" aria-labelledby="label-type">';if($T&&!isset($U[$T])&&!isset($jd[$T])&&!in_array($T,$Rc))$Rc[]=$T;if($jd)$Jh[lang(100)]=$jd;echo
optionlist(array_merge($Rc,$Jh),$T),'</select><td><input name="',h($z),'[length]" value="',h($o["length"]),'" size="3"',(!$o["length"]&&preg_match('~var(char|binary)$~',$T)?" class='required'":"");echo' aria-labelledby="label-length"><td class="options">',"<select name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$T)?"":" class='hidden'").'><option value="">('.lang(101).')'.optionlist($nb,$o["collation"]).'</select>',($Ki?"<select name='".h($z)."[unsigned]'".(!$T||preg_match(number_type(),$T)?"":" class='hidden'").'><option>'.optionlist($Ki,$o["unsigned"]).'</select>':''),(isset($o['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$T)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(102).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$o["on_update"])?"CURRENT_TIMESTAMP":$o["on_update"])).'</select>':''),($jd?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$T)?"":" class='hidden'")."><option value=''>(".lang(103).")".optionlist(explode("|",$sf),$o["on_delete"])."</select> ":" ");}function
process_length($we){global$Bc;return(preg_match("~^\\s*\\(?\\s*$Bc(?:\\s*,\\s*$Bc)*+\\s*\\)?\\s*\$~",$we)&&preg_match_all("~$Bc~",$we,$Fe)?"(".implode(",",$Fe[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$we)));}function
process_type($o,$lb="COLLATE"){global$Ki;return" $o[type]".process_length($o["length"]).(preg_match(number_type(),$o["type"])&&in_array($o["unsigned"],$Ki)?" $o[unsigned]":"").(preg_match('~char|text|enum|set~',$o["type"])&&$o["collation"]?" $lb ".q($o["collation"]):"");}function
process_field($o,$Ci){return
array(idf_escape(trim($o["field"])),process_type($Ci),($o["null"]?" NULL":" NOT NULL"),default_value($o),(preg_match('~timestamp|datetime~',$o["type"])&&$o["on_update"]?" ON UPDATE $o[on_update]":""),(support("comment")&&$o["comment"]!=""?" COMMENT ".q($o["comment"]):""),($o["auto_increment"]?auto_increment():null),);}function
default_value($o){$Yb=$o["default"];return($Yb===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$o["type"])||preg_match('~^(?![a-z])~i',$Yb)?q($Yb):$Yb));}function
type_class($T){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$T))return" class='$z'";}}function
edit_fields($p,$nb,$T="TABLE",$jd=array()){global$Vd;$p=array_values($p);$Zb=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class='hidden'");$ub=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class='hidden'");echo'<thead><tr>
';if($T=="PROCEDURE"){echo'<td>';}echo'<th id="label-name">',($T=="TABLE"?lang(104):lang(105)),'<td id="label-type">',lang(49),'<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;"></textarea>',script("qs('#enum-edit').onblur = editingLengthBlur;"),'<td id="label-length">',lang(106),'<td>',lang(107);if($T=="TABLE"){echo'<td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym id="label-ai" title="',lang(51),'">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td id="label-default"',$Zb,'>',lang(52),(support("comment")?"<td id='label-comment'$ub>".lang(50):"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($p))."]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."' alt='+' title='".lang(108)."'>".script("row_count = ".count($p).";"),'</thead>
<tbody>
',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($p
as$t=>$o){$t++;$Ff=$o[($_POST?"orig":"field")];$hc=(isset($_POST["add"][$t-1])||(isset($o["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$Ff=="");echo'<tr',($hc?"":" style='display: none;'"),'>
',($T=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$Vd),$o["inout"]):""),'<th>';if($hc){echo'<input name="fields[',$t,'][field]" value="',h($o["field"]),'" data-maxlength="64" autocapitalize="off" aria-labelledby="label-name">';}echo'<input type="hidden" name="fields[',$t,'][orig]" value="',h($Ff),'">';edit_type("fields[$t]",$o,$nb,$jd);if($T=="TABLE"){echo'<td>',checkbox("fields[$t][null]",1,$o["null"],"","","block","label-null"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$t,'"';if($o["auto_increment"]){echo' checked';}echo' aria-labelledby="label-ai"></label><td',$Zb,'>',checkbox("fields[$t][has_default]",1,$o["has_default"],"","","","label-default"),'<input name="fields[',$t,'][default]" value="',h($o["default"]),'" aria-labelledby="label-default">',(support("comment")?"<td$ub><input name='fields[$t][comment]' value='".h($o["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."' alt='+' title='".lang(108)."'> "."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=up.gif&version=4.8.1")."' alt='↑' title='".lang(109)."'> "."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=down.gif&version=4.8.1")."' alt='↓' title='".lang(110)."'> ":""),($Ff==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.1")."' alt='x' title='".lang(111)."'>":"");}}function
process_fields(&$p){$kf=0;if($_POST["up"]){$qe=0;foreach($p
as$z=>$o){if(key($_POST["up"])==$z){unset($p[$z]);array_splice($p,$qe,0,array($o));break;}if(isset($o["field"]))$qe=$kf;$kf++;}}elseif($_POST["down"]){$ld=false;foreach($p
as$z=>$o){if(isset($o["field"])&&$ld){unset($p[key($_POST["down"])]);array_splice($p,$kf,0,array($ld));break;}if(key($_POST["down"])==$z)$ld=$o;$kf++;}}elseif($_POST["add"]){$p=array_values($p);array_splice($p,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function
grant($qd,$sg,$e,$rf){if(!$sg)return
true;if($sg==array("ALL PRIVILEGES","GRANT OPTION"))return($qd=="GRANT"?queries("$qd ALL PRIVILEGES$rf WITH GRANT OPTION"):queries("$qd ALL PRIVILEGES$rf")&&queries("$qd GRANT OPTION$rf"));return
queries("$qd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$sg).$e).$rf);}function
drop_create($lc,$i,$mc,$di,$oc,$B,$Qe,$Oe,$Pe,$of,$bf){if($_POST["drop"])query_redirect($lc,$B,$Qe);elseif($of=="")query_redirect($i,$B,$Pe);elseif($of!=$bf){$Lb=queries($i);queries_redirect($B,$Oe,$Lb&&queries($lc));if($Lb)queries($mc);}else
queries_redirect($B,$Oe,queries($di)&&queries($oc)&&queries($lc)&&queries($i));}function
create_trigger($rf,$J){global$y;$ii=" $J[Timing] $J[Event]".(preg_match('~ OF~',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($y=="mssql"?$rf.$ii:$ii.$rf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
create_routine($Wg,$J){global$Vd,$y;$N=array();$p=(array)$J["fields"];ksort($p);foreach($p
as$o){if($o["field"]!="")$N[]=(preg_match("~^($Vd)\$~",$o["inout"])?"$o[inout] ":"").idf_escape($o["field"]).process_type($o,"CHARACTER SET");}$ac=rtrim("\n$J[definition]",";");return"CREATE $Wg ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($y=="pgsql"?" AS ".q($ac):"$ac;");}function
remove_definer($G){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
format_foreign_key($r){global$sf;$l=$r["db"];$ff=$r["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$r["source"])).") REFERENCES ".($l!=""&&$l!=$_GET["db"]?idf_escape($l).".":"").($ff!=""&&$ff!=$_GET["ns"]?idf_escape($ff).".":"").table($r["table"])." (".implode(", ",array_map('idf_escape',$r["target"])).")".(preg_match("~^($sf)\$~",$r["on_delete"])?" ON DELETE $r[on_delete]":"").(preg_match("~^($sf)\$~",$r["on_update"])?" ON UPDATE $r[on_update]":"");}function
tar_file($q,$ni){$I=pack("a100a8a8a8a12a12",$q,644,0,0,decoct($ni->size),decoct(time()));$fb=8*32;for($t=0;$t<strlen($I);$t++)$fb+=ord($I[$t]);$I.=sprintf("%06o",$fb)."\0 ";echo$I,str_repeat("\0",512-strlen($I));$ni->send();echo
str_repeat("\0",511-($ni->size+511)%512);}function
ini_bytes($Ud){$X=ini_get($Ud);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
doc_link($bg,$ei="<sup>?</sup>"){global$y,$g;$nh=$g->server_info;$Zi=preg_replace('~^(\d\.?\d).*~s','\1',$nh);$Oi=array('sql'=>"https://dev.mysql.com/doc/refman/$Zi/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Zi/",'mssql'=>"https://msdn.microsoft.com/library/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$nh)."&id=",);if(preg_match('~MariaDB~',$nh)){$Oi['sql']="https://mariadb.com/kb/en/library/";$bg['sql']=(isset($bg['mariadb'])?$bg['mariadb']:str_replace(".html","/",$bg['sql']));}return($bg[$y]?"<a href='".h($Oi[$y].$bg[$y])."'".target_blank().">$ei</a>":"");}function
ob_gzencode($P){return
gzencode($P);}function
db_size($l){global$g;if(!$g->select_db($l))return"?";$I=0;foreach(table_status()as$R)$I+=$R["Data_length"]+$R["Index_length"];return
format_number($I);}function
set_utf8mb4($i){global$g;static$N=false;if(!$N&&preg_match('~\butf8mb4~i',$i)){$N=true;echo"SET NAMES ".charset($g).";\n\n";}}function
connect_error(){global$b,$g,$qi,$n,$kc;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(37).": ".h(DB),lang(112),true);}else{if($_POST["db"]&&!$n)queries_redirect(substr(ME,0,-1),lang(113),drop_databases($_POST["db"]));page_header(lang(114),$n,false);echo"<p class='links'>\n";foreach(array('database'=>lang(115),'privileges'=>lang(71),'processlist'=>lang(116),'variables'=>lang(117),'status'=>lang(118),)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".lang(119,$kc[DRIVER],"<b>".h($g->server_info)."</b>","<b>$g->extension</b>")."\n","<p>".lang(120,"<b>".h(logged_user())."</b>")."\n";$k=$b->databases();if($k){$dh=support("scheme");$nb=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".lang(37)." - <a href='".h(ME)."refresh=1'>".lang(121)."</a>"."<td>".lang(122)."<td>".lang(123)."<td>".lang(124)." - <a href='".h(ME)."dbsize=1'>".lang(125)."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$k=($_GET["dbsize"]?count_tables($k):array_flip($k));foreach($k
as$l=>$S){$Vg=h(ME)."db=".urlencode($l);$u=h("Db-".$l);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$l,in_array($l,(array)$_POST["db"]),"","","",$u):""),"<th><a href='$Vg' id='$u'>".h($l)."</a>";$mb=h(db_collation($l,$nb));echo"<td>".(support("database")?"<a href='$Vg".($dh?"&amp;ns=":"")."&amp;database=' title='".lang(67)."'>$mb</a>":$mb),"<td align='right'><a href='$Vg&amp;schema=' id='tables-".h($l)."' title='".lang(70)."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($l)."'>".($_GET["dbsize"]?db_size($l):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".lang(126)." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value=''>".script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".lang(127)."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),"<input type='hidden' name='token' value='$qi'>\n","</form>\n",script("tableCheck();");}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$g->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);}connect_error();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(lang(77).": ".h($_GET["ns"]),lang(128),true);page_footer("ns");exit;}}}$sf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Eb){$this->size+=strlen($Eb);fwrite($this->handler,$Eb);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Bc="'(?:''|[^'\\\\]|\\\\.)*'";$Vd="IN|OUT|INOUT";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"];$p=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$m->select($a,$L,array(where($_GET,$p)),$L);$J=($H?$H->fetch_row():array());echo$m->value($J[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$R=table_status1($a,true);$D=$b->tableName($R);page_header(($p&&is_view($R)?$R['Engine']=='materialized view'?lang(129):lang(130):lang(131)).": ".($D!=""?$D:h($a)),$n);$b->selectLinks($R);$tb=$R["Comment"];if($tb!="")echo"<p class='nowrap'>".lang(50).": ".h($tb)."\n";if($p)$b->tableStructurePrint($p);if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".lang(132)."</h3>\n";$x=indexes($a);if($x)$b->tableIndexesPrint($x);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(133)."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".lang(100)."</h3>\n";$jd=foreign_keys($a);if($jd){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(134)."<td>".lang(135)."<td>".lang(103)."<td>".lang(102)."<td></thead>\n";foreach($jd
as$D=>$r){echo"<tr title='".h($D)."'>","<th><i>".implode("</i>, <i>",array_map('h',$r["source"]))."</i>","<td><a href='".h($r["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($r["db"]),ME):($r["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($r["ns"]),ME):ME))."table=".urlencode($r["table"])."'>".($r["db"]!=""?"<b>".h($r["db"])."</b>.":"").($r["ns"]!=""?"<b>".h($r["ns"])."</b>.":"").h($r["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$r["target"]))."</i>)","<td>".h($r["on_delete"])."\n","<td>".h($r["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($D)).'">'.lang(136).'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(137)."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(138)."</h3>\n";$Bi=triggers($a);if($Bi){echo"<table cellspacing='0'>\n";foreach($Bi
as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".lang(136)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(139)."</a>\n";}}elseif(isset($_GET["schema"])){page_header(lang(70),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Th=array();$Uh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$Fe,PREG_SET_ORDER);foreach($Fe
as$t=>$C){$Th[$C[1]]=array($C[2],$C[3]);$Uh[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$ri=0;$Qa=-1;$ch=array();$Hg=array();$ue=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$hg=0;$ch[$Q]["fields"]=array();foreach(fields($Q)as$D=>$o){$hg+=1.25;$o["pos"]=$hg;$ch[$Q]["fields"][$D]=$o;}$ch[$Q]["pos"]=($Th[$Q]?$Th[$Q]:array($ri,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$se=$Qa;if($Th[$Q][1]||$Th[$X["table"]][1])$se=min(floatval($Th[$Q][1]),floatval($Th[$X["table"]][1]))-1;else$Qa-=.1;while($ue[(string)$se])$se-=.0001;$ch[$Q]["references"][$X["table"]][(string)$se]=array($X["source"],$X["target"]);$Hg[$X["table"]][$Q][(string)$se]=$X["target"];$ue[(string)$se]=true;}}$ri=max($ri,$ch[$Q]["pos"][0]+2.5+$hg);}echo'<div id="schema" style="height: ',$ri,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = function () { return false; };
var tablePos = {',implode(",",$Uh)."\n",'};
var em = qs(\'#schema\').offsetHeight / ',$ri,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($ch
as$D=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($D).'"><b>'.h($D)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$o){$X='<span'.type_class($o["type"]).' title="'.h($o["full_type"].($o["null"]?" NULL":'')).'">'.h($o["field"]).'</span>';echo"<br>".($o["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$ai=>$Ig){foreach($Ig
as$se=>$Eg){$te=$se-$Th[$D][1];$t=0;foreach($Eg[0]as$yh)echo"\n<div class='references' title='".h($ai)."' id='refs$se-".($t++)."' style='left: $te"."em; top: ".$Q["fields"][$yh]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$te)."em;'></div></div>";}}foreach((array)$Hg[$D]as$ai=>$Ig){foreach($Ig
as$se=>$e){$te=$se-$Th[$D][1];$t=0;foreach($e
as$Zh)echo"\n<div class='references' title='".h($ai)."' id='refd$se-".($t++)."' style='left: $te"."em; top: ".$Q["fields"][$Zh]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME)."?file=arrow.gif) no-repeat right center;&version=4.8.1")."'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$te)."em;'></div></div>";}}echo"\n</div>\n";}foreach($ch
as$D=>$Q){foreach((array)$Q["references"]as$ai=>$Ig){foreach($Ig
as$se=>$Eg){$Te=$ri;$Je=-10;foreach($Eg[0]as$z=>$yh){$ig=$Q["pos"][0]+$Q["fields"][$yh]["pos"];$jg=$ch[$ai]["pos"][0]+$ch[$ai]["fields"][$Eg[1][$z]]["pos"];$Te=min($Te,$ig,$jg);$Je=max($Je,$ig,$jg);}echo"<div class='references' id='refl$se' style='left: $se"."em; top: $Te"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($Je-$Te)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">',lang(140),'</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$n){$Hb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$Hb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($Hb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Oc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$de=preg_match('~sql~',$_POST["format"]);if($de){echo"-- Adminer $ia ".$kc[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($y=="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';
":"")."
";$g->query("SET time_zone = '+00:00'");$g->query("SET sql_mode = ''");}}$Kh=$_POST["db_style"];$k=array(DB);if(DB==""){$k=$_POST["databases"];if(is_string($k))$k=explode("\n",rtrim(str_replace("\r","",$k),"\n"));}foreach((array)$k
as$l){$b->dumpDatabase($l);if($g->select_db($l)){if($de&&preg_match('~CREATE~',$Kh)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1))){set_utf8mb4($i);if($Kh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($l).";\n";echo"$i;\n";}if($de){if($Kh)echo
use_sql($l).";\n\n";$Lf="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Wg){foreach(get_rows("SHOW $Wg STATUS WHERE Db = ".q($l),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $Wg ".idf_escape($J["Name"]),2));set_utf8mb4($i);$Lf.=($Kh!='DROP+CREATE'?"DROP $Wg IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($i);$Lf.=($Kh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($Lf)echo"DELIMITER ;;\n\n$Lf"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$bj=array();foreach(table_status('',true)as$D=>$R){$Q=(DB==""||in_array($D,(array)$_POST["tables"]));$Rb=(DB==""||in_array($D,(array)$_POST["data"]));if($Q||$Rb){if($Oc=="tar"){$ni=new
TmpFile;ob_start(array($ni,'write'),1e5);}$b->dumpTable($D,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$bj[]=$D;elseif($Rb){$p=fields($D);$b->dumpData($D,$_POST["data_style"],"SELECT *".convert_fields($p,$p)." FROM ".table($D));}if($de&&$_POST["triggers"]&&$Q&&($Bi=trigger_sql($D)))echo"\nDELIMITER ;;\n$Bi\nDELIMITER ;\n";if($Oc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$l/")."$D.csv",$ni);}elseif($de)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$D=>$R){$Q=(DB==""||in_array($D,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($D);}}foreach($bj
as$aj)$b->dumpTable($aj,$_POST["table_style"],1);if($Oc=="tar")echo
pack("x512");}}}if($de)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(73),$n,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table cellspacing="0" class="layout">
';$Vb=array('','USE','DROP+CREATE','CREATE');$Vh=array('','DROP+CREATE','CREATE');$Sb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$Sb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$J);if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($J["events"])){$J["routines"]=$J["events"]=($_GET["dump"]=="");$J["triggers"]=$J["table_style"];}echo"<tr><th>".lang(141)."<td>".html_select("output",$b->dumpOutput(),$J["output"],0)."\n";echo"<tr><th>".lang(142)."<td>".html_select("format",$b->dumpFormat(),$J["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".lang(37)."<td>".html_select('db_style',$Vb,$J["db_style"]).(support("routine")?checkbox("routines",1,$J["routines"],lang(143)):"").(support("event")?checkbox("events",1,$J["events"],lang(144)):"")),"<tr><th>".lang(123)."<td>".html_select('table_style',$Vh,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(51)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(138)):""),"<tr><th>".lang(145)."<td>".html_select('data_style',$Sb,$J["data_style"]),'</table>
<p><input type="submit" value="',lang(73),'">
<input type="hidden" name="token" value="',$qi,'">
<table cellspacing="0">
',script("qsl('table').onclick = dumpClick;");$mg=array();if(DB!=""){$db=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$db>".lang(123)."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(145)."<input type='checkbox' id='check-data'$db></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$bj="";$Wh=tables_list();foreach($Wh
as$D=>$T){$lg=preg_replace('~_.*~','',$D);$db=($a==""||$a==(substr($a,-1)=="%"?"$lg%":$D));$pg="<tr><td>".checkbox("tables[]",$D,$db,$D,"","block");if($T!==null&&!preg_match('~table~i',$T))$bj.="$pg\n";else
echo"$pg<td align='right'><label class='block'><span id='Rows-".h($D)."'></span>".checkbox("data[]",$D,$db)."</label>\n";$mg[$lg]++;}echo$bj;if($Wh)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":"").">".lang(37)."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$k=$b->databases();if($k){foreach($k
as$l){if(!information_schema($l)){$lg=preg_replace('~_.*~','',$l);echo"<tr><td>".checkbox("databases[]",$l,$a==""||$a=="$lg%",$l,"","block")."\n";$mg[$lg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$bd=true;foreach($mg
as$z=>$X){if($z!=""&&$X>1){echo($bd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$bd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(71));echo'<p class="links"><a href="'.h(ME).'user=">'.lang(146)."</a>";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$qd=$H;if(!$H)$H=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($qd?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".lang(35)."<th>".lang(34)."<th></thead>\n";while($J=$H->fetch_assoc())echo'<tr'.odd().'><td>'.h($J["User"])."<td>".h($J["Host"]).'<td><a href="'.h(ME.'user='.urlencode($J["User"]).'&host='.urlencode($J["Host"])).'">'.lang(10)."</a>\n";if(!$qd||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".lang(10)."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Dd=&get_session("queries");$Cd=&$Dd[DB];if(!$n&&$_POST["clear"]){$Cd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(72):lang(64)),$n);if(!$n&&$_POST){$nd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$Bh=$b->importServerPath();$nd=@fopen((file_exists($Bh)?$Bh:"compress.zlib://$Bh.gz"),"rb");$G=($nd?fread($nd,1e6):false);}else$G=get_file("sql_file",true);if(is_string($G)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$xg=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Cd||reset(end($Cd))!=$xg){restart_session();$Cd[]=array($xg,time());set_session("queries",$Dd);stop_session();}}$zh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$cc=";";$kf=0;$zc=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$sb=0;$Dc=array();$Sf='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\*|-- |$'.($y=="pgsql"?'|\$[^$]*\$':'');$si=microtime(true);parse_str($_COOKIE["adminer_export"],$ya);$qc=$b->dumpFormat();unset($qc["sql"]);while($G!=""){if(!$kf&&preg_match("~^$zh*+DELIMITER\\s+(\\S+)~i",$G,$C)){$cc=$C[1];$G=substr($G,strlen($C[0]));}else{preg_match('('.preg_quote($cc)."\\s*|$Sf)",$G,$C,PREG_OFFSET_CAPTURE,$kf);list($ld,$hg)=$C[0];if(!$ld&&$nd&&!feof($nd))$G.=fread($nd,1e5);else{if(!$ld&&rtrim($G)=="")break;$kf=$hg+strlen($ld);if($ld&&rtrim($ld)!=$cc){while(preg_match('('.($ld=='/*'?'\*/':($ld=='['?']':(preg_match('~^-- |^#~',$ld)?"\n":preg_quote($ld)."|\\\\."))).'|$)s',$G,$C,PREG_OFFSET_CAPTURE,$kf)){$ah=$C[0][0];if(!$ah&&$nd&&!feof($nd))$G.=fread($nd,1e5);else{$kf=$C[0][1]+strlen($ah);if($ah[0]!="\\")break;}}}else{$zc=false;$xg=substr($G,0,$hg);$sb++;$pg="<pre id='sql-$sb'><code class='jush-$y'>".$b->sqlCommandQuery($xg)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$zh*+ATTACH\\b~i",$xg,$C)){echo$pg,"<p class='error'>".lang(147)."\n";$Dc[]=" <a href='#sql-$sb'>$sb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$pg;ob_flush();flush();}$Fh=microtime(true);if($g->multi_query($xg)&&is_object($h)&&preg_match("~^$zh*+USE\\b~i",$xg))$h->query($xg);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$pg:""),"<p class='error'>".lang(148).($g->errno?" ($g->errno)":"").": ".error()."\n";$Dc[]=" <a href='#sql-$sb'>$sb</a>";if($_POST["error_stops"])break
2;}else{$gi=" <span class='time'>(".format_time($Fh).")</span>".(strlen($xg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($xg))."'>".lang(10)."</a>":"");$_a=$g->affected_rows;$ej=($_POST["only_errors"]?"":$m->warnings());$fj="warnings-$sb";if($ej)$gi.=", <a href='#$fj'>".lang(46)."</a>".script("qsl('a').onclick = partial(toggle, '$fj');","");$Lc=null;$Mc="explain-$sb";if(is_object($H)){$_=$_POST["limit"];$Ef=select($H,$h,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$gf=$H->num_rows;echo"<p>".($gf?($_&&$gf>$_?lang(149,$_):"").lang(150,$gf):""),$gi;if($h&&preg_match("~^($zh|\\()*+SELECT\\b~i",$xg)&&($Lc=explain($h,$xg)))echo", <a href='#$Mc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Mc');","");$u="export-$sb";echo", <a href='#$u'>".lang(73)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."<span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$ya["output"])." ".html_select("format",$qc,$ya["format"])."<input type='hidden' name='query' value='".h($xg)."'>"." <input type='submit' name='export' value='".lang(73)."'><input type='hidden' name='token' value='$qi'></span>\n"."</form>\n";}}else{if(preg_match("~^$zh*+(CREATE|DROP|ALTER)$zh++(DATABASE|SCHEMA)\\b~i",$xg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($g->info)."'>".lang(151,$_a)."$gi\n";}echo($ej?"<div id='$fj' class='hidden'>\n$ej</div>\n":"");if($Lc){echo"<div id='$Mc' class='hidden'>\n";select($Lc,$h,$Ef);echo"</div>\n";}}$Fh=microtime(true);}while($g->next_result());}$G=substr($G,$kf);$kf=0;}}}}if($zc)echo"<p class='message'>".lang(152)."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(153,$sb-count($Dc))," <span class='time'>(".format_time($si).")</span>\n";}elseif($Dc&&$sb>1)echo"<p class='error'>".lang(148).": ".implode("",$Dc)."\n";}else
echo"<p class='error'>".upload_error($G)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$Jc="<input type='submit' value='".lang(154)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$xg=$_GET["sql"];if($_POST)$xg=$_POST["query"];elseif($_GET["history"]=="all")$xg=$Cd;elseif($_GET["history"]!="")$xg=$Cd[$_GET["history"]][0];echo"<p>";textarea("query",$xg,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>$Jc\n",lang(155).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".lang(156)."</legend><div>";$wd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$wd (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Jc":lang(157)),"</div></fieldset>\n";$Kd=$b->importServerPath();if($Kd){echo"<fieldset><legend>".lang(158)."</legend><div>",lang(159,"<code>".h($Kd)."$wd</code>"),' <input type="submit" name="webfile" value="'.lang(160).'">',"</div></fieldset>\n";}echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(161))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(162))."\n","<input type='hidden' name='token' value='$qi'>\n";if(!isset($_GET["import"])&&$Cd){print_fieldset("history",lang(163),$_GET["history"]!="");for($X=end($Cd);$X;$X=prev($Cd)){$z=key($Cd);list($xg,$gi,$uc)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.lang(10)."</a>"." <span class='time' title='".@date('Y-m-d',$gi)."'>".@date("H:i:s",$gi)."</span>"." <code class='jush-$y'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$xg)))),80,"</code>").($uc?" <span class='time'>($uc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(164)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(165)."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Li=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p
as$D=>$o){if(!isset($o["privileges"][$Li?"update":"insert"])||$b->fieldName($o)==""||$o["generated"])unset($p[$D]);}if($_POST&&!$n&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Li?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$Gi=unique_array($_GET["where"],$x);$_g="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,lang(166),$m->delete($a,$_g,!$Gi));else{$N=array();foreach($p
as$D=>$o){$X=process_input($o);if($X!==false&&$X!==null)$N[idf_escape($D)]=$X;}if($Li){if(!$N)redirect($B);queries_redirect($B,lang(167),$m->update($a,$N,$_g,!$Gi));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$H=$m->insert($a,$N);$re=($H?last_id():0);queries_redirect($B,lang(168,($re?" $re":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($p
as$D=>$o){if(isset($o["privileges"]["select"])){$Ga=convert_field($o);if($_POST["clone"]&&$o["auto_increment"])$Ga="''";if($y=="sql"&&preg_match("~enum|set~",$o["type"]))$Ga="1*".idf_escape($D);$L[]=($Ga?"$Ga AS ":"").idf_escape($D);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$m->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$n=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$p){if(!$Z){$H=$m->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($m->primary=>"");}if($J){foreach($J
as$z=>$X){if(!$Z)$J[$z]=null;$p[$z]=array("field"=>$z,"null"=>($z!=$m->primary),"auto_increment"=>($z==$m->primary));}}}edit_form($a,$p,$J,$Li);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Uf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$Uf[$z]=$z;$Gg=referencable_primary($a);$jd=array();foreach($Gg
as$Rh=>$o)$jd[str_replace("`","``",$Rh)."`".str_replace("`","``",$o["field"])]=$Rh;$Hf=array();$R=array();if($a!=""){$Hf=fields($a);$R=table_status($a);if(!$R)$n=lang(9);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(169),drop_tables(array($a)));else{$p=array();$Da=array();$Pi=false;$hd=array();$Gf=reset($Hf);$Ba=" FIRST";foreach($J["fields"]as$z=>$o){$r=$jd[$o["type"]];$Ci=($r!==null?$Gg[$r]:$o);if($o["field"]!=""){if(!$o["has_default"])$o["default"]=null;if($z==$J["auto_increment_col"])$o["auto_increment"]=true;$ug=process_field($o,$Ci);$Da[]=array($o["orig"],$ug,$Ba);if(!$Gf||$ug!=process_field($Gf,$Gf)){$p[]=array($o["orig"],$ug,$Ba);if($o["orig"]!=""||$Ba)$Pi=true;}if($r!==null)$hd[idf_escape($o["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$jd[$o["type"]],'source'=>array($o["field"]),'target'=>array($Ci["field"]),'on_delete'=>$o["on_delete"],));$Ba=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Pi=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$Gf=next($Hf);if(!$Gf)$Ba="";}}$Wf="";if($Uf[$J["partition_by"]]){$Xf=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$z=>$X){$Y=$J["partition_values"][$z];$Xf[]="\n PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Wf.="\nPARTITION BY $J[partition_by]($J[partition])".($Xf?" (".implode(",",$Xf)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$Wf.="\nREMOVE PARTITIONING";$Ne=lang(170);if($a==""){cookie("adminer_engine",$J["Engine"]);$Ne=lang(171);}$D=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($D),$Ne,alter_table($a,$D,($y=="sqlite"&&($Pi||$hd)?$Da:$p),$hd,($J["Comment"]!=$R["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$R["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$R["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Wf));}}page_header(($a!=""?lang(44):lang(74)),$n,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($U["int"])?"int":(isset($U["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$R;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Hf
as$o){$o["has_default"]=isset($o["default"]);$J["fields"][]=$o;}if(support("partitioning")){$od="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$H=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $od ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$Xf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $od AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$Xf[""]="";$J["partition_names"]=array_keys($Xf);$J["partition_values"]=array_values($Xf);}}}$nb=collations();$Ac=engines();foreach($Ac
as$_c){if(!strcasecmp($_c,$J["Engine"])){$J["Engine"]=$_c;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo
lang(172),': <input name="name" data-maxlength="64" value="',h($J["name"]),'" autocapitalize="off">
';if($a==""&&!$_POST)echo
script("focus(qs('#form')['name']);");echo($Ac?"<select name='Engine'>".optionlist(array(""=>"(".lang(173).")")+$Ac,$J["Engine"])."</select>".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($nb&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".lang(101).")")+$nb,$J["Collation"]):""),' <input type="submit" value="',lang(14),'">
';}echo'
';if(support("columns")){echo'<div class="scrollable">
<table cellspacing="0" id="edit-fields" class="nowrap">
';edit_fields($J["fields"],$nb,"TABLE",$jd);echo'</table>
',script("editFields();"),'</div>
<p>
',lang(51),': <input type="number" name="Auto_increment" size="6" value="',h($J["Auto_increment"]),'">
',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),lang(174),"columnShow(this.checked, 5)","jsonly"),(support("comment")?checkbox("comments",1,($_POST?$_POST["comments"]:adminer_setting("comments")),lang(50),"editingCommentsClick(this, true);","jsonly").' <input name="Comment" value="'.h($J["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'">':''),'<p>
<input type="submit" value="',lang(14),'">
';}echo'
';if($a!=""){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,$a));}if(support("partitioning")){$Vf=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(176),$J["partition_by"]);echo'<p>
',"<select name='partition_by'>".optionlist(array(""=>"")+$Uf,$J["partition_by"])."</select>".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'(<input name="partition" value="',h($J["partition"]),'">)
',lang(177),': <input type="number" name="partitions" class="size',($Vf||!$J["partition_by"]?" hidden":""),'" value="',h($J["partitions"]),'">
<table cellspacing="0" id="partition-table"',($Vf?"":" class='hidden'"),'>
<thead><tr><th>',lang(178),'<th>',lang(179),'</thead>
';foreach($J["partition_names"]as$z=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($z==count($J["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h($J["partition_values"][$z]).'">';}echo'</table>
</div></fieldset>
';}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Nd=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$R["Engine"]))$Nd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$Nd[]="SPATIAL";$x=indexes($a);$ng=array();if($y=="mongo"){$ng=$x["_id_"];unset($Nd[0]);unset($x["_id_"]);}$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$w){$D=$w["name"];if(in_array($w["type"],$Nd)){$e=array();$xe=array();$ec=array();$N=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$we=$w["lengths"][$z];$dc=$w["descs"][$z];$N[]=idf_escape($d).($we?"(".(+$we).")":"").($dc?" DESC":"");$e[]=$d;$xe[]=($we?$we:null);$ec[]=$dc;}}if($e){$Kc=$x[$D];if($Kc){ksort($Kc["columns"]);ksort($Kc["lengths"]);ksort($Kc["descs"]);if($w["type"]==$Kc["type"]&&array_values($Kc["columns"])===$e&&(!$Kc["lengths"]||array_values($Kc["lengths"])===$xe)&&array_values($Kc["descs"])===$ec){unset($x[$D]);continue;}}$c[]=array($w["type"],$D,$N);}}}foreach($x
as$D=>$Kc)$c[]=array($Kc["type"],$D,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(180),alter_indexes($a,$c));}page_header(lang(132),$n,array("table"=>$a),h($a));$p=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$J["indexes"][$z]["columns"][]="";}$w=end($J["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($x
as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$J["indexes"]=$x;}echo'
<form action="" method="post">
<div class="scrollable">
<table cellspacing="0" class="nowrap">
<thead><tr>
<th id="label-type">',lang(181),'<th><input type="submit" class="wayoff">',lang(182),'<th id="label-name">',lang(183),'<th><noscript>',"<input type='image' class='icon' name='add[0]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."' alt='+' title='".lang(108)."'>",'</noscript>
</thead>
';if($ng){echo"<tr><td>PRIMARY<td>";foreach($ng["columns"]as$z=>$d){echo
select_input(" disabled",$p,$d),"<label><input disabled type='checkbox'>".lang(59)."</label> ";}echo"<td><td>\n";}$ge=1;foreach($J["indexes"]as$w){if(!$_POST["drop_col"]||$ge!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ge][type]",array(-1=>"")+$Nd,$w["type"],($ge==count($J["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$d){echo"<span>".select_input(" name='indexes[$ge][columns][$t]' title='".lang(48)."'",($p?array_combine($p,$p):$p),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape($y=="sql"?"":$_GET["indexes"]."_")."')"),($y=="sql"||$y=="mssql"?"<input type='number' name='indexes[$ge][lengths][$t]' class='size' value='".h($w["lengths"][$z])."' title='".lang(106)."'>":""),(support("descidx")?checkbox("indexes[$ge][descs][$t]",1,$w["descs"][$z],lang(59)):"")," </span>";$t++;}echo"<td><input name='indexes[$ge][name]' value='".h($w["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td><input type='image' class='icon' name='drop_col[$ge]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.1")."' alt='x' title='".lang(111)."'>".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ge++;}echo'</table>
</div>
<p>
<input type="submit" value="',lang(14),'">
<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$D=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(184),drop_databases(array(DB)));}elseif(DB!==$D){if(DB!=""){$_GET["db"]=$D;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($D),lang(185),rename_database($D,$J["collation"]));}else{$k=explode("\n",str_replace("\r","",$D));$Lh=true;$qe="";foreach($k
as$l){if(count($k)==1||$l!=""){if(!create_database($l,$J["collation"]))$Lh=false;$qe=$l;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($qe),lang(186),$Lh);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($D).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(187));}}page_header(DB!=""?lang(67):lang(115),$n,array(),h(DB));$nb=collations();$D=DB;if($_POST)$D=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$nb);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$qd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$qd,$C)&&$C[1]){$D=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add_x"]||strpos($D,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($D).'</textarea><br>':'<input name="name" id="name" value="'.h($D).'" data-maxlength="64" autocapitalize="off">')."\n".($nb?html_select("collation",array(""=>"(".lang(101).")")+$nb,$J["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"ms187963.aspx",)):""),script("focus(qs('#name'));"),'<input type="submit" value="',lang(14),'">
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(127)."'>".confirm(lang(175,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."' alt='+' title='".lang(108)."'>\n";echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$n){$A=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$A,lang(188));else{$D=trim($J["name"]);$A.=urlencode($D);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($D),$A,lang(189));elseif($_GET["ns"]!=$D)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($D),$A,lang(190));else
redirect($A);}}page_header($_GET["ns"]!=""?lang(68):lang(69),$n);if(!$J)$J["name"]=$_GET["ns"];echo'
<form action="" method="post">
<p><input name="name" id="name" value="',h($J["name"]),'" autocapitalize="off">
',script("focus(qs('#name'));"),'<input type="submit" value="',lang(14),'">
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".lang(127)."'>".confirm(lang(175,$_GET["ns"]))."\n";echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(191).": ".h($da),$n);$Wg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Ld=array();$Lf=array();foreach($Wg["fields"]as$t=>$o){if(substr($o["inout"],-3)=="OUT")$Lf[$t]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$Ld[]=$t;}if(!$n&&$_POST){$Ya=array();foreach($Wg["fields"]as$z=>$o){if(in_array($z,$Ld)){$X=process_input($o);if($X===false)$X="''";if(isset($Lf[$z]))$g->query("SET @".idf_escape($o["field"])." = $X");}$Ya[]=(isset($Lf[$z])?"@".idf_escape($o["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Ya).")";$Fh=microtime(true);$H=$g->multi_query($G);$_a=$g->affected_rows;echo$b->selectQuery($G,$Fh,!$H);if(!$H)echo"<p class='error'>".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$H=$g->store_result();if(is_object($H))select($H,$h);else
echo"<p class='message'>".lang(192,$_a)." <span class='time'>".@date("H:i:s")."</span>\n";}while($g->next_result());if($Lf)select($g->query("SELECT ".implode(", ",$Lf)));}}echo'
<form action="" method="post">
';if($Ld){echo"<table cellspacing='0' class='layout'>\n";foreach($Ld
as$z){$o=$Wg["fields"][$z];$D=$o["field"];echo"<tr><th>".$b->fieldName($o);$Y=$_POST["fields"][$D];if($Y!=""){if($o["type"]=="enum")$Y=+$Y;if($o["type"]=="set")$Y=array_sum($Y);}input($o,$Y,(string)$_POST["function"][$D]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(191),'">
<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$D=$_GET["name"];$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Ne=($_POST["drop"]?lang(193):($D!=""?lang(194):lang(195)));$B=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Zh=array();foreach($J["source"]as$z=>$X)$Zh[$z]=$J["target"][$z];$J["target"]=$Zh;}if($y=="sqlite")queries_redirect($B,$Ne,recreate_table($a,$a,array(),array(),array(" $D"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$lc="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($D);if($_POST["drop"])query_redirect($c.$lc,$B,$Ne);else{query_redirect($c.($D!=""?"$lc,":"")."\nADD".format_foreign_key($J),$B,$Ne);$n=lang(196)."<br>$n";}}}page_header(lang(197),$n,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($D!=""){$jd=foreign_keys($a);$J=$jd[$D];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
<form action="" method="post">
';$yh=array_keys(fields($a));if($J["db"]!="")$g->select_db($J["db"]);if($J["ns"]!="")set_schema($J["ns"]);$Fg=array_keys(array_filter(table_status('',true),'fk_support'));$Zh=array_keys(fields(in_array($J["table"],$Fg)?$J["table"]:reset($Fg)));$tf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>".lang(198).": ".html_select("table",$Fg,$J["table"],$tf)."\n";if($y=="pgsql")echo
lang(77).": ".html_select("ns",$b->schemas(),$J["ns"]!=""?$J["ns"]:$_GET["ns"],$tf);elseif($y!="sqlite"){$Wb=array();foreach($b->databases()as$l){if(!information_schema($l))$Wb[]=$l;}echo
lang(76).": ".html_select("db",$Wb,$J["db"]!=""?$J["db"]:$_GET["db"],$tf);}echo'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="',lang(199),'"></noscript>
<table cellspacing="0">
<thead><tr><th id="label-source">',lang(134),'<th id="label-target">',lang(135),'</thead>
';$ge=0;foreach($J["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$yh,$X,($ge==count($J["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"<td>".html_select("target[".(+$z)."]",$Zh,$J["target"][$z],1,"label-target");$ge++;}echo'</table>
<p>
',lang(103),': ',html_select("on_delete",array(-1=>"")+explode("|",$sf),$J["on_delete"]),' ',lang(102),': ',html_select("on_update",array(-1=>"")+explode("|",$sf),$J["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"https://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#sthref2903",)),'<p>
<input type="submit" value="',lang(14),'">
<noscript><p><input type="submit" name="add" value="',lang(200),'"></noscript>
';if($D!=""){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,$D));}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$If="VIEW";if($y=="pgsql"&&$a!=""){$O=table_status($a);$If=strtoupper($O["Engine"]);}if($_POST&&!$n){$D=trim($J["name"]);$Ga=" AS\n$J[select]";$B=ME."table=".urlencode($D);$Ne=lang(201);$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$D&&$y!="sqlite"&&$T=="VIEW"&&$If=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($D).$Ga,$B,$Ne);else{$bi=$D."_adminer_".uniqid();drop_create("DROP $If ".table($a),"CREATE $T ".table($D).$Ga,"DROP $T ".table($D),"CREATE $T ".table($bi).$Ga,"DROP $T ".table($bi),($_POST["drop"]?substr(ME,0,-1):$B),lang(202),$Ne,lang(203),$a,$D);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($If!="VIEW");if(!$n)$n=error();}page_header(($a!=""?lang(43):lang(204)),$n,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>',lang(183),': <input name="name" value="',h($J["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(129)):""),'<p>';textarea("select",$J["select"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($a!=""){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,$a));}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Yd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Hh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(205));elseif(in_array($J["INTERVAL_FIELD"],$Yd)&&isset($Hh[$J["STATUS"]])){$bh="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(206):lang(207)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$bh.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$bh)."\n".$Hh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(208).": ".h($aa):lang(209)),$n);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo'
<form action="" method="post">
<table cellspacing="0" class="layout">
<tr><th>',lang(183),'<td><input name="EVENT_NAME" value="',h($J["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(210),'<td><input name="STARTS" value="',h("$J[EXECUTE_AT]$J[STARTS]"),'">
<tr><th title="datetime">',lang(211),'<td><input name="ENDS" value="',h($J["ENDS"]),'">
<tr><th>',lang(212),'<td><input type="number" name="INTERVAL_VALUE" value="',h($J["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Yd,$J["INTERVAL_FIELD"]),'<tr><th>',lang(118),'<td>',html_select("STATUS",$Hh,$J["STATUS"]),'<tr><th>',lang(50),'<td><input name="EVENT_COMMENT" value="',h($J["EVENT_COMMENT"]),'" data-maxlength="64">
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(213)),'</table>
<p>';textarea("EVENT_DEFINITION",$J["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($aa!=""){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,$aa));}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Wg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$n){$Ff=routine($_GET["procedure"],$Wg);$bi="$J[name]_adminer_".uniqid();drop_create("DROP $Wg ".routine_id($da,$Ff),create_routine($Wg,$J),"DROP $Wg ".routine_id($J["name"],$J),create_routine($Wg,array("name"=>$bi)+$J),"DROP $Wg ".routine_id($bi,$J),substr(ME,0,-1),lang(214),lang(215),lang(216),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(217):lang(218)).": ".h($da):(isset($_GET["function"])?lang(219):lang(220))),$n);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Wg);$J["name"]=$da;}$nb=get_vals("SHOW CHARACTER SET");sort($nb);$Xg=routine_languages();echo'
<form action="" method="post" id="form">
<p>',lang(183),': <input name="name" value="',h($J["name"]),'" data-maxlength="64" autocapitalize="off">
',($Xg?lang(19).": ".html_select("language",$Xg,$J["language"])."\n":""),'<input type="submit" value="',lang(14),'">
<div class="scrollable">
<table cellspacing="0" class="nowrap">
';edit_fields($J["fields"],$nb,$Wg);if(isset($_GET["function"])){echo"<tr><td>".lang(221);edit_type("returns",$J["returns"],$nb,array(),($y=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$J["definition"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($da!=""){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,$da));}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$n){$A=substr(ME,0,-1);$D=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$A,lang(222));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($D),$A,lang(223));elseif($fa!=$D)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($D),$A,lang(224));else
redirect($A);}page_header($fa!=""?lang(225).": ".h($fa):lang(226),$n);if(!$J)$J["name"]=$fa;echo'
<form action="" method="post">
<p><input name="name" value="',h($J["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(14),'">
';if($fa!="")echo"<input type='submit' name='drop' value='".lang(127)."'>".confirm(lang(175,$fa))."\n";echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$n){$A=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$A,lang(227));else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$A,lang(228));}page_header($ga!=""?lang(229).": ".h($ga):lang(230),$n);if(!$J)$J["as"]="AS ";echo'
<form action="" method="post">
<p>
';if($ga!="")echo"<input type='submit' name='drop' value='".lang(127)."'>".confirm(lang(175,$ga))."\n";else{echo"<input name='name' value='".h($J['name'])."' autocapitalize='off'>\n";textarea("as",$J["as"]);echo"<p><input type='submit' value='".lang(14)."'>\n";}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$D=$_GET["name"];$Ai=trigger_options();$J=(array)trigger($D,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$Ai["Timing"])&&in_array($_POST["Event"],$Ai["Event"])&&in_array($_POST["Type"],$Ai["Type"])){$rf=" ON ".table($a);$lc="DROP TRIGGER ".idf_escape($D).($y=="pgsql"?$rf:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($lc,$B,lang(231));else{if($D!="")queries($lc);queries_redirect($B,($D!=""?lang(232):lang(233)),queries(create_trigger($rf,$_POST)));if($D!="")queries(create_trigger($rf,$J+array("Type"=>reset($Ai["Type"]))));}}$J=$_POST;}page_header(($D!=""?lang(234).": ".h($D):lang(235)),$n,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table cellspacing="0" class="layout">
<tr><th>',lang(236),'<td>',html_select("Timing",$Ai["Timing"],$J["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>',lang(237),'<td>',html_select("Event",$Ai["Event"],$J["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Ai["Event"])?" <input name='Of' value='".h($J["Of"])."' class='hidden'>":""),'<tr><th>',lang(49),'<td>',html_select("Type",$Ai["Type"],$J["Type"]),'</table>
<p>',lang(183),': <input name="Trigger" value="',h($J["Trigger"]),'" data-maxlength="64" autocapitalize="off">
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$J["Statement"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($D!=""){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,$D));}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$sg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Fb)$sg[$Fb][$J["Privilege"]]=$J["Comment"];}$sg["Server Admin"]+=$sg["File access on server"];$sg["Databases"]["Create routine"]=$sg["Procedures"]["Create routine"];unset($sg["Procedures"]["Create routine"]);$sg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$sg["Columns"][$X]=$sg["Tables"][$X];unset($sg["Server Admin"]["Usage"]);foreach($sg["Tables"]as$z=>$X)unset($sg["Databases"][$z]);$af=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$af[$X]=(array)$af[$X]+(array)$_POST["grants"][$z];}$rd=array();$pf="";if(isset($_GET["host"])&&($H=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$Fe,PREG_SET_ORDER)){foreach($Fe
as$X){if($X[1]!="USAGE")$rd["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$rd["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$C))$pf=$C[1];}}if($_POST&&!$n){$qf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $qf",ME."privileges=",lang(238));else{$cf=q($_POST["user"])."@".q($_POST["host"]);$Zf=$_POST["pass"];if($Zf!=''&&!$_POST["hashed"]&&!min_version(8)){$Zf=$g->result("SELECT PASSWORD(".q($Zf).")");$n=!$Zf;}$Lb=false;if(!$n){if($qf!=$cf){$Lb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $cf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Zf));$n=!$Lb;}elseif($Zf!=$pf)queries("SET PASSWORD FOR $cf = ".q($Zf));}if(!$n){$Tg=array();foreach($af
as$if=>$qd){if(isset($_GET["grant"]))$qd=array_filter($qd);$qd=array_keys($qd);if(isset($_GET["grant"]))$Tg=array_diff(array_keys(array_filter($af[$if],'strlen')),$qd);elseif($qf==$cf){$nf=array_keys((array)$rd[$if]);$Tg=array_diff($nf,$qd);$qd=array_diff($qd,$nf);unset($rd[$if]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$if,$C)&&(!grant("REVOKE",$Tg,$C[2]," ON $C[1] FROM $cf")||!grant("GRANT",$qd,$C[2]," ON $C[1] TO $cf"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($qf!=$cf)queries("DROP USER $qf");elseif(!isset($_GET["grant"])){foreach($rd
as$if=>$Tg){if(preg_match('~^(.+)(\(.*\))?$~U',$if,$C))grant("REVOKE",array_keys($Tg),$C[2]," ON $C[1] FROM $cf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(239):lang(240)),!$n);if($Lb)$g->query("DROP USER $cf");}}page_header((isset($_GET["host"])?lang(35).": ".h("$ha@$_GET[host]"):lang(146)),$n,array("privileges"=>array('',lang(71))));if($_POST){$J=$_POST;$rd=$af;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$pf;if($pf!="")$J["hashed"]=true;$rd[(DB==""||$rd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table cellspacing="0" class="layout">
<tr><th>',lang(34),'<td><input name="host" data-maxlength="60" value="',h($J["host"]),'" autocapitalize="off">
<tr><th>',lang(35),'<td><input name="user" data-maxlength="80" value="',h($J["user"]),'" autocapitalize="off">
<tr><th>',lang(36),'<td><input name="pass" id="pass" value="',h($J["pass"]),'" autocomplete="new-password">
';if(!$J["hashed"])echo
script("typePassword(qs('#pass'));");echo(min_version(8)?"":checkbox("hashed",1,$J["hashed"],lang(241),"typePassword(this.form['pass'], this.checked);")),'</table>
';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".lang(71).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($rd
as$if=>$qd){echo'<th>'.($if!="*.*"?"<input name='objects[$t]' value='".h($if)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(34),"Databases"=>lang(37),"Tables"=>lang(131),"Columns"=>lang(48),"Procedures"=>lang(242),)as$Fb=>$dc){foreach((array)$sg[$Fb]as$rg=>$tb){echo"<tr".odd()."><td".($dc?">$dc<td":" colspan='2'").' lang="en" title="'.h($tb).'">'.h($rg);$t=0;foreach($rd
as$if=>$qd){$D="'grants[$t][".h(strtoupper($rg))."]'";$Y=$qd[strtoupper($rg)];if($Fb=="Server Admin"&&$if!=(isset($rd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$D><option><option value='1'".($Y?" selected":"").">".lang(243)."<option value='0'".($Y=="0"?" selected":"").">".lang(244)."</select>";else{echo"<td align='center'><label class='block'>","<input type='checkbox' name=$D value='1'".($Y?" checked":"").($rg=="All privileges"?" id='grants-$t-all'>":">".($rg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$t-all'); };"))),"</label>";}$t++;}}}echo"</table>\n",'<p>
<input type="submit" value="',lang(14),'">
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',lang(127),'">',confirm(lang(175,"$ha@$_GET[host]"));}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$n){$le=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$le++;}queries_redirect(ME."processlist=",lang(245,$le),$le||!$_POST["kill"]);}}page_header(lang(116),$n);echo'
<form action="" method="post">
<div class="scrollable">
<table cellspacing="0" class="nowrap checkable">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$J){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($J
as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$J[$y=="sql"?"Id":"pid"],0):"");foreach($J
as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$J["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($J["db"]!=""?"db=".urlencode($J["db"])."&":"")."sql=".urlencode($X)).'">'.lang(246).'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill")){echo($t+1)."/".lang(247,max_connections()),"<p><input type='submit' value='".lang(248)."'>\n";}echo'<input type="hidden" name="token" value="',$qi,'">
</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$x=indexes($a);$p=fields($a);$jd=column_foreign_keys($a);$lf=$R["Oid"];parse_str($_COOKIE["adminer_import"],$za);$Ug=array();$e=array();$fi=null;foreach($p
as$z=>$o){$D=$b->fieldName($o);if(isset($o["privileges"]["select"])&&$D!=""){$e[$z]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($o))$fi=$b->selectLengthProcess();}$Ug+=$o["privileges"];}list($L,$sd)=$b->selectColumnsProcess($e,$x);$ce=count($sd)<count($L);$Z=$b->selectSearchProcess($p,$x);$Bf=$b->selectOrderProcess($p,$x);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Hi=>$J){$Ga=convert_field($p[key($J)]);$L=array($Ga?$Ga:idf_escape(key($J)));$Z[]=where_check($Hi,$p);$I=$m->select($a,$L,$Z,$L);if($I)echo
reset($I->fetch_row());}exit;}$ng=$Ji=null;foreach($x
as$w){if($w["type"]=="PRIMARY"){$ng=array_flip($w["columns"]);$Ji=($L?$ng:array());foreach($Ji
as$z=>$X){if(in_array(idf_escape($z),$L))unset($Ji[$z]);}break;}}if($lf&&!$ng){$ng=$Ji=array($lf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($lf));}if($_POST&&!$n){$kj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$eb=array();foreach($_POST["check"]as$bb)$eb[]=where_check($bb,$p);$kj[]="((".implode(") OR (",$eb)."))";}$kj=($kj?"\nWHERE ".implode(" AND ",$kj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$od=($L?implode(", ",$L):"*").convert_fields($e,$p,$L)."\nFROM ".table($a);$ud=($sd&&$ce?"\nGROUP BY ".implode(", ",$sd):"").($Bf?"\nORDER BY ".implode(", ",$Bf):"");if(!is_array($_POST["check"])||$ng)$G="SELECT $od$kj$ud";else{$Fi=array();foreach($_POST["check"]as$X)$Fi[]="(SELECT".limit($od,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$ud,1).")";$G=implode(" UNION ALL ",$Fi);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$jd)){if($_POST["save"]||$_POST["delete"]){$H=true;$_a=0;$N=array();if(!$_POST["delete"]){foreach($e
as$D=>$X){$X=process_input($p[$D]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($D)]=($X!==false?$X:idf_escape($D));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($ng&&is_array($_POST["check"]))||$ce){$H=($_POST["delete"]?$m->delete($a,$kj):($_POST["clone"]?queries("INSERT $G$kj"):$m->update($a,$N,$kj)));$_a=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$gj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$H=($_POST["delete"]?$m->delete($a,$gj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$gj)):$m->update($a,$N,$gj,1)));if(!$H)break;$_a+=$g->affected_rows;}}}$Ne=lang(249,$_a);if($_POST["clone"]&&$H&&$_a==1){$re=last_id();if($re)$Ne=lang(168," $re");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Ne,$H);if(!$_POST["delete"]){edit_form($a,$p,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n=lang(250);else{$H=true;$_a=0;foreach($_POST["val"]as$Hi=>$J){$N=array();foreach($J
as$z=>$X){$z=bracket_escape($z,1);$N[idf_escape($z)]=(preg_match('~char|text~',$p[$z]["type"])||$X!=""?$b->processInput($p[$z],$X):"NULL");}$H=$m->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Hi,$p),!$ce&&!$ng," ");if(!$H)break;$_a+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(249,$_a),$H);}}elseif(!is_string($Zc=get_file("csv_file",true)))$n=upload_error($Zc);elseif(!preg_match('~~u',$Zc))$n=lang(251);else{cookie("adminer_import","output=".urlencode($za["output"])."&format=".urlencode($_POST["separator"]));$H=true;$pb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Zc,$Fe);$_a=count($Fe[0]);$m->begin();$kh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($Fe[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$kh]*)$kh~",$X.$kh,$Ge);if(!$z&&!array_diff($Ge[1],$pb)){$pb=$Ge[1];$_a--;}else{$N=array();foreach($Ge[1]as$t=>$kb)$N[idf_escape($pb[$t])]=($kb==""&&$p[$pb[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$kb))));$K[]=$N;}}$H=(!$K||$m->insertUpdate($a,$K,$ng));if($H)$H=$m->commit();queries_redirect(remove_from_uri("page"),lang(252,$_a),$H);$m->rollback();}}}$Rh=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(53).": $Rh",$n);$N=null;if(isset($Ug["insert"])||!support("table")){$N="";foreach((array)$_GET["where"]as$X){if($jd[$X["col"]]&&count($jd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$N.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$N);if(!$e&&support("table"))echo"<p class='error'>".lang(253).($p?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($L,$e);$b->selectSearchPrint($Z,$e,$x);$b->selectOrderPrint($Bf,$e,$x);$b->selectLimitPrint($_);$b->selectLengthPrint($fi);$b->selectActionPrint($x);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$md=$g->result(count_rows($a,$Z,$ce,$sd));$E=floor(max(0,$md-1)/$_);}$fh=$L;$td=$sd;if(!$fh){$fh[]="*";$Gb=convert_fields($e,$p,$L);if($Gb)$fh[]=substr($Gb,2);}foreach($L
as$z=>$X){$o=$p[idf_unescape($X)];if($o&&($Ga=convert_field($o)))$fh[$z]="$Ga AS $X";}if(!$ce&&$Ji){foreach($Ji
as$z=>$X){$fh[]=idf_escape($z);if($td)$td[]=idf_escape($z);}}$H=$m->select($a,$fh,$Z,$td,$Bf,$_,$E,true);if(!$H)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$E)$H->seek($_*$E);$yc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$K=array();while($J=$H->fetch_assoc()){if($E&&$y=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["page"]!="last"&&$_!=""&&$sd&&$ce&&$y=="sql")$md=$g->result(" SELECT FOUND_ROWS()");if(!$K)echo"<p class='message'>".lang(12)."\n";else{$Pa=$b->backwardKeys($a,$Rh);echo"<div class='scrollable'>","<table id='table' cellspacing='0' class='nowrap checkable'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$sd&&$L?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".lang(254)."</a>");$Ye=array();$pd=array();reset($L);$Bg=1;foreach($K[0]as$z=>$X){if(!isset($Ji[$z])){$X=$_GET["columns"][key($L)];$o=$p[$L?($X?$X["col"]:current($L)):$z];$D=($o?$b->fieldName($o,$Bg):($X["fun"]?"*":$z));if($D!=""){$Bg++;$Ye[$z]=$D;$d=idf_escape($z);$Gd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$dc="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($z))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'<a href="'.h($Gd.($Bf[0]==$d||$Bf[0]==$z||(!$Bf&&$ce&&$sd[0]==$d)?$dc:'')).'">';echo
apply_sql_function($X["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($Gd.$dc)."' title='".lang(59)."' class='text'> ↓</a>";if(!$X["fun"]){echo'<a href="#fieldset-search" title="'.lang(56).'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($z)."');");}echo"</span>";}$pd[$z]=$X["fun"];next($L);}}$xe=array();if($_GET["modify"]){foreach($K
as$J){foreach($J
as$z=>$X)$xe[$z]=max($xe[$z],min(40,strlen(utf8_decode($X))));}}echo($Pa?"<th>".lang(255):"")."</thead>\n";if(is_ajax()){if($_%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($K,$jd)as$Xe=>$J){$Gi=unique_array($K[$Xe],$x);if(!$Gi){$Gi=array();foreach($K[$Xe]as$z=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$z))$Gi[$z]=$X;}}$Hi="";foreach($Gi
as$z=>$X){if(($y=="sql"||$y=="pgsql")&&preg_match('~char|text|enum|set~',$p[$z]["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y!='sql'||preg_match("~^utf8~",$p[$z]["collation"])?$z:"CONVERT($z USING ".charset($g).")").")";$X=md5($X);}$Hi.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".odd().">".(!$sd&&$L?"":"<td>".checkbox("check[]",substr($Hi,1),in_array(substr($Hi,1),(array)$_POST["check"])).($ce||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Hi)."' class='edit'>".lang(256)."</a>"));foreach($J
as$z=>$X){if(isset($Ye[$z])){$o=$p[$z];$X=$m->value($X,$o);if($X!=""&&(!isset($yc[$z])||$yc[$z]!=""))$yc[$z]=(is_mail($X)?$Ye[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$o["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$Hi;if(!$A&&$X!==null){foreach((array)$jd[$z]as$r){if(count($jd[$z])==1||end($r["source"])==$z){$A="";foreach($r["source"]as$t=>$yh)$A.=where_link($t,$r["target"][$t],$K[$Xe][$yh]);$A=($r["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($r["db"]),ME):ME).'select='.urlencode($r["table"]).$A;if($r["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($r["ns"]),$A);if(count($r["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Gi))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($Gi
as$he=>$W)$A.=where_link($t++,$he,$W);}$X=select_value($X,$A,$o,$fi);$u=h("val[$Hi][".bracket_escape($z)."]");$Y=$_POST["val"][$Hi][bracket_escape($z)];$tc=!is_array($J[$z])&&is_utf8($X)&&$K[$Xe][$z]==$J[$z]&&!$pd[$z];$ei=preg_match('~text|lob~',$o["type"]);echo"<td id='$u'";if(($_GET["modify"]&&$tc)||$Y!==null){$xd=h($Y!==null?$Y:$J[$z]);echo">".($ei?"<textarea name='$u' cols='30' rows='".(substr_count($J[$z],"\n")+1)."'>$xd</textarea>":"<input name='$u' value='$xd' size='$xe[$z]'>");}else{$Ae=strpos($X,"<i>…</i>");echo" data-text='".($Ae?2:($ei?1:0))."'".($tc?"":" data-warning='".h(lang(257))."'").">$X</td>";}}}if($Pa)echo"<td>";$b->backwardKeysPrint($Pa,$K[$Xe]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($K||$E){$Ic=true;if($_GET["page"]!="last"){if($_==""||(count($K)<$_&&($K||!$E)))$md=($E?$E*$_:0)+count($K);elseif($y!="sql"||!$ce){$md=($ce?false:found_rows($R,$Z));if($md<max(1e4,2*($E+1)*$_))$md=reset(slow_query(count_rows($a,$Z,$ce,$sd)));else$Ic=false;}}$Pf=($_!=""&&($md===false||$md>$_||$E));if($Pf){echo(($md===false?count($K)+1:$md-$E*$_)>$_?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.lang(258).'</a>'.script("qsl('a').onclick = partial(selectLoadMore, ".(+$_).", '".lang(259)."…');",""):''),"\n";}}echo"<div class='footer'><div>\n";if($K||$E){if($Pf){$Ie=($md===false?$E+(count($K)>=$_?2:1):floor(($md-1)/$_));echo"<fieldset>";if($y!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".lang(260)."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".lang(260)."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($t=max(1,$E-4);$t<min($Ie,$E+5);$t++)echo
pagination($t,$E);if($Ie>0){echo($E+5<$Ie?" …":""),($Ic&&$md!==false?pagination($Ie,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Ie'>".lang(261)."</a>");}}else{echo"<legend>".lang(260)."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($Ie>$E?pagination($E+1,$E).($Ie>$E+1?" …":""):"");}echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(262)."</legend>";$ic=($Ic?"":"~ ").$md;echo
checkbox("all",1,0,($md!==false?($Ic?"":"~ ").lang(150,$md):""),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$ic' : checked); selectCount('selected2', this.checked || !checked ? '$ic' : checked);")."\n","</fieldset>\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(254),'</legend><div>
<input type="submit" value="',lang(14),'"',($_GET["modify"]?'':' title="'.lang(250).'"'),'>
</div></fieldset>
<fieldset><legend>',lang(126),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',lang(10),'">
<input type="submit" name="clone" value="',lang(246),'">
<input type="submit" name="delete" value="',lang(18),'">',confirm(),'</div></fieldset>
';}$kd=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($kd['sql']);break;}}if($kd){print_fieldset("export",lang(73)." <span id='selected2'></span>");$Mf=$b->dumpOutput();echo($Mf?html_select("output",$Mf,$za["output"])." ":""),html_select("format",$kd,$za["format"])," <input type='submit' name='export' value='".lang(73)."'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($yc,'strlen'),$e);}echo"</div></div>\n";if($b->selectImportPrint()){echo"<div>","<a href='#import'>".lang(72)."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import' class='hidden'>: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$za["format"],1);echo" <input type='submit' name='import' value='".lang(72)."'>","</span>","</div>";}echo"<input type='hidden' name='token' value='$qi'>\n","</form>\n",(!$sd&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?lang(118):lang(117));$Xi=($O?show_status():show_variables());if(!$Xi)echo"<p class='message'>".lang(12)."\n";else{echo"<table cellspacing='0'>\n";foreach($Xi
as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($O?"status":"set")."'>".h($z)."</code>","<td>".h($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Oh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$D=>$R){json_row("Comment-$D",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$D",h($R[$z]));foreach($Oh+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$D",($z=="Rows"&&$X&&$R["Engine"]==($Ah=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Oh[$z]))$Oh[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$D");}}}foreach($Oh
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$l=>$X){json_row("tables-$l",$X);json_row("size-$l",db_size($l));}json_row("");}exit;}else{$Xh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Xh&&!$n&&!$_POST["search"]){$H=true;$Ne="";if($y=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$Ne=lang(263);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ne=lang(264);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ne=lang(265);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Ne=lang(266);}elseif($y!="sql"){$H=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Ne=lang(267);}elseif(!$_POST["tables"])$Ne=lang(9);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$Ne.="<b>".h($J["Table"])."</b>: ".h($J["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Ne,$H);}page_header(($_GET["ns"]==""?lang(37).": ".h(DB):lang(77).": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(268)."</h3>\n";$Wh=tables_list();if(!$Wh)echo"<p class='message'>".lang(9)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(269)." <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='".lang(56)."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]="LIKE %%";search_tables();}}echo"<div class='scrollable'>\n","<table cellspacing='0' class='nowrap checkable'>\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>'.lang(131),'<td>'.lang(270).doc_link(array('sql'=>'storage-engines.html')),'<td>'.lang(122).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.lang(271).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.lang(272).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.lang(273).doc_link(array('sql'=>'show-table-status.html')),'<td>'.lang(51).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.lang(274).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.lang(50).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$S=0;foreach($Wh
as$D=>$T){$aj=($T!==null&&!preg_match('~table|sequence~i',$T));$u=h("Table-".$D);echo'<tr'.odd().'><td>'.checkbox(($aj?"views[]":"tables[]"),$D,in_array($D,$Xh,true),"","","",$u),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($D)."' title='".lang(42)."' id='$u'>".h($D).'</a>':h($D));if($aj){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($D).'" title="'.lang(43).'">'.(preg_match('~materialized~i',$T)?lang(129):lang(130)).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($D).'" title="'.lang(41).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(44)),"Index_length"=>array("indexes",lang(133)),"Data_free"=>array("edit",lang(45)),"Auto_increment"=>array("auto_increment=1&create",lang(44)),"Rows"=>array("select",lang(41)),)as$z=>$A){$u=" id='$z-".h($D)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($D)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($D)."'>");}$S++;}echo(support("comment")?"<td id='Comment-".h($D)."'>":"");}echo"<tr><td><th>".lang(247,count($Wh)),"<td>".h($y=="sql"?$g->result("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align='right' id='sum-$z'>";echo"</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Ui="<input type='submit' value='".lang(275)."'> ".on_help("'VACUUM'");$yf="<input type='submit' name='optimize' value='".lang(276)."'> ".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".lang(126)." <span id='selected'></span></legend><div>".($y=="sqlite"?$Ui:($y=="pgsql"?$Ui.$yf:($y=="sql"?"<input type='submit' value='".lang(277)."'> ".on_help("'ANALYZE TABLE'").$yf."<input type='submit' name='check' value='".lang(278)."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".lang(279)."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".lang(280)."'> ".on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".lang(127)."'>".on_help("'DROP TABLE'").confirm()."\n";$k=(support("scheme")?$b->schemas():$b->databases());if(count($k)!=1&&$y!="sqlite"){$l=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(281).": ",($k?html_select("target",$k,$l):'<input name="target" value="'.h($l).'" autocapitalize="off">')," <input type='submit' name='move' value='".lang(282)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(283)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(284)):""),"\n";}echo"<input type='hidden' name='all' value=''>";echo
script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")." }"),"<input type='hidden' name='token' value='$qi'>\n","</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo'<p class="links"><a href="'.h(ME).'create=">'.lang(74)."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.lang(204)."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".lang(143)."</h3>\n";$Yg=routines();if($Yg){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.lang(183).'<td>'.lang(49).'<td>'.lang(221)."<td></thead>\n";odd('');foreach($Yg
as$J){$D=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'<tr'.odd().'>','<th><a href="'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($J["SPECIFIC_NAME"]).$D).'">'.h($J["ROUTINE_NAME"]).'</a>','<td>'.h($J["ROUTINE_TYPE"]),'<td>'.h($J["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($J["SPECIFIC_NAME"]).$D).'">'.lang(136)."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(220).'</a>':'').'<a href="'.h(ME).'function=">'.lang(219)."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".lang(285)."</h3>\n";$mh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($mh){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(183)."</thead>\n";odd('');foreach($mh
as$X)echo"<tr".odd()."><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".lang(226)."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".lang(26)."</h3>\n";$Si=types();if($Si){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(183)."</thead>\n";odd('');foreach($Si
as$X)echo"<tr".odd()."><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".lang(230)."</a>\n";}if(support("event")){echo"<h3 id='events'>".lang(144)."</h3>\n";$K=get_rows("SHOW EVENTS");if($K){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(183)."<td>".lang(286)."<td>".lang(210)."<td>".lang(211)."<td></thead>\n";foreach($K
as$J){echo"<tr>","<th>".h($J["Name"]),"<td>".($J["Execute at"]?lang(287)."<td>".$J["Execute at"]:lang(212)." ".$J["Interval value"]." ".$J["Interval field"]."<td>$J[Starts]"),"<td>$J[Ends]",'<td><a href="'.h(ME).'event='.urlencode($J["Name"]).'">'.lang(136).'</a>';}echo"</table>\n";$Gc=$g->result("SELECT @@event_scheduler");if($Gc&&$Gc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Gc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.lang(209)."</a>\n";}if($Wh)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();