<?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.4
*/function
adminer_errors($Fc,$Hc){return!!preg_match('~^(Trying to access array offset on( value of type)? null|Undefined array key)~',$Hc);}error_reporting(6135);set_error_handler('adminer_errors',E_WARNING);$ed=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($ed||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Ni=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Ni)$$X=$Ni;}}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($t){if(!preg_match('~^[`\'"[]~',$t))return$t;$we=substr($t,-1);return
str_replace($we.$we,$we,substr($t,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($zg,$ed=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($x,$X)=each($zg)){foreach($X
as$ne=>$W){unset($zg[$x][$ne]);if(is_array($W)){$zg[$x][stripslashes($ne)]=$W;$zg[]=&$zg[$x][stripslashes($ne)];}else$zg[$x][stripslashes($ne)]=($ed?$W:stripslashes($W));}}}}function
bracket_escape($t,$Oa=false){static$zi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($t,($Oa?array_flip($zi):$zi));}function
min_version($ej,$Ke="",$h=null){global$g;if(!$h)$h=$g;$sh=$h->server_info;if($Ke&&preg_match('~([\d.]+)-MariaDB~',$sh,$A)){$sh=$A[1];$ej=$Ke;}return(version_compare($sh,$ej)>=0);}function
charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
script($Ch,$yi="\n"){return"<script".nonce().">$Ch</script>$yi";}function
script_src($Si){return"<script src='".h($Si)."'".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($C,$Y,$eb,$se="",$_f="",$ib="",$te=""){$I="<input type='checkbox' name='$C' value='".h($Y)."'".($eb?" checked":"").($te?" aria-labelledby='$te'":"").">".($_f?script("qsl('input').onclick = function () { $_f };",""):"");return($se!=""||$ib?"<label".($ib?" class='$ib'":"").">$I".h($se)."</label>":$I);}function
optionlist($D,$lh=null,$Wi=false){$I="";foreach($D
as$ne=>$W){$Gf=array($ne=>$W);if(is_array($W)){$I.='<optgroup label="'.h($ne).'">';$Gf=$W;}foreach($Gf
as$x=>$X)$I.='<option'.($Wi||is_string($x)?' value="'.h($x).'"':'').(($Wi||is_string($x)?(string)$x:$X)===$lh?' selected':'').'>'.h($X);if(is_array($W))$I.='</optgroup>';}return$I;}function
html_select($C,$D,$Y="",$zf=true,$te=""){if($zf)return"<select name='".h($C)."'".($te?" aria-labelledby='$te'":"").">".optionlist($D,$Y)."</select>".(is_string($zf)?script("qsl('select').onchange = function () { $zf };",""):"");$I="";foreach($D
as$x=>$X)$I.="<label><input type='radio' name='".h($C)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>";return$I;}function
select_input($Ja,$D,$Y="",$zf="",$lg=""){$di=($D?"select":"input");return"<$di$Ja".($D?"><option value=''>$lg".optionlist($D,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$lg'>").($zf?script("qsl('$di').onchange = $zf;",""):"");}function
confirm($Te="",$mh="qsl('input')"){return
script("$mh.onclick = function () { return confirm('".($Te?js_escape($Te):lang(0))."'); };","");}function
print_fieldset($s,$Ae,$hj=false){echo"<fieldset><legend>","<a href='#fieldset-$s'>$Ae</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$s');",""),"</legend>","<div id='fieldset-$s'".($hj?"":" class='hidden'").">\n";}function
generate_linksbar($_){$Ee="<p class='links'>";foreach($_
as$x=>$z){if($x!==key(array_keys($_)))$Ee.="<span class='separator'>|</span>";$Ee.=$z;}$Ee.="</p>";return$Ee;}function
bold($Va,$ib=""){return($Va?" class='active $ib'":($ib?" class='$ib'":""));}function
odd($I=' class="odd"'){static$r=0;if(!$I)$r=-1;return($r++%2?$I:'');}function
js_escape($P){return
addcslashes($P,"\r\n'\\/");}function
json_row($x,$X=null){static$fd=true;if($fd)echo"{";if($x!=""){echo($fd?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$fd=false;}else{echo"\n}\n";$fd=true;}}function
ini_bool($ae){$X=ini_get($ae);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($dj,$M,$V,$F){$_SESSION["pwds"][$dj][$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,$vh=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($vh)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
get_rows($G,$h=null,$m="<p class='error'>"){global$g;$zb=(is_object($h)?$h:$g);$I=array();$H=$zb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!is_object($h)&&$m&&defined("PAGE_HEADER"))echo$m.error()."\n";return$I;}function
unique_array($J,$v){foreach($v
as$u){if(preg_match("~PRIMARY|UNIQUE~",$u["type"])){$I=array();foreach($u["columns"]as$x){if(!isset($J[$x]))continue
2;$I[$x]=$J[$x];}return$I;}}}function
escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
idf_escape($x);}function
where($Z,$o=array()){global$g,$w;$I=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,1);$d=escape_key($x);$I[]=$d.($w=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):($w=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($o[$x],q($X))));if($w=="sql"&&preg_match('~char|text~',$o[$x]["type"]??null)&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$x)$I[]=escape_key($x)." IS NULL";return
implode(" AND ",$I);}function
where_check($X,$o=array()){parse_str($X,$cb);remove_slashes(array(&$cb));return
where($cb,$o);}function
where_link($r,$d,$Y,$Bf="="){return"&where%5B$r%5D%5Bcol%5D=".urlencode($d)."&where%5B$r%5D%5Bop%5D=".urlencode(($Y!==null?$Bf:"IS NULL"))."&where%5B$r%5D%5Bval%5D=".urlencode($Y);}function
convert_fields($e,$o,$L=array()){$I="";foreach($e
as$x=>$X){if($L&&!in_array(idf_escape($x),$L))continue;$Ha=convert_field($o[$x]);if($Ha)$I.=", $Ha AS ".idf_escape($x);}return$I;}function
cookie($C,$Y,$De=2592000){global$ba;return
header("Set-Cookie: $C=".urlencode($Y).($De?"; expires=".gmdate("D, d M Y H:i:s",time()+$De)." 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($ld=false){$Vi=ini_bool("session.use_cookies");if(!$Vi||$ld){session_write_close();if($Vi&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($dj,$M,$V,$k=null){global$nc;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($nc))."|username|".($k!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($dj!="server"||$M!=""?urlencode($dj)."=".urlencode($M)."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($A[2]?"&$A[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($Fe,$Te=null){if($Te!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Fe!==null?$Fe:$_SERVER["REQUEST_URI"]))][]=$Te;}if($Fe!==null){if($Fe=="")$Fe=".";header("Location: $Fe");exit;}}function
query_redirect($G,$Fe,$Te,$Ig=true,$Mc=true,$Wc=false,$li=""){global$g,$m,$b;if($Mc){$Kh=microtime(true);$Wc=!$g->query($G);$li=format_time($Kh);}$Fh="";if($G)$Fh=$b->messageQuery($G,$li,$Wc);if($Wc){$m=error().$Fh.script("messagesPrint();");return
false;}if($Ig)redirect($Fe,$Te.$Fh);return
true;}function
queries($G){global$g;static$Cg=array();static$Kh;if(!$Kh)$Kh=microtime(true);if($G===null)return
array(implode("\n",$Cg),format_time($Kh));$Cg[]=(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return$g->query($G);}function
apply_queries($G,$S,$Ic='table'){foreach($S
as$Q){if(!queries("$G ".$Ic($Q)))return
false;}return
true;}function
queries_redirect($Fe,$Te,$Ig){list($Cg,$li)=queries(null);return
query_redirect($Cg,$Fe,$Te,$Ig,false,!$Ig,$li);}function
format_time($Kh){return
lang(1,max(0,microtime(true)-$Kh));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($Wf=""){return
substr(preg_replace("~(?<=[?&])($Wf".(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($x,$Yb=false){$cd=$_FILES[$x];if(!$cd)return
null;foreach($cd
as$x=>$X)$cd[$x]=(array)$X;$I='';foreach($cd["error"]as$x=>$m){if($m)return$m;$C=$cd["name"][$x];$ti=$cd["tmp_name"][$x];$Db=file_get_contents($Yb&&preg_match('~\.gz$~',$C)?"compress.zlib://$ti":$ti);if($Yb){$Kh=substr($Db,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Kh,$Og))$Db=iconv("utf-16","utf-8",$Db);elseif($Kh=="\xEF\xBB\xBF")$Db=substr($Db,3);$I.=$Db."\n\n";}else$I.=$Db;}return$I;}function
upload_error($m){$Qe=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(2).($Qe?" ".lang(3,$Qe):""):lang(4));}function
repeat_pattern($ig,$Be){return
str_repeat("$ig{0,65535}",$Be/65535)."$ig{0,".($Be%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
shorten_utf8($P,$Be=80,$Rh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$Be).")($)?)u",$P,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$Be).")($)?)",$P,$A);return
h($A[1]).$Rh.(isset($A[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($zg,$Pd=array(),$rg=''){$I=false;foreach($zg
as$x=>$X){if(!in_array($x,$Pd)){if(is_array($X))hidden_fields($X,array(),$x);else{$I=true;echo'<input type="hidden" name="'.h($rg?$rg."[$x]":$x).'" 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,$Xc=false){$I=table_status($Q,$Xc);return($I?$I:array("Name"=>$Q));}function
column_foreign_keys($Q){global$b;$I=array();foreach($b->foreignKeys($Q)as$p){foreach($p["source"]as$X)$I[$X][]=$p;}return$I;}function
enum_input($T,$Ja,$n,$Y,$Bc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$B);$I=($Bc!==null?"<label><input type='$T'$Ja value='$Bc'".((is_array($Y)?in_array($Bc,$Y):$Y===0)?" checked":"")."><i>".lang(7)."</i></label>":"");foreach($B[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$eb=(is_int($Y)?$Y==$r+1:(is_array($Y)?in_array($r+1,$Y):$Y===$X));$I.=" <label><input type='$T'$Ja value='".($r+1)."'".($eb?' checked':'').'>'.h($b->editVal($X,$n)).'</label>';}return$I;}function
input($n,$Y,$q){global$U,$b,$w;$C=h(bracket_escape($n["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$Fa=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$Fa[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$Fa);$q="json";}$Sg=($w=="mssql"&&$n["auto_increment"]);if($Sg&&!$_POST["save"])$q=null;$ud=(isset($_GET["select"])||$Sg?array("orig"=>lang(8)):array())+$b->editFunctions($n);$Ja=" name='fields[$C]'";if($n["type"]=="enum")echo
h($ud[""])."<td>".$b->editInput($_GET["edit"],$n,$Ja,$Y);else{$Ed=(in_array($q,$ud)||isset($ud[$q]));echo(count($ud)>1?"<select name='function[$C]'>".optionlist($ud,$q===null||$Ed?$q:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($ud))).'<td>';$ce=$b->editInput($_GET["edit"],$n,$Ja,$Y);if($ce!="")echo$ce;elseif(preg_match('~bool~',$n["type"]))echo"<input type='hidden'$Ja value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$Ja value='1'>";elseif($n["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$B);foreach($B[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$eb=(is_int($Y)?($Y>>$r)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$C][$r]' value='".(1<<$r)."'".($eb?' checked':'').">".h($b->editVal($X,$n)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$n["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif(($ji=preg_match('~text|lob|memo~i',$n["type"]))||preg_match("~\n~",$Y)){if($ji&&$w!="sqlite")$Ja.=" cols='50' rows='12'";else{$K=min(12,substr_count($Y,"\n")+1);$Ja.=" cols='30' rows='$K'".($K==1?" style='height: 1.2em;'":"");}echo"<textarea$Ja>".h($Y).'</textarea>';}elseif($q=="json"||preg_match('~^jsonb?$~',$n["type"]))echo"<textarea$Ja cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$Se=(!preg_match('~int~',$n["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$n["length"],$A)?((preg_match("~binary~",$n["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$n["unsigned"]?1:0)):($U[$n["type"]]?$U[$n["type"]]+($n["unsigned"]?0:1):0));if($w=='sql'&&min_version(5.6)&&preg_match('~time~',$n["type"]))$Se+=7;echo"<input".((!$Ed||$q==="")&&preg_match('~(?<!o)int(?!er)~',$n["type"])&&!preg_match('~\[\]~',$n["full_type"])?" type='number'":"")." value='".h($Y)."'".($Se?" data-maxlength='$Se'":"").(preg_match('~char|binary~',$n["type"])&&$Se>20?" size='40'":"")."$Ja>";}echo$b->editHint($_GET["edit"],$n,$Y);$fd=0;foreach($ud
as$x=>$X){if($x===""||!$X)break;$fd++;}if($fd)echo
script("mixin(qsl('td'), {onchange: partial(skipOriginal, $fd), oninput: function () { this.onchange(); }});");}}function
process_input($n){global$b,$l;$t=bracket_escape($n["field"]);$q=$_POST["function"][$t]??null;$Y=$_POST["fields"][$t];if($n["type"]=="enum"){if($Y==-1)return
false;if($Y=="")return"NULL";return+$Y;}if($n["auto_increment"]&&$Y=="")return
null;if($q=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?idf_escape($n["field"]):false);if($q=="NULL")return"NULL";if($n["type"]=="set")return
array_sum((array)$Y);if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$n["type"])&&ini_bool("file_uploads")){$cd=get_file("fields-$t");if(!is_string($cd))return
false;return$l->quoteBinary($cd);}return$b->processInput($n,$Y,$q);}function
fields_from_edit(){global$l;$I=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,1);$I[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$l->primary),);}return$I;}function
search_tables(){global$b,$g;$_GET["where"][0]["val"]=$_POST["query"];$oh="<ul>\n";foreach(table_status('',true)as$Q=>$R){$C=$b->tableName($R);if(isset($R["Engine"])&&$C!=""&&(!$_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()){$vg="<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$oh<li>".($H?$vg:"<p class='error'>$vg: ".error())."\n";$oh="";}}}echo($oh?"<p class='message'>".lang(9):"</ul>")."\n";}function
dump_headers($Nd,$bf=false){global$b;$I=$b->dumpHeaders($Nd,$bf);$Sf=$_POST["output"];if($Sf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Nd).".$I".($Sf!="file"&&preg_match('~^[0-9a-z]+$~',$Sf)?".$Sf":""));session_write_close();ob_flush();flush();return$I;}function
dump_csv($J){foreach($J
as$x=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$J[$x]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$J)."\r\n";}function
apply_sql_function($q,$d){return($q?($q=="unixepoch"?"DATETIME($d, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$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{$dd=@tempnam("","");if(!$dd)return
false;$I=dirname($dd);unlink($dd);}}return$I;}function
file_open_lock($dd){$sd=@fopen($dd,"r+");if(!$sd){$sd=@fopen($dd,"w");if(!$sd)return;chmod($dd,0660);}flock($sd,LOCK_EX);return$sd;}function
file_write_unlock($sd,$Rb){rewind($sd);fwrite($sd,$Rb);ftruncate($sd,strlen($Rb));flock($sd,LOCK_UN);fclose($sd);}function
password_file($i){$dd=get_temp_dir()."/adminer.key";$I=@file_get_contents($dd);if($I||!$i)return$I;$sd=@fopen($dd,"w");if($sd){chmod($dd,0660);$I=rand_string();fwrite($sd,$I);fclose($sd);}return$I;}function
rand_string(){return
md5(uniqid(mt_rand(),true));}function
select_value($X,$z,$n,$ki){global$b;if(is_array($X)){$I="";foreach($X
as$ne=>$W)$I.="<tr>".($X!=array_values($X)?"<th>".h($ne):"")."<td>".select_value($W,$z,$n,$ki);return"<table cellspacing='0'>$I</table>";}if(!$z)$z=$b->selectLink($X,$n);if($z===null){if(is_mail($X))$z="mailto:$X";if(is_url($X))$z=$X;}$I=$b->editVal($X,$n);if($I!==null){if(!is_utf8($I))$I="\0";elseif($ki!=""&&is_shortable($n))$I=shorten_utf8($I,max(0,+$ki));else$I=h($I);}return$b->selectVal($I,$z,$n,$X);}function
is_mail($zc){$Ia='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$mc='[[:alnum:]](?:[-[:alnum:]]{0,61}[[:alnum:]])';$ig="$Ia+(?:\\.$Ia+)*@(?:$mc?\\.)+$mc";return
is_string($zc)&&preg_match("(^$ig(?:,\\s*$ig)*\$)i",$zc);}function
is_url($P){return(bool)preg_match('~^
			https?://                 # scheme
			(?:
				# IPv6 in square brackets
				\[(?:
					(?:[[:xdigit:]]{1,4}:){7}[[:xdigit:]]{1,4} |             # 1:2:3:4:5:6:7:8
					(?:[[:xdigit:]]{1,4}:){1,7}: |                           # 1::                             1:2:3:4:5:6:7::
					(?:[[:xdigit:]]{1,4}:){1,6}:[[:xdigit:]]{1,4} |          # 1::8            1:2:3:4:5:6::8  1:2:3:4:5:6::8
					(?:[[:xdigit:]]{1,4}:){1,5}(?::[[:xdigit:]]{1,4}){1,2} | # 1::7:8          1:2:3:4:5::7:8  1:2:3:4:5::8
					(?:[[:xdigit:]]{1,4}:){1,4}(?::[[:xdigit:]]{1,4}){1,3} | # 1::6:7:8        1:2:3:4::6:7:8  1:2:3:4::8
					(?:[[:xdigit:]]{1,4}:){1,3}(?::[[:xdigit:]]{1,4}){1,4} | # 1::5:6:7:8      1:2:3::5:6:7:8  1:2:3::8
					(?:[[:xdigit:]]{1,4}:){1,2}(?::[[:xdigit:]]{1,4}){1,5} | # 1::4:5:6:7:8    1:2::4:5:6:7:8  1:2::8
					[[:xdigit:]]{1,4}:(?::[[:xdigit:]]{1,4}){1,6} |          # 1::3:4:5:6:7:8  1::3:4:5:6:7:8  1::8
					:(?::[[:xdigit:]]{1,4}){1,7} |                           # ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8
					fe80:(?::[[:xdigit:]]{0,4}){0,4}%[[:alnum:]]+ |          # fe80::7:8%eth0  fe80::7:8%1     (link-local IPv6 addresses with zone index)
					::(?:ffff(?::0{1,4})?:)?
						(?:(?:25[0-5]|(?:2[0-4]|1?[0-9])?[0-9])\.){3}
						(?:25[0-5]|(?:2[0-4]|1?[0-9])?[0-9])
						(?<!\b0\.0\.0\.0) |                                  # ::255.255.255.255  ::ffff:255.255.255.255 ::ffff:0:255.255.255.255  (IPv4-mapped IPv6 addresses and IPv4-translated addresses)
					(?:[[:xdigit:]]{1,4}:){1,4}:
						(?:(?:25[0-5]|(?:2[0-4]|1?[0-9])?[0-9])\.){3}
						(?:25[0-5]|(?:2[0-4]|1?[0-9])?[0-9])
						(?<!\b0\.0\.0\.0)                                    # 2001:db8:3:4::192.0.2.33  64:ff9b::192.0.2.33 (IPv4-Embedded IPv6 Address)
				)\] |
				# IPv4
				(?:(?:25[0-5]|(?:2[0-4]|1?[0-9])?[0-9])\.){3}
					(?:25[0-5]|(?:2[0-4]|1?[0-9])?[0-9])
					(?<!\b0\.0\.0\.0) |                                      # 0.0.0.0 excluded for URLs
				# domain
				[_[:alnum:]](?:[-_[:alnum:]]{0,61}[_[:alnum:]])?
					(?:\.[_[:alnum:]](?:[-_[:alnum:]]{0,61}[_[:alnum:]])?)*
			)                         # host
			(?::(?:[1-9]\d{0,3})?\d)? # port
			(?:/[^\s?\#]*)?           # path
			(?:\?[^\s\#]*)?           # query
			(?:\#\S*)?                # fragment
			$~xi',$P);}function
is_shortable($n){return
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$n["type"]??null);}function
count_rows($Q,$Z,$ie,$yd){global$w;$G=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($ie&&($w=="sql"||count($yd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$yd).")$G":"SELECT COUNT(*)".($ie?" FROM (SELECT 1$G GROUP BY ".implode(", ",$yd).") x":$G));}function
slow_query($G){global$b,$vi,$l;$k=$b->database();$mi=$b->queryTimeout();$_h=$l->slowQuery($G,$mi);if(!$_h&&support("kill")&&is_object($h=connect())&&($k==""||$h->select_db($k))){$qe=$h->result(connection_id());echo'<script',nonce(),'>
var timeout = setTimeout(function () {
	ajax(\'',js_escape(ME),'script=kill\', function () {
	}, \'kill=',$qe,'&token=',$vi,'\');
}, ',1000*$mi,');
</script>
';}else$h=null;ob_flush();flush();$I=@get_key_vals(($_h?$_h:$G),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
get_token(){$Fg=rand(1,1e6);return($Fg^$_SESSION["token"]).":$Fg";}function
verify_token(){list($vi,$Fg)=explode(":",$_POST["token"]);return($Fg^$_SESSION["token"])==$vi;}function
lzw_decompress($Sa){$jc=256;$Ta=8;$kb=array();$Ug=0;$Vg=0;for($r=0;$r<strlen($Sa);$r++){$Ug=($Ug<<8)+ord($Sa[$r]);$Vg+=8;if($Vg>=$Ta){$Vg-=$Ta;$kb[]=$Ug>>$Vg;$Ug&=(1<<$Vg)-1;$jc++;if($jc>>$Ta)$Ta++;}}$ic=range("\0","\xFF");$I="";foreach($kb
as$r=>$jb){$yc=$ic[$jb];if(!isset($yc))$yc=$sj.$sj[0];$I.=$yc;if($r)$ic[]=$sj.$yc[0];$sj=$yc;}return$I;}function
on_help($sb,$xh=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $sb, $xh) }, onmouseout: helpMouseout});","");}function
edit_form($Q,$o,$J,$Qi){global$b,$w,$vi,$m;$Wh=$b->tableName(table_status1($Q,true));page_header(($Qi?lang(10):lang(11)),$m,array("select"=>array($Q,$Wh)),$Wh);$b->editRowPrint($Q,$o,$J,$Qi);if($J===false)echo"<p class='error'>".lang(12)."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
';if(!$o)echo"<p class='error'>".lang(13)."\n";else{echo"<table cellspacing='0' class='layout'>".script("qsl('table').onkeydown = editingKeydown;");foreach($o
as$C=>$n){echo"<tr><th>".$b->fieldName($n);$Zb=$_GET["set"][bracket_escape($C)]??null;if($Zb===null){$Zb=$n["default"];if($n["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$Zb,$Og))$Zb=$Og[1];}$Y=($J!==null?($J[$C]!=""&&$w=="sql"&&preg_match("~enum|set~",$n["type"])?(is_array($J[$C])?array_sum($J[$C]):+$J[$C]):(is_bool($J[$C])?+$J[$C]:$J[$C])):(!$Qi&&$n["auto_increment"]?"":(isset($_GET["select"])?false:$Zb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$n);$kd=null;if(isset($_POST["function"][$C]))$kd=(string)$_POST["function"][$C];$q=($_POST["save"]?$kd:($Qi&&preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$Qi&&$Y==$n["default"]&&preg_match('~^[\w.]+\(~',$Y))$q="SQL";if(preg_match("~time~",$n["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$q="now";}input($n,$Y,$q);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($o){echo"<input type='submit' value='".lang(14)."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($Qi?lang(15):lang(16))."' title='Ctrl+Shift+Enter'>\n",($Qi?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(17)."…', this); };"):"");}}echo($Qi?"<input type='submit' name='delete' value='".lang(18)."'>".confirm()."\n":($_POST||!$o?"":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="',$vi,'">
</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` \0X\0Z\0\0C> \r9\09\$M'JeRd]/LfS9m7I[m|:(nNiTe6+y<^e(,EY\$L\$uDK}>o[`*qJs5ͅmrY<+w|9˷M2}_땢\\\"V\n+MtBK*3ypl5I`V)OWs{OIAs۹㉥N&cO}~hH@GzJyGCcNJЪ`귊FC{вU@i>YJEiNR(9A%!CQ^yat:&۝YGH/\ngxs~@%y8ZUEOac@:\n;G>9i}@p,6&c Fő^%aRAQhIZԵ9z\\š`V5ZjoT9!^O)12l.I~^Qt꒦usI;OlB\$Q9q	\\eTsęUq2H֥J'(EvT!ѐ%EQFPv\\o'JtGIID\"e3-	oj&8E@uTICTUPy3ڶ>L^jbK#qD8ʒ\\Mdql\\y^]94hNk_g^GQ1)PQ8eMUsոbRha&]O5VUз-d23\\U@kWg+˷'gZٖE)KJ|qP=ҟO`[%wOgNMPcS	C!pdS#!KL=}ߠtp4!/k6uNdU28XDXHDvOb4IN<+q*?7WM!X,dXN(Ж=0Kvǘ25F #\$a&LSd\r(ЗFHИᖒ߱2:'M>RXcq)xdCp\rah'\0hDȠ`l&&B8Bm.rAeIQ2@). n`|ًF<䤳ZJ[a(KoP\"4D?TRgLJU_#8%u\$ASʆKJA8f17M]J&1=afK<w\$	MITTH&30?6ls\$DU\$ThI[5*MdbDPLsF\0'AJp-\rG3_k]|m%`_,8sE<2r!;|*TTQ-tق`<GlJi9GLKaK{\n=M+1h/:W\\[q\\Kaleݲu)v-~5UL?ED[1\\V66gĽfΪ8Io]h[ݒ R)!Ι˕W[5K'?};ii]3lFccL|^5;*ǸQ博&<Yu/rٗ\n-x8'\r1)#n9Vx%YdI\ntI*ȳs~m7.ǌRjX+^PeRײ:Je9{#';죥u2Rj]MFZVj]ZZk]mƲ");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("\nCo6C(\"#Ha1#yd1٘n:#(b.\rDc)a7Elñi1Ύs54f4ngsIhMдi:`,]YtL0hD*B0\rF&3xs'[Ʉtv4S%0XLW5)Yf\r^=~9g0\\@rQNn^yNj{opC%ʋGSZh5Z|>:'b{J)Ɠєt1*uS=^2*8t(0R,8j:x@9\n@1\nJ#4BRJFƋ>#J`HaahbC0\r4Ar&\nB54\$>+QA2DoMEL\"48=s5DLW7JGf**HjEK16ڸ,oLtJA\\\$Q|9-H@0\nxtV(o.+ܮ;1D8e*c\rT䍣B2܍z\n83=Ktƻu(kmׅ.G;+:2)cn<s5:6\nԡ)_\\6YL\"VV`c\$L;k&\$?XAWU48	Bޡڮz*[O24<?{36%;VV:\\A䎈	xnpxF<[xoW.U[Ãsd7rF&	bÒ]t*7ji=dZֹYy4:ie&Pg\\1C0:;;ٹ5Cnà\\܎#ܳ4{^g7u6NJ6OC#{!?fxw!70JJL48dpLàypC[.AltPQ'zl=N7@m\n/cTc]tהxiaD+pPpxׅUJ%Da`@^OEc)Ň@@A')hUb!AƸڠT~P\\*9Gi};`ˠh\r1Zlx9HI)AjRWI9!#̆[ysZb--q؇h7➀LjQʻ\"#lU`ׄ^Ar\rffV.QsnhGgN@e%?\$ᰂI;T\0`]B\r8[r2`\rҢ\rCKeF2ٺ\r'[t(),M)ڸ Se=*N@+9%Pin:܋T}ԎMC\rNtg%VÕ]V6Hʒl?Մ_Vhee,3ھF n%^kaM)_a-NB-v)rJ1NUly\0#YM˵Y`EM֭\"UH-_ #ܹE\"\rv42FL8wZ0]5Sw.!0ʴQ͏3E|%}AC0tLk3Pj/kbN`QQ7x_僧B<A8@%>\nx[&\rfy !SLsVG(¹	B\$a[F\\A8G&r;or>biRZMm,d\"<;\"Q?1uV~G,\0գ0c`IϣEPR^fBhUuɔ3CH(& i:\rt.W&5}UmߗpQNi`\ndi#(1QKҒ\nI,Yf`'(p7`q\rt\0U\rsr:ħ0و;A,v0p\rBPcrR^m.o\n=\\9%F7ZV#0|Yygf?/\"aMܿHnЬDdjl\0nAxsP(3}d#u`'p@[[T*`Z?\\!>˄vl}zf3; !(6/&A\08\0\0r\rp4{TT/!\ruAtH8JU`r9`j\r-H\"ՃATH ? }qA3l~a~2I^`Z\0004 ̓eP&\0p`n8pd%f\0sO`hD0\0p, i\$\\\0mO[ nD&`aP\\p2.0/0P0\nbVDd&&jd\"ioB0\$&\0aGJ& @&O7@i\$%\n0/bdo.\rro<\rP^Q\n	o`/\r^P}O6@nD d@0	^s\0#\0\$zIQjoc0M0OC [0@Q@`pf/P,ANp|PNF:ol@pPo@I`c	\$p/%\0HњpuP!h+\"A\$\"a_'/?U6DّCq fdiP\n%uQ\0e@pp#q\0\$o\npDB\0ϓ\00^P\"oB0ZO1	a*%Vj҄?/-!B,W\"ϑP\nPEFk/p_\rc+/\$S/7+/4_Lq'`D2%ύų#\r nב7p1#p7`O0\$o-!2Pѽ'&02	Nv/1\$io5\nO ip<23QD1</1-W\rCҍSٓ\n	\0\r؄JdrP#(J^nA N4\$(?\"CtH\r*\"1eptox\r|9ӰA \rADtKB@\0OCorsG`/kԍE,@O(KF,R+0A!/P\0%#s}PP;\rETE6\r@*hUK01uI8@^:`pR\0' T@b\"UaUdhi1SR+K	OtmJGTGE\0qq\n/jQ\0RA3s.Na\\@\n*1/\"a[/ϛ0Nك<aR0QUa/-P\\Hoap-%/\nskUѼ	\\#]6M!Tfr^\r*%PIZoKQ\"VE952S\$i+6OHѶZO'Zp2U M0<,Y1[Ui96-PR8p\r3?7O'cҳ`r;ӝ``%31A4%WhYqoG7oa,[Q7o sk_gii,rOij1CqI\0/!ғ]^TPHwM!wmQ01+mR},O?+T5pNK^Sfhssvk71f/5cg\0n@1zҴ\0koPI#\0i'E{GZ\rVxR`0#!/\nqc!1g?2nOj@pД@j\r<9Oq~@e0!3P#?YqلҸ5/?\0/6tIus cDi7nW\$UmA3kR?u\0r}Wt_bctō23p01r;bVv6;%17/)(]1W'QU1 v0\0gtADAWBtWX\"aXu9I<5CCTEEKATE4!W6) RccR\$kcL3:#T4'sOcV/\03\"T4j)PP%r;oLՏJT\$rnt6Ne95+#a2\r'MPo9UUmQX{Y ۛqu\0g&ZO-[IZ::?SA\0ڂ` D\"Bm*ePSj`JX\"ɍKFY>0nz\r:\00043,b,f(hޚLG3ICG.X.,7.j{\$]mrmV.Ξ\0N*vuXH`zON/V^ dɨD\0ƘhI\"˨piERVc9.O-.k\0DϻaE[HL\"b[Cj;EF9Q\"E|[2{M\0D	Fi\0h	\0`[痠E\ns\r0nsidCI@eŶ#eRivŜKn\\-|;7`qH`E܇BɚCӮܢ9||z^'p	c8-	bҕIP!G*@%:@C[	+; \0i(,LC!1[HPV[W`{dK)X\\ik=d.Е{Cכ񛿶<ɿ-I;Խ7\"Q?#ٛ9jE-%ۃ<<-\\)ͣY`\rIN!lHpI8!d]ܽٔ<yẉf	/j‘	gɵ<-DǛ>葱\rN]{юqd2]1tHFi[CcL\$_]Ӯ{kt]Ky՛i{\$Si =of{Ֆ[ݜݠ!]A=4e=#F;׾ĉ¿ܜ+ȓvƜMnsNHqw\\V?E<>	!'=|Rwd6ϊ\rwI?_yɾ!)fw˞3匥w~F#ɅxWt1(ɇRerW!I[ʤp)K1@HfI:Q S	r;5nbkqTʒ;  o*@r&Glq<\0.w6VckBhH(jOC7yC(mpV\n*1#n<[BR92E@&F(\n?J͐[ARWaػv8Wf#P:k{d`a't#tBmCXdr+sP,Adhwb?``b[ʡ\\+HXD90Ö]CY\$/Xk`/\"5|Q`Q\rj\\'CB?Uҏ,F4><agoA,(MNrHkeI,T*}òp8oPi yp\\'?9I&JNه:͏<.c01 3hB*aEzkhLmSԝ8:Ym˩vꗯ{	^^UQI{H[!\"ە^N{x4;!|}|nŵvb9ݎ<9qaY`c8;o\0f1\$o@5`} 7@h +((wq4i6x=ѣq;'9Qd# ſNiyq%>/ãb7ډ\rClFTqTaxˀ/Nt_^e\"6<1SƼ<G_+AWch=xL}GC8{Po,>9[]٘h@PÇ=4H~B\$N&4ѰPD, \0V@rj\$>:D\$	_Z#r;z4'|A HAPI}Dq*J8p\n EQ8\n  \$m`)W0ZI&ji2J²[Q\n~b@xkXrQAzb\$+ 	\"搐D\niC>\nҊ4)T{dQh`{&oBr,B(JjFād!\\jZQAO+2T,Cn|Sbr'@6| m((vú+YvK~]P@.sN_\0\0_aޗ03w0L\"a,yUwL_(ÐyL(08vF`[.Y~L(} oDjP7B^\rL%\nf<2\04)M3sG LMi?_r٘Lj_B-kZmj82͘5R4ڞYBJk3bBe1͖ٙl<f0B9!]/TG+*ʐIq\nܞS0@.B(CIsӛ^.2tRLg;:͘\r<̲eEKjtf:9ξuDg7<IM(<t9rN<ʙtˀ79L _c1yg>OVg:O6z3,x@1bM_\0&0\nb@sgN˚\0eDH+?KPrxnFUcE|ب#3Вp@jg-yuhW?(\0gThe:~t=B6Ȕ1DPaT8uCj)KZXchD#8XFy˼`-\\ Q&h_|ӃNiЖ<sa-f2NE-H>`0k-{8*IpCnt\$h7BV\\5#|(yDMKTE9I٢\rB9\\CS\n%fgJ,кt7 +DuJ6r~a.'`GPznm-7^>o5fཕ|=!PWxT⽐`)QW\np(|Z*?pс\r@kO!.3aq]\n'\nm=Ah)paU9NҝshgڕHa5x/ ");}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ۤiڰl\r\0v#J8wmɤ<ɠ%m;p#`XDiZN09占`v0C98a^M4Ł\r|7zF[\n(7vIĈ2,9Ì#ȨDWR;P'm3샂\n\0u39Cw2fp{и/	o4ax/ \\.=NJG@YE9a߉mg[ӹ=z{4\01CH:>X>~]\0dws!:%9~a\nj0XuS6dIV3̼r`AD@x9'A@\\Ta3((\nP`o{e9=	`\"	[B{!:x?)'|f8C ?Pu|@xR;U\0(.5joN)/97LA#8eACA0&#wKդRGZaH	UݑpRb`WްJ\n!MDxkVnO(#yN#h\"@1\0Ɖ#8L2\\rQ\0r\r`Yvb+1Hl`%z. M 5lNb\$2TxH`XHSWmb)'>'zP!и@?V=8\n+da07;ɹ*~WwܕR*T8CҮ]Xn'I2n\$p4JtX<>yK)qi%Ű4>V\nH{Jj1}6JSPCa2\"}s(ڙ^m*D9ͩɸu:AyT˩L͜:+p^VJGff5%y	ܞY[댝[\$EUYZuJdA6[-CHl)ʃm=GfclRVxU UXR\$ij˻G	2[T'\n5sFYhi\0X%_!\rE44ltm93lS{S*g8\$\"kHO)Jbʵp%\\Ps#)B:ai Z^\nkv2FPJʘnB,ܧfX5pB`ooI!=8)caH㨬b(JGaʏ\"BF T{Rp*e~2^ >v>%^13wCX=!gTe=9p>5;u+hMWZA\rė\\M\\3gМ[YvqX[b)2\rWL+ŊezA|ed9Ae\\ap.@_긳~cp%-ZW[QI7E5uȔ[6%PCio[1A4KD\$i.	?V{/_y]@^q&#\0O</q\"檭\\WUHyWtjV{nVf+μt,Ċ^g:LUiݻe*ǏW/-%嬍\"8C^&(E\\6ZN9ysv^/B0RZO\0;`N &Q;P2Β+=MtZ472hLWoK'& zHܧj?\nRDG*Ӊ-#<I,P,Z;h\0#NM>I`(E4\rT]\"V\0XQj~ bR`MN-RSN,\"0	d~y\r\r@`Q-\\s\n.P)]\0p\r]T*}\rp#-jEmp!ɨf@@W<cmXv	z|KJm\0@WX\0Kl<!N*GECZoBzТ\rxGeHNH(gj񂰯\0xoK@11lD\$Р`Dv V bSгH`2pn.qQJ+*fMp\r /D*\"w\$o2[QF`M|1Rho'&5#%j>jMگt@&rpGdDbtsR\$r!N2qo{*,DɯbrM`.QqD%јG	!J-+EDE`{0䧩0DE#p(7#2ܳbd73M&ysH\"74rL9-f*܋/rRŘRBn*ij@nB茴\\FIX%x f\$9J}9a0qsnFH|@E3};)k7|HKK5SdvR@  ( \r&*Ja@fp+Jk,w _?\"X\rN3'5&t%;A8Lrn?EQ\0%NSka8\0Ю<DUGF8VTDWe7`HtHn GJl;HTjN`@HDs[tΎ((Hexm7vyIҾ#T=>()\$_ԧOOQ-e(*GKdKt`DV!C8sDi<)3BKU;8SZB(.GDc,EuTpdl7J38DK\nbtNSHUt#{VluVZuF\r@`]6Zǌǀ][\\\rf(0SS43D'W:Sc:ǅb)fĢ#w5vs,rw6&\\m0\0ڜ\nJv66Kd)cu&R37NSX5>DUZ:Z'rT7Sk_G[Ĩ\$KU\\x<m5#[E\\ɞ0WJ*.\ro]#C*5kg|<-uSO7TS^hosp f֍8I\\#8_R{pe'2=S@[:e8ҕd35]r֪ֈ&De\$nW[3^vTԖw)vܭX0cmasZ xm׌בPyyz:^2b᎗9Uqo of>\";K|3yVhl	0No.%@OGvJ7M(A,\"[\0/, %Īσ*2x}˦gA!,,ǖ:&\r,3_-ԇlHo8vwSj)V)(NSXHXMXCx'/AXZ^|f҃i,ʸg؎[ڭ@QbLxJ\0jS Z	VB\"Ћc<ТtP5uP\rܬm\"yBCMnw^1 Njx./*ntI\"2\"=r\$:kwba.1>3h(Kom5;2g|B\"iD\rgBX%rV\0n\\FMm\0~\\͞4`.*\0@'9  d	{6瞠\nP놾In˛Y[VXm^oԢ?g<P@N/KsDeP\0xǤg}[sG俥S5u%%E@/OZe{LY))BR`	\nQCLyh783\0˲\06!N\"\$[h@aZZd\"\\\"Vg9[)hN`mL-՟fЍd oXh\"kӸsJ\"m2N2T.uǜyp'c)(ݦ[ɶ[`g;SZJzK&jZOp	ɧ@˪ZJz(Ӯ@{8\0_Ł\n3/|u0K:IV:YņEmRfn4fow1rN2sb0ق<d/eGfZXɌ<I<,b\rǖK\rJ\"H+q-wP,\$߫%U,՘@ӮLiT0K2yiĳ=|\\9wā2B5\n\refJ]ѳWGyb'HQ\\\n@ s#p8P}}j\ro`\rE RMMHJW nt\r*NoCMCB\"_HkRN#]d<.\\Xe&_G_n%9ƛm4\\Veg1'ao\r5p|[\0М@h tPbgӦ|)l{)~|̙קsz1vtFF)XA4y/g!ghNqh_j̏k+`0woSkW~,~P<3h~~DXE	\"ɺkRb\$BI!IYxF%FTg6-X/\"RmdkXQ`FS?V7Uвp&إsx@o|?MW`iHBC9꥚e;3;HP\"L5	#^S,5`#\"NɢB,\$o&n;xZ-]>q1 he:\0\r[\"*bw&6Vr\n>󹑭@SȚ܋>,43Y\r*=|Rڍ09il!SL\$`dN d%252(VBA ]E x*	dF38	{f(^>H&Mf^Mҙ\0]B\r	U*nPt`'?\n|,`:{x=8nHrFƧZpsO\n|	QN,O\\)+\n .)\nhY0,_\\n/\$CۄX\nP(\n`X,͹MpҬ++@ƌ8V5yN@'#dH\0X=	kV 	BAPѝ\r(Ydh~qb	6AR\0Xg|\r`\\8H. NJq2\rԉ2[P CJ	V'K[H@KMtT 	V=!%' \nV@!S~ugDWmɗZR-kbr iƬ=08AdLYRS!\"rxYC\0CF^{xȐŸ\r\"K=;A\0t L\"וEѧX#\nƵ/|<CWt^4v6R\"ted)^f6l.&`G5%RJMIB#9T-D\"FXڍ1~ߪJ.-jb`{hX'QHtzV2G!|K*#Gխ~cH1\n%`d3bYxnIȕ`ǷyILhB\0=l!AzS\rMHb\$E6F~Iȵ^aKOj*a*ϓt0-2\r|2@~NF6Ě('`\"CPE\$ep7R^@&/\$Rz\r\\vL?m\"6-\n`q\$@I!҄C움'	9jKv(6\$?[5ʒ#DC%)7Ŧ܂r5N*A̎2쩘<Bc-IR8^!QV]CFBS/zc&@yI\$35Ոl.HlK1 s\"5\rҶ\$)kQjJ܀E.7v^\" Rn%=\nto8^68@ħɦQ MxK8`0%T3 iqɠ:E\\d2I>p\r8Yi]UEd`ԧ^#2dEb\0cL/Y!OTĸ˦ eh\n`jypxB`ð+@4T؀igo\0^PSRumҏ(gߙܥ;5y̴9,Q4J9q'XݼP#	q8?%4&q.Yͤ:q)v5!!ȅk8ʀ {\$IKخQґٖж't0~KYcH) |+&Z\"@\nB DE{#eHL\"V\"y1 j)9ب6iY>s-hЃϱ\0^md9iz#'EA@)aX Q0:F0⷟CUn[bʳ+iHL9cv-!PF+d(K\"bdƄ@_C %|;PxuoxswD\"GGcoV\"<@2}kp%\r \"\0G	\"\$4CxJ\0ay@\n{CkMt4S# ȰUphxdqcZ\nG(>Æ\0  Lk\$>`@LǓ;6A-Z\$y, @Z~V5rBy `\$+?I[RT ?],;R\re)(.5P%TS 5\n'킦U>[:NrAsJQ03?0T,%CU5D;)QVPŕ&6hB\\HVX0>XA1[I0ؘZDWR4kI,æRzE'Q;`-4xkťbtTx`\$A(ܗM-SLe\"Da1T\"-u164yQqf\$Ɵl|(	/VuQkYX&.U8\"	j%fme`syl%<ڞTARMPK 3τK1`e)QD@7cNHpOVah  PJNpĞ\n3+0gꐫ@QL-SH<fM'%tIc\\-Q2uRjers+DP&{_u*Wt'itaWSOTtD[-Jk\$-%~bZz%6 C E(,awI][VƉBҭv7\nȤqM[b.WҨN_YdV(,\\lb'pLdNtdƢ/13 LFx2Ap~1*(3 T91B\0y\$a\\9?hj5Qؕ4lGo:-`pODbw]qRv=&K@@ԯj\"HAMd;zG@KZ쑔YqTrC䁧lejEZY1tP*8_n[8]\$M8V?.PEjC\0	IX@ \"\0P\nRdvYL3(\0:)mii	94-;PTm8v*DC`\0aaV\\ tANp\0_	\"\0ÛUӡ,IɝH-lm>۪\$e[pڎ*`Q)SkS`:Tb;n+v	w<v\rO2Yۈ,o=ʜDt 8QPavf~}W#eL( )'#r\0'	B1G,)TJ:I`h'Bd9YP*(\0/W\r\0W{0>]F(cK*YT5FZއx0=p[++O.݀V*QFo)Z-AQs\\>?>d=tg1Z2L6\\҈x2X+5ˀΊ2&nI\\;;]i\nƔBBN)@=x)Kpn2]	oǩ`AK^	p+gVA۵WGHs>!اtv4	3\\	`nK],!AS|Bse`1'Db`bd#6p.aym\$=pXweufV݌UH%#̽\rm(]\0LF8rE]\n2u7ifXu&&pJWQ斡 /'6R.cxŅrUsE̎2_UNG\0\\-Qp<W3OEN!Wdb2M,{ty\0g\"ڮF(>e%@K\naVrö)3U&zB,8\0-\$TWrlRYQcpkZ!_f!_ (2ðQB2ٚ*5\".4'=a,*h[]臅mT]J;\"ݳ^P*n>0eNw̵r_WZ\"8+J`RD8b׷ӪX.:U\$jdB\0ApRsqP-./F5`UBVFsz3\"2^`05\0&E*hr4`j`e{C0A\rM/L[s2QBfIMsvA*(!2c\0/ps,' yO\rE؛Ed2q\\Pr>J𣮕i>U}ɾô'_ 'Gꐓüft\nJJyP۠TKU142GL+Wvd?-^A]9CI6Nă!A#/\nhb,a]`: kq`\"d@4c4*I35F[m*aF\n9VXWDX\\A߫L7Ri؊.:mBDB3]ALj?#beЀXSɌYe\"hm4kdc3QL3M<C}鮀'y~Fվ?;B\"Fo_\"ղŮyȭM8L^Zj#Bz.tNBiȯP.Ck\r~þ-(a\"A%cc\0B'4A)#G&=ڣIA\rMe@35x}\rc	&8ScZE_nUJI~g93\\'NKZa\ng\$I<\0%fKkrFgߐ3&mI;RY!@oN!12 &=Θp*{hPv٨fM.	cB;um;p~E߸:DǋM#6674J4Kđv4bQ3Bw+2[V?&-sɞw%gGU^wiuCHZ\0;rգ6#9\rN`Ԟ|aضHM:[X^x	)v1`1e6lu<#;7cHg.nJmǨ^7`/-~MEMngu`p	D	S]gLvqao(o?wvx7p!0J tf!oiOn+e_yْ	Ħw~\$WoQ\$>#un-Fiw-\0.5AK5/dC8fhkZJbؘzQpVq\0R'	M2Jp>(B\0t6I91s~H\"+gPq-8]y2{Sa\rn)k{hf)F2L3SQg|GZL֧J>H>X?U\\		Œ~	%\"5ݖf-8B,v093(\\8 g}P@3NeiUHF֑<	{F'A)q#S=p7r@DN	Ck}E5z03J+\0X^6G|PgĦP8˻\nv|(NGR>i Z//@p>[wfv^N^NX4Lo}IZEyz{S+xA% \\2Te@ݫU־|h7/fgD&Wf^}Y@84Ht7ٝ=fϺzyJcE2dt|:X{kq\\C0*Y)~kk\\m*(9.{򱽋bTw?:MiŬ9-ZE83ɬ\"z=!5.@'\\m0WjFN\\idA8e>j`0>ºUfm ܛ=*f#d,QmA`0:>|BW&\nĶ	Om3#ŻV,dwS*Ob\$;HbYSGOg21%JJI3事\$%aCSL';k\$XO%\$	1qf2!@cXZ!Aw=Yfx}#1ˎcמ1Pٕ?aD@dp&>2rJh']`_*\\@<\0v	c|z#zyq&;|oY4gHB;s|mh?\$	D(\0DMdQY_xJ(!!OCh7S;WkKg=APXmRJW?7~GK\$c\$}7fRg4gQwXch\"O|y&RFUO.BKqCUG/~%QntWX:֐v\"*p{2'2(9ڦH`hqe;#@~	.!:HQBT\$~y\n_-'&@_6&C\"	;4#?l3܍_o'e<Ȳ\"/'X\0fQ#0nn5#6vHS^8'`LM8V/SR~p?D{/ڇh-o-A|\0k	'Id*~C_: '\0M(Y1`+VAS塓4^HǎVY9C҇> p9jCx\0Z\0	:ZZ.Hḡ!J`ʂ:V\$pmȃJx\0V% f	m@̮Jĩ(]# 	{oH2RLz:A|y0\"4RT/?8HRq!X&A`!MA\"lL ?&\0&'h{,\\!AVR)(PYOs'yBÜ!<o>\0\\^Z4Mh~0E5F\0azJ2HAb d4PˏRUv2Jb0-b\rA:pvhs[#Pt@8PAzQ4^R< #;psy\$[FS(9k6p_PVABm{*0h `A6)4\0!Yd	@YHB.24Pln'\n|l)AN(9!U0RD#t|*5poҢJ<T1YB,\n,nAA;!\0\$м\"V|-AVz2Pp\0>vh]0u\$(ZL0kd	,1!D VJ'@̩`5dPͻXEnՆQP1@l\rˉ\r2),.0:pXWk؀VPM\0W2ɝCa:\0P`Cz\rJH-<\na( uga!&\0001/i<%ȸڦhD̩XS-<AH~i:,ȰaTkD\nGb 1!.X:`RL.\0kr H[-SL\$0VH\\ykOIn\0*BV.DXH#X[BLk0N0c&!J5G詰< - 0	S8#!	Ԉ3\$	HH3`NU0p {xr?PATOnr*[%dKadJIV\$yį[DC#	BXTE2\0004\0ua?C-ŅRN\0NLb±,-U8}Cčhf@|	jxx%D||R.[k6Dʀ*'\0de(");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS	_6MƳr:ECIo:CXc\r؄J(:=Ea28x?'iSANNxsNBVl0S	Ul(D|҄P>E㩶yHch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0\0Dbc!Q7Шd8~N)Eг`Ns`S)O/<x9o3n2!r:;+9CȨ\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-\".:J8weq|؇X]Y XezW 7Z1hQfuj4Z{p\\AUJ<k@ɍ@}&L7UwuYh2@u P7Ah3ÛXEͅZ]l@Mplv) HWy>Y-Y/hC[*F#~!`\r#0PC˝f\\^%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@iUGn%Ұs;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ʖ-	9O\$طzyM3\\9.oE(i7	tߚ-&\nj!\ryyD1g]yR7\"~)TZ0E9MYZtXe!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\n師0(M&FJ'! 0<H*|*OZm*n/b/.o\0dn)i:RP2m\0/vOXFʳψ\"000bgj\$n0}	@=MƂ0nP/pot.̽g\0)o\n0\rFbio}\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٭ЪGQMTmGBtl-c*\rZ7*hs/RUVBNˈԊiLk.t龩rYi-S3\\TOM^G>ZQj\"iMsSS\$Ib	fu:SB|iY¦8	v#D4`.^HM_ռuUz`ZJ	e@Cea\"mb6ԯJRT?ԣXMZІpQvjjV{C\r7Tʞ 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|	ɍYJՂEOu_\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\$%xѬ´]&o-39Lzy6;uzZ 8_ɐx\0D?X7yOY.#38ǀeQ=؀*Gwm Y]YOYF)z#\$e)/z?z;^FZg`^e#?eM3u偃0>\"?@ח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|ͳLMy(ۧlкO]{ѾFD}yuĒ,XL\\x;UWtv\\OxWJ9ȒR5WiMi[Kf(\0dĚ迩\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#{P4ܗ\"\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	bҏ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=;*b蓈Ty7c|o/:tP<Y:K&C'G/@Q*8v/&W6p.\0u3Bq:(eOPp	駲\r0(ac>N|	t\n6v_e;y6fgQ;yβ[S	gǰOuddHH=Z\r'qC*)gEO \"!k('`\nkhT*s5REa\n#!1\0;Siȼ@(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*Qڜg9~P@H\n-e\0Qw%^ ET< 2H@޴e\0 e#;ITl+A+C*Yh/D\\!鬚8»3AЙEE/}0tJ|1Qmn%(p!\n±U)\rsEX5u%B- w]*E)<+qyV@mFH BN#]YQ1:V#\$<&Xxt@]GԶj)-@qL\ncIY?qC\rv(@X\0Ov<R3XQJ99lxCuī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-+otL}ĭqKx6&%xtR\"πRIWA`c}l6~*0vkp68z+qXw*EIN*qPKFO\0,(|k *YF5;<6@QU\"\rbOAXÎvv)Ho`STpbj1+ŋ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 %GHEX*0ۊ)qnC)I\"툳`KF@d5Ap{\\pɾNr'S(+5Њ+\"ĀU0iː!nMbrK6úr|a@x|ka9WR4\"?5pۓkrĘߒ7Hp5YpWG#rʶAWD+`=\"}@H\\pЀߋ)C3!sO:)_F/\r4<A\nn/T3f7P16OYлϲq;؁aXtS<9nwsx@1Ξxs?3Ş@54oȃ0pR\0yqL&S^:Q>\\4OInZnv33+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#T枂9jK-ޠYiQe?4Ӟ_Wz@JkWYhpuj|z4	im	O5\0>|9ז轠gVyu=}gs_Vsծ{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'k5n5ۨ@_`Ї_l1wpPw\0coEl{ݾ7o0Ibϝnz﷛ {8w=|/y3a߼#xq@ka!\08dmR[wvǋRGp8v\$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.sЄ\"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֖gMgsLCr8Ѐ!3R)00sIJVPpK\n|9e[ˑD0z4ϑo,N8ns#{蓷z3>BS\";e5VD0[\$7z0=8	T 3Q'RnLyŋ'\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ǻWIG	Mɪ(|@\0SOs {@k}FXSb8=_l\0=g{HyG s_J\$hkFqd4ω'>vϏ!_7Vq@1zuSejKdyuS.2\"{K?s˦hRd`:yGھ\nQow'hS>LX}eG@9퟈W|Ϲ@_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.bSCc욌R,~X@ '8Z0&(np<pȣ32(.@R3@^\r+@,\$	ϟEtB,⪀ʰh\r><6]#;C.Ҏ8P3;@L,+>p(#-f1z,8ߠƐP:9R۳)e\0ڢR!\nr{eGA@*nD6N\rR8QK0颽>PNIQ=r<;&fNGJ;UAAP&`);!s\0pp\rn(@%&	SdYuC,8O#oRv,#|7\"CpB`jX3~R@v9B#@\n0>T-5/= E\nd\"!;p*nZ\08/jX\r>F	Pϐe>OLO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*Hy;`8\0دd\r02A?+\0Å\0AwSl\r[ԡ6co=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?߉?e˔O\\]7(#D۾(!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\$47rA(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+Yҵ-tfbQ_-Ӏޅ+ 95LjJ.Gʩ,\\ԅ.\$2J\\-1-cˇ.lfxBqK,dˀ8AKo-3Kr/|/\\r,HϤ!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	-> ҡM4XLSdٲ͟*\\@ͨYkSDM5 XfDsUs%	̱p+K6/ݒ8Xނ=K6pH%3ͫ7lIK0LDu`P\rSO͙&(;L@ψN>S28(`JErF	2SEMM\$qE\$ã/I\$\\ID\"\n䱺w.tS	ђP#\nW-\0Cҵ:jR^S8;d`5Ԫaʖ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\\(8通hDCsDX4TK{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&Qm)ǚm #\\D(\$̓x4WFM&ԜR5H%q[F+IF \nTR3DLoy4TQ/E[ў<t^F)Q+4QI#IF'TiѪX!ѱF*nR>5pKm+sIRE+ԩM\0(R?+HҀJ\"TD\$	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#MUWHURǅU-+VmY}\\OKM\$SeToVHT!!<{RZA5R!=3U({@*Ratz\0)QP5H؏հ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ݝeaLQ&&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ڹfzێ;Ѥ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_\\V8Ztc耆<^\\llj\0T]CwΓzIZwNpVWjvY>2	o\$|UWL%{toX3_RJ5~6\"Zl}`kceR=^UԎ1ѽw7edvb=\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:{KՐ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]PS)ƙ5xC=@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=@Gd\n)FO hʷÈ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ގ#;3ֺ85:\\\0XHaM1\\L[YCvN\0+\0t#\$!@*l	FdhdF&Ƙf)=04x\0004ED6K䢣\0nN];q4sj-=-8\0sǨDf5p4J^'Ӕ[H^NR FKwz EgF|!codbx\0-6,E_3up /wz(exRaHYce59d\00@2@ҐYfeyYcMוh[ez\rv\\0e\\cʃ[ueNY`ۖ]9h姗~^Yqe]qe_|6!u`fJ{7M{YهjeCS6\0DuasFL}\$ȇ(MbƤ,0Buίт2gxFљ{an:i\rPjerrGBYM+qiYd˙`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]}qgZi|`+ _g٣譞6PAʀ\$=9h|p!.!i^iˢ8zVCZ\"(9U)!DgU\0j?`4LTo@BNa{r:\n̟E8æ&=E*Z:\n?g̊h.N5(Shi2*cf@7z\"|rP.ǀL8T'k:(q2&ED2~ر9v8@^X=X`qZQ֮`9j5^@竸nqv3(I6jdT\\ 3,hk3(3PuV|\0阮Uk;JQ.	:J\r1nBI\r\0ɬh@?N\nsh\";r~7O\$(5R	ʽjFYFܔ~x޾f\"vۓo˨º#aP<h-3麝/Gxni@\"G?,ZpxX`v4X[I7åXc	!b}j_95qti6fٞ5FƹiѱpX'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@[{rʉDBv|i-EK;^n{:Nh;2ƀpѴ6罘99XhQ~iA@D j}ozLVѳ~	8B?#F}FTdezcFg7Η 6#.E££S.J35KɥJ;n5:ySCvoս.{	d\\0?W\0!)'Eg;+\0YNtbp+c\0B=\"cT:BcPIDV0!ROlON~aF|%ߺ)O	WoQw:ٟl0h@:օ8Q&[nFp,æ@JTw9(<{ƐO\r	ڂ\$m/HnP\$o^U\"{Ė<.nq8\r\0;n硟+޳3n{D\$7,Ez7\0l!{8x҂.s8PAFxrQۮ1̅p+@d9OP5lK/\\msqvQ/	!z7oEǆ:qV5?GHOO\$l+,\r;~Ač錳{`7|Ăr'Ji\rc+|#+<&қ<W,>^P&nJhe%dCizXA'D>ΈEk@Bw(.\n99AhNckNd`p`%23Hb2&<9R(tTH	z' o>4?\rZwӂ4`Ї鍆NӀ'-I0(Srw,Kr'-2Hlo-U_'W#'/H֟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)oفǸ:&.\05q\0JL64hy3ޢaރIzOﮈ\"yBʳ{3%5r(mx.7rb%^eM2\0x!b}.Y6\$qS\"^|xEaXǡ59'TR	c9W1AΔP؏h6'o-pT(\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-NB74BN.V9ƨQ3{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,kSnqƕd8B.1\"/|؃]EϜNlxI IcŸ.|\$8DFPK3\\jxUC/җA{eܾ\rpU\n՟Wlo­Y{`]'s/|o3r};[nOM7ߣؼqq(_lqsNy;igt:ՙqk{?zMȗo'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\\<gʃ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&@khZygCԋz Áhi=s9T eT>g3dtF2b&:\0PB-Q8~LSMڷcgTh'f(\$.EVLAIߌrg\r0T1P`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\rJ£is+&5/rEM^\$R(RQEw3lH*m\0BqarLBQz6~lB\rI®GXٸXVbsmBHc_K\$p-:8Nj:х-#F	\0aiBs\\)<.!\\NbIw8͹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>5n[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~AΈ!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\rEϋsv\"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±#Ě\06_01c@F/d]XQ#G\n5gqEF\nm\\DnqYFv1/4`q4=8bq|\00043mX1e\0.\\QcI	.7\\x`\"\0i^3(籒\"Ev4l_q\$FoȾ\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	,u鱑G);lu#Eߎ<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!v1q1KǇ@eѳcGo\n/ƲE\"3t`#cH<cqF%?Tb蹱d) r0qcE>3\$tyQңECl`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رH5FpIc[@rvH%3Dc<I\$M.dr1c=F.4c2bG.!L|{Xѳ{INFdxqscݍ#Ea)#GJm.\$=GhAN=sŤE͑GG\\a10HF.tg8ä[Idn8F.TF3E6riqsF6xrL=nFTod>-3|2\$0= :xcHI\"NP\$bQ\$F DĂ}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(~e9JU+-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/dRRʅ\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	,.XryZ첰032A1ւeN(?Al ,Nue\$|r_%E05E}\$X2%Ze \n\";<9ah㶥a]8*uLdR0+Qm.,GM_2edBݸ,S2>U԰4vl~e22eĵYg2nf=\$%ٖFfa)fTƶGg2W,[X>)tA]R*&Z6j2|\0(p	9 uҪ?`n-lZn!H9zL9VLϹyݢZJhRgEfLU~`4Yx)\$BQR#ÕS,6i#Y,;Cri&X]\nw54Kx\n*&TW+SлqNcyIW\0W5cɫ&+Vr)Kg? |gRhR%K)Z#5,ֵk漻`l:LsC[MUB6ldѓJ1nl:jLߖ\0h *)p/ާ5\\<9V/ޫhTdjrMbx\n]RWR MaU3=`0o,Zl}m월lmLS6\\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\rvTQZ\"pIsUAϛ\0vZ}rKtfPf9疮{^Jς\n0%NGګ*~lD.Ke6[,%O՘-~쵕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*OΠBt)%-\0Pjm	us}ИBi^*z0YK.`[Y2Ы|XB(?З.\$l,XD\njOD->_<֝\0sh\\ea\\\0e䑙Y`7U\"eCYTzt:V9P_aЕF;݀\0M2eHCZ?V'}cYa脬?Qh8	0QCM`6,JeZZ\"GWuu\r>49KI%LV9։Z{VEOX;oagP\$\nRX@}!-SiRqz	ITH.\nk\n\ndϮT>\n?E`5D+f?#zIZ7T[Qs#D\$PI	3*:9YIHHX0D!u7JmYB}E简r8Q\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\\`Oҡ?JR2=F]I5TMjI9,(ƤDv|t)Wy-]zea,pQ6\$I-g=%SW#TPܐ)T&]X15jB8Vӥ\nem yh*d4ςbd!0gRJ\\ Mt1R\n\nx._u+Ƽ;*4θ)]\\l(m\"QnT(*\0`1H@2	6hYcH_f?a7=KKdetH2\0/\062@b~`\0.\0v) !~JPĝTO{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=\ncTSͧ;{Sȧ/ORH\r=tTIݧO\\zx4SM>j|TiSO~\$lO}t٧Oz*%]PPvU\"ݧK@\nojH;P>1FdP.5Bظ\r3uB<L#<QPECʁu*\nۨyPNl\r6?KmBZijHO2}1JM_MmD&KQ6Fzv6ӹQj;jj)*mEʌ9FdQv5eGɵdԄEM\0+D\"j)SDQҤpZfƂmR&HUہ%{Rv0m0z䧟Lƥ@'ER?eJ>ԝMIYTR/Bʕ.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	WZUbJ8R=YUVUR\\:-jѫiV.[zҪ-{TZuojU3 [>E %\\h#bՅWZ-\\CW>]ںg4#KTrZʤwj\$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\nhTꦦVv:s\\p>L:)O=nk}jS&֮~yeܚZֵ)jtVRVsr:+ao,!TlUϕ*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+TDoqSXb}}hn&<?/3-áhqn	p%)SyP\r͵m-f5[\\=T}y )Ydؤ46#Y>3נm\n09h;40+ae\nȃİȞ!)@xx}\$AFÑ0N R	ӄiܥU?b5!+׭\0Gw{ӤlI )w-4;p8ؤ;@\r\n\rN5ƅF\\ӹhgPE il0X%)\nLk^2<5FdI<FjbMd'	ƲDBmaOYXgg8ZV%mf%F-,\naFwfs0G乑Z\n	1;J1\"iPByCtzӉ;l4ҡJmLX+lᘪ{8\"\nV(\$Y\0d\\݆6D9BHd%16f \"TJ`/>C=c쨱?e!k*3l~i,Az/dMoڲn\"ɽzTr}eٌ{MaC7fiT/6WP8Fa`5Mf2V]['}cn4]heZŧ\r2XllGa`((\0_lOf&f1c8D{Q	S6p\0Y\0\rq3m&*f;p6r^cϳ`ɵ&zn^ڱ;DSoj^=L'g5&Ef&|\nK 6?bX*.fψE~&9!dk@v\"FGx\\=E7XP2[:\0׎X~7X64(\";B\nXhy&Dֈ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-NZMcλRVNeZwj6aÿKVlN?jt2T/[Nj|0t% #\0`5F<X@\nӢZF\\-mcd2p5Gv'B'7{k*'LAZ|Ik\n-.C6k-Sk]_\$+Gנ[^z]k8\\F|?B^B̎|@BzPW/R?[!bBkѠ'	(e:xfr7\r_qMa\0#7|Q&\0Ɂ@)1뮆LA[Pt\0`6\\ezxS݀vՈπU:ڱTϗ>f\nql+K(|\\ѠGU؋@(*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._wa1JGL6]\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}a8yaŶ\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"){$sd=file_open_lock(get_temp_dir()."/adminer.version");if($sd)file_write_unlock($sd,serialize(array("version"=>$_POST["version"])));exit;}global$b,$g,$l,$nc,$vc,$Ec,$m,$ud,$Ad,$ba,$be,$w,$ca,$ve,$yf,$kg,$Oh,$Fd,$vi,$Ai,$U,$Pi,$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");$Xf=array(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$Xf[]=true;call_user_func_array('session_set_cookie_params',$Xf);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$ed);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);$ve=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'=>'한국어','lv'=>'Latviešu','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($t,$nf=null){if(is_string($t)){$ng=array_search($t,get_translations("en"));if($ng!==false)$t=$ng;}global$ca,$Ai;$_i=($Ai[$t]?$Ai[$t]:$t);if(is_array($_i)){$ng=($nf==1?0:($ca=='cs'||$ca=='sk'?($nf&&$nf<5?1:2):($ca=='fr'?(!$nf?0:1):($ca=='pl'?($nf%10>1&&$nf%10<5&&$nf/10%10!=1?1:2):($ca=='sl'?($nf%100==1?0:($nf%100==2?1:($nf%100==3||$nf%100==4?2:3))):($ca=='lt'?($nf%10==1&&$nf%100!=11?0:($nf%10>1&&$nf/10%10!=1?1:2)):($ca=='bs'||$ca=='ru'||$ca=='sr'||$ca=='uk'?($nf%10==1&&$nf%100!=11?0:($nf%10>1&&$nf%10<5&&$nf/10%10!=1?1:2)):1)))))));$_i=$_i[$ng];}$Fa=func_get_args();array_shift($Fa);$pd=str_replace("%d","%s",$_i);if($pd!=$_i)$Fa[0]=format_number($nf);return
vsprintf($pd,$Fa);}function
switch_lang(){global$ca,$ve;echo"<form action='' method='post'>\n<div id='lang'>",lang(19).": ".html_select("lang",$ve,$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($ve[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ca=$_COOKIE["adminer_lang"];}elseif(isset($ve[$_SESSION["lang"]]))$ca=$_SESSION["lang"];else{$wa=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$B,PREG_SET_ORDER);foreach($B
as$A)$wa[$A[1]]=(isset($A[3])?$A[3]:1);arsort($wa);foreach($wa
as$x=>$Bg){if(isset($ve[$x])){$ca=$x;break;}$x=preg_replace('~-.*~','',$x);if(!isset($wa[$x])&&isset($ve[$x])){$ca=$x;break;}}}$Ai=$_SESSION["translations"];if($_SESSION["translations_version"]!=2531682878){$Ai=array();$_SESSION["translations_version"]=2531682878;}function
get_translations($ue){switch($ue){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:-h/̸8)+r^1/Лη,ZӈKX9,p:>#(6qB74-98@1# \r1<+PGFPţ#O7Ct\rd j\nR[z0c9i.>\0\r*Û\0xC@:t<\$s~8_#M9xDjΞ\r22-xx!H㌣ͮ-E\n;a!-863&2]\n(OYĜ+s	cx<?V!<HKy^6%(6X/r\"3(0Aߍ8`X@P:\nMc8΀>\nK84N`;PR0=5£\"k5~5\rncP(g2411m5h̽g2B [20{Ƿm\$C\"}jB(Q/(4`4Tj#\0@7 B,Y<N2r/!5~/2\"'~HR?dH2pH	Z3Gm0PK^mn*@)j\nz5]<c6#L\r]iCQ`_;2#eeji~F]&J_Θ`:t}Xp\r)F@xQ~ŬRY0 S\niN)joTS*x\rzV\$vڽvpMRBf(k'2&cat=G	\nq[GD\0HIPdF0rF0f_k*	BxQCH\$`b;-fڝOa5@\$>\0\"Hˌ[O|HÙONLh 1>Jϲ&ZTu3	Fآ<) bn,I~𴕒^o?IJq!>)S	գ\nP( A!|k@@C*\$]a|{|Դɰ£a3ME0ӹʆpki!,rǌi(18cQDdF\nx2o\\f(↬IًI0eKO	*\0BEUh@-azK6iҸr(ѰV;G	协4>)eg8X#T{\$bw)1f\$s`SIaKMOQAYy?\$07>0a37'd/)4xe5(*m4V0g.KىStdN\nZX4KF\rk|S =](~MaU\0T)e\n* ai2(E~l!kE=݆4(Pɽ	d·tc<jC	\0+<S5FH`\"\$&liOX/`L\$O-`ry~]H1@AK0.,+4`MsfGJ Bw2vJƙCuϏ⛓D'܏%a)8(5:WP\$n@S΍dvKXWǏp\n	P}1vr趄:LY>e#5	<S\nŉ;;Q#{.ˮd1{-5Z~ZynN+xM5(\0bNJȟ_ ֱ2~	 [XSC~\0Pkh%t?cn{ ܹgd9\\Eb52\\v67TvC|tΤ9Wtl{0tvC؄4䅑C6]|`\$)b37#Q&]vstl.lςKdFYSCmV_P>55AF<Y?9[hh9j\\}V/\"dՍ4*0?Hʔղ9;z*jjA\"ص<ꑳBblO쀬M<?4L{	u7[4l*GC\0F\"Ʋl	㐄\")*bbP5.N\0\rLc(`0dlsB}:D\"jYPEb\0IjmCg%ifn%P`//'pPY\n΍'5\r,\$B0l!\rDA,F\ny\r捑	?\n\$C@M`Rpr\rbL\"쾂Q:Ok\$7\rB<7\"2.\"	qCQF7M1PB\0e\r \rol\$n\0#\r/'JhZ59O&M K(Zs4\"gd3Z˯n4K\"e+&6\".GVQArEdK@gĮ:+@Pp \"Z\rڲŔc6d1LQ̽Z.r^ܐ&N܅6\$ܽ\r%<K`tυf)^0@9ˠHh>i@9@	h.ha+@ #N%Ư~Y\"vm\$0z=G\r0Tm\rĂĀD	zE,~л \n`uJ<t`)DJ\$ZLM*M3S8j>";break;case"ar":$f="CPl*\r,&\nA(J.0Se\\\rb@0,\nQ,l)µAj_1CMeS\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{\$ð6\r#\"74A2(:\r3AqKq[!*r)ʨxQ*XؐeJ	7&3ޜ:ñ[+U׬Ҩ2\rTBPOp6#oPlZh޳\02\0yu8C@:t6eA#8_E!xDlҽC46CH7x)L[LSrY23,2NADʖ^lլJ_IiSZɻB9\r8!58C~2\"ܠ#sȒ'g|Ye/J]UJ\"0:6+/uIJʊ'	j>\\ᱦZԏ<dRYMլlO4c-R*RQ3\08Mz61#u4I	Ȧ(RV3U#X(g>;KkƼa|%+uZ,z߱Ve}FZ-0z[}ACrs	 0דB7HaiōO	1TRt\"&C_cym--CYP* 0e7@8LȂ:\r* \0Q4\r<҆	0Y\\=v	:BMP7@ƣ[X5&֚bV6p9i\"NN,Kh/Ɨ+J|'/bp\\\\C>xKJ갽FFV#D&a5Ø@8^}/w`dJ91@C\r(:2GA]	͐@rJ]H%'a&dA=虅@iVʌ?\0iCcAir[Kp38\0A9ޛIFPj(أϊ6G-ԪJC[u܇%ZjC@pT4Ca%*ԡ!R=g9u4:7`7\0j!f1C:\0\ny'!01DI!LjCFyd\r-W\"WPK#s!GQcAE(%]&+H]y'\"	3	\$h<PQSp5\\(sBA=QJ\n-鱊5+%BO\naP_!QD2yD My9IN3gRk14l8 e\0xv\nX&\0k)]a*ZjlgQ[({	]&G@\n	8PT@.2SWU]zU\$UJY|U9BؠaRvmw`(pIPD	0j*+l*L-&GNh{Bfd%z3dcUyFC,SU~D?a[F*{bl4i:Rp;^}qL[s*V2E\$YCHsfXHzpRhT)!\"P@Tf҃\$\0T{d@k_4dbBM)kmἌ~I(h/&JPJR.d*^8e&A8&mFT&RЀV)RGϦ.Q[̃?|?XNtJ0ʁLBH)-J\"\0gK Ul8Pݤ+k%'X2~(^ XSEl\n&^[Bn\"\\y;UǰG*4\r#D&+fmRʼ\rxJB ;ĽgA>>S4xkY01PBaOԺ*I#RNbTeSr?J)\$upl\n\0w\"`5D)%NGs=3zH-yy XƎ\$?gc\0\rfB&S\00F/?Gq	.n),lhP*bffԊC-lM`Be6nİxm4I,xH[k\0-+\$R|H@%+BP\$ΧэZ*BB'VP#}^-p#\r-~P\r\0gGQ0|@{%2.E*Z0oE|è ~\r\\,˼1IĢ&m	B0#!r=RS1u`)찦TmP>/PB2h0mNM?`I*:11Vi?o\rQ\rg-D\rd<mN/qDqq1`R'?/W.ǭdsǲOm2Xd#Hf{=%mEW&''%Hxq:rI)vl\"o֒nTFyÐ bOb~\r'Җe1L12(<QK-r)Q2M|v%+.a0mp}/ S12].RIC/ew3<{I1S\r3>U,-3sJ%R\$\nv%P-..N23C\$8.jWsH:{ӟ7:dLy83c#%>18\n\$<i<01*Y.#vn2>sFS0Pb22\0n,>Enr&+E i\n.\";&`\rVk@`Pd]gpb\r j&`	.ŠZ\n\r\rb=p\"R v:l\$n&4F@Go]/='2:\0E4LMTX?	0&.\\#0[h(R*>1Ntbfg\nM1+.l(6;LأSsau>G)T@Cf4CHkvjYewT^;K³&ls.kTXAPpcT[<xG&Tu^{Buςi!PdcPS1YI\nŲ\r|&Д ڝ8lvND:OD\"l>\rQGL@5U:@P 5cvR=!W=6sϨ)	\0@	t\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_<Gӭ},k놊qPX}F+97iZ贚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	#p0HȎPEa\09 7Mh9(,8B!,V-SYF46*e>HK3!uI\$*Z@2U\r,	# 4oc|z9#w1_q4@:9Db#E3:x\r~EtV3_#Kp|6q3Ecl^4px!k9)-	;%]V}jʣ]U8z;[v;@O;DKbUr\n7a7@:\rj8C2#`HK5]J䧔xMU3M(B>H;hfT}=-Zh^譜9*2W876𝽬ܾ+0h[9)MݺQZ	\"4\$ҩg0jtߢ~}\$ZBJ?.\rDX\nCS+n@j|e4։Je;d&yMjtL(!)?FLB.PǹxW3^tXRRn!R gYN)6)ųlC:YrJAPraE^rʆtUi\r6T(lsJ݌0PɦJD B`I\$MWz5/	9Cb2!<xkp\"GKrH7KpA.U:,8B·e컟ruE6Pzn\r@3xn_br\r!APΰXBGQ\"zIb77|iўy\0LUIBg!\$C)<P҂	aG<X+`S?S4z\nD!s.U`Ǣ1EuFOҏ@/IXBrc,|dK-f3I4OֺSTMO#!&&q*lBD9Au4ٓ\\  d2X˙2f<3vCs=Y\rBƨڬGFV.(uA`8/Ft3mଵudTj2BTᒆRWѷ*vxPB5a+:1y5 <f0l(3@˓\$t0|XdޑVz7xz1N:!@\$ee~u`\nKy4PtCJu\"0A{J\r1䊑\r1@;+Q}+	V&b|	v;QM+׵n֊-iK`rM&VZ)AE(BI[)N܃m}͛d5%QĄnohO5m(jj\n{K,X 9Zxd<F\\<\0L,2R(Z洟\r@iT9d=yl`3a&{`@+9O	9щr`iSO[JO֟T\$@ؼfTZɡ!*ad	JΒe*З;x8ϼI2	eh~mqRbz%*YYM2GDtעኝl??	!!AUn %FN_DW++&f󫯉sl^հ<XeݮN2]¥k%y?\\HԢmIl\\%a)][(eʒEơ[\0Ήn#>~1A`[K0]oD49ps:o_\$REnx3,qJnIwnW5	X*96>ءF^VfԠhCEv9G\n%*!oK8{coP@'މgZL0Kho0kOFB#<xR|;p\nR3DZhkuQAD'jpÈod\$n>|ECRnΔ&Be\n 	\0@ E\0`FxGĀHER%l&m:Nt`@@s?'DV㌆oR,O̶++\$ί(ƷI\r0-;%\"ypQ%N*6+,<펾Ü\\`9e#xl\"Ȉ\r+jR=01D\"\rp6%HK0GN-[bf&5-^ע\\ZGlG,-o^qgA\0 	z֊ 촆cL\"J\$#Jnô#=k4*o(F#d6nN~&\"p+hª(\\BB.v4QJbK\$*9#j.ʫ.ή~|bcp./va8Dp'O''kHJx#rN):)J#or\\Bxu6kp\\WÂTD\"B\\krw.F+ǔPO\\J&'#.#tuNo؂(vBu˅Ja`.Xkpr((nTn55M6+~m5qC\$q)M%q+-bs#26}:Sw2=S\$N*3:};N5)	9qM!s=\"-օ#eƣUe*?09?o\nz&?\$R@xj0?*ss)s6Q +@\"\\:jS:<Q4W*Bȍ<3R̼%ĬR!˄K7ˏly4&ultƾJ\r3O.N~B(%/Kqpxx3FbFA'oz3\$%B9#\0sL.k4:f!Evl6~jQs}e+;'R/QS_)tr%paTQ&蓐bJy(U/6lM}OQU:Vzo:U?+\nR#yVUUIU|uxob:ar7'7\$JJre.PWHBsAU`eE!)5*5<P#]m-FaX4w\0gUXO0Y?Tn1a' ş*ppu^v\$*#IS(:3\r]`I]Dl3n!-eif!fc`e.g/Ye^W4c_PW`¹g\rv7GI?c]jhh֭,M2U/;g2EՀI+6Ob;Ph龁l)iu-^n>+ou=tw%*;gT5!Oj&o;nַoJP-se(k5%8jQDqt@KUL\rr42vq0{vwrs!BB?; \\)1,Bq@S@upQ'\$5{Z<n\\;|\$'{3-;o)\"E)..Ae7ǛQ	4|=ғ}42SQVRr	\rV/&.p+e,g(\ruMs4QT\0\npʨn,kQ?u()n	!窤T)5A@\$Bʨ)՜2r=gT,?hS nâXaJP:w.ǄdT/6;ǎTR4meGndK*xe\$tL򍊭awђ((\$!&n&>q݉T*Y=7vf9]Ǖ.\rXo%M5OeN\$~[xkqDfb\0@X\0ν'Dd*E[揂͚!Z0+10xnedn9OluHJnyG\"ZY|swG\rN\"]05Ro3)5ЕOt/jv*+p\rԘg\\VjlNyZb\$\\!%\\תɤ>8\0";break;case"bn":$f="S!\n\0@xJ_:6\0P\\33`\0!(l	MS,S,\$])d5s@qD<6(R\$i撦VI\nxʙ+\rBb\0!e4M*+Vp@%9;e2S'	`ObM^bS%UPH)x2S)zʞ4\0h3QL<We+lqr'PP~9.-Z!NEy@h0q@p9NƓae90X4\r/0OΛ(%\0QN!Ί6	Т'P\n5*\n`9z;{b껥D5đ;h&\r(%\"(@;sݮ<GC#pΩ0ȭjbVҨ1䖣*[;\09Cx佈0oX7`:\$OAR9zSE-<73S\"l:Ns	+Ĳˎ\$\nVr\r9mfSz9V;i0hjqֹqN-EDYYs)\n SwE咪ni!p6H;#`2\$S9@1C(2àӂt⪈MTWG5ʚDʷ\r[kv@jSyPe\n皸6!8.YJfzq2\rQtkHt(#rϮj0D=c2\0yC@:t:AC8_LSAxDmˣ56H7xSqMۯ&EKti\"Q)E1A+Ǫ׎2EݎIq,'Qؒ^8Ṏ }Wi%W'Dyp+#ݱ\$b8/1À7\":C\$fJƥLWSZlSYqY%\$6[XJr̀D0Pؤ lx3\\ݙ|.h9VB?_I.󔘑ҽX\0\rg2\$#yGG1g] ]h[Yoʨ!dD=&yٌvpl?H  Cp\n\naD&ԮWg<trDTS3>xY<Yi]I	Fmi\niVjdR:d	9geҗJ	81G^;>UQ ڛl.Cr VECkQh,hM0%MSr>#*f>2c<Dڽ؝'fݘ@-Tl}\$dv\"E)H{U< 6{5t&^Q<ϴ4S0Q>ߐn!%{ω>݄)0jp6NR?-3Қ3%9-2YXjK}F4AnQp)Ԁ<Y\0w+ZTBaI74ib*m7pNwN9R]L	!8Pt[vݽ!)T'cJye,rKQU}N(@z\0zÂs۰k̀3BA;:]\rH\ran1pcW\\IPCb/%\0.tLp*XrF[5Gm\"Ӎwn5,}@np7\0[h1zC;~\npTa2S\0F!خ,_̄XXNq9\0wql\nlgP7;f\$[,*td):8͠VTLDC\r\ng'CB!^ۻNC&MA\$:kR CC3j@3(&Q2>qn!@'0Cdng@}0`Dp\"ZmQ6\$t̔QΧH,&\0}Ym*a<m[Z7uZ-\$!\$E6`Ζ *yh\"ʒ9E.lVz;J9b#.*qҀhWV(DMy%]P0):}DҧQLIc-I	5Se&AHvOETunс%nȤ\r!v#F_txYfR]\nҵqiMq<\rh:A*lHU~{lTC+emg23[9?+Eו_	ت\$Ѭ-|L˷1`=Ǻ\na=CGm14\na\$LXʉiJʂ_@b@@>ixB*UOY(h:I%hnЕyP1&舃N	Jꇞo0e0XyǼYGE)y>{zNGP^ALC`838@(O*\rnBDJjx`'@\n 	\0@0QxE\"\n@*Aά|'%*G;D\"ϽJ0BSh9d^>BXϑṭMnL¢(|reN9N;b#1Ez1~:1F;lig869mUX Cz;F1/.ZQOqvlȹO<Bn	j% P \$ez\nBjRU%:NB\"͔ͯ>eXu#e ox1R/~/a*VFE*gz\r(fg\"G3l.r	vg\r-fňx\rAmA҄0Qc1hFORy̙\n/|0O q%y\r2l\"α-#1DTc)h0|2 A	>o+3o8S\"\r'/7QZWo.}7257p|OS8zu\$' .iuY1.P ं9#.VRl*T(3yfSnn9OuBqRR8z=1\n5233AId&%\0PNN RnڰDS5R	3SNO8B݅EBkBEuH1HI4]IsuT4G7c\0s+HvXtoC.ƕ:Ѭ{-L5L2+>M<eQL'M3'e.XzJNzFN,Le\"g_tmF%wZPBITRV+.3TNxXQ;2OUI-VU8͵j:Ksq;SWXXCtM8ͣ)d\\(^UEH-e|%\np|4ND05uW25\\0GWC[eUBYAlڮS	01\"榫VBY-Yƕ3^U'8S'T@pSηKnSH}CLVqLfgGM}OKu-oT.6F{2YUf͢4?ODbUhkpjvZVmk3vVk%0{j`I0W.@;hUý-pXRBp4HN^Hu	-vjWJ6\r;fIbVklvgt^vhSw]cB܇yXSSosD^wp(uqwsvhw,?vjygidGBwZ	yot®v@.Tm\$g't0	N4m}6v7!G}nTl3-uNUq}B82~xm'<D7WwOЭ\$]ԇz%3x/HwUs6^Soh_4jFu{uuYvOpԷBIMX+WvRszMXu~'mH2VP\\.?wENc'xw~98ZwؿT}iY%P{p[F(]#qhR0U!j7Z xɝ©UIv2o,Th,!.̎8KomBv3s33tBY`ι2 `@g\r \rfOކ(f4mbR @\nZ\r\rKuQ/rZ.mUa'i0ŸI3SUqփqs2LS	`dO6ObS=c_wVe1pc2*⿌Y2zsf@lY&ӹi.褖dTTcs)c+עA38zn8S^.d&y\r8388QU*@C=mx~f,j/suCbhQcA{OMuGXN\"آ\0W4Qb ΅ڲlD&¯<@rJTN:aR9o^XL%cgO3u'P@k|a.j3.\nCAͲM\0etbݮ'Ju)\".nm 'U5?\"'@a`>\$f_qcGpOwo	\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,	#s,(䙎Q,1n.rj.9l:br܀\n@B,\nhԣ4cS=,##M)BB1C3	1@@\rKp*42c0z\r8a^h\\0J+.c8^%\nC ^)ڹ\n(̹7^0%`U2/XP+!M%8Ƀa%x(7,UB\nU`P7Xh1\r:9A/ٮb|:6I) 47083#Lc^#ü\\H5}ƭ<14h2mBb)m#Pꚺ:ڇr:2D`^K\"[&p4:6\r;ލ:.(不#ːL7{/cٸL낈Fޔ=bڪ4Bw-\0;U]*+Lo芝]./=x?IeB'cʝ')x¶9+B]y'WH\n\r+5mI)oYsE2 %1:\0UMbUpOo\n].¬ϡdҚsR!6%RX\n1D2%Y~URDK22D(vK[Jn\"x:Q_V:Yk4;rZbBIsEܼ  K	\$*%Atdޅ˙!	p7j&G5AMSdG*cUFf\\y8ehf Q*uR+3d_e&1&Ӝbr2(\n!?hIVph@\$\0YUl 5,\\Um*~͒\rtfisu.q\$2LV;!02gN@c1:޺]\$ˤ5s7HӽӜgQXm46oN<TJ'T7ISfj̘qkDcM4lj54ɔAO\naRr(Q	 t\"p)Fț32'	pt7bC2*8#IRIq'NP \nnkHF\n(H*_	itF#lpE[C4P*P@\n\rsh94a *\0B`E>Nٻd=GLiVW;!ڗKh\nqn5,΃p\$J6d.uɂQsh.P[lފn{E_]ܷ<1n\$^8;\0[z꯶@Ol#䠈{T:%aqS7;'t_2N*%۹ubhc	gAƖc.'˄D]kDe3A#'`^jvXȍ1wlI`#A='FĀGH7sF&khAAI+)M}+ 62^-==*@@ K1H\r.d\$h(QaANYђ2t0pBG9lI^3dnpA7dJh/-8O'd#qBhw9Gu\\-x%mIڠ%!=7`m'{pc9|{m{y<N>t	2?ݐQ!*w.9Lw	&;]|v\"nbx?+\"٦ޜ?r\r).Jt*Iceǃ|z	)`w5J~Fa&ĩpl{	#ږ12Q&{,}ǽQb{obms5IRKÄ\"\rV6#dtR+d%0EU>1>1i4tK~h\"\0q'%XL?49L7;|c2Us,]/0\\'-t\0Mz'HL_,x`\$Ѐ n&TN*w	GН0E\$Ьo^\$8bmtԐkГ\rqv#^GXblbzp\"\\e\$3f>\$XHP& 1((	 .gQ*I̺wFP(as\r /K~q&`Op1y\rP#(g	S~nF8W\rpz1POqm\"oaQ&oKxw#RB.EcFDh<@蕭w\\א 1!0Q\0	92rR\"\r\"#\"f#rHB^q*-%Lp%bѰ% 8~ʸf1`HQw%\$jb\r#H&ʢ82S\r&Rr*2!AjՒԧ\"ղԯl7Ob\rrr6 C'\\C=҆\\	\r	 z1+Df\$A\rH\0in>5N`\"in223'3@* `\$4&`1F7l-N/3cr3si	\n*3d \"%Kf0\rd/ZkLBPB\0\npDVоݰS\r=s%\n6Hk`\r|+#.>Gm93f0KF1MREID@=,dPBe.N+,\nG(dGljt7'9WEWEN<pf.(h4/<wEh4(d0tGamn_97h@2b#\$ҍ&W+%\rpLDP.#\0eC\$\nC(Ih4'Q0#oQ֧-2l#@ŔxNC..D OI\nDA\nd*";break;case"ca":$f="E9je3NCP\\33ADis9LF(d5MC	@e6Ɠrd`gIhpL9Q*K5L S,W-\r<e4&\"Pb2ar\n1eyg4&Q:h4\rC MXa+\\>RLK&v3épt0Y\$l1\"P d\$Ě`o9>U^y==\n)n+OoM|*uNr9]x{d3jP(c2&\"::\0\rrh(8p\r#{\$j#Ri*hB8BDJ4hn{K !/28,\$ #@:.̀7n%BLl+ZF))\$ #.PL<t4\0GRl4s@ao\rZ0#\"mP7@1n=F?\r\r%bp2C!h420z\r8a^\\x\\{hń2\r:˪|EA^0ЊP2qJF(hдN:!L%l-&57ᔂiJ1,[.+s&cٳp1\r(Ȇ\0<\0HKmH7ڽG)AK1l=XoBnx3,T2-4_1S #\$TU&#;=YR'Rh8b;g7\"}2h7Ma\r/Fb%-MR_4\r (o#(\nbIzu(1QJzq~XXӆHCﲇ=(bqֵDkR+C(HT\rKlB. 8h3\0>@BH`w/Mɐv(Ӟûz5}\$tLMUwdLC}&\$ud:NChPw\r\r6\\l+1VXGoz@5 r'vrc	4 YNJHr?d:UtY\$PLBi7pWcnc%jZ+Mju[x7-Lv\\Q;D,&}^MCk]h)OF wr䧃:6's\n%}ۙfDt%,b	+56R\r`+/0a(I \$ݥAAsfL!QhABH\n@\n\n)@ԋ2#|Le/]o hq]a  ùau00Pߣ(C\naH#P@R3Df*˸\$t\"	g:6\nEQh i\r)QBLBI&}\$׈QT~j+ߑ\$`,dgO\naP)O4lʂ(\n5P%31QQQ+!1Hڟ\n*CHYht \\M0Tj`*M5#.Af:G̊O	*\0BEt\"PnJ|)R~dEr\092\"\$\0TRRu_FBgkU,2	d^i81`)ӅA=<0;GV6'Wk\"(+\$x&H\$TaXfԚAN4PJ|eEEm8dTULFӠzkY&\r/mg<hO5(&r15[a{̀(ص= #:`\"q֙\0{\rD\rL96MrD}=PCJeF߱7k\0N(5&H\rrOZ@DeBP;%P&ôbAh+6f;^3\$Ց.hnc	#KC,k=-Ms=܄sEhmwxhPɇK!0ڻGpoI7UiQoM!1^qʦ܄Ȟ! \$D\\rMXuF[l[+HEMzyҎ]h+v̙Ҁ'ʹGR0IIvL&\"F}:M		a\$xm<ZM#Yjxr(FhU|*pitg\0}xz+\r5K2JHW~L9Q! 'zhJ'y?9on]Ro<T\nJ3حϴO\n1PwY}`u\$8\\S.z6TN|Kg¢?\nu \nƨp4x쾋~P i-Tn3-ޏMVy0Z@\rD,.č!P0Ѱ\06KgB.0'd`ɃL>2d%%9CH\0C+gy3@wN\"ܣݫ2܍I0p`b=\$p j/LPP\0I\r_p0R\"\$b=Sǀ\\bP/fqJafM	LkL;MD\nv8'z\"J\r\"81rm&vJCϽP\\\n.&)vpV?%h1ƗgTl)\r2mGݯj/Oty\"#aQ3QR'\".Q(-#в%\$=#;\$>N1\$)p1%1(pd/&2|8Po	)?PSҠ='*Q2)N )2뀨wDP\0\$0\$䊦ҧ&.\"& ?xe_Tjo	Ea\$\nݒlҾ1QN ݍH/2-`Jf/ւb\n L\0jRn&MC\n@ZosZz\"jB\nJZco20b48A3Ni(\"2s%&0Pm#=D8CjD>P7r «/r	:F6!@>;Ϛ1f'J<ݭO;(d0Ѣdc0(d,!OtBG4̌T7XNt]-4AFCDl7\n0cPm\r=l*FcGnDIV<.DdqqDgi@q(AqCk@z\$ĭgAHo\n=H/D:łw  9(D6΄ξh\nvQRPNFM@.pSRK\$\"GJE-r]&@T`	\0t	@\n`";break;case"cs":$f="O8'c!~\nfaN2\rC2i6Qh90'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(挥b䢦k:CP)z=\n 1c(*\n99*^:42Ya8 QF&X?|\$߸\n!\r)<iRB87x4ƈ65zJQ%	,4#i@aHX)*4x6c,AFnBD\0B8Cz9Ƃ0I.64*S̊׎@6khC,9`@7\03:xi\rOTIHc^8IØxDòk̔Z|875.:)c[^#x6szN-Ff\rcռ(p5E%I~#C\"2W,śGu.o2:(\nKp\"P#BL>9k+eNB&7\rg=07\rq3;	 ˀc#\\C^(CZ̍0\r6	\"\"G gN1 b7VEn@=[(;2k:-'4G#Ӝ(a]B<\r3/-oGR`a*;SU,7\0ކTD99b0'v7r3k]&; PP)\0tHtF; yE#ezad=G؛8'Puʤ&@JOa\r60CQf	\n1jH 2vDd4b0C9LJ\04\$1'\$ bP \r2˛u	P3LgCV9ID`	`'ь7R%L!T\r@P¨t<\"Fh|4	!u5+#\$tuI9+t F@XN\$h;.eSAO}b\"Ċ6MxsB1ղIDd(!2\"kVd'9L+XY)f,場|-\rs.<Eh]z/hċșL*o6-iℝ 1&\\a1J\$\$Qq0v%〝s\"*`pNB:!vi%eK	iD>+r(Ꮹ:ZJb]?\0(*y۪0,\nPjJu	c \n9/O9!Eĺ2X aL)`\\e;DLP3R;CcDH<YK3欝*DDm\"'D˅,v츚B	BYjBj\"Ue2*VaXEQlxd?((\0£/8:al9Sf\r!:1MKX`6Bzst j+#Ā[א Ra\0N1\$!4&liQ(ZZ4\$*DEv\r)R)\\gEi@`ۂvK&%4K11\$|٭Y6I%,j\" l*R=r{|gyj(q\n{xw<0#Q9FP{.,aPPz>YL(C2JzsdCT\rV5Ld@ٖ(E;p#I1a>6tΆo])+%]/eXm'a;Vn/<*IH!h2 Ռ\$\nO\\sq6;4:LC5}37VcAxa1\rF362s!29\$xPƴ@OX !P*\n\$yRJgg!ƣ/+_|e=_ Q!]ZzDuXYv\r%m`MW)d21נ#a5dxc`	ޠAYHzLԳ&eU5ut9d=-3uxCw\r;v>]}Pخ5TNy)\n4\"׿QƘl<\r-0AT¨RJ>JcJ >IuC=_wtXQ (RL8t1\$`c~~lǋx4~C^<Atv@8'p'hdH|@&.W1kP:h3LbH\$7Fk\$lfH-`7 a@4@'`nRvL'\rc@D|O(Ђ4i%j\"c@hf`@R&@00Px4%biUlŐb^HW,0h\$x(#M\nqbfqRBzZCK2cA@ fLO(̂4hd-*1ўT\"<w\nw&QFq<o/Hd`Lhqj M\nLj8	y	@\r#|>cشM@LcGXB<s6]AzU#w\$\n>kXEb#.,<'&NELS!q!\rȐt0n_n(hr'+#Q wqQ\"E	(ab@*(s -	NPIҸR/IԪQ`x7.2إ3\r1\nCïeh\"|0a*C͜Nkn7аCq14s,	m*`@9n341m7tm8R֤SXC%i@DBC,SS.Ӧ\rs/6S;7_-w\":y71;9,3+\"Y0\\iSTUR!;#KnAt#6s|Pb \$I.-\nlS@ RPDDfG03@Й4H瀋c\"+<R<\"nHI̗\r,T#T4tlJ@#)=s PJa24|CQ\rVp1ІTiN'O.\rV;qL47=XFPJ?fD֣BCGaf~o&\np\$R6-{ONUVyѰ\0K%ڀ_O2D\"b*\"*_h5B1/F P*ib9G迦G&B;(\$9[#OÂF*zS\r8&@5ba_fn-p>ܓ6`FRIW6*tv/A\r\rcc(PRױa2b\rH%oe?Ñ	?\0\"!BJd&uP\$p(\".FVq\ntbE1j`2\"dP&#we(0C	Fzl`-ͤͶ\$\n)L6\r(eV1s=5zrLI@@";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Ҝ)XbDMB*ZH	8:';M<9\r#jEBp:Ѡ欑h2 T\0ީI9Cʠr2\0`7\"czDEc֠Bc\"ȢsBR2\rZ2=悾1o1=4@:#\$4'0z\r9Ax^;rC::3P^oJ |6ێLb7^08\rBÃ:QC44mۭJ|	B\"P0Cr3`P7ap01\$\"WP&\rzcz>CIk7^HEIp3##`e5ȭ4؎Ë)Y y8\"0Bt\r9~H6\$P4ά0cF3@P6{HTc%\"`Z5dq\\v5ܣȁB{0o\nE-XpR:\rb8V!B.#1<<hB/BB*W03-s-Zi^\"ԣ\n#^b>p<&w7\$bY<T,J76ĪL(ƘЋ)+>6[Hw/T˸y1\r(&hJa}h\\cBAf67 ehSA1\0e? A2urSjuO*U*;*{/m\\+Kwd @s\"6T>hC9:o!\$`j8;[P4#ͭ\nWgI8T3F}5jv?\$)`|P\n32`@X Qj4G0j)8rbd[=2Ir\$AȜ.f\0P	@6O`IbȦCyG\"(s?JH|RjJ@Hc\r<Fld\0PZi4!) K	)p`׳R\$})P\\gcPkI\\6P9Be_R\"{(F2zYZX{1Z\rF3\\+!<)E\0!N\n@	\rm\"a(M\rjEz\nXizp7@ζMf8\$G E̜\$Aj\r@aI`qv6-`䤥Gar1M!ېBp \n@\"l\0 &[XzmAxIpL4)y%>G,\0غ p֠8\r/qCPPx@XVbζ8#\r6=8Zb*Cf:Wx:zuIJY+y\r(AE@mE)W%fW]K\r!wj,0Z_8C9qSVD\r\"\\+Ep.+j\"%er7\$t&1J[=APbtu3VZ9b8po܂kCv^ϫ'4 =kƎNҘ+4!C	\0WO\0JX8E\0S7,b1EA,Gߋ١	-L0Hu|9t#P:!ۂ\rs|(ZKJii,[pb̀A[MhxX.Zh`ɧ5'	qiSxxH3u#V6lQQzEIwP\\HUaWalIZ	c\"x56۹=AY:,ܿj(m\"묀oo?t87ңoPezW~*sTk%T2zReF+`+t^iܭ^\n2O<QIso s匵K.T\\1(\$q2%\\I)]O+MnC- r[\\B6PmᜣvmeMB76r/4^=[\rc&Լt\\Az&tV8cN@P4λ{oQ<^աtHKaZwۅwAY϶]d2Ȧ445]0lH7)P/IdeD;Xl{J>ĬNl,v\rX¯~ZG0Or0\$O\$_e*oNM	O\0[BO\0ϫB\rhLveC	\r\n6ӋĚEOLNF/~pU	N5\0Ј;}#J:/CmffXwP\"B[nbf)8Oq	\rp\n0HBρ\npp0qf'	bDK\nϐd410\n~*1!n-,t 1:C_/2D/XF0XCK<pQ@;qoRk3C\r	e'n1in\r.L\rlAhRqV|&BLB ##\rH\rLq 1+~d8\rV\rd\ro.o騦BL5`B/W\n	;^bNX#bjmw#b#x턪!05\n|&jECz߱z6j7ZlQ_ ƢbNl#~xL2B\nk¯d9'0LLK|N>IlAf௫~^.+tګOȨR+4&,r[+2-q.+R&#\"@b2@^d#'CPzfz\0p\r\0\r^qk>3溮)@\$#'!p;\r0 -N g'U0-q\nz8eK/d@-JJ7#\nLKiH`\"";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`P2lº\03#dr `|R#t6#ah7Rs.10<k;.2,@9FQ&\r:S#?\rk# ڀ\$\$9|-CTv1ij7mFB4\rTևBDxqfpP}U!xDlP2F4^0cݎ5)C:F+++C@ NH.Rc.2.9c+9B8!\074Ìz!) z*Z'I&7LP\rtu4s){&˄b\$\0PX03tK\"/펮CCI;bH\rߍ6c	f{/z1Ѯآ&^FV O1u׏.SOtc۱]5\05-\\ ,Əx[7:\"ݎҌK{[[@f~UBH^(c\"D#vPvmIPQ<\r8+\"!90ZrKƁa03;/d \$Fc2\r1\0p.p@ߢ{Tݘ񺇆\0\nJRT7Ь	\$2\r{~t!2TM ' BO	9\rVr(h@bX9n.d+D!\"n\r?Y\0d?=Vp1NH30Y+Dk\\4^g(^x &9R\nz87rJ]֪em5\\t%Fc#l7/%ok7/\0A\$Y&FjVBg9S '.S\$D\0hSXM\\\n\r9jfZQue9br3BV\nԝtV[6,53:QZ\0!N[ا?á3PPND#S`r4LdчW(sCFHpY˽iWE+ƙgHL1\naH#\01M9DJAP 4>ϤO\$ؒ\"7RpCR'i#I0O\$Ee,|䊲ӨC\nmu@@K\r)房FJJ4u!\nPP	L*	[I(ES&rRJZyOik_{wM#_#ΞR(93@D3<ݢ3T#@hH*#F9OaA=!3p2<0/Qj& P*\\|P(L'+SR_A	s)'\n6zA7'Ʉ\$	ѾK.zpȢ( wa	#X n\nFs\0Ǭ( :AXÆIoTAPunO:\nVM[uHAa\0F<vFh6	3_Y:\rtr5f\nK?Gɯy:rfMNgftİخc ӣ)[g\nQ1[v4GCdѺ	aȻRh*xꊟWY,l\0g@ήY*\0q&ݜ5r\rS3\\t\0/,]!@9FmX1tR`A!,=!NޙeAF,*p:3}h׺`FwPguA{+jXၟ}W>w{Wl:t;GWPF2jȝfLt/@μ\\4Nֶ1ܲ!~)fRK^Q \$Ξ\nIjSadu׸*PyB䞰ǎޚ\r24)'@tŞOaQ#rS}\0<Hov d\0ГNBfjOp\0܃9zoM+bl.ǊA rk5P0^nLjh1FepH-BbX&e#`j@\0`RLx\"8٣x#\\\rQf0)Я0O5c>0艰\0\np0d-\0j#\nN<:&@C#3N *Ɏ-XƢ0߃h'p\0g-[p5\0BUU\r`d\r0\n:\r#>6HBE/CZBjUC`A*FJ6)[ƾ0Il<~Mq\r\0\0|ɢn&bqpQa)\"m#&-n@v1\"д\n\$GPg\$\$r7\rRL2GF&\$\r0S#`	H~M֒dj6!;Q4Ho)9%2cdn\n6݆DѠۏ&+'EP~2	pV#ep\nC\"`olFNd#\"#\0pRrr10r%Qu1+Õ1&K0RTs+/2#oR-%\rN()\ncnOvM5;06\n:C5nS6:j@E;%D)LRJDddI1+3&`Ah2M~\nE&ƄpnC\"-LsBfl&`}F\nS)c\0S4wFa@s곫6\n;ƩpH`dmp\nZJODuj-<o1p\"XS/C#Y@P(Pr\$zlD2mRlpcJ1,Fk@@gn74!I#4Bt,%%\$T@#(`TlFRj-FLh:,\rj8:WPaCtH0NGdxx#fduPP*UOP#fG%g02ă#`\nh_y%8`βR#UP{cԄV(Mrpc+?m&?\0LSMOtR\rѣ#<CRCNIO&\rPcvd#,𼿋8u=gT\r\rjM2oJS|##ϖ%,#HK%:/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ܚ;\\tCP74;LAc2p4CQ׶#6zD@gFuӼ4ȤdӇn.Is0X^eAKq8\$􌄗fa,# 49Σ|93;#9z@35ͳx4@:9XD49Ax^;pãi]2~{h2\r,ߤ(4#x|5pvg)e\$gTO;-^\"|Q;w~	nPD*!`P0Cvcx<~^c7\"3zC2!/Nyb:C\$<3tQsWc U1d\$\"v]Z;.^Iy1g0ٕgLy h 6Ź IBٛRQ) ef3 8bR!h(!F`ք=ȌDXH	4% \ryكޡPX{Q/Gv:'t|V2S̈&*10	ucHR=2d%H0	gDPPe	U\nyr AZ΋;1ZR'Q\".]\$ġ;* RPAN;˞_Duv(v}a:Cbk\rl4;\ri݅1Ne5i0e.ܖPDOT0A9!fM\$]rL!4@e7L*]Yb\0]-ѳ69DvnNz!3CsIl75ڃi@2uړt5ɱ/T5q	ƹÉ>+\0j۽**85	S2ϕ3K=\nVB%`OW%^R*RY-f%B[Yiڮ2N++	*S#}5:ԌJ((xzЄ,9#]\\@0B}SZDojSX]EV\\2%}.dGu-tn7pÇ'EǛY糎)=)eܦ;R\\T#P5[z<+\r)({?xFQ!6,dI0T\r	9p I8&'2mG!Ц՚fMclÐW`	H)%kNbلB~aČ(!AmgT%4*dVYH\n\0@RKW2BRYNr%5*[]i\\n\r'h\r!4:M~ꛋJTIޢraL)iI.	3BE%u<\nSVs7Xא*n{)lԍHX伈נN0%]c-U MF-nqQD!Mp@ 9\\54hcYk0G5N1\0¤|qbxUu&%\\wq՜SfQ|fV<ΤqYUv|4	ESBw9o[#L)N@ZS\rcuyp/Tm\"oyb(HQ\n}Ns{0C\$IqHYt(W\n8Ty230\n}Fma,ˮᔳč,JFFK3hxN|iGvAA)e<wɈ4&XhO^a4Z%HNu'ViBؿ%;HCBij\$ϾRv&#bT\"Fr'`t| l\rbp~4R#|>N9j\",l\r\$bf,B(\n!axdψ(:\\/\0{BdIDI*NP.J~OvL{E)H	(~@WІ\",D%'	l\nZ)B((y'|,g0īV;Oε\rǬWM;O*K&E|7i<.!o-a1T&I> g˲ҥƆ݈@* {{Ȭ qlu\\v0cd \n`\0\r&|NOD_{6/D4Zzg\0^\"X%9b\">q&c\r\0?\\44'.5 O!+,!=\"&K\"n,1#CW##\0002C L(6%eb0(h\"@:HXmB%ID%)r\\&A&21\$\"2+qW*+\"a'Rdo\nĆP(L]FM'qk^0\"\$T!^%]P`&/#0Ni*zSHzF\$p?Eh/⒴n=>%4Č)N/n0Rd`4\$vF^X\nIQ%%(R)L!϶*r\$3)t[*ЮP6of%-ǲZP\0QaR{\$c7c(\"҂@	P>C['3A#bdQ1A6>&;@FfC\"Ĵ2\nZ	oq*MH[&\$;%pQ#\$}!rѰ:T܇\rCC|@\"-%SE5Rt(H>Z	ON9u'@u0TRd_E_Q#CQ3\$̓tOBQQPEUDUAS\nПRBPehKlz\"+R>a&½P- rJnUr5w)+c_&XT-+\r'u'W%9,Q>,223WSOX(I<\"\\j\\&I.RaR*56^\\UהWU.r0j8R)/9DΪBRbNDu'L+cD&%.A249MRZxLLb:,eV>-@u_F^e>m~nꑯ6ma:bno^Uaw\r@/VVnv	Tm1mCo!lǋgwUBTn?R֍qUpr	7!Ec]W4y-9|qtq%Wt	Tb\"(/?tkTP>5Px!k=p&5\\]5SYp{L'mKz{5utE56p)+^Ԑtwp;ISr+\$<|L%\$?]ǝQ<WW~&.&<B2z\"qdԮ\"Rgn}54Z88\"X=St@x2XN{swrNx3kX7xSWv8I|%\rB*SRedooom}GB4-0_xhMTx 'ăFi^_6[Э}9tرqQ4`B4JZos0b Ѹvizzc35>dTFA_BAD{PjM&DJ(g\"DEu(VUүkpү~w\n8VˊE[˝cQsXZՉ\$pI\$\$5\"u;5|`^`\rkBe6TvFeVA5`=%1[61e,+BCAy_X~\np(I\$DW !t@\nXGY?4E8erjmtwpEJRΊB3sҐѸx1qLNbilRKa<ٯǯe:*뭘@!\\.M/֒*%IQȧrfr!F3\\@]d\"zfaZzK&(ժA(>85\rR˵TLHC>cK{?	w#;LSjdJTj+͗[veBLvv\r>Ȃ=6F^f6j8Dk@_gL m;	'j+t氺iK'(.<z_}<sȒR1{~I0t8V[Dw.3ϤW04<;g	%R\"INp@\r~~مykI(pwq\n0Q3)";break;case"es":$f="_NgF@s2Χ#x%pQ8 2yb6Dlpt0h4QY(6Xk\nxE̒)te	Nd)\nrb蹖2\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ʗÎз PHP:F[*#p칍#\"4	T\"135ӸMJHL!ʢ\r|&\r7STYc*# ڴ\r\$8@h1(ԖïH)\$9p\\D49Ax^;ځtiQϰ\\z2\rrDrr8^0ɠ7 q0,~:!r:TҠxS0i*èʣLJеO@8C{rC!.c U6lm#Լ|8S5Ԃ\"6@>x2݈è1Ķ2<wD90atHD'kukcҋUt:P<NM_n\nBr☢&WNibU=3Wa@=b}*]sH>ɂH!1.[#K6 @7u\r<`722s6eUu\rB	)*ܔ7b(ˋs2pL0c	>0@RCdA#\n#zT8f\"3Fp'\"FGNG8eThɋ5	hl}I\0.K!6(	ܚ22ч&dɑp% VTgcDJ\n\\f@83!e,ŜYQ*Cn[@ʹ߈p\$-(:/%JWf\nֺAspPd!3+F플@\n\$5z!<RDI)5*V!*ZAWfżp\r)К<p`̍T\$8\"H\08o\nJA 9%1!UԚP8+6jFdfnzaL)c)9+1ؙաy4#	d\r]C80Tҍ(?\$w%PE!UMT&LM/UԮw\r	Ԇf*А	A<)EjJ9#ͨPZaä\"pN%T:c!0Cl:!&TT/\$J: 3*OHߑ'\$h3Vj2DNDʄ^BT\n8\$MA<)+]Chbvl7|U5TY4C\0S., 2\0\$1&,ƛIi#K\0{o\"62f	A4HؑVe|UɜC<gN(\0C+\0|i0U(8RNIhP*V5a1-[2Ú˜aQC\\s4l8^/l[!zOJTmm}@iC(w)*n8ٰ~9o6ZN{v!_h'UJ :scg<ڟnrQTWwAII\0;4ѿ=.HKY*~g(zK(jI~D02o4jNdy\raBqKC2O\rcۆymF`ǚtGOOU&{R#ª.鯏69Fh~P\no\$~Ù7ڟ7[QsP9ʳy7hx]@bJF(M@	)5F K%-(BD\nnc@N[0I1+^rf'Wc@m-f\"al?9x/S]Ҫ_F4g)/6ڙ`R[)\$ݠ+E\rCp\\R:&u8\\G=D5aY\08\n}AJ؛\nSv©bnӚ;NN򀧄E.Oͧ~E0&@ݍmi`߰06:ޯɌD~H/\r0\0p& bE	BOD\$<-/Cp4B:p`]\"gʔ~.CH#8\$IY	 8&>m@9  P'	X к~\$M7m*ԅ4f#O %0iQ(ϐa&ze1.6{wF+qB\"\nuAƖg%Qdr\$Ě-&t%D7>DcZ9Mtio5N6rTqOO!0qZQ	ϝjōqQr1:BFhQg\"hkD\$@PPn(n]/M \r9R1; qڅQ-n7!T8ƃ2<98>B1GF!HrR.#C\0a%KMF7ln;g\rvP\"fZ&-X6	\rWhF\$7m\\enW+2,\":L=+2D%j-Vi1OE,Mr/2gD\rVci,6#G&y,C		\nZ8c-BhސHm42q5N*# 8&ܲY\0l6	hOX=0~\rTN:d_e4Y0%(Ҽcɤh<-l ,Jk7G#fˣ:=O/Ib0ΞIFD2O@Dns	N2I8F(?B8& %D0vˠD\$82x9'(6k7kqgx0Ƹ D\$>#C.gChm!7dvɶ\nzxM\r̲&ǀ>X])(\"@	\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}:Rɼ 4NғqUj;F| :/IIR7aýatpAߚ'#<{Л]a	U7spr9ZfC)2ӤWROcҽ	jx2nv)\nZގ~2,X#j*D(2<p,<1E`P:Ԡ88#(!jD0`P#+%	JAH#xR\$̒6c69 s`9 Р4Cj r<x5ů4^\$<T2OI,&\rb*0`P෎/eH%c\0?1Ӵ7Z42jUK X8D49Ax^;ځrH=r3_6^)ڴ(P̴7^0ɨe \n߰(֩8H2@\$b끨kP&0M9\rC(+ɣr38-3<1c7ɱ`Jʐ'N#Ã/Ks\r&4|0cc(*~::\$xu?eQf@[\0P2ݣb	t2CF%[2à(\r#H	\r#X֣.\r\0.H**1\0&CuGC\n\"Û'hܿi<7cԣ=c%xX\rQJ}X 	O~蠃R';3h#]a/`ٜ ꗺ7Cj\0\$Ȝ\"C6\"@ZB0.#!6D& EksN}#VIb6OIRĸR|pn'93NgI \rpa2R\$kF6w{R@gAeQa0؂[4%\".bC)5&.\n0pq,ERYAi-@B[kt7-N\\\08V|k8OZtc11f!=R򴈋ILK9%C1M	W#lLloN-9:VJO/E@wv!FG\r;(;*S0z L	V{Mr\r+ fa▵2&)thJ aL)hڂi+EF9ɛ\riD.xKb!5?>ԅA1BsC/,	)&ܜu?@l'W4(lavF+Wc*6#ߪsHlL!8á.M4)p@bN#I\\prR+<%DScD)P o\\P*Vs E	CeQ'qi40G/\nr\\/rfU!c87}Gdu\r 	|NAIXA2?ϵLzxL}?GJ P>-2T;s8֡A5 kmkB%T4럳sfJASUlAܩ\\yqLˠ	dDzwL*pT7\r;S4bhC(wI@ޙb!EBSr@a|bń۱j{CuBࢧ.AE9%A|Y*@B8GI-:xNk5`R.ËfwTXy{IP\"`SKJ>gaPQA0@@ (7`[-՝a	A4!Z-J̗m%oҨ7u%TE\n&P;G[a\rknw'I;2NOw\"0b@+q刬^H(i⚝ߠ+Ӕ-	Y7Cx3	#9u\0o|jqa̛︙0!(0eSy*w^^uI&-2X;/e\"_^Eb<osOG|^Q +\r`z3Q\$j\$ޥIƀJW(zs)*Dy#[	CLJ\nт2Z	ޏf<%<;0W<#b~-O	Xy#`:ofl/p&cO,!DஔDא8.hrooVD0/dx\"9&p#r:l vB\$rX'E3kn2BD(DHi7F&\r%\0C>L8:iϤR{VDWp=pbPpzhm\nZ/>C;eada\"0??	/Fb%}*;.FS\$0\rR\rR|xJ}\0Va\n/πcFfqx @Pح\n	^	-cʟC8FM&B@PN Lčz-LQ.EQ1}\"ω=/pmTb?;mIh=\"qcݍ\rOSBH7}nD	RO\$}	9\nrrSO'r]\nQ&d2,3HiM&ҤJr{-G)d1Q|J*MI!1!rj2r_q\",RrJRmI1e\nrQ	+-P1eE}Ң̝`P	oխwOvnLnK2c2 \\+*M8'M0gq=>ion>y@dfJEnOvc8'*TL `&f2H)kSc.j\0Z>iLebj*B8h\r/qj#nm;){<ӊ LpS0MbL8%N\n7\n\$co&#4\"b:_0LlK@oF dSJk\0|4Ge4lXk	N~B3#6( `NbNԇDDaCXERz# %hFl\$e>zy5(,Xd<@lto\$ryd	eL\"#o~_RtNX{#x5K,RtdiiZDM`-CY&	r`V\0c|1fO	Pzb	\0@	t\n`";break;case"fa":$f="B6P텛aTF6(J.0SeSěaQ\n\$6Ma+X!(At^.2[\"S-\\J)Cfh!(i2o	D6\nsRXĨ\0Sm`ۘk6Ѷmkvᶹ6	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&YH;#`2#p8P@1C(2à@\r*w) \r*FjB[.,\\B:ʓSh%%U3?;5Mc'2BB6D-CC|89\0#o`0BP4@:F9ı8XFD49Ax^;߁paذ\\3_s#J|6P3ACl4px!^u:C6NJ,~˽Z!43JƿIP8%z|\n7Z7@:\r]8C~2\"#뜕@HK%[48o½\"%l>zI`2HlR} \$Е[l~;k82\$D#Yc01::103>N#(ΈL\nISn?o]v&N&0;*1ݻOwUsY侮q'lј7|)zGM|_V쑕?{0BKU4 n@;5P҆OPa\r!ʺв\riB.\nTenH\\3Ó̔Uuɂ B}8fB\0PDU\n50n#JVxl6Ȓ\"MIb\"O*5@)ԑjmT8 zgQ˙Vlp+MJ7S<@R	\n2l׏&\n4gh)EDޥj#H	Syph|I))%#nN:tӌu儻vQXIR-N+%\$fn-6p-WE+*P6/Z4)\$Ak謜'Ujm.\$찛،b^z/ew_0 4O1QÜ;~2 ꡝ0ٗ@\nFtFrkI5Hqg)HԓCT	±3L*(T[\$(;A=bBZKP3P g=oQa-F\"dUFE<A3}d)<u%60%Z@PĝZi%(Ĝk%4d%fƊؔ#hi\nƸXns\"DL« h\r!4ץMBE\0C\naH#G0֤%uxM	|peg;\$B`)4&VJL8OSO:Su|\nb4WPrBc!!̂Ch ܀Нg=%6O\$҄(4EhJ	n3J5e0PQRI'W_)t[Mю8zKyA3\nl/z1\$R,UV/R?)Z)Ӡ3IU9>!R48`('@BD!P\"L(Lө5wT\0)И[>?#y`&<:2G):Q>a''5`8.F:_\r5k3{݃ fњg=Ֆ~}RYWMn-t4W!䪸 RHF6H*UAaGi#sM9WSEjLVQ]RBĭNUSsdϘǈ\rL	,#\"\\tn\\Ɏ,ߗf,b86,j\$K:`t-B?y}bNb	P8B'w~'.z8`@BH\rҐC}`::	ܰnA\0/-eF׍3CfF#v9IyUI	k:kD~.T.M!Utaė(d4?LI\"?\\F?\$}h9\$0mGn߳ܚqJ/G~)Rh H킝JLC&L8>`)&dƽNLg9Hbv\\.vʻ0GF~JS^mܘBhpA H~JtuB2cMOBl\0>#J3ZA^r7.z|	ON:2k3fF@\r\"&RХ2|n90gM30b8#]\r:쐱Q}.7(HƗp1&o;iij)J>L0/-eg%kQTX]qc|!/s\$n6(#\\qٱ/%C,:>J0m-tE.6͂\$	Tn'R!\"?;N~駢liNQpuI Q*;Q͇\"ho19 I#ipC#f#K\nq|L?tF1\nf\0aTN\nIi&?a\nr+~8Dv1h,KR/)!\$RGZe7m!-*%+,s+g~ĨBOHmrg!=.2c s/'.-(mA*i2.qNP.0H	}G+2)A*S3 ,-!.26GLR)%,0TR3ԚH53UT~ϰ3VKsBgL-v2&pETvbTXf0\r:c~5 2\0mC=͆w/:XQ`@l`T+\$Po=fŠ\npCx64eC,2(G!0e3؄~#j'B\"IEi;l1BS 54n23J\$*d̂B&ˊjVr\$ø6/I.vaD6Js%R,^gTUP<Р0M̈́TUN\0oMrP4MmT7mMP9+j*MVF\0<PVD\$[\0@QΫƔ@,'f8vQ.f)afx4%m(wt^GХb[GO88'1f^pMN8\$\\-ש<UO˫ZF\r4fnM)=5\$Hm5c;@";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@7 ȉ.ip䋮\"X9R9B^6X&=qb4dGґO\$\$%x8#\rcM=*##K꺃\0\rM\$(\06!I	X0à悥#@6\0xCB8a^\\\\7C8^\\H; ^)ֶ\rXx!j+%;%@5λ@݌S#r53K^رo\0^O!􂆂i1#ȆiH:!.R0l@-(<Ƒ)&O|l R.Hߊ^5#=Z#81<.U~*9Bd(Ӿ\n挨:5>\nPp2\n%Eƣ%%`hdj59l(j	kr%.cla(RЌ=aN7.İñ@OS1{>XЂ;.pʘ49u] fL1 50;b9-;(	\nȷ&u+]sp%X,W\rWl5s^sZ[eaЩaA  M_mt&@C2҈)R\0:@_H\n+(2jG	\"4Pxp[\0xGñ+Y` @i\r*6U()D-Jrr:-R+rG8pGV@\". \\LTC'hnv(̈́W1a-)D`@12BAF60U	%!Fq5	2R/H:Pc.	\0U7]	1Dha,EPtY9h-%][+l7-|s9ਃM	)]kԦ! :ɼRPR!(!(*UTi9-E<\$Z;uh^=<Jڮ%tW;\"2J/2eOcGdd&!84H\nJ\0!ix\0()CH`Ql4Ȓfq/	X3*[tdurzwcL( aL)`Z܉J:E\0}]-hFfq5	iT\"|\nw&,Űdk?AFASM#9)mw\"7V)0 R@V 6![OjP+1ȉtO\naP[)xv`٢: n3DϕJ#0d+(\"I'%7!)Tw*\0tO4{H0%d/a+%SYKCHD	I_i!8PTL@.OȘr\0Rr:M\$[,e#bJ\\'/)k,\"x9cDʓ\\V*6E#W{Q^n}UÔO)GgU*4y8QW엝:S)O'<Q*:x-Ķg\"5si%NmRe~~hKa<nܟ-%C:7@K`8ܛcNuWbuL	xqR5F^#+1x7``vR;D<JZNCړ\$67\$e#|h\$`cT!\$9\$m(<5pI~5ʊ7}*D2@2!&c_\0\rOD\"5BX4bw㲃yg#O\\y`mɬf\\xиғ5TWjiCuACRb\rNl*eās]j@[N=i9#jh]5>LTIIW\r^7ɊwN֝|Gdߞ0ת|ps]M!5Ve4ƂA`)uM!Gj\nV TiyD%\0?f)=״ե~dJ6Sϑ#/4:c|EAlgNcOS`OwĂRvkc5^4ptfe@ PFaRF^,/G̟NjpIdLaO0?'Zt0(Hy/`M8b,y#pb<DWz.@.bh k\"WP`e	,:HdAaث2DpuǺجI\0H*H\"	f@\$k(\"@-T˄g\0-h8>C\$E4B:'mn\$|nAwL%\"R@n=cg\nG\r\"vקjLm,pfVN5̫нc\rpI\rRb6ȣOP\0`ܢ/S\rtG1!@'b&	:ib&&iC%Pc71k0o\0\0j9Mh\"| R!B3!rO\$0#P\0%ɲbs\0\nr>.&O\$1pмփ\rr@̣!k&2fr\$/f*2:\$i(qRsҋ''(nQ\$v*\rre\r*ж F,RHj4EBO#](/elsvND5ҎcdOCv\r(̆ zBKs2\$2KzBtNHdP;3#\ns\0\0LSRbE4hd\rV6嘐+rfj̉FD]\np(3	(n*LUI)bi. ƢsHÆ#_U=#0\$*5d05\\\rE\$/,egֈBdh\"W@ҵ~-6&؟ȴ6DFIC*q/ʄ@;\"7ф`@\$/b:k!<2_nxM%&&)J\"p\"e\"\$Ǧv4`&\"EnevOrWp30Ȍ~#i0C4T:kK%,5.\$m%2vĈ|E\"Ъ@P\0#";break;case"fr":$f="E1iu9fSi7\n\0%(m8g3IeIcIiDi6Lİ22@sY2:JeS\ntLM&Ӄ PsLeCf4(iƓ<B\n LgStgMCL7j?7Y3:NxINa;OB',f&BuLK^\rfΈ9g!uzc7'z\\ήknM<303P퍏\"Lpp\0\0%\nJR̚£c\\ChڪQF2B:	;V:26\$*ȍ.*ʘ++B0es\nF0M'\rhʣ\$<D^ʁB4̀PɬI \"85*\\2K4t).yT7@PBMpj9lW6HCH:MTZ.H/WVu{㒆»Q`2\ra3\\EIN1t;(µARSAT	ED9`@'C*3t6%8^2}; ^*6!	JV7r[x'B&\r/U,.c)X1r1@؞<`@ɍ:0+7@0I؁k[Ƚ7hxE&96	#p͕9A;\r`8\"5JɿQ-bº\"3HL\0ϸ\"/)pP:-2YYy\\B[S	ci	}L\ncQDYoUd\nbNߏRbwMk `W%m2n0׸E>GpͮGB.TwABCyWRXye()q*p,D7H-%D\"@cehqMK?2'k (\"v( *ADpbZn~@\"Uϙ#|6 \rח\nN+l!acaZchP}3\$Dѡ{2K\\:fcz=V\$\$ɓbWP!3	^uwM-m5նw.28H\"۫aHG\$䩿,;x8;*A \n\\_z5(R[f'zK@V'E+|{2\\sj^+zBrW\06\nG;>_=1&|hZ%hfP22-٢EJƗHD!zSx<HhYp*B#Y2mԆ4HBCk7F-J`Q9H*bXޫʗa=P	AbA\0(*Pn\$\$3 ffJ5ϊ}\0@Lt73K9=xD!&@ aL)cΠhf##44Fe֓\nĳLTPClI䀧RdtNf0HZJiI`7fqVAy=`B`\\E2:%nB04S@xS\nW\nJ	TjA?JCArU(pT͌4 \nFMR\nWZX8o^̸DR0z!1\0*抨d#>ɁI(02΢MgF\n:N%6f'\n	8PT\"@.Jf&2)wFӑPoI۶;x'nƳf!-3?bԞKrv©T؄ RR)	tAvHtkR#q*z3%ujBwjnlk\r@\"Q\nf\"LKQ(rz'Z^i!AvUiD@?\\EiG0ap(`K!*nDwV\\=*14XTMb杛д1cBmcd!Ӷ+J>R3diAu\\&lJ)t\\N\\aц\"C0\"icxiSjtYs.T\n!NQQcs]y+<V&12C:SNA嬄{IצŜpC5(t`M~j; 9)&XvjB˻ݰNdI'R!MNʏ<a%+e/!ox1`5,JQX|\\\"32\"\\VkJK#ۣb0\\2#sV- WlK61)=E3nF4!	/m??J	𯆥̟M 'mtr\"fnP4fwP0\n*f\"	nf6\"r\"quhw.Q'ʋy\"ES&\$LçTp&\np:%\"`ˀb6,oV-]{pRBlj1\0vpݐ-JştҐ=\"ԇK	jm1\$|J		Kn7'ѱ-|}(|'/?0T'~tmqYRf*CrbzC_OJD4*O\$#O/O2𮼍f.<!Ppn7N:Ak@Q.?)t1\$)CE ['\$Z5- !T7B|JѺ(.5Z :Ja B/<53G\0=.HNI-P ,m@۰.(: (%\"e1rPy*MqΎZDe!΂&\r-rP,Qc',21PT|(2-c+r.2ۈ(n: I2%0+\n`\$f13Ny32-}?)	\0FzaV*\0=;L+95/һ6zw\$dR2?D2mmM	s7i9j+3;5O4d\"99S}7S3v\r#9y\".`#q/3lBbN,?H»sE@i?K@c>n@KҎBt]ۀG.K*\0*K-铵TWDAR'@?qld0ƀs8\rY6yT!bFa.8\0001<!g[ERLFbJ3C;ixb\rV٣V36Y\"r'bl& *2\$k\nZQA4N	IMr#RϔB;k6%mG0fl\nSD\\xp3 EJ74\$&ZocpH=fюXhېƀR!'3>K;o)HkSU\r4;'\0!57	gTPz m\nF5MN;u5[E1\\B\\J VPiX-U<Ҝ#0s8_#a&WP 3\rD?oNkdYRB᠊,<X>c&E\"LvJD0\0(\"1n*1\r͚:,HΦXn_\\|fjGg<H|%?C\0\$LnJTucHJ\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\n9M=Ӓ4肎K9Ț\nX0А䎬\nkҲCIYJ欥r*40m4pꆖ{Z\\.\r/ \rR8?i:\r~!;	D\nC*(\$VڌP;)IRR1jܧ.8)\r*s;MJʽ#!*,%Ѓp1ₔC1@#\"I%0;@240#XApk\n43c0z\r8a^]TjP\\{\05J|6.3/)ʜx&ʐcԯ ܏zRL#dhƨRX67\r|I3+9T <X6G\r#ҁ!.[6jFm.5Ծ+.J5<^W슱43{Dl Ib.QQ.1誨E1M:,&Ljf\rҨ&ޱH %KAGm)\"`Z2V겸pӄ\"s4~Au:ͺßopaGIbPEAIl9#\0ވ6\"хc3UA`*\$P	%Vǈc.#ͷ5}d ]{ i{!*ɸ?n(=S\$MQd|ʚ7T(\r)b^n1ELM8i5\$34U m9ZU!\n/l+\07P	_b\0FҀHD!!(Ƒ!0DȾIb*3 Aݔ%RjXR㈴!\"doB\rHfBIV7cZ(*CrA2]IArXkcVzMQn[H~\nuI\$c9vUq-&	I)gVƇca!*0pa1pB`M\n6Iy2AK3Spsx\$v'&|@St\r\"<\$0n\"gG2`!@(AC{C`RnMSFlA7I\$Hv; 5\n^ 8B*3A9än^g@C\naH#E@A7TZ\$𩒹LV@<)pnI	*`\np}t8)r=BR)\n ڪD\rIi7~erNmz@aC?J2\0£T'1	6W<g%\nYܕ# 9ƙ% 6H4vl2J1]&;Li	9'dP(}ęҨJ̚~/,&!-}d7x-4NNSKc&!@B`IA)Q\0U\n @~B	6A<),	@D0\"E'h\nE	AL(SC[	6*;TJtǯMXByqQp)m9mg`P굌.ĎX(kqC )8[P/P%>U	DHE\rSMJ+Eʳ6ߟ4JYm{oy6E*P}ȭ\nKN!.Vk\0<3\nv*x5+'\nѵ6\rx\0PD3Wh	Jcي	<>9l'MjFk5RsПm<!WYSM#.UΩ0Y	JM*K/FIgUQ&KF/'L7by+,E:\nN,JM]#@°#q-ū)CJ(<sCA.BaNSB=щA4܀s.:>zށȯCbb)ʞn9//D'Ʈ(e˾74KHurq`P5J}@#/M9ceLa%36G\$^m#M Lllh&he/~W7'0wVKA!FßK,}~yj	Jtgsl0L!D\$\\R\$J%F(#\0000q\\@#>)L\"B51\\p06٦lgt0PH pb>md0gd&+*~Ph˦Bϳl˄pFxGr'lϺa9\nC8#N20\"\0\".x~0\\r|.\r	OB\n\nP\nu)ѰHG`/-IȠ,2j8#gE-*_LGIvPj8(ꆩD<O\"dFP~bCx\0MT\r~\r1Zgp0_	pp~uaMѬ\"B	\n1Ȭm7Q2zk`jFm'(O70ѫp24ެϧ\nL!oh\"L\"\"Rkp9!Rh&K\$R4cFy`Lj*3zpt X00pwqq&i'H͠9Rs(2S'!	*P*oS*1昦?,{\n,RO/,-,7,mмl%2-k\ng%,Hj+10-3\n@AB`m!*K\$*ۨ\"l%\")B83Z\"4*FPP1܊\$R\r5s	\r密h|d\rVd\\\0ĥKj0\nĴ1ĂE\nJw.Ma'@\npP\$j41NZ(r.l:,1lSh =Ğދ~*rȍ)&\0\$2`/(GN-UBG<<Fv3>(\$3х9 GAO7Њb0C&lD4dThԐTuENf)ޔEtzAF dҥ`ԇFj!\r>_҈,ǯŬ^p,`QCM B`ޤpQOl1n2l~*!B2,+Ed1ȃ\nE\rTҎ5\")Tn*;)rwn:#~\"}ȽB\r";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(;)74˾;;c2p4Ü/S:	:pTLitקp{	0qc!q3^؂2\rH*7O1oG\0<KH4\r4?\0\0yQC@:t㽌4eˡ}cYC ^)a=p\r87^0淳LbW9C|RB0Ap+#P#B8!\07x1\rhȊJ0#Zk9#2h\nfLHu7\r0NGq\"	ZKC'-VZ5ۚ:\nZNB}Cޚݨ).8'Hj6#ȂA'qKy^:z!)(|K]}N[9#wXr~P30A:*Z o'T/;ʲOܒ1EѴx\"2h6=#`Zَ5U&;(zkr=;ʦu\"'佪\\9;w<pA%՗2\n=mEb א)nT,]X 8emXԚ\r= ^ڇq`-^ZKۚ +!&i@AAPĀBH(4GM\$B q' 5KȀMג#~A]@UneWj_V:w1g-\0ܴ\\rl0}I)OQeA2r\n/e:pȚ\$CX	n\"KP9'd@{T_w*\0{C[6@RqO`8*Vť3,%\0l-k\"M%\rq2Lk0@@P\0MK@*0;n૕?Vj@ Q_KAaCl!679@\"/|BAA'l7p	&tٛxa@C9Z@K0fJ\"rŖ\n6%NɛD-rt! ̼J)]%P!`(*\$8T>fY5Dp	%[#?0[R	1FJCBk\$#IIPO\$dSM('M(KkDCn#h!n\"-mEJM娜G&L3T&9d4&CIvգI8Kdb/)ƧbI2\$4+.o~oEР28%&!>NCj6ӲwO	d	͕Mt0Z+ٔm2ClcFLңtS0uΰLLuh5h,a\$Fs*d%d>Sm!:\$N_ki\\Zj90:9HF啃YJpĀL8fsR	fNCn׎vbJ\$A*@C2PWԑH2\0@]HBuPKa,IMb_*ĩ(c,AZwᖥ֣u%k(UhKLƻ40JY0f:t C40Hg1鸩(`⮆`2-AơŬ\\C	jA6tS- -\\z!9,o`\$sC60(\"!J4|>tie@UH8-D3py48!r'p뚷@r.k'Xii2@rUjTފ4уLQi)_ͯd16-'IмY˶Q5΁\r@W!73-n3rY\r1_sN3@2Fr`npʴpٮLKq\$8N1!|:_ߜB[g!ߨ{J=vCO9l`Ϫqiʓ^\"N0,_F\\@.r'4io@d.*m|00D\$LgQo?\02PN\"E:.֝B6ବ\$,-pHMP-J^P0nq]u-p:PūmjtD \"Nq2\$. 0i]p.xtJ9ncFEL0+I,Oq.BM(`(-le{,ԋn6h	όHDc#q>(onMT`bvnc\\%h\rFb>ƱN<I0dCd\0VPt0E666Bg	Z)PC\"h\\Z\rTK^ n{P@qNm80*n7-[R'd2D\rD%x@`:qLk4`FL # 0طzj><gf)pPA+n)w(gmᣠj4`M!k^ыHf% kRT@@K@Ι;VIP\"t#rhc'8nkG'\0f]@mB\"60 e\$3:@vk#biQESq&k΂";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̘RXҬL玊zd\r謫jmc#%\rTJe^D<cHα(-C\$M#*;H;*\0hX9`@14#ގ(;R #OYBRPI)	C4C*モkC@9\"ЮA\n i1ܘVp	^44RcpBb4)0z\r8a^\\0Tzٖp2\rcZ`\r#x|퍉,~:C֕1JR&Y0ς(83M\rI\n7=x7s=7\"9ӃPi6	68cl2l<o:wI꜃P> 3#RN`2B[fF4#Zp3@1\"RIk4Ӄ\0\npeU)X\r*eԠ3b-cmӈTr0&67xL+M7I93c'~cCC\\}\n\rhHz;S}O(^Ur\$#VM6@ v )J@Pp\"2ω|/镾|t@EKEٺ#6\n\n51<d=!<97	퀢Rc1`ƴ7`PQ7nGQVfBC(ck3sblͩNp|%lXKD@)t\\:'dQJ6/EeMU\nAt<<y>墴֪[+mn#@t.ܺ)ypm\0t`\n #4Eٺ0DBr6\r?P\$\0:Yȫk#(G2%cf_6#FCFI9%P»W#PB3G\0֝\$PAyFMC̛6lHC9\rh\0(0gXVCk3e\"Rb꼀 /pܓ	;idPDS7b%EsF@ aL)b`zbO\"s<F`|\nF|PZ3a)R3>}9rM0\"nHy4-.N)ŷ2Y  S vmCHkX@'0L !Lh[9窪LX!`ajօ9*L8SAԃT@2-@\0)CNdK@ISvpXʹSģ\$h\nzg-јT-13BMcxEJ\"hziâ3TEq'>(&6vZ45\\ \no>Ĝ1҅}*pBhPw117ma\\i\r ܭS&\nk3bL\nV\nJ%7@[3\rq3-\$U\\fvt{܎Bǡm\r<M-#zY!FXB<F1m 2G\r#G`ʹ16|ٛG\n=}%g\\.὿ZaUv\",#, @BHsKepf9w4.+:\$޳\"s\"˄sC_+G_BVq'xY(ܬ\\xsi;qt_a㡇qy!IF~rg0`88KtM豐m#TJB&@Zn\rL|*z72t.\0xFGȔ`wrہPxcmriH\$gYheGME\"Jbmp\\C9H!] Z~c>&w6YoO}FY(	\rt䡕`V\rb6h\0,7s*+=x\"r^ (eۓjI^ll2LT\\SaDAa`ƾoek0D\0\r,:l%0\"h4/'T.HG~#GԆTjF:iP(ˌ-:0,v8O\0Czt,a'|%onfDblo{̘a{bd-hC9\n3(\"C&\r.@FL0.ZnD6PphNr\0أ\nϡp\rtPq!\"ACB\niO,CD/D\n/C0I4QPGJ2ZcARG\"Fۊw\"ZCljhZd(NeP\$v+Iʜ)ڱ10FLNBf:~<dl*1Pf'\nlzcDQUR\$3\n?!P·\"\"'zF|<0!>\$*sl#:BpFc/!`D&joF.{cؐB#roI283(#\nLU%*AN<fG+#p-#&r-R-2c%/]* l2Փ2*M\$-VR\"O M-q`+R4VR1;#MTR\r*&ܤ(P'܄9'?6gTțr>7Ҷ5pp_#ʉ᳠fS3,;:S'h\nBVnAœ<6χP>w?&V>akOKdbmޘ\".\r f_'ƙk<\nZ>/Cc;OJBEHME\$#@\$BH\$fw^&1JA\"@0OD\"?I#<c-;+J,0)4\"ĉFxX(	=;z@;4Rc=\n4bNՏ3d0\"ӽ0/3i0gJD',\0OK,\n8v5cZ fuPN	o-юeU  Xgz?pF`46%zf(?-RYfDLgۑ 	Sd #p?922[9 5sQXs˪{PQ,pe-a\\3b*qG\n\rd+2.l-a8+ 90\\.-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\$ô\"	C\09\"<A0k]%%\0PEr:#dBjV:sL֋DڜP2\rBP)>1i m9øѱ?X(D49Ax^;r<@\\z<ҏ2\rCD,^0hˍ)-	j4Cd9;J5l*M2t&C+Cszcx<r8Czd2!c\"MGX6HFMlH\\%cH@'4B 3#؍`2`ν<厓xG&%9̒BM܎ZQr(~\$.A0C!J)\"`1Mj5~r˚!mvb)(21FNx;rZz;Չ@;2-+01K&{7\$oE>i(ٱ;\"[624rƦh\n@<B\\\\&#6cĦLw3-5jZ%[xhƻ&ʲ̢?	K?8'Půc`@Y2.^@q7`I-MI`S[JL)8TTuTV\n7+'GrWn8CH!7+?\$%3ԛQQPųnHf%P4KQs\$J\nr}DГ30fcX7O@0ԝҘiJ\"auia	 8'L2Dt\n\n@))(O\"eBhn:䕩Un c\$3ipcc2)PBS\nAIbp 	a@ǚTa\rzb@ڰe8:NNh@MYY='`Hk(TLA;_FiRqdhDc1)1E=ɹ3O@\0TiaȢ\"hLOLh((\\Jq\$`\0Tyb\r4\nA2Ƞ>-\r&ORDp\$\$cbLD\"xNT(@(\n \"Pk\0\n	ԁfZә&Q2TubTe*GU£\r\n\n9&ШYe4xKHRݭ9˓S&]\rFe#\$yX\n\n#\\\\i\nĢ*GCH*Quo&EUzk]yLxn.I|D3*R	2hWDJHAlb|ȉu\r Qj9A%oyk߲pRp8\ria\\4֞\";*@@ MpͽF}r4/#R6Q#dfQU`̣lJɱإ24M{0R-}5鎹a;i&Рܢr4y;1aS9n/E<ȉEfGQ#1e>lNp=fRMj{qߣq	u19NFQC\r(̂꒘^A~.ޤsW*ɯ]-tfڑ.\"1x{	3c_3-vYlեf6]%TU͌ٲ[\\}DuC֥\n3;*B>:/L܏XSJ,}p-LZmq7M0\\ژ\n\rcI#7ߏg{\\9Cva;\$zÙɭ({4P92|04\"_6.ݿ]5t#Bor#CU<е	uGk^zktGҸ/AT%A\0j`oD0x&>.nGSi߅wMq<q^5}jNpzKX5ޛNӸ^ߒ!ouxڝ&GDs>\r%bK</	 ]`TkIނ嫪oНk|?;JX#X&,dh/#oedȳO\0[D(#0bbP4J@v;NϨJP=\0/-S#J%\\&&O&06\r,0o!EpeFZKTg0`D\nй@܏HTK9%-8zi&*.fmiJmL],d>\rV\" fBdeWlQZ~i\nZ0z7묦= ǭN2Yĵ(db >h,ö@2l((V\"r\$]bB_EW0Y(c:Bg\04+\$/x,BkMzicb{jO*\rb[50	v'f)ex2e#Z		\n'LL96k\$ @%%μHRA\" 89\"c'#\"`QEcYqh.r q\n\$dHZ\r(4&3fvf De\nJ&BDj2\0";break;case"it":$f="S4Χ#x%(a9@L&)ol2\rp\"u91qp(ab㙦I!6NsYf7Xj\0BcH 2NgC,Z0cAn8S|\\o&N&(܂ZM7\r1Ib2Ms:\$Ɠ9[p&P;PmB@a3ڭÔu܄+َkٴrC\$6ӄbsächf)ek-f}(sNPM,3w#lԨɇY:七Ѫ8Ng{AZJ`5R#()*Z*J@eZ)2B82<7%q\n6R*-(B#B!;2ł87j01=\r+k(\rB:2#*8(?O2F1BT\"Rbn\rRJΎIÂ6l>ÓT0c@s3\"`s`440z\r8a^(\\0s-8^Dtʍ2М x!Z+8=QkzYDf&\n/K`̪vMZ溯r;#ʙ\r=FӺ7r1;ɀވL(CʨFbHC{/5\"wx	.2KZWwuM-J0ङ]l(/:741\0RTXO{3vVyҶYvj֪IYtc2#&C.¼\rnܣ\$4[\"CrڣW}P3YD29A)(ޅS9c*9>;ؕPʎpm:fo.sߺVĈc*A.:揥iy>|^JZ*p9K1ޖ\"\\ Xz4{q>*y*L\"B}L].F̵̫d&1\$ '1Ppm)k(`3ց(Zz؂O\n7@fRH@p+\rCTC0fGeT*B̛ePz\n)ޗ)\rr}dGgn%G䦿\".R]L:\nTS6V<%*UIvDx\0ʰ)Et^Ht\$4[2x{⓷Oa#B򼳭ʬd3( 0\nq摕FTIH4e!T'dc{('3JqSa'h T!!8P	@S} lvvX0\nnqޤ䬗SJ0DOQCxk\"!0QI͢9#fI\".4\"h9<\n앨Thɒ2}&ճI#\rpIUFpJHH9RxT @'0Gf)5aET٥Sк<wBҪG#I%텳H[PLL'#(24\" ďiL:LLKݯִp \n@\"@U\"iz@(\\\$ƦTu4&eieڢcs\rQj?K1(.gg5b^sy;:Tƀޡ2\"	6xT0reP\$f~nq\$`fjh۸Gx[g:Ǆװ&o\$T@	Phrk]Fw!._z%@)yOD\\H7|iLa%AΖxiewvpk!s/FW)ԟNE(gsT\n!@HQ!̒Oyʣ<l}h/4Cn2)h4qAnWã0\\_n}tgE56-R j	fш\$Q;Lf.%7G@y/Wo,WBMwqBEMƊnKtW+i,LI->@C<iyP_hKzZЌa3l^gݒ[S^7W쑌ϝ#GN#\"C~\"[um\\k{cnd=uĐ#bDF42ʖ~'\"ʛ2ie}u>mkH	MоF*}C[b`\neP9/*cyxHcJ@]?<jmbwwyt瑎\$Աszw7V_ŘFb_z\0Po}U\$\"h]{7(|u'4\\2x'2_|=		 S#ELkIRfYehCVō*RJZԤα:op,DL76CJIjz{|֠Ȫ]\"g/̲oŠJ`OX@j6Zt\\hsHBP`oQf,B/HM\0h#sG*\$ϖ%PDai#``d~PM[PG\$#:K&Icpf6[1\r0|bp\"5\00e\$Hc5RhCFV\$Phq2D>l7`DqORˣ=NPрPn`<1[4\$|n9&.\nAMOQļX%'D6LqH]aPn6ڦiMk*aD\"-\0l#hHHB(cM^=\")W(N&\rV_C*4fL3F\$A\0gBg\r@\npmv&dj-48gd\reBM@wn~\"N<*#15&#L5#d*fW%vn-'!d %ΈHТ,bF\\e0iT\\\$\$ /11؝#v_-2)	1\r)03!	2djdZX	\$0\\f3/2\nLBNȪfi\n\\F..̚l亃(:GRM'l	XK&;\$\"wvCk1h\nk9E+'hM%', IH[j¾\$`";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(\\#R8U8NBH;#`2CPCV9X@1C(2àNq1C8i\\A\\t/>W33) F>\\+DAVq]*^A\nføsQD[Ab6#tB]c:9C#1#3\rPX;.#MF9`@aCER3:x\rzt3`_qHJ|6me3Ack4px!ekWEzSgI\0#8R䒂DhL\n@ñ%\nset]1HB9\r<!ݵ<8C~2\"UƼѨgIjJRE5t%E?'I,Qӧ8\\R(\$zR9hQ9vs}XF[w\$/\$o\"\$Y+B06\rےCC7B&r=̦\\->3HGY䙵6%/y\"z8V<g6'żZCTlR,A;T|ᕍ!D\nRb(\\;RНZNDO&\"2[1JMѻ7Ug[LDu.CJT4C(x8AGEdK\r9CLUL&y{+%Jfsn\0007/`ƫs7Cln|!D)oJD]>Cr	8 5vJeX[:3?Q8\n	D*FpΘ4Jd,vRû-e&hͣs\rmUѥ<m5\$>2UVJ,%&'\$-֖\"A#= \rcUЕ>@@`pA\r9O%@C4CAՁP81n3Sib'Tn:Ƀ xBOH\n#\$h! fPqD\"SXbIbhhF4@487\0ز\$1@;#ꄎaV*S\nA(cG(y\0@CD&*B)L֛Sx!Yr|P\nIUWp(CDQ\n\" Qb4NܠHyOu'7J8SrC2\n\r3I^3\rJB@n`P	L*EuA& Dr[W2 #Z #T\n-V+;@2GK}0cjk\r\nP(0z7*c\"#E!E;y]<`\0U\n @ &\\\n/\"<A\\ۢ\n1=b(拄dRJ,-t,\"	o0!b\"82\0EuNa;W2>Yn#z[T%~V}0/\";!\"Ȩ%!k^@ATBUb\$J6Q*1YAC)\n\r1(☓uɄC50r#G\"!E2\n=*@m!TkB\r+	!uwJ'F/3i֍}*Ŕsp7YlZxu@ùdxŴr t#(Z/;	/x+\$@j+k5N]\n!AyxofO/4\$H,7!I0Pڔ] i	rLoto6߮Ay >Z NSbj{\"׼_}D݂`i^etn)WR\"j=M){E\rM_|PhB2O@Dcy<\n7-\"Q@-YׁDq@*8/XZlab6ð2\$2m‍\$oF8m\$ma*0*20\r\$>KChlXRPt),GQLHtZBD~8Py0\n8(_'3gJ>g|k6}0\\SЫlH/%#`N>M0ސ]oԈނnh ˍp.Q)1&m0%L?'юm1I>!!x,\"鮀x g˔O	OP,ɑ^P'?HѨ?hGԡŲWNBm'\"B2. ŜB\rD,1P!Wn01\0+RA	 .Ꞻsa. )-g\$lFPsnWPZ%k'&%=Y'1&0c'R^?Q:~.jAC(^c ng:1ZQr(MR0N%rv%{\r~#,RPu]/%0!0rnZP+0t0q'0#51s<33qo&>SC-r4E1AEtM%rSW'p#u}C1i6MS76S고Msleҋ8\";]%џ9Ng%S<3c<o2\$ux*p\"98d7?:s	\".9-h2a3a0=aB(9SՈkx*31\\gjÁ*FtPErJlP;h\rVp`TaE8\rp\rb#nC*@\$\nZ\rJ9hDW0\$8,,E+/#1&p%P\"2bTQdB^hjCS/S=8EM~'EC/O <dh\$3pf+\r#vWo #(NWXor\nf7CR5kUJ\\^\nuWxrhQGy\ru\"\0B,^U |fCb`}-\\q.,.\"4 @`@UA\0utLA\rVHnB%hP2\"..NDkzЍGQ\\OXg._X*~!Yn\rFd8E4A3q]5>j!D\0Oj!\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/\n❓K+!Ln=,J\0ͭu4AݥN:<#p0HȋXxc2p4ՃN:K\n.-w943+6qvNh\"R*;OiAjsZ=6MAԩpL=lZR2꒷Ml_h3d995-A󮵄6#uc*݁bԳ*<(KwuЌ5_*\$!\0]D49Ax^;pÇ5][}z9J}\08Z|ષrwB+ Mxv6AA[C<mp';]96u)RCR4/=\"8!\07h1\r2\"U|1ֶO1wAlEn-D(	;[Ri>̪*w[q\$ܪ.K['ýs\$3mCOK1jmȠ?zDҖ%EpB>ȥ/\nXRm}frK&\\ϐ()\$GNڱgofmJyXQ!L((^	>SSy\0Eb9\n,pOd~aw&#Z[\$6Q+ۀku'\0 bAZ+0Ho\rԋ0 ăEp40@UXi\r1Ń o6:^Cb@Ⓐ(=da\$4T@R{+}:\n`n!iiai^8\"Xo:xpP7K#Rbi\\MkDqPY,q+=bδYjsO_ݍ\\H	w2s'\$@U^tE<OAYH#u\"]&̏<0	DRIM0[rQ.<ue( ŪJS)SIB8\0}N9*AL7ue3&h͙:gݟ4ÓEh<E{#SPjUٗb<Pa<ʥi<,HPs*~2b9KsYp-R=NI)\"tfA͝	1IŲ\\):#\nj}21I%H}vnQS'8eK>`K붥nܯ A_&d:U|u:/ba}mM3[\n1\05^4Sv(ІFbA+&(۸NNa҉lJu5^8lu.zTY,z=u3BInط5I(K\nIY1v*=6:Ԁb991JZsl].8͞ݤy[&\0¥zcܙIg~6;7|B)(.#Gg;|[g|4kGIfVXxQPCZ`>ĽRANIwgA0T\nRU^l@ɞ]+(y	NmvxJpݑvCSlɽ^J?q\$R^9?ĚZl48	Q8;i@Pf7W2DeS#Ʀn>R>U`ԩ}e߃g۵*e tHzjbl5~]䧒⫣u5y+I<_%K7w\r\rn2rINy\"ʣtгkV{ښ6ܤaw]I'bp}I\"tr4ZgvwQvmvվX]xMnXϿt4]]urΔESu\$T8Jm@VMS|T7UM\n!P*WAk rӈkCƉN+ˣvlГ`@I/*_Dƶ\"#䮈*c d%Zy+nLtq\0&k^Nf8B0?KLLu&JY'+D;\rnubw\n׫k꼕ldBf8҉bС\n)Pħor|+\0	dME*\$\rĠ­XNDÆ)î(Jn\\7h[B=lT|nHo#O@]NrB8Q\\\n#zI;N1t,ԯ\\~L)P9`	Xvq.l.j\\'gBezzz+\"ILMf1uCmŶ`Kp:o-BS4/\"HuDVaPBh1\0t,xqLG*Т0ʔ(]2<k[qg&J'\"=%Jڌro(p8=F%*1m\"vrǉL!Cw)hpbaoj	4Tt)JpmOoP)RڀZ).RҨ\$ERAI]r(ɐX({\"m\$rK\n0ĥ2h⌱lI1DLS2M6MK=2Dvd!lPs˓*2MpPM;/-ދDcFd.c5xY3iP#M2/q:@MҦxI+j0}&>	2A\rE/ZS=A/2~6q=61[mHi-G'@@TsgA_r4C01o@3Ή>dT5Dpњ[\\u1Y/:cPx@\r.M1+.dnRAQ>AgI.It'/qHb?J );n{˕EqAJJT4[L-J#f\$ԲM(i1~-^ıP2%9퐟2>4iP[Qs'	CNĂRTܳ<|	 RMJl5T'4@U\nu%<QVr#S'Kk#]D(*%/XT➠DQQgYqUJIRi&3XSlZUL..QR@tRPJ	Y*Q@5ZZO.|Cb`?l܂ҵIGO;YY>+r ]1\$Ū7O U\\B}Vճ';* 꼧0\$i\rV	JgdL3شbJ&䪈i\0@\n@p486iJP11\nЏ\$\0vG	S54j\\lS;yGUMxo6})g5BBGUAwS&078ABTupu;\nLqa:5[Jn)1\"(vԯx\"|\\	ֱIS:'>rw=x	/|S,.Űc5 mw|#{jm>UwyDBKiHtenWF }d8m8LF1 c=EhQ(*d/hSvC:(Ђ7ϗ,6VtQƸ\nxwʊ\nJIyǆb \r\0TU7u[:OLy&JFŪtRl";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,S\$ð6\r#\$KxA	2(:\r48栝mvBZ!%)Sy!eLӚuv]:5mAQ!uJ%Qn͓YL'Qk	NrgmYVc kGCD7đ4Q13ݰ-CP4@:ăAqt`4Rc0z\r8a^\\07'	},02\r8А\r#x}NS\r #!@vdETi@E\nv.,ed^sgkEYTT9:\0!1\r8CxÓ4UpKviA	TGYL1:> 3#P`2ZA؜0HYbXmiDEQPO*uc\nK\$Cج-KBLd H #sd\r1#s(1Tχ鹎rGcU3)AYN\"[0zi}W i'q\0PADA;6Qup. ܃(vo!0Cc! ߔR\\~m[qkE'ݢS9bH!VOК\"#eTe*3P!\rm܊\\\\r0,vA:4F-ŖYm͛BpƦx`a4GԣEH.v!F )d%dH%-XQj@22/\nBMtMb%=9%\0yLY\"PpL,tiRhń؋b]v6a;L٨ne,\$CjFiCz噆^{3\\Q-d0pڤ\$*H9^eH,T\rqw)D\0 Hq2&bʊ!i\"P׈fssLTfS!:fs1F(AyPd;<YgJ* _Q*,^\0^\0`hjHc\r\0qv#JvR.u\r<Pb@01@<KiĘWjG!S8BȊ:bTS<&D>Eb@PJAHhE#LEIe\$ꉓ,7P+\0Tqtad\"A%c\rK7ކE`\0¡~X9!X5^IO)[H_MpvhƸh%W2]	tMb J`F\nC٩^B\r8%d82갾tlLcp&d\\mnx\noM4^[}dy(+R)h&\reՔ|ʛމZUXa>q:# C0r?*][FAY&򊪖A\"~Wpg2iZ_t]k2]D-;\nRib֨%EQUZSFcguI|Ȕ{LU2Xeh*2kxN}J\06ElҮBY%eF4&K\r!LH8[JkIsQI_\"mOGarfN]NӔrg`RZ+L-eN)[@sR/BTҀNDE_EVd*@@ H<4f6]a8J1/yy%ܡ1)(d=́Efx]d~&\$\\(@7GG):	wԏI?l<b{|K6{Y9|Bǫ݄ߒJU=AE6D.*HH	\rA<tlH2flU=.%lUb@e?آ^4+>Xd2/M,0\n6066k/\rI1mN0oV\\\$ND*#HB F0\$cctniJZ (lP9MPL5RNRNnȬҐv0IRM\$k_6,[\nVk{H-mCoҎL=bpH/	,BDW箆讎ex3n{O K!, ȸ#qIG\rG/P䎥P	CcA%brA2(M8TNa:T,8a*4|0j1=\"<Eof+,!*Q%\np\"K`>JUfmP=\rQsn*Poc!9  .n(yR)!N<D%xH\"b 66:Q.ч&dPdwk#qh T-N96u2:җ`\n'.\09VvqHI!+K(r5,ғ+Ւ8hd1-/\0()V.w+a:H74m),rq\"BE2\\T14增mC094r6ɳ;2C!D\np12o`@#3!3S7rr;.@CJFf,8kh<̞3!Tϣ7,+`F#Fs!!1,1!jނ?2/,H}<k=2K>VJ* \rVe`Q`GBti\$e\r n( 8\r꼋\nZ\rƠ%QA	Ts#22R3!P\$h-F,2rL\$;D;2pZpwx#_Ittk}70Ԭ?M:\0N,M#sIipN1߂pgxAdxp<NV/#bHp26o\\!QQwRE>\$Sm`DB\rCVSGQ#!5:,Olw4^&<o&`xpO\nі*PzqJur%nN0d?3jVU-ZHP¼@˯m~Lm6G'\n>}\\k62-2YL2N";break;case"lv":$f="V0DCse1Mг~\nfaN2OFC)sC͐#&t&)2ӓFD	m 2!&r8	A\0BP\r&AeNgIt@\nFC1l7AGCF\"%I7C,.'ab:'#)D,<obٸu22Q@ S0MMө_i2|9R?0&[w0DL:N\n\rC(Ģ\rf!xbo|00Č0p@8#އ'H\"Cx@	b\n77P.T6j9)P!\r#֯#ϻ!mS44mZPCJO2BUjbC(6d͍ô 4t@1L7L!7Irq#R<(B)=K<#Ɯ(zP\rX2EA\$׫th؃\0x\rC@:t㽌5\"\$|(9c2MQ5#p̽)\n\"%B:xC#LIi}<>\n`K`,6e].P_ BP)⌊ʃ:\\!ƷC86ШȌM|9!.b9o\$Ibf/)\"<%sS?ps<#p.2p~\ry޳C]<3{:>706BjzP2C[	h^/KB<Fz4ŘBC<+'IbLfqIYWJ7∙	qZ<L;FaWěI?49B\\6/~5\0pz< B!{7JttkY֣ ;ϕB͍)Fl!v\rbo%|zzԑ6:!b1N*zP\r:6`tLU#2xzv?#t4(N4_`.m`1 I9C%\n9V*S\$i.I&ʪmT#\0I	vq'AOŲb\$\nFBTj#Djy	͊Gs=bN.H ĄB2x\$ZG)\$¤4db*Y)MDHGaυ4H@J1)T6h9E^S'<[!Tq4dKzºW`,%YJf%a4(a-_iڻ?2ȽZb}'(g 1^X*d3X9J<`5s^\\Hs%\nLYrSBIxx,#@8RH\n\$Rl\rAS'h X*l\rrcBZ)h	y2*(aL)cp/+8r크AS\"\r4tʪX)G)%.cXJBʼb<Z,b|Őe(s_eMyb<R7(T4m\n.Rs1)\rBMC n\\\\\$VAP@3\$Ǘ4tv!Sw	X%RHp@Q1&dԛ5O˹D2		޺B+JCD- ihšz\$v\0ӯcЎO\rE	`Mظg.\$(eE!y\$r%,J4BQ	urO6^KąaXPBl9/V'\$ \"ueQu\"T<AJU/{\n6MJl45?9zAs{O~dyrzz!Ƕ1k8a\nL3dBTcrᚈ9<۸b]y15*O\$*sN'{o	&u)U)1Kː(eX#;aޞr*KAfASP*&\rVlLЊn C4.VH\$\r)gFn>r*׆>Jn%BZ+%b9Xb+6 ]Q;7%/Z咋>q[itka-?1NONɬǐ-<v=+-|>f/ERыג 9Ƚ떅uU\$4QQ,zw22tԓr>hAmIx\"B\0lD\04\nܷEn)/{\n!Hޖ\\hh1cB.,dg?yvff&(L=Ȧ(m\0tItAM+ȇ1mdHemj^p\rjk=E.8t`|BP(Ǡm\r\rprFO02g%\0Pr5Rmf0'~AOL؁\n\"!\0\nzP\n&_\r\0\$鮂pu؇F~N\"P.NE@Spl0.MBcbk\n͎LILNKR%@ıG\r͏\n·+,%ZVC\"k.\\0u\0CE?+iP>o-wm#JoČ12hX1K\0+/ܔ\$0ȢAq.0ƿ\n!'7s\0R0f\"k'pRP.!-\$`\n-\$q\$jϭG&.*&\"u=f\r<li!q'K\$0!&\$rGd\$E\$p\$t+|\nҞ+xCP첲*vIfX1b}-1*\r,0y2x\$ލP\r˝O .-1,3gj2P|;/+O6H-.'.#(iE0\$OjC.Z6kSm#7.d'6f	c\"b^pJklmS+:f| RPx\nvOthd\r@d&ǦKNfGP\nZdV<d2æ3\";4Od#gAH@MB0\rb<m @\\]\0N3;Rc<<iFhx@EEED3DL(g(H@+E:Q.C0.\$O)!\0000\$\rs%1G\$TtBPdEK;mIfK>C\"\$tbmgDuM~/&QD.ľh\nj#LL>CB\"(0T\$C#cˢA6w)dlJ̾#PRm@T5 %Gl`uJf,Q	JG	\\";break;case"lt":$f="T4FH%(e8NǓY@W̦á@f\rQ4k9MaŌ!^-	Nd)!BaS9lt:F 0cAn8Ui0#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)nh;%HȆ>{~2.(Y;8ʕK*Ʊl-B8?)|7j/\r=-P%#P₀ЎtJ\r4-B6A(0(!\01lRU[l0j\0yb\r0C@:t㽴5=R9!|cC ^'Aڱ8̱h7x\$n E2D:e:&)V9;k4C&\"\"#n\n٩i{0PDN!ӢC|l2 ;\0HK :	h)`!KmR@\$t8B ʐ,(`KcB7h۔Me9挪*ux\nHҿ<]\rIR,:L	V.,,ѠʀiZcVֲ0&\r,6mѳC{݉/eWQ%	}uDx`6b'G4.3I,;;SRS{zSU\n\"^DY'%Q'46nZ)(=g[Ӌ! )WXl!=W/_.0ʓc(x.aHY (8sdQ~Ugf}^Z	%ˬ7R߂@(%0RDT7zt\nf}R%3R'e!#\$mU.tOxHdrZKQk-K9.5a=]k\$_p/Y,\\|GH]1zx10FS(+(_u0ʴÒ^L33~բ͔}U4t%ڛӉ`\rÖՈ#gGCr>fH\ny%Dv\n	)xDU>xV*\r;@gZS}W^KqJO8b^RЍL&hY֢7Gףtxx~Q\$XDgN	9)%d̡\0mGhDvv6\nhYiѯ!a*́R\rɜ[I#6f^DL\$\n\nITj0ƂWpҌH²Gbdinŕ6V?A\rXkv!N@Yms#y\0@HndhIוƕ!\$LL=k:\\i\\7:4L/O\n[QHq.?hD7ƨQ;'nѹb75}EqR4GNؐM*ă>~=|V}\$hS%-ck\ro]dAړ\r98	j	y0yBnd%BA0&QB:RJl^QqK_/-A2Вjf5\\\"zRY2mQ|i@gC#V0^nd%1'Q#7-Β1E,D)Ti1C{) l\"ʞd +۞3fXE\nOyz+d\n&v\"ރGcQJ;a*@@ 	ěgjQ.)M8GӁ|X,w+orf'y՝&RHUD\n\\aJdEs^MCH.<>:(Lchin];a|	wX{tZE9yL=:_/n+w;Mc̪~C&'L5oIgH-6QCJYr&\$qaYv);B<\r`a7	6;r.0<g`?#~!W):|=8Ჯp=:k\"BV+}̄2.~_0s4 oX3\nRiy %q>5&.E? DH|8fX;@DH\0DC0-O\rojsNf06%&Gi5@Ptl-6mQH<|XqB)BpnbL\rǌp<h~V,o\npM{jkNw/K箞.0 -a0L0?-n	pb\n\r:<q\n`1	oQ%H\rJ>7:Ĩ|Lj	,@<kB\"##Y1>f'[ozJ1JP(P	,l6H7\r#(q%)Ƣt>\"SO<>٪0բc1\$ȏ-`ЊM;cT\"1\"Ic|N~bʂ= Re?,#!\0KbSǂ6cPPQ RK\$1.G>n;rZf#2r@b!(.c&2w%?''@tD]xjhH2Dd*Wcof8z砷jQ)J0<?)K,,b,Ȓ.Or+qS/ۣIb Fd<oO\"&GO,O%*\0/%\"o&e&/k&_gq62>6B=657RpˤI7o%D8p.	Ƴ7Yg:]:;1'0N\$_fl\r gXxm)QFfc'\r4\0\np>ƻ>C\$0`<#t#	K?\rg@>@'\"HM=,b/eP8baB{3*tTh7)sWCH|<\0%JmF[Fm@vBD,ANt>\"6R*\"M`^2d~s@oҐĐl^`p!BplѪzwjLoF23%lbOJ6ksH\"gͫnq`@P%QK\"fxS'x LEv&~\nLM4 :oha\n>ylY`j@M@,*m)	 \":\r0\"̦@";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,X0P7\n29x@1C(ȟ!S(2l8DB0	o@\r(*3v7.JOs kS(ì(c&	>o;#7΃@@X*D49Ax^;ׁrE\r΀\\z|H2\r{ԌzZ-!^0(4/(* KÆ\\ow(XHzhP5I\"!|\\1.xx6\r5H!\"Z|\rJ7W37H̿p\r. &LJSqƨZbɁL:,M+j'\nz\$w4jjE%P݊b77\nzc;{ %(p	:4 'I(E2N\\1\r-WFcf&T/̌|91{.f!\$H8f >jY?XR(dr6C:r72`/0lu]7f`)DN\\3 4tOI\$P'&^M1',59DnDY0Apt3\0e)D\r`!3	S]	&!0Td)eЁAB7Ki%MCvS4DAI*P\\rVJ[+tQ*,,E3'ϙfF[My>BhڐgCd49\rK@fE4pTJr300cRS:eҡ)\n8ҪW\rd6%\\D\"BnH\n\0PRL-\$ҤU\nTןAT7rqDP:4RPgVIXt,04D4EfA7O/}64}(м&]\"^0PL	I d!S\0PJ#Dc\r	p\rP0F!\0f8\n>QP(\" r\0@Ƀ9''Kt9=<Wbycx8r.	R-f){WL|2*LhmH1xd	CS-1ҍ&@PO	*\0BE6l\"Pm\n*%ZZQk\rx2f\\+*LU	O:GP\$ܡ\$y\"7@Bg!ۥNEIo(*nBѸ]\rhv隸u+#Tm丧Á>E0[m	2y4DD+RI(:im1əe)@BFϱz\$!\0Ip趴K,ECIi/6L@`imż=È4PEhu}Oc0u)s\\،ֶĎY |t&%]^n	R쁖 ƥU]0% mAC2\"()*SRΌ9\r&z.:,B'E!D:OQƄl2*;\n\0ib\0V9DN1/&丛kܧ\rAKMu:F2U,vڏDjhP\rlؚ9\"\$Lr5^q.\"ckNj<>(ǜ	Zh<`Jo3obPt\$5t6.1\r[g<.]5޿z! EɐKԝRdI_\\MLA\$h=ӟ{\"OM`]\$%qoȩ%L\\ys.Lķo+KÙ\n;oPw Hҥ\\Rt5O:-(͌=cw:(~3\\un络.izPzF	n7VxW8g.yK1w_s,jγֶ<7Y~a/,,Otq	&z!NnÎdj3DəU<LʬNg v<\$SbkυD5ߙym]>\0(n\\4t#\0+^&orK:&`0P)\$p3Iê\"bF9?Jf::B\$~Όp\r͂#S\0+B8gkJƩX`B\n#Z]@D9ƨƨ	\0\0gFL]pͫF~fC	lfC-M@aż'Nr&t\rpq1D( F\"όMP4mxpQJAG	fi*b0D;Ĩj\"?O\"gd0(j>Ə0>:*u-jT.\$\rdւ\$C`-ƃI5Niv C*3Sh)\rh\nZJxQKv7nmHf}X8D,0+OiD#oB.J\"M<ObːXf&-ddF(Q^nxijďWO6Nzd\"~w'P*r`6&nW'Dh6^fjd֛	Zľ%0 \rNrșnkr- @Ī@\n.	M)Bc/fv#&\rU.4-&x9x)c'~\r89p&e0:δ";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*э:|m0KĤ=BF'K.O8RxwEّʍ9C\rֿE#9oEhi?ȕ5u4>T@f7N%YXS)6!Bюh+âjH@M(j*%\n2Jנc2CbO3ІJPʙan\"X:#H\$#\"@ഃPïCr1kN.(\$ð%-˰@1ɓ64qLØ3Plcs^6B:@9O j;70Ԋ9\$6Ib6Hh@!B~3:|:5#4TD2\0x00M܇Ax^;فrcP/c\\zfmRUMH2xAl7*m1q3ƬHރ9;j\$m{7`̈ҕД0X	cxTT/\0 cZ6TR CVf]}*GL_/\r\$ˠV8i\rB3zjlȻ%!K1KȈ#2_%891P֒(Ε0XĹ\"x)\"eF8<淔cX3=/6Aͷ P2;f2J4#z)OZh*1\r*2ף ;zbXC/հb([^ֹ;#XTp!O\\@\rzF0d:bu9_Cz&0Ö٘3D\r6BM[jRt1\"8p8pJ @GI#Pu>+᰸\$I&jFb\$]1z_(+8qt<)4nPeua3k2Rd*4IaRvɷ@@_0qq}L̹7?C4W\0004,%BYg)B\rYGq(s%rfJj]`Y@o=Ɲh\"1*'j8\$pКH#\0j02WJc~аsD 9ƨ{p%a5Hf=qJ2GJd_Zt (*čңY(*WIG8!ٮrQH9W]@4Ex˲y!*DԌ.S\nA\\%_%d]ԛvONrAvӰ4LzPU@!䍡 \n5\$k:@w}\0%Pr(1LV9|aV&Q	P	L*Ȱ#P)e6LKԴ%IMTdQ4U]-Jc,H3W \rfز@L1ם8kH RN8ITCIF.@3RU0pP*[ E	ji\n\\0z@PL&m/EB*\"m\"ݗJk@VGI7µH\ndRȰ+1t`&HZ[&%?XUTz3LVa~/{1'-5cJB9aVQ3e/]zv{^)L(d58J``94XL8SL9L9a \rj,\\a13cƎ-(ف+a\r,*3.RD+?w'4Wp*\0q3\nUn7(QsÐye`\reY)2D(_W ʰ8m\"f!]8*epXPm>eFdVsH߶{Gc5gC}%XRUU\"VQ!)N07&'=p\n5ĥ3'\0jm.2JkOAя7AMf1y7%\nTAHEL0Z@\$ضPR_b۞.WAMDB쓷i%σsiPKPg-ÌUH}{NSCżoΝðuJ27V\n@PNPxiֻF@7pp.K-;at9K42:Sꙷd2}(ߒOF[-̱EA{j?W'B~>Dnv @ZHZϠ`gL'LLJ@ B\r䮣|!\">\$8ɒ c&,DJ0(<9\0IL(I`l\$D9>0B:,eFl:kf\0	/v&2-V?	*]D80)\nn^s\r\n4\$Ǻf<Kfl&@EC.x\rcmH/Jq\nÈt\rx&\r?Q&M)OC\"u,K@܍]\$Qhq^%#@u;&q`g1bqnљ\nQQ-bQt]1QL^tK8Ѷ2@6I`n1&nL!fʉz\$<!j2(zb<k\"0/\"&3Tbe\rVd&Iv5	Ϊ	dCn\0ZCcp0Gb:bjۏoa^zbj+{0#J\$aBʌ2udjn\$#BBR\r`DTr|5RxGbY	yF9lR֯\"D;i.Jn2H\n0>n@A,#N0RGC!]3zGl6	5pcb;6U]7#7o\"tLb78):\"!\"+VdN*4(L8,ڔi.NffpBĽ=@2\\c4%P9b<6B%\rgc6)\$2F\"V/;6*h45ЅZK\"7`\";7І\r\\4C*]g~mP.Cz0#B&`";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	ɀ= @CHצּL	;!N2ÎtlRn*<+39I3ą-\n>ܹm1S\"p孀P2\rb򂿃c.P4O@;#7p@\0yM	CBl8a^\\Ϩ-8^>9xDjЌ-2Ȧcx}'4Bo:+RՎH;WT>-'.#\n7-8ipH1\rn`8F_bX;Pη\0 #z50:t66PU\ncێeCfTn;-̨80\"H!8C;	虻bׯh1L&^7\rSL8\"R:7H>|\rւz3\"	,q#/O#ŊMʼxsrr\rgFhZB.PB38m߰*[kmkݼ(!0<lrأ\n,f~3(\r*	 |c`Z4'cp,3B9S+gpLj2;a͆R^![j'p_IH\n\n;\$ &YS!aAI68psU)v\"U\n:*\\O\\ܮK|	b|^Y1\nZI\"c\rYDpNY?%8M\nnpò:5a͒P\r1)\neD,ҘYwS*5C3P%EfXGďRHψQ/L4RR\\KLS+&`][F-h؟\\\n\n()h՚4cK3&mQ 72\nX\nL4)gUH1vHJ	)\n<BS\nA!50B8`n)p`Xk!\"\$p頂JD<Ta*YmPXf=9So(2m	͍!42T(\\E2@j#lE-PHI<'\\Q[\$ptK>02̑#ܑBPSn`A+A\0F\nA|#tSY&#f͙,\r\$\0:KD	8PT2@-cLQ:QdȽCL)&Ks5f9d:Fd\\EѼG.r\r  kej*sȨE5tI\nV+*!Vpt*aWbm	[Q@PG֙juiLe~2̭'\\+41JJ\\SL,򋉌%\\uSș'la4r q~\$ȗ&.!!o\n\0#sm#-H8\$KkP2g\nJf)7H1kBC	\0M])PQ`Iɾ>xCXI7H\0 S!8PRPBa	\rMA1jPөl)ٟii<:j		`J\r_	,xnCJ}9ǰ;#So]90ݰbb\\0\\2*/k`K!#,&whॼ\$>й;&8@`\nZXo1vً{ESD\"|~>ݼlC)ksr5ـMG\0l'aLVwB_mT}Xu2gps`.cZN\nZQ]`6\n@PNRK@or?WfS;%4[3&4ˮ?~j9!zT#xK֪Q(~Oy7l%:t+Dkmq}r~\"u6)42dnJ4̻_3'|'B3PA+nְ\0At+>E{WgB?4Ge>E?7*h0iÈe\"'Dok*Og%L]p̐nƈ.02\\:o='AϲC7r0d]TJoNHpAL(L޼0+7S&N	@e\nbI#\$J/l/0z8=c'qJgP;k\rp/700\"}\"\0P?(p(1Py%F,cF.Eo% ǯ	lkpU4	lʃ1\rLH9nDFic#K=!/RQq@fc2d*hsbAR&a(%<B %(d%ϴ	f(d\re`;-Dvٯ|փL*dF\rV\rd!.4OX.Ep~<ޞ%1a\"02NB'&\"&h]}\r'BNCA8Z1\"#\"FCb:dE[j-q~/0̣L*\\/0\$nǀ#̺Ütnʺ9-(Q6.bf2+&S2\njB:<Q|:{x<\r%%Q'))P̻x0aqf1\$\0-\0h'@d뀸L2Pg9#bR0\n0!@-\"A\$l:NE.\r ";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#BH;'HȌDN?!\0\rl)12X P/>R7#HݍxcK+55SȺpC8Ac0cN8@O!à7,XD49Ax^;pU8\\z Ü!	%|7{;px!7c\ncJK35Z6q8a?!Ss2ȍ2Ĭ3\"5IXƑߔ,C\$[z*;BX6I\nm3픽\rӚ];e4cjPM, P:-: p<)X[ bpc\n'`T &\r+å#BÈ:tH;Ԟ\n\nx+׹\nb@*R㘥MK:wś܌z쿺\nR80hQEP!|9SUdN\"Z@i\r,Fg7!ׂU7ݘlS`)Wa\rEə Ѕ:fDT\"8c\rN8x l1\rRB_f\$H|pTنb8NKPABc\0YbiCxzB*f&DIY-%K:*PNgp2uaIXNX.&7Cc<G`]霐A(A!S\\8R*FHʌjJG5@<\0 Q6'`J[b!\$ew.9³ҜPSxLũ1YA1t  g%-Ԓ3&p.ZIj-e\\]q`l]PC͓)\$\n	B7EYtJpdBAg~A\")D0JI.FTNZSPP\0P	@HF\r\nL`r_!\$:<J]`OVSpPZN<'^|iDȡ؀..utPǩPC2uAd*'̀.OBAP1 3&N!ȝ?<T7B\r×Pζ)NARC>e3D\0C\naH#N,4ʥAT0Sڤ֖R𔥴'\$\nHbBʗ@q'ERbkdB3:DVF ER;4	\r&'a̹t)u\r%9cj0uM\nmj]LD^R)T\0%1q*W,ҝA`+WEC˙@\ro+!\$æeؽ3lmP1@!im4fMXaNRyxpmĘ;c\n;S.mh)H|8tT,)-E\$o\nGHbqD\rI<ZU\0_XoWA\\>[|0d+`PJ+\nN`*TľRFB}e\re̗iC\\(}v\"(A&-MVЁ<Fɳ?<R3cČH\$T̝IѺy+rwYv̕9҈lX1OJ+hNi2ڸ=S0mYR\nEƧԾF:\"jjsmn8VDo3I\nK*@AĴ;sGB<'lGéM`4J!2(H<d)ed%CYK@Tls2GkѣJ=:adZ|v,Jhȭb%?\$zC~`g\\񠗞X9%\\1b4G2*pFim M|D*FxPf-@ydo\$vLB'X\\lJ)L`x5H(M#@+\"LdĤld0##\"fL.mT/RC#F\$,n+	fLp\nl-V(,	&㰅/~\r00z0HvM6Zv6ͤC\"@e#4lN-Òn\$V*6\0ͤ\rLpnG^L&iڤP,ހSR%&hP{NPоtԱvKP=ћH;}P\ngAPHI1p!k&%\r,aP!BO]oIMCOe	.WRL p ̥W\\q\"į11O\r[\$q%eblR2XC|@etS,p&(+B\n\$2DVuC-eAb%wZCJG\n;(GCY)Qb\$RIt-vKby\$Z(\rN\\JROX)n|Сl&q*n0c,U&S'zrb&49j&bWm^?E5.i3ѨFbpzn3%HJHsF%=C8B@8TD DX\"#P5B#3;&#3y7\rc9~3E?4(..S?3z#c`ͷ*2\"i/\r33%\rt\"4E'B3Bs-=7C!@4tOD%?Rg2Ȧ{F4;3r.b44Es\0Cme	)x2#IT%4o77Hn@J:Jm;rP4줆*ԙB\n}pIIG4Q4F0NdX`-#'3Lc7P!\0P\$(S22~EPRU\$3bpbqR#ѹ\$FLmVVS /g\$L@`*?q<t**\$Ð)ú),1,K)S*-!@JJ\nZlMFv+\\O&k\\ tU-5\\Քo\$	\"Q0B:l\rPcD:nxnpCCXl9N5*-g2BkBjTx9et5x#VCU&	#Gら7MV F^I\$u\"\"Z/ֆ\n(hvg5H'j'jmRq.jiR&/4ɔ=CoP6Xwf%pR\0WSh@3w\rpɖ\"e,oopR'Lijb`yr(5r2B'pӮp~3fP71gyX5N4eCҗXf6\rA` E\$-l1	\rKþ%";break;case"pt":$f="T2Dr:OF(J.0Q97js9էc)@e7&2f4SI.&	6'I2dfsXl@%9jTl 7E&Z!8h5\rQz4Fi7MZԞ	&))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㌯%lRH(<	hrV60S%@!@DHO\$ ?D8\$ТPӁS?=PJ0[2ir j|AAƃ\$:C;#~:0A\nC X ΌD49Ax^;tmS\r8\\zP2(@ˢx繡^0׌k<҃S)>	`1+űSbaP7̺϶PHpΊcx<h! @1(H\r`Htz6\0`>*1B \rdhR2߮k#hnP؁U ӵE(MPxK8cfT\r{*Pp9!)vKfd\"Ԍ[@ؓW-z&\r;➩\0(SC;xkS*;!G\"/:(\$)-r6\n2D9r%R[8P0#c~2C| 6C1ra@RRn@@z^[Fu%\0f_yO6HeÆ'DT	q-`>\\{\"x3JK8op@9FLRc9왖ZM6ު'\n\nrOi9	W+@M!2p8TlV:CHq)tj0]a!4*_*p!e,ŜZ`;J\n\\AqM	b`\$^C_h\$|b)<\rh^O'CBS\$ L]OܝB3 q	>:DKB]]WTASPNiԋpЌa\"'s9G'AA@\$\0@`LXs#\0nLqT. n:p@2hL	AC\n73R;#R#ڗ%G(&Kp'mBpӒ@Ws#,_1HQ6N!h\$M\"M19Pe|oL+h'\"&e}C=5\n<)EqO` 3`܍]ԅ}*Y2ajޭ?9;\$+PlE:5+*NP\$ɋXs\0\0U\n @q@D0\"\r5hh݄	`Rx\\xpn\r6U(\"->r߅tCrz\nQRJLC	8w(T2J{_D/㕀k(x>E\nRz5(B\$f\"VejIr(GNGBR;'qPN<3׶QmѾ_urF@HnE# A`aCI\0M7&Q4J0394bu|Éi\"ϊZR/?vbqv{oPT9Kۅ6aBS֡3k<:rnɅ,Itw\rڧSm\nP 0uAPI#%ɪ漎Y3d3m6PY)Ȱ#:gj\ntAp	mwrϋAOl>ͻY#VK1%u%\0q\$ۙ}<6	[ċ\n<\\Θ.4zw1=S lȤU9>d5a2ƔmUJ2*4C(bPsNSx}+[iƟ~Fܾ%լd2OIV.0oƣ(1FޘtwaI98')}`qw]پ\0('`^\n5z+,M!@GT/9yF=oE8:E3փA^=]\n93\r0?x>3-~w7_p̝a<`1~]?0i7&:BCpMݠ\\&\0-Mm߭dRL*æO#PҮhN1,h(}()X9/,\"%Fib3crĜb6o~ \"&@ M\r*6OD(C9b3fY%do	\r&A0Fr'\nv?FMƂlb0LR\n͹ 0(a=-p<\"p|(&\\xѣr׈\n4d#\"\$Fshn~Me>e^Pւjms/p:tj11\"vVm/w\r %G-m1<QC\$~o@jl'%qxZ2q bV\"+q/9h4.9(\"&pQ\"DM-%.ӍFb\0QQEx\n@&%4jc!	\r\rG(~,Q8J#/K\"6Q\$\n*/_\nh0Bez3p,xF\rVeoR!D]3N@ED\r<A˒\np\$aL+`2(p))8G_^ bO.#n/9!C'd-P? fffwc8l<(I!tkKbR\\Lb5#dcΌ;C! Rce;4.vN0n}ec	(ʳJg&sc_=BpeCTB\$Sx \0i%0(D^x+N\nϤz-wD|0Ϩ \\#':mdB/\$1b.~vhm1+<+eHe&V.dˑcmM<+N";break;case"pt-br":$f="V7jm̧(1?	E30\n'0f\rR 8g6e6㱤rG%oihXj2LSIp6NLv>%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,`1q\r{ϱ6HL\$2SҼA#\n͉zz7%h0 0AM!#!\0@;J\0TBI*9`@UCF3:xgU<ax	c ^+ѻp̾'|=T&O+ۼ*cb\rG	jH8_\07JB^7G\0P7r#7\"\"2!.Q Ⱦ66\nuXܜK-8 8 k\n-N(#fO6%k͠Pӌw(0I\r	VG\0::*ZwKBBkbRM,1*&L[>c( H[!PaE=2`Ϡ2c+]DA7fΛ\r#b<\n2|9i+NZcMx⸃-|ۍmNira1Ue=`!]n2Ͻ@V	0.D@59+zA;7cS3f0fM*`=tc:AfM(T*5\\^''RhR9\n2Fx3\nYQA_!6IqD]gA405r)+*Y+-fTZYlDˀ9Y]\n(0T\"'doyȭS`OɔrAU+GRyWhUXs5)#\08xTtNdΆgL#\n*Jaa@\$(+\0dfd!,\$JyR[d)r5_[\00\ngXD(,\r802\r4`@Ii#6zlb ((DNB(kPbx\$Q*j,D\$cCܘEH)9	\$T<H;'\06Y٧!R9?9RqD -HO\naQXO^*d87G*5>22]3I\\88@T!\$|h&!`Ip Ro9'5\$NB\$IqiP*Vm E	ޑƬ{4f>c:K`x4UHeŶ M,ɵW+ ӾA/!\n&(ha+`8g8iUz%\0xٙ;KoՙBmÚP\nļ42Ng;AX{*_TLT_414ۛ)ZIGX CHt'\rcHS\r!3T ̘ C6گQ!ӦK\0gF11vn]t(\\ۡ}\0]*xړ^w\rֽLWÑSw]B1PgE\0iAty҃]t\nOM@BH\r<&O\0s̻M1@)#H\r;-eve6V/zvڤ3K,mmo!˷D'rҩǼa\$p8s{mn{v%LWow\0M8w\"^MK䆏M;z)\$C\$#6W\na_*>\0äsfKre̾-i05\0m`/'n\0N70a>o6(~G|Ķ8;rωkU08<G}&W1rc1sI@(ȳ7ۉ7l2^\r8pB\rLWiJEqDH9kG!dϰVz^\0f\$0718znzyOO/ &o,n\0FwP\0o\\'6\rTN8MƖ̔\0ݰBFO7\ryM6\r/:nZ`ʉP0t*/pv:\"%c)	<*b p{F&\rl%EP\n98ڏD|3P4PvOFx/E2Dr*FjJǔb=	P|q<3\$P0\$P{f/	&'˺:Y4тc*fbcHSb8+πDtj0VqBT5\0x\0`bkfg\\.2Hg,1hFn'TM4uJ/&\rQ`\nIU!3 >Mr\r!g#\"!qy\$qOM`\$2@:f/RLO%`@i2'R\\b: m+)r\n&'pH?TҮP(qle/21KfԈM0儼3Ms%SQ./.VQkPn%ٰc0oz2p\"M/3.JmN<j\r&\"E#:&' :\nq\rƒ2MI//2S~ޒ2>\r8#@\$BHR3j{'4J\r \$1\"=*l:?ST=~U 4rR'\\es7\nRdat`Bn\"q#pL8FjrJ+t;4 !*7T;-\n3T2%D/*CkD	Dcc*,BA˶D?>+TCE,sdF_gH\\JOAZ,B[f#G;\"6m\$DnnΎ0\$>^312(&2&%n0Hk6cM/;\$\$[/0.J/";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oNƜ :nN,h2YYN;΁ Af2r'-K !{:<ٸ\nd& g-(0`PތP7\rcp;)'#-@2\r1À+C*9Ȟ˨ބ:/a62āJE\nℛ,JhP#JhV9#JA(0\r,+ѡ9P\"ڐ./q) #x2k<72'#v/X906Ig2	C0LK(FL#1P+?@`3u##\np2ChCJԪhKBYHGC X`D49Ax^;rWC\\}\"Vm2\rp/^0k(2C: ʕ@S{2%S8<wZӒ:&6&R5q;(9B8.p17\"'D\r+P73?Q:\"a+\nC?1L2pحP\n)x# #Z4C;Z<֫AȰ[Ƶ3\rE\rez(\0:čnG*9C9+UJ6xcE/So7.Ί~H<t'VE.縋עf\"ÒmOpl9ao3F;<d:ŏS22(WHB:OBe[M%6T-*OpC4v_'V\rV34tOBI&.%tJ7!ݠEJqX?\$N-애i'e73BBH\n>Z8\$xg!\\;šb3&КO_șADxAr\\Ks.Իr_Un_ACJo2:0!\"Z \nkGTeN3Kxh\$5b9v&	[6!DVf(p!qxGCb4JLX1f4#xuc يpܻHEq,h3q8n\$mr	D!KjNۍ	=aL)f-	HC\$1\"	H3DkRzF14&IYK5jIc	+\$q/àA!Qx1 .MP)hr\nqws薠<V^\"pqJ\"7PO\naRzP)!PA)\$]<ۊ!)%m%D	%-*\"|P'hyDѐp)hSX[G&`nPAd2rQtxn\n;p	Xcy	MXaM*D:䣚p:*tGҠ'Ar1!3z^@yU!c4@&e*/mCUPa/kUp\"x)@H*,`%\$bXX2+6ieN@XLT԰O@E*Qb~Ae7&`]8dL(Fמ!AjG5;g+ai~MeJ ݿl;*l{0c>apE4Q!ҾvML%nLR`bWqo(01t\noӛ:lKܰ]-װyW)6AŏHRSVd{G]OPT\n!t\rm<c!A\$\0PGmBdц`kXrwLԖtEHsEuKro}zD^FGjɮ(e~il=6b3frDjPOtVxwh)\\vR602·08(fSd8fhc\$凼\0\rc)#Tme I+%~RC,<Xn2TuE2f?)TB\n3^hy3h6 ^(~ٟ%WݾpXzvX/3Lњ8D\0V5wټܐzs*DK*\"%أh7H%oAp_ѡwq&IɾZ(z?ܴj=@PfOh<IjnZt,,ohQ^'<p*lm 1|pB>PWb(V*: 4^7,bd>S`0|v#cBJ1x\0XP\"F/`h0\npʴΔgpP+F< (#CJ&!DU[<1p.K5F:FJbB&жet@[Ll-\nC\rzezm;p\0003&VWfSL%\r{@LuωdfLd\nچ@QD&юoP)GVx<w%vRtm\0\$#@䌢|&K<è-h'q'	&?\rPa\r)\"#1W#жJ4F [%c>JP4\$M&&RJl/&\$MDL|AcBq Aw\$)2r)j,-*f)*\$%1vyR)E\"!)t:*-D'\rBQ86a/lnp!Map0ć\$/&ճ\$M\0{jr6\n17.\r4PVT]1y2	*zƥ\$3W\nvPc傮@P?e')\nsN9@t:&niC\"&Ʋ\00031b:P2ӡ:E\rVi\rqT7) BhZq,\$G 2j,\0\npGBNeEJh*\00\$Д=,b:#B\$hNbbrTe|O(3G\"S#1b]6DȄN&Ɇ8\"A(-vhm8NVBhEF)TjMN\nKf2rб:\"@H&gN0hyOJ*)h6&R.MƋ٦OxLm4@*Z&6//KIRcT&#DGZSfo>Gƨμ	QFUBL.dn3MrzB8n㮃\n	4\ryo-R.p:J.B Sr	\0t	@\n`";break;case"ru":$f="I4Qb\rh-Z(KA{ᙘ@s4\$hX4mEFyAg\nQBKW2)RA@apz\0]NKWRiAy-]!&	pCE#yl\n@N'R)\0	Nd*;AEJKF\$V&'AA0@\nFC1l7c+&\"IIз>ĹK,qϴ.u9꠆L,&NsDMe!_ZG*r;i9Xpd'ˌ6ky}V\nPػN3\0\$,:)f(nB>\$e\nmz!0<=S<lP*Ei䦖;(P1WjtEk!S<9DzT\nkX]\$ٶj4y>N:D.1ܧ\r=T>+h<F.\"]-1d\nþ\\,3:Mbd5N(+2JUC%G#\nT,`	#p0Hȋnxc2p4\\E!y&h0W\$U%cĻhlܨfNd6K#\$󜖼1;)=*cCW,P2\rHpLW4lI+QtյL[̓j\0x0E3:x﭅Q[u3H^8#;C ^.A_3\\!J)Q^0˪\"Kfb0}&K<cZcqe_G&!3%۴C N~=if@<l-sx<,9;oN'+DsR%mijX^ǵ1/{7+_\$/҇E#\$˵bwaK?HONAYXI@R|RT#A<^#\"&ա#\"ȕV*Z&yҠ`sGHbć4lMupt(VˉX=Q	ڻlFI))nHE*a8Jb\$\nDvufѝ|UJB+=om f\$XX|j\rM\0A;i\rpfNYXr7\0\0aZ6+I;b0SӤ7#\"43&F	t B8B>cQ7<HrO?]=ΉDCLM7w\"'S\0\n\r9\$Cl4)F1TO'>'>fwt;P>,ax-쵚,P\\j=c7gS`9_B<V+Av?J[G(ĪFgLG?2Io0\\WEJS*r^IT*SKnMUDܑ((RCkCԈMKa[&orܪ,Q0ڪ\rYuXJ\rc'42dilW*S.TR~2&7!*S(ZNك(0i?pMBHBE#-E[B.2&Z.7+ꭴڋSj]ZlAɲ6`2p!)װG*I41Ax;T%\0ʈ)Be#WUPqF{R}Gާe5Fd۩EZ*o۵*y.=(-T>.ǴIu:#Jgs˂٥/56egDlǦ#  iS5w`j`u@>Ty	\rO9\nR\nC\naH#>t\\4[CJ~tYWHblE*X-HQY+		4&=(2%Je1JSNXӱkI 9]5SuR=]hoE;VnRݯ\"*G\0TZa5LFg{8ק|?OLwKݜJSZvS''Зh%Kɲ??Feq\0)4\\lq衺qtcc\n>`dhMt9ka]\nÆ	VwI\nC:P!x4|3a5A\\Ad橩+,-\n橔pND£)5mc#I!oy\$\"tw;v.Ch/SЕS(:qǦdj}d~ЦkA|^^\rvSW\n\0\n\rllpńn!tJc'D\\#, ^C`?i P45\rH \njF`OtCaD&B`-Ctt/'Jw(>tO|LuT_b|xLs,0L*)a\0gTYp&8IF̢)xDdO\rl!/BФ@,VD(Zʥgh|oi\$&2j	/5*l,oE`p%N˼U< \n`#`(mc&NcEzB\"L\0^1\$qq2cvz+IpC\0(vlߧD!Dn>Nz!q!MR( \02F 24-Tj`0x\"%;qhF\";+=''D'5&a}(1',Cg)r})(bH{Z^b%\\/'@_!,` Y./=Աe(>wa /14ȡ\$H/k:Cs/Avc0\rFNJt_Jn\\J\$NC=IA3>D}cǎ9/v0a#2!\"8OJ!j\$Qe8\$7lda(|-	Э8EDuo&*7F	S G0#zK;\r\nk</2&O6GY=YFT<h2Eb⢁6HI8.B\"ZppRKGIBT'\rTa&\$%pI=2,T3D4\$/?>:t=f<qԆ;)?,RM	3aZf,A:KJ活;\$S\"oI4֛S@ֶQ*\rJB6ElIH!C#!#J,URr@i29\rO+MjP&u1v@u!*s{%LL?=K1STt}N:%`0uURbgIx'RDUDL,*qYXXSY%!>/.lvfB튅85CRuHT6&&-\0iRr~,\$˳&M)LƬB0\01:U+{&_vc\rN;0\"6GT+)p	tn[SeR+\nsf9HʛYv}*6wQg9SUUM1fPCgDQqgh4hj+Oi6Zshk8]l5Ȏ-o\rjlt`t2R}.(A\roBwSlU?G2qWT<hS<0V?rvm<q=W!sQ]V)>L3mƐa	h0;HuIArNv6Niu֟7im.-L4VJO^AV^g\rfNUkw/kQT_FhuzT=ˬ(qw\"Q{Vteebo|l|/}\rLf3wsjz7W~wg7,u7iz0#ޤWsmр%%aEQ!uMZYZ}`.U=>7yx/Ɉv(|xNal^RUspZ-Y\r~eSns\\f7酶֏V\$Cq+s.a\\R(\r\$UqS05[k7D\$vK53Y\"\$穒C}BF9LS\"/Y19qK)R3N'O\"sTWaWCj(\rVSzŊ|e@p:g͉E{\\WwX%\0@\n֠qouȕg#js67Sӟa\$qY?Rh0by6)\rfwՑwD6.Y;mg>nePcQ,T\0A|ylW9.*ء#Ii.b[bdqu(QmR!WU 71I<Z4vMHN\$c_L.K@7fOJI0t[SB*BîZݢE;.вr׬1aVw7hT%Z28bAF|`NE3ČNeIb+wdDK	l2:,, y9Ӡ~(HODyqY1P\\3*\\r]dfx/L)n}GNahm5}򫁘ъջB%H|UM1X&";break;case"sk":$f="N0FP%(](a@n2\rC	l7&P\rhl25rxdB\$r:\rFQ\0B18-9H0cAn8)D&sLb\nbM&}0a1g̤k02pQZ@_bԷ0 _0q^:S\r0n4&b	a6OS5\$7\n\n*8	!#F+o;ICv8.DXܢ1*͗\n-L0<a+y5O&).3:=.ϐ@1x42#JB\r(%\"<jxBz=\n1\rH֦j*JH22)5eH@:#c\"`Cȳ0KԱ87(́LzD)(\rX-#<2HڇN(\r㬄Vȉ|	@A0YBؘnC\nQKX>ԉR# ں*ܦH@SҘ1D+*\0x\$(C@:t㽼/09Șc^8KxDU.2&϶8x!R+Iax7c\\)(Пd7:ͮv8C[+#Pm\r* Ȑp\"P\"2:!.7#΋n:2uDf80Vt	1X'#C\n#cp޿Cî{AV>3'kceCX2)zs[R22@PX\r;0TCh5|5\r2TdY([K#`2o>،ےR/S@VIw뒉01-x-5d*\\(7zZQ_XpYw\rĀ/Exw (\$\"ق(xL\${1N'^Vi02po'\rՑL=R\0a\r<6&h0f6\$``(U)CAPSz1D3/PM\\ԢCt	9I(d\nbyI&5T{U(CȁY/ą\0(\0@@k@\\Mx:<o1ŎFxʮ?Đ.Kr,сI:HF\$9qIDbYK\"%B\"&I7SyǄ\"^\$u*(Y?FZ)+6MGB{z_ uqC:iēRP;49MrlkMju\\*r.eк!9z@qZ7!RI)4!&iUbTbC\r5wREP*d@3ۣV0t	H=NPLP[45⵱tP7Fs,SB\"qx^J\r5\\UR1&C\"\$42vKšXAZs3ftED aL)i11s1} !ys!I>L9ɪ3g[Ah S\\CGBOb#44DG	/#lc!nSA[0k&F#+@I (A@hB\\[{o)(30smrJ=s@ۻJ<v\$_&THM%щιi%%!:ecJjS5:dCJ8ΛKl+-D83#	5U8\n+B1\$G	\rm6D\n#ly;lM!oh62yJ~+F;4Ղ8'Xzza\n&u!fZIi\$ƢKp:F\0jqe)XoZ')HT4.FGhoi(F0)ۡy	4rʤ1+4&dع}e5±ݜosL\r,<\$r\rI?c`鳨\0_d!g7J=#Nlw6/0WT:21DH +9E+_(AR\\UJ y!P*#!LdB3N;@3r zTnYbk+!ֆé3uY:C{g\"d9mr6\"2w.]堓|ߩd6jQYOsvgxRtt~y/V2;<j*_~VNr9g&~E{彴?9z_wsd9osN \$f~;;22:f4Ӭ誑\$*XDTϾ>/c\"<@nHa^(?d	lkafMv89\0<(+e\",>B.2&/=l5ڋCLP'PnU\rvg|%-vN&,ysEhF>0(\"HlȷXuI/(  GT8(v\r~ dmIPbАIbFjF\0Q Rt|\r\"-%\n:A@Bs<ӇYw	'{mn*1u	pe\nc>OРq4)P10.єLBK1=q+hqGkћC&'oR\"<R!t9cw' R2\0- \"kf\rdĔ\"'<,GZT,>BHRNedIYfhB`VHjL'KNjͦlZK\"\"9.T>hINjRNj+%\0\$\"RRLpeN<`FR\rha{ Dr2ލ\"a#M:R8rc\np6/GB\$:l{1	23(P}Rj\$|𹥆۲\0 dP1O.plDq3!`(nP6r:snz:o\r4Jt-&E\rbzEj_0}\n\0qʦ/S<s<Рy:i9<r6;3=97Rjł. l9;6IfU\"RG/n1C%s!	CD/9/4-@t(ėDFJ\$00E\"Re*CC dy-ETGT24\0\$C)g;lRrPI\r1l%5eF\$~F ES`IIQL,]MtķM7L	b@c~\rQ`MrÎqb\$#M|Ϛ\rvM`c\r 5F5k(+7BIDGGB2!Ͽ\$(Cfn\nZjf\"gJQ_XXqNu~DJY	(2#b:\$>nHJq\rphlFIlq67\"CIl)dQ]3(2C8T:c<Bn*i%,B4ދv,4USv-\n0kb	\\h0>\nLѵ4p>Pjfc'p`\n;g\nCCZ\$&BL*<Jw\n\r(`()zl֥nBt@v09\0-nq\0&`6ڄTMp\\Ʀ]C&`cB]mςt&f6U*&'=s<T1!";break;case"sl":$f="S:Dib#L&H%(6l7WƓ@d0\rY]0XI \r&y'̲%9JnnS鉆^ #!j6 !n7F9<lI/*LQZvccMQ3g#N\0e3Nb	Pp@sNnbf.Pl5MBz67Qfn_T9n3'Q(p]/SqwNG(.St0FC~k#?9)9ȗ`4c<Mʨ2\$R%Jp@*^;1!ֹ\r#b,0J`:B0H`&#x2!\"l	_!X@+\0001#Jh,P4L2R@G4i2LBZ5#̜Ƃ6T*-'0p83jNCH41t#X2D49Ax^;smD*\\|ԭJ2#(+3#CjR4px!^鮬h(\rX\$֌),<;.28.'\rCɀP !*!2Ct8]b:8A\rK;cNGx\r1ϱh%Pz992#(셨ѭX0bn=K:8C :'\\:J5Òx8?b7 P\$7E*3c`.(1nފb8964=]:\r*t'Kie\0 (E&l-\r\r^=B(73t 6q#,=	l٧8Bx+}L~.?]u\r.l4ͣA)C7@jQ\0)3cQ^N07\0ITPFXT(~á4-`\n\\fQ)pq#\0Rx	cQ-شA%	/	ĀuEAUjV*ZurJX7,'eYA]l3HBzP\r!4o	(fpI	2J\r᝺K£Kp]߂<7=K@9\$(C4M\"IH \$)hs),2̓IhP*H=HhB!Ȉx  L^9\raҬG\"O`8\0U\$Q1%Մ2]%D04;\\\\B)kIH\0\$l&Țuѓ2Gpb4 R-x\"D<@ :<	\$L<NPA=C6ACN'389H(@|\n<)Hvj:\nBHC)qoH9Hk!AoJSL,n!hQBS*tNLLul(6:hX80Y}r:RkQ|o&OI-%/sf'IFp_=B_/E\\ cÕ/I[t\0˳&ԣ*sk츈/CR'M{5Hj;ROA<95ԏ6-*/.\naw\0]y_j\"[ZQ(쐡wKIr_\n4	5Dls;\ri푬TRs	ܳ8n7\$'-\\gK]&\$Pf`ؚ!lY{# \$0)Ȅ%&\\!GTIjK**@@ -D@H~C Ȍ0N&kaI+d5mg8e\"j<Ƣ4P]|b\nnyǵ*%rl}|&Nlَ!_CH.ځkHV@ػ{p5\\&\rյvgxgvFW}7#>j8bE܎f<u:w.܀1G\$%[̊.TyGX\0MF<W]9񻨂~{	3)O	B7?Ͳ]4h%ԭ;oE4eáP##\$Ƈ`b6.E̺2D{S5QDlR\\4+le.u[i3lV}-jL:?Yg+a/QVOl}I[DZL;;#Da hC!L-\$&oV/_J伤^ttNb4 \r9>\$b<\"`;Non!|&ވbK- V|or5G_^ĀBv	'KF	btqipL%F\\\rmeMPtykU/~܂m00\rpaPbA\rj簳	B{Ё.vKDF´\"DOBH\"L67dІZe<#f0B6BJv	.bl\$*5j\$06AEX=DI京\n	 &N.Bw^ȅI\$)P\\pTJL/&(p)oQ\n1omNq(n3lƆ%f`vk̺q\rc\r2HEА0R'	ĵk\ruQe\rf\rGBq{\"u\$ƪO.5AdJ\"J~AE(RI2(j{%(b\n[(QCq\$G&slK.l\$-Ew?.,.r)/XR;a&͗0,G;%.BfD2;2#p3Ƃx/cb-23\r\"l^Bf>!PrKR*\"R5w#%7K3P7a6c4`\"_Ū̲\nr?vc5c0\",7o7OF.s#8(>/Q1<9d`h9TIkA.k7N%)6\np~RBc/3\n'D70j00.z\n2s94,Db0#E/` \nQ% D7x;c#bpj0^	ze>cnԪ/e.ecbl8\$hbBύ`4zOֽtqKW(N-'oMtN3c2Ꙇ\$qCh^lBh16\\(n2Tf CS\"\n\$~\nZ1`xcL'UV'd	ͭ+׀R@G}3vXz5\080&*+N\$涒c4Ol( 2)C\"P@@Gc򴋖";break;case"sr":$f="J44P-Ak	@6\rh/`P\\33`hEC\\fLJⰦe_DehRƂhQ	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\0P74`Afc2p4Û-S#/AJ*σT\$R&ˋ`Ϊ\n.LBHOTS6QAG9r(@0c9C>rK#\$IC44XC0z\r8a^\\0wi}㜓%\r	ј\r#x|1?hS:ښ?ƅ4@\",W\"*TkFp\\6r3h(@_0Cvcx< [s`2s|ꊰ<֢N*\$EZ32f j{W\n= 3# ֣`2ºQ#ʍO2n?*\"QWw,cJ	?AǮL'puSyġTy}8&oL۪w\$EO1!͘PS\n!1)J[,%a*xx)'\rЙ6yN=t74mlhx7H\r*h\r\r!xDN)n`FL\\? +~B\0p(w_4|HW\r\"cv:9GxxCcW,YpBJOy%B@rbK>u7I!ieP\$*mx%\nn:ЯŔSNC\rіYx\nxaܛ8fV񬵉䶬+\rѬ1t&N)9',櫔ώ	`\nmD6Wa6DO\raC+,Yq8dB.'1ru=gyVLd,vRk/f!ݙXÓ9grYKFHm,6P9Xkh4ֱkV\$(E1m!A\$'̇ X@pF\r\$9RrC5HL%g#gB@V	aQC2JE,%TAu/-RdB\0+(]\rd{,^j0#i\nvZ8n#1ė]c\r4vSWxoX:Nh\$!0*`'vےuu	<	k|RqY]!<Klΐc]\rԉnp\rX5W؁]5F2Q@bV!22+~-6;G=afFAFm]*(soNIADY`¥\$KP\nQ,ea4	i]BT*d:Jn[9NTȡypqӏ,ч+z!\$(4!=Ҧ\r0oÈ9+¥_-bd\$C'p \n@\"A\0(K\0T+G\0R &]/t\"PYK^D^Ůe^s-CUjRp>yb^Rp𢠨2ݮ[ Q+o3oY3!VktI\\pMc;X[EC[(MpMT]W-4HWëf./b0L^UmߋV%v\rӟR V\0P#JL:f^K9#kwr\"]M兠	BLXRr#K\na=<J\naՇ кCj:M=b<+PS+TX`QƁ䑧zAnwPSq3\rbvn&w\"6V<4%R'3T+ڑ1\$(kMڞRGatu]ZX*:h	55l:<,l/D&O!	cwڙU9ֱpM?B&p'i)	)/W(n?k\"nOC&ʈ{6\0p8130B\$R_\rr/pCb-MzHЈǦ/	P>PG\nI,Ы	I=	T)\rN	_F@BL Ђ+Y~[b\$\"0삌V.\r\$ێPw-)iN&AbAFZQ kĞL>(z-oa.%]),Xև'D-z'o*1n_&8B\\ko0	mDIqp&@F7n1⑹0a#4fQ؍:!p3x)|@dL8Hj1\0005F@B9)TG#@r5leL.ʔﭰ|55\"A~[Pt.^t͂)m4ڀcrN#0؅M1(Qj0&.:r%r+a\r׭)2kO*\r*RRK-r-orF1KFmB,QC4&f0	1P11Y\np2)\r#+6Or3Z\0P64>/2в1K|Jk71\0p%17o7,N\0@&҂\n'3>1:Qbd*;D^^ho%0r*5'+҃ w\$~\"-BƸb38mЯ?\$ӑ-D͂os\nn-L34	DHk7օ2NDssiDt6|tK7شvz=94P-%Fbe/^NFS]H~%HDoT?I#j>L\$q1E5+3&MO45ԝ,\"t	m)m.G=:N/n0DH6nt=NF1Jו_HOJ5!4#5׃;FI\rVJ3;'q,3W3'5Z~JH)O7Wɍ\\5Z3\"Z\$AVU^L@I%SGH5UEs`c`WrJuZurbP:u63\"/:Q0uJ0}qEeP0C<Z_Tc=lKEBMp4lЉ8{h++SI\0:4/i'P3kjTű2v`@gb\"bMO^bا\0\\\nZ^\r\rBb\nemE\046fwjp6/qΑ6g;ĸ.TB΢m`q\0[n9&ZnQ.Cdȏ%Uv!I&*^YE8R1(|,eT FQރ\"!&m.'7k3t)#MQ wf T&k~LA?걣1ȓ0G5]ozF@GA/o	!EPG&X@xGaf\rHIY &yR \rPNeՆN\nO3)yg*\n\rG3!fvCŎTx\$CX5خIv@lڨ\\FRi9{K\rx:]XQnhnNl[6H.`";break;case"sv":$f="BCŖ!(J.! 3԰#IeLADd0i6MQ!3Β:3ybkB BS\nhFLqAd3\rFqt7ATSI:a6&<b2&')Hd7#qu]D).hD1ˤr46\\o0\"򳄢?ԍzM\nggfuRh<#mw\r7B'[m0\n*JL[N^4kMhA\n's5Nu)j\$ܢܐo*H#2J@)ʫ):O*O\$\"C8!`P:lb\"41rݵK!#P!셼8ʴ;.n(ș')ʵ\nrcL6P(OñH(!clC.*p<\rj:ΧҀB#:q*M3S\nK8&P\0\\HD44Cx[71(A{h9c\0J`|&0?'x}!`ԁ\0P4jH:c3P; U25\rr0C2`P7,@ɼ*H1(b>9BXK͎_1=~4\nCI4*1`Rݽl@P:(iL8⮶.ছ	\r0YP2(P<d(茔l:w9q\"`Z5hwbq	u%4/\0 n-4q\\|t=bEx;z\$ 4X\"zA\n`!b7ޑ*;+8j@<yn)+^Ӱ!9<[QLe8 N8#Pyg͌p-\nN܌4\n	LOL\nSAs2fIKp47eQЧ@HѕK`Pl7t!څ\"S\0h=,\"QK6BhPH!R_U[BsAM`n bTrC*u\0#\rtwHACXJHP~A :`qf\$Z2AhU:W+\0謕W\n|rlӭ%K&,xӆR@شH`-#2`6FP< Q1j@&53LINcXf4gad\nFđpXtfM#bc!ĒjA\0P	@ΡHP8s-\$:b\n\n`)-D\n]L||Cxtl^&]QKT&(/r/qKh aL)iQ3@4rRkl)QBlNF؁NJPi\"汥f\rsTM=܂(2)G<3\"QJ]Pf@])A d1!t\0 -SLQU8M#Vw@X!Β<\"bG	d()PZKa%!*vs^;ɱ%0QFey	:(Ix\reB  \n@(@(R	!8#{xR\nP ptct0yP<R#]9s{Ϡ[:DDSEhae^zLL	z}))%ߴTZ\"[]=\0[7QK?CøF!Lf(3R(Ϲ=')7ӌL\$䤴ˆ.++;/ORՈY\rm}-=w24	(b]-yDP9Li.+_z&L7DbxC\$7NO1>KxG<T:-*AIL:\r9/EFXn}a\"әF:W>2cSH1dCμ>޳(MswLCg4b:_bmiv1\n`)-#GLa&CaͶ#<ߛ\\%}IK3AòndچlL\r%ց6Q*nBCβߋbeI.+SQ̉-^xqYjz|Qpi¹f^R0\n1/ńla`>V6)3=Zm\rX=,x[ҲA	36ދoH\$F6 J25Ú,N|=s(aQJxW8K4=baMuQһ6_3=ޱ^	 Mq6f}~&7ڒ7yO{BhnOK\\AB@ШN.Oj}\0/| ^6	F#Iz2E64\$^wJf0(ظO6GX!h%N>O\0{\0.,g^F2\n\0pp,.N/\$-P\"\n0\"\"i#P#V9\rf'l\nh[&?\r\"5pP\$R0\"FԯQ/&\nϊngtZLHLF \n&g&\r\$26\\lĨAF'F6L\rbp]^\0CbBQ`cBZtEqfq156-M\$d1M\$n#'-M#Qj=1;|\\2q @@4\"MWο (o2 bz(	2CQʎFQt0f!Ď,FX:2TT.	eo'f\rb-\"Pp%&2 R(KbhdH\rV\rd\nMn\$(5+4*h2\n(\npB4-BH Ҷ'RZ#쓲jgRR)|f}MF/&H@KC0r\"΀\"rlJc(1+4K>:S\$:Gtt&CiHn/f#)(E/,\"b,o\00댙8N8.`z7c:9|,V<~F#\$\$>؂ƾ2H<//=>m{H%Ѝj#.j+:6*K\$ bӊysK(g~[@z<x\r@";break;case"ta":$f="W* iF\\Hd_+BQp 9t\\U@W(<\\@1	|@(:\r	S.WAht]R&\\I`DJ\$:TϠX`*rj1k,Յz@%95|Udߠj䦸Cf4~Lgp:E5e&@.quW[\"+@m\0,-һ[׋&a;Dxr4&)s<!:\r?8\nRl[zR.<\n8N\"0AN*Åq`	&B%0dBBʳ(BֶnK*9QāB4:Nr\$Ţ)20\n*[;\09Cx0o7:\$\n5O9PEȊRZĩ\0BnzAJ<>p4rK)TB|%(DFF\r,t]TjrD:=KW-D4:\0ȩ]_4b-,WBG \rz6O&r̤ʲpՊIG=:2F6JrZ{<CM,s|87-BH;#`2\$;9P@1C(2àӎp\n\\)\ncZ2,7XP)S>}\rʵiZ *#}r\"9)IJ6l\"D,nrYҲY%괙w)m;\\uucy%\0P2\rDNs<s#rO!MKO?#D4e#0z\r8a^\\tMC8_@PAxDlI46 }Blx[^LER.\0;Ƴ;2ni\\_WT|L5JI9-'N!x̔m\\:⾛ba5TDtR!.+@g\$!7\0|O(cc1GLF}0Xra5C\r`D*`FP+F @r\n췂 e:`u|/gȮRp!:˕)!9h={(!3U+>I989[ST%I<L+\0*\$lNK֬W)JHK̞E-6XCa?ǰ0(Q	\"UAl-]5p^-n#i ,[<֓J:]	.Ȼ	}6)L+d)]&ئJN6ۣho\"rЮ_rs g*'d)gjH>s?B	ò5FY)pn3PyOېcaWP!C('`e:[29M:|gjx:\0,\n-;%v%6bQlb󤯾OJ\$D%*&u!2fY`&SP2^L`&0rGlc0fcH7;\na=@Ðt>Ź\0PbFypn8ZjOja.ic̥8*դM%k\n\"0jLPsK}[(@.sn7\0%ꈕ*}#y3YJu.ֺbݫw!ݸG\rƪ'eP(FG  b},TC[O;[v\rD(O\ndR)>ErK6P.	@pLH91V@C6\0O.Ih\ngI\0Ο	\0abV^ď%HCHNu|\0((R1*[=F(0~zgz4\"e?/@7\0]\"͇1TC;8L`JC\naH#fa-ܾ.ֻ\n2a\nfo\$9L\$fK3Ok#Vgo\"ZYJ/0P[y(1Y0ޗj\nGTP/N7\nKmRRaSj(}*:b^F*z}]\\{nGq};8YOe!53@HmXq?、7B\r!JRFO\naS\nosg\"2'ԍV\ro#}U`vmH9ARmpCL[^xt<\\\"qʦ2e(5/}pD4sQ8b92;Ktxʊazڤk`|[؈p \n@\"}&_~.믍I0.+Q֣\n91f\\F+ݹq	VXKgEi(S;i)PC\0\nj֠^c\\b*m\"Kh0Ȑز	I\0<|F\n*و\n\n.(ڰp)\nGJJM:}-kԚ4\$\\ \nLe=BmR P|?Vm\n t#M  @ѭz8 hŭ\0t9Fb~\nHe \rJx&hYG\rom\r hX4^f=eOʜF4/ޣBnG'4X\nmj4\"\0De@@=JVDаhp0&4e`(Q±R+`QxVj7ʖ*^	//T:il@	IN3p!MVّ:ZҦa`RIJK˦	\$ ,i[eb\0zcg(BЪ\r#p\"0#qYR	-(ʘ8|\n`hLN<p>҄h.\0R㚸h|oz,!7,˺,aG~'Q.*Ҥh^g,_222Ѭ1.r!\n5I\\10nMmpj\n\r0r@ò/=0I?0!ШC歓O0s/1Kƺ99ߍ:Fs3\r;3&l74HC4zHC	:n(&|BQBb(B(@eYr64ۂ~t#FGKL5\r聤0ia4\n1,tH=8@Fm{.\nQ0p:LQ1%o:b_D`p,~q>~D)Hؖ)|.&%Pc؄|ܯ[:|sAD-	\0mH+\0M0G53;8Gt=F؝CP:X\$3h\0g#.JSPtC6,Q;EJO5G>(V&\$)L-2'T\ngW:uVU1/LK5d5SLq?\$U4%\0ߨW|RT3hF+\0M ం5I!>-EtJFu/\noF\\]c[u[<c`UohWTUV_c.H\rV\0,oCqaTmoʓƗ_(eEP&J[P5_=3Wbr4sf0%b1={??g=vMQ0CWD-36{H1iY;uL⾊:SjWluiPl[B\nOR Vb񪞒D#oh)TnU~o&)O5TRڢvq\\De}D59a3\"'bvp#f};;}3p''W25U3lGTHAERhVw-u4a?j3:N7WR+cvUosYV	֏\"tq2gVP@ʭ 6Q	jqi7uRAeHU@S]x5E`{aD3f줂Ww6-4-\0Q\0H{*r&\$^HP3yzR&!Wd6MnNaZwOri?6~TXR\n\n\0ǈ\$gфbw}}WFUQ3Xxkn[t]z`HB6wn6yYP){dstgnqT+NJ}*2x~ْhlĭmߒ}ZQ&[y\rp|@<9c}Xױq6O2zYOMYa\\\rr[YNl㋍&OP|Ђq-OYCuu[Iq')ׯmى|!swdsewiHGv:X%=Yḩ1ESp\"A`^7ݛ|zJ#94iBigt#	^_אy՛O7p/6ww_z2Yf9QѩNS})acZa1\$MCSdz{Y%EH'Z8zЮ对ebXׯZn!4s딺o\";+w{/\"˫kͳDWYYg{:HR%;Ck!'Ѳ\nPuZo4F\n[37DRZ%\"U{/jk]\"rQ[dݣ7	\0ɟÇr:`&^VaMTѓD	BE.:u8¹y\ruY~8f8mStT--.:9:uE׼WĭuHi1Y\\FBR@Y\0hd\r \rfJLDԶ'̅<+T\rR@Z̎+3􅴑^=)7ʽyxi\nSlDN%S{`3oY9X[7j#zPߞVɢ	\r<RT\"1 \rf|CYA_ТR@z'Q\n\\tVH\rK~gL+AlTy0?\"2_j<ߙIrzM[eԉǮs䎩,Qߓm\0PwNZgSJKܡf+ۊ-FYY	Wyl;n~\\pG,wQYxh,(yIm8~|I\$N.ʄ\n<(z&խ& I'\r2cM@RxwevD`߃J\"~	Q?qGdt\\Xa\\40ZFȌz(5}4\nA\r@>b\r|4J%Ǐ8	P	F>8 \rF>ogݫ*Qq\"XYPt	\0@	t\n`";break;case"th":$f="\\! M@0tD\0 \nX:&\0*\n8\0	E30/\0ZB(^\0AK2\0&b8KGn	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/\n58BNH\\I1rlHÔY;r|ՌIM&3I h_QB1,nm1,;,dE;&id(UZb!NP74Ac2p4UĐ} ZnZR:6SIwB2uap::8JTE^RښX,a7(Z kCN* l7AS1o*\0þΣLϝDC XxѓD49Ax^;püs3H_CtEL@|6/|3N#l4px!};u2*\nYh̳c1M!qLS?}-F_#\r:?Lo#%v\n\0Cnq0>A\0d\$,t\\!K(pAf\$iѹkaًjN6υ\"'hp@(f!6'2ead¢0S9*CDL\nn\n6%u]]1#GICr~vVC6ZONCvTmQRprvI+l\$Flpһ%\0F a\rŲZ\0S\n!1\"WnB^^+~MAtVSۆ)22K1ɼ,q:N̵w;V\"s|L!1=YA>;@k\"\$CA.9\\\\zMa1,C!+%vQ[Ezz3bK0*3Vm^'\$:f7Z'!e4TC\rKQT9\0z\r31Ja434n`nh4|ϩ?'편@h[qOa5c~#Ps=,Vy	 8؊uSY#%1׫+`/ڹ+5;VBM8Lt:X띀wvN҃;`HU1< C\r:<P.ۗc<*nyT,jنEs>E.l+Rn8d1@rlt0klqA*\n(Үr_n\$q\\c\r:2UL\ncv(:KuG0\0\0(1\0TI	;r_W3NQU**&\\xsP\$appͨ'-\r!`D\reuONJ0dp!) IQ 	5a#g\"֯jE\0p|.j\"¬cߓoԲUV\",+#`c[nSY\n܇E|VI%'YMAfNPGkYK\$е~~O#\r\rlҫ9Ѕ*g)PKh>-DZ⧔R +	nBZ\rϱ%l@4Qٸ	̻0Tʋ]	vcɐ g &mtrjK81GuxNT(@/HA\"!>!ZAzzHg8(;D֓+'.f\$7iXٖϿu(ePN)&u'|j4xR,l3S%c:B\$w5/bh;TRC^v>-YvR)J=Ѥ@nJmkNtAV&FHO.dppa]ɅKqa=]/1譫O.:<9)H,ƋK\"?*dKIȜ/8{MBlįd@>^	|Rc\$\"g&		g)E{gi	N~)HN\0Vnnt\\CL8S|cwbh?DSEbDܣڤ\nE8^ܢav8\"\"~ Pv*J(FW\$ 	\0@\r\$-PNj.56:OO%`HFI<[&'e\\D&n6K:U#0H;;iDJ.p8:l.f1P\$[q,Bo5pЦƣcDADegƂk\0\r&O(;9\reF5h¾9C(\ro\n\\\"9fq\n.D^iBK	/#+fg:[±?\r{P9hS%Fn9~G!q&brn&iФDDPM.fn1YŰ\n~|쳑+#\neS\nk:A02*Ҍ\\r.R|,/m|\r.z*LN+-FƢC*VXVMx<H|&LX(STb{E4,5E2PE&<3L652'Rv0[1PK*A {99LXef̂0/~`S6pS+.1\$DS.ŸRBF{6og=R9(\nS8y>gAXs=	@o =,)B\r5*:T/=ɰ~4I=\\↣BR3nq	\$_I=e1-HD\$qGdec*OPKFnJPhS<4z4Y8rKt(xD~TF47>5oWTW,rVd8ȐƓ T,c{~ŉ\"ީ(=Q93QB	REg&uIξ,\nTMN0hTGhVk3%Ҏ*e-s8\\DHXTn~LJ4TaBdZYIR@24C0\nuus1[@ rG]KZp{8Ё\\o^*5C\\uQ`WA4[_Ӑ[]}]\\!]ubi\\Z-C6^~UF's[<#VC|VU\nG0otSDFT)ggVDaAu[og*\rgv|W^sZM4	T\ry_\n\rd+U\0Ak6rmlFOl+Rj9B놚0e;D1kChuCE?7	iʣag ˗\rijaqfSrs7Z\nJW)qANWOnnɅ[rR[Hon/D4aCX+ryw\"[lxewQkQ\rG \nq\\wrs6ZYiWww!u֥tV{~ A|0xG}MbSbLcT3yy|tith7F8My\\\\tNGVi;V-\\z|ZQdtB_|6guX~EoG)dDUXW/tmWԕiI2)O68mL\rV`kZ8ׁ/3%bJO\nˤ\nZk@(H8Mwj8oiLee-][v0q9a@WVe`Qb\0QaDyhK5WoAHM)ÿ2t2`x A`'fq@S'΍j[FtX/t샊kDR|mnfƈ1<'`7hB=ͲVoOE'Di+FL\"#NDL訂v>m23Ry)n;󣓽O3.s9e:1J\"\n\rHgxmS(|[z8:#zf(ř\r!Z#fæ5&nT	8<:7?/JF/+8rl\r@@Qr+#v+`/\\;if	\0@	t\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`	#p\r#\" %Ð@&#Ҷi84p厣p꧵PEE(AC|\nx@p\r++CҠȀ7>#&9p\"k5ø:\rzt9`@\"D3:xa\r#rJ3_V^(ڒ̒ǒ|(́B8'b*=##C\"\rl\$όrx*-tАdX\"-.7@:.c8&PȅOX:!.B5\"\\mҒ8[K0 x\\-}235#e	w(9Sۜ P #떠P4-HϥpFԹbSp'X&BrN7@7+Q~)<a|~\r\\)+:|V>k/(9JV^b2t82EQ;.s%A'hY&oc3,+;17=#[鈉(~+_\0*k93ǀSt'>2cR2'lؒP4>uOk	<[ l(gdl(,7xH'в<& >@H<	`JW'aɘ6\r).ň.dH\"FlEÙ8l\\2&7AO[Aa ŖG	eq9qɘlY2Cy\0YbjC	C2[8:ķ#{!b\\<fd͒heW\n^+倰\"w\$eܳ_1Mj\"Lj\\	9#~@K<@7(`HqƄ60փ`g&~6']I̘)|1R-tJ<]\$.\\&'\n7BsHD\$*4\0EKȼF@\n\n()\ra.bS*4|b2fdPZ\n)v\\Cu=#A(aL)j4m b_0hjKY p v%\\%x@# h	(T'UYb2FV9DcF=0w0	ts|fO\naP֑\$cT\rDҢExJN8u!4fBPY\$vuk;gzV\nmGGg3ӁꚊz\r m`G\\GJ*ZSN9VbX1A}<'\0 A\n4@ʿ'=_B`Ex8+R 2FT\\oᤤ\"IΆ'ʍ9'L9Ad:DWZr/\\{쑱H	{b%\$8W\"zqse͘{sL2D\n #	^טD\$,U/h:~P!*d8>[f'r^\n_S4mfzC!5,QG&^R{-n_p#9C%;QG,͝.znmq%1dpafo	6^\r	&u^QF.w50C	\09[̶]\n&0j5Pl=-U\0^U]̓c>¹\$Nf\0\"ňE\r1X0Ϥbss\$3Od~s\rnTC呩vqOմ4ұONWc_fJîΎezS\"Ml>zixx.ԉe\"\r40PDCƔuH\"Hj!^PHnq:zT_#Cը HA|\n^\r#\"C|FE2/|fO/|ߧH5pG#S؅'%<g:H\nǸBlrb:٥\r\$\0OdZ/Tebƀ*`̪|諸F|FtL;)5_PVGslBNsHOOBM##7\0@abrx\0	70鮠0z&zdǧ0ۋ\rlPq\rIۭ\"NCG*J\"T\0qb\"\":.bVQQ\n8&\"#ubl;\$ҚB7gC	<)\rhڱ(n 0(#mשf\r_x1-­pFcPbёpg\"1|@\rReJvGGogDoAsoX\$71fhþ\"ҪQ	4q!+hv]2L:d\\!bX\$~\"WDG\$rRJx/\$C%L`]\"ZI&\$r@'rў&f)ur&oc.\0B&O+I?Wpq+ΔODöq	0a	gN:_,8޸Y/LލR0&bF0dU/JP0.p5/21&a 2H36^Q@d\rVak.\nZdn)+\\̝2.\n/9#9pg\\86c\"STu|H\"ç#o;*dLޢe;fڠ\$BhPzk92(*:\"JF+&j&E,ЀA\n1Bs0.QCtPB#GCDr񘛥CN3fpP\n\0@Rt\ntJ4:ce!>n&ܑ@8bN \"\05(#@K#L\r简ʐJq/B̒FeT:jJ#::V\r`ml|j@";break;case"uk":$f="I4ɠh-`&KBQp 9	rh--}[ZH`RdbrbhdZGH\rMs6@Se+ȃE6JTdJsh\$g\$Gfj>Cf4jSdRB\rhSE6\rVG!TIV{ZLʔi%QBvUXhZk7*M)4/55CBhഹ	  HT6\\htvclVYj׶ԮpNUf@;If\r:bibﾦj 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@:H;#`2#(;X\092(:\r6\r\04\"VUZz4M2]+4OrҌF#V8uTix0GB6#u̥5ʋMYߪLżĤ\n13@4Y0z\r8a^(\\0xYc8_i9c2Fm=Ir\\MQ٢:!^0JXƐT*A q	J\rZ]*\r&ęm8k\0BcH;sKcx<fC7#ȉؐrr!/kUps}Mfb\n5Ge!s=]!3SN(Fm1ԏ#8}3xI12*{EcW.FDbɶN@I1=&z߈pA)|jRR~FrlPA+nd=##@\"|AQ DT1!E8XNռ(twv,\0Bcsr4\n`yt+*Cn<VR(Ћ=2!H f`эn5F'8P>q:,D1`V@ra7Eؓb\"gVC +\0004`eL7p\r!BPBF10Ȧ%bumA-ڻ\\rHh#rA!KQ\"kon,\"I?(SYJkYeiH\\K6@74*^P:9S>3	9Nc*^=/鷗lNǱ\"i@]Udf9\n\"D. d\$ICXc\$S.wD48]p	TTvXjUJ8tz.H?@u%ҩKI/`i9}YgKSJ\rC\\tY7TwFi\n ~R\$,j'U4ޱjOI-?¦ZS{=)غŶUKZa%db*\"13#8&Q\nB3)cNtWISab3M/J[ ަױ8KRj;g6;Im0948 niQE9v.{\"?TP#4	@e!7%K2}qѡF	fJP%\0_q,Z9tGa{h^	Pu=^j^U>S;e 9\\IU:喴ng)yOf>r4oC(rK`ɏF\noJ]1¸T'*,θˉkuJ|r\niFY's.iQEʆ#1pF<b9E+̰L4orFsH:\$8QJG\\tmo!~Rs9֣s}	ͮ}X\n*9\$\$ZPr(Z)o+V̖<STB* Z,elWJPJv{_<pΦ[eHMv'SA\rŴ	yQ%}\\^7hڕAAMaDl#@y#\rKfPNtJ([`nʔi[\"xvXסbG3DXw2IfE(}?!|2?F^*	`ਠcH5Wpzy/簃(D[5krFqkߋ+ȭ3:wHkMEk\$&JaWB]g!Jq|FUD=dpuəvUg%<\rY5.?ʯL4η, #CLO.\0F\$fh8\$f~ﺁ|l!Ȝ1(blHD\\77R@,gd7gqPbq<`),:\"Qqz,~\$Db>#AL율k~,_7b,ZeQĦ`Q[\n#%n*l-\\p8(Τ(-LTdBRjl\$p'򁪊.[i&]j5\$V`\n 	*}ed*-qGHH\$*M'h7)twdQbwk<x%mNC&T)Bwl\$J\$#\ndJ\$ox Qsg!Q\\qM}+\rxSM\"3e SFI	r'vܑ \n#Q2!QZ#v JGR&q;)g6L8tHT<.hzBb,*d;y'1@!#c#E'.L\"!F(N\\Barp,cdO\"FÄ0:hH8Ki,破2n,4F%Lư52q'i-4-+*)=1\"H\"m1,\$;j\$-e\0(Ow2q/\0Ȇ4EsQ3AcW5n%M\"d.V=Pmg2jo%ԉB<}%C*\$@\"Sb	_s=.7n1:s|b:4/;\$zymo>FL\0PBr3f-2r31p71SA3l\0SomBB/7S?D+DoiCSa2jL5Bn#	]7)1wF\\_scF0,t6\"M1\r¨ٲHs*A#IIԒJjPFJ MI)>?K#ԞtLM25KmMGJXN24q3QF#PGKTH5n-GE5?یR({\".<nHdoIkZ<RMNS-UCj.X,BP\rF|,HuY\n.ΜS&pQa	Р1G'8H(p5W!@0gMHaP-_QG4A:V7uDTT\$'+`q\0	b4EB<aBp󺪆Pc,Lh]qx1[dR|SpB)?JGcFScLĪpU1PvfOOd4}e5!N&rVk\"D'm=mV?fXֽnG>46@%`.1LĐRE*Bc\\:\\WdL\$ۭGHtP9_(merw:Ed6{?cXP7uVQʛSG 1TUl^Ry\rjW#a!Eykvy+Mlw5t9Bxv\$DqE:Lg=cx)%ww4+}Q 5dWH-w[Ik~lUGG*Ou;%oF%,)vX4A3L֎Oq 8/1V+9\$=FƁk2uD[ ,hQvLIx]PWME~dxi=ӊG>MS\0u*7*-ILg=L+8P\"U[cXAc>\nZ4z7Ζ]/C3eG&r1Y&~:'1}dG76Fu\"\nat%%D ED[gK97'Z{\$&'5\$1&h&&/fn\rR}=tdކȅ\0,6zi{E8USqMSBC85HusXWwYQ0Uǎ)y8WqB6y˟l8B@9Lr0L/5U۝Iٟs/\nF@@Y<`j\rJUp .nOAjf ]],p:_4@ \r!Bsg|)Eym-Q,ʌKKnp1ʏ%HSvh?yt(T-9vPGBQBc%ig:";break;case"vi":$f="Bp& *(J.0Q,Z)v@Tf\npjp*VC`]rY<#\$b\$L2@%9IΓ4˅d3\rFqt9N1QE3ڡhj[J;o\n(UbdaI¾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&!\03Z09ʤH	#p0Hȉó?((2(:\r4x	\njh-aC3&IN%h\"4'>a3R-Ȇc(q́F! bk:V\0P(2\raUD_M3#p kC,ACPP1p0j;(:\"9pXED49Ax^;plo3p_}ߣJ@|603?#k4^0p2u/^	h	K)Ft @VZ+`ά;\n7]7071\rȇPc:@ NĐI`0ZJh(\rT6(BTJv7o2pJGb@V:c[_KKgS<erEzP<:,Бfm(i\$:2H;YkJ(-a13P ti/kg%%*o)\"`<fP0@3pDH!b'~v2f&*n\"韑Ƃ@)vk q 5k:K(\$n>;6\0ҁa\r!ʿ\rAT	XdWb\\npPb[VVnIDG^Wb\$/(tcGq5Pt\$'0 抃C-\0(,p@Րo@¢nml7BƤ__A4lbA! B}9-H2#_\r;Ve؋Wmx\nV%I\r4\$a%6c((ҨJ :gh A\"ߌC#tZ:V.pTk\0`L0sIB,92DaQ\$l\\ wg\rBE7<e5Τ!*m!36θB6ޚ\"#ztbR\nHB%#ETh%yOL]t@P&/B&MHsɡB+_Cpp_	!F<֢h3i_8@D6\$'LN-\r *CLsfβH3H]\n!:\nFVz.DĂ@\n&bBʐ]4F \\A;\$KQ@(D%LQRq\"nEڲkI.	\$H<Ƞ\rj2\n+S;@U0~ⲻBXO\naRXNgHQ4vL'DH-tvLD|v#)\r\rX#cRcOIQ,=j`Z}8XrUgV\$99]u&b%X	VA4]TtJbWȓSFfbNX\$ق	JA%>3k#a\r\$\$-rz>z<v\"B{:ӛ`(GhEiidϺ|ZM	R\"Nj|u:Vm(+d]M\$at{}7<D%]N\0Չ\$gW\"bhs\\J%&)ڃ-<L#%7zNQC|sŜ\n_dFPI'MRߗӛ:UentHXY\$\\I+#)@PR^Ape2)^DBD @BH;GzW\rA3I`t.xC92IbNWA\$igvJL<wh1YF{wpgAA#&s})xI*2x\n?܊@\\l2܎۲EFү{Lb@~\$bl&6ڟ){sRV]~Y/Gp;zM7I^[N\r\$s\0|NZT뙦 6\\`lW'|p6:HҢF-B)i%jS%#-*w.ʛXbgit\"D < FLtbLo\$ff'<Mc688ChAK2͠nlM>06/HPltōD\0)sg\rOHOҀ-eP0p~PHEܤ\$__\0#J)fdDC#	)9_q<1/\0#E\nd.L(ADێHU&E\nj	\n1(&lAJG:bdrv*XH-,nH~Dj߆iUB,ߩp\rQCpG1K-W16n~p\0P> !{!*(r\$vsR\"p&,`lOKp7.`8DLoUavB,V:&4- .y!1\$p[r dr|vM(B<J(ɵ#RYkM19VԌ&1r~l l]Ҿ-I!Pr-R,L2m΀R#\"y/рp R5r/s1/\")+13.#ŦM;#.nTNU3#ʹOR*45MdIW<f|%PX04's5e :T*=6ld{)smH0%CJ -\n'TlM|G\$G0HڰtJIE` \nq`J'01mb>h9f5(LR+x/t\\3>\"i-ZchfT&{BH6dX6\rI{g̀(Ѿ12BU7Df\\ʱo:.\$,1HQF'H7|\"6&,igJtbWLJrpDdΨ\0DPIAxj(-'qF`i8td35N\"N0Ӯn%b~‖+4D1\n	FDM\nX\"J0 lS,4j&Ј-WIӦ!3@ބ@+.֬dأ:Z3:Zrg\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\$ð6\r# @9.xc2p4\\eb%ʁP˽DF/@[r)3'=(Q6#ttdlR> \\.D/ri&\r0C@:t㽌43.!x0c1xDΙLsd)SC֡xMI\0DYS1,ZZL9H]6\$O]NJ7\r&ギi,Xuz=ZScx<2K7#ȇPE%.1\\ZY>6tQE@e=sU9O!@5x2A{zhH)N]	i N夤g1i^iZ+,n.Aɱx5}L! HYQ\0HPE[bۣg)x7MNb=`eTO GO\rdsSP*ˁBAM9cH7L(-LSC;dcH26#2\07pٔKCH\r^8?YCf\"]4t-Y~eIG4ܚz,gD	rAU\r.C`tDqLпCu\$#Fs<'0\0Xq錠brG	&\"tDd+3h3-t\"\$r#b\nJP]rB&B-^-ќj63TQN	򔭕ºW`,%YO5f%C(xu\nA8.}	#bT \\ 0\\Q#tT\$ Y݌3cEhLFʬ_g}\09ظ!\"1WZ{#L(SQcLPL*ਏ@\$#&`\"CI %̘9	.h \\9\0~8<EL:E&ap) 	8|]ԻQI`ˈ_r\\L	,&!+h(VCnoUEb9嬰Li\"\n7'\n,ט2Z:(P	L*@bLY27PD@J\"\r\"6)JgDOB0T\n|~͜L)גqYxOG46)m!<\nrxNT(@-A\"pHZ#äJ)pYo	B(T\")0!?63\n⮻%:-?Xz&!eF@(H\r`B{J	ݝBq`O\n3--jPZ)6#W38~Y;GFC	F&R0):N:L5'4#ɹ< YDڧq-U&6J6xO'zAO3Rz-\"l]a4:D&~FLTU7XFq	C^ٷxT#eꐷP 09Ӯ{L(e\rG7nSroa9kV.嘓sX,:3tPYp.Z=Lë6)z8Kbq=@mg	pyH'E+<V;(bݖǡBQ̍E5XV1v![_zz\"Z_2^\"6_t.1f9rW\\'fe	9cMDG4e:[M'Bbf%as8,'UX]\niZz	sc\$TZry^Ǚ;~~GQ~|a\rh-~Mk-iwB7lsW^VfCIMLB\"dZTКBBjeٙ*dGܴ\\jeS]C&e2Ї~x{=^ȩ;ҝ/kW~k&\0BP&%\0R/CsB`-eV^NN*H\0o1\0*0VЯ,.n(}䧭	ͨ#<6ϐ\no0fPΦ\nOP_\n-/ULlF%\n/>ppN-\rHbp\\`\np0Ѝ0N\0Gu0DHDѰn*ZL-+2A>k4,m6+*-!\n\\(VJQJ\\n rh@h4\rzĘ 4.Gɼ&O@@\np6,Pb\rZ\n&8(#b::ma0AfL.A.76Ofi63HvB!*حĤ_&ȏRCIm%n|!x*l&rjϖ4jk\"Ez@LLi\"Z\r.A\\kl2\$pDMd\\ \r\$2pΞ_G#`BbPG\$Tkhh@03prFff+ϖ> G.";break;case"zh-tw":$f="^%ӕ\\r|%:\$\ns.eUȸE9PK72(Ph)ʅ@:i	%cJe R)ܫ{	Nd TP\\Õ8Cf4aS@/%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%\0JBH;#`29X@7A\09 7L9ؿeYYqb*\\gA2@1D?-c%^Rpr\$)NP2\rH5% B%dU1M+%3@`x0D3:xm\rYWMat3^8#; ^)AT\nt[Tex!t%4C TtW!u2s\\K/ï3SX\\1H@P7@:\r8Cx9|1#aJVǫd]9FJVUZ`1&C9zr~M) D#9v)8!v]!*Vsē'UFsޔ8*\$nvq\nOg1\nbeI'&\rYd[M~&/؆%x|v'c~PAWt9cH7MWV㐊;g#H3 6#2\0øn\r4>\0!%TX!.z#vHLOH=QjXe``SA\0Y^NRL+i!@!B,6@e@b	.1TzelKɉ35B\nT ,8crA\0X.hA`8	:QIM@C UE\"F1LA?PTA,*|ϡ(֒#z\njĵ>e@F8'Y=h5uo\"s7>Wλ׌pC(lr*3`\\\$3TJB-!L:5Hk(b9d\0FTM! q	E\r	,yD5\r	|6D(.vBb\0)u1CAJ!%\n(X\rKZ.s\nxWٟ>^a0+u<#ln/1?Ĩ) xkN]I3P&%ra\\~91\"hM Qg%Dsg@DS!'3,͗Y'ZUbK,D_B\\N\$9#N#,xS\ncExPLeHTxU,VAFB7 kP(D,BG&{a\"QcFә/Q\0:jSE\0(iT'@BD!P\" E	4/JRrwк1t[+(d4uIq8E*jQ6>6x49`	*9Ă-š/qH\$`E!K\" \n&Q\n%\rh8DqQGuXĘUHo	UQB\"I\nN!<\$g[h,`ωB\$T6UMLhS1͋\$Q6ؾѢG.eH|LCeٻwvQqV.&Sq2/5JTj)/MfҁbD\$\\F'+tBXT!\$c\"j'ϙG^\"0	\0'wP3H^''Hv))a\"32\rl(!le+n'%@\\~DS1#[	96`_'aX8PƩE#)I{i[%!l%مޖ}24hG83NXeayR+o/\rFSNbY@eFN(;}{˖LxvFCM\\Exdy]o/P9\r@ly\"P~w[Azw^h\\pZ:%h4WFь\n(.7a䎏3,75t}soOQ}/1WVzGX1la2߭n6HK+Pp\$ԉ00CaP5\"V!%n3ʀS/j%bBˍR5v҃z#(WN*6pfӌʘH4@φiBc&6c0а-/pd<Am/\r0Pi1As-PaA,Ɔ&y:!ܜT'7b\0Oqpd\"2O[\n!mFmrV\"~*?-M{\\7b%6GG[\rDƤ#-A/as/͎Q\$%[x/'-LSaO1%)IѤIAFqD #	 j	\rmȃFADo\rC\n@i	+H\$DZAaz#pma\n.(C0HR.5eM\0\0D\"\09r:#~5JC(\$N\$HA\nZ@́B0)#JaRKraK(죌08֨>r̼S썦/B4)!:3w|.rL,aS.%n[\$S%s@`aF/&x8,;\r0o]'sN|\\ҏ:ء2#|ғt2n.vH\n*0\n`\"\0`\n&2'!R3*333f'\nɒSDT<ALg\")\\* ";break;}$Ai=array();foreach(explode("\n",lzw_decompress($f))as$X)$Ai[]=(strpos($X,"\t")?explode("\t",$X):$X);return$Ai;}if(!$Ai){$Ai=get_translations($ca);$_SESSION["translations"]=$Ai;}if(extension_loaded('pdo')){class
Min_PDO{var$_result,$server_info,$affected_rows,$errno,$error,$pdo;function
__construct(){global$b;$ng=array_search("SQL",$b->operators);if($ng!==false)unset($b->operators[$ng]);}function
dsn($sc,$V,$F,$D=array()){$D[PDO::ATTR_ERRMODE]=PDO::ERRMODE_SILENT;$D[PDO::ATTR_STATEMENT_CLASS]=array('Min_PDOStatement');try{$this->pdo=new
PDO($sc,$V,$F,$D);}catch(Exception$Kc){auth_error(h($Kc->getMessage()));}$this->server_info=@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);}function
quote($P){return$this->pdo->quote($P);}function
query($G,$Ji=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,$n=0){$H=$this->query($G);if(!$H)return
false;$J=$H->fetch();return$J[$n];}}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;}}}$nc=array();function
add_driver($s,$C){global$nc;$nc[$s]=$C;}function
get_driver($s){global$nc;return$nc[$s];}class
Min_SQL{var$_conn;function
__construct($g){$this->_conn=$g;}function
select($Q,$L,$Z,$yd,$Hf=array(),$y=1,$E=0,$vg=false){global$b,$w;$ie=(count($yd)<count($L));$G=$b->selectQueryBuild($L,$Z,$yd,$Hf,$y,$E);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$y!=""&&$yd&&$ie&&$w=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($yd&&$ie?"\nGROUP BY ".implode(", ",$yd):"").($Hf?"\nORDER BY ".implode(", ",$Hf):""),($y!=""?+$y:null),($E?$y*$E:0),"\n");$Kh=microtime(true);$I=$this->_conn->query($G);if($vg)echo$b->selectQuery($G,$Kh,!$I);return$I;}function
delete($Q,$Dg,$y=0){$G="FROM ".table($Q);return
queries("DELETE".($y?limit1($Q,$G,$Dg):" $G$Dg"));}function
update($Q,$N,$Dg,$y=0,$ph="\n"){$bj=array();foreach($N
as$x=>$X)$bj[]="$x = $X";$G=table($Q)." SET$ph".implode(",$ph",$bj);return
queries("UPDATE".($y?limit1($Q,$G,$Dg,$ph):" $G$Dg"));}function
insert($Q,$N){return
queries("INSERT INTO ".table($Q).($N?" (".implode(", ",array_keys($N)).")\nVALUES (".implode(", ",$N).")":" DEFAULT VALUES"));}function
insertUpdate($Q,$K,$tg){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($G,$mi){}function
convertSearch($t,$X,$n){return$t;}function
value($X,$n){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$n):(is_resource($X)?stream_get_contents($X):$X));}function
quoteBinary($fh){return
q($fh);}function
warnings(){return'';}function
tableHelp($C){}}$nc["sqlite"]="SQLite 3";$nc["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($dd){$this->_link=new
SQLite3($dd);$ej=$this->_link->version();$this->server_info=$ej["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,$n=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->_result->fetchArray();return$J[$n];}}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($dd){$this->server_info=sqlite_libversion();$this->_link=new
SQLiteDatabase($dd);}function
query($G,$Ji=false){$Ye=($Ji?"unbufferedQuery":"query");$H=@$this->_link->$Ye($G,SQLITE_BOTH,$m);$this->error="";if(!$H){$this->error=$m;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,$n=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->_result->fetch();return$J[$n];}}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$x=>$X)$I[idf_unescape($x)]=$X;return$I;}function
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
fetch_field(){$C=$this->_result->fieldName($this->_offset++);$ig='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($ig\\.)?$ig\$~",$C,$A)){$Q=($A[3]!=""?$A[3]:idf_unescape($A[2]));$C=($A[5]!=""?$A[5]:idf_unescape($A[4]));}return(object)array("name"=>$C,"orgname"=>$C,"orgtable"=>$Q,);}}}}elseif(extension_loaded("pdo_sqlite")){class
Min_SQLite
extends
Min_PDO{var$extension="PDO_SQLite";function
__construct($dd){$this->dsn(DRIVER.":$dd","","");}}}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($dd){if(is_readable($dd)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$dd)?$dd:dirname($_SERVER["SCRIPT_FILENAME"])."/$dd")." AS a")){parent::__construct($dd);$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,$tg){$bj=array();foreach($K
as$N)$bj[]="(".implode(", ",$N).")";return
queries("REPLACE INTO ".table($Q)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$bj));}function
tableHelp($C){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}}function
idf_escape($t){return'"'.str_replace('"','""',$t).'"';}function
table($t){return
idf_escape($t);}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,$y,$qf=0,$ph=" "){return" $G$Z".($y!==null?$ph."LIMIT $y".($qf?" OFFSET $qf":""):"");}function
limit1($Q,$G,$Z,$ph="\n"){global$g;return(preg_match('~^INTO~',$G)||$g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($G,$Z,1,0,$ph):" $G WHERE rowid = (SELECT rowid FROM ".table($Q).$Z.$ph."LIMIT 1)");}function
db_collation($k,$ob){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($j){return
array();}function
table_status($C=""){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') ".($C!=""?"AND name = ".q($C):"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($C!=""?$I[$C]:$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();$tg="";foreach(get_rows("PRAGMA table_info(".table($Q).")")as$J){$C=$J["name"];$T=strtolower($J["type"]);$Zb=$J["dflt_value"];$I[$C]=array("field"=>$C,"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("~'(.*)'~",$Zb,$A)?str_replace("''","'",$A[1]):($Zb=="NULL"?null:$Zb)),"null"=>!$J["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$J["pk"],);if($J["pk"]){if($tg!="")$I[$tg]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$T))$I[$C]["auto_increment"]=true;$tg=$C;}}$Fh=$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',$Fh,$B,PREG_SET_ORDER);foreach($B
as$A){$C=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($I[$C])$I[$C]["collation"]=trim($A[3],"'");}return$I;}function
indexes($Q,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Fh=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($Q));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Fh,$A)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$B,PREG_SET_ORDER);foreach($B
as$A){$I[""]["columns"][]=idf_unescape($A[2]).$A[4];$I[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$I){foreach(fields($Q)as$C=>$n){if($n["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$Ih=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){$C=$J["name"];$u=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$u["lengths"]=array();$u["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$h)as$eh){$u["columns"][]=$eh["name"];$u["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($Q),'~').' \((.*)\)$~i',$Ih[$C],$Og)){preg_match_all('/("[^"]*+")+( DESC)?/',$Og[2],$B);foreach($B[2]as$x=>$X){if($X)$u["descs"][$x]='1';}}if(!$I[""]||$u["type"]!="UNIQUE"||$u["columns"]!=$I[""]["columns"]||$u["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$C))$I[$C]=$u;}return$I;}function
foreign_keys($Q){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($Q).")")as$J){$p=&$I[$J["id"]];if(!$p)$p=$J;$p["source"][]=$J["from"];$p["target"][]=$J["to"];}return$I;}function
view($C){global$g;return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($C))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($k){return
false;}function
error(){global$g;return
h($g->error);}function
check_sqlite_name($C){global$g;$Tc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Tc)\$~",$C)){$g->error=lang(23,str_replace("|",", ",$Tc));return
false;}return
true;}function
create_database($k,$nb){global$g;if(file_exists($k)){$g->error=lang(24);return
false;}if(!check_sqlite_name($k))return
false;try{$z=new
Min_SQLite($k);}catch(Exception$Kc){$g->error=$Kc->getMessage();return
false;}$z->query('PRAGMA encoding = "UTF-8"');$z->query('CREATE TABLE adminer (i)');$z->query('DROP TABLE adminer');return
true;}function
drop_databases($j){global$g;$g->__construct(":memory:");foreach($j
as$k){if(!@unlink($k)){$g->error=lang(24);return
false;}}return
true;}function
rename_database($C,$nb){global$g;if(!check_sqlite_name($C))return
false;$g->__construct(":memory:");$g->error=lang(24);return@rename(DB,$C);}function
auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
alter_table($Q,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){global$g;$Ui=($Q==""||$md);foreach($o
as$n){if($n[0]!=""||!$n[1]||$n[2]){$Ui=true;break;}}$c=array();$Qf=array();foreach($o
as$n){if($n[1]){$c[]=($Ui?$n[1]:"ADD ".implode($n[1]));if($n[0]!="")$Qf[$n[0]]=$n[1][0];}}if(!$Ui){foreach($c
as$X){if(!queries("ALTER TABLE ".table($Q)." $X"))return
false;}if($Q!=$C&&!queries("ALTER TABLE ".table($Q)." RENAME TO ".table($C)))return
false;}elseif(!recreate_table($Q,$C,$c,$Qf,$md,$Ma))return
false;if($Ma){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Ma WHERE name = ".q($C));if(!$g->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $Ma)");queries("COMMIT");}return
true;}function
recreate_table($Q,$C,$o,$Qf,$md,$Ma,$v=array()){global$g;if($Q!=""){if(!$o){foreach(fields($Q)as$x=>$n){if($v)$n["auto_increment"]=0;$o[]=process_field($n,$n);$Qf[$x]=idf_escape($x);}}$ug=false;foreach($o
as$n){if($n[6])$ug=true;}$qc=array();foreach($v
as$x=>$X){if($X[2]=="DROP"){$qc[$X[1]]=true;unset($v[$x]);}}foreach(indexes($Q)as$oe=>$u){$e=array();foreach($u["columns"]as$x=>$d){if(!$Qf[$d])continue
2;$e[]=$Qf[$d].($u["descs"][$x]?" DESC":"");}if(!$qc[$oe]){if($u["type"]!="PRIMARY"||!$ug)$v[]=array($u["type"],$oe,$e);}}foreach($v
as$x=>$X){if($X[0]=="PRIMARY"){unset($v[$x]);$md[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($Q)as$oe=>$p){foreach($p["source"]as$x=>$d){if(!$Qf[$d])continue
2;$p["source"][$x]=idf_unescape($Qf[$d]);}if(!isset($md[" $oe"]))$md[]=" ".format_foreign_key($p);}queries("BEGIN");}foreach($o
as$x=>$n)$o[$x]="  ".implode($n);$o=array_merge($o,array_filter($md));$gi=($Q==$C?"adminer_$C":$C);if(!queries("CREATE TABLE ".table($gi)." (\n".implode(",\n",$o)."\n)"))return
false;if($Q!=""){if($Qf&&!queries("INSERT INTO ".table($gi)." (".implode(", ",$Qf).") SELECT ".implode(", ",array_map('idf_escape',array_keys($Qf)))." FROM ".table($Q)))return
false;$Gi=array();foreach(triggers($Q)as$Ei=>$ni){$Di=trigger($Ei);$Gi[]="CREATE TRIGGER ".idf_escape($Ei)." ".implode(" ",$ni)." ON ".table($C)."\n$Di[Statement]";}$Ma=$Ma?0:$g->result("SELECT seq FROM sqlite_sequence WHERE name = ".q($Q));if(!queries("DROP TABLE ".table($Q))||($Q==$C&&!queries("ALTER TABLE ".table($gi)." RENAME TO ".table($C)))||!alter_indexes($C,$v))return
false;if($Ma)queries("UPDATE sqlite_sequence SET seq = $Ma WHERE name = ".q($C));foreach($Gi
as$Di){if(!queries($Di))return
false;}queries("COMMIT");}return
true;}function
index_sql($Q,$T,$C,$e){return"CREATE $T ".($T!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($Q."_"))." ON ".table($Q)." $e";}function
alter_indexes($Q,$c){foreach($c
as$tg){if($tg[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($gj){return
apply_queries("DROP VIEW",$gj);}function
drop_tables($S){return
apply_queries("DROP TABLE",$S);}function
move_tables($S,$gj,$ei){return
false;}function
trigger($C){global$g;if($C=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$t='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Fi=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$t\\s*(".implode("|",$Fi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($t))?\\s+ON\\s*$t\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$g->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$A);$pf=$A[3];return
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($pf?" OF":""),"Of"=>idf_unescape($pf),"Trigger"=>$C,"Statement"=>$A[4],);}function
triggers($Q){$I=array();$Fi=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("|",$Fi["Timing"]).')\s*(.*?)\s+ON\b~i',$J["sql"],$A);$I[$J["name"]]=array($A[1],$A[2]);}return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id(){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($ih){return
true;}function
create_sql($Q,$Ma,$Ph){global$g;$I=$g->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($Q));foreach(indexes($Q)as$C=>$u){if($C=='')continue;$I.=";\n\n".index_sql($Q,$u['type'],$C,"(".implode(", ",array_map('idf_escape',$u['columns'])).")");}return$I;}function
truncate_sql($Q){return"DELETE FROM ".table($Q);}function
use_sql($Tb){}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$x)$I[$x]=$g->result("PRAGMA $x");return$I;}function
show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$Ff){list($x,$X)=explode("=",$Ff,2);$I[$x]=$X;}return$I;}function
convert_field($n){}function
unconvert_field($n,$I){return$I;}function
support($Yc){return
preg_match('~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Yc);}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("distinct","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"=>"||",)),);}}$nc["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($Fc,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
connect($M,$V,$F){global$b;$k=$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='".($k!=""?addcslashes($k,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$k!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$ej=pg_version($this->_link);$this->server_info=$ej["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,$n){return($n["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
quoteBinary($P){return"'".pg_escape_bytea($this->_link,$P)."'";}function
select_db($Tb){global$b;if($Tb==$b->database())return$this->_database;$I=@pg_connect("$this->_string dbname='".addcslashes($Tb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->_link=$I;return$I;}function
close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function
query($G,$Ji=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,$n=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
false;return
pg_fetch_result($H->_result,0,$n);}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;$k=$b->database();$this->dsn("pgsql:host='".str_replace(":","' port='",addcslashes($M,"'\\"))."' client_encoding=utf8 dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'",$V,$F);return
true;}function
select_db($Tb){global$b;return($b->database()==$Tb);}function
quoteBinary($fh){return
q($fh);}function
query($G,$Ji=false){$I=parent::query($G,$Ji);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,$tg){global$g;foreach($K
as$N){$Qi=array();$Z=array();foreach($N
as$x=>$X){$Qi[]="$x = $X";if(isset($tg[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Qi)." 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,$mi){$this->_conn->query("SET statement_timeout = ".(1000*$mi));$this->_conn->timeout=1000*$mi;return$G;}function
convertSearch($t,$X,$n){return(preg_match('~char|text'.(!preg_match('~LIKE~',$X["op"])?'|date|time(stamp)?|boolean|uuid|'.number_type():'').'~',$n["type"])?$t:"CAST($t AS text)");}function
quoteBinary($fh){return$this->_conn->quoteBinary($fh);}function
warnings(){return$this->_conn->warnings();}function
tableHelp($C){$_=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$z=$_[$_GET["ns"]];if($z)return"$z-".str_replace("_","-",$C).".html";}}function
idf_escape($t){return'"'.str_replace('"','""',$t).'"';}function
table($t){return
idf_escape($t);}function
connect(){global$b,$U,$Oh;$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)){$Oh[lang(25)][]="json";$U["json"]=4294967295;if(min_version(9.4,0,$g)){$Oh[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,$y,$qf=0,$ph=" "){return" $G$Z".($y!==null?$ph."LIMIT $y".($qf?" OFFSET $qf":""):"");}function
limit1($Q,$G,$Z,$ph="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$ph):" $G".(is_view(table_status1($Q))?$Z:$ph."WHERE ctid = (SELECT ctid FROM ".table($Q).$Z.$ph."LIMIT 1)"));}function
db_collation($k,$ob){global$g;return$g->result("SELECT datcollate FROM pg_database WHERE datname = ".q($k));}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($j){return
array();}function
table_status($C=""){$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')
".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return($C!=""?$I[$C]:$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();$Da=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"],$A);list(,$T,$Be,$J["length"],$ya,$Ga)=$A;$J["length"].=$Ga;$db=$T.$ya;if(isset($Da[$db])){$J["type"]=$Da[$db];$J["full_type"]=$J["type"].$Be.$Ga;}else{$J["type"]=$T;$J["full_type"]=$J["type"].$Be.$ya.$Ga;}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"],$A))$J["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$I[$J["field"]]=$J;}return$I;}function
indexes($Q,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Xh=$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 = $Xh 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 = $Xh AND ci.oid = i.indexrelid",$h)as$J){$Pg=$J["relname"];$I[$Pg]["type"]=($J["indispartial"]?"INDEX":($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX")));$I[$Pg]["columns"]=array();foreach(explode(" ",$J["indkey"])as$Xd)$I[$Pg]["columns"][]=$e[$Xd];$I[$Pg]["descs"]=array();foreach(explode(" ",$J["indoption"])as$Yd)$I[$Pg]["descs"][]=($Yd&1?'1':null);$I[$Pg]["lengths"]=array();}return$I;}function
foreign_keys($Q){global$yf;$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($Q)." AND pn.nspname = current_schema())
AND contype = 'f'::char
ORDER BY conkey, conname")as$J){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$A)){$J['source']=array_map('idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$Le)){$J['ns']=idf_unescape($Le[2]);$J['table']=idf_unescape($Le[4]);}$J['target']=array_map('idf_unescape',array_map('trim',explode(',',$A[3])));$J['on_delete']=(preg_match("~ON DELETE ($yf)~",$A[4],$Le)?$Le[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE ($yf)~",$A[4],$Le)?$Le[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function
constraints($Q){global$yf;$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($C){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($C)).")")));}function
collations(){return
array();}function
information_schema($k){return($k=="information_schema");}function
error(){global$g;$I=h($g->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$A))$I=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
nl_br($I);}function
create_database($k,$nb){return
queries("CREATE DATABASE ".idf_escape($k).($nb?" ENCODING ".idf_escape($nb):""));}function
drop_databases($j){global$g;$g->close();return
apply_queries("DROP DATABASE",$j,'idf_escape');}function
rename_database($C,$nb){return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
auto_increment(){return"";}function
alter_table($Q,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){$c=array();$Cg=array();if($Q!=""&&$Q!=$C)$Cg[]="ALTER TABLE ".table($Q)." RENAME TO ".table($C);foreach($o
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$c[]="DROP $d";else{$aj=$X[5];unset($X[5]);if($n[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$c[]=($Q!=""?"ADD ":"  ").implode($X);if(isset($X[6]))$c[]=($Q!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$Cg[]="ALTER TABLE ".table($C)." 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($n[0]!=""||$aj!="")$Cg[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($aj!=""?substr($aj,9):"''");}}$c=array_merge($c,$md);if($Q=="")array_unshift($Cg,"CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($Cg,"ALTER TABLE ".table($Q)."\n".implode(",\n",$c));if($ub!==null)$Cg[]="COMMENT ON TABLE ".table($C)." IS ".q($ub);if($Ma!=""){}foreach($Cg
as$G){if(!queries($G))return
false;}return
true;}function
alter_indexes($Q,$c){$i=array();$oc=array();$Cg=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")$oc[]=idf_escape($X[1]);else$Cg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($i)array_unshift($Cg,"ALTER TABLE ".table($Q).implode(",",$i));if($oc)array_unshift($Cg,"DROP INDEX ".implode(", ",$oc));foreach($Cg
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($gj){return
drop_tables($gj);}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,$gj,$ei){foreach(array_merge($S,$gj)as$Q){$O=table_status($Q);if(!queries("ALTER ".strtoupper($O["Engine"])." ".table($Q)." SET SCHEMA ".idf_escape($ei)))return
false;}return
true;}function
trigger($C,$Q){if($C=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q)." AND trigger_name = ".q($C);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){$Di=trigger($J["trigger_name"],$Q);$I[$Di["Trigger"]]=array($Di["Timing"],$Di["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($C,$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($C));$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($C).'
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($C,$J){$I=array();foreach($J["fields"]as$n)$I[]=$n["type"];return
idf_escape($C)."(".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):"")),$Og))return$Og[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($hh,$h=null){global$g,$U,$Oh;if(!$h)$h=$g;$I=$h->query("SET search_path TO ".idf_escape($hh));foreach(types()as$T){if(!isset($U[$T])){$U[$T]=0;$Oh[lang(26)][]=$T;}}return$I;}function
foreign_keys_sql($Q){$I="";$O=table_status($Q);$id=foreign_keys($Q);ksort($id);foreach($id
as$hd=>$gd)$I.="ALTER TABLE ONLY ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." ADD CONSTRAINT ".idf_escape($hd)." $gd[definition] ".($gd['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($I?"$I\n":$I);}function
create_sql($Q,$Ma,$Ph){global$g;$I='';$Xg=array();$rh=array();$O=table_status($Q);if(is_view($O)){$fj=view($Q);return
rtrim("CREATE VIEW ".idf_escape($Q)." AS $fj[select]",";");}$o=fields($Q);$v=indexes($Q);ksort($v);$Cb=constraints($Q);if(!$O||empty($o))return
false;$I="CREATE TABLE ".idf_escape($O['nspname']).".".idf_escape($O['Name'])." (\n    ";foreach($o
as$ad=>$n){$Zf=idf_escape($n['field']).' '.$n['full_type'].default_value($n).($n['attnotnull']?" NOT NULL":"");$Xg[]=$Zf;if(preg_match('~nextval\(\'([^\']+)\'\)~',$n['default'],$B)){$qh=$B[1];$Eh=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($qh):"SELECT * FROM $qh"));$rh[]=($Ph=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $qh;\n":"")."CREATE SEQUENCE $qh INCREMENT $Eh[increment_by] MINVALUE $Eh[min_value] MAXVALUE $Eh[max_value]".($Ma&&$Eh['last_value']?" START $Eh[last_value]":"")." CACHE $Eh[cache_value];";}}if(!empty($rh))$I=implode("\n\n",$rh)."\n\n$I";foreach($v
as$Sd=>$u){switch($u['type']){case'UNIQUE':$Xg[]="CONSTRAINT ".idf_escape($Sd)." UNIQUE (".implode(', ',array_map('idf_escape',$u['columns'])).")";break;case'PRIMARY':$Xg[]="CONSTRAINT ".idf_escape($Sd)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$u['columns'])).")";break;}}foreach($Cb
as$_b=>$Bb)$Xg[]="CONSTRAINT ".idf_escape($_b)." CHECK $Bb";$I.=implode(",\n    ",$Xg)."\n) WITH (oids = ".($O['Oid']?'true':'false').");";foreach($v
as$Sd=>$u){if($u['type']=='INDEX'){$e=array();foreach($u['columns']as$x=>$X)$e[]=idf_escape($X).($u['descs'][$x]?" DESC":"");$I.="\n\nCREATE INDEX ".idf_escape($Sd)." 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($o
as$ad=>$n){if($n['comment'])$I.="\n\nCOMMENT ON COLUMN ".idf_escape($O['nspname']).".".idf_escape($O['Name']).".".idf_escape($ad)." IS ".q($n['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$Ci=>$Bi){$Di=trigger($Ci,$O['Name']);$I.="\nCREATE TRIGGER ".idf_escape($Di['Trigger'])." $Di[Timing] $Di[Event] ON ".idf_escape($O["nspname"]).".".idf_escape($O['Name'])." $Di[Type] $Di[Statement];;\n";}return$I;}function
use_sql($Tb){return"\connect ".idf_escape($Tb);}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($n){}function
unconvert_field($n,$I){return$I;}function
support($Yc){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)$~',$Yc);}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();$Oh=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$x=>$X){$U+=$X;$Oh[$x]=array_keys($X);}return
array('possible_drivers'=>array("PgSQL","PDO_PgSQL"),'jush'=>"pgsql",'types'=>$U,'structured_types'=>$Oh,'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","~","~*","!~","!~*","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL"),'operator_regexp'=>'~*','functions'=>array("char_length","distinct","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"=>"||",)),);}}$nc["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($Fc,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}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;}$m=oci_error();$this->error=$m["message"];return
false;}function
quote($P){return"'".str_replace("'","''",$P)."'";}function
select_db($Tb){$this->_current_db=$Tb;return
true;}function
query($G,$Ji=false){$H=oci_parse($this->_link,$G);$this->error="";if(!$H){$m=oci_error($this->_link);$this->errno=$m["code"];$this->error=$m["message"];return
false;}set_error_handler(array($this,'_error'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return
new
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,$n=1){$H=$this->query($G);if(!is_object($H)||!oci_fetch($H->_result))return
false;return
oci_result($H->_result,$n);}}class
Min_Result{var$_result,$_offset=1,$num_rows;function
__construct($H){$this->_result=$H;}function
_convert($J){foreach((array)$J
as$x=>$X){if(is_a($X,'OCI-Lob'))$J[$x]=$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($Tb){$this->_current_db=$Tb;return
true;}}}class
Min_Driver
extends
Min_SQL{function
begin(){return
true;}function
insertUpdate($Q,$K,$tg){global$g;foreach($K
as$N){$Qi=array();$Z=array();foreach($N
as$x=>$X){$Qi[]="$x = $X";if(isset($tg[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Qi)." 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($t){return'"'.str_replace('"','""',$t).'"';}function
table($t){return
idf_escape($t);}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,$y,$qf=0,$ph=" "){return($qf?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($y+$qf).") WHERE rnum > $qf":($y!==null?" * FROM (SELECT $G$Z) WHERE rownum <= ".($y+$qf):" $G$Z"));}function
limit1($Q,$G,$Z,$ph="\n"){return" $G$Z";}function
db_collation($k,$ob){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;$k=$g->_current_db?$g->_current_db:DB;unset($g->_current_db);return$k;}function
where_owner($rg,$Tf="owner"){if(!$_GET["ns"])return'';return"$rg$Tf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$Tf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Tf?$Tf:"rownum < 0").")";}function
tables_list(){$fj=views_table("view_name");$Tf=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Tf
UNION SELECT view_name, 'view' FROM $fj
ORDER BY 1");}function
count_tables($j){global$g;$I=array();foreach($j
as$k)$I[$k]=$g->result("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($k));return$I;}function
table_status($C=""){$I=array();$jh=q($C);$k=get_current_db();$fj=views_table("view_name");$Tf=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($k).$Tf.($C!=""?" AND table_name = $jh":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $fj".($C!=""?" WHERE view_name = $jh":"")."
ORDER BY 1")as$J){if($C!="")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();$Tf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($Q)."$Tf ORDER BY column_id")as$J){$T=$J["DATA_TYPE"];$Be="$J[DATA_PRECISION],$J[DATA_SCALE]";if($Be==",")$Be=$J["CHAR_COL_DECL_LENGTH"];$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$T.($Be?"($Be)":""),"type"=>strtolower($T),"length"=>$Be,"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();$Tf=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)."$Tf
ORDER BY ac.constraint_type, aic.column_position",$h)as$J){$Sd=$J["INDEX_NAME"];$rb=$J["DATA_DEFAULT"];$rb=($rb?trim($rb,'"'):$J["COLUMN_NAME"]);$I[$Sd]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Sd]["columns"][]=$rb;$I[$Sd]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Sd]["descs"][]=($J["DESCEND"]&&$J["DESCEND"]=="DESC"?'1':null);}return$I;}function
view($C){$fj=views_table("view_name, text");$K=get_rows('SELECT text "select" FROM '.$fj.' WHERE view_name = '.q($C));return
reset($K);}function
collations(){return
array();}function
information_schema($k){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,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){$c=$oc=array();$Nf=($Q?fields($Q):array());foreach($o
as$n){$X=$n[1];if($X&&$n[0]!=""&&idf_escape($n[0])!=$X[0])queries("ALTER TABLE ".table($Q)." RENAME COLUMN ".idf_escape($n[0])." TO $X[0]");$Mf=$Nf[$n[0]];if($X&&$Mf){$sf=process_field($Mf,$Mf);if($X[2]==$sf[2])$X[2]="";}if($X)$c[]=($Q!=""?($n[0]!=""?"MODIFY (":"ADD ("):"  ").implode($X).($Q!=""?")":"");else$oc[]=idf_escape($n[0]);}if($Q=="")return
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($Q)."\n".implode("\n",$c)))&&(!$oc||queries("ALTER TABLE ".table($Q)." DROP (".implode(", ",$oc).")"))&&($Q==$C||queries("ALTER TABLE ".table($Q)." RENAME TO ".table($C)));}function
alter_indexes($Q,$c){$oc=array();$Cg=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($Cg,"ALTER TABLE ".table($Q).$i);}elseif($X[2]=="DROP")$oc[]=idf_escape($X[1]);else$Cg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($oc)array_unshift($Cg,"DROP INDEX ".implode(", ",$oc));foreach($Cg
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($gj){return
apply_queries("DROP VIEW",$gj);}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($ih,$h=null){global$g;if(!$h)$h=$g;return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($ih));}function
show_variables(){return
get_key_vals('SELECT name, display_value FROM v$parameter');}function
process_list(){return
get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \'USER\'
ORDER BY PROCESS
');}function
show_status(){$K=get_rows('SELECT * FROM v$instance');return
reset($K);}function
convert_field($n){}function
unconvert_field($n,$I){return$I;}function
support($Yc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Yc);}function
driver_config(){$U=array();$Oh=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$x=>$X){$U+=$X;$Oh[$x]=array_keys($X);}return
array('possible_drivers'=>array("OCI8","PDO_OCI"),'jush'=>"oracle",'types'=>$U,'structured_types'=>$Oh,'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),'functions'=>array("distinct","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"=>"||",)),);}}$nc["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$m){$this->errno=$m["code"];$this->error.="$m[message]\n";}$this->error=rtrim($this->error);}function
connect($M,$V,$F){global$b;$k=$b->database();$Ab=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");if($k!="")$Ab["Database"]=$k;$this->_link=@sqlsrv_connect(preg_replace('~:~',',',$M),$Ab);if($this->_link){$Zd=sqlsrv_server_info($this->_link);$this->server_info=$Zd['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function
quote($P){return"'".str_replace("'","''",$P)."'";}function
select_db($Tb){return$this->query("USE ".idf_escape($Tb));}function
query($G,$Ji=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,$n=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->fetch_row();return$J[$n];}}class
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
__construct($H){$this->_result=$H;}function
_convert($J){foreach((array)$J
as$x=>$X){if(is_a($X,'DateTime'))$J[$x]=$X->format("Y-m-d H:i:s");}return$J;}function
fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function
fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function
fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$n=$this->_fields[$this->_offset++];$I=new
stdClass;$I->name=$n["Name"];$I->orgname=$n["Name"];$I->type=($n["Type"]==1?254:0);return$I;}function
seek($qf){for($r=0;$r<$qf;$r++)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($Tb){return
mssql_select_db($Tb);}function
query($G,$Ji=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,$n=0){$H=$this->query($G);if(!is_object($H))return
false;return
mssql_result($H->_result,0,$n);}}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($qf){mssql_data_seek($this->_result,$qf);}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($Tb){return$this->query("USE ".idf_escape($Tb));}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$tg){foreach($K
as$N){$Qi=array();$Z=array();foreach($N
as$x=>$X){$Qi[]="$x = $X";if(isset($tg[idf_unescape($x)]))$Z[]="$x = $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(", ",$Qi)." 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($t){return"[".str_replace("]","]]",$t)."]";}function
table($t){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($t);}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,$y,$qf=0,$ph=" "){return($y!==null?" TOP (".($y+$qf).")":"")." $G$Z";}function
limit1($Q,$G,$Z,$ph="\n"){return
limit($G,$Z,1,0,$ph);}function
db_collation($k,$ob){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($k));}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($j){global$g;$I=array();foreach($j
as$k){$g->select_db($k);$I[$k]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function
table_status($C=""){$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') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$J){if($C!="")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){$wb=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"];$Be=(preg_match("~char|binary~",$T)?$J["max_length"]:($T=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$T.($Be?"($Be)":""),"type"=>$T,"length"=>$Be,"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"=>$wb[$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){$C=$J["name"];$I[$C]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$C]["lengths"]=array();$I[$C]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$C]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?'1':null);}return$I;}function
view($C){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($C))));}function
collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$nb)$I[preg_replace('~_.*~','',$nb)][]=$nb;return$I;}function
information_schema($k){return
false;}function
error(){global$g;return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$g->error)));}function
create_database($k,$nb){return
queries("CREATE DATABASE ".idf_escape($k).(preg_match('~^[a-z0-9_]+$~i',$nb)?" COLLATE $nb":""));}function
drop_databases($j){return
queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$j)));}function
rename_database($C,$nb){if(preg_match('~^[a-z0-9_]+$~i',$nb))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $nb");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($Q,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){$c=array();$wb=array();foreach($o
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$c["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$wb[$n[0]]=$X[5];unset($X[5]);if($n[0]=="")$c["ADD"][]="\n  ".implode("",$X).($Q==""?substr($md[$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($C)." (".implode(",",(array)$c["ADD"])."\n)");if($Q!=$C)queries("EXEC sp_rename ".q(table($Q)).", ".q($C));if($md)$c[""]=$md;foreach($c
as$x=>$X){if(!queries("ALTER TABLE ".idf_escape($C)." $x".implode(",",$X)))return
false;}foreach($wb
as$x=>$X){$ub=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty @name = N'MS_Description', @value = ".$ub.", @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));}return
true;}function
alter_indexes($Q,$c){$u=array();$oc=array();foreach($c
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$oc[]=idf_escape($X[1]);else$u[]=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(!$u||queries("DROP INDEX ".implode(", ",$u)))&&(!$oc||queries("ALTER TABLE ".table($Q)." DROP ".implode(", ",$oc)));}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){$p=&$I[$J["FK_NAME"]];$p["db"]=$J["PKTABLE_QUALIFIER"];$p["table"]=$J["PKTABLE_NAME"];$p["source"][]=$J["FKCOLUMN_NAME"];$p["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($gj){return
queries("DROP VIEW ".implode(", ",array_map('table',$gj)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
move_tables($S,$gj,$ei){return
apply_queries("ALTER SCHEMA ".idf_escape($ei)." TRANSFER",array_merge($S,$gj));}function
trigger($C){if($C=="")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($C));$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($hh){return
true;}function
use_sql($Tb){return"USE ".idf_escape($Tb);}function
show_variables(){return
array();}function
show_status(){return
array();}function
convert_field($n){}function
unconvert_field($n,$I){return$I;}function
support($Yc){return
preg_match('~^(comment|columns|database|drop_col|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Yc);}function
driver_config(){$U=array();$Oh=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$x=>$X){$U+=$X;$Oh[$x]=array_keys($X);}return
array('possible_drivers'=>array("SQLSRV","MSSQL","PDO_DBLIB"),'jush'=>"mssql",'types'=>$U,'structured_types'=>$Oh,'unsigned'=>array(),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL"),'functions'=>array("distinct","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"=>"+",)),);}}$nc["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($Ri,$D){try{$this->_link=new
MongoClient($Ri,$D);if($D["password"]!=""){$D["password"]="";try{new
MongoClient($Ri,$D);$this->error=lang(22);}catch(Exception$uc){}}}catch(Exception$uc){$this->error=$uc->getMessage();}}function
query($G){return
false;}function
select_db($Tb){try{$this->_db=$this->_link->selectDB($Tb);return
true;}catch(Exception$Kc){$this->error=$Kc->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$le){$J=array();foreach($le
as$x=>$X){if(is_a($X,'MongoBinData'))$this->_charset[$x]=63;$J[$x]=(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$x=>$X){if(!isset($this->_rows[0][$x]))$this->_rows[0][$x]=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$x=>$X)$I[$x]=$J[$x];next($this->_rows);return$I;}function
fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
array_values($I);}function
fetch_field(){$pe=array_keys($this->_rows[0]);$C=$pe[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class
Min_Driver
extends
Min_SQL{public$tg="_id";function
select($Q,$L,$Z,$yd,$Hf=array(),$y=1,$E=0,$vg=false){$L=($L==array("*")?array():array_fill_keys($L,true));$Bh=array();foreach($Hf
as$X){$X=preg_replace('~ DESC$~','',$X,1,$Ib);$Bh[$X]=($Ib?-1:1);}return
new
Min_Result($this->_conn->_db->selectCollection($Q)->find(array(),$L)->sort($Bh)->limit($y!=""?+$y:0)->skip($E*$y));}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$Kc){$this->_conn->error=$Kc->getMessage();return
false;}}}function
get_databases($jd){global$g;$I=array();$Xb=$g->_link->listDBs();foreach($Xb['databases']as$k)$I[]=$k['name'];return$I;}function
count_tables($j){global$g;$I=array();foreach($j
as$k)$I[$k]=count($g->_link->selectDB($k)->getCollectionNames(true));return$I;}function
tables_list(){global$g;return
array_fill_keys($g->_db->getCollectionNames(true),'table');}function
drop_databases($j){global$g;foreach($j
as$k){$Tg=$g->_link->selectDB($k)->drop();if(!$Tg['ok'])return
false;}return
true;}function
indexes($Q,$h=null){global$g;$I=array();foreach($g->_db->selectCollection($Q)->getIndexInfo()as$u){$hc=array();foreach($u["key"]as$d=>$T)$hc[]=($T==-1?'1':null);$I[$u["name"]]=array("type"=>($u["name"]=="_id_"?"PRIMARY":($u["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($u["key"]),"lengths"=>array(),"descs"=>$hc,);}return$I;}function
fields($Q){return
fields_from_edit();}function
found_rows($R,$Z){global$g;return$g->_db->selectCollection($_GET["select"])->count($Z);}$Df=array("=");$Cf=null;}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($Ri,$D){$ib='MongoDB\Driver\Manager';$this->_link=new$ib($Ri,$D);$this->executeCommand('admin',array('ping'=>1));}function
executeCommand($k,$sb){$ib='MongoDB\Driver\Command';try{return$this->_link->executeCommand($k,new$ib($sb));}catch(Exception$uc){$this->error=$uc->getMessage();return
array();}}function
executeBulkWrite($ff,$Ya,$Jb){try{$Wg=$this->_link->executeBulkWrite($ff,$Ya);$this->affected_rows=$Wg->$Jb();return
true;}catch(Exception$uc){$this->error=$uc->getMessage();return
false;}}function
query($G){return
false;}function
select_db($Tb){$this->_db_name=$Tb;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$le){$J=array();foreach($le
as$x=>$X){if(is_a($X,'MongoDB\BSON\Binary'))$this->_charset[$x]=63;$J[$x]=(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$x=>$X){if(!isset($this->_rows[0][$x]))$this->_rows[0][$x]=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$x=>$X)$I[$x]=$J[$x];next($this->_rows);return$I;}function
fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
array_values($I);}function
fetch_field(){$pe=array_keys($this->_rows[0]);$C=$pe[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class
Min_Driver
extends
Min_SQL{public$tg="_id";function
select($Q,$L,$Z,$yd,$Hf=array(),$y=1,$E=0,$vg=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);$Bh=array();foreach($Hf
as$X){$X=preg_replace('~ DESC$~','',$X,1,$Ib);$Bh[$X]=($Ib?-1:1);}if(isset($_GET['limit'])&&is_numeric($_GET['limit'])&&$_GET['limit']>0)$y=$_GET['limit'];$y=min(200,max(1,(int)$y));$zh=$E*$y;$ib='MongoDB\Driver\Query';try{return
new
Min_Result($g->_link->executeQuery("$g->_db_name.$Q",new$ib($Z,array('projection'=>$L,'limit'=>$y,'skip'=>$zh,'sort'=>$Bh))));}catch(Exception$uc){$g->error=$uc->getMessage();return
false;}}function
update($Q,$N,$Dg,$y=0,$ph="\n"){global$g;$k=$g->_db_name;$Z=sql_query_where_parser($Dg);$ib='MongoDB\Driver\BulkWrite';$Ya=new$ib(array());if(isset($N['_id']))unset($N['_id']);$Qg=array();foreach($N
as$x=>$Y){if($Y=='NULL'){$Qg[$x]=1;unset($N[$x]);}}$Qi=array('$set'=>$N);if(count($Qg))$Qi['$unset']=$Qg;$Ya->update($Z,$Qi,array('upsert'=>false));return$g->executeBulkWrite("$k.$Q",$Ya,'getModifiedCount');}function
delete($Q,$Dg,$y=0){global$g;$k=$g->_db_name;$Z=sql_query_where_parser($Dg);$ib='MongoDB\Driver\BulkWrite';$Ya=new$ib(array());$Ya->delete($Z,array('limit'=>$y));return$g->executeBulkWrite("$k.$Q",$Ya,'getDeletedCount');}function
insert($Q,$N){global$g;$k=$g->_db_name;$ib='MongoDB\Driver\BulkWrite';$Ya=new$ib(array());if($N['_id']=='')unset($N['_id']);$Ya->insert($N);return$g->executeBulkWrite("$k.$Q",$Ya,'getInsertedCount');}}function
get_databases($jd){global$g;$I=array();foreach($g->executeCommand('admin',array('listDatabases'=>1))as$Xb){foreach($Xb->databases
as$k)$I[]=$k->name;}return$I;}function
count_tables($j){$I=array();return$I;}function
tables_list(){global$g;$pb=array();foreach($g->executeCommand($g->_db_name,array('listCollections'=>1))as$H)$pb[$H->name]='table';return$pb;}function
drop_databases($j){return
false;}function
indexes($Q,$h=null){global$g;$I=array();foreach($g->executeCommand($g->_db_name,array('listIndexes'=>$Q))as$u){$hc=array();$e=array();foreach(get_object_vars($u->key)as$d=>$T){$hc[]=($T==-1?'1':null);$e[]=$d;}$I[$u->name]=array("type"=>($u->name=="_id_"?"PRIMARY":(isset($u->unique)?"UNIQUE":"INDEX")),"columns"=>$e,"lengths"=>array(),"descs"=>$hc,);}return$I;}function
fields($Q){global$l;$o=fields_from_edit();if(!$o){$H=$l->select($Q,array("*"),null,null,array(),10);if($H){while($J=$H->fetch_assoc()){foreach($J
as$x=>$X){$J[$x]=null;$o[$x]=array("field"=>$x,"type"=>"string","null"=>($x!=$l->primary),"auto_increment"=>($x==$l->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}}return$o;}function
found_rows($R,$Z){global$g;$Z=where_to_query($Z);$ui=$g->executeCommand($g->_db_name,array('count'=>$R['Name'],'query'=>$Z))->toArray();return$ui[0]->n;}function
sql_query_where_parser($Dg){$Dg=preg_replace('~^\sWHERE \(?\(?(.+?)\)?\)?$~','\1',$Dg);$qj=explode(' AND ',$Dg);$rj=explode(') OR (',$Dg);$Z=array();foreach($qj
as$oj)$Z[]=trim($oj);if(count($rj)==1)$rj=array();elseif(count($rj)>1)$Z=array();return
where_to_query($Z,$rj);}function
where_to_query($mj=array(),$nj=array()){global$b;$Rb=array();foreach(array('and'=>$mj,'or'=>$nj)as$T=>$Z){if(is_array($Z)){foreach($Z
as$Qc){list($lb,$Af,$X)=explode(" ",$Qc,3);if($lb=="_id"&&preg_match('~^(MongoDB\\\\BSON\\\\ObjectID)\("(.+)"\)$~',$X,$A)){list(,$ib,$X)=$A;$X=new$ib($X);}if(!in_array($Af,$b->operators))continue;if(preg_match('~^\(f\)(.+)~',$Af,$A)){$X=(float)$X;$Af=$A[1];}elseif(preg_match('~^\(date\)(.+)~',$Af,$A)){$Ub=new
DateTime($X);$ib='MongoDB\BSON\UTCDatetime';$X=new$ib($Ub->getTimestamp()*1000);$Af=$A[1];}switch($Af){case'=':$Af='$eq';break;case'!=':$Af='$ne';break;case'>':$Af='$gt';break;case'<':$Af='$lt';break;case'>=':$Af='$gte';break;case'<=':$Af='$lte';break;case'regex':$Af='$regex';break;default:continue
2;}if($T=='and')$Rb['$and'][]=array($lb=>array($Af=>$X));elseif($T=='or')$Rb['$or'][]=array($lb=>array($Af=>$X));}}}return$Rb;}$Df=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);$Cf='regex';}function
table($t){return$t;}function
idf_escape($t){return$t;}function
table_status($C="",$Xc=false){$I=array();foreach(tables_list()as$Q=>$T){$I[$Q]=array("Name"=>$Q);if($C==$Q)return$I[$Q];}return$I;}function
create_database($k,$nb){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();$D=array();if($V.$F!=""){$D["username"]=$V;$D["password"]=$F;}$k=$b->database();if($k!="")$D["db"]=$k;if(($La=getenv("MONGO_AUTH_SOURCE")))$D["authSource"]=$La;$g->connect("mongodb://$M",$D);if($g->error)return$g->error;return$g;}function
alter_indexes($Q,$c){global$g;foreach($c
as$X){list($T,$C,$N)=$X;if($N=="DROP")$I=$g->_db->command(array("deleteIndexes"=>$Q,"index"=>$C));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"=>$C,));}if($I['errmsg']){$g->error=$I['errmsg'];return
false;}}return
true;}function
support($Yc){return
preg_match("~database|indexes|descidx~",$Yc);}function
db_collation($k,$ob){}function
information_schema(){}function
is_view($R){}function
convert_field($n){}function
unconvert_field($n,$I){return$I;}function
foreign_keys($Q){return
array();}function
fk_support($R){}function
engines(){return
array();}function
alter_table($Q,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){global$g;if($Q==""){$g->_db->createCollection($C);return
true;}}function
drop_tables($S){global$g;foreach($S
as$Q){$Tg=$g->_db->selectCollection($Q)->drop();if(!$Tg['ok'])return
false;}return
true;}function
truncate_tables($S){global$g;foreach($S
as$Q){$Tg=$g->_db->selectCollection($Q)->remove();if(!$Tg['ok'])return
false;}return
true;}function
driver_config(){global$Df,$Cf;return
array('possible_drivers'=>array("mongo","mongodb"),'jush'=>"mongo",'operators'=>$Df,'operator_regexp'=>$Cf,'functions'=>array(),'grouping'=>array(),'edit_functions'=>array(array("json")),);}}$nc["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($gg,array$Db=null,$Ye='GET'){@ini_set('track_errors',1);$cd=@file_get_contents("$this->_url/".ltrim($gg,'/'),false,stream_context_create(array('http'=>array('method'=>$Ye,'content'=>$Db!==null?json_encode($Db):null,'header'=>$Db!==null?'Content-Type: application/json':[],'ignore_errors'=>1,'follow_location'=>0,'max_redirects'=>0,))));if($cd===false){$this->error=lang(32);return
false;}$I=json_decode($cd,true);if($I===null){$this->error=lang(32);return
false;}if(!preg_match('~^HTTP/[0-9.]+ 2~i',$http_response_header[0])){if(isset($I['error']['root_cause'][0]['type']))$this->error=$I['error']['root_cause'][0]['type'].": ".$I['error']['root_cause'][0]['reason'];else$this->error=lang(32);return
false;}return$I;}function
query($gg,array$Db=null,$Ye='GET'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($gg,'/'),$Db,$Ye);}function
connect($M,$V,$F){$this->_url=build_http_url($M,$V,$F,"localhost",9200);$I=$this->query('');if(!$I)return
false;if(!isset($I['version']['number'])){$this->error=lang(32);return
false;}$this->server_info=$I['version']['number'];return
true;}function
select_db($Tb){$this->_db=$Tb;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,$yd,$Hf=array(),$y=1,$E=0,$vg=false){global$b;$Rb=array();$G="$Q/_search";if($L!=array("*"))$Rb["fields"]=$L;if($Hf){$Bh=array();foreach($Hf
as$lb){$lb=preg_replace('~ DESC$~','',$lb,1,$Ib);$Bh[]=($Ib?array($lb=>"desc"):$lb);}$Rb["sort"]=$Bh;}if($y){$Rb["size"]=+$y;if($E)$Rb["from"]=($E*$y);}foreach($Z
as$X){list($lb,$Af,$X)=explode(" ",$X,3);if($lb=="_id")$Rb["query"]["ids"]["values"][]=$X;elseif($lb.$X!=""){$hi=array("term"=>array(($lb!=""?$lb:"_all")=>$X));if($Af=="=")$Rb["query"]["filtered"]["filter"]["and"][]=$hi;else$Rb["query"]["filtered"]["query"]["bool"]["must"][]=$hi;}}if($Rb["query"]&&!$Rb["query"]["filtered"]["query"]&&!$Rb["query"]["ids"])$Rb["query"]["filtered"]["query"]=array("match_all"=>array());$Kh=microtime(true);$jh=$this->_conn->query($G,$Rb);if($vg)echo$b->selectQuery("$G: ".json_encode($Rb),$Kh,!$jh);if(!$jh)return
false;$I=array();foreach($jh['hits']['hits']as$Kd){$J=array();if($L==array("*"))$J["_id"]=$Kd["_id"];$o=$Kd['_source'];if($L!=array("*")){$o=array();foreach($L
as$x)$o[$x]=$Kd['fields'][$x];}foreach($o
as$x=>$X){if($Rb["fields"])$X=$X[0];$J[$x]=(is_array($X)?json_encode($X):$X);}$I[]=$J;}return
new
Min_Result($I);}function
update($T,$Hg,$Dg,$y=0,$ph="\n"){$eg=preg_split('~ *= *~',$Dg);if(count($eg)==2){$s=trim($eg[1]);$G="$T/$s";return$this->_conn->query($G,$Hg,'POST');}return
false;}function
insert($T,$Hg){$s="";$G="$T/$s";$Tg=$this->_conn->query($G,$Hg,'POST');$this->_conn->last_id=$Tg['_id'];return$Tg['created'];}function
delete($T,$Dg,$y=0){$Od=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Od[]=$_GET["where"]["_id"];if(is_array($_POST['check'])){foreach($_POST['check']as$cb){$eg=preg_split('~ *= *~',$cb);if(count($eg)==2)$Od[]=trim($eg[1]);}}$this->_conn->affected_rows=0;foreach($Od
as$s){$G="{$T}/{$s}";$Tg=$this->_conn->query($G,'{}','DELETE');if(is_array($Tg)&&$Tg['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($Yc){return
preg_match("~database|table|columns~",$Yc);}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($k,$ob){}function
engines(){return
array();}function
count_tables($j){global$g;$I=array();$H=$g->query('_stats');if($H&&$H['indices']){$Wd=$H['indices'];foreach($Wd
as$Vd=>$Lh){$Ud=$Lh['total']['indexing'];$I[$Vd]=$Ud['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($C="",$Xc=false){global$g;$jh=$g->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$I=array();if($jh){$S=$jh["aggregations"]["count_by_type"]["buckets"];foreach($S
as$Q){$I[$Q["key"]]=array("Name"=>$Q["key"],"Engine"=>"table","Rows"=>$Q["doc_count"],);if($C!=""&&$C==$Q["key"])return$I[$C];}}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;$Ie=array();if(min_version(6)){$H=$g->query("_mapping");if($H)$Ie=$H[$g->_db]['mappings']['properties'];}else{$H=$g->query("$Q/_mapping");if($H){$Ie=$H[$Q]['properties'];if(!$Ie)$Ie=$H[$g->_db]['mappings'][$Q]['properties'];}}$I=array();if($Ie){foreach($Ie
as$C=>$n){$I[$C]=array("field"=>$C,"full_type"=>$n["type"],"type"=>$n["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($n["properties"]){unset($I[$C]["privileges"]["insert"]);unset($I[$C]["privileges"]["update"]);}}}return$I;}function
foreign_keys($Q){return
array();}function
table($t){return$t;}function
idf_escape($t){return$t;}function
convert_field($n){}function
unconvert_field($n,$I){return$I;}function
fk_support($R){}function
found_rows($R,$Z){return
null;}function
create_database($k){global$g;return$g->rootQuery(urlencode($k),null,'PUT');}function
drop_databases($j){global$g;return$g->rootQuery(urlencode(implode(',',$j)),array(),'DELETE');}function
alter_table($Q,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){global$g;$Ag=array();foreach($o
as$Vc){$ad=trim($Vc[1][0]);$bd=trim($Vc[1][1]?$Vc[1][1]:"text");$Ag[$ad]=array('type'=>$bd);}if(!empty($Ag))$Ag=array('properties'=>$Ag);return$g->query("_mapping/{$C}",$Ag,'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();$Oh=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$x=>$X){$U+=$X;$Oh[$x]=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'=>$Oh,);}}class
Adminer{var$operators;function
name(){return"<a href='https://www.adminerevo.org/'".target_blank()." id='h1'>AdminerEvo</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($jd=true){return
get_databases($jd);}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(){return
csp();}function
head(){return
true;}function
css(){$I=array();$dd="adminer.css";if(file_exists($dd))$I[]="$dd?v=".crc32(file_get_contents($dd));return$I;}function
loginForm(){global$nc;echo"<table cellspacing='0' class='layout'>\n",$this->loginFormField('driver','<tr><th>'.lang(33).'<td>',html_select("auth[driver]",$nc,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($C,$Hd,$Y){return$Hd.$Y;}function
login($Ge,$F){if($F=="")return
lang(40,target_blank());return
true;}function
tableName($Vh){return
h($Vh["Name"]);}function
fieldName($n,$Hf=0){return'<span title="'.h($n["full_type"]).'">'.h($n["field"]).'</span>';}function
selectLinks($Vh,$N=""){global$w,$l;echo'<p class="links">';$xa=array("select"=>lang(41));if(support("table")||support("indexes"))$xa["table"]=lang(42);if(support("table")){if(is_view($Vh))$xa["view"]=lang(43);else$xa["create"]=lang(44);}if($N!==null)$xa["edit"]=lang(45);$C=$Vh["Name"];$_=[];foreach($xa
as$x=>$X)$_[]="<a href='".h(ME)."$x=".urlencode($C).($x=="edit"?$N:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
generate_linksbar($_),doc_link(array($w=>$l->tableHelp($C)),"?"),"\n";}function
foreignKeys($Q){return
foreign_keys($Q);}function
backwardKeys($Q,$Uh){return
array();}function
backwardKeysPrint($Pa,$J){}function
selectQuery($G,$Kh,$Wc=false){global$w,$l;if(!$Wc&&($jj=$l->warnings())){$s="warnings";$I=", <a href='#$s'>".lang(46)."</a>".script("qsl('a').onclick = partial(toggle, '$s');","")."<div id='$s' class='hidden'>\n$jj</div>\n";}$_=[(support("sql")?"<a href='".h(ME)."sql=".urlencode($G)."'>".lang(10)."</a>":""),"<a href='#' class='copy-to-clipboard'>".lang(47)."</a>",];return"<code class='jush-$w copy-to-clipboard'>".h(str_replace("\n"," ",$G))."</code> <span class='time'>(".format_time($Kh).")</span>".generate_linksbar($_);}function
sqlCommandQuery($G){return
shorten_utf8(trim($G),1000);}function
rowDescription($Q){return"";}function
rowDescriptions($K,$nd){return$K;}function
selectLink($X,$n){}function
selectVal($X,$z,$n,$Pf){$I=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$n["type"]??null)&&!preg_match("~var~",$n["type"]??null)?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$n["type"]??null)&&!is_utf8($X))$I="<i>".lang(48,strlen($Pf))."</i>";if(preg_match('~json~',$n["type"]??null))$I="<code class='jush-js'>$I</code>";return($z?"<a href='".h($z)."'".(is_url($z)?target_blank():"").">$I</a>":$I);}function
editVal($X,$n){return$X;}function
tableStructurePrint($o){echo"<div class='scrollable'>\n","<table cellspacing='0' class='nowrap'>\n","<thead><tr><th>".lang(49)."<td>".lang(50).(support("comment")?"<td>".lang(51):"")."</thead>\n";foreach($o
as$n){echo"<tr".odd()."><th>".h($n["field"]),"<td><span title='".h($n["collation"])."'>".h($n["full_type"])."</span>",($n["null"]?" <i>NULL</i>":""),($n["auto_increment"]?" <i>".lang(52)."</i>":""),(isset($n["default"])?" <span title='".lang(53)."'>[<b>".h($n["default"])."</b>]</span>":""),(support("comment")?"<td>".h($n["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint($v){echo"<table cellspacing='0'>\n";foreach($v
as$C=>$u){ksort($u["columns"]);$vg=array();foreach($u["columns"]as$x=>$X)$vg[]="<i>".h($X)."</i>".($u["lengths"][$x]?"(".$u["lengths"][$x].")":"").($u["descs"][$x]?" DESC":"");echo"<tr title='".h($C)."'><th>$u[type]<td>".implode(", ",$vg)."\n";}echo"</table>\n";}function
selectColumnsPrint($L,$e){global$ud,$Ad;print_fieldset("select",lang(54),$L);$r=0;$L[""]=array();foreach($L
as$x=>$X){$X=$_GET["columns"][$x]??null;$d=select_input(" name='columns[$r][col]'",$e,$X["col"]??null,($x!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($ud||$Ad?"<select name='columns[$r][fun]'>".optionlist(array(-1=>"")+array_filter(array(lang(55)=>$ud,lang(56)=>$Ad)),$X["fun"]??null)."</select>".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)." <input type='image' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.4")."' class='jsonly icon' title='",h(lang(57)),"' alt='x'>".script('qsl(".icon").onclick = selectRemoveRow;',"")."</div>\n";$r++;}echo"</div></fieldset>\n";}function
selectSearchPrint($Z,$e,$v){print_fieldset("search",lang(58),$Z);foreach($v
as$r=>$u){if($u["type"]=="FULLTEXT"){echo"<div>(<i>".implode("</i>, <i>",array_map('h',$u["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$r]' value='".h($_GET["fulltext"][$r])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$r]",1,isset($_GET["boolean"][$r]),"BOOL"),"</div>\n";}}$ab="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$r=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$r][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(59).")"),html_select("where[$r][op]",$this->operators,$X["op"],$ab),"<input type='search' name='where[$r][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $ab }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"<input type='image' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.4")."' class='jsonly icon' title='",h(lang(57)),"' alt='x'>",script('qsl(".icon").onclick = selectRemoveRow;',""),"</div>\n";}}echo"</div></fieldset>\n";}function
selectOrderPrint($Hf,$e,$v){print_fieldset("sort",lang(60),$Hf);$r=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"<div>".select_input(" name='order[$r]'",$e,$X,"selectFieldChange"),checkbox("desc[$r]",1,isset($_GET["desc"][$x]),lang(61))," <input type='image' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.4")."' class='jsonly icon' title='",h(lang(57)),"' alt='x'>",script('qsl(".icon").onclick = selectRemoveRow;',""),"</div>\n";$r++;}}echo"<div>".select_input(" name='order[$r]'",$e,"","selectAddRow"),checkbox("desc[$r]",1,false,lang(61))," <input type='image' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.4")."' class='jsonly icon' title='",h(lang(57)),"' alt='x'>",script('qsl(".icon").onclick = selectRemoveRow;',""),"</div>\n","</div></fieldset>\n";}function
selectLimitPrint($y){echo"<fieldset><legend>".lang(62)."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($y)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($ki){if($ki!==null){echo"<fieldset><legend>".lang(63)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ki)."'>","</div></fieldset>\n";}}function
selectActionPrint($v){echo"<fieldset><legend>".lang(64)."</legend><div>","<input type='submit' value='".lang(54)."'>"," <span id='noindex' title='".lang(65)."'></span>","<script".nonce().">\n","var indexColumns = ";$e=array();foreach($v
as$u){$Qb=reset($u["columns"]);if($u["type"]!="FULLTEXT"&&$Qb)$e[$Qb]=1;}$e[""]=1;foreach($e
as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint($_c,$e){}function
selectColumnsProcess($e,$v){global$ud,$Ad;$L=array();$yd=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$ud)||in_array($X["fun"],$Ad)))){$L[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$Ad))$yd[]=$L[$x];}}return
array($L,$yd);}function
selectSearchProcess($o,$v){global$g,$l;$I=array();foreach($v
as$r=>$u){if($u["type"]=="FULLTEXT"&&$_GET["fulltext"][$r]!="")$I[]="MATCH (".implode(", ",array_map('idf_escape',$u["columns"])).") AGAINST (".q($_GET["fulltext"][$r]).(isset($_GET["boolean"][$r])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$rg="";$xb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Rd=process_length($X["val"]);$xb.=" ".($Rd!=""?$Rd:"(NULL)");}elseif($X["op"]=="SQL")$xb=" $X[val]";elseif($X["op"]=="LIKE %%")$xb=" LIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$xb=" ILIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$rg="$X[op](".q($X["val"]).", ";$xb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$xb.=" ".$this->processInput($o[$X["col"]],$X["val"]);if($X["col"]!="")$I[]=$rg.$l->convertSearch(idf_escape($X["col"]),$X,$o[$X["col"]]).$xb;else{$qb=array();foreach($o
as$C=>$n){if((preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$n["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$n["type"]))&&(!preg_match('~date|timestamp~',$n["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$qb[]=$rg.$l->convertSearch(idf_escape($C),$X,$n).$xb;}$I[]=($qb?"(".implode(" OR ",$qb).")":"1 = 0");}}}return$I;}function
selectOrderProcess($o,$v){$I=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" 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,$nd){return
false;}function
selectQueryBuild($L,$Z,$yd,$Hf,$y,$E){return"";}function
messageQuery($G,$li,$Wc=false){global$w,$l;restart_session();$Id=&get_session("queries");if(isset($Id[$_GET["db"]])===false)$Id[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$Id[$_GET["db"]][]=array($G,time(),$li);$Hh="sql-".count($Id[$_GET["db"]]);$I="<a href='#$Hh' class='toggle'>".lang(66)."</a> <a href='#' class='copy-to-clipboard icon expand' data-expand-id='$Hh'></a>\n";if(!$Wc&&($jj=$l->warnings())){$s="warnings-".count($Id[$_GET["db"]]);$I="<a href='#$s' class='toggle'>".lang(46)."</a>, $I<div id='$s' class='hidden'>\n$jj</div>\n";}$_=[];if(support("sql")){$_[]='<a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Id[$_GET["db"]])-1)).'">'.lang(10).'</a>';$_[]='<a href="#" class="copy-to-clipboard">'.lang(47).'</a>';}return" <span class='time'>".@date("H:i:s")."</span>"." $I<div id='$Hh' class='hidden'><pre><code class='jush-$w copy-to-clipboard'>".shorten_utf8($G,1000)."</code></pre>".($li?" <span class='time'>($li)</span>":'').generate_linksbar($_).'</div>';}function
editRowPrint($Q,$o,$J,$Qi){}function
editFunctions($n){global$vc;$I=($n["null"]?"NULL/":"");$Qi=isset($_GET["select"])||where($_GET);foreach($vc
as$x=>$ud){if(!$x||(!isset($_GET["call"])&&$Qi)){foreach($ud
as$ig=>$X){if(!$ig||preg_match("~$ig~",$n["type"]))$I.="/$X";}}if($x&&!preg_match('~set|blob|bytea|raw|file|bool~',$n["type"]))$I.="/SQL";}if($n["auto_increment"]&&!$Qi)$I=lang(52);return
explode("/",$I);}function
editInput($Q,$n,$Ja,$Y){if($n["type"]=="enum"){$D=array();$lh=$Y;if(isset($_GET["select"])){$D[-1]=lang(8);if($lh===null)$lh=-1;}if($n["null"]){$D[""]="NULL";if($Y===null&&!isset($_GET["select"]))$lh="";}$D[0]=lang(7);preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$B);foreach($B[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$D[$r+1]=$X;if($Y===$X)$lh=$r+1;}return"<select$Ja>".optionlist($D,(string)$lh,1)."</select>";}return"";}function
editHint($Q,$n,$Y){return"";}function
processInput($n,$Y,$q=""){if($q=="SQL")return$Y;$C=$n["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q))$I="$q()";elseif(preg_match('~^current_(date|timestamp)$~',$q))$I=$q;elseif(preg_match('~^([+-]|\|\|)$~',$q))$I=idf_escape($C)." $q $I";elseif(preg_match('~^[+-] interval$~',$q))$I=idf_escape($C)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$q))$I="$q(".idf_escape($C).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q))$I="$q($I)";return
unconvert_field($n,$I);}function
dumpOutput(){$I=array('text'=>lang(67),'file'=>lang(68));if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function
dumpFormat(){return
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($k){}function
dumpTable($Q,$Ph,$ke=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Ph)dump_csv(array_keys(fields($Q)));}else{if($ke==2){$o=array();foreach(fields($Q)as$C=>$n)$o[]=idf_escape($C)." $n[full_type]";$i="CREATE TABLE ".table($Q)." (".implode(", ",$o).")";}else$i=create_sql($Q,$_POST["auto_increment"],$Ph);set_utf8mb4($i);if($Ph&&$i){if($Ph=="DROP+CREATE"||$ke==1)echo"DROP ".($ke==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($ke==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($Q,$Ph,$G){global$g,$w;$Ne=($w=="sqlite"?0:1048576);if($Ph){if($_POST["format"]=="sql"){if($Ph=="TRUNCATE+INSERT")echo
truncate_sql($Q).";\n";$o=fields($Q);}$H=$g->query($G,1);if($H){$de="";$Xa="";$pe=array();$vd=array();$Rh="";$Zc=($Q!=''?'fetch_assoc':'fetch_row');while($J=$H->$Zc()){if(!$pe){$bj=array();foreach($J
as$X){$n=$H->fetch_field();if(!empty($o[$n->name]['generated'])){$vd[$n->name]=true;continue;}$pe[]=$n->name;$x=idf_escape($n->name);$bj[]="$x = VALUES($x)";}$Rh=($Ph=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$bj):"").";\n";}if($_POST["format"]!="sql"){if($Ph=="table"){dump_csv($pe);$Ph="INSERT";}dump_csv($J);}else{if(!$de)$de="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$pe)).") VALUES";foreach($J
as$x=>$X){if(isset($vd[$x])){unset($J[$x]);continue;}$n=$o[$x];$J[$x]=($X!==null?unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$fh=($Ne?"\n":" ")."(".implode(",\t",$J).")";if(!$Xa)$Xa=$de.$fh;elseif(strlen($Xa)+4+strlen($fh)+strlen($Rh)<$Ne)$Xa.=",$fh";else{echo$Xa.$Rh;$Xa=$de.$fh;}}}if($Xa)echo$Xa.$Rh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function
dumpFilename($Nd){return
friendly_url($Nd!=""?$Nd:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($Nd,$bf=false){$Sf=$_POST["output"];$Rc=(preg_match('~sql~',$_POST["format"])?"sql":($bf?"tar":"csv"));header("Content-Type: ".($Sf=="gz"?"application/x-gzip":($Rc=="tar"?"application/x-tar":($Rc=="sql"||$Sf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Sf=="gz")ob_start('ob_gzencode',1e6);return$Rc;}function
importServerPath(){return"adminer.sql";}function
homepage(){$_=[];if($_GET["ns"]==""&&support("database"))$_[]='<a href="'.h(ME).'database=">'.lang(69).'</a>';if(support("scheme"))$_[]="<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(70):lang(71))."</a>";if($_GET["ns"]!=="")$_[]='<a href="'.h(ME).'schema=">'.lang(72).'</a>';if(support("privileges"))$_[]="<a href='".h(ME)."privileges='>".lang(73)."</a>";echo
generate_linksbar($_);return
true;}function
navigation($af){global$ia,$w,$nc,$g;echo'<h1>
',$this->name(),' <span class="version">',$ia,'</span>
<a href="https://download.adminerevo.org/latest/adminer/"',target_blank(),' id="version" title="',lang(74),'">',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
</h1>
';if($af=="auth"){$Sf="";foreach((array)$_SESSION["pwds"]as$dj=>$th){foreach($th
as$M=>$Yi){foreach($Yi
as$V=>$F){if($F!==null){$Xb=$_SESSION["db"][$dj][$M][$V];foreach(($Xb?array_keys($Xb):array(""))as$k)$Sf.="<li><a href='".h(auth_url($dj,$M,$V,$k))."'>($nc[$dj]) ".h($V.($M!=""?"@".$this->serverName($M):"").($k!=""?" - $k":""))."</a>\n";}}}}if($Sf)echo"<ul id='logins'>\n$Sf</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$af&&DB!=""){$g->select_db(DB);$S=table_status('',true);}echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.8.4");if(support("sql")){echo'<script',nonce(),'>
';if($S){$_=array();foreach($S
as$Q=>$T)$_[]=preg_quote($Q,'/');echo"var jushLinks = { $w: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$_).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$w;\n";}$sh=$g->server_info;echo'bodyLoad(\'',(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$sh):""),'\'',(preg_match('~MariaDB~',$sh)?", true":""),');
</script>
';}$this->databasesPrint($af);$_=[];if(DB==""||!$af){if(support("sql")){$_[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(66)."</a>";$_[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(75)."</a>";}if(support("dump"))$_[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(76)."</a>";}echo
generate_linksbar($_);if($_GET["ns"]!==""&&!$af&&DB!=""){echo
generate_linksbar(['<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(77)."</a>"]);if(!$S)echo"<p class='message'>".lang(9)."\n";else$this->tablesPrint($S);}}}function
databasesPrint($af){global$b,$g;$j=$this->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo'<form action="">
',"<table id='dbs'><tr><td width=1>";hidden_fields_get();$Vb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".lang(78)."' for='menu_db'>".lang(79)."</label>:</td><td>".($j?"<select name='db' id='menu_db'>".optionlist(array(""=>"")+$j,DB)."</select>$Vb":"<input name='db' id='menu_db' value='".h(DB)."' autocapitalize='off'>\n"),"</td></tr>";if(support("scheme")){if($af!="db"&&DB!=""&&$g->select_db(DB)){echo"<tr><td><label for='menu_ns'>".lang(80).":</label></td>","<td><select name='ns' id='menu_ns'>".optionlist(array(""=>"")+$b->schemas(),$_GET["ns"])."</select>$Vb";if($_GET["ns"]!="")set_schema($_GET["ns"]);echo"</td></tr>";}}echo"<tr".($j?" class='hidden'":"")."><td colspan=2><input type='submit' value='".lang(20)."'></td></tr>\n","</table>";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type='hidden' name='$X' value=''>";break;}}}function
tablesPrint($S){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S
as$Q=>$O){$C=$this->tableName($O);if($C!=""){echo'<li><a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select")." title='".lang(41)."'>".lang(81)."</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"],$_GET["select"])),(is_view($O)?"view":"structure"))." title='".lang(42)."'>$C</a>":"<span>$C</span>")."\n";}}echo"</ul>\n";}}$b=(function_exists('adminer_object')?adminer_object():new
Adminer);$nc=array("server"=>"MySQL")+$nc;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="",$Tb=null,$mg=null,$Ah=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Ld,$mg)=explode(":",$M,2);$Jh=$b->connectSsl();if($Jh)$this->ssl_set($Jh['key'],$Jh['cert'],$Jh['ca'],'','');$I=@$this->real_connect(($M!=""?$Ld:ini_get("mysqli.default_host")),($M.$V!=""?$V:ini_get("mysqli.default_user")),($M.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$Tb,(is_numeric($mg)?$mg:ini_get("mysqli.default_port")),(!is_numeric($mg)?$mg:$Ah),($Jh?64:0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function
set_charset($bb){if(parent::set_charset($bb))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $bb");}function
result($G,$n=0){$H=$this->query($G);if(!$H)return
false;$J=$H->fetch_array();return$J[$n];}function
quote($P){return"'".$this->escape_string($P)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
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(82,"'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($bb){if(function_exists('mysql_set_charset')){if(mysql_set_charset($bb,$this->_link))return
true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $bb");}function
quote($P){return"'".mysql_real_escape_string($P,$this->_link)."'";}function
select_db($Tb){return
mysql_select_db($Tb,$this->_link);}function
query($G,$Ji=false){$H=@($Ji?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,$n=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
false;return
mysql_result($H->_result,0,$n);}}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;$D=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Jh=$b->connectSsl();if($Jh){if(!empty($Jh['key']))$D[PDO::MYSQL_ATTR_SSL_KEY]=$Jh['key'];if(!empty($Jh['cert']))$D[PDO::MYSQL_ATTR_SSL_CERT]=$Jh['cert'];if(!empty($Jh['ca']))$D[PDO::MYSQL_ATTR_SSL_CA]=$Jh['ca'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$M)),$V,$F,$D);return
true;}function
set_charset($bb){$this->query("SET NAMES $bb");}function
select_db($Tb){return$this->query("USE ".idf_escape($Tb));}function
query($G,$Ji=false){$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ji);return
parent::query($G,$Ji);}}}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,$tg){$e=array_keys(reset($K));$rg="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$bj=array();foreach($e
as$x)$bj[$x]="$x = VALUES($x)";$Rh="\nON DUPLICATE KEY UPDATE ".implode(", ",$bj);$bj=array();$Be=0;foreach($K
as$N){$Y="(".implode(", ",$N).")";if($bj&&(strlen($rg)+$Be+strlen($Y)+strlen($Rh)>1e6)){if(!queries($rg.implode(",\n",$bj).$Rh))return
false;$bj=array();$Be=0;}$bj[]=$Y;$Be+=strlen($Y)+2;}return
queries($rg.implode(",\n",$bj).$Rh);}function
slowQuery($G,$mi){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$mi FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($mi*1000).") */ $A[2]";}}function
convertSearch($t,$X,$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($t USING ".charset($this->_conn).")":$t);}function
warnings(){$H=$this->_conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return
ob_get_clean();}}function
tableHelp($C){$Je=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
strtolower(($Je?"information-schema-$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($Je?"mysql$C-table/":"system-database.html");}}function
idf_escape($t){return"`".str_replace("`","``",$t)."`";}function
table($t){return
idf_escape($t);}function
connect(){global$b,$U,$Oh;$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)){$Oh[lang(25)][]="json";$U["json"]=4294967295;}return$g;}$I=$g->error;if(function_exists('iconv')&&!is_utf8($I)&&strlen($fh=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$fh;return$I;}function
get_databases($jd){$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=($jd?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function
limit($G,$Z,$y,$qf=0,$ph=" "){return" $G$Z".($y!==null?$ph."LIMIT $y".($qf?" OFFSET $qf":""):"");}function
limit1($Q,$G,$Z,$ph="\n"){return
limit($G,$Z,1,0,$ph);}function
db_collation($k,$ob){global$g;$I=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$A))$I=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$A))$I=$ob[$A[1]][-1];return$I;}function
engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function
logged_user(){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($j){$I=array();foreach($j
as$k)$I[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$I;}function
table_status($C="",$Xc=false){$I=array();foreach(get_rows($Xc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($C!="")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"],$A);$I[$J["Field"]]=array("field"=>$J["Field"],"full_type"=>$J["Type"],"type"=>$A[1],"length"=>$A[2],"unsigned"=>ltrim($A[3].$A[4]),"default"=>($J["Default"]!=""||preg_match("~char|set~",$A[1])?(preg_match('~text~',$A[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"],$A)?$A[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){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;}return$I;}function
foreign_keys($Q){global$g,$yf;static$ig='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$Kb=$g->result("SHOW CREATE TABLE ".table($Q),1);if($Kb){preg_match_all("~CONSTRAINT ($ig) FOREIGN KEY ?\\(((?:$ig,? ?)+)\\) REFERENCES ($ig)(?:\\.($ig))? \\(((?:$ig,? ?)+)\\)(?: ON DELETE ($yf))?(?: ON UPDATE ($yf))?~",$Kb,$B,PREG_SET_ORDER);foreach($B
as$A){preg_match_all("~$ig~",$A[2],$Ch);preg_match_all("~$ig~",$A[5],$ei);$I[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Ch[0]),"target"=>array_map('idf_unescape',$ei[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$I;}function
view($C){global$g;return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("SHOW CREATE VIEW ".table($C),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$x=>$X)asort($I[$x]);return$I;}function
information_schema($k){return(min_version(5)&&$k=="information_schema")||(min_version(5.5)&&$k=="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($k,$nb){return
queries("CREATE DATABASE ".idf_escape($k).($nb?" COLLATE ".q($nb):""));}function
drop_databases($j){$I=apply_queries("DROP DATABASE",$j,'idf_escape');restart_session();set_session("dbs",null);return$I;}function
rename_database($C,$nb){$I=false;if(create_database($C,$nb)){$S=array();$gj=array();foreach(tables_list()as$Q=>$T){if($T=='VIEW')$gj[]=$Q;else$S[]=$Q;}$I=(!$S&&!$gj)||move_tables($S,$gj,$C);drop_databases($I?array(DB):array());}return$I;}function
auto_increment(){$Na=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$u){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$u["columns"],true)){$Na="";break;}if($u["type"]=="PRIMARY")$Na=" UNIQUE";}}return" AUTO_INCREMENT$Na";}function
alter_table($Q,$C,$o,$md,$ub,$Cc,$nb,$Ma,$cg){$c=array();foreach($o
as$n)$c[]=($n[1]?($Q!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($Q!=""?$n[2]:""):"DROP ".idf_escape($n[0]));$c=array_merge($c,$md);$O=($ub!==null?" COMMENT=".q($ub):"").($Cc?" ENGINE=".q($Cc):"").($nb?" COLLATE ".q($nb):"").($Ma!=""?" AUTO_INCREMENT=$Ma":"");if($Q=="")return
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$O$cg");if($Q!=$C)$c[]="RENAME TO ".table($C);if($O)$c[]=ltrim($O);return($c||$cg?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$c).$cg):true);}function
alter_indexes($Q,$c){foreach($c
as$x=>$X)$c[$x]=($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($gj){return
queries("DROP VIEW ".implode(", ",array_map('table',$gj)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
move_tables($S,$gj,$ei){global$g;$Rg=array();foreach($S
as$Q)$Rg[]=table($Q)." TO ".idf_escape($ei).".".table($Q);if(!$Rg||queries("RENAME TABLE ".implode(", ",$Rg))){$ec=array();foreach($gj
as$Q)$ec[table($Q)]=view($Q);$g->select_db($ei);$k=idf_escape(DB);foreach($ec
as$C=>$fj){if(!queries("CREATE VIEW $C AS ".str_replace(" $k."," ",$fj["select"]))||!queries("DROP VIEW $k.$C"))return
false;}return
true;}return
false;}function
copy_tables($S,$gj,$ei){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
as$Q){$C=($ei==DB?table("copy_$Q"):idf_escape($ei).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($Q))||!queries("INSERT INTO $C SELECT * FROM ".table($Q)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J){$Di=$J["Trigger"];if(!queries("CREATE TRIGGER ".($ei==DB?idf_escape("copy_$Di"):idf_escape($ei).".".idf_escape($Di))." $J[Timing] $J[Event] ON $C FOR EACH ROW\n$J[Statement];"))return
false;}}foreach($gj
as$Q){$C=($ei==DB?table("copy_$Q"):idf_escape($ei).".".table($Q));$fj=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $fj[select]"))return
false;}return
true;}function
trigger($C){if($C=="")return
array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));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($C,$T){global$g,$Ec,$be,$U;$Da=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Dh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Ii="((".implode("|",array_merge(array_keys($U),$Da)).")\\b(?:\\s*\\(((?:[^'\")]|$Ec)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ig="$Dh*(".($T=="FUNCTION"?"":$be).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Ii";$i=$g->result("SHOW CREATE $T ".idf_escape($C),2);preg_match("~\\(((?:$ig\\s*,?)*)\\)\\s*".($T=="FUNCTION"?"RETURNS\\s+$Ii\\s+":"")."(.*)~is",$i,$A);$o=array();preg_match_all("~$ig\\s*,?~is",$A[1],$B,PREG_SET_ORDER);foreach($B
as$Wf)$o[]=array("field"=>str_replace("``","`",$Wf[2]).$Wf[3],"type"=>strtolower($Wf[5]),"length"=>preg_replace_callback("~$Ec~s",'normalize_enum',$Wf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Wf[8] $Wf[7]"))),"null"=>1,"full_type"=>$Wf[4],"inout"=>strtoupper($Wf[1]),"collation"=>strtolower($Wf[9]),);if($T!="FUNCTION")return
array("fields"=>$o,"definition"=>$A[11]);return
array("fields"=>$o,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
routine_languages(){return
array();}function
routine_id($C,$J){return
idf_escape($C);}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($hh,$h=null){return
true;}function
create_sql($Q,$Ma,$Ph){global$g;$I=$g->result("SHOW CREATE TABLE ".table($Q),1);if(!$Ma)$I=preg_replace('~ AUTO_INCREMENT=\d+~','',$I);return$I;}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
use_sql($Tb){return"USE ".idf_escape($Tb);}function
trigger_sql($Q){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function
show_variables(){return
get_key_vals("SHOW VARIABLES");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
show_status(){return
get_key_vals("SHOW STATUS");}function
convert_field($n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function
unconvert_field($n,$I){if(preg_match("~binary~",$n["type"]??null))$I="UNHEX($I)";if(isset($n["type"])&&$n["type"]=="bit")$I="CONV($I, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]??null)){$rg=(min_version(8)?"ST_":"");$I=$rg."GeomFromText($I, $rg"."SRID($n[field]))";}return$I;}function
support($Yc){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")))."~",$Yc);}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();$Oh=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(83)=>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$x=>$X){$U+=$X;$Oh[$x]=array_keys($X);}return
array('possible_drivers'=>array("MySQLi","MySQL","PDO_MySQL"),'jush'=>"sql",'types'=>$U,'structured_types'=>$Oh,'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","distinct","from_unixtime","unix_timestamp","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"),'operator_regexp'=>'REGEXP','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",)),);}}$yb=driver_config();$qg=$yb['possible_drivers'];$w=$yb['jush'];$U=$yb['types'];$Oh=$yb['structured_types'];$Pi=$yb['unsigned'];$Df=$yb['operators'];$Cf=isset($yb['operator_regexp'])&&in_array($yb['operator_regexp'],$Df)?$yb['operator_regexp']:null;$ud=$yb['functions'];$Ad=$yb['grouping'];$vc=$yb['edit_functions'];if($b->operators===null){$b->operators=$Df;$b->operator_regexp=$Cf;}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.4";function
page_header($oi,$m="",$Wa=array(),$pi=""){global$ca,$ia,$b,$nc,$w;page_headers();if(is_ajax()&&$m){page_messages($m);exit;}$qi=$oi.($pi!=""?": $pi":"");$ri=strip_tags($qi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
<html lang="',$ca,'" dir="',lang(84),'">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<title>',$ri,'</title>
<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=4.8.4"),'">
',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.8.4");if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.8.4"),'">
<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.8.4"),'">
';foreach($b->css()as$Ob){echo'<link rel="stylesheet" type="text/css" href="',h($Ob),'">
';}}echo'
<body class="',lang(84),' nojs adminer">
';$dd=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&file_exists($dd)&&filemtime($dd)+86400>time()){$ej=unserialize(file_get_contents($dd));$_COOKIE["adminer_version"]=$ej["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(85)),'\';
var thousandsSeparator = \'',js_escape(lang(5)),'\';
</script>

<div id="help" class="jush-',$w,' jsonly hidden"></div>
',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
<div id="content">
';if($Wa!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$nc[DRIVER].'</a> &raquo; ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$M=$b->serverName(SERVER);$M=($M!=""?$M:lang(34));if($Wa===false)echo"$M\n";else{echo"<a href='".h($z)."' accesskey='1' title='Alt+Shift+1'>$M</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Wa)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Wa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Wa
as$x=>$X){$gc=(is_array($X)?$X[1]:h($X));if($gc!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$gc</a> &raquo; ";}}echo"$oi\n";}}echo"<h2>$qi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($m);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=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){$Gd=array();foreach($Nb
as$x=>$X)$Gd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Gd));}$b->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://api.github.com/repos/adminerevo/adminerevo/releases/latest","frame-src"=>"'self'","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$kf;if(!$kf)$kf=base64_encode(rand_string());return$kf;}function
page_messages($m){$Ri=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Xe=[];if(isset($_SESSION["messages"][$Ri]))$Xe=$_SESSION["messages"][$Ri];if(count($Xe)>0){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Xe)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Ri]);}if($m)echo"<div class='error'>$m</div>\n";}function
page_footer($af=""){global$b,$vi;echo'</div>

';switch_lang();if($af!="auth"){echo'<form action="" method="post">
<p class="logout">
<input type="submit" name="logout" value="',lang(86),'" id="logout">
<input type="hidden" name="token" value="',$vi,'">
</p>
</form>
';}echo'<div id="menu">
';$b->navigation($af);echo'</div>
',script("setupSubmitHighlight(document);"),script("setupCopyToClipboard(document);"),"</body>\n</html>";}function
int32($df){while($df>=2147483648)$df-=4294967296;while($df<=-2147483649)$df+=4294967296;return(int)$df;}function
long2str($W,$ij){$fh='';foreach($W
as$X)$fh.=pack('V',$X);if($ij)return
substr($fh,0,end($W));return$fh;}function
str2long($fh,$ij){$W=array_values(unpack('V*',str_pad($fh,4*ceil(strlen($fh)/4),"\0")));if($ij)$W[]=strlen($fh);return$W;}function
xxtea_mx($uj,$tj,$Sh,$ne){return
int32((($uj>>5&0x7FFFFFF)^$tj<<2)+(($tj>>3&0x1FFFFFFF)^$uj<<4))^int32(($Sh^$tj)+($ne^$uj));}function
encrypt_string($Nh,$x){if($Nh=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Nh,true);$df=count($W)-1;$uj=$W[$df];$tj=$W[0];$Bg=floor(6+52/($df+1));$Sh=0;while($Bg-->0){$Sh=int32($Sh+0x9E3779B9);$uc=$Sh>>2&3;for($Uf=0;$Uf<$df;$Uf++){$tj=$W[$Uf+1];$cf=xxtea_mx($uj,$tj,$Sh,$x[$Uf&3^$uc]);$uj=int32($W[$Uf]+$cf);$W[$Uf]=$uj;}$tj=$W[0];$cf=xxtea_mx($uj,$tj,$Sh,$x[$Uf&3^$uc]);$uj=int32($W[$df]+$cf);$W[$df]=$uj;}return
long2str($W,false);}function
decrypt_string($Nh,$x){if($Nh=="")return"";if(!$x)return
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Nh,false);$df=count($W)-1;$uj=$W[$df];$tj=$W[0];$Bg=floor(6+52/($df+1));$Sh=int32($Bg*0x9E3779B9);while($Sh){$uc=$Sh>>2&3;for($Uf=$df;$Uf>0;$Uf--){$uj=$W[$Uf-1];$cf=xxtea_mx($uj,$tj,$Sh,$x[$Uf&3^$uc]);$tj=int32($W[$Uf]-$cf);$W[$Uf]=$tj;}$uj=$W[$df];$cf=xxtea_mx($uj,$tj,$Sh,$x[$Uf&3^$uc]);$tj=int32($W[0]-$cf);$W[0]=$tj;$Sh=int32($Sh-0x9E3779B9);}return
long2str($W,true);}$g='';$Fd=$_SESSION["token"];if(!$Fd)$_SESSION["token"]=rand(1,1e6);$vi=get_token();$kg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$kg[$x]=$X;}}function
validate_server_input(){if(SERVER=="")return;$eg=parse_url(SERVER);if(!$eg)auth_error(lang(32));if(isset($eg['user'])||isset($eg['pass'])||isset($eg['query'])||isset($eg['fragment']))auth_error(lang(32));if(isset($eg['scheme'])&&!preg_match('~^(https?)$~i',$eg['scheme']))auth_error(lang(32));$Ld=(isset($eg['host'])?$eg['host']:'').(isset($eg['path'])?$eg['path']:'');if(strpos(rtrim($Ld,'/'),'/')!==false)auth_error(lang(32));if(isset($eg['port'])&&($eg['port']<1024||$eg['port']>65535))auth_error(lang(87));}function
build_http_url($M,$V,$F,$bc,$ac=null){if(!preg_match('~^(https?://)?([^:]*)(:\d+)?$~',rtrim($M,'/'),$B)){$this->error=lang(32);return
false;}return($B[1]?:"http://").($V!==""||$F!==""?"$V:$F@":"").($B[2]!==""?$B[2]:$bc).(isset($B[3])?$B[3]:($ac?":$ac":""));}function
add_invalid_login(){global$b;$sd=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$sd)return;$ge=unserialize(stream_get_contents($sd));$li=time();if($ge){foreach($ge
as$he=>$X){if($X[0]<$li)unset($ge[$he]);}}$fe=&$ge[$b->bruteForceKey()];if(!$fe)$fe=array($li+30*60,0);$fe[1]++;file_write_unlock($sd,serialize($ge));}function
check_invalid_login(){global$b;$ge=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$fe=($ge?$ge[$b->bruteForceKey()]:array());if($fe===null)return;$jf=($fe[1]>29?$fe[0]-time():0);if($jf>0)auth_error(lang(88,ceil($jf/60)));}$Ka=$_POST["auth"];if($Ka){session_regenerate_id();$dj=$Ka["driver"];$M=trim($Ka["server"]);$V=$Ka["username"];$F=(string)$Ka["password"];$k=$Ka["db"];set_password($dj,$M,$V,$F);$_SESSION["db"][$dj][$M][$V][$k]=true;if($Ka["permanent"]){$x=base64_encode($dj)."-".base64_encode($M)."-".base64_encode($V)."-".base64_encode($k);$wg=$b->permanentLogin(true);$kg[$x]="$x:".base64_encode($wg?encrypt_string($F,$wg):"");cookie("adminer_permanent",implode(" ",$kg));}if(count($_POST)==1||DRIVER!=$dj||SERVER!=$M||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($dj,$M,$V,$k));}elseif($_POST["logout"]&&(!$Fd||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(89));}elseif($kg&&!$_SESSION["pwds"]){session_regenerate_id();$wg=$b->permanentLogin();foreach($kg
as$x=>$X){list(,$hb)=explode(":",$X);list($dj,$M,$V,$k)=array_map('base64_decode',explode("-",$x));set_password($dj,$M,$V,decrypt_string(base64_decode($hb),$wg));$_SESSION["db"][$dj][$M][$V][$k]=true;}}function
unset_permanent(){global$kg;foreach($kg
as$x=>$X){list($dj,$M,$V,$k)=array_map('base64_decode',explode("-",$x));if($dj==DRIVER&&$M==SERVER&&$V==$_GET["username"]&&$k==DB)unset($kg[$x]);}cookie("adminer_permanent",implode(" ",$kg));}function
auth_error($m){global$b,$Fd;$uh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$uh]||$_GET[$uh])&&!$Fd)$m=lang(90);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$m.=($m?'<br>':'').lang(91,target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$uh]&&$_GET[$uh]&&ini_bool("session.use_only_cookies"))$m=lang(92);$Xf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$Xf["lifetime"]);page_header(lang(38),$m,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".lang(93)."\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(94),lang(95,implode(", ",$qg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){validate_server_input();check_invalid_login();$g=connect();$l=new
Min_Driver($g);}$Ge=null;if(!is_object($g)||($Ge=$b->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?h($g):(is_string($Ge)?$Ge:lang(32)));auth_error($m.(preg_match('~^ | $~',get_password())?'<br>'.lang(96):''));}if($_POST["logout"]&&$Fd&&!verify_token()){page_header(lang(86),lang(97));page_footer("db");exit;}if($Ka&&$_POST["token"])$_POST["token"]=$vi;$m='';if($_POST){if(!verify_token()){$ae="max_input_vars";$Re=ini_get($ae);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$Re||$X<$Re)){$ae=$x;$Re=$X;}}}$m=(!$_POST["token"]&&$Re?lang(98,"'$ae'"):lang(97).' '.lang(99));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(100,"'post_max_size'");if(isset($_GET["sql"]))$m.=' '.lang(101);}function
select($H,$h=null,$Kf=array(),$y=0){global$w;$_=array();$v=array();$e=array();$Ua=array();$U=array();$I=array();odd('');for($r=0;(!$y||$r<$y)&&($J=$H->fetch_row());$r++){if(!$r){echo"<div class='scrollable'>\n","<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($me=0;$me<count($J);$me++){$n=$H->fetch_field();$C=$n->name;$Jf=$n->orgtable;$If=$n->orgname;$I[$n->table]=$Jf;if($Kf&&$w=="sql")$_[$me]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Jf!=""){if(!isset($v[$Jf])){$v[$Jf]=array();foreach(indexes($Jf,$h)as$u){if($u["type"]=="PRIMARY"){$v[$Jf]=array_flip($u["columns"]);break;}}$e[$Jf]=$v[$Jf];}if(isset($e[$Jf][$If])){unset($e[$Jf][$If]);$v[$Jf][$If]=$me;$_[$me]=$Jf;}}if($n->charsetnr==63)$Ua[$me]=true;$U[$me]=$n->type;echo"<th".($Jf!=""||$n->name!=$If?" title='".h(($Jf!=""?"$Jf.":"").$If)."'":"").">".h($C).($Kf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($J
as$x=>$X){$z="";if(isset($_[$x])&&!$e[$_[$x]]){if($Kf&&$w=="sql"){$Q=$J[array_search("table=",$_)];$z=ME.$_[$x].urlencode($Kf[$Q]!=""?$Kf[$Q]:$Q);}else{$z=ME."edit=".urlencode($_[$x]);foreach($v[$_[$x]]as$lb=>$me)$z.="&where".urlencode("[".bracket_escape($lb)."]")."=".urlencode($J[$me]);}}elseif(is_url($X))$z=$X;if($X===null)$X="<i>NULL</i>";elseif($Ua[$x]&&!is_utf8($X))$X="<i>".lang(48,strlen($X))."</i>";else{$X=h($X);if($U[$x]==254)$X="<code>$X</code>";}if($z)$X="<a href='".h($z)."'".(is_url($z)?target_blank():'').">$X</a>";echo"<td>$X";}}echo($r?"</table>\n</div>":"<p class='message'>".lang(12))."\n";return$I;}function
referencable_primary($nh){$I=array();foreach(table_status('',true)as$Wh=>$Q){if($Wh!=$nh&&fk_support($Q)){foreach(fields($Wh)as$n){if($n["primary"]){if($I[$Wh]){unset($I[$Wh]);break;}$I[$Wh]=$n;}}}}return$I;}function
adminer_settings(){parse_str($_COOKIE["adminer_settings"],$wh);return$wh;}function
adminer_setting($x){$wh=adminer_settings();return$wh[$x];}function
set_adminer_settings($wh){return
cookie("adminer_settings",http_build_query($wh+adminer_settings()));}function
textarea($C,$Y,$K=10,$qb=80){global$w;echo"<textarea name='".h($C)."' rows='$K' cols='$qb' class='sqlarea jush-$w' 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($x,$n,$ob,$od=array(),$Uc=array()){global$Oh,$U,$Pi,$yf;$T=$n["type"];echo'<td><select name="',h($x),'[type]" class="type" aria-labelledby="label-type">';if($T&&!isset($U[$T])&&!isset($od[$T])&&!in_array($T,$Uc))$Uc[]=$T;if($od)$Oh[lang(102)]=$od;echo
optionlist(array_merge($Uc,$Oh),$T),'</select><td><input name="',h($x),'[length]" value="',h($n["length"]),'" size="3"',(!$n["length"]&&preg_match('~var(char|binary)$~',$T)?" class='required'":"");echo' aria-labelledby="label-length"><td class="options">',"<select name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$T)?"":" class='hidden'").'><option value="">('.lang(103).')'.optionlist($ob,$n["collation"]).'</select>',($Pi?"<select name='".h($x)."[unsigned]'".(!$T||preg_match(number_type(),$T)?"":" class='hidden'").'><option>'.optionlist($Pi,$n["unsigned"]).'</select>':''),(isset($n['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$T)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(104).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).'</select>':''),($od?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$T)?"":" class='hidden'")."><option value=''>(".lang(105).")".optionlist(explode("|",$yf),$n["on_delete"])."</select> ":" ");}function
process_length($Be){global$Ec;return(preg_match("~^\\s*\\(?\\s*$Ec(?:\\s*,\\s*$Ec)*+\\s*\\)?\\s*\$~",$Be)&&preg_match_all("~$Ec~",$Be,$B)?"(".implode(",",$B[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$Be)));}function
process_type($n,$mb="COLLATE"){global$Pi;if(DRIVER==='server'&&($n['unsigned']==='unsigned'||stripos((string)$n['type'],'int')!==false)&&min_version(8))$n["length"]='';return" $n[type]".process_length($n["length"]).(preg_match(number_type(),$n["type"])&&in_array($n["unsigned"],$Pi)?" $n[unsigned]":"").(preg_match('~char|text|enum|set~',$n["type"])&&$n["collation"]?" $mb ".q($n["collation"]):"");}function
process_field($n,$Hi){return
array(idf_escape(trim($n["field"])),process_type($Hi),($n["null"]?" NULL":" NOT NULL"),default_value($n),(preg_match('~timestamp|datetime~',$n["type"])&&$n["on_update"]?" ON UPDATE $n[on_update]":""),(support("comment")&&$n["comment"]!=""?" COMMENT ".q($n["comment"]):""),($n["auto_increment"]?auto_increment():null),);}function
default_value($n){$Zb=$n["default"];return($Zb===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$n["type"])||preg_match('~^(?![a-z])~i',$Zb)?q($Zb):$Zb));}function
type_class($T){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$T))return" class='$x'";}}function
edit_fields($o,$ob,$T="TABLE",$od=array()){global$be;$o=array_values($o);$cc=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class='hidden'");$vb=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class='hidden'");echo'<thead><tr>
';if($T=="PROCEDURE"){echo'<td>';}echo'<th id="label-name">',($T=="TABLE"?lang(106):lang(107)),'<td id="label-type">',lang(50),'<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(108),'<td>',lang(109);if($T=="TABLE"){echo'<td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym id="label-ai" title="',lang(52),'">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"',$cc,'>',lang(53),(support("comment")?"<td id='label-comment'$vb>".lang(51):"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($o))."]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.4")."' alt='+' title='".lang(110)."'>".script("row_count = ".count($o).";"),'</thead>
<tbody>
',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($o
as$r=>$n){$r++;$Lf=$n[($_POST?"orig":"field")];$kc=(isset($_POST["add"][$r-1])||(isset($n["field"])&&isset($_POST["drop_col"][$r])===false))&&(support("drop_col")||$Lf=="");echo'<tr',($kc?"":" style='display: none;'"),'>
',($T=="PROCEDURE"?"<td>".html_select("fields[$r][inout]",explode("|",$be),$n["inout"]):""),'<th>';if($kc){echo'<input name="fields[',$r,'][field]" value="',h($n["field"]),'" data-maxlength="64" autocapitalize="off" aria-labelledby="label-name">';}echo'<input type="hidden" name="fields[',$r,'][orig]" value="',h($Lf),'">';edit_type("fields[$r]",$n,$ob,$od);if($T=="TABLE"){echo'<td>',checkbox("fields[$r][null]",1,$n["null"],"","","block","label-null"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$r,'"';if($n["auto_increment"]){echo' checked';}echo' aria-labelledby="label-ai"></label><td',$cc,'>',checkbox("fields[$r][has_default]",1,$n["has_default"],"","","","label-default"),'<input name="fields[',$r,'][default]" value="',h($n["default"]),'" aria-labelledby="label-default">',(support("comment")?"<td$vb><input name='fields[$r][comment]' value='".h($n["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$r]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.4")."' alt='+' title='".lang(110)."'> "."<input type='image' class='icon' name='up[$r]' src='".h(preg_replace("~\\?.*~","",ME)."?file=up.gif&version=4.8.4")."' alt='↑' title='".lang(111)."'> "."<input type='image' class='icon' name='down[$r]' src='".h(preg_replace("~\\?.*~","",ME)."?file=down.gif&version=4.8.4")."' alt='↓' title='".lang(112)."'> ":""),($Lf==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$r]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.4")."' alt='x' title='".lang(57)."'>":"");}}function
process_fields(&$o){$qf=0;if($_POST["up"]){$we=0;foreach($o
as$x=>$n){if(key($_POST["up"])==$x){unset($o[$x]);array_splice($o,$we,0,array($n));break;}if(isset($n["field"]))$we=$qf;$qf++;}}elseif($_POST["down"]){$qd=false;foreach($o
as$x=>$n){if(isset($n["field"])&&$qd){unset($o[key($_POST["down"])]);array_splice($o,$qf,0,array($qd));break;}if(key($_POST["down"])==$x)$qd=$n;$qf++;}}elseif($_POST["add"]){$o=array_values($o);array_splice($o,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum($A){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($A[0][0].$A[0][0],$A[0][0],substr($A[0],1,-1))),'\\'))."'";}function
grant($wd,$yg,$e,$xf){if(!$yg)return
true;if($yg==array("ALL PRIVILEGES","GRANT OPTION"))return($wd=="GRANT"?queries("$wd ALL PRIVILEGES$xf WITH GRANT OPTION"):queries("$wd ALL PRIVILEGES$xf")&&queries("$wd GRANT OPTION$xf"));return
queries("$wd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$yg).$e).$xf);}function
drop_create($oc,$i,$pc,$ii,$rc,$Fe,$We,$Ue,$Ve,$uf,$hf){if($_POST["drop"])query_redirect($oc,$Fe,$We);elseif($uf=="")query_redirect($i,$Fe,$Ve);elseif($uf!=$hf){$Lb=queries($i);queries_redirect($Fe,$Ue,$Lb&&queries($oc));if($Lb)queries($pc);}else
queries_redirect($Fe,$Ue,queries($ii)&&queries($rc)&&queries($oc)&&queries($i));}function
create_trigger($xf,$J){global$w;$ni=" $J[Timing] $J[Event]".(preg_match('~ OF~',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($w=="mssql"?$xf.$ni:$ni.$xf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
create_routine($bh,$J){global$be,$w;$N=array();$o=(array)$J["fields"];ksort($o);foreach($o
as$n){if($n["field"]!="")$N[]=(preg_match("~^($be)\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$dc=rtrim("\n$J[definition]",";");return"CREATE $bh ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($w=="pgsql"?" AS ".q($dc):"$dc;");}function
remove_definer($G){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
format_foreign_key($p){global$yf;$k=$p["db"];$lf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$p["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($lf!=""&&$lf!=$_GET["ns"]?idf_escape($lf).".":"").table($p["table"])." (".implode(", ",array_map('idf_escape',$p["target"])).")".(preg_match("~^($yf)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^($yf)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
tar_file($dd,$si){$I=pack("a100a8a8a8a12a12",$dd,644,0,0,decoct($si->size),decoct(time()));$gb=8*32;for($r=0;$r<strlen($I);$r++)$gb+=ord($I[$r]);$I.=sprintf("%06o",$gb)."\0 ";echo$I,str_repeat("\0",512-strlen($I));$si->send();echo
str_repeat("\0",511-($si->size+511)%512);}function
ini_bytes($ae){$X=ini_get($ae);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
doc_link($hg,$ji="<sup>?</sup>"){global$w,$g;$sh=$g->server_info;$ej=preg_replace('~^(\d\.?\d).*~s','\1',$sh);$Ti=array('sql'=>"https://dev.mysql.com/doc/refman/$ej/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$ej/",'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',$sh)."&id=",);if(preg_match('~MariaDB~',$sh)){$Ti['sql']="https://mariadb.com/kb/en/library/";$hg['sql']=(isset($hg['mariadb'])?$hg['mariadb']:str_replace(".html","/",$hg['sql']));}return($hg[$w]?"<a href='".h($Ti[$w].$hg[$w])."'".target_blank().">$ji</a>":"");}function
ob_gzencode($P){return
gzencode($P);}function
db_size($k){global$g;if(!$g->select_db($k))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,$vi,$m,$nc;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(37).": ".h(DB),lang(113),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(114),drop_databases($_POST["db"]));page_header(lang(115),$m,false);$xa=['database'=>lang(116),'privileges'=>lang(73),'processlist'=>lang(117),'variables'=>lang(118),'status'=>lang(119),];$_=[];foreach($xa
as$x=>$X){if(support($x))$_[]="<a href='".h(ME)."$x='>$X</a>";}echo
generate_linksbar($_),"<p>".lang(120,$nc[DRIVER],"<b>".h($g->server_info)."</b>","<b>$g->extension</b>")."\n","<p>".lang(121,"<b>".h(logged_user())."</b>")."\n";$j=$b->databases();if($j){$ih=support("scheme");$ob=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(122)."</a>"."<td>".lang(123)."<td>".lang(124)."<td>".lang(125)." - <a href='".h(ME)."dbsize=1'>".lang(126)."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$j=($_GET["dbsize"]?count_tables($j):array_flip($j));foreach($j
as$k=>$S){$ah=h(ME)."db=".urlencode($k);$s=h("Db-".$k);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$s):""),"<th><a href='$ah' id='$s'>".h($k)."</a>";$nb=h(db_collation($k,$ob));echo"<td>".(support("database")?"<a href='$ah".($ih?"&amp;ns=":"")."&amp;database=' title='".lang(69)."'>$nb</a>":$nb),"<td align='right'><a href='$ah&amp;schema=' id='tables-".h($k)."' title='".lang(72)."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($k)."'>".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".lang(127)." <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(128)."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),"<input type='hidden' name='token' value='$vi'>\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(80).": ".h($_GET["ns"]),lang(129),true);page_footer("ns");exit;}}}$yf="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);}}$Ec="'(?:''|[^'\\\\]|\\\\.)*'";$be="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"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$l->select($a,$L,array(where($_GET,$o)),$L);$J=($H?$H->fetch_row():array());echo$l->value($J[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error();$R=table_status1($a,true);$C=$b->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?lang(130):lang(131):lang(132)).": ".($C!=""?$C:h($a)),$m);$b->selectLinks($R);$ub=$R["Comment"];if($ub!="")echo"<p class='nowrap'>".lang(51).": ".h($ub)."\n";if($o)$b->tableStructurePrint($o);if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".lang(133)."</h3>\n";$v=indexes($a);if($v)$b->tableIndexesPrint($v);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(134)."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".lang(102)."</h3>\n";$od=foreign_keys($a);if($od){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(135)."<td>".lang(136)."<td>".lang(105)."<td>".lang(104)."<td></thead>\n";foreach($od
as$C=>$p){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('h',$p["source"]))."</i>","<td><a href='".h($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME))."table=".urlencode($p["table"])."'>".($p["db"]!=""?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$p["target"]))."</i>)","<td>".h($p["on_delete"])."\n","<td>".h($p["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.lang(137).'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(138)."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(139)."</h3>\n";$Gi=triggers($a);if($Gi){echo"<table cellspacing='0'>\n";foreach($Gi
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".lang(137)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(140)."</a>\n";}}elseif(isset($_GET["schema"])){page_header(lang(72),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Yh=array();$Zh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$B,PREG_SET_ORDER);foreach($B
as$r=>$A){$Yh[$A[1]]=array($A[2],$A[3]);$Zh[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$wi=0;$Ra=-1;$hh=array();$Mg=array();$_e=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$ng=0;$hh[$Q]["fields"]=array();foreach(fields($Q)as$C=>$n){$ng+=1.25;$n["pos"]=$ng;$hh[$Q]["fields"][$C]=$n;}$hh[$Q]["pos"]=($Yh[$Q]?$Yh[$Q]:array($wi,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$ye=$Ra;if($Yh[$Q][1]||$Yh[$X["table"]][1])$ye=min(floatval($Yh[$Q][1]),floatval($Yh[$X["table"]][1]))-1;else$Ra-=.1;while($_e[(string)$ye])$ye-=.0001;$hh[$Q]["references"][$X["table"]][(string)$ye]=array($X["source"],$X["target"]);$Mg[$X["table"]][$Q][(string)$ye]=$X["target"];$_e[(string)$ye]=true;}}$wi=max($wi,$hh[$Q]["pos"][0]+2.5+$ng);}echo'<div id="schema" style="height: ',$wi,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = function () { return false; };
var tablePos = {',implode(",",$Zh)."\n",'};
var em = qs(\'#schema\').offsetHeight / ',$wi,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($hh
as$C=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($C).'"><b>'.h($C)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$n){$X='<span'.type_class($n["type"]).' title="'.h($n["full_type"].($n["null"]?" NULL":'')).'">'.h($n["field"]).'</span>';echo"<br>".($n["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$fi=>$Ng){foreach($Ng
as$ye=>$Jg){$ze=$ye-$Yh[$C][1];$r=0;foreach($Jg[0]as$Ch)echo"\n<div class='references' title='".h($fi)."' id='refs$ye-".($r++)."' style='left: $ze"."em; top: ".$Q["fields"][$Ch]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$ze)."em;'></div></div>";}}foreach((array)$Mg[$C]as$fi=>$Ng){foreach($Ng
as$ye=>$e){$ze=$ye-$Yh[$C][1];$r=0;foreach($e
as$ei)echo"\n<div class='references' title='".h($fi)."' id='refd$ye-".($r++)."' style='left: $ze"."em; top: ".$Q["fields"][$ei]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME)."?file=arrow.gif) no-repeat right center;&version=4.8.4")."'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$ze)."em;'></div></div>";}}echo"\n</div>\n";}foreach($hh
as$C=>$Q){foreach((array)$Q["references"]as$fi=>$Ng){foreach($Ng
as$ye=>$Jg){$Ze=$wi;$Pe=-10;foreach($Jg[0]as$x=>$Ch){$og=$Q["pos"][0]+$Q["fields"][$Ch]["pos"];$pg=$hh[$fi]["pos"][0]+$hh[$fi]["fields"][$Jg[1][$x]]["pos"];$Ze=min($Ze,$og,$pg);$Pe=max($Pe,$og,$pg);}echo"<div class='references' id='refl$ye' style='left: $ye"."em; top: $Ze"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($Pe-$Ze)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">',lang(141),'</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){$Hb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$x)$Hb.="&$x=".urlencode($_POST[$x]);cookie("adminer_export",substr($Hb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Rc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$je=preg_match('~sql~',$_POST["format"]);if($je){echo"-- Adminer $ia ".$nc[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($w=="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 = ''");}}$Ph=$_POST["db_style"];$j=array(DB);if(DB==""){$j=$_POST["databases"];if(is_string($j))$j=explode("\n",rtrim(str_replace("\r","",$j),"\n"));}foreach((array)$j
as$k){$b->dumpDatabase($k);if($g->select_db($k)){if($je&&preg_match('~CREATE~',$Ph)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1))){set_utf8mb4($i);if($Ph=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($k).";\n";echo"$i;\n";}if($je){if($Ph)echo
use_sql($k).";\n\n";$Rf="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$bh){foreach(get_rows("SHOW $bh STATUS WHERE Db = ".q($k),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $bh ".idf_escape($J["Name"]),2));set_utf8mb4($i);$Rf.=($Ph!='DROP+CREATE'?"DROP $bh 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);$Rf.=($Ph!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($Rf)echo"DELIMITER ;;\n\n$Rf"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$gj=array();foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));$Rb=(DB==""||in_array($C,(array)$_POST["data"]));if($Q||$Rb){if($Rc=="tar"){$si=new
TmpFile;ob_start(array($si,'write'),1e5);}$b->dumpTable($C,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$gj[]=$C;elseif($Rb){$o=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($C));}if($je&&$_POST["triggers"]&&$Q&&($Gi=trigger_sql($C)))echo"\nDELIMITER ;;\n$Gi\nDELIMITER ;\n";if($Rc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$C.csv",$si);}elseif($je)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($C);}}foreach($gj
as$fj)$b->dumpTable($fj,$_POST["table_style"],1);if($Rc=="tar")echo
pack("x512");}}}if($je)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(76),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table cellspacing="0" class="layout">
';$Wb=array('','USE','DROP+CREATE','CREATE');$ai=array('','DROP+CREATE','CREATE');$Sb=array('','TRUNCATE+INSERT','INSERT');if($w=="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(142)."<td>".html_select("output",$b->dumpOutput(),$J["output"],0)."\n";echo"<tr><th>".lang(143)."<td>".html_select("format",$b->dumpFormat(),$J["format"],0)."\n";echo($w=="sqlite"?"":"<tr><th>".lang(37)."<td>".html_select('db_style',$Wb,$J["db_style"]).(support("routine")?checkbox("routines",1,$J["routines"],lang(144)):"").(support("event")?checkbox("events",1,$J["events"],lang(145)):"")),"<tr><th>".lang(124)."<td>".html_select('table_style',$ai,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(52)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(139)):""),"<tr><th>".lang(146)."<td>".html_select('data_style',$Sb,$J["data_style"]),'</table>
<p><input type="submit" value="',lang(76),'">
<input type="hidden" name="token" value="',$vi,'">

<table cellspacing="0">
',script("qsl('table').onclick = dumpClick;");$sg=array();if(DB!=""){$eb=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$eb>".lang(124)."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(146)."<input type='checkbox' id='check-data'$eb></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$gj="";$bi=tables_list();foreach($bi
as$C=>$T){$rg=preg_replace('~_.*~','',$C);$eb=($a==""||$a==(substr($a,-1)=="%"?"$rg%":$C));$vg="<tr><td>".checkbox("tables[]",$C,$eb,$C,"","block");if($T!==null&&!preg_match('~table~i',$T))$gj.="$vg\n";else
echo"$vg<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$eb)."</label>\n";$sg[$rg]++;}echo$gj;if($bi)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";$j=$b->databases();if($j){foreach($j
as$k){if(!information_schema($k)){$rg=preg_replace('~_.*~','',$k);echo"<tr><td>".checkbox("databases[]",$k,$a==""||$a=="$rg%",$k,"","block")."\n";$sg[$rg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$fd=true;foreach($sg
as$x=>$X){if($x!=""&&$X>1){echo($fd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$fd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(73));echo'<p class="links"><a href="'.h(ME).'user=">'.lang(147)."</a>";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$wd=$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",($wd?"":"<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(!$wd||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(!$m&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Jd=&get_session("queries");$Id=&$Jd[DB];if(!$m&&$_POST["clear"]){$Id=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(75):lang(66)),$m);if(!$m&&$_POST){$sd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$Gh=$b->importServerPath();$sd=@fopen((file_exists($Gh)?$Gh:"compress.zlib://$Gh.gz"),"rb");$G=($sd?fread($sd,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){$Bg=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Id||reset(end($Id))!=$Bg){restart_session();$Id[]=array($Bg,time());set_session("queries",$Jd);stop_session();}}$Dh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$fc=";";$qf=0;$Bc=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$tb=0;$Gc=array();$Yf='[\'"'.($w=="sql"?'`#':($w=="sqlite"?'`[':($w=="mssql"?'[':''))).']|/\*|-- |$'.($w=="pgsql"?'|\$[^$]*\$':'');$xi=microtime(true);parse_str($_COOKIE["adminer_export"],$za);$tc=$b->dumpFormat();unset($tc["sql"]);while($G!=""){if(!$qf&&preg_match("~^$Dh*+DELIMITER\\s+(\\S+)~i",$G,$A)){$fc=$A[1];$G=substr($G,strlen($A[0]));}else{preg_match('('.preg_quote($fc)."\\s*|$Yf)",$G,$A,PREG_OFFSET_CAPTURE,$qf);list($qd,$ng)=$A[0];if(!$qd&&$sd&&!feof($sd))$G.=fread($sd,1e5);else{if(!$qd&&rtrim($G)=="")break;$qf=$ng+strlen($qd);if($qd&&rtrim($qd)!=$fc){while(preg_match('('.($qd=='/*'?'\*/':($qd=='['?']':(preg_match('~^-- |^#~',$qd)?"\n":preg_quote($qd)."|\\\\."))).'|$)s',$G,$A,PREG_OFFSET_CAPTURE,$qf)){$fh=$A[0][0];if(!$fh&&$sd&&!feof($sd))$G.=fread($sd,1e5);else{$qf=$A[0][1]+strlen($fh);if($fh[0]!="\\")break;}}}else{$Bc=false;$Bg=substr($G,0,$ng);$tb++;$vg="<pre id='sql-$tb'><code class='jush-$w copy-to-clipboard'>".$b->sqlCommandQuery($Bg)."</code></pre>\n";$vg.=generate_linksbar(["<a href='#' class='copy-to-clipboard'>".lang(47)."</a>"]);if($w=="sqlite"&&preg_match("~^$Dh*+ATTACH\\b~i",$Bg,$A)){echo$vg,"<p class='error'>".lang(148)."\n";$Gc[]=" <a href='#sql-$tb'>$tb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$vg;ob_flush();flush();}$Kh=microtime(true);if($g->multi_query($Bg)&&is_object($h)&&preg_match("~^$Dh*+USE\\b~i",$Bg))$h->query($Bg);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$vg:""),"<p class='error'>".lang(149).($g->errno?" ($g->errno)":"").": ".error()."\n";$Gc[]=" <a href='#sql-$tb'>$tb</a>";if($_POST["error_stops"])break
2;}else{$li=" <span class='time'>(".format_time($Kh).")</span>".(strlen($Bg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($Bg))."'>".lang(10)."</a>":"");$Aa=$g->affected_rows;$jj=($_POST["only_errors"]?"":$l->warnings());$kj="warnings-$tb";if($jj)$li.=", <a href='#$kj'>".lang(46)."</a>".script("qsl('a').onclick = partial(toggle, '$kj');","");$Oc=null;$Pc="explain-$tb";if(is_object($H)){$y=$_POST["limit"];$Kf=select($H,$h,array(),$y);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$mf=$H->num_rows;echo"<p>".($mf?($y&&$mf>$y?lang(150,$y):"").lang(151,$mf):""),$li;if($h&&preg_match("~^($Dh|\\()*+SELECT\\b~i",$Bg)&&($Oc=explain($h,$Bg)))echo", <a href='#$Pc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Pc');","");$s="export-$tb";echo", <a href='#$s'>".lang(76)."</a>".script("qsl('a').onclick = partial(toggle, '$s');","")."<span id='$s' class='hidden'>: ".html_select("output",$b->dumpOutput(),$za["output"])." ".html_select("format",$tc,$za["format"])."<input type='hidden' name='query' value='".h($Bg)."'>"." <input type='submit' name='export' value='".lang(76)."'><input type='hidden' name='token' value='$vi'></span>\n"."</form>\n";}}else{if(preg_match("~^$Dh*+(CREATE|DROP|ALTER)$Dh++(DATABASE|SCHEMA)\\b~i",$Bg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($g->info)."'>".lang(152,$Aa)."$li\n";}echo($jj?"<div id='$kj' class='hidden'>\n$jj</div>\n":"");if($Oc){echo"<div id='$Pc' class='hidden'>\n";select($Oc,$h,$Kf);echo"</div>\n";}}$Kh=microtime(true);}while($g->next_result());}$G=substr($G,$qf);$qf=0;}}}}if($Bc)echo"<p class='message'>".lang(153)."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(154,$tb-count($Gc))," <span class='time'>(".format_time($xi).")</span>\n";}elseif($Gc&&$tb>1)echo"<p class='error'>".lang(149).": ".implode("",$Gc)."\n";}else
echo"<p class='error'>".upload_error($G)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$Mc="<input type='submit' value='".lang(155)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Bg=$_GET["sql"];if($_POST)$Bg=$_POST["query"];elseif($_GET["history"]=="all")$Bg=$Id;elseif($_GET["history"]!="")$Bg=$Id[$_GET["history"]][0];echo"<p>";textarea("query",$Bg,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>$Mc\n",lang(156).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".lang(157)."</legend><div>";$Bd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$Bd (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Mc":lang(158)),"</div></fieldset>\n";$Qd=$b->importServerPath();if($Qd){echo"<fieldset><legend>".lang(159)."</legend><div>",lang(160,"<code>".h($Qd)."$Bd</code>"),' <input type="submit" name="webfile" value="'.lang(161).'">',"</div></fieldset>\n";}echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(162))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(163))."\n","<input type='hidden' name='token' value='$vi'>\n";if(!isset($_GET["import"])&&$Id){print_fieldset("history",lang(164),$_GET["history"]!="");for($X=end($Id);$X;$X=prev($Id)){$x=key($Id);list($Bg,$li,$xc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'" class="edit" title="'.lang(10).'">'.lang(10)."</a>"." <span class='time' title='".@date('Y-m-d',$li)."'>".@date("H:i:s",$li)."</span>"." <code class='jush-$w'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$Bg)))),80,"</code>").($xc?" <span class='time'>($xc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(165)."'>\n","<a href='".h(ME."sql=&history=all")."' class='edit-all' title='".lang(166)."'>".lang(166)."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$Qi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
as$C=>$n){if(!isset($n["privileges"][$Qi?"update":"insert"])||$b->fieldName($n)==""||$n["generated"])unset($o[$C]);}if($_POST&&!$m&&!isset($_GET["select"])){$Fe=$_POST["referer"];if($_POST["insert"])$Fe=($Qi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Fe))$Fe=ME."select=".urlencode($a);$v=indexes($a);$Li=unique_array($_GET["where"],$v);$Eg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Fe,lang(167),$l->delete($a,$Eg,!$Li));else{$N=array();foreach($o
as$C=>$n){$X=process_input($n);if($X!==false&&$X!==null)$N[idf_escape($C)]=$X;}if($Qi){if(!$N)redirect($Fe);queries_redirect($Fe,lang(168),$l->update($a,$N,$Eg,!$Li));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$H=$l->insert($a,$N);$xe=($H?last_id():0);queries_redirect($Fe,lang(169,($xe?" $xe":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($o
as$C=>$n){if(isset($n["privileges"]["select"])){$Ha=convert_field($n);if($_POST["clone"]&&$n["auto_increment"])$Ha="''";if($w=="sql"&&preg_match("~enum|set~",$n["type"]))$Ha="1*".idf_escape($C);$L[]=($Ha?"$Ha AS ":"").idf_escape($C);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$l->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$m=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$o){if(!$Z){$H=$l->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($l->primary=>"");}if($J){foreach($J
as$x=>$X){if(!$Z)$J[$x]=null;$o[$x]=array("field"=>$x,"null"=>($x!=$l->primary),"auto_increment"=>($x==$l->primary));}}}edit_form($a,$o,$J,$Qi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$ag=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$x)$ag[$x]=$x;$Lg=referencable_primary($a);$od=array();foreach($Lg
as$Wh=>$n)$od[str_replace("`","``",$Wh)."`".str_replace("`","``",$n["field"])]=$Wh;$Nf=array();$R=array();if($a!=""){$Nf=fields($a);$R=table_status($a);if(!$R)$m=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"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(170),drop_tables(array($a)));else{$o=array();$Ea=array();$Ui=false;$md=array();$Mf=reset($Nf);$Ca=" FIRST";foreach($J["fields"]as$x=>$n){$p=$od[$n["type"]];$Hi=($p!==null?$Lg[$p]:$n);if($n["field"]!=""){if(!$n["has_default"])$n["default"]=null;if($x==$J["auto_increment_col"])$n["auto_increment"]=true;$_g=process_field($n,$Hi);$Ea[]=array($n["orig"],$_g,$Ca);if(!$Mf||$_g!=process_field($Mf,$Mf)){$o[]=array($n["orig"],$_g,$Ca);if($n["orig"]!=""||$Ca)$Ui=true;}if($p!==null)$md[idf_escape($n["field"])]=($a!=""&&$w!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$od[$n["type"]],'source'=>array($n["field"]),'target'=>array($Hi["field"]),'on_delete'=>$n["on_delete"],));$Ca=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Ui=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Mf=next($Nf);if(!$Mf)$Ca="";}}$cg="";if($ag[$J["partition_by"]]){$dg=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$x=>$X){$Y=$J["partition_values"][$x];$dg[]="\n  PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$cg.="\nPARTITION BY $J[partition_by]($J[partition])".($dg?" (".implode(",",$dg)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$cg.="\nREMOVE PARTITIONING";$Te=lang(171);if($a==""){cookie("adminer_engine",$J["Engine"]);$Te=lang(172);}$C=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Te,alter_table($a,$C,($w=="sqlite"&&($Ui||$md)?$Ea:$o),$md,($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"]):""),$cg));}}page_header(($a!=""?lang(44):lang(77)),$m,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($Nf
as$n){$n["has_default"]=isset($n["default"]);$J["fields"][]=$n;}if(support("partitioning")){$td="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 $td ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$dg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $td AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$dg[""]="";$J["partition_names"]=array_keys($dg);$J["partition_values"]=array_values($dg);}}}$ob=collations();$Dc=engines();foreach($Dc
as$Cc){if(!strcasecmp($Cc,$J["Engine"])){$J["Engine"]=$Cc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo
lang(173),': <input name="name" data-maxlength="64" value="',h($J["name"]),'" autocapitalize="off">
';if($a==""&&!$_POST)echo
script("focus(qs('#form')['name']);");echo($Dc?"<select name='Engine'>".optionlist(array(""=>"(".lang(174).")")+$Dc,$J["Engine"])."</select>".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($ob&&!preg_match("~sqlite|mssql~",$w)?html_select("Collation",array(""=>"(".lang(103).")")+$ob,$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"],$ob,"TABLE",$od);echo'</table>
',script("editFields();"),'</div>
<p>
',lang(52),': <input type="number" name="Auto_increment" size="6" value="',h($J["Auto_increment"]),'">
',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),lang(175),"columnShow(this.checked, 5)","jsonly");$wb=($_POST?$_POST["comments"]:adminer_setting("comments"));echo(support("comment")?checkbox("comments",1,$wb,lang(51),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$J["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($wb?"":" class='hidden'").">".h($J["Comment"])."</textarea>":'<input name="Comment" value="'.h($J["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($wb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="',lang(14),'">
';}echo'
';if($a!=""){echo'<input type="submit" name="drop" value="',lang(128),'">',confirm(lang(176,$a));}if(support("partitioning")){$bg=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(177),$J["partition_by"]);echo'<p>
',"<select name='partition_by'>".optionlist(array(""=>"")+$ag,$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(178),': <input type="number" name="partitions" class="size',($bg||!$J["partition_by"]?" hidden":""),'" value="',h($J["partitions"]),'">
<table cellspacing="0" id="partition-table"',($bg?"":" class='hidden'"),'>
<thead><tr><th>',lang(179),'<th>',lang(180),'</thead>
';foreach($J["partition_names"]as$x=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($x==count($J["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h($J["partition_values"][$x]).'">';}echo'</table>
</div></fieldset>
';}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Td=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"]))$Td[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$Td[]="SPATIAL";$v=indexes($a);$tg=array();if($w=="mongo"){$tg=$v["_id_"];unset($Td[0]);unset($v["_id_"]);}$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$u){$C=$u["name"];if(in_array($u["type"],$Td)){$e=array();$Ce=array();$hc=array();$N=array();ksort($u["columns"]);foreach($u["columns"]as$x=>$d){if($d!=""){$Be=$u["lengths"][$x];$gc=$u["descs"][$x];$N[]=idf_escape($d).($Be?"(".(+$Be).")":"").($gc?" DESC":"");$e[]=$d;$Ce[]=($Be?$Be:null);$hc[]=$gc;}}if($e){$Nc=$v[$C];if($Nc){ksort($Nc["columns"]);ksort($Nc["lengths"]);ksort($Nc["descs"]);if($u["type"]==$Nc["type"]&&array_values($Nc["columns"])===$e&&(!$Nc["lengths"]||array_values($Nc["lengths"])===$Ce)&&array_values($Nc["descs"])===$hc){unset($v[$C]);continue;}}$c[]=array($u["type"],$C,$N);}}}foreach($v
as$C=>$Nc)$c[]=array($Nc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(181),alter_indexes($a,$c));}page_header(lang(133),$m,array("table"=>$a),h($a));$o=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$x=>$u){if($u["columns"][count($u["columns"])]!="")$J["indexes"][$x]["columns"][]="";}$u=end($J["indexes"]);if($u["type"]||array_filter($u["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($v
as$x=>$u){$v[$x]["name"]=$x;$v[$x]["columns"][]="";}$v[]=array("columns"=>array(1=>""));$J["indexes"]=$v;}echo'
<form action="" method="post">
<div class="scrollable">
<table cellspacing="0" class="nowrap">
<thead><tr>
<th id="label-type">',lang(182),'<th><input type="submit" class="wayoff">',lang(183),'<th id="label-name">',lang(184),'<th><noscript>',"<input type='image' class='icon' name='add[0]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.4")."' alt='+' title='".lang(110)."'>",'</noscript>
</thead>
';if($tg){echo"<tr><td>PRIMARY<td>";foreach($tg["columns"]as$x=>$d){echo
select_input(" disabled",$o,$d),"<label><input disabled type='checkbox'>".lang(61)."</label> ";}echo"<td><td>\n";}$me=1;foreach($J["indexes"]as$u){if(!$_POST["drop_col"]||$me!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$me][type]",array(-1=>"")+$Td,$u["type"],($me==count($J["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"<td>";ksort($u["columns"]);$r=1;foreach($u["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$me][columns][$r]' title='".lang(49)."'",($o?array_combine($o,$o):$o),$d,"partial(".($r==count($u["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape($w=="sql"?"":$_GET["indexes"]."_")."')"),($w=="sql"||$w=="mssql"?"<input type='number' name='indexes[$me][lengths][$r]' class='size' value='".h($u["lengths"][$x])."' title='".lang(108)."'>":""),(support("descidx")?checkbox("indexes[$me][descs][$r]",1,$u["descs"][$x],lang(61)):"")," </span>";$r++;}echo"<td><input name='indexes[$me][name]' value='".h($u["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td><input type='image' class='icon' name='drop_col[$me]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.4")."' alt='x' title='".lang(57)."'>".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$me++;}echo'</table>
</div>
<p>
<input type="submit" value="',lang(14),'">
<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(185),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(186),rename_database($C,$J["collation"]));}else{$j=explode("\n",str_replace("\r","",$C));$Qh=true;$we="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$J["collation"]))$Qh=false;$we=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($we),lang(187),$Qh);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(188));}}page_header(DB!=""?lang(69):lang(116),$m,array(),h(DB));$ob=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$ob);elseif($w=="sql"){foreach(get_vals("SHOW GRANTS")as$wd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$wd,$A)&&$A[1]){$C=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add_x"]||strpos($C,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($C).'</textarea><br>':'<input name="name" id="name" value="'.h($C).'" data-maxlength="64" autocapitalize="off">')."\n".($ob?html_select("collation",array(""=>"(".lang(103).")")+$ob,$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(128)."'>".confirm(lang(176,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.4")."' alt='+' title='".lang(110)."'>\n";echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$m){$z=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$z,lang(189));else{$C=trim($J["name"]);$z.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$z,lang(190));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$z,lang(191));else
redirect($z);}}page_header($_GET["ns"]!=""?lang(70):lang(71),$m);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(128)."'>".confirm(lang(176,$_GET["ns"]))."\n";echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(192).": ".h($da),$m);$bh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Rd=array();$Rf=array();foreach($bh["fields"]as$r=>$n){if(substr($n["inout"],-3)=="OUT")$Rf[$r]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Rd[]=$r;}if(!$m&&$_POST){$Za=array();foreach($bh["fields"]as$x=>$n){if(in_array($x,$Rd)){$X=process_input($n);if($X===false)$X="''";if(isset($Rf[$x]))$g->query("SET @".idf_escape($n["field"])." = $X");}$Za[]=(isset($Rf[$x])?"@".idf_escape($n["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Za).")";$Kh=microtime(true);$H=$g->multi_query($G);$Aa=$g->affected_rows;echo$b->selectQuery($G,$Kh,!$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(193,$Aa)." <span class='time'>".@date("H:i:s")."</span>\n";}while($g->next_result());if($Rf)select($g->query("SELECT ".implode(", ",$Rf)));}}echo'
<form action="" method="post">
';if($Rd){echo"<table cellspacing='0' class='layout'>\n";foreach($Rd
as$x){$n=$bh["fields"][$x];$C=$n["field"];echo"<tr><th>".$b->fieldName($n);$Y=$_POST["fields"][$C];if($Y!=""){if($n["type"]=="enum")$Y=+$Y;if($n["type"]=="set")$Y=array_sum($Y);}input($n,$Y,(string)$_POST["function"][$C]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(192),'">
<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Te=($_POST["drop"]?lang(194):($C!=""?lang(195):lang(196)));$Fe=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$ei=array();foreach($J["source"]as$x=>$X)$ei[$x]=$J["target"][$x];$J["target"]=$ei;}if($w=="sqlite")queries_redirect($Fe,$Te,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$oc="\nDROP ".($w=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$oc,$Fe,$Te);else{query_redirect($c.($C!=""?"$oc,":"")."\nADD".format_foreign_key($J),$Fe,$Te);$m=lang(197)."<br>$m";}}}page_header(lang(198),$m,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($C!=""){$od=foreign_keys($a);$J=$od[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
<form action="" method="post">
';$Ch=array_keys(fields($a));if($J["db"]!="")$g->select_db($J["db"]);if($J["ns"]!="")set_schema($J["ns"]);$Kg=array_keys(array_filter(table_status('',true),'fk_support'));$ei=array_keys(fields(in_array($J["table"],$Kg)?$J["table"]:reset($Kg)));$zf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>".lang(199).": ".html_select("table",$Kg,$J["table"],$zf)."\n";if($w=="pgsql")echo
lang(80).": ".html_select("ns",$b->schemas(),$J["ns"]!=""?$J["ns"]:$_GET["ns"],$zf);elseif($w!="sqlite"){$Xb=array();foreach($b->databases()as$k){if(!information_schema($k))$Xb[]=$k;}echo
lang(79).": ".html_select("db",$Xb,$J["db"]!=""?$J["db"]:$_GET["db"],$zf);}echo'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="',lang(200),'"></noscript>
<table cellspacing="0">
<thead><tr><th id="label-source">',lang(135),'<th id="label-target">',lang(136),'</thead>
';$me=0;foreach($J["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$Ch,$X,($me==count($J["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"<td>".html_select("target[".(+$x)."]",$ei,isset($J["target"][$x])?$J["target"][$x]:null,1,"label-target");$me++;}echo'</table>
<p>
',lang(105),': ',html_select("on_delete",array(-1=>"")+explode("|",$yf),$J["on_delete"]),' ',lang(104),': ',html_select("on_update",array(-1=>"")+explode("|",$yf),$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(201),'"></noscript>
';if($C!=""){echo'<input type="submit" name="drop" value="',lang(128),'">',confirm(lang(176,$C));}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Of="VIEW";if($w=="pgsql"&&$a!=""){$O=table_status($a);$Of=strtoupper($O["Engine"]);}if($_POST&&!$m){$C=trim($J["name"]);$Ha=" AS\n$J[select]";$Fe=ME."table=".urlencode($C);$Te=lang(202);$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&$w!="sqlite"&&$T=="VIEW"&&$Of=="VIEW")query_redirect(($w=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ha,$Fe,$Te);else{$gi=$C."_adminer_".uniqid();drop_create("DROP $Of ".table($a),"CREATE $T ".table($C).$Ha,"DROP $T ".table($C),"CREATE $T ".table($gi).$Ha,"DROP $T ".table($gi),($_POST["drop"]?substr(ME,0,-1):$Fe),lang(203),$Te,lang(204),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Of!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(43):lang(205)),$m,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>',lang(184),': <input name="name" value="',h($J["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(130)):""),'<p>';textarea("select",$J["select"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($a!=""){echo'<input type="submit" name="drop" value="',lang(128),'">',confirm(lang(176,$a));}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$ee=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Mh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(206));elseif(in_array($J["INTERVAL_FIELD"],$ee)&&isset($Mh[$J["STATUS"]])){$gh="\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(207):lang(208)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$gh.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$gh)."\n".$Mh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(209).": ".h($aa):lang(210)),$m);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo'
<form action="" method="post">
<table cellspacing="0" class="layout">
<tr><th>',lang(184),'<td><input name="EVENT_NAME" value="',h($J["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(211),'<td><input name="STARTS" value="',h("$J[EXECUTE_AT]$J[STARTS]"),'">
<tr><th title="datetime">',lang(212),'<td><input name="ENDS" value="',h($J["ENDS"]),'">
<tr><th>',lang(213),'<td><input type="number" name="INTERVAL_VALUE" value="',h($J["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$ee,$J["INTERVAL_FIELD"]),'<tr><th>',lang(119),'<td>',html_select("STATUS",$Mh,$J["STATUS"]),'<tr><th>',lang(51),'<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(214)),'</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(128),'">',confirm(lang(176,$aa));}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$bh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$m){$Lf=routine($_GET["procedure"],$bh);$gi="$J[name]_adminer_".uniqid();drop_create("DROP $bh ".routine_id($da,$Lf),create_routine($bh,$J),"DROP $bh ".routine_id($J["name"],$J),create_routine($bh,array("name"=>$gi)+$J),"DROP $bh ".routine_id($gi,$J),substr(ME,0,-1),lang(215),lang(216),lang(217),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(218):lang(219)).": ".h($da):(isset($_GET["function"])?lang(220):lang(221))),$m);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$bh);$J["name"]=$da;}$ob=get_vals("SHOW CHARACTER SET");sort($ob);$ch=routine_languages();echo'
<form action="" method="post" id="form">
<p>',lang(184),': <input name="name" value="',h($J["name"]),'" data-maxlength="64" autocapitalize="off">
',($ch?lang(19).": ".html_select("language",$ch,$J["language"])."\n":""),'<input type="submit" value="',lang(14),'">
<div class="scrollable">
<table cellspacing="0" class="nowrap">
';edit_fields($J["fields"],$ob,$bh);if(isset($_GET["function"])){echo"<tr><td>".lang(222);edit_type("returns",$J["returns"],$ob,array(),($w=="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(128),'">',confirm(lang(176,$da));}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$m){$z=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$z,lang(223));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$z,lang(224));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$z,lang(225));else
redirect($z);}page_header($fa!=""?lang(226).": ".h($fa):lang(227),$m);if(!$J)$J["name"]=$fa;echo'
<form action="" method="post">
<p><input name="name" value="',h($J["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(14),'">
';if($fa!="")echo"<input type='submit' name='drop' value='".lang(128)."'>".confirm(lang(176,$fa))."\n";echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$m){$z=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$z,lang(228));else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$z,lang(229));}page_header($ga!=""?lang(230).": ".h($ga):lang(231),$m);if(!$J)$J["as"]="AS ";echo'
<form action="" method="post">
<p>
';if($ga!="")echo"<input type='submit' name='drop' value='".lang(128)."'>".confirm(lang(176,$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="',$vi,'">
</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$Fi=trigger_options();$J=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$Fi["Timing"])&&in_array($_POST["Event"],$Fi["Event"])&&in_array($_POST["Type"],$Fi["Type"])){$xf=" ON ".table($a);$oc="DROP TRIGGER ".idf_escape($C).($w=="pgsql"?$xf:"");$Fe=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($oc,$Fe,lang(232));else{if($C!="")queries($oc);queries_redirect($Fe,($C!=""?lang(233):lang(234)),queries(create_trigger($xf,$_POST)));if($C!="")queries(create_trigger($xf,$J+array("Type"=>reset($Fi["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(235).": ".h($C):lang(236)),$m,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table cellspacing="0" class="layout">
<tr><th>',lang(237),'<td>',html_select("Timing",$Fi["Timing"],$J["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>',lang(238),'<td>',html_select("Event",$Fi["Event"],$J["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Fi["Event"])?" <input name='Of' value='".h($J["Of"])."' class='hidden'>":""),'<tr><th>',lang(50),'<td>',html_select("Type",$Fi["Type"],$J["Type"]),'</table>
<p>',lang(184),': <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($C!=""){echo'<input type="submit" name="drop" value="',lang(128),'">',confirm(lang(176,$C));}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$yg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Fb)$yg[$Fb][$J["Privilege"]]=$J["Comment"];}$yg["Server Admin"]+=$yg["File access on server"];$yg["Databases"]["Create routine"]=$yg["Procedures"]["Create routine"];unset($yg["Procedures"]["Create routine"]);$yg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$yg["Columns"][$X]=$yg["Tables"][$X];unset($yg["Server Admin"]["Usage"]);foreach($yg["Tables"]as$x=>$X)unset($yg["Databases"][$x]);$gf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$gf[$X]=(array)$gf[$X]+(array)$_POST["grants"][$x];}$xd=array();$vf="";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],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$B,PREG_SET_ORDER)){foreach($B
as$X){if($X[1]!="USAGE")$xd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$xd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$A))$vf=$A[1];}}if($_POST&&!$m){$wf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $wf",ME."privileges=",lang(239));else{$if=q($_POST["user"])."@".q($_POST["host"]);$fg=$_POST["pass"];if($fg!=''&&!$_POST["hashed"]&&!min_version(8)){$fg=$g->result("SELECT PASSWORD(".q($fg).")");$m=!$fg;}$Lb=false;if(!$m){if($wf!=$if){$Lb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $if IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($fg));$m=!$Lb;}elseif($fg!=$vf)queries("SET PASSWORD FOR $if = ".q($fg));}if(!$m){$Yg=array();foreach($gf
as$of=>$wd){if(isset($_GET["grant"]))$wd=array_filter($wd);$wd=array_keys($wd);if(isset($_GET["grant"]))$Yg=array_diff(array_keys(array_filter($gf[$of],'strlen')),$wd);elseif($wf==$if){$tf=array_keys((array)$xd[$of]);$Yg=array_diff($tf,$wd);$wd=array_diff($wd,$tf);unset($xd[$of]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$of,$A)&&(!grant("REVOKE",$Yg,$A[2]," ON $A[1] FROM $if")||!grant("GRANT",$wd,$A[2]," ON $A[1] TO $if"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($wf!=$if)queries("DROP USER $wf");elseif(!isset($_GET["grant"])){foreach($xd
as$of=>$Yg){if(preg_match('~^(.+)(\(.*\))?$~U',$of,$A))grant("REVOKE",array_keys($Yg),$A[2]," ON $A[1] FROM $if");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(240):lang(241)),!$m);if($Lb)$g->query("DROP USER $if");}}page_header((isset($_GET["host"])?lang(35).": ".h("$ha@$_GET[host]"):lang(147)),$m,array("privileges"=>array('',lang(73))));if($_POST){$J=$_POST;$xd=$gf;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$vf;if($vf!="")$J["hashed"]=true;$xd[(DB==""||$xd?"":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(242),"typePassword(this.form['pass'], this.checked);")),'</table>

';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".lang(73).doc_link(array('sql'=>"grant.html#priv_level"));$r=0;foreach($xd
as$of=>$wd){echo'<th>'.($of!="*.*"?"<input name='objects[$r]' value='".h($of)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$r]' value='*.*' size='10'>*.*");$r++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(34),"Databases"=>lang(37),"Tables"=>lang(132),"Columns"=>lang(49),"Procedures"=>lang(243),)as$Fb=>$gc){foreach((array)$yg[$Fb]as$xg=>$ub){echo"<tr".odd()."><td".($gc?">$gc<td":" colspan='2'").' lang="en" title="'.h($ub).'">'.h($xg);$r=0;foreach($xd
as$of=>$wd){$C="'grants[$r][".h(strtoupper($xg))."]'";$Y=$wd[strtoupper($xg)];if($Fb=="Server Admin"&&$of!=(isset($xd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".lang(244)."<option value='0'".($Y=="0"?" selected":"").">".lang(245)."</select>";else{echo"<td align='center'><label class='block'>","<input type='checkbox' name=$C value='1'".($Y?" checked":"").($xg=="All privileges"?" id='grants-$r-all'>":">".($xg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$r-all'); };"))),"</label>";}$r++;}}}echo"</table>\n",'<p>
<input type="submit" value="',lang(14),'">
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',lang(128),'">',confirm(lang(176,"$ha@$_GET[host]"));}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$re=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$re++;}queries_redirect(ME."processlist=",lang(246,$re),$re||!$_POST["kill"]);}}page_header(lang(117),$m);echo'
<form action="" method="post">
<div class="scrollable">
<table cellspacing="0" class="nowrap checkable">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$r=-1;foreach(process_list()as$r=>$J){if(!$r){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($J
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$J[$w=="sql"?"Id":"pid"],0):"");foreach($J
as$x=>$X)echo"<td>".(($w=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$J["Command"])&&$X!="")||($w=="pgsql"&&$x=="current_query"&&$X!="<IDLE>")||($w=="oracle"&&$x=="sql_text"&&$X!="")?"<code class='jush-$w'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($J["db"]!=""?"db=".urlencode($J["db"])."&":"")."sql=".urlencode($X)).'">'.lang(247).'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill")){echo($r+1)."/".lang(248,max_connections()),"<p><input type='submit' value='".lang(249)."'>\n";}echo'<input type="hidden" name="token" value="',$vi,'">
</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$v=indexes($a);$o=fields($a);$od=column_foreign_keys($a);$rf=$R["Oid"];parse_str($_COOKIE["adminer_import"],$_a);$Zg=array();$e=array();$ki=null;foreach($o
as$x=>$n){$C=$b->fieldName($n);if(isset($n["privileges"]["select"])&&$C!=""){$e[$x]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($n))$ki=$b->selectLengthProcess();}$Zg+=$n["privileges"];}list($L,$yd)=$b->selectColumnsProcess($e,$v);$ie=count($yd)<count($L)||strstr($L[0],"DISTINCT");$Z=$b->selectSearchProcess($o,$v);$Hf=$b->selectOrderProcess($o,$v);$y=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Mi=>$J){$Ha=convert_field($o[key($J)]);$L=array($Ha?$Ha:idf_escape(key($J)));$Z[]=where_check($Mi,$o);$I=$l->select($a,$L,$Z,$L);if($I)echo
reset($I->fetch_row());}exit;}$tg=$Oi=null;foreach($v
as$u){if($u["type"]=="PRIMARY"){$tg=array_flip($u["columns"]);$Oi=($L?$tg:array());foreach($Oi
as$x=>$X){if(in_array(idf_escape($x),$L))unset($Oi[$x]);}break;}}if($rf&&!$tg){$tg=$Oi=array($rf=>0);$v[]=array("type"=>"PRIMARY","columns"=>array($rf));}if($_POST&&!$m){$pj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$fb=array();foreach($_POST["check"]as$cb)$fb[]=where_check($cb,$o);$pj[]="((".implode(") OR (",$fb)."))";}$pj=($pj?"\nWHERE ".implode(" AND ",$pj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$td=($L?implode(", ",$L):"*").convert_fields($e,$o,$L)."\nFROM ".table($a);$_d=($yd&&$ie?"\nGROUP BY ".implode(", ",$yd):"").($Hf?"\nORDER BY ".implode(", ",$Hf):"");if(!is_array($_POST["check"])||$tg)$G="SELECT $td$pj$_d";else{$Ki=array();foreach($_POST["check"]as$X)$Ki[]="(SELECT".limit($td,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$_d,1).")";$G=implode(" UNION ALL ",$Ki);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$od)){if($_POST["save"]||$_POST["delete"]){$H=true;$Aa=0;$N=array();if(!$_POST["delete"]){foreach($e
as$C=>$X){$X=process_input($o[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($tg&&is_array($_POST["check"]))||$ie){$H=($_POST["delete"]?$l->delete($a,$pj):($_POST["clone"]?queries("INSERT $G$pj"):$l->update($a,$N,$pj)));$Aa=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$lj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$H=($_POST["delete"]?$l->delete($a,$lj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$lj)):$l->update($a,$N,$lj,1)));if(!$H)break;$Aa+=$g->affected_rows;}}}$Te=lang(250,$Aa);if($_POST["clone"]&&$H&&$Aa==1){$xe=last_id();if($xe)$Te=lang(169," $xe");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Te,$H);if(!$_POST["delete"]){edit_form($a,$o,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(251);else{$H=true;$Aa=0;foreach($_POST["val"]as$Mi=>$J){$N=array();foreach($J
as$x=>$X){$x=bracket_escape($x,1);$N[idf_escape($x)]=(preg_match('~char|text~',$o[$x]["type"])||$X!=""?$b->processInput($o[$x],$X):"NULL");}$H=$l->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Mi,$o),!$ie&&!$tg," ");if(!$H)break;$Aa+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(250,$Aa),$H);}}elseif(!is_string($cd=get_file("csv_file",true)))$m=upload_error($cd);elseif(!preg_match('~~u',$cd))$m=lang(252);else{cookie("adminer_import","output=".urlencode($_a["output"])."&format=".urlencode($_POST["separator"]));$H=true;$qb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$cd,$B);$Aa=count($B[0]);$l->begin();$ph=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($B[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ph]*)$ph~",$X.$ph,$Me);if(!$x&&!array_diff($Me[1],$qb)){$qb=$Me[1];$Aa--;}else{$N=array();foreach($Me[1]as$r=>$lb)$N[idf_escape($qb[$r])]=($lb==""&&$o[$qb[$r]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$lb))));$K[]=$N;}}$H=(!$K||$l->insertUpdate($a,$K,$tg));if($H)$H=$l->commit();queries_redirect(remove_from_uri("page"),lang(253,$Aa),$H);$l->rollback();}}}$Wh=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(54).": $Wh",$m);$N=null;if(isset($Zg["insert"])||!support("table")){$N="";foreach((array)$_GET["where"]as$X){if($od[$X["col"]]&&count($od[$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(254).($o?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">','<input type="submit" value="'.h(lang(54)).'">';echo"</div>\n";$b->selectColumnsPrint($L,$e);$b->selectSearchPrint($Z,$e,$v);$b->selectOrderPrint($Hf,$e,$v);$b->selectLimitPrint($y);$b->selectLengthPrint($ki);$b->selectActionPrint($v);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$rd=$g->result(count_rows($a,$Z,$ie,$yd));$E=floor(max(0,$rd-1)/$y);}$kh=$L;$zd=$yd;if(!$kh){$kh[]="*";$Gb=convert_fields($e,$o,$L);if($Gb)$kh[]=substr($Gb,2);}foreach($L
as$x=>$X){$n=$o[idf_unescape($X)];if($n&&($Ha=convert_field($n)))$kh[$x]="$Ha AS $X";}if(!$ie&&$Oi){foreach($Oi
as$x=>$X){$kh[]=idf_escape($x);if($zd)$zd[]=idf_escape($x);}}$H=$l->select($a,$kh,$Z,$zd,$Hf,$y,$E,true);if(!$H)echo"<p class='error'>".error()."\n";else{if($w=="mssql"&&$E)$H->seek($y*$E);$Ac=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$K=array();while($J=$H->fetch_assoc()){if($E&&$w=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["page"]!="last"&&$y!=""&&$yd&&$ie&&$w=="sql")$rd=$g->result(" SELECT FOUND_ROWS()");if(!$K)echo"<p class='message'>".lang(12)."\n";else{$Qa=$b->backwardKeys($a,$Wh);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>".(!$yd&&$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")."' title='".lang(255)."' class='edit-all'>".lang(255)."</a>");$ef=array();$ud=array();reset($L);$Gg=1;foreach($K[0]as$x=>$X){if(!isset($Oi[$x])){$X=$_GET["columns"][key($L)]??null;$n=$o[$L?($X?$X["col"]:current($L)):$x];$C=($n?$b->fieldName($n,$Gg):($X["fun"]?"*":$x));if($C!=""){$Gg++;$ef[$x]=$C;$d=idf_escape($x);$Md=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$gc="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'<a href="'.h($Md.($Hf[0]==$d||$Hf[0]==$x||(!$Hf&&$ie&&$yd[0]==$d)?$gc:'')).'">';echo
apply_sql_function($X["fun"]??null,$C)."</a>";echo"<span class='column hidden'>","<a href='".h($Md.$gc)."' title='".lang(61)."' class='text'> ↓</a>";if(isset($X["fun"])===false){echo'<a href="#fieldset-search" title="'.lang(58).'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($x)."');");}echo"</span>";}$ud[$x]=$X["fun"]??null;next($L);}}$Ce=array();if($_GET["modify"]){foreach($K
as$J){foreach($J
as$x=>$X)$Ce[$x]=max($Ce[$x],min(40,strlen(utf8_decode($X))));}}echo($Qa?"<th>".lang(256):"")."</thead>\n";if(is_ajax()){if($y%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($K,$od)as$df=>$J){$Li=unique_array($K[$df],$v);if(!$Li){$Li=array();foreach($K[$df]as$x=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$x))$Li[$x]=$X;}}$Mi="";foreach($Li
as$x=>$X){if(($w=="sql"||$w=="pgsql")&&preg_match('~char|text|enum|set~',$o[$x]["type"])&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($w!='sql'||preg_match("~^utf8~",$o[$x]["collation"])?$x:"CONVERT($x USING ".charset($g).")").")";$X=md5($X);}$Mi.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$yd&&$L?"":"<td>".checkbox("check[]",substr($Mi,1),in_array(substr($Mi,1),(array)$_POST["check"])).($ie||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Mi)."' class='edit' title='".lang(257)."'>".lang(257)."</a>"));foreach($J
as$x=>$X){if(isset($ef[$x])){$n=$o[$x];$X=$l->value($X,$n);if($X!=""&&(!isset($Ac[$x])||$Ac[$x]!=""))$Ac[$x]=(is_mail($X)?$ef[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$n["type"]??null)&&$X!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$Mi;if(!$z&&$X!==null){foreach((array)$od[$x]as$p){if(count($od[$x])==1||end($p["source"])==$x){$z="";foreach($p["source"]as$r=>$Ch)$z.=where_link($r,$p["target"][$r],$K[$df][$Ch]);$z=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$z;if($p["ns"])$z=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$z);if(count($p["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$r=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Li))$z.=where_link($r++,$W["col"],$W["val"],$W["op"]);}foreach($Li
as$ne=>$W)$z.=where_link($r++,$ne,$W);}$X=select_value($X,$z,$n,$ki);$s=h("val[$Mi][".bracket_escape($x)."]");$Y=null;if(isset($_POST["val"][$Mi][bracket_escape($x)]))$_POST["val"][$Mi][bracket_escape($x)];$wc=!is_array($J[$x])&&is_utf8($X)&&$K[$df][$x]==$J[$x]&&!$ud[$x];$ji=preg_match('~text|lob~',$n["type"]??null);echo"<td id='$s'";if(($_GET["modify"]&&$wc)||$Y!==null){$Cd=h($Y!==null?$Y:$J[$x]);echo">".($ji?"<textarea name='$s' cols='30' rows='".(substr_count($J[$x],"\n")+1)."'>$Cd</textarea>":"<input name='$s' value='$Cd' size='$Ce[$x]'>");}else{$He=strpos($X,"<i>…</i>");echo" data-text='".($He?2:($ji?1:0))."'".($wc?"":" data-warning='".h(lang(258))."'").">$X</td>";}}}if($Qa)echo"<td>";$b->backwardKeysPrint($Qa,$K[$df]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($K||$E){$Lc=true;if($_GET["page"]!="last"){if($y==""||(count($K)<$y&&($K||!$E)))$rd=($E?$E*$y:0)+count($K);elseif($w!="sql"||!$ie){$rd=($ie?false:found_rows($R,$Z));if($rd<max(1e4,2*($E+1)*$y))$rd=reset(slow_query(count_rows($a,$Z,$ie,$yd)));else$Lc=false;}}$Vf=($y!=""&&($rd===false||$rd>$y||$E));if($Vf){echo(($rd===false?count($K)+1:$rd-$E*$y)>$y?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.lang(259).'</a>'.script("qsl('a').onclick = partial(selectLoadMore, ".(+$y).", '".lang(260)."…');",""):''),"\n";}}echo"<div class='footer'><div>\n";if($K||$E){if($Vf){$Oe=($rd===false?$E+(count($K)>=$y?2:1):floor(($rd-1)/$y));echo"<fieldset>";if($w!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".lang(261)."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".lang(261)."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($r=max(1,$E-4);$r<min($Oe,$E+5);$r++)echo
pagination($r,$E);if($Oe>0){echo($E+5<$Oe?" …":""),($Lc&&$rd!==false?pagination($Oe,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Oe'>".lang(262)."</a>");}}else{echo"<legend>".lang(261)."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($Oe>$E?pagination($E+1,$E).($Oe>$E+1?" …":""):"");}echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(263)."</legend>";$lc=($Lc?"":"~ ").$rd;echo
checkbox("all",1,0,($rd!==false?($Lc?"":"~ ").lang(151,$rd):""),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$lc' : checked); selectCount('selected2', this.checked || !checked ? '$lc' : checked);")."\n","</fieldset>\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(255),'</legend><div>
<input type="submit" value="',lang(14),'"',($_GET["modify"]?'':' title="'.lang(251).'"'),'>
</div></fieldset>
<fieldset><legend>',lang(127),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',lang(10),'">
<input type="submit" name="clone" value="',lang(247),'">
<input type="submit" name="delete" value="',lang(18),'">',confirm(),'</div></fieldset>
';}$pd=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($pd['sql']);break;}}if($pd){print_fieldset("export",lang(76)." <span id='selected2'></span>");$Sf=$b->dumpOutput();echo($Sf?html_select("output",$Sf,$_a["output"])." ":""),html_select("format",$pd,$_a["format"])," <input type='submit' name='export' value='".lang(76)."'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Ac,'strlen'),$e);}echo"</div></div>\n";if($b->selectImportPrint()){echo"<div>","<a href='#import'>".lang(75)."</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"),$_a["format"],1);echo" <input type='submit' name='import' value='".lang(75)."'>","</span>","</div>";}echo"<input type='hidden' name='token' value='$vi'>\n","</form>\n",(!$yd&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?lang(119):lang(118));$cj=($O?show_status():show_variables());if(!$cj)echo"<p class='message'>".lang(12)."\n";else{echo"<table cellspacing='0'>\n";foreach($cj
as$x=>$X){echo"<tr>","<th><code class='jush-".$w.($O?"status":"set")."'>".h($x)."</code>","<td>".h($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Th=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$R){json_row("Comment-$C",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($R[$x]));foreach($Th+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($R[$x]!=""){$X=format_number($R[$x]);json_row("$x-$C",($x=="Rows"&&$X&&$R["Engine"]==($w=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Th[$x]))$Th[$x]+=($R["Engine"]!="InnoDB"||$x!="Data_free"?$R[$x]:0);}elseif(array_key_exists($x,$R))json_row("$x-$C");}}}foreach($Th
as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$ci=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($ci&&!$m&&!$_POST["search"]){$H=true;$Te="";if($w=="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"]);$Te=lang(264);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Te=lang(265);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Te=lang(266);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Te=lang(267);}elseif($w!="sql"){$H=($w=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Te=lang(268);}elseif(!$_POST["tables"])$Te=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())$Te.="<b>".h($J["Table"])."</b>: ".h($J["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Te,$H);}page_header(($_GET["ns"]==""?lang(37).": ".h(DB):lang(80).": ".h($_GET["ns"])),$m,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(269)."</h3>\n";$bi=tables_list();if(!$bi)echo"<p class='message'>".lang(9)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(270)." <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(58)."'>\n";if($b->operator_regexp!==null){echo"<p><label><input type='checkbox' name='regexp' value='1'".(empty($_POST['regexp'])?'':' checked').'>'.lang(271).'</label>',doc_link(array('sql'=>'regexp.html','pgsql'=>'functions-matching.html#FUNCTIONS-POSIX-REGEXP'))."</p>\n";}echo"</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$b->operator_regexp===null||empty($_POST['regexp'])?"LIKE %%":$b->operator_regexp;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(132),'<td>'.lang(272).doc_link(array('sql'=>'storage-engines.html')),'<td>'.lang(123).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.lang(273).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.lang(274).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.lang(275).doc_link(array('sql'=>'show-table-status.html')),'<td>'.lang(52).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.lang(276).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.lang(51).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$S=0;foreach($bi
as$C=>$T){$fj=($T!==null&&!preg_match('~table|sequence~i',$T));$s=h("Table-".$C);echo'<tr'.odd().'><td>'.checkbox(($fj?"views[]":"tables[]"),$C,in_array($C,$ci,true),"","","",$s),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($C)."' title='".lang(42)."' id='$s'>".h($C).'</a>':h($C));if($fj){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($C).'" title="'.lang(43).'">'.(preg_match('~materialized~i',$T)?lang(130):lang(131)).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.lang(41).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(44)),"Index_length"=>array("indexes",lang(134)),"Data_free"=>array("edit",lang(45)),"Auto_increment"=>array("auto_increment=1&create",lang(44)),"Rows"=>array("select",lang(41)),)as$x=>$z){$s=" id='$x-".h($C)."'";echo($z?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$z[0]=").urlencode($C)."'$s title='$z[1]'>?</a>":"<span$s>?</span>"):"<td id='$x-".h($C)."'>");}$S++;}echo(support("comment")?"<td id='Comment-".h($C)."'>":"");}echo"<tr><td><th>".lang(248,count($bi)),"<td>".h($w=="sql"?$g->result("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$x)echo"<td align='right' id='sum-$x'>";echo"</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Zi="<input type='submit' value='".lang(277)."'> ".on_help("'VACUUM'");$Ef="<input type='submit' name='optimize' value='".lang(278)."'> ".on_help($w=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".lang(127)." <span id='selected'></span></legend><div>".($w=="sqlite"?$Zi:($w=="pgsql"?$Zi.$Ef:($w=="sql"?"<input type='submit' value='".lang(279)."'> ".on_help("'ANALYZE TABLE'").$Ef."<input type='submit' name='check' value='".lang(280)."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".lang(281)."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".lang(282)."'> ".on_help($w=="sqlite"?"'DELETE'":"'TRUNCATE".($w=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".lang(128)."'>".on_help("'DROP TABLE'").confirm()."\n";$j=(support("scheme")?$b->schemas():$b->databases());if(count($j)!=1&&$w!="sqlite"){$k=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(283).": ",($j?html_select("target",$j,$k):'<input name="target" value="'.h($k).'" autocapitalize="off">')," <input type='submit' name='move' value='".lang(284)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(285)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(286)):""),"\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='$vi'>\n","</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}$_=[];$_[]="<a href='".h(ME)."create='>".lang(77)."</a>";if(support("view"))$_[]="<a href='".h(ME)."view='>".lang(205)."</a>";echo
generate_linksbar($_);if(support("routine")){echo"<h3 id='routines'>".lang(144)."</h3>\n";$dh=routines();if($dh){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.lang(184).'<td>'.lang(50).'<td>'.lang(222)."<td></thead>\n";odd('');foreach($dh
as$J){$C=($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"]).$C).'">'.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"]).$C).'">'.lang(137)."</a>";}echo"</table>\n";}$_=[];if(support('procedure'))$_[]="<a href='".h(ME)."procedure='>".lang(221)."</a>";$_[]="<a href='".h(ME)."function='>".lang(220)."</a>";echo
generate_linksbar($_);}if(support("sequence")){echo"<h3 id='sequences'>".lang(287)."</h3>\n";$rh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($rh){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(184)."</thead>\n";odd('');foreach($rh
as$X)echo"<tr".odd()."><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo
generate_linksbar(["<a href='".h(ME)."sequence='>".lang(227)."</a>"]);}if(support("type")){echo"<h3 id='user-types'>".lang(26)."</h3>\n";$Xi=types();if($Xi){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(184)."</thead>\n";odd('');foreach($Xi
as$X)echo"<tr".odd()."><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo
generate_linksbar(["<a href='".h(ME)."type='>".lang(231)."</a>"]);}if(support("event")){echo"<h3 id='events'>".lang(145)."</h3>\n";$K=get_rows("SHOW EVENTS");if($K){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(184)."<td>".lang(288)."<td>".lang(211)."<td>".lang(212)."<td></thead>\n";foreach($K
as$J){echo"<tr>","<th>".h($J["Name"]),"<td>".($J["Execute at"]?lang(289)."<td>".$J["Execute at"]:lang(213)." ".$J["Interval value"]." ".$J["Interval field"]."<td>$J[Starts]"),"<td>$J[Ends]",'<td><a href="'.h(ME).'event='.urlencode($J["Name"]).'">'.lang(137).'</a>';}echo"</table>\n";$Jc=$g->result("SELECT @@event_scheduler");if($Jc&&$Jc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Jc)."\n";}echo
generate_linksbar(["<a href='".h(ME)."event='>".lang(210)."</a>"]);}if($bi)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();