「✨」 feat: finished last containers

This commit is contained in:
KeyZox committed 2025-03-04 10:47:25 +01:00
1 parent 57387462cf
commit 1538afbc7b
12 files changed
+1092 -4

No files matched your search

+31
View File
@@ -0,0 +1,31 @@
FROM scratch
ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz /
LABEL version="0.1"
LABEL maintainer="KeyZox"
VOLUME /var/www/adminer
COPY docker/bonus/adminer/adminer-4.17.1-mysql.php /var/www/adminer/index.php
RUN apk update \
&& apk add php84 php84-mysqli php84-session curl \
&& addgroup -S adminer \
&& adduser -S -G adminer adminer \
&& chown -R adminer:adminer /var/www/adminer \
&& chmod 755 /var/www/adminer/index.php
RUN echo "upload_max_filesize = 128M" >> /etc/php84/conf.d/0-upload_large_dumps.ini \
&& echo "post_max_size = 128M" >> /etc/php84/conf.d/0-upload_large_dumps.ini \
&& echo "memory_limit = 1G" >> /etc/php84/conf.d/0-upload_large_dumps.ini \
&& echo "max_execution_time = 600" >> /etc/php84/conf.d/0-upload_large_dumps.ini \
&& echo "max_input_vars = 5000" >> /etc/php84/conf.d/0-upload_large_dumps.ini
WORKDIR "/var/www/adminer"
EXPOSE 8080
STOPSIGNAL SIGINT
USER adminer
CMD [ "php84", "-S", "0.0.0.0:8080", "-t", "/var/www/adminer"]
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=1s --start-interval=2s CMD curl -f "http://localhost:8080"
@@ -0,0 +1,909 @@
<?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.17.1
*/$fa="4.17.1";function
adminer_errors($jc,$lc){return!!preg_match('~^(Trying to access array offset on( value of type)? null|Undefined (array key|property))~',$lc);}error_reporting(6135);set_error_handler('adminer_errors',E_WARNING);$Cc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Cc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$sh=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($sh)$$X=$sh;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection(){global$g;return$g;}function
adminer(){global$c;return$c;}function
version(){global$fa;return$fa;}function
idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$Fd=substr($v,-1);return
str_replace($Fd.$Fd,$Fd,substr($v,1,-1));}function
escape_string($X){return
substr(q($X),1,-1);}function
number($X){return
preg_replace('~[^0-9]+~','',$X);}function
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
remove_slashes($vf,$Cc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($z,$X)=each($vf)){foreach($X
as$yd=>$W){unset($vf[$z][$yd]);if(is_array($W)){$vf[$z][stripslashes($yd)]=$W;$vf[]=&$vf[$z][stripslashes($yd)];}else$vf[$z][stripslashes($yd)]=($Cc?$W:stripslashes($W));}}}}function
bracket_escape($v,$Aa=false){static$fh=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($v,($Aa?array_flip($fh):$fh));}function
min_version($Gh,$Sd="",$h=null){global$g;if(!$h)$h=$g;$dg=$h->server_info;if($Sd&&preg_match('~([\d.]+)-MariaDB~',$dg,$C)){$dg=$C[1];$Gh=$Sd;}return$Gh&&version_compare($dg,$Gh)>=0;}function
charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
script($ng,$eh="\n"){return"<script".nonce().">$ng</script>$eh";}function
script_src($xh){return"<script src='".h($xh)."'".nonce()."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($yg){return
str_replace("\0","&#0;",htmlspecialchars($yg,ENT_QUOTES,'utf-8'));}function
nl_br($yg){return
str_replace("\n","<br>",$yg);}function
checkbox($E,$Y,$Ra,$Bd="",$Ce="",$Va="",$Cd=""){$K="<input type='checkbox' name='$E' value='".h($Y)."'".($Ra?" checked":"").($Cd?" aria-labelledby='$Cd'":"").">".($Ce?script("qsl('input').onclick = function () { $Ce };",""):"");return($Bd!=""||$Va?"<label".($Va?" class='$Va'":"").">$K".h($Bd)."</label>":$K);}function
optionlist($Ge,$Yf=null,$Ah=false){$K="";foreach($Ge
as$yd=>$W){$He=array($yd=>$W);if(is_array($W)){$K.='<optgroup label="'.h($yd).'">';$He=$W;}foreach($He
as$z=>$X)$K.='<option'.($Ah||is_string($z)?' value="'.h($z).'"':'').($Yf!==null&&($Ah||is_string($z)?(string)$z:$X)===$Yf?' selected':'').'>'.h($X);if(is_array($W))$K.='</optgroup>';}return$K;}function
html_select($E,$Ge,$Y="",$Be=true,$Cd=""){if($Be)return"<select name='".h($E)."'".($Cd?" aria-labelledby='$Cd'":"").">".optionlist($Ge,$Y)."</select>".(is_string($Be)?script("qsl('select').onchange = function () { $Be };",""):"");$K="";foreach($Ge
as$z=>$X)$K.="<label><input type='radio' name='".h($E)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$K;}function
confirm($D="",$Zf="qsl('input')"){return
script("$Zf.onclick = function () { return confirm('".($D?js_escape($D):lang(0))."'); };","");}function
print_fieldset($u,$Kd,$Jh=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$Kd</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($Jh?"":" class='hidden'").">\n";}function
bold($Ha,$Va=""){return($Ha?" class='active $Va'":($Va?" class='$Va'":""));}function
js_escape($yg){return
addcslashes($yg,"\r\n'\\/");}function
ini_bool($md){$X=ini_get($md);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function
set_password($Fh,$O,$V,$df){$_SESSION["pwds"][$Fh][$O][$V]=($_COOKIE["adminer_key"]&&is_string($df)?array(encrypt_string($df,$_COOKIE["adminer_key"])):$df);}function
get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function
q($yg){global$g;return$g->quote($yg);}function
get_vals($I,$d=0){global$g;$K=array();$J=$g->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function
get_key_vals($I,$h=null,$gg=true){global$g;if(!is_object($h))$h=$g;$K=array();$J=$h->query($I);if(is_object($J)){while($L=$J->fetch_row()){if($gg)$K[$L[0]]=$L[1];else$K[]=$L[0];}}return$K;}function
get_rows($I,$h=null,$m="<p class='error'>"){global$g;$kb=(is_object($h)?$h:$g);$K=array();$J=$kb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($h)&&$m&&(defined("PAGE_HEADER")||$m=="-- "))echo$m.error()."\n";return$K;}function
unique_array($L,$x){foreach($x
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$K=array();foreach($w["columns"]as$z){if(!isset($L[$z]))continue
2;$K[$z]=$L[$z];}return$K;}}}function
escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return
idf_escape($z);}function
where($Z,$o=array()){global$g,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$d=escape_key($z);$K[]=$d.($y=="sql"&&$o[$z]["type"]=="json"?" = CAST(".q($X)." AS JSON)":($y=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):($y=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($o[$z],q($X)))));if($y=="sql"&&preg_match('~char|text~',$o[$z]["type"])&&preg_match("~[^ -@]~",$X))$K[]="$d = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$z)$K[]=escape_key($z)." IS NULL";return
implode(" AND ",$K);}function
where_check($X,$o=array()){parse_str($X,$Pa);remove_slashes(array(&$Pa));return
where($Pa,$o);}function
where_link($t,$d,$Y,$De="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$De:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
convert_fields($e,$o,$N=array()){$K="";foreach($e
as$z=>$X){if($N&&!in_array(idf_escape($z),$N))continue;$va=convert_field($o[$z]);if($va)$K.=", $va AS ".idf_escape($z);}return$K;}function
cookie($E,$Y,$Nd=2592000){global$ba;return
header("Set-Cookie: $E=".urlencode($Y).($Nd?"; expires=".gmdate("D, d M Y H:i:s",time()+$Nd)." 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($Gc=false){$_h=ini_bool("session.use_cookies");if(!$_h||$Gc){session_write_close();if($_h&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Fh,$O,$V,$k=null){global$Qb;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($Qb))."|username|".($k!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Fh!="server"||$O!=""?urlencode($Fh)."=".urlencode($O)."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($C[2]?"&$C[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function
query_redirect($I,$B,$D,$Cf=true,$qc=true,$xc=false,$Tg=""){global$g,$m,$c;if($qc){$ug=microtime(true);$xc=!$g->query($I);$Tg=format_time($ug);}$pg="";if($I)$pg=$c->messageQuery($I,$Tg,$xc);if($xc){$m=error().$pg.script("messagesPrint();");return
false;}if($Cf)redirect($B,$D.$pg);return
true;}function
queries($I){global$g;static$yf=array();static$ug;if(!$ug)$ug=microtime(true);if($I===null)return
array(implode("\n",$yf),format_time($ug));$yf[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$g->query($I);}function
apply_queries($I,$S,$mc='table'){foreach($S
as$Q){if(!queries("$I ".$mc($Q)))return
false;}return
true;}function
queries_redirect($B,$D,$Cf){list($yf,$Tg)=queries(null);return
query_redirect($yf,$B,$D,$Cf,false,!$Cf,$Tg);}function
format_time($ug){return
lang(1,max(0,microtime(true)-$ug));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($Ve=""){return
substr(preg_replace("~(?<=[?&])($Ve".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
pagination($G,$vb){return" ".($G==$vb?$G+1:'<a href="'.h(remove_from_uri("page").($G?"&page=$G".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($G+1)."</a>");}function
get_file($z,$Cb=false){$Ac=$_FILES[$z];if(!$Ac)return
null;foreach($Ac
as$z=>$X)$Ac[$z]=(array)$X;$K='';foreach($Ac["error"]as$z=>$m){if($m)return$m;$E=$Ac["name"][$z];$bh=$Ac["tmp_name"][$z];$lb=file_get_contents($Cb&&preg_match('~\.gz$~',$E)?"compress.zlib://$bh":$bh);if($Cb){$ug=substr($lb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$ug,$If))$lb=iconv("utf-16","utf-8",$lb);elseif($ug=="\xEF\xBB\xBF")$lb=substr($lb,3);$K.=$lb."\n\n";}else$K.=$lb;}return$K;}function
upload_error($m){$Yd=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(2).($Yd?" ".lang(3,$Yd):""):lang(4));}function
repeat_pattern($ff,$Ld){return
str_repeat("$ff{0,65535}",$Ld/65535)."$ff{0,".($Ld%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
shorten_utf8($yg,$Ld=80,$Bg=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$Ld).")($)?)u",$yg,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$Ld).")($)?)",$yg,$C);return
h($C[1]).$Bg.(isset($C[2])?"":"<i>…</i>");}function
format_number($X){return
strtr(number_format($X,0,".",lang(5)),preg_split('~~u',lang(6),-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace('~[^a-z0-9_]~i','-',$X);}function
hidden_fields($vf,$hd=array(),$of=''){$K=false;foreach($vf
as$z=>$X){if(!in_array($z,$hd)){if(is_array($X))hidden_fields($X,array(),$z);else{$K=true;echo'<input type="hidden" name="'.h($of?$of."[$z]":$z).'" value="'.h($X).'">';}}}return$K;}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,$yc=false){$K=table_status($Q,$yc);return($K?$K:array("Name"=>$Q));}function
column_foreign_keys($Q){global$c;$K=array();foreach($c->foreignKeys($Q)as$p){foreach($p["source"]as$X)$K[$X][]=$p;}return$K;}function
enum_input($U,$xa,$n,$Y,$ec=null){global$c,$y;preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$Td);$K=($ec!==null?"<label><input type='$U'$xa value='$ec'".((is_array($Y)?in_array($ec,$Y):$Y===0)?" checked":"")."><i>".lang(7)."</i></label>":"");foreach($Td[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ra=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$K.=" <label><input type='$U'$xa value='".($y=="sql"?$t+1:h($X))."'".($Ra?' checked':'').'>'.h($c->editVal($X,$n)).'</label>';}return$K;}function
input($n,$Y,$r){global$nh,$zg,$c,$y;$E=h(bracket_escape($n["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$ua=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ua[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ua);$r="json";}$Kf=($y=="mssql"&&$n["auto_increment"]);if($Kf&&!$_POST["save"])$r=null;$Oc=(isset($_GET["select"])||$Kf?array("orig"=>lang(8)):array())+$c->editFunctions($n);$Mb=stripos($n["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$xa=" name='fields[$E]'$Mb";if($y=="pgsql"&&in_array($n["type"],(array)$zg[lang(9)])){$ic=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = ".$nh[$n["type"]]." ORDER BY enumsortorder");if($ic){$n["type"]="enum";$n["length"]="'".implode("','",array_map('addslashes',$ic))."'";}}if($n["type"]=="enum")echo
h($Oc[""])."<td>".$c->editInput($_GET["edit"],$n,$xa,$Y);else{$Yc=(in_array($r,$Oc)||isset($Oc[$r]));echo(count($Oc)>1?"<select name='function[$E]'$Mb>".optionlist($Oc,$r===null||$Yc?$r:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($Oc))).'<td>';$od=$c->editInput($_GET["edit"],$n,$xa,$Y);if($od!="")echo$od;elseif(preg_match('~bool~',$n["type"]))echo"<input type='hidden'$xa value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$xa value='1'>";elseif($n["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$Td);foreach($Td[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ra=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$E][$t]' value='".(1<<$t)."'".($Ra?' checked':'').">".h($c->editVal($X,$n)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$n["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$E'>";elseif(($Rg=preg_match('~text|lob|memo~i',$n["type"]))||preg_match("~\n~",$Y)){if($Rg&&$y!="sqlite")$xa.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$xa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$xa>".h($Y).'</textarea>';}elseif($r=="json"||preg_match('~^jsonb?$~',$n["type"]))echo"<textarea$xa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$ae=(!preg_match('~int~',$n["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$n["length"],$C)?((preg_match("~binary~",$n["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$n["unsigned"]?1:0)):($nh[$n["type"]]?$nh[$n["type"]]+($n["unsigned"]?0:1):0));if($y=='sql'&&min_version(5.6)&&preg_match('~time~',$n["type"]))$ae+=7;echo"<input".((!$Yc||$r==="")&&preg_match('~(?<!o)int(?!er)~',$n["type"])&&!preg_match('~\[\]~',$n["full_type"])?" type='number'":"")." value='".h($Y)."'".($ae?" data-maxlength='$ae'":"").(preg_match('~char|binary~',$n["type"])&&$ae>20?" size='40'":"")."$xa>";}echo$c->editHint($_GET["edit"],$n,$Y);$Dc=0;foreach($Oc
as$z=>$X){if($z===""||!$X)break;$Dc++;}if($Dc)echo
script("mixin(qsl('td'), {onchange: partial(skipOriginal, $Dc), oninput: function () { this.onchange(); }});");}}function
process_input($n){global$c,$l;if(stripos($n["default"],"GENERATED ALWAYS AS ")===0)return
null;$v=bracket_escape($n["field"]);$r=$_POST["function"][$v];$Y=$_POST["fields"][$v];if($n["type"]=="enum"){if($Y==-1)return
false;if($Y=="")return"NULL";return+$Y;}if($n["auto_increment"]&&$Y=="")return
null;if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?idf_escape($n["field"]):false);if($r=="NULL")return"NULL";if($n["type"]=="set")return
array_sum((array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$n["type"])&&ini_bool("file_uploads")){$Ac=get_file("fields-$v");if(!is_string($Ac))return
false;return$l->quoteBinary($Ac);}return$c->processInput($n,$Y,$r);}function
fields_from_edit(){global$l;$K=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$E=bracket_escape($z,1);$K[$E]=array("field"=>$E,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$l->primary),);}return$K;}function
search_tables(){global$c,$g;$_GET["where"][0]["val"]=$_POST["query"];$bg="<ul>\n";foreach(table_status('',true)as$Q=>$R){$E=$c->tableName($R);if(isset($R["Engine"])&&$E!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$J=$g->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$c->selectSearchProcess(fields($Q),array())),1));if(!$J||$J->fetch_row()){$rf="<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$E</a>";echo"$bg<li>".($J?$rf:"<p class='error'>$rf: ".error())."\n";$bg="";}}}echo($bg?"<p class='message'>".lang(10):"</ul>")."\n";}function
dump_headers($gd,$ie=false){global$c;$K=$c->dumpHeaders($gd,$ie);$Se=$_POST["output"];if($Se!="text")header("Content-Disposition: attachment; filename=".$c->dumpFilename($gd).".$K".($Se!="file"&&preg_match('~^[0-9a-z]+$~',$Se)?".$Se":""));session_write_close();ob_flush();flush();return$K;}function
dump_csv($L){foreach($L
as$z=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$L[$z]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function
get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Bc=@tempnam("","");if(!$Bc)return
false;$K=dirname($Bc);unlink($Bc);}}return$K;}function
file_open_lock($Bc){$q=@fopen($Bc,"r+");if(!$q){$q=@fopen($Bc,"w");if(!$q)return;chmod($Bc,0660);}flock($q,LOCK_EX);return$q;}function
file_write_unlock($q,$xb){rewind($q);fwrite($q,$xb);ftruncate($q,strlen($xb));flock($q,LOCK_UN);fclose($q);}function
password_file($i){$Bc=get_temp_dir()."/adminer.key";$K=@file_get_contents($Bc);if($K||!$i)return$K;$q=@fopen($Bc,"w");if($q){chmod($Bc,0660);$K=rand_string();fwrite($q,$K);fclose($q);}return$K;}function
rand_string(){return
md5(uniqid(mt_rand(),true));}function
select_value($X,$A,$n,$Sg){global$c;if(is_array($X)){$K="";foreach($X
as$yd=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".h($yd):"")."<td>".select_value($W,$A,$n,$Sg);return"<table>$K</table>";}if(!$A)$A=$c->selectLink($X,$n);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$K=$c->editVal($X,$n);if($K!==null){if(!is_utf8($K))$K="\0";elseif($Sg!=""&&is_shortable($n))$K=shorten_utf8($K,max(0,+$Sg));else$K=h($K);}return$c->selectVal($K,$A,$n,$X);}function
is_mail($bc){$wa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Pb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ff="$wa+(\\.$wa+)*@($Pb?\\.)+$Pb";return
is_string($bc)&&preg_match("(^$ff(,\\s*$ff)*\$)i",$bc);}function
is_url($yg){$Pb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^(https?)://($Pb?\\.)+$Pb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$yg);}function
is_shortable($n){return
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$n["type"]);}function
count_rows($Q,$Z,$ud,$s){global$y;$I=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($ud&&($y=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$I":"SELECT COUNT(*)".($ud?" FROM (SELECT 1$I GROUP BY ".implode(", ",$s).") x":$I));}function
slow_query($I){global$c,$T,$l;$k=$c->database();$Ug=$c->queryTimeout();$lg=$l->slowQuery($I,$Ug);if(!$lg&&support("kill")&&is_object($h=connect())&&($k==""||$h->select_db($k))){$_d=$h->result(connection_id());echo'<script',nonce(),'>
var timeout = setTimeout(function () {
ajax(\'',js_escape(ME),'script=kill\', function () {
}, \'kill=',$_d,'&token=',$T,'\');
}, ',1000*$Ug,');
</script>
';}else$h=null;ob_flush();flush();$K=@get_key_vals(($lg?$lg:$I),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$K;}function
get_token(){$Af=rand(1,1e6);return($Af^$_SESSION["token"]).":$Af";}function
verify_token(){list($T,$Af)=explode(":",$_POST["token"]);return($Af^$_SESSION["token"])==$T;}function
lzw_decompress($Ea){$Lb=256;$Fa=8;$Xa=array();$Lf=0;$Mf=0;for($t=0;$t<strlen($Ea);$t++){$Lf=($Lf<<8)+ord($Ea[$t]);$Mf+=8;if($Mf>=$Fa){$Mf-=$Fa;$Xa[]=$Lf>>$Mf;$Lf&=(1<<$Mf)-1;$Lb++;if($Lb>>$Fa)$Fa++;}}$Kb=range("\0","\xFF");$K="";foreach($Xa
as$t=>$Wa){$ac=$Kb[$Wa];if(!isset($ac))$ac=$Ph.$Ph[0];$K.=$ac;if($t)$Kb[]=$Ph.$ac[0];$Ph=$ac;}return$K;}function
on_help($db,$jg=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $db, $jg) }, onmouseout: helpMouseout});","");}function
edit_form($Q,$o,$L,$vh){global$c,$y,$T,$m;$Gg=$c->tableName(table_status1($Q,true));page_header(($vh?lang(11):lang(12)),$m,array("select"=>array($Q,$Gg)),$Gg);$c->editRowPrint($Q,$o,$L,$vh);if($L===false){echo"<p class='error'>".lang(13)."\n";return;}echo'<form action="" method="post" enctype="multipart/form-data" id="form">
';if(!$o)echo"<p class='error'>".lang(14)."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");foreach($o
as$E=>$n){echo"<tr><th>".$c->fieldName($n);$Db=$_GET["set"][bracket_escape($E)];if($Db===null){$Db=$n["default"];if($n["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$Db,$If))$Db=$If[1];}$Y=($L!==null?($L[$E]!=""&&$y=="sql"&&preg_match("~enum|set~",$n["type"])?(is_array($L[$E])?array_sum($L[$E]):+$L[$E]):(is_bool($L[$E])?+$L[$E]:$L[$E])):(!$vh&&$n["auto_increment"]?"":(isset($_GET["select"])?false:$Db)));if(!$_POST["save"]&&is_string($Y))$Y=$c->editVal($Y,$n);$r=($_POST["save"]?(string)$_POST["function"][$E]:($vh&&preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$vh&&$Y==$n["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$n["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($n["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}input($n,$Y,$r);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$c->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(15)."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($vh?lang(16):lang(17))."' title='Ctrl+Shift+Enter'>\n",($vh?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(18)."…', this); };"):"");}}echo($vh?"<input type='submit' name='delete' value='".lang(19)."'>".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="',$T,'">
</form>
';}if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑA�XPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl ¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†º€´îi2\r£1¤è-ƒH ²ÙôÃÂGF#aÔÊ;:Oó!– r0Ïãã£t~ßf�':ñ”Éh„B¦'cÍ”Â:6T\rc£A¾zrcðXKŒg+—ÄZŽXk…Êév„ÞM7¸½Ôå‘7_Ì\"ë�Ï)––žöº{¾ª÷}Øã…Æ£©ÌÐ-4NÎ}:¨rf§K) b{�H(Ɠєt1É)tÚ}F¦p0™ •8è\\82›DŒ>®ÀN‡Cy·¾8\0惫\0FÁê>¯Žã(Ò3� \nú9)ƒ`vç-Ao\r¡èŠ&е¨X˺¡“±»në¾ð„¯œ¨*A\0`A„\0¡ˆq\0oCÔö=σäú\r¯²\\–¿#{öþ¿ð ÈŒ�2©ÃR‡;0dBHL+¢H¢,Œ!oR”>�œNíA°|\"¾Kɼí0‘Pb¼Jd^¨È‘”d²£Ð ÷=<ª’Ê:J# Â¶ £Ú®¬«aŠБ‚¦>ÑTeòFìkÆjš#ŽK6 #‚Ž9ÕET·Ë1K¼‘Å´ÀÈ+CÝF×I° (ÀðL|õ�ÏjPø„pfúÓEuLQG­íØZ›ÁêˆØ2ŒÎ¥š2½!sk[:¢1¬kˆå½6%ŒYpkf+W[Þ·\rrˆL1ÈÌÔ\0Ò�ŒŠ8è=½c˜áT.€ÜØ-ìº~ �–»#sOàávGö+Ýy¾O{ëJª9C�OÕî–ײ| `‡+(áMÏr\r‘OÀ5\nÊ4�£8÷‰( ¾-l‡Cj°2[r5yKÑyŸ)ƒÂ¬¬+AÔk¤äÍɯ¨2ëgß³3iÄ”Â�ÜHS>–ÜWÆÖ<í®fá}ÚöÏjfMiBϹÐú84uÃL¦ÜZCI\$‰2P•\r¨øß…\"+ÿ2¸n-�~Cû24Žª€à:Žœ2çÄ,è¥:ÈÜ‘ÕgcwGÒ¨öØÇƒè¦‡ŒhÏV“Ðö] \\ºŒÃê6`ýRŒ4=#xï^†1¿£\0ÃPç�Ù…Íâ:�-å8ÞoŸé¾~”oïv>Æ£mØ·ØßÕùƒ'�è|ÐÑëøC¸Â<�èØö¶Öè:G)M&W�YQQi=Òð\\[ya\r…¿²ÖB‘eÆ\\ÂóB•�Ø7Ne}:�àl •©Ãk\$44rÆ q}\rP®ðØALa§C5’sƒ¨m\rÁîÈ Y�©�έ&°Ò(ë ú ”²\n›\$¬jE%™ ^qx\rÆÐï—hW’0FuR „mŒJ:—Œz@:rðj7F5 ,wr©Á\n' ú ‰iP|>‡8´Wøfm2 9H @›\$M’\$qX¦Ô¹!ü‡\r¡”9”0ΣR¨:\"ˆŒ7DÉ Þä””r”0ÊuÄ¢ÖÜŒJꉼ¹àFFÓ<”‘PÂYÊeòò^) 8nÖL o2EÊ”®\rÂ1�伸˩°CfÄ,q]N\0�8d8b*4‚J—î ˆ\\Mͺ’�4ÃHl € àRÜd̯!aÐJ ¡ð.šeØ5Ë€ËÎI0Ñ’Q\nC¨µQ.n^ÄàÉ0Iü£‘†žØF¬�Ð7<R3woMѦweDš¥È4¢b7+‘‹ÓF»¦á>gŠ6ž4Jj„`Ðt!ÁF¨öªx �;©ÅmãÀ¸Ìd8oè7B·j]˜=SjÀ¨Ö*ªê¼0A”;¸¢�R–ÙÐQFD1Á¢\"OÉín“ɼ€Ï¨4ʨ4ež±�q\nK”*;9Hóä9@ƒÕ‰#ƹ'ì«Y‘íéSócl‰anÒ.Ͷk:h�\$‡„ª9ª¸¦Öd9É\rŒÌ1‡Pä€ÛqʃDy%˜‹ Øsba¬ÆŸ£ø¢Êœ\rÀ¶£’ZÎRH‹Œá_%\0@Sˆ„ü Ô›¹w¡€77ER³Éjw˜�M¤Pô°2@\n.Àa»W~íÝÛêJH,—än¸ÀJŸé`o·¡Èà@zõoN|¥LƒÚ¨VK ·x uºÁ3*±qK‚ã`á]„Ž¡–AG˜Í¦iU¹µ�°aàÞȳ‹Qre\$[W\"@b�…ĸU¥\rŠðé=.E¿E¨\0âêˆ}rŽœDHŽ\"ImÇŒ�ïÍutÏ®GPÖP¬Ì—8Á\0p¿D ò‡;ô¦VØsˆ‹¶(¤#æÈîR†uÊ–ã\$ÇÈË–\0cÏE”æB¡\nÌŽg¡Ú\0004¿ó +�Þ‡™ð2c ön�f!>ž¢ÇŸ3õ]ÐJ35|G‰tTaU ïHi'ç¥K¬­ÉZgé¼Ò �#Í‘ˆ‡iV”ÀÏ…„¸’ 4TW�òÂ\0É\"1ÅÝ•Q½ÔºŠ_>“}�â>Q‰qrç‚àm–Vá!<ù²d¬´‡—ƒƒ �Œ9S›‰,v¡�¨÷'íu±æykb]p¿Ûå—Mûy• I¾œ[&ØÉì\\©„š9GvÀ�i¼‡±u7¸ãE«„k‰^[×%AÊa;­H#t,¦kð[–�³XÝ‘½š5Q^ yÅI}Û§‚Uƒ(b\rexó%KÍéÁÉ\\Œä”Å“¬ÕÓ+!YÝ_ )òeøF`É[[nZœ‰=åwnü¤_ù\$ +\$ÑÉ#F—FjÚïicÌ•l™Ÿkë¸ì·ç6[ÓY„®Ám ·ààt\rQâ±x­´W%ºAØz¥@º‡ƒ¿ƒ�t\r€€4\"nŽ,Ê4ÊÞCÉfaä|ž³óþvaŸGäÁtżúüïÅ„ýt\$? Y9“¿ý³�ÚìHt�¿Îy0G¯O¬Ø(ÑÀ§þü¤•šÙ<«ØùÐG¸W¶äÜÙj³ƒ¼W½R/—á_'û \\z%>júžïë{Ÿ±ïZsÁ€¹ý?ÇýøÏçå“ð †âße³V/§@Ù0:ûhú¬€ý.ÿFÄQ£Ö4j^/g�]`ú F=nÆ&ï&&¢¢je @p° öûëÎüOnú©ö‡HÉÎX*+„5JêïÎ\nŠŒ¼ÿ�Pë€uf&ªKZ÷OâÉO€×ÌŒöï�á…PX°fÇl( øúÒú@Ú“à÷�šõÀ”€öÅpH{/�¬d¹K˜÷0‚ýžÜP˜“¬ü€û°&ÌÂ&­|ÿ\0οPd‡&æÎÁ NLËMŠÉP”ÜmË ¯üÉŠ�ìNU*)hü�EŽERÜí@” �ãˆ8É-„<¡49\0è\r ¾ ÀÚ†\"žãûÑ/‘6 @ËCŒ¢ýŽ\0Ð\0¾~@Ç€[Ña‘iÀ¿g3(gcc‘I½‹A±[ñsà¾6 ïq`¥¨†šÄ¦\0fnô´É¬Ѹ ³ÑSG¶\rñiqÊ ßOk€ÊIQhU1É‹\0\r€¿Qi£ è\r+ ñÍ‘ÿæ•)VÒñ!ñuIÊ\0r›,;ñÛÆ àì)±¡\"Ò1 Qí\"éâÍ®N7“äY2%QÑ#C1’€ÒQ!Q™#ÊÜâêâBiC%јy‡�DÍî ‹N!M<0¤.-\"ˆ3!1RQ@ÏiK#÷)Èi\"Bò’¡*ÀÆ”²c2«‘ç*’£+r§ò¿\"àÙePƒ2(*€Œ²#ò˜ èg+2í,²½*2,R¬¡2ý,ñ0Í*2Ñ’É/2Õ²Ûq½À�\$ˆ¶–±h\0ÛÒ˜‘‹?2R«2³/ã÷0lÍ’¿,’ðB è¶’Œc%ÀBÒ”8ò¿/³ *Ññ4“ &ét`äah{ï‚•3u7“%àÖ  ó@æ óŠn‘Ù6Q}93—+³`€Ór¶Ó…5à[ãFgÉS3s±Që:R'*òÃ&Qa<2u\$Ñû= ¿Bã<RU<±Ã“Ü¡óÙ6²S€à óÑ?2)+Ù?sû<Ó=€Ú”«>™9ÒJ ô@sç=SåA£R e·ASÿBsÇB´/>ó©1³Vq¸TI.qR_’3EØÜ\"e”ôYÃ\".3È‘‰ß\"Jq±ÙBÉ«D)Ì��Ö4 #\$�aŽà «l·(·S±<4[\"Që¢êÖd0´­%ÓùA4£ô_qiCŠK±R0€Û7�HI:Kjø àÉ2SÁA3Ùt³?ÓÛNTí\$âÏMos' \r’™N³gPR½&È8ôéPóÇOR3Q23 €eHIR:\"�:‰R±#F”¨Ðìàè ÑL¡KmSÀ¦Ñ*(ËÆ,Ôv8«Ž2\$35V¸D˜3c\n0ôø“ôüBÕ&\rä+ÒŠ9õ0”ˆ:\rÕ8qATëTI*]5Jã0JµSH&fàâÊ");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("f:›ŒgCI¼Ü\n8œÅ3)°Ë7œ…†81ÐÊx:\nOg#)Ðêr7\n\"†è´`ø|2ÌgSi–H)N¦S‘ä§\r‡�\"0¹Ä@ä)Ÿ`(\$s6O!ÓèœV/=�Œ' T4æ=„˜iS˜�6IO G#ÒX·VC�Æs¡ Z1.Ðhp8,³[¦Häµ ~Cz§Éå2¹l¾c3šÍés£‘ÙI†bâ4\néF8Tà†I˜Ý©U*fz¹är0žEÆ�ÀØyޏñfŽY.:æƒIŒÊ(Øc·á΋!�_l™í^·^(¶šN{S–“)rËqÁY“–lÙ¦3Š3Ú\n˜+G¥Óêyºí†Ëi¶ÂîxV3w³uhã^rØÀº´aÛ”ú¹�cØè\r“¨ë(.ˆº�ChÒ<\r)èÑ£¡`æ7£íò43'm5Œ£È\n�PÜ:2£P»ªŽ‹q òÿÅC“}Ä«ˆúÊÁê38‹BØ0ŽhR‰Èr(œ0¥¡b\\0ŒHr44ŒÁB�!¡pÇ\$ŽrZZË2܉.Ƀ(\\Ž5à |\nC(Î\"�€P…ðø. �ÐNÌRTÊΓÀæ>�HN…�8HPá\\¬7Jp~„Üû2%¡ÐOC¨1ã.ƒ§C8·HÈò*ˆj°…á÷S( ¹/ ¡ì¬6KUœÊ‡¡<2 ‰pOI„ôÕ`�ÔäⳈdO�H Þ5�-üÆ4ŒãpX25-Ò¢òÛˆ°z7 £¸\" (°P \\32:]UÚ èíâß…!]¸<·AÛÛ¤’ÐßiÚ°‹l\rÔ\0v²Î#J8«Ïwmžíɤ¨<ŠÉ æü%m;p#ã`X�DŒø÷iZ�øN0Œ�•È9 ø¨å� Áè`…ŽwJ�D¿¾2Ò9tŒ¢*øÎyìËNiIh\\9ÆÕèÐ:ƒ€æáxï­µyl*šȈÎæY Ü‡øê8’W³â?µŽ�Þ›3 ÙðÊ!\"6å›n[¬Ê\r­*\$ ¶Æ§¾nzxÆ9\rì|*3×£pÞï»¶ž:(p\\;ÔËmz¢ü§9óÐÑÂŒü8N…Á�j2�½«Î\rÉHîH&Œ²(Ãz„Á7iÛk£ ‹Š¤‚c¤‹eòžý§tœÌÌ2:SHóÈ Ã/)–xÞ@éåt‰ri9¥½õëœ8ÏÀËïyÒ·½°ŽVÄ+^WÚ¦­¬kZæY—l·Ê£��Œ4ÖÈÆ‹ª¶À¬‚ð\\EÈ{î7\0¹p†€•D€„i”-TæþÚû0l°%=Á Ð˃9(„5ð\n\n€n,4‡\0èa}܃.°öRs\02B\\Ûb1ŸS±\0003,ÔXPHJspåd“ Kƒ CA!°2*WŸÔñÚ2\$ä+Âf^\n„1Œ�´òzEƒ Iv¤\\äœ2É .*A°™”E(d±á°ÃbêÂÜ„�Æ9‡‚â€ÁDh�&­ª?ÄH°s�Q˜2’x~nÃ�J‹T2ù&ãàeRœ½™GÒQŽ�TwêÝ‘»õPˆâã\\ )6¦ôâœÂòsh\\3¨\0R À'\r+*;RðHà.“!Ñ[Í'~­%t< çpÜK#‘æ!ñlßÌðLeŒ³œÙ,ÄÀ®&á\$ Á½`”–CXš‰Ó†0Ö­å¼û³Ä:Méh çÚœGäÑ!&3 D�<!è�23„Ã?h¤J©e Úðhá\r¡m•˜ðNi¸£´Ž’†ÊNØHl7¡®v‚êWI å. ´Á-Ó5Ö§ey�\rEJ\ni* ¼\$@ÚRU0,\$U¿E†¦ÔÔªu)@(tÎSJkáp!€~­‚àd`Ì>¯•\n Ã;#\rp9†jɹÜ]&Nc(r€ˆ•TQUª½S·Ú\08n`«—y•b¤ÅžLÜO5‚î,¤òž‘>Ž‚†xââ±fä´’âØ�+�–\"ÑI€{kMÈ[\r%Æ [ ¤e ôaÔ1! èÿí³Ô®©F@«b)RŸ£72ˆî0¡\nW¨™±L²ÜœÒ®tdÕ+�íÜ0wglø0n@òêÉ¢ÕiíM«ƒ\nA§M5nì\$E³×±NÛál©ÝŸ×ì%ª1 AÜûºú÷ÝkñrîiFB÷Ïùol,muNx-Í_ Ö¤C( ��fél\r1p[9x(i´BÒ–²ÛzQlüº8CÔ ´©XU Tb£ÝIÝ`•p+V\0î‹Ñ;‹CbÎÀXñ+Ï’�sïü]H÷Ò[ák‹x¬G*ô†�]·awnú!Å6‚òâÛÐmSí¾“IÞÍKË~/�Ó¥7ÞùeeNÉò�ªS«/;dåA†>}l~žÏê ¨%^´ fçØ¢pÚœDEîÃa·‚t\nx=ÃkÐŽ„*dºêðT—ºüûj2ŸÉjœ�\n‘ É ,˜e=‘†M84ôûÔa•j@îTÃs�Ôänf©Ý\nî6ª\rdœ¼0ÞíôYŠ'%Ô“íÞ~ �Ò¨†<ÖË –Aî‹–H¿G‚�8ñ¿�΃\$z«ð{¶»²u2*†àa–À>»(wŒK.bP‚{…ƒoý”´« zµ#ë2ö8=É 8>ª¤³A,°e°À…+ìCè§xõ*ÃáÒ-b=m‡™Ÿ,‹a’Ãlzk��ï\$Wõ,�m�JiæÊ§á÷�+‹èý0°[ ¯ÿ.RÊsKùÇäXçÝZ LËç2�`Ì(ïCàvZ¡ÜÝÀ¶è\$�×¹,åD?H±ÖNxXôó)’îŽM¨‰\$ó,�Í*\nÑ£\$<qÿÅŸh!¿¹S“âƒÀŸxsA!˜:´K¥Á}Á²“ù¬£œRþšA2k·XŽp\n<÷þ¦ýëlì§Ù3¯ø¦È•VV¬}£g&YÝ�!†+ó;<¸YÇóŸYE3r³ÙŽñ›Cío5¦Åù¢Õ³Ïkkþ…ø°ÖÛ£«Ït÷’Uø…­)û[ýßÁî}ïØu´«lç¢:DŸø+Ï� _oã äh140ÖáÊ0ø¯bäK˜ã¬’  öþé» lGª„#ªš©êކ¦©ì|Udæ¶IK«êÂ7à^ìà¸@º®O\0HÅðHiŠ6\r‡Û©Ü\\cg\0öãë2ŽBÄ*eà�\n€š …zr� !�nWz&� {H–ð'\$X  w@Ò8ëDGr*ëÄÝHVéÞw8ìJè\nm@¦OÈ#P²Ï@úYp²ÏöwàÊðÀP\r8 ÀXë\$Xü PÝd– ÀQ\0Rx1\"T]\"êÐè  Í °êQÐðàÀbR`MÛðà-àRSE8Go0 ê æd‚B^±\0ÂÜ\":ÜmN.Þj %ß@æ3(ªx Âl Ì ÅÞ ‘€W ßåÞ\nç:\r\0}®@³qm;@È-¢Þ¤Zôg.zFÂf@Ì\r�žW®Äck‰Œ ñ< é0‡Ëúz'4\rñ­\0îjELYˆð(ð%€\nMž‡ÄDÃÂoFøB¨q‘ÖKg²ä#ÄZ¨¸³àä\"�\nçÀЮÅê�hÞÒ‹2-n§\"jy\"¥ê§èþ�ì\"÷ðgý!,Ä*ŒTù x�¢ÅËPú‚5%Làèò`¾LÖM†¬@¶ Z@ºìÊÒ`^Q0R%9&jv‘häX ðoŽöö‹G#æ’ö²DÙòHùK¼lX¼ï¦Í-äû2hWli+æ�&ÄÕs'rzìàÉ(„Òˆ‚ò¼¿%tKå6ûrâ¶ëràïáK�.‚*Ð,*v�bgj�#޲óLÈ®v®Z‹€Q\$pÜ�n*hòÀòvÂBñôâÀ\\FJˆX%x f\$óA4K74 a#¤¦3\n¨(|°Z, ³e2äl\r|�Kû0Ðò¿³¦ÎW2-m) )‘¾Z'%€Ü ªè7å.› *í*\0O;’®C¥*¯—\$ËA;’VÌò¸ë‚(�€ÚlìØt‚Kã.DÆ›_> á:¥v¢3Ÿ=dö\$Ræ“ øSlß7ˆºB[ì�!@È]à[63zS…e>sòr„Dz€í;T0²SÁ*ï�CË+oª\\\0ÒÀ{D´Ü  kè€z@·= »¥·Dª4Vç‚�Ê•*\0W�ÿ³tÿäv¶¥yD Ì-¢5CŒæ3�•¾…ýD´–t”›!’_ U”XL´]F÷Fn—F ì&@%b>cˆêPÜÛIö)3<’@ `ä\r“55Þ%¤/3Qœó@Gó5\rÍÄѱTŽ£è,§ÞEÍNÈ&j\0Æh̾\$�Üá È353‘T�B'FLâÀ¦'DäñøU#±LÑ�ÉPm*Ñ \\\r@êò@¨)íþE­ÓUUU•]V†ñïÞ`‡MµÒóRD³FV {4Õ`3U4•‹5§‚�#ÃT`èQ(ðßµq7M÷*@SVMÈÄ¢#ê~ƒ2 Õ´Ñjl¤@·\\ Ý.J|2“U¡\\¬º Ëv·°«\\b;^\0Û6 x·Î‡]ëµ^uøîõULµZ§å—MPÖ™¬4Hû9µ\$0å3Í'VuTõ@ƒKW•|ñŽ�/\$J�*D´÷]î X“·_pªõšÞ•žÑ¥ÄÕ²uü¤I¬Ü…z 䢮ÀÖr…Þ\n€Ò%¤8š“i^Èò»U¡1�5³n;I\n§R­Ÿ3§ÙQU45…5`z€ac¶­b°`qOtÙNu 6)õTÿ ¯‹jµ“X–´ReÈ#ÈJ-„S@á \" U¶ë ÀÎÒCÊUUß8³‘6Ø-kií/YÊ¡ R\$ð¼!·\rn×[6VÝ­íqÕ€�Ê.åÎB‘¢ °¦cp­pps!\0»Ow\"çngsôX³wGiÈ{Z\0Su*k`”ΞÖa!Qo'd òx Caö ö¤cë!ƒºÞ60P°\rÊ‚‹T¯ÒœµËú¦ï¿,jÁ&ð@ ʃ( OA€æP÷T¯jÕßGhλb¶¯Ì\"%°\n‹qX€z %‚ÃÅÈÎëm~@Ï~‹r¶ÖJnWâ~ Î ¨]RXû FÖír’ÍxNmHp ñ+@Ñkl#€Û\0Ë�ívÔX&…Ø,i�Íd¥zÔÓ\0äNýø ~wêü¸„×û€Ø\0äWá�·ý�\0ñ�KNÆm† 0�ÍpÓíB×¥Ó'X)„`Y†e±‡XyI: Ë`dÑ t¶\nÚ('N\r€àHGuKše¨\0Ÿ€Ä*3’æ)n3ͤ oä“Vò}vö¯ ô¦æN\\°ØØ�èÜ1i)\".Ž`t„>\rØÛcÈß�ó—�fãŒoA—©\"×­±³ É OyYïFÒ\rá[5BÂo*/t“(ÅÅ%²úR[<òï8V‘“\$AM館5¨±9'*ŒX¤úö†‡ðÜ…ˆ\\†æ\"jr DÔ\re·ˆàX|ªê^©n#‚dÍ¥lÙÇn ‚©¦ªM¹¦t€~\\…Í›\0™›@ᛂg=Ñ2¬À‚.†* \0ž @Ô'9¾—yÚ ™ßž9æ dæ £zq„6ò€]œP~\n€ Pì:‰Ù<ƒ¥œâ DY„:]5[[¢'I¢—ËFù�ö…º\$Bâ<“P’P—@N”0/Eú:^ DÈJw¹ž ¥\0€_Cdz#¢zFW4(Kú{¤U[¨ý{�>\0^Ž%ÐM@XSÚ‡£ZŒSlWº™¥…wYº� Þ”\"B*R`  à¦\n…ŠàŽºÐQCFè*Žº»ˆYÌͧe‡Æêˆ+âH¸j™\$ ÕQ À^\0Zk`îªV¦B%Â(X**2šÍºè º»®æôN`°ºê| ȱ„-©“ ‡í³«~8Zæ Æ‡Rz2\"È Jî4›S~J»&tоe‚m¤Và}®ºNÖͳ'²Úrú5f.&1ù�À›jâð‹§§úK¤åm¹{‰¤`º†w Ü!•^#5¥TK¥„¹Eâhq€å¦\$÷ñ®kçx|Úm¥:sDºd…zA§Ú‹?…¾ºˆ“[ðLÒȬZ²Xœ®: ¹„¸[(!‡k¬X�²V¹yƒ¾° ©Â“­ï\$\0C¢9ˆdSi¹in‚ {�`”\n`ž ÀÄ|K ¸:ç»5ä »º# t}xÐN„÷»{»[¸)êûC£ÊFKZâj™Â€PFY–BäpFk–›0<Ú@ÊD<JE™ºi0“5ÃøŽ®•T\"¬ãVhº¬Á”ÄNÌŒ“HùWDeSsŒ’ûNŠô\0Ëx Line truncated
lzw_decompress("v0œ�F£©ÌÐ==˜ÎFS ÐÊ_6MƳ˜èèr:™E‡CI´Êo:�C„”Xc‚�\ræØ„J(:=ŸE†�¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS œËUl�(D|Ò„çÊP¦À>šE†ã©¶yH chäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š�˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡�ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0�DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé— ·ç/º<�xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ�`Èó¯bè\\š?�`†4\r#`È<¯Be ãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°ø 㢺÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æ j´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù' ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰ /m�6PÔ@ÃEQ�àÄ9\n¨V-‹Áó\"¦.:åJ�Ï8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1�íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼É�Ãà@„}&„�ˆL7 U°wuYh�Ô2¸È@ûu  Pà7ËA†hèÌò°Þ3 ÛêçXEÍ…Zˆ]­lá@MplvÂ)æ ÁÁHW‘‘Ôy>�Y�-øYŸè/«�›ªÁî hC [*‹ûFã­#~†!Ð`ô\r#0PïCË�—f ·¶ ¡îÃ\\î›¶‡É�^Ã%B<�\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF�¨jZ£1«\\:Æ´>�N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p�\"ë�°ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#�§¡.Á\0@épdW ² \$Òº°QÛ½Tl0† ¾ÃHdHë)š‡Û�Ù À)PÓÜØH�gàýUþ„�ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[�(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°�'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠ�Š=¡p)«\0P ˜s€µn…3î�r„f\0¢F…·ºvÒÌG ®ÁI@é%¤”Ÿ+Àö_I`¶ ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„ %¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹�ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ�\\—b „ÿé¾’Q„=7�:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉÕ«�ƯÕbBr£ªö„’­²ßû3ƒ\ržP¿% ¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã +ª)<–j^�<Lóà4U* õ�Bg ëÐæè*n�Ê–è-ÿÜõÓ 9 O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàž œÄÓ7 tßšé�-&¢\nj!\r�ÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZt Xe!Ýf†@ç{Ȭyl 8‡;�¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5- Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾�Ã4ÉDZ©ÕI¢™'\$cL”R�–MpY&ü½�Íiçz3GÍzÒšJ%ÁÌPÜ-„�[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'�\\–’KJa¨ÃMƒ&º°£Ó¾\"à²e�o^Q+h^âÐiT�ð1ªORäl«,5[ݘ\$¹·)¬ôjLÆ�U`£SË`Z ^ð|€‡r½=Ð÷nç™»–˜TU 1Hyk›Çt+\0váD¿\r <œàÆ™ìñjG”ž­tÆ*3%k›Y ܲT*Ý|\"CŠülhE§(È\rÃ8r‡×{Üñ0å²×þÙDÜ_Œ‡.6иè;ãü‡„rBjƒO'Ûœ¥¥Ï>\$¤Ô`^6™Ì9‘#¸¨§æ4Xþ¥mh8:êûc‹þ0ø×;Ø/Ô‰·¿¹Ø;ä\\'( î„tú'+ �™òý¯Ì·°^ �]­±NÑv¹ç#Ç,ëvð×ÃOÏi�Ï–©>·Þ<SïA\\€\\îµü!Ø3*tl`÷u�\0p'è7…Pà9·bsœ{Àv®{·ü7ˆ\"{ÛÆrîaÖ(¿^æ¼ÝE÷úÿë¹gÒÜ/¡øžUÄ9g¶î÷/ÈÔ`Ä\nL\n�)À†‚(Aúað\" žçØ Á&„PøÂ@O\n師0†(M&©FJ'Ú! …0Š<ïHëîÂçÆù¥*Ì|ìÆ*çOZím*n/bî/�ö®�Ô ˆ¹.ìâ©o\0ÎÊdnÎ)�ù�Ži�:RŽÎëP2êmµ\0/vìOX÷ðøFʳψîŒè®\"ñ®êöî¸÷0õ0ö‚¬©í0bËÐgjðð\$ñné0}° î@ø =MÆ‚ 0nîPŸ/pæotì€÷°¨ð.Ì̽ �g\0Ð)o—\n0È÷‰\rF¶é € b¾i¶Ão}\n°̯… NQ °' ðxòFaÐJîÎô�LõéðÐàÆ\rÀÍ\r€Öö‘0Åñ' ð¬Éd oepݰ4DÐÜÊ�¦q(~ÀÌ ê\r‚E°ÛprùQVFHœl£‚Kj¦¿äN&­j!ÍH`‚_bh\r1Ž  º n!ÍÉŽ­ z™°¡ð¥ Í\\«¬\rŠíŠÃ`V_kÚÃ\"\\ׂ'Vˆ«\0ʾ`ACúÀ±Ï…¦VÆ`\r%¢’ÂÅì¦\rñ⃂k@NÀ°ü�Bñíš™¯ ·!È\n’\0Z™ 6°\$d Œ,%à%laíH×\n‹#¢S\$ !\$@¶Ý2±�„I\$r€{!±°J‡2HàZM\\ÉÇhb,‡ '||cj~gÐr…`¼Ä¼º\$ºÄ +êA1ðœE€ÇÀÙ <ÊL¨Ñ\$âY%-FDªŠd€L焳 ª\n@’bVfè¾;2_(ëôLÄп ²<%@Úœ,\"êdÄÀN‚erô\0æƒ`ĤZ €¾4Å'ld9-ò#`äóÅ–…à¶Öãj6ëÆ£ãv ¶àNÕÍ�f Ö@܆“&’B\$ å¶ (ðZ&„ßó278I à¿àP\rk\\�§—2`¶\rdLb@Eöƒ2`P( B'ã €¶€º0²& ô{Â�•“§:®ªdBå1ò^؉*\r\0c<K�|Ý5sZ¾`ºÀÀO3ê5=@å5ÀC>@ÂW* =\0N<g¿6s67Sm7u? {<&LÂ.3~DÄê\rÅš ¯x¹í),rîinÅ/ åO\0o{0kÎ]3>m‹”1\0”I@Ô9T34+Ô™@e”GFMCÉ\rE3ËEtm!Û#1ÁD @‚H(‘Ón ÃÆ<g,V`R]@úÂÇÉ3Cr7s~ÅGIói@\0vÂÓ5\rVß'¬ ¤  Î£PÀÔ\râ\$<bÐ%(‡Ddƒ‹PWÄîÐÌbØ fO æx\0è} Ü â”lb &‰vj4µLS¼¨Ö´Ô¶5&dsF Mó4ÌÓ\".HËM0ó1uL³\"ÂÂ/J`ò{Çþ§€ÊxÇ�Yu*\"U.I53Q­3Qô»J„”g ’5…sàúŽ&jÑŒ’Õu‚٭ЪGQ MTmGBƒt l-cù*±þ\rŠ«Z7Ôõó*hs/RUV·ðôªBŸNˈ¸ÃóãêÔŠài¨Lk÷.©´Ätì é¾©…rYi”Õé-Sµƒ3Í\\šTëOM^­G>‘ZQjÔ‡™\"¤Ž¬i”ÖMsSãS\$Ib f²âÑu榴™å:êSB|i¢ Y¦ƒà8 vÊ#é”Dª4`‡†.€Ë^óHÅM‰_Õ¼ŠuÀ™UÊz`Z�J eçºÝ@Ceíëa‰\"mób„6Ô¯JRÂÖ ‘T�?Ô£XMZÜÍІÍòpèÒ¶ªQv¯jÿjV¶{¶¼ÅCœ\rµÕ7‰TÊžª úí5{Pö¿]’\rÓ?QàAAÀ莋’Í2ñ¾ “V)Ji£Ü-N 99f–l JmÍò;u¨@‚<FþÑ ¾e†j €ÒĦ�I‰<+CW@ð�çÀ¿Z‘lÑ1É<2ÅiFý7`KG˜~L&+N�àYtWH飑w Ö•ƒòl€Òs'gÉãq+Lézbiz«ÆÊÅ¢Ð.ЊÇzW²Ç ùzd•W¦Û÷¹(�y)vÝE4,\0Ô \"d¢¤\$Bã{²Ž!)1U†5b p#Å}m=×È@ˆwÄ P\0ä\rì ¢·‘€`O|ëÆö œÉ�üÅõûYôæJÕ‚öE×ÙOuž_§\n`F`È}MÂ.#1Ⴌfì*´Õ¡µ§ ¿zàucû€—³ xfÓ8kZR¯s2Ê‚-†’§Z2­+ŽÊ·¯(åsUõcDòÑ·Ê ì˜ÝX!àÍuø&-vPÐØ±\0'LïŒX øLùŒˆo Ý ô>¸ÕŽÓ\r@ÙPõ\rxF×üE€ÌÈ­ ï%À ãì®ü=5NÖœƒ¸?„7ùNËÃ…©wŠ`ØhX«98 Ì��ø¯q¬£zãÏd%6Ì‚tÍ/…•˜ä ¬ë�LúÍl¾Ê,ÜKa•N~Ï ÀÛìú ,ÿ'íÇ€M\rf9£w�˜!x�÷x[ˆÏ‘ØG’8;„xA˜ù-IÌ&5\$–D\$ö¼³%…ØxѬÁ”È´À Œ]›¤õ‡&o‰-3�9ÖLù½z�ü§y6 ¹;u¹zZ èÑ8ÿ_•É�x\0D?šX7†™«’y±OY.#3Ÿ8 ™Ç€˜e”Q¨=Ø€*˜™GŒwm ³Ú„Y‘ù  ÀÚ]YOY¨F¨íšÙ)„z#\$eŠš)†/Œz?£z;™—Ù¬^ÛúFÒZg¤ù• Ì÷¥™§ƒš`^Úe¡­¦º#§“Øñ” ©Žú?œ¸e£€M£Ú3uÌå�ƒ0¹>Ê\"?Ÿö@×—Xv•\"甌¹¬¦*Ô¢\r6v~‡ÃOV~�&ר�^gü šÄ‘Ùž‡'΀f6:-Z~ ¹šO6;zx�²;&!Û+{9M³Ù³d¬ \r,9Öí°ä·W ÆÝ­:ê\rúÙœùã�@ç�‚+¢·]œÌ-ž[gž™Û‡[s¶[ižÙiÈq››y›éxé+“|7Í{7Ë|w³}„¢›£E– ûW°€Wk¸|JØ�å‰xmˆ¸q xwyjŸ»˜#³˜e¼ø(²©‰¸��Àßžþ™†ò³ {èßÚ� y“ »M»¸´@«æÉ‚“°Y�(gÍš-ÿ©º©äí¡š¡ØJ(¥ü�@ó… ;…yÂ#S¼‡µY„Èp@Ï%èsžúoŸ9;°ê¿ôõ¤¹+¯Ú ¥;«ÁúˆZNٯº§„š k¼V§·u‰[ñ¼x�…|q’¤ON?€ÉÕ …`uœ¡6�|­|X ¹¤­—س|Oìx!ë:�¨œÏ—Y]–¬¹Ž™c•¬À\r¹hÍ9nÎ Á¬¬ë� Line truncated
get_lang(){global$a;return$a;}function
lang($v,$F=null){if(is_string($v)){$kf=array_search($v,get_translations("en"));if($kf!==false)$v=$kf;}global$a,$hh;$gh=($hh[$v]?$hh[$v]:$v);if(is_array($gh)){$kf=($F==1?0:($a=='cs'||$a=='sk'?($F&&$F<5?1:2):($a=='fr'?(!$F?0:1):($a=='pl'?($F%10>1&&$F%10<5&&$F/10%10!=1?1:2):($a=='sl'?($F%100==1?0:($F%100==2?1:($F%100==3||$F%100==4?2:3))):($a=='lt'?($F%10==1&&$F%100!=11?0:($F%10>1&&$F/10%10!=1?1:2)):($a=='lv'?($F%10==1&&$F%100!=11?0:($F?1:2)):($a=='bs'||$a=='ru'||$a=='sr'||$a=='uk'?($F%10==1&&$F%100!=11?0:($F%10>1&&$F%10<5&&$F/10%10!=1?1:2)):1))))))));$gh=$gh[$kf];}$ua=func_get_args();array_shift($ua);$Kc=str_replace("%d","%s",$gh);if($Kc!=$gh)$ua[0]=format_number($F);return
vsprintf($Kc,$ua);}function
switch_lang(){global$a,$Ed;echo"<form action='' method='post'>\n<div id='lang'>",lang(20).": ".html_select("lang",$Ed,$a,"this.form.submit();")," <input type='submit' value='".lang(21)."' 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());}$a="en";if(isset($Ed[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$a=$_COOKIE["adminer_lang"];}elseif(isset($Ed[$_SESSION["lang"]]))$a=$_SESSION["lang"];else{$ka=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$Td,PREG_SET_ORDER);foreach($Td
as$C)$ka[$C[1]]=(isset($C[3])?$C[3]:1);arsort($ka);foreach($ka
as$z=>$H){if(isset($Ed[$z])){$a=$z;break;}$z=preg_replace('~-.*~','',$z);if(!isset($ka[$z])&&isset($Ed[$z])){$a=$z;break;}}}$hh=$_SESSION["translations"];if($_SESSION["translations_version"]!=2038034077){$hh=array();$_SESSION["translations_version"]=2038034077;}function
get_translations($Dd){switch($Dd){case"en":$f="A9D“yÔ@s:ÀGà¡(¸ffƒ‚Š¦ã ˆÙ:ÄS�°Þa2 \"1¦..L'ƒI´êm‘#Çs,†KƒšOP#IÌ@%9�¥i4Èo2Ï�Æó €Ë,9�%ÀPÀb2�£a¸àr\n2›NCÈ(Þr4™Í1CdHæe9,‡\nH(�:Ebç9AÈi:‰&ëyËw�ç{à(³ 'h,@p´¨¦zMÊ52N‘ƒDöåz2Ê\ny3(+W”‘¤&3y¸ék:À¦¸\rv³c!µái¦ê~_k3‚ˆ†X¾ŒL0›ŒçSrÝ­‰šégsu8åŠ9j�5ºá”9uÎQCn´ a9œÎös'+EøkI†ûQ¸(.k¢2¶Á<þ�BÈ6­k€@£³ªZš„‚ΦŒ#ƤŽnBE¾ãòì\0Ђà »àù>�`@\$cB3¡Ð:ƒ€æáxï…Éâ<+8ÎÀ�xá¾c�È„J\0|6¬éàÜ3,ðnÚ‡�xÂ5N`Ê1©­\nò×Dãº:C¬È„µ¢ØÑ®,ÐÊ;Á3œ¼¢Íh�;„ Ê+Œ/[�9¡‰Ä<´`HKEQ‹¨†7�‰{ü*+ I�¯kmލÈ@ÁŒh\r<À¹c0Â:Îa\0ì0Ò­h§1L€PŒ:�Ó ÒÚÑÎ3 #;E]¿Õ�\n1�\0S¢<ŽãBáYBàPȤÃm“�祭à¨âÀÐ Î:Y\"\rtÚÖÕ`ØÓϨ8ÆèµÂˆ˜6”ë¢ú�ë£ü9µ“ÌéO�ÍõvBÂ0Óh D�`6tû_«}Õ…`‚ƒ2Í®¢JÅhˆ£Ä,Ã`£.t\"îP„-è½j\"'­B~Ÿ,êr)t¨[˜¸°\$;^5Se»%ãáD˜ýæ¹%¯Òz:Q×B¬¢8Ê7½³bË9½,z\rB CxÌ3\r�jPýŒñ@*\rèÔ7(Û 7CoˆÍV@ÏãƒjI„µÐ.íHu Rì›5—µ!Ô9·Üð>æ¹[Kª0ïÆ÷¾´lnÁ ûgV%£\$7\riô°¸Ž°ë¤ARá6Œ Ói®1ƒ#Ʊ¼sDZøï ÁplŠ9HòJŽŠKct xv¥.Ëó ãb)ØÐÒ€Œ‘r;�aÜS»Ç­iBTò.2[ã&¤*xá馡t_ö‘´qG‘ô�!wÁt�\$xÙ¯\\ÚÊ–,õÕ;ÌÌ­¾UÀÉ\n¢@A¬žÒè›:*G™ç›W2…P»|t¥5Ÿ2ãPêÎ\$KŒî¢Rd ìtg´�†̾Ü+mn!¸ŸÔH‰‹”\"_µx=H\$U��1雟âîq‘\\ Ž1³FHB€H\nDÑ¿³A@\$ˆ€’%^I�A(Ra¸â+§N¨ŒÀi3D\\ΜO�2&\$Íô˜ Ü«Ú鳇ÆÚ Ãç–z�'ÄŒ9¤´6ÞaÊV\n…>3è‰\r*Èo…¥ƒH@—[¥51Ú<:ð@˜RÆzçԬ͔‰\$‰e»9 LJIY-%à€73ÔÖ£™‹&¤�4œÀÈOŠz&¯¤.ˆËZ¥{ €’D!/ä†9ùR¸\r1&䨒CLK¾‘'t1‘æ6 òK3Žu²Â‚Ó1BxS\n‹ð0¾ ¤MSt—žŒÈ¸Ì–\r9á1u¤”é‡%‡‹ùWFP”5eàtHÙ#ð¶wp@×t¼'h‘„`©Ú-‰Ê¦†i¾AÏ9p(iT´�ØxÀQ´&Tÿðœ¨P�*PM�\0D¡0\"ÓÕ6¥´´ '´ÿ¨Z—�qì?KypSòƱèdš‡”†ó`G*é°(çpOt¨e\$ⰓɘüòPÐXi�2FÁŸ Db�¬uVl™2¢üØ1£žˆˆ·Ÿó �3GAYBÄú¢™yŽ”†ãÑAÔ\\(:†pÑ1b”TfÏ@ óùI;eu”2Òb’²T�3x­ŒÔYtkTä‹9Õí1Äó•^%‚t�¶Ü�§dð¥êx\n†¢;-0ð]S’û-w8º…2\n�Ý´xž”M©`g¥Á”²„5œÝ cì\nô62ЯÙú «N0´™ÃÒ€ ‚@­uÐSõCn•²Y4U• ÕL¡¶hÞõX)5w‚ T! \$\\%샋³V&¡xêNû-o]ƨ�@ Á&1AÝGV¢‰¹q¯E1·âBÂZ.ox¬‘5»zú@N1.\r¤§ãXž1Æ:ÅÆ.AãäÉLBñlòüÏc@Æß‰C{Ä™çå|�Žv-ÂØË ålm’Y}Ë­ùl ›‹Õ±E¢\$x�gpG3¦Tk=”§Ø@­©9…=\0(+†PÅ �q7™Š )+Š4¬ˆÈpfGt¸Ðbô˜lȘ„9(€�ÑË=å˜ç¤¿æ`�02Dúº�Õ¦sc¨IÕ&DøIjìh>ÖE…˜ê½lwN p‰îu•kí[]שtÏ÷-tì`Ë]•‚tŽ»0œlêí2µÎÄ]5H°\$r­j«U±ân[õêÊÈYï0Æè(º›ºÞ*ˆÝFÝâÔª™cŠˆ0wPŸW2±öŠÏ×Fȧ‚0¦ˆ¹Òª¡:§°ÊÚ@¶¶®¯*·×æÄLJ©ùþ¸pýi«6|ä°1׎ØN!­xzz‘‰XÐ¥�bG]dȚ䣦!pfÇð€òõBƒxþ¿¡üÑê“ü–c1ï:Éùü#^ÆÚxÀdâqצ�Z)Aå;K¦tî±y:×!‡¬{ašë¯!Úy»e6™)b|K¦îþ•Pì£rä¦C+tYÑw¸AÂD.Ÿ‚Ñ,ÓöµáRlWhhÍg«™w[ ÔÝ)í•õkÅ×Ë-ËðÉñ�…6Âï1Ñ:×é_bîOaÚª:Ü…ÔzžõÉ«™r<ÿ`;!¸À+A/UĶNÁ%7ŒpWï>¿ì{fî”M×ϲ*À„Seò2?œ�AëïS0RiNçüÇ”v.¥ðsÿ>6ÿ“�z¾¸J?W@ö¾ç?Ý®!'Í3½\r†DàúHÿ f÷>ÿoúÿéî²cÖîå4¼ÄÆ\ro”üêòöëÏŠõ�)ï”ÛÊþÂâ½€Ö½ËêAÏ`ý:½ëìùOŒÚpQ�ÊÚïl%<¾‹à=0°Fu¦Æh¯°Sàª0°\"ö\"Qð\\ý§·‡æù€�>œ>¯â8€ê SéîÀÞ�ŒM\0Ä8ù@Ö\$Â.ç†÷ ƒâ®C|Øð¾èˆÄ#Фofð#\"ò- — LPMUç¶É͆ÌPìß°ÎìNrçhÄM€ØiÊ\r+ÐÒd>Ü‚0lÈ\r Ìm#\0(läï©,‘\0ª\n€Œ peÃh/ã¤Ë.ŽùJDÃÐÄèðü®ŽÅ£ Ž¢&eEDd«z•O85 ›ñ\"µ€Ø¦…7c‚œ/âš¿� �Qpm)ÐUÅ`7&¾¢føJ©è´Â@ZãÞ:Ñv*-Dâp \"Nkh±íiJìM�ðù�© ÑÄ;ªÎÚkk-þìCh|ñÙäØð\$⑾/qÜèEê6ä'm—¦†¸Ë c˰³ï!\rëj÷�½\nN:\0˜ª…’ßn \".Y2Â5®^1‹C ê%ê­ËnA\"Ø\"vSp*µ„–zkÝ£�ã`TB˜ïk_Òd·ê,ª¼.\0î- v`Oüd ‚)¢ÔÁ&ˆ©†ö  Z@BLùI¬*LÅ)’œ�ÑöØò¢À";break;case"ar":$f="ÙC¶P‚Â�²†l*„\r”,&\nÙA¶í„ø(J.™„0Se\\\r…ŒbÙ@¶0´,\nQ,l)ÅÀ¦Âµ°¬†Aòéj_1�CÐM…«e €¢S™\ng@ŸOgë¨ô’XÙDMë)˜°0Œ†cA¨Øn8Çe*y#au4�¡ ´Ir*:†­ÊêÆÂή‰C#·%<U[VD ˜˜œí§ª¥XT\nh¥ƒ¶“‡1Ãb1Yœ•±M7™–MçQ Âv2ˆ\rÆñÀäi;M†S9”æ :m§!„é±:\r;ó¡„Å»§«e\r…Æ^kÓ\\BéU»eP�e2Õ©Of±ÌB3vŠꃥº‚ŠzóI¸Ï†ß•· uÉtl+‚ú�/‹ˆ*�Ã[f;�Á\0Ê9Cxä§®,Ép ¯âäÀ-…{ÎiÊöü¯ì 2ˆ'�ܨ¤ŠÙbލkbB‰•(!Pª§hBØU&Œ’üœ2®úâ‰r°ñÇÊÔ‚‚\"r3ﱦÁLÁ# ÚúÁá\0È7·Í�Þ:#ná LÆ1·Ã›ê3„ ´ã9ÃæØŽãK’ÕÌ­¬ä9Žð�ÈäÜ4C(Ì„C@è:˜t…ã½\$ 2´± ÂC8^2�Áxá=Ï£�È„J`|6ÂM‹ê3BCkŒ4�ãpxŒ!òž�–&Ám›º?³‘ã'\\×o\$“�j©Q\0G¬œ=%ØuÕ›£ÈxÆHä\"h\\³%ª¬›²ˆ�+Œ#�Ý5£�(É(ý…n%ªÉ_\r ëͦº›\$šY]¬R—F2’<”0Â:�“\0ì0�ƒ¨Ë0 =~’CL\n³!ÉÂZ�—)¥–›kR<÷Jº#ÙµÎ%^Ç¬ÊØY>)­ÄlöÌWnâ¥-Á\\½€P�„\rŽœÝ£cÂ7@Kó%n0‰È¦(‰‹Rýºï-¦ñ wË9ÅO| GHN¯gÚÑ‹šfŒ»2õ³©ƒ\0[í+æßš!k]�®Èzý�ç+æW—Ø:Mþ�ç™›%oYø¡°ô³LãÛpCÒ~!Y©·yˆŽ^†Ø©�%\rÜÚ–ßóüèÊ<8ãtÕXŽj|BÂ/¯G»Ã¸«K£åsµ›±êy|»˜2lyv�À(2‰¯Ðä:\r€STÖ\\­ˆÞ3 Ãd°ÈÀrË!° :²VB ÞÚUÃpò½Pë3Í#6\rƒxÎúŽt\0è9}cÎO¨ €+¨%pÜN8(`¤È¢\$’÷’A|&!“[i3\n†¹›õXŸbj>À�*Àd ¬\r!‘,¨#Z¡T:‰Qj5G©&¥a2˜JiNô¶èC¢°S ˆCõ^}•šµ)î0ÈrµÊ Í0«ˆfꮉpƒ ŽÍ˜gºµ`‰rI«d™„ÔäqáŸiñ? àðJ… €¹@¨8`¢RŒQÊAIu(¥ƒrÊeM©×Nê]\\CTÁ\$6‡vTàt‰ ùÑÀPÊ�×YÁ€¡„5ª¤À{é’*Ý|E¥þJVâKBÈb(\"üŽàÐh6)š «@�CcA FÆP(?\$Xa Ñ¡0¿Öüš õ~è5:œ“�,ˆØa’\0€1Ç)\"Xc­?„4É%^A\n£„*¯7ß’\"X&Ô4nCHšÜ1ä5–âªIHaˆœ¨\0™„5c CA„rhÛƒto*ëLo<ßœ´¼™eÈoô\$§·§ŒB�cIó‚{�E¼�ɰ©–(=UôÜÔúh€H4䪠Ü Bz�j…u‡s”ÃD\r!�E w3Í‹F©Ì§’r,�\0C\naH#QÉÄQ�å´œ§[e{ß(%±¥ RÚ�K⹞®Î ˆ’fÀñ’‚åm~Q„†×&ùà Å ¢”súuÄd!n­sÀIåDUtdÌ\$‘ òjÒÔ+¡ämNI“”oÔ(qaÁÍ0d\"a\$€K4µ†7êœæ}Sæö³�Ö˜‘Èj;@'…0¨BÈ‹_¬F.tÇG€!Wa‡¯\$ø�‹RM˜ÕS´óÎu�ó·^m½ Á‰£B^L¬ô’¤¡‘¤Tp[mQPµa (›Ñ�iÃ~ªU6ÓêvxLšƒ‚r›‚0T\n ´7.°Ó#S\$²¶^Æ#`„ÏÁÓGeTVŲ´BúXŵ•Š€Âp \n¡@\"¨p~�&\\.ÒQoŸ+Ë\\”+7'³„b¬ÕÉ]f&áV:Å\0”ÏT†|-áwx\rdŸ(¸K„N:·d/—4B L±|?HÁ­¤LlPh³a£…oÑòƒH`mÉ&ÂÀ—¼.³•æQX(Q³¬{Ÿ“ns^G]µ§™Ñ–N‚ªÿ65£L_2yrgF%Š:2¦0&„Ù!à¤*B ñ€F®tIRTAÈ#p\$æTA‰Ñ7‘]Û¾e1–ܘål«.®�8Ô× !!Ì©eCP�S\r!é‡ÏéxS ¦î€Ð�H‰@\nŒÑ¢l=­hºÍÈeël¶‹m\\Å�'‘Æè#ÂÙ# | Line truncated
Min_PDO{var$_result,$server_info,$affected_rows,$errno,$error,$pdo;function
__construct(){global$c;$kf=array_search("SQL",$c->operators);if($kf!==false)unset($c->operators[$kf]);}function
dsn($Ub,$V,$df,$Ge=array()){$Ge[PDO::ATTR_ERRMODE]=PDO::ERRMODE_SILENT;$Ge[PDO::ATTR_STATEMENT_CLASS]=array('Min_PDOStatement');try{$this->pdo=new
PDO($Ub,$V,$df,$Ge);}catch(Exception$oc){auth_error(h($oc->getMessage()));}$this->server_info=@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);}function
quote($yg){return$this->pdo->quote($yg);}function
query($I,$oh=false){$J=$this->pdo->query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(22);return
false;}$this->store_result($J);return$J;}function
multi_query($I){return$this->_result=$this->query($I);}function
store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
true;}function
next_result(){if(!$this->_result)return
false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
result($I,$n=0){$J=$this->query($I);if(!$J)return
false;$L=$J->fetch();return$L[$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(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$Qb=array();function
add_driver($u,$E){global$Qb;$Qb[$u]=$E;}function
get_driver($u){global$Qb;return$Qb[$u];}class
Min_SQL{var$_conn;function
__construct($g){$this->_conn=$g;}function
select($Q,$N,$Z,$s,$Ie=array(),$_=1,$G=0,$rf=false){global$c,$y;$ud=(count($s)<count($N));$I=$c->selectQueryBuild($N,$Z,$s,$Ie,$_,$G);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&$_!=""&&$s&&$ud&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$ud?"\nGROUP BY ".implode(", ",$s):"").($Ie?"\nORDER BY ".implode(", ",$Ie):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");$ug=microtime(true);$K=$this->_conn->query($I);if($rf)echo$c->selectQuery($I,$ug,!$K);return$K;}function
delete($Q,$zf,$_=0){$I="FROM ".table($Q);return
queries("DELETE".($_?limit1($Q,$I,$zf):" $I$zf"));}function
update($Q,$P,$zf,$_=0,$cg="\n"){$Dh=array();foreach($P
as$z=>$X)$Dh[]="$z = $X";$I=table($Q)." SET$cg".implode(",$cg",$Dh);return
queries("UPDATE".($_?limit1($Q,$I,$zf,$cg):" $I$zf"));}function
insert($Q,$P){return
queries("INSERT INTO ".table($Q).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
insertUpdate($Q,$M,$qf){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($I,$Ug){}function
convertSearch($v,$X,$n){return$v;}function
convertOperator($De){return$De;}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($Tf){return
q($Tf);}function
warnings(){return'';}function
tableHelp($E){}function
hasCStyleEscapes(){return
false;}}class
Adminer{var$operators;function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'>Adminer</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($i=false){return
password_file($i);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($O){return
h($O);}function
database(){return
DB;}function
databases($Fc=true){return
get_databases($Fc);}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(){return
csp();}function
head(){return
true;}function
css(){$K=array();$Bc="adminer.css";if(file_exists($Bc))$K[]="$Bc?v=".crc32(file_get_contents($Bc));return$K;}function
loginForm(){global$Qb;echo"<table class='layout'>\n",$this->loginFormField('driver','<tr><th>'.lang(23).'<td>',html_select("auth[driver]",$Qb,DRIVER,"loginDriver(this);")."\n"),$this->loginFormField('server','<tr><th>'.lang(24).'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'."\n"),$this->loginFormField('username','<tr><th>'.lang(25).'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("qs('#username').form['auth[driver]'].onchange();")),$this->loginFormField('password','<tr><th>'.lang(26).'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'."\n"),$this->loginFormField('db','<tr><th>'.lang(27).'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'."\n"),"</table>\n","<p><input type='submit' value='".lang(28)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(29))."\n";}function
loginFormField($E,$bd,$Y){return$bd.$Y;}function
login($Pd,$df){if($df=="")return
lang(30,target_blank());return
true;}function
tableName($Fg){return
h($Fg["Name"]);}function
fieldName($n,$Ie=0){return'<span title="'.h($n["full_type"]).'">'.h($n["field"]).'</span>';}function
selectLinks($Fg,$P=""){global$y,$l;echo'<p class="links">';$Od=array("select"=>lang(31));if(support("table")||support("indexes"))$Od["table"]=lang(32);if(support("table")){if(is_view($Fg))$Od["view"]=lang(33);else$Od["create"]=lang(34);}if($P!==null)$Od["edit"]=lang(35);$E=$Fg["Name"];foreach($Od
as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($E).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>";echo
doc_link(array($y=>$l->tableHelp($E)),"?"),"\n";}function
foreignKeys($Q){return
foreign_keys($Q);}function
backwardKeys($Q,$Eg){return
array();}function
backwardKeysPrint($Ba,$L){}function
selectQuery($I,$ug,$xc=false){global$y,$l;$K="</p>\n";if(!$xc&&($Lh=$l->warnings())){$u="warnings";$K=", <a href='#$u'>".lang(36)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."$K<div id='$u' class='hidden'>\n$Lh</div>\n";}return"<p><code class='jush-$y'>".h(str_replace("\n"," ",$I))."</code> <span class='time'>(".format_time($ug).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($I)."'>".lang(11)."</a>":"").$K;}function
sqlCommandQuery($I){return
shorten_utf8(trim($I),1000);}function
rowDescription($Q){return"";}function
rowDescriptions($M,$Ic){return$M;}function
selectLink($X,$n){}function
selectVal($X,$A,$n,$Qe){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$n["type"])&&!preg_match("~var~",$n["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$n["type"])&&!is_utf8($X))$K="<i>".lang(37,strlen($Qe))."</i>";if(preg_match('~json~',$n["type"]))$K="<code class='jush-js'>$K</code>";return($A?"<a href='".h($A)."'".(is_url($A)?target_blank():"").">$K</a>":$K);}function
editVal($X,$n){return$X;}function
tableStructurePrint($o){global$zg;echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".lang(38)."<td>".lang(39).(support("comment")?"<td>".lang(40):"")."</thead>\n";foreach($o
as$n){echo"<tr><th>".h($n["field"]);$U=h($n["full_type"]);echo"<td><span title='".h($n["collation"])."'>".(in_array($U,(array)$zg[lang(9)])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U)."</span>",($n["null"]?" <i>NULL</i>":""),($n["auto_increment"]?" <i>".lang(41)."</i>":""),(isset($n["default"])?" <span title='".lang(42)."'>[<b>".h($n["default"])."</b>]</span>":""),(support("comment")?"<td>".h($n["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint($x){echo"<table>\n";foreach($x
as$E=>$w){ksort($w["columns"]);$rf=array();foreach($w["columns"]as$z=>$X)$rf[]="<i>".h($X)."</i>".($w["lengths"][$z]?"(".$w["lengths"][$z].")":"").($w["descs"][$z]?" DESC":"");echo"<tr title='".h($E)."'><th>$w[type]<td>".implode(", ",$rf)."\n";}echo"</table>\n";}function
selectColumnsPrint($N,$e){global$Oc,$Uc;print_fieldset("select",lang(43),$N);$t=0;$N[""]=array();foreach($N
as$z=>$X){$X=$_GET["columns"][$z];$d=select_input(" name='columns[$t][col]'",$e,$X["col"],($z!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($Oc||$Uc?"<select name='columns[$t][fun]'>".optionlist(array(-1=>"")+array_filter(array(lang(44)=>$Oc,lang(45)=>$Uc)),$X["fun"])."</select>".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($z!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
selectSearchPrint($Z,$e,$x){print_fieldset("search",lang(46),$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"){echo"<div>(<i>".implode("</i>, <i>",array_map('h',$w["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h($_GET["fulltext"][$t])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"</div>\n";}}$Na="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(47).")"),html_select("where[$t][op]",$this->operators,$X["op"],$Na),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Na }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}}echo"</div></fieldset>\n";}function
selectOrderPrint($Ie,$e,$x){print_fieldset("sort",lang(48),$Ie);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),lang(49))."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(49))."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($_){echo"<fieldset><legend>".lang(50)."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($_)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($Sg){if($Sg!==null){echo"<fieldset><legend>".lang(51)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Sg)."'>","</div></fieldset>\n";}}function
selectActionPrint($x){echo"<fieldset><legend>".lang(52)."</legend><div>","<input type='submit' value='".lang(43)."'>"," <span id='noindex' title='".lang(53)."'></span>","<script".nonce().">\n","var indexColumns = ";$e=array();foreach($x
as$w){$wb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$wb)$e[$wb]=1;}$e[""]=1;foreach($e
as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint($cc,$e){}function
selectColumnsProcess($e,$x){global$Oc,$Uc;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$Oc)||in_array($X["fun"],$Uc)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$Uc))$s[]=$N[$z];}}return
array($N,$s);}function
selectSearchProcess($o,$x){global$g,$l;$K=array();foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$of="";$ib=" $X[op]";if(preg_match('~IN$~',$X["op"])){$jd=process_length($X["val"]);$ib.=" ".($jd!=""?$jd:"(NULL)");}elseif($X["op"]=="SQL")$ib=" $X[val]";elseif($X["op"]=="LIKE %%")$ib=" LIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$ib=" ILIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$of="$X[op](".q($X["val"]).", ";$ib=")";}elseif(!preg_match('~NULL$~',$X["op"]))$ib.=" ".$this->processInput($o[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=$of.$l->convertSearch(idf_escape($X["col"]),$X,$o[$X["col"]]).$ib;else{$cb=array();foreach($o
as$E=>$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"])))$cb[]=$of.$l->convertSearch(idf_escape($E),$X,$n).$ib;}$K[]=($cb?"(".implode(" OR ",$cb).")":"1 = 0");}}}return$K;}function
selectOrderProcess($o,$x){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
selectEmailProcess($Z,$Ic){return
false;}function
selectQueryBuild($N,$Z,$s,$Ie,$_,$G){return"";}function
messageQuery($I,$Tg,$xc=false){global$y,$l;restart_session();$cd=&get_session("queries");if(!$cd[$_GET["db"]])$cd[$_GET["db"]]=array();if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n…";$cd[$_GET["db"]][]=array($I,time(),$Tg);$rg="sql-".count($cd[$_GET["db"]]);$K="<a href='#$rg' class='toggle'>".lang(54)."</a>\n";if(!$xc&&($Lh=$l->warnings())){$u="warnings-".count($cd[$_GET["db"]]);$K="<a href='#$u' class='toggle'>".lang(36)."</a>, $K<div id='$u' class='hidden'>\n$Lh</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $K<div id='$rg' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000)."</code></pre>".($Tg?" <span class='time'>($Tg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($cd[$_GET["db"]])-1)).'">'.lang(11).'</a>':'').'</div>';}function
editRowPrint($Q,$o,$L,$vh){}function
editFunctions($n){global$Xb;$K=($n["null"]?"NULL/":"");$vh=isset($_GET["select"])||where($_GET);foreach($Xb
as$z=>$Oc){if(!$z||(!isset($_GET["call"])&&$vh)){foreach($Oc
as$ff=>$X){if(!$ff||preg_match("~$ff~",$n["type"]))$K.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file|bool~',$n["type"]))$K.="/SQL";}if($n["auto_increment"]&&!$vh)$K=lang(41);return
explode("/",$K);}function
editInput($Q,$n,$xa,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$xa value='-1' checked><i>".lang(8)."</i></label> ":"").($n["null"]?"<label><input type='radio'$xa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$xa,$n,$Y,$Y===0?0:null);return"";}function
editHint($Q,$n,$Y){return"";}function
processInput($n,$Y,$r=""){if($r=="SQL")return$Y;$E=$n["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$K="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$K=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$K=idf_escape($E)." $r $K";elseif(preg_match('~^[+-] interval$~',$r))$K=idf_escape($E)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$K="$r(".idf_escape($E).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$K="$r($K)";return
unconvert_field($n,$K);}function
dumpOutput(){$K=array('text'=>lang(55),'file'=>lang(56));if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function
dumpFormat(){return
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($k){}function
dumpTable($Q,$_g,$wd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($_g)dump_csv(array_keys(fields($Q)));}else{if($wd==2){$o=array();foreach(fields($Q)as$E=>$n)$o[]=idf_escape($E)." $n[full_type]";$i="CREATE TABLE ".table($Q)." (".implode(", ",$o).")";}else$i=create_sql($Q,$_POST["auto_increment"],$_g);set_utf8mb4($i);if($_g&&$i){if($_g=="DROP+CREATE"||$wd==1)echo"DROP ".($wd==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($wd==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($Q,$_g,$I){global$g,$y;if($_g){$Vd=($y=="sqlite"?0:1048576);$o=array();if($_POST["format"]=="sql"){if($_g=="TRUNCATE+INSERT")echo
truncate_sql($Q).";\n";$o=fields($Q);}$J=$g->query($I,1);if($J){$pd="";$Ja="";$zd=array();$Pc=array();$Bg="";$_c=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$_c()){if(!$zd){$Dh=array();foreach($L
as$X){$n=$J->fetch_field();if($o[$n->name]['generated']){$Pc[$n->name]=true;continue;}$zd[]=$n->name;$z=idf_escape($n->name);$Dh[]="$z = VALUES($z)";}$Bg=($_g=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Dh):"").";\n";}if($_POST["format"]!="sql"){if($_g=="table"){dump_csv($zd);$_g="INSERT";}dump_csv($L);}else{if(!$pd)$pd="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$zd)).") VALUES";foreach($L
as$z=>$X){if($Pc[$z]){unset($L[$z]);continue;}$n=$o[$z];$L[$z]=($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");}$Tf=($Vd?"\n":" ")."(".implode(",\t",$L).")";if(!$Ja)$Ja=$pd.$Tf;elseif(strlen($Ja)+4+strlen($Tf)+strlen($Bg)<$Vd)$Ja.=",$Tf";else{echo$Ja.$Bg;$Ja=$pd.$Tf;}}}if($Ja)echo$Ja.$Bg;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function
dumpFilename($gd){return
friendly_url($gd!=""?$gd:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($gd,$ie=false){$Se=$_POST["output"];$uc=(preg_match('~sql~',$_POST["format"])?"sql":($ie?"tar":"csv"));header("Content-Type: ".($Se=="gz"?"application/x-gzip":($uc=="tar"?"application/x-tar":($uc=="sql"||$Se!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Se=="gz")ob_start('ob_gzencode',1e6);return$uc;}function
importServerPath(){return"adminer.sql";}function
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.lang(57)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(58):lang(59))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(60)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(61)."</a>\n":"");return
true;}function
navigation($he){global$fa,$y,$Qb,$g;echo'<h1>
',$this->name(),'<span class="version">
',$fa,' <a href="https://www.adminer.org/#download"',target_blank(),' id="version">',(version_compare($fa,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
</span>
</h1>
';switch_lang();if($he=="auth"){$Se="";foreach((array)$_SESSION["pwds"]as$Fh=>$eg){foreach($eg
as$O=>$Bh){foreach($Bh
as$V=>$df){if($df!==null){$Bb=$_SESSION["db"][$Fh][$O][$V];foreach(($Bb?array_keys($Bb):array(""))as$k)$Se.="<li><a href='".h(auth_url($Fh,$O,$V,$k))."'>($Qb[$Fh]) ".h($V.($O!=""?"@".$this->serverName($O):"").($k!=""?" - $k":""))."</a>\n";}}}}if($Se)echo"<ul id='logins'>\n$Se</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$he&&DB!=""){$g->select_db(DB);$S=table_status('',true);}echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.17.1");if(support("sql")){echo'<script',nonce(),'>
';if($S){$Od=array();foreach($S
as$Q=>$U)$Od[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}$dg=$g->server_info;echo'bodyLoad(\'',(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$dg):""),'\'',(preg_match('~MariaDB~',$dg)?", true":""),');
</script>
';}$this->databasesPrint($he);$la=array();if(DB==""||!$he){if(support("sql")){$la[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(54)."</a>";$la[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(62)."</a>";}if(support("dump"))$la[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(63)."</a>";}$kd=$_GET["ns"]!==""&&!$he&&DB!="";if($kd)$la[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(64)."</a>";echo($la?"<p class='links'>\n".implode("\n",$la)."\n":"");if($kd){if($S)$this->tablesPrint($S);else
echo"<p class='message'>".lang(10)."</p>\n";}}}function
databasesPrint($he){global$c,$g;$j=$this->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo'<form action="">
<p id="dbs">
';hidden_fields_get();$_b=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title='".lang(27)."'>".lang(65)."</span>: ".($j?"<select name='db'>".optionlist(array(""=>"")+$j,DB)."</select>$_b":"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n"),"<input type='submit' value='".lang(21)."'".($j?" class='hidden'":"").">\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type='hidden' name='$X' value=''>";break;}}echo"</p></form>\n";}function
tablesPrint($S){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S
as$Q=>$vg){$E=$this->tableName($vg);if($E!=""){echo'<li><a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select")." title='".lang(31)."'>".lang(66)."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($vg)?"view":"structure"))." title='".lang(32)."'>$E</a>":"<span>$E</span>")."\n";}}echo"</ul>\n";}}$c=(function_exists('adminer_object')?adminer_object():new
Adminer);$Qb=array("server"=>"MySQL")+$Qb;if(!defined("DRIVER")){define("DRIVER","server");if(extension_loaded("mysqli")){class
Min_DB
extends
MySQLi{var$extension="MySQLi";function
__construct(){parent::init();}function
connect($O="",$V="",$df="",$zb=null,$jf=null,$mg=null){global$c;mysqli_report(MYSQLI_REPORT_OFF);list($ed,$jf)=explode(":",$O,2);$tg=$c->connectSsl();if($tg)$this->ssl_set($tg['key'],$tg['cert'],$tg['ca'],'','');$K=@$this->real_connect(($O!=""?$ed:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$df!=""?$df:ini_get("mysqli.default_pw")),$zb,(is_numeric($jf)?$jf:ini_get("mysqli.default_port")),(!is_numeric($jf)?$jf:$mg),($tg?(empty($tg['cert'])?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$K;}function
set_charset($Oa){if(parent::set_charset($Oa))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Oa");}function
result($I,$n=0){$J=$this->query($I);if(!$J)return
false;$L=$J->fetch_array();return$L[$n];}function
quote($yg){return"'".$this->escape_string($yg)."'";}}}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($O,$V,$df){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(67,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
false;}$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$df"!=""?$df: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($Oa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Oa,$this->_link))return
true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Oa");}function
quote($yg){return"'".mysql_real_escape_string($yg,$this->_link)."'";}function
select_db($zb){return
mysql_select_db($zb,$this->_link);}function
query($I,$oh=false){$J=@($oh?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
true;}return
new
Min_Result($J);}function
multi_query($I){return$this->_result=$this->query($I);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($I,$n=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
false;return
mysql_result($J->_result,0,$n);}}class
Min_Result{var$num_rows,$_result,$_offset=0;function
__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function
fetch_assoc(){return
mysql_fetch_assoc($this->_result);}function
fetch_row(){return
mysql_fetch_row($this->_result);}function
fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
Min_DB
extends
Min_PDO{var$extension="PDO_MySQL";function
connect($O,$V,$df){global$c;$Ge=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$tg=$c->connectSsl();if($tg){if(!empty($tg['key']))$Ge[PDO::MYSQL_ATTR_SSL_KEY]=$tg['key'];if(!empty($tg['cert']))$Ge[PDO::MYSQL_ATTR_SSL_CERT]=$tg['cert'];if(!empty($tg['ca']))$Ge[PDO::MYSQL_ATTR_SSL_CA]=$tg['ca'];if(!empty($tg['verify']))$Ge[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$tg['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$O)),$V,$df,$Ge);return
true;}function
set_charset($Oa){$this->query("SET NAMES $Oa");}function
select_db($zb){return$this->query("USE ".idf_escape($zb));}function
query($I,$oh=false){$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$oh);return
parent::query($I,$oh);}}}class
Min_Driver
extends
Min_SQL{function
insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
insertUpdate($Q,$M,$qf){$e=array_keys(reset($M));$of="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$Dh=array();foreach($e
as$z)$Dh[$z]="$z = VALUES($z)";$Bg="\nON DUPLICATE KEY UPDATE ".implode(", ",$Dh);$Dh=array();$Ld=0;foreach($M
as$P){$Y="(".implode(", ",$P).")";if($Dh&&(strlen($of)+$Ld+strlen($Y)+strlen($Bg)>1e6)){if(!queries($of.implode(",\n",$Dh).$Bg))return
false;$Dh=array();$Ld=0;}$Dh[]=$Y;$Ld+=strlen($Y)+2;}return
queries($of.implode(",\n",$Dh).$Bg);}function
slowQuery($I,$Ug){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$Ug FOR $I";elseif(preg_match('~^(SELECT\b)(.+)~is',$I,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($Ug*1000).") */ $C[2]";}}function
convertSearch($v,$X,$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->_conn).")":$v);}function
warnings(){$J=$this->_conn->query("SHOW WARNINGS");if($J&&$J->num_rows){ob_start();select($J);return
ob_get_clean();}}function
tableHelp($E){$Rd=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
strtolower("information-schema-".($Rd?"$E-table/":str_replace("_","-",$E)."-table.html"));if(DB=="mysql")return($Rd?"mysql$E-table/":"system-schema.html");}function
hasCStyleEscapes(){static$Ka;if($Ka===null){$sg=$this->_conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Ka=(strpos($sg,'NO_BACKSLASH_ESCAPES')===false);}return$Ka;}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
connect(){global$c,$nh,$zg,$Xb;$g=new
Min_DB;$sb=$c->credentials();if($g->connect($sb[0],$sb[1],$sb[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)){$zg[lang(68)][]="json";$nh["json"]=4294967295;}if(min_version('',10.7,$g)){$zg[lang(68)][]="uuid";$nh["uuid"]=128;$Xb[0]['uuid']='uuid';}if(min_version(9,'',$g)){$zg[lang(69)][]="vector";$nh["vector"]=16383;$Xb[0]['vector']='string_to_vector';}return$g;}$K=$g->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Tf=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Tf;return$K;}function
get_databases($Fc){$K=get_session("dbs");if($K===null){$I=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$K=($Fc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function
limit($I,$Z,$_,$ue=0,$cg=" "){return" $I$Z".($_!==null?$cg."LIMIT $_".($ue?" OFFSET $ue":""):"");}function
limit1($Q,$I,$Z,$cg="\n"){return
limit($I,$Z,1,0,$cg);}function
db_collation($k,$bb){global$g;$K=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$C))$K=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$C))$K=$bb[$C[1]][-1];return$K;}function
engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}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){$K=array();foreach($j
as$k)$K[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$K;}function
table_status($E="",$yc=false){$K=array();foreach(get_rows($yc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".q(addcslashes($E,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($E!=""){$L["Name"]=$E;return$L;}$K[$L["Name"]]=$L;}return$K;}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){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$L){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$L["Type"],$C);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$C[1])?(preg_match('~text~',$C[1])?stripslashes(preg_replace("~^'(.*)'\$~",'\1',$L["Default"])):$L["Default"]):null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$C)?$C[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),"generated"=>preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$L["Extra"]),);}return$K;}function
indexes($Q,$h=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$h)as$L){$E=$L["Key_name"];$K[$E]["type"]=($E=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?($L["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$K[$E]["columns"][]=$L["Column_name"];$K[$E]["lengths"][]=($L["Index_type"]=="SPATIAL"?null:$L["Sub_part"]);$K[$E]["descs"][]=null;}return$K;}function
foreign_keys($Q){global$g,$Ae;static$ff='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$K=array();$qb=$g->result("SHOW CREATE TABLE ".table($Q),1);if($qb){preg_match_all("~CONSTRAINT ($ff) FOREIGN KEY ?\\(((?:$ff,? ?)+)\\) REFERENCES ($ff)(?:\\.($ff))? \\(((?:$ff,? ?)+)\\)(?: ON DELETE ($Ae))?(?: ON UPDATE ($Ae))?~",$qb,$Td,PREG_SET_ORDER);foreach($Td
as$C){preg_match_all("~$ff~",$C[2],$ng);preg_match_all("~$ff~",$C[5],$Ng);$K[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$ng[0]),"target"=>array_map('idf_unescape',$Ng[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$K;}function
view($E){global$g;return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("SHOW CREATE VIEW ".table($E),1)));}function
collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
as$z=>$X)asort($K[$z]);return$K;}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,$ab){return
queries("CREATE DATABASE ".idf_escape($k).($ab?" COLLATE ".q($ab):""));}function
drop_databases($j){$K=apply_queries("DROP DATABASE",$j,'idf_escape');restart_session();set_session("dbs",null);return$K;}function
rename_database($E,$ab){$K=false;if(create_database($E,$ab)){$S=array();$Ih=array();foreach(tables_list()as$Q=>$U){if($U=='VIEW')$Ih[]=$Q;else$S[]=$Q;}$K=(!$S&&!$Ih)||move_tables($S,$Ih,$E);drop_databases($K?array(DB):array());}return$K;}function
auto_increment(){$_a=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$_a="";break;}if($w["type"]=="PRIMARY")$_a=" UNIQUE";}}return" AUTO_INCREMENT$_a";}function
alter_table($Q,$E,$o,$Hc,$fb,$fc,$ab,$za,$af){$ta=array();foreach($o
as$n)$ta[]=($n[1]?($Q!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($Q!=""?$n[2]:""):"DROP ".idf_escape($n[0]));$ta=array_merge($ta,$Hc);$vg=($fb!==null?" COMMENT=".q($fb):"").($fc?" ENGINE=".q($fc):"").($ab?" COLLATE ".q($ab):"").($za!=""?" AUTO_INCREMENT=$za":"");if($Q=="")return
queries("CREATE TABLE ".table($E)." (\n".implode(",\n",$ta)."\n)$vg$af");if($Q!=$E)$ta[]="RENAME TO ".table($E);if($vg)$ta[]=ltrim($vg);return($ta||$af?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$ta).$af):true);}function
alter_indexes($Q,$ta){foreach($ta
as$z=>$X)$ta[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
queries("ALTER TABLE ".table($Q).implode(",",$ta));}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($Ih){return
queries("DROP VIEW ".implode(", ",array_map('table',$Ih)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
move_tables($S,$Ih,$Ng){global$g;$Jf=array();foreach($S
as$Q)$Jf[]=table($Q)." TO ".idf_escape($Ng).".".table($Q);if(!$Jf||queries("RENAME TABLE ".implode(", ",$Jf))){$Gb=array();foreach($Ih
as$Q)$Gb[table($Q)]=view($Q);$g->select_db($Ng);$k=idf_escape(DB);foreach($Gb
as$E=>$Hh){if(!queries("CREATE VIEW $E AS ".str_replace(" $k."," ",$Hh["select"]))||!queries("DROP VIEW $k.$E"))return
false;}return
true;}return
false;}function
copy_tables($S,$Ih,$Ng){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
as$Q){$E=($Ng==DB?table("copy_$Q"):idf_escape($Ng).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $E"))||!queries("CREATE TABLE $E LIKE ".table($Q))||!queries("INSERT INTO $E SELECT * FROM ".table($Q)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L){$ih=$L["Trigger"];if(!queries("CREATE TRIGGER ".($Ng==DB?idf_escape("copy_$ih"):idf_escape($Ng).".".idf_escape($ih))." $L[Timing] $L[Event] ON $E FOR EACH ROW\n$L[Statement];"))return
false;}}foreach($Ih
as$Q){$E=($Ng==DB?table("copy_$Q"):idf_escape($Ng).".".table($Q));$Hh=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $E"))||!queries("CREATE VIEW $E AS $Hh[select]"))return
false;}return
true;}function
trigger($E){if($E=="")return
array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($E));return
reset($M);}function
triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($E,$U){global$g,$hc,$nd,$nh;$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$og="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$mh="((".implode("|",array_merge(array_keys($nh),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$hc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ff="$og*(".($U=="FUNCTION"?"":$nd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$mh";$i=$g->result("SHOW CREATE $U ".idf_escape($E),2);preg_match("~\\(((?:$ff\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$mh\\s+":"")."(.*)~is",$i,$C);$o=array();preg_match_all("~$ff\\s*,?~is",$C[1],$Td,PREG_SET_ORDER);foreach($Td
as$Ve)$o[]=array("field"=>str_replace("``","`",$Ve[2]).$Ve[3],"type"=>strtolower($Ve[5]),"length"=>preg_replace_callback("~$hc~s",'normalize_enum',$Ve[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Ve[8] $Ve[7]"))),"null"=>1,"full_type"=>$Ve[4],"inout"=>strtoupper($Ve[1]),"collation"=>strtolower($Ve[9]),);return
array("fields"=>$o,"comment"=>$g->result("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB)." AND ROUTINE_NAME = ".q($E)),)+($U!="FUNCTION"?array("definition"=>$C[11]):array("returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",));}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
routine_languages(){return
array();}function
routine_id($E,$L){return
idf_escape($E);}function
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
explain($g,$I){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$I);}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($Vf,$h=null){return
true;}function
create_sql($Q,$za,$_g){global$g;$K=$g->result("SHOW CREATE TABLE ".table($Q),1);if(!$za)$K=preg_replace('~ AUTO_INCREMENT=\d+~','',$K);return$K;}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
use_sql($zb){return"USE ".idf_escape($zb);}function
trigger_sql($Q){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\nCREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}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,$K){if(preg_match("~binary~",$n["type"]))$K="UNHEX($K)";if($n["type"]=="bit")$K="CONVERT(b$K, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$of=(min_version(8)?"ST_":"");$K=$of."GeomFromText($K, $of"."SRID($n[field]))";}return$K;}function
support($zc){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"))).(min_version('8.0.16','10.2.1')?"":"|check")."~",$zc);}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(){$nh=array();$zg=array();foreach(array(lang(69)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(70)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(68)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(71)=>array("enum"=>65535,"set"=>64),lang(72)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(73)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$nh+=$X;$zg[$z]=array_keys($X);}return
array('possible_drivers'=>array("MySQLi","MySQL","PDO_MySQL"),'jush'=>"sql",'types'=>$nh,'structured_types'=>$zg,'unsigned'=>array("unsigned","zerofill","unsigned zerofill"),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),'functions'=>array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"),'grouping'=>array("avg","count","count distinct","group_concat","max","min","sum"),'edit_functions'=>array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",)),);}}$jb=driver_config();$nf=$jb['possible_drivers'];$y=$jb['jush'];$nh=$jb['types'];$zg=$jb['structured_types'];$uh=$jb['unsigned'];$Ee=$jb['operators'];$Oc=$jb['functions'];$Uc=$jb['grouping'];$Xb=$jb['edit_functions'];if($c->operators===null)$c->operators=$Ee;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"])."&":""):''));function
page_header($Wg,$m="",$Ia=array(),$Xg=""){global$a,$fa,$c,$Qb,$y;page_headers();if(is_ajax()&&$m){page_messages($m);exit;}$Yg=$Wg.($Xg!=""?": $Xg":"");$Zg=strip_tags($Yg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$c->name());echo'<!DOCTYPE html>
<html lang="',$a,'" dir="',lang(74),'">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width">
<title>',$Zg,'</title>
<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=4.17.1"),'">
',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.17.1");if($c->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.17.1"),'">
<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.17.1"),'">
';foreach($c->css()as$ub){echo'<link rel="stylesheet" type="text/css" href="',h($ub),'">
';}}echo'
<body class="',lang(74),' nojs">
';$Bc=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($Bc)&&filemtime($Bc)+86400>time()){$Gh=unserialize(file_get_contents($Bc));$xf="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($Gh["version"],base64_decode($Gh["signature"]),$xf)==1)$_COOKIE["adminer_version"]=$Gh["version"];}echo'<script',nonce(),'>
mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$fa', '".js_escape(ME)."', '".get_token()."')");?>});
document.body.className = document.body.className.replace(/ nojs/, ' js');
var offlineMessage = '<?php echo
js_escape(lang(75)),'\';
var thousandsSeparator = \'',js_escape(lang(5)),'\';
</script>
<div id="help" class="jush-',$y,' jsonly hidden"></div>
',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
<div id="content">
';if($Ia!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Qb[DRIVER].'</a> » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=$c->serverName(SERVER);$O=($O!=""?$O:lang(24));if($Ia===false)echo"$O\n";else{echo"<a href='".h($A)."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ia)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ia)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ia
as$z=>$X){$Ib=(is_array($X)?$X[1]:h($X));if($Ib!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$Ib</a> » ";}}echo"$Wg\n";}}echo"<h2>$Yg</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$c;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($c->csp()as$tb){$ad=array();foreach($tb
as$z=>$X)$ad[]="$z $X";header("Content-Security-Policy: ".implode("; ",$ad));}$c->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$qe;if(!$qe)$qe=base64_encode(rand_string());return$qe;}function
page_messages($m){$wh=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$fe=$_SESSION["messages"][$wh];if($fe){echo"<div class='message'>".implode("</div>\n<div class='message'>",$fe)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$wh]);}if($m)echo"<div class='error'>$m</div>\n";}function
page_footer($he=""){global$c,$T;echo'</div>
<div id="menu">
';$c->navigation($he);echo'</div>
';if($he!="auth"){echo'<form action="" method="post">
<p class="logout">
',h($_GET["username"])."\n",'<input type="submit" name="logout" value="',lang(76),'" id="logout">
<input type="hidden" name="token" value="',$T,'">
</p>
</form>
';}echo
script("setupSubmitHighlight(document);");}function
int32($ke){while($ke>=2147483648)$ke-=4294967296;while($ke<=-2147483649)$ke+=4294967296;return(int)$ke;}function
long2str($W,$Kh){$Tf='';foreach($W
as$X)$Tf.=pack('V',$X);if($Kh)return
substr($Tf,0,end($W));return$Tf;}function
str2long($Tf,$Kh){$W=array_values(unpack('V*',str_pad($Tf,4*ceil(strlen($Tf)/4),"\0")));if($Kh)$W[]=strlen($Tf);return$W;}function
xxtea_mx($Rh,$Qh,$Cg,$yd){return
int32((($Rh>>5&0x7FFFFFF)^$Qh<<2)+(($Qh>>3&0x1FFFFFFF)^$Rh<<4))^int32(($Cg^$Qh)+($yd^$Rh));}function
encrypt_string($xg,$z){if($xg=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($xg,true);$ke=count($W)-1;$Rh=$W[$ke];$Qh=$W[0];$H=floor(6+52/($ke+1));$Cg=0;while($H-->0){$Cg=int32($Cg+0x9E3779B9);$Wb=$Cg>>2&3;for($Te=0;$Te<$ke;$Te++){$Qh=$W[$Te+1];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Rh=int32($W[$Te]+$je);$W[$Te]=$Rh;}$Qh=$W[0];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Rh=int32($W[$ke]+$je);$W[$ke]=$Rh;}return
long2str($W,false);}function
decrypt_string($xg,$z){if($xg=="")return"";if(!$z)return
false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($xg,false);$ke=count($W)-1;$Rh=$W[$ke];$Qh=$W[0];$H=floor(6+52/($ke+1));$Cg=int32($H*0x9E3779B9);while($Cg){$Wb=$Cg>>2&3;for($Te=$ke;$Te>0;$Te--){$Rh=$W[$Te-1];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Qh=int32($W[$Te]-$je);$W[$Te]=$Qh;}$Rh=$W[$ke];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Qh=int32($W[0]-$je);$W[0]=$Qh;$Cg=int32($Cg-0x9E3779B9);}return
long2str($W,true);}$g='';$Zc=$_SESSION["token"];if(!$Zc)$_SESSION["token"]=rand(1,1e6);$T=get_token();$hf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$hf[$z]=$X;}}function
add_invalid_login(){global$c;$q=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$q)return;$sd=unserialize(stream_get_contents($q));$Tg=time();if($sd){foreach($sd
as$td=>$X){if($X[0]<$Tg)unset($sd[$td]);}}$rd=&$sd[$c->bruteForceKey()];if(!$rd)$rd=array($Tg+30*60,0);$rd[1]++;file_write_unlock($q,serialize($sd));}function
check_invalid_login(){global$c;$sd=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$rd=($sd?$sd[$c->bruteForceKey()]:array());$pe=($rd[1]>29?$rd[0]-time():0);if($pe>0)auth_error(lang(77,ceil($pe/60)));}$ya=$_POST["auth"];if($ya){session_regenerate_id();$Fh=$ya["driver"];$O=$ya["server"];$V=$ya["username"];$df=(string)$ya["password"];$k=$ya["db"];set_password($Fh,$O,$V,$df);$_SESSION["db"][$Fh][$O][$V][$k]=true;if($ya["permanent"]){$z=base64_encode($Fh)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($k);$sf=$c->permanentLogin(true);$hf[$z]="$z:".base64_encode($sf?encrypt_string($df,$sf):"");cookie("adminer_permanent",implode(" ",$hf));}if(count($_POST)==1||DRIVER!=$Fh||SERVER!=$O||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Fh,$O,$V,$k));}elseif($_POST["logout"]&&(!$Zc||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(78).' '.lang(79));}elseif($hf&&!$_SESSION["pwds"]){session_regenerate_id();$sf=$c->permanentLogin();foreach($hf
as$z=>$X){list(,$Ua)=explode(":",$X);list($Fh,$O,$V,$k)=array_map('base64_decode',explode("-",$z));set_password($Fh,$O,$V,decrypt_string(base64_decode($Ua),$sf));$_SESSION["db"][$Fh][$O][$V][$k]=true;}}function
unset_permanent(){global$hf;foreach($hf
as$z=>$X){list($Fh,$O,$V,$k)=array_map('base64_decode',explode("-",$z));if($Fh==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$k==DB)unset($hf[$z]);}cookie("adminer_permanent",implode(" ",$hf));}function
auth_error($m){global$c,$Zc;$fg=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$fg]||$_GET[$fg])&&!$Zc)$m=lang(80);else{restart_session();add_invalid_login();$df=get_password();if($df!==null){if($df===false)$m.=($m?'<br>':'').lang(81,target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$fg]&&$_GET[$fg]&&ini_bool("session.use_only_cookies"))$m=lang(82);$We=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$We["lifetime"]);page_header(lang(28),$m,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".lang(83)."\n";echo"</div>\n";$c->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(84),lang(85,implode(", ",$nf)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($ed,$jf)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$jf,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(86));check_invalid_login();$g=connect();$l=new
Min_Driver($g);}$Pd=null;if(!is_object($g)||($Pd=$c->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Pd)?$Pd:lang(87)));auth_error($m.(preg_match('~^ | $~',get_password())?'<br>'.lang(88):''));}if($_POST["logout"]&&$Zc&&!verify_token()){page_header(lang(76),lang(89));page_footer("db");exit;}if($ya&&$_POST["token"])$_POST["token"]=$T;$m='';if($_POST){if(!verify_token()){$md="max_input_vars";$Zd=ini_get($md);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Zd||$X<$Zd)){$md=$z;$Zd=$X;}}}$m=(!$_POST["token"]&&$Zd?lang(90,"'$md'"):lang(89).' '.lang(91));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(92,"'post_max_size'");if(isset($_GET["sql"]))$m.=' '.lang(93);}function
select($J,$h=null,$Le=array(),$_=0){global$y;$Od=array();$x=array();$e=array();$Ga=array();$nh=array();$K=array();for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($xd=0;$xd<count($L);$xd++){$n=$J->fetch_field();$E=$n->name;$Ke=$n->orgtable;$Je=$n->orgname;$K[$n->table]=$Ke;if($Le&&$y=="sql")$Od[$xd]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($Ke!=""){if(!isset($x[$Ke])){$x[$Ke]=array();foreach(indexes($Ke,$h)as$w){if($w["type"]=="PRIMARY"){$x[$Ke]=array_flip($w["columns"]);break;}}$e[$Ke]=$x[$Ke];}if(isset($e[$Ke][$Je])){unset($e[$Ke][$Je]);$x[$Ke][$Je]=$xd;$Od[$xd]=$Ke;}}if($n->charsetnr==63)$Ga[$xd]=true;$nh[$xd]=$n->type;echo"<th".($Ke!=""||$n->name!=$Je?" title='".h(($Ke!=""?"$Ke.":"").$Je)."'":"").">".h($E).($Le?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($L
as$z=>$X){$A="";if(isset($Od[$z])&&!$e[$Od[$z]]){if($Le&&$y=="sql"){$Q=$L[array_search("table=",$Od)];$A=ME.$Od[$z].urlencode($Le[$Q]!=""?$Le[$Q]:$Q);}else{$A=ME."edit=".urlencode($Od[$z]);foreach($x[$Od[$z]]as$Ya=>$xd)$A.="&where".urlencode("[".bracket_escape($Ya)."]")."=".urlencode($L[$xd]);}}elseif(is_url($X))$A=$X;if($X===null)$X="<i>NULL</i>";elseif($Ga[$z]&&!is_utf8($X))$X="<i>".lang(37,strlen($X))."</i>";else{$X=h($X);if($nh[$z]==254)$X="<code>$X</code>";}if($A)$X="<a href='".h($A)."'".(is_url($A)?target_blank():'').">$X</a>";echo"<td>$X";}}echo($t?"</table>\n</div>":"<p class='message'>".lang(13))."\n";return$K;}function
referencable_primary($ag){$K=array();foreach(table_status('',true)as$Gg=>$Q){if($Gg!=$ag&&fk_support($Q)){foreach(fields($Gg)as$n){if($n["primary"]){if($K[$Gg]){unset($K[$Gg]);break;}$K[$Gg]=$n;}}}}return$K;}function
adminer_settings(){parse_str($_COOKIE["adminer_settings"],$hg);return$hg;}function
adminer_setting($z){$hg=adminer_settings();return$hg[$z];}function
set_adminer_settings($hg){return
cookie("adminer_settings",http_build_query($hg+adminer_settings()));}function
textarea($E,$Y,$M=10,$cb=80){global$y;echo"<textarea name='".h($E)."' rows='$M' cols='$cb' class='sqlarea jush-$y' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
as$X)echo
h($X[0])."\n\n\n";}else
echo
h($Y);echo"</textarea>";}function
select_input($xa,$Ge,$Y="",$Be="",$if=""){$Mg=($Ge?"select":"input");return"<$Mg$xa".($Ge?"><option value=''>$if".optionlist($Ge,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$if'>").($Be?script("qsl('$Mg').onchange = $Be;",""):"");}function
json_row($z,$X=null){static$Dc=true;if($Dc)echo"{";if($z!=""){echo($Dc?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Dc=false;}else{echo"\n}\n";$Dc=true;}}function
edit_type($z,$n,$bb,$Jc=array(),$wc=array()){global$zg,$nh,$uh,$Ae;$U=$n["type"];echo'<td><select name="',h($z),'[type]" class="type" aria-labelledby="label-type">';if($U&&!isset($nh[$U])&&!isset($Jc[$U])&&!in_array($U,$wc))$wc[]=$U;if($Jc)$zg[lang(94)]=$Jc;echo
optionlist(array_merge($wc,$zg),$U),'</select><td><input
name="',h($z),'[length]"
value="',h($n["length"]),'"
size="3"
',(!$n["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"");echo' aria-labelledby="label-length"><td class="options">',($bb?"<select name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.lang(95).')'.optionlist($bb,$n["collation"]).'</select>':''),($uh?"<select name='".h($z)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist($uh,$n["unsigned"]).'</select>':''),(isset($n['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(96).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).'</select>':''),($Jc?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".lang(97).")".optionlist(explode("|",$Ae),$n["on_delete"])."</select> ":" ");}function
get_partitions_info($Q){global$g;$Nc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($Q);$J=$g->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Nc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$K=array();list($K["partition_by"],$K["partition"],$K["partitions"])=$J->fetch_row();$bf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Nc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$K["partition_names"]=array_keys($bf);$K["partition_values"]=array_values($bf);return$K;}function
process_length($Ld){global$hc;return(preg_match("~^\\s*\\(?\\s*$hc(?:\\s*,\\s*$hc)*+\\s*\\)?\\s*\$~",$Ld)&&preg_match_all("~$hc~",$Ld,$Td)?"(".implode(",",$Td[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$Ld)));}function
process_type($n,$Za="COLLATE"){global$uh;return" $n[type]".process_length($n["length"]).(preg_match(number_type(),$n["type"])&&in_array($n["unsigned"],$uh)?" $n[unsigned]":"").(preg_match('~char|text|enum|set~',$n["type"])&&$n["collation"]?" $Za ".q($n["collation"]):"");}function
process_field($n,$lh){if($n["on_update"])$n["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$n["on_update"]);return
array(idf_escape(trim($n["field"])),process_type($lh),($n["null"]?" NULL":" NOT NULL"),default_value($n),(preg_match('~timestamp|datetime~',$n["type"])&&$n["on_update"]?" ON UPDATE $n[on_update]":""),(support("comment")&&$n["comment"]!=""?" COMMENT ".q($n["comment"]):""),($n["auto_increment"]?auto_increment():null),);}function
default_value($n){global$y;$Db=$n["default"];return($Db===null?"":" DEFAULT ".(!preg_match('~^GENERATED ~i',$Db)&&(preg_match('~char|binary|text|enum|set~',$n["type"])||preg_match('~^(?![a-z])~i',$Db))?q($Db):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",($y=="sqlite"?"($Db)":$Db))));}function
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U))return" class='$z'";}}function
edit_fields($o,$bb,$U="TABLE",$Jc=array()){global$nd;$o=array_values($o);$Eb=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class='hidden'");$gb=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class='hidden'");echo'<thead><tr>
';if($U=="PROCEDURE"){echo'<td>';}echo'<th id="label-name">',($U=="TABLE"?lang(98):lang(99)),'<td id="label-type">',lang(39),'<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(100),'<td>',lang(101);if($U=="TABLE"){echo'<td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value=""><abbr id="label-ai" title="',lang(41),'">AI</abbr>',doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",)),'<td id="label-default"',$Eb,'>',lang(42),(support("comment")?"<td id='label-comment'$gb>".lang(40):"");}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.17.1")."' alt='+' title='".lang(102)."'>".script("row_count = ".count($o).";"),'</thead>
<tbody>
',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($o
as$t=>$n){$t++;$Me=$n[($_POST?"orig":"field")];$Nb=(isset($_POST["add"][$t-1])||(isset($n["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$Me=="");echo'<tr',($Nb?"":" style='display: none;'"),'>
',($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$nd),$n["inout"]):""),'<th>';if($Nb){echo'<input name="fields[',$t,'][field]" value="',h($n["field"]),'" data-maxlength="64" autocapitalize="off" aria-labelledby="label-name">';}echo'<input type="hidden" name="fields[',$t,'][orig]" value="',h($Me),'">';edit_type("fields[$t]",$n,$bb,$Jc);if($U=="TABLE"){echo'<td>',checkbox("fields[$t][null]",1,$n["null"],"","","block","label-null"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$t,'"';if($n["auto_increment"]){echo' checked';}echo' aria-labelledby="label-ai"></label><td',$Eb,'>',checkbox("fields[$t][has_default]",1,$n["has_default"],"","","","label-default"),'<input name="fields[',$t,'][default]" value="',h($n["default"]),'" aria-labelledby="label-default">',(support("comment")?"<td$gb><input name='fields[$t][comment]' value='".h($n["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.17.1")."' alt='+' title='".lang(102)."'> "."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=up.gif&version=4.17.1")."' alt='↑' title='".lang(103)."'> "."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=down.gif&version=4.17.1")."' alt='↓' title='".lang(104)."'> ":""),($Me==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.17.1")."' alt='x' title='".lang(105)."'>":"");}}function
process_fields(&$o){$ue=0;if($_POST["up"]){$Fd=0;foreach($o
as$z=>$n){if(key($_POST["up"])==$z){unset($o[$z]);array_splice($o,$Fd,0,array($n));break;}if(isset($n["field"]))$Fd=$ue;$ue++;}}elseif($_POST["down"]){$Lc=false;foreach($o
as$z=>$n){if(isset($n["field"])&&$Lc){unset($o[key($_POST["down"])]);array_splice($o,$ue,0,array($Lc));break;}if(key($_POST["down"])==$z)$Lc=$n;$ue++;}}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($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function
grant($Qc,$uf,$e,$_e){if(!$uf)return
true;if($uf==array("ALL PRIVILEGES","GRANT OPTION"))return($Qc=="GRANT"?queries("$Qc ALL PRIVILEGES$_e WITH GRANT OPTION"):queries("$Qc ALL PRIVILEGES$_e")&&queries("$Qc GRANT OPTION$_e"));return
queries("$Qc ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$uf).$e).$_e);}function
drop_create($Rb,$i,$Sb,$Qg,$Tb,$B,$ee,$ce,$de,$xe,$ne){if($_POST["drop"])query_redirect($Rb,$B,$ee);elseif($xe=="")query_redirect($i,$B,$de);elseif($xe!=$ne){$rb=queries($i);queries_redirect($B,$ce,$rb&&queries($Rb));if($rb)queries($Sb);}else
queries_redirect($B,$ce,queries($Qg)&&queries($Tb)&&queries($Rb)&&queries($i));}function
create_trigger($_e,$L){global$y;$Vg=" $L[Timing] $L[Event]".(preg_match('~ OF~',$L["Event"])?" $L[Of]":"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$_e.$Vg:$Vg.$_e).rtrim(" $L[Type]\n$L[Statement]",";").";";}function
create_routine($Qf,$L){global$nd,$y;$P=array();$o=(array)$L["fields"];ksort($o);foreach($o
as$n){if($n["field"]!="")$P[]=(preg_match("~^($nd)\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$Fb=rtrim($L["definition"],";");return"CREATE $Qf ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".($Qf=="FUNCTION"?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").($y=="pgsql"?" AS ".q($Fb):"\n$Fb;");}function
check_constraints($Q){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($Q)."
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'");}function
remove_definer($I){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$I);}function
format_foreign_key($p){global$Ae;$k=$p["db"];$re=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$p["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($re!=""&&$re!=$_GET["ns"]?idf_escape($re).".":"").table($p["table"])." (".implode(", ",array_map('idf_escape',$p["target"])).")".(preg_match("~^($Ae)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^($Ae)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
tar_file($Bc,$ah){$K=pack("a100a8a8a8a12a12",$Bc,644,0,0,decoct($ah->size),decoct(time()));$Ta=8*32;for($t=0;$t<strlen($K);$t++)$Ta+=ord($K[$t]);$K.=sprintf("%06o",$Ta)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ah->send();echo
str_repeat("\0",511-($ah->size+511)%512);}function
ini_bytes($md){$X=ini_get($md);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function
doc_link($ef,$Rg="<sup>?</sup>"){global$y,$g;$dg=$g->server_info;$Gh=preg_replace('~^(\d\.?\d).*~s','\1',$dg);$yh=array('sql'=>"https://dev.mysql.com/doc/refman/$Gh/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Gh/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$dg)."&id=",);if(preg_match('~MariaDB~',$dg)){$yh['sql']="https://mariadb.com/kb/en/";$ef['sql']=(isset($ef['mariadb'])?$ef['mariadb']:str_replace(".html","/",$ef['sql']));}return($ef[$y]?"<a href='".h($yh[$y].$ef[$y].($y=='mssql'?"?view=sql-server-ver$Gh":""))."'".target_blank().">$Rg</a>":"");}function
ob_gzencode($yg){return
gzencode($yg);}function
db_size($k){global$g;if(!$g->select_db($k))return"?";$K=0;foreach(table_status()as$R)$K+=$R["Data_length"]+$R["Index_length"];return
format_number($K);}function
set_utf8mb4($i){global$g;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$i)){$P=true;echo"SET NAMES ".charset($g).";\n\n";}}function
connect_error(){global$c,$g,$T,$m,$Qb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(27).": ".h(DB),lang(106),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(107),drop_databases($_POST["db"]));page_header(lang(108),$m,false);echo"<p class='links'>\n";foreach(array('database'=>lang(109),'privileges'=>lang(61),'processlist'=>lang(110),'variables'=>lang(111),'status'=>lang(112),)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".lang(113,$Qb[DRIVER],"<b>".h($g->server_info)."</b>","<b>$g->extension</b>")."\n","<p>".lang(114,"<b>".h(logged_user())."</b>")."\n";$j=$c->databases();if($j){$Wf=support("scheme");$bb=collations();echo"<form action='' method='post'>\n","<table class='checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".lang(27)." - <a href='".h(ME)."refresh=1'>".lang(115)."</a>"."<td>".lang(116)."<td>".lang(117)."<td>".lang(118)." - <a href='".h(ME)."dbsize=1'>".lang(119)."</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){$Pf=h(ME)."db=".urlencode($k);$u=h("Db-".$k);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$u):""),"<th><a href='$Pf' id='$u'>".h($k)."</a>";$ab=h(db_collation($k,$bb));echo"<td>".(support("database")?"<a href='$Pf".($Wf?"&amp;ns=":"")."&amp;database=' title='".lang(57)."'>$ab</a>":$ab),"<td align='right'><a href='$Pf&amp;schema=' id='tables-".h($k)."' title='".lang(60)."'>".($_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(120)." <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(121)."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),"<input type='hidden' name='token' value='$T'>\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;}$Ae="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($mb){$this->size+=strlen($mb);fwrite($this->handler,$mb);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$hc="'(?:''|[^'\\\\]|\\\\.)*'";$nd="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"])){$b=$_GET["download"];$o=fields($b);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$b-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$l->select($b,$N,array(where($_GET,$o)),$N);$L=($J?$J->fetch_row():array());echo$l->value($L[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$b=$_GET["table"];$o=fields($b);if(!$o)$m=error();$R=table_status1($b,true);$E=$c->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?lang(122):lang(123):lang(124)).": ".($E!=""?$E:h($b)),$m);$Of=array();foreach($o
as$z=>$n)$Of+=$n["privileges"];$c->selectLinks($R,(isset($Of["insert"])||!support("table")?"":null));$fb=$R["Comment"];if($fb!="")echo"<p class='nowrap'>".lang(40).": ".h($fb)."\n";if($o)$c->tableStructurePrint($o);if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".lang(125)."</h3>\n";$x=indexes($b);if($x)$c->tableIndexesPrint($x);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($b).'">'.lang(126)."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".lang(94)."</h3>\n";$Jc=foreign_keys($b);if($Jc){echo"<table>\n","<thead><tr><th>".lang(127)."<td>".lang(128)."<td>".lang(97)."<td>".lang(96)."<td></thead>\n";foreach($Jc
as$E=>$p){echo"<tr title='".h($E)."'>","<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"]),"<td>".h($p["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($b).'&name='.urlencode($E)).'">'.lang(129).'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($b).'">'.lang(130)."</a>\n";}if(support("check")){echo"<h3 id='checks'>".lang(131)."</h3>\n";$Qa=check_constraints($b);if($Qa){echo"<table>\n";foreach($Qa
as$z=>$X){echo"<tr title='".h($z)."'>","<td><code class='jush-$y'>".h($X),"<td><a href='".h(ME.'check='.urlencode($b).'&name='.urlencode($z))."'>".lang(129)."</a>","\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($b).'">'.lang(132)."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(133)."</h3>\n";$kh=triggers($b);if($kh){echo"<table>\n";foreach($kh
as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($b).'&name='.urlencode($z))."'>".lang(129)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($b).'">'.lang(134)."</a>\n";}}elseif(isset($_GET["schema"])){page_header(lang(60),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Hg=array();$Ig=array();$da=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$Td,PREG_SET_ORDER);foreach($Td
as$t=>$C){$Hg[$C[1]]=array($C[2],$C[3]);$Ig[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$ch=0;$Da=-1;$Vf=array();$Gf=array();$Jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$kf=0;$Vf[$Q]["fields"]=array();foreach(fields($Q)as$E=>$n){$kf+=1.25;$n["pos"]=$kf;$Vf[$Q]["fields"][$E]=$n;}$Vf[$Q]["pos"]=($Hg[$Q]?$Hg[$Q]:array($ch,0));foreach($c->foreignKeys($Q)as$X){if(!$X["db"]){$Hd=$Da;if($Hg[$Q][1]||$Hg[$X["table"]][1])$Hd=min(floatval($Hg[$Q][1]),floatval($Hg[$X["table"]][1]))-1;else$Da-=.1;while($Jd[(string)$Hd])$Hd-=.0001;$Vf[$Q]["references"][$X["table"]][(string)$Hd]=array($X["source"],$X["target"]);$Gf[$X["table"]][$Q][(string)$Hd]=$X["target"];$Jd[(string)$Hd]=true;}}$ch=max($ch,$Vf[$Q]["pos"][0]+2.5+$kf);}echo'<div id="schema" style="height: ',$ch,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = function () { return false; };
var tablePos = {',implode(",",$Ig)."\n",'};
var em = qs(\'#schema\').offsetHeight / ',$ch,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($Vf
as$E=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($E).'"><b>'.h($E)."</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$Og=>$Hf){foreach($Hf
as$Hd=>$Df){$Id=$Hd-$Hg[$E][1];$t=0;foreach($Df[0]as$ng)echo"\n<div class='references' title='".h($Og)."' id='refs$Hd-".($t++)."' style='left: $Id"."em; top: ".$Q["fields"][$ng]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$Id)."em;'></div></div>";}}foreach((array)$Gf[$E]as$Og=>$Hf){foreach($Hf
as$Hd=>$e){$Id=$Hd-$Hg[$E][1];$t=0;foreach($e
as$Ng)echo"\n<div class='references' title='".h($Og)."' id='refd$Hd-".($t++)."' style='left: $Id"."em; top: ".$Q["fields"][$Ng]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME)."?file=arrow.gif) no-repeat right center;&version=4.17.1")."'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$Id)."em;'></div></div>";}}echo"\n</div>\n";}foreach($Vf
as$E=>$Q){foreach((array)$Q["references"]as$Og=>$Hf){foreach($Hf
as$Hd=>$Df){$ge=$ch;$Xd=-10;foreach($Df[0]as$z=>$ng){$lf=$Q["pos"][0]+$Q["fields"][$ng]["pos"];$mf=$Vf[$Og]["pos"][0]+$Vf[$Og]["fields"][$Df[1][$z]]["pos"];$ge=min($ge,$lf,$mf);$Xd=max($Xd,$lf,$mf);}echo"<div class='references' id='refl$Hd' style='left: $Hd"."em; top: $ge"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($Xd-$ge)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($da)),'" id="schema-link">',lang(135),'</a>
';}elseif(isset($_GET["dump"])){$b=$_GET["dump"];if($_POST&&!$m){$pb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$pb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($pb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$uc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$vd=preg_match('~sql~',$_POST["format"]);if($vd){echo"-- Adminer $fa ".$Qb[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";$g->query("SET time_zone = '+00:00'");$g->query("SET sql_mode = ''");}}$_g=$_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){$c->dumpDatabase($k);if($g->select_db($k)){if($vd&&preg_match('~CREATE~',$_g)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1))){set_utf8mb4($i);if($_g=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($k).";\n";echo"$i;\n";}if($vd){if($_g)echo
use_sql($k).";\n\n";$Re="";if($_POST["routines"]){foreach(routines()as$L){$E=$L["ROUTINE_NAME"];$Qf=$L["ROUTINE_TYPE"];$i=create_routine($Qf,array("name"=>$E)+routine($L["SPECIFIC_NAME"],$Qf));set_utf8mb4($i);$Re.=($_g!='DROP+CREATE'?"DROP $Qf IF EXISTS ".idf_escape($E).";;\n":"")."$i;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$i=remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($i);$Re.=($_g!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$i;;\n\n";}}echo($Re&&$y=='sql'?"DELIMITER ;;\n\n$Re"."DELIMITER ;\n\n":$Re);}if($_POST["table_style"]||$_POST["data_style"]){$Ih=array();foreach(table_status('',true)as$E=>$R){$Q=(DB==""||in_array($E,(array)$_POST["tables"]));$xb=(DB==""||in_array($E,(array)$_POST["data"]));if($Q||$xb){if($uc=="tar"){$ah=new
TmpFile;ob_start(array($ah,'write'),1e5);}$c->dumpTable($E,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Ih[]=$E;elseif($xb){$o=fields($E);$c->dumpData($E,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($E));}if($vd&&$_POST["triggers"]&&$Q&&($kh=trigger_sql($E)))echo"\nDELIMITER ;;\n$kh\nDELIMITER ;\n";if($uc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$E.csv",$ah);}elseif($vd)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$E=>$R){$Q=(DB==""||in_array($E,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($E);}}foreach($Ih
as$Hh)$c->dumpTable($Hh,$_POST["table_style"],1);if($uc=="tar")echo
pack("x512");}}}if($vd)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(63),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table class="layout">
';$Ab=array('','USE','DROP+CREATE','CREATE');$Jg=array('','DROP+CREATE','CREATE');$yb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$yb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".lang(136)."<td>".html_select("output",$c->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".lang(137)."<td>".html_select("format",$c->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".lang(27)."<td>".html_select('db_style',$Ab,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],lang(138)):"").(support("event")?checkbox("events",1,$L["events"],lang(139)):"")),"<tr><th>".lang(117)."<td>".html_select('table_style',$Jg,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],lang(41)).(support("trigger")?checkbox("triggers",1,$L["triggers"],lang(133)):""),"<tr><th>".lang(140)."<td>".html_select('data_style',$yb,$L["data_style"]),'</table>
<p><input type="submit" value="',lang(63),'">
<input type="hidden" name="token" value="',$T,'">
<table>
',script("qsl('table').onclick = dumpClick;");$pf=array();if(DB!=""){$Ra=($b!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Ra>".lang(117)."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(140)."<input type='checkbox' id='check-data'$Ra></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Ih="";$Kg=tables_list();foreach($Kg
as$E=>$U){$of=preg_replace('~_.*~','',$E);$Ra=($b==""||$b==(substr($b,-1)=="%"?"$of%":$E));$rf="<tr><td>".checkbox("tables[]",$E,$Ra,$E,"","block");if($U!==null&&!preg_match('~table~i',$U))$Ih.="$rf\n";else
echo"$rf<td align='right'><label class='block'><span id='Rows-".h($E)."'></span>".checkbox("data[]",$E,$Ra)."</label>\n";$pf[$of]++;}echo$Ih;if($Kg)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'".($b==""?" checked":"").">".lang(27)."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$j=$c->databases();if($j){foreach($j
as$k){if(!information_schema($k)){$of=preg_replace('~_.*~','',$k);echo"<tr><td>".checkbox("databases[]",$k,$b==""||$b=="$of%",$k,"","block")."\n";$pf[$of]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$Dc=true;foreach($pf
as$z=>$X){if($z!=""&&$X>1){echo($Dc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$Dc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(61));echo'<p class="links"><a href="'.h(ME).'user=">'.lang(141)."</a>";$J=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$Qc=$J;if(!$J)$J=$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",($Qc?"":"<input type='hidden' name='grant' value=''>\n"),"<table class='odds'>\n","<thead><tr><th>".lang(25)."<th>".lang(24)."<th></thead>\n";while($L=$J->fetch_assoc())echo'<tr><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.lang(11)."</a>\n";if(!$Qc||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".lang(11)."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){dump_headers("sql");$c->dumpTable("","");$c->dumpData("","table",$_POST["query"]);exit;}restart_session();$dd=&get_session("queries");$cd=&$dd[DB];if(!$m&&$_POST["clear"]){$cd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(62):lang(54)),$m);if(!$m&&$_POST){$q=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$qg=$c->importServerPath();$q=@fopen((file_exists($qg)?$qg:"compress.zlib://$qg.gz"),"rb");$I=($q?fread($q,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage')&&($be=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($be,2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$cd||reset(end($cd))!=$H){restart_session();$cd[]=array($H,time());set_session("queries",$dd);stop_session();}}$og="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Hb=";";$ue=0;$ec=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$eb=0;$kc=array();$Xe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\*|-- |$'.($y=="pgsql"?'|\$[^$]*\$':'');$dh=microtime(true);parse_str($_COOKIE["adminer_export"],$ma);$Vb=$c->dumpFormat();unset($Vb["sql"]);while($I!=""){if(!$ue&&preg_match("~^$og*+DELIMITER\\s+(\\S+)~i",$I,$C)){$Hb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($Hb)."\\s*|$Xe)",$I,$C,PREG_OFFSET_CAPTURE,$ue);list($Lc,$kf)=$C[0];if(!$Lc&&$q&&!feof($q))$I.=fread($q,1e5);else{if(!$Lc&&rtrim($I)=="")break;$ue=$kf+strlen($Lc);if($Lc&&rtrim($Lc)!=$Hb){$La=$l->hasCStyleEscapes()||($y=="pgsql"&&($kf>0&&strtolower($I[$kf-1])=="e"));$ff=($Lc=='/*'?'\*/':($Lc=='['?']':(preg_match('~^-- |^#~',$Lc)?"\n":preg_quote($Lc).($La?"|\\\\.":""))));while(preg_match("($ff|\$)s",$I,$C,PREG_OFFSET_CAPTURE,$ue)){$Tf=$C[0][0];if(!$Tf&&$q&&!feof($q))$I.=fread($q,1e5);else{$ue=$C[0][1]+strlen($Tf);if(!$Tf||$Tf[0]!="\\")break;}}}else{$ec=false;$H=substr($I,0,$kf);$eb++;$rf="<pre id='sql-$eb'><code class='jush-$y'>".$c->sqlCommandQuery($H)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$og*+ATTACH\\b~i",$H,$C)){echo$rf,"<p class='error'>".lang(142)."\n";$kc[]=" <a href='#sql-$eb'>$eb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$rf;ob_flush();flush();}$ug=microtime(true);if($g->multi_query($H)&&is_object($h)&&preg_match("~^$og*+USE\\b~i",$H))$h->query($H);do{$J=$g->store_result();if($g->error){echo($_POST["only_errors"]?$rf:""),"<p class='error'>".lang(143).($g->errno?" ($g->errno)":"").": ".error()."\n";$kc[]=" <a href='#sql-$eb'>$eb</a>";if($_POST["error_stops"])break
2;}else{$Tg=" <span class='time'>(".format_time($ug).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".lang(11)."</a>":"");$oa=$g->affected_rows;$Lh=($_POST["only_errors"]?"":$l->warnings());$Mh="warnings-$eb";if($Lh)$Tg.=", <a href='#$Mh'>".lang(36)."</a>".script("qsl('a').onclick = partial(toggle, '$Mh');","");$sc=null;$tc="explain-$eb";if(is_object($J)){$_=$_POST["limit"];$Le=select($J,$h,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$se=$J->num_rows;echo"<p>".($se?($_&&$se>$_?lang(144,$_):"").lang(145,$se):""),$Tg;if($h&&preg_match("~^($og|\\()*+SELECT\\b~i",$H)&&($sc=explain($h,$H)))echo", <a href='#$tc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$tc');","");$u="export-$eb";echo", <a href='#$u'>".lang(63)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."<span id='$u' class='hidden'>: ".html_select("output",$c->dumpOutput(),$ma["output"])." ".html_select("format",$Vb,$ma["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".lang(63)."'><input type='hidden' name='token' value='$T'></span>\n"."</form>\n";}}else{if(preg_match("~^$og*+(CREATE|DROP|ALTER)$og++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($g->info)."'>".lang(146,$oa)."$Tg\n";}echo($Lh?"<div id='$Mh' class='hidden'>\n$Lh</div>\n":"");if($sc){echo"<div id='$tc' class='hidden explain'>\n";select($sc,$h,$Le);echo"</div>\n";}}$ug=microtime(true);}while($g->next_result());}$I=substr($I,$ue);$ue=0;}}}}if($ec)echo"<p class='message'>".lang(147)."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(148,$eb-count($kc))," <span class='time'>(".format_time($dh).")</span>\n";}elseif($kc&&$eb>1)echo"<p class='error'>".lang(143).": ".implode("",$kc)."\n";}else
echo"<p class='error'>".upload_error($I)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$qc="<input type='submit' value='".lang(149)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$cd;elseif($_GET["history"]!="")$H=$cd[$_GET["history"]][0];echo"<p>";textarea("query",$H,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>$qc\n",lang(150).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".lang(151)."</legend><div>";$Vc=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$Vc (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$qc":lang(152)),"</div></fieldset>\n";$id=$c->importServerPath();if($id){echo"<fieldset><legend>".lang(153)."</legend><div>",lang(154,"<code>".h($id)."$Vc</code>"),' <input type="submit" name="webfile" value="'.lang(155).'">',"</div></fieldset>\n";}echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(156))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(157))."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$cd){print_fieldset("history",lang(158),$_GET["history"]!="");for($X=end($cd);$X;$X=prev($cd)){$z=key($cd);list($H,$Tg,$Zb)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.lang(11)."</a>"." <span class='time' title='".@date('Y-m-d',$Tg)."'>".@date("H:i:s",$Tg)."</span>"." <code class='jush-$y'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>").($Zb?" <span class='time'>($Zb)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(159)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(160)."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$b=$_GET["edit"];$o=fields($b);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$vh=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
as$E=>$n){if(!isset($n["privileges"][$vh?"update":"insert"])||$c->fieldName($n)==""||$n["generated"])unset($o[$E]);}if($_POST&&!$m&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($vh?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($b);$x=indexes($b);$qh=unique_array($_GET["where"],$x);$_f="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,lang(161),$l->delete($b,$_f,!$qh));else{$P=array();foreach($o
as$E=>$n){$X=process_input($n);if($X!==false&&$X!==null)$P[idf_escape($E)]=$X;}if($vh){if(!$P)redirect($B);queries_redirect($B,lang(162),$l->update($b,$P,$_f,!$qh));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$J=$l->insert($b,$P);$Gd=($J?last_id():0);queries_redirect($B,lang(163,($Gd?" $Gd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($o
as$E=>$n){if(isset($n["privileges"]["select"])){$va=convert_field($n);if($_POST["clone"]&&$n["auto_increment"])$va="''";if($y=="sql"&&preg_match("~enum|set~",$n["type"]))$va="1*".idf_escape($E);$N[]=($va?"$va AS ":"").idf_escape($E);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$l->select($b,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));if(!$J)$m=error();else{$L=$J->fetch_assoc();if(!$L)$L=false;}if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$o){if(!$Z){$J=$l->select($b,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($l->primary=>"");}if($L){foreach($L
as$z=>$X){if(!$Z)$L[$z]=null;$o[$z]=array("field"=>$z,"null"=>($z!=$l->primary),"auto_increment"=>($z==$l->primary));}}}edit_form($b,$o,$L,$vh);}elseif(isset($_GET["create"])){$b=$_GET["create"];$Ye=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$Ye[$z]=$z;$Ff=referencable_primary($b);$Jc=array();foreach($Ff
as$Gg=>$n)$Jc[str_replace("`","``",$Gg)."`".str_replace("`","``",$n["field"])]=$Gg;$Oe=array();$R=array();if($b!=""){$Oe=fields($b);$R=table_status($b);if(!$R)$m=lang(10);}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($L["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(164),drop_tables(array($b)));else{$o=array();$sa=array();$zh=false;$Hc=array();$Ne=reset($Oe);$qa=" FIRST";foreach($L["fields"]as$z=>$n){$p=$Jc[$n["type"]];$lh=($p!==null?$Ff[$p]:$n);if($n["field"]!=""){if(!$n["has_default"])$n["default"]=null;$wf=process_field($n,$lh);$sa[]=array($n["orig"],$wf,$qa);if(!$Ne||$wf!==process_field($Ne,$Ne)){$o[]=array($n["orig"],$wf,$qa);if($n["orig"]!=""||$qa)$zh=true;}if($p!==null)$Hc[idf_escape($n["field"])]=($b!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Jc[$n["type"]],'source'=>array($n["field"]),'target'=>array($lh["field"]),'on_delete'=>$n["on_delete"],));$qa=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$zh=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Ne=next($Oe);if(!$Ne)$qa="";}}$af="";if(support("partitioning")){if(isset($Ye[$L["partition_by"]])){$We=array_filter($L,function($z){return
preg_match('~^partition~',$z);},ARRAY_FILTER_USE_KEY);foreach($We["partition_names"]as$z=>$E){if($E==""){unset($We["partition_names"][$z]);unset($We["partition_values"][$z]);}}if($We!=get_partitions_info($b)){$bf=array();if($We["partition_by"]=='RANGE'||$We["partition_by"]=='LIST'){foreach($We["partition_names"]as$z=>$E){$Y=$We["partition_values"][$z];$bf[]="\n PARTITION ".idf_escape($E)." VALUES ".($We["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$af.="\nPARTITION BY $We[partition_by]($We[partition])";if($bf)$af.=" (".implode(",",$bf)."\n)";elseif($We["partitions"])$af.=" PARTITIONS ".(+$We["partitions"]);}}elseif(preg_match("~partitioned~",$R["Create_options"]))$af.="\nREMOVE PARTITIONING";}$D=lang(165);if($b==""){cookie("adminer_engine",$L["Engine"]);$D=lang(166);}$E=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($E),$D,alter_table($b,$E,($y=="sqlite"&&($zh||$Hc)?$sa:$o),$Hc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$af));}}page_header(($b!=""?lang(34):lang(64)),$m,array("table"=>$b),h($b));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($nh["int"])?"int":(isset($nh["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($b!=""){$L=$R;$L["name"]=$b;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($Oe
as$n){$n["has_default"]=isset($n["default"]);$L["fields"][]=$n;}if(support("partitioning")){$L+=get_partitions_info($b);$L["partition_names"][]="";$L["partition_values"][]="";}}}$bb=collations();$gc=engines();foreach($gc
as$fc){if(!strcasecmp($fc,$L["Engine"])){$L["Engine"]=$fc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$b==""){echo
lang(167),': <input name="name"',($b==""&&!$_POST?" autofocus":""),' data-maxlength="64" value="',h($L["name"]),'" autocapitalize="off">
',($gc?"<select name='Engine'>".optionlist(array(""=>"(".lang(168).")")+$gc,$L["Engine"])."</select>".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($bb&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".lang(95).")")+$bb,$L["Collation"]):""),' <input type="submit" value="',lang(15),'">
';}echo'
';if(support("columns")){echo'<div class="scrollable">
<table id="edit-fields" class="nowrap">
';edit_fields($L["fields"],$bb,"TABLE",$Jc);echo'</table>
',script("editFields();"),'</div>
<p>
',lang(41),': <input type="number" name="Auto_increment" class="size" value="',h($L["Auto_increment"]),'">
',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),lang(169),"columnShow(this.checked, 5)","jsonly");$hb=($_POST?$_POST["comments"]:adminer_setting("comments"));echo(support("comment")?checkbox("comments",1,$hb,lang(40),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$L["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($hb?"":" class='hidden'").">".h($L["Comment"])."</textarea>":'<input name="Comment" value="'.h($L["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($hb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="',lang(15),'">
';}echo'
';if($b!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$b));}if(support("partitioning")){$Ze=preg_match('~RANGE|LIST~',$L["partition_by"]);print_fieldset("partition",lang(171),$L["partition_by"]);echo'<p>
',"<select name='partition_by'>".optionlist(array(""=>"")+$Ye,$L["partition_by"])."</select>".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'(<input name="partition" value="',h($L["partition"]),'">)
',lang(172),': <input type="number" name="partitions" class="size',($Ze||!$L["partition_by"]?" hidden":""),'" value="',h($L["partitions"]),'">
<table id="partition-table"',($Ze?"":" class='hidden'"),'>
<thead><tr><th>',lang(173),'<th>',lang(174),'</thead>
';foreach($L["partition_names"]as$z=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($z==count($L["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h($L["partition_values"][$z]).'">';}echo'</table>
</div></fieldset>
';}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["indexes"])){$b=$_GET["indexes"];$ld=array("PRIMARY","UNIQUE","INDEX");$R=table_status($b,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$R["Engine"]))$ld[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$ld[]="SPATIAL";$x=indexes($b);$qf=array();if($y=="mongo"){$qf=$x["_id_"];unset($ld[0]);unset($x["_id_"]);}$L=$_POST;if($L)set_adminer_settings(array("index_options"=>$L["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$ta=array();foreach($L["indexes"]as$w){$E=$w["name"];if(in_array($w["type"],$ld)){$e=array();$Md=array();$Jb=array();$P=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$Ld=$w["lengths"][$z];$Ib=$w["descs"][$z];$P[]=idf_escape($d).($Ld?"(".(+$Ld).")":"").($Ib?" DESC":"");$e[]=$d;$Md[]=($Ld?$Ld:null);$Jb[]=$Ib;}}if($e){$rc=$x[$E];if($rc){ksort($rc["columns"]);ksort($rc["lengths"]);ksort($rc["descs"]);if($w["type"]==$rc["type"]&&array_values($rc["columns"])===$e&&(!$rc["lengths"]||array_values($rc["lengths"])===$Md)&&array_values($rc["descs"])===$Jb){unset($x[$E]);continue;}}$ta[]=array($w["type"],$E,$P);}}}foreach($x
as$E=>$rc)$ta[]=array($rc["type"],$E,"DROP");if(!$ta)redirect(ME."table=".urlencode($b));queries_redirect(ME."table=".urlencode($b),lang(175),alter_indexes($b,$ta));}page_header(lang(125),$m,array("table"=>$b),h($b));$o=array_keys(fields($b));if($_POST["add"]){foreach($L["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$w=end($L["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($x
as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$L["indexes"]=$x;}$Md=($y=="sql"||$y=="mssql");$ig=($_POST?$_POST["options"]:adminer_setting("index_options"));echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap">
<thead><tr>
<th id="label-type">',lang(176),'<th><input type="submit" class="wayoff">',lang(38).($Md?"<span class='idxopts".($ig?"":" hidden")."'> (".lang(177).")</span>":"");if($Md||support("descidx"))echo
checkbox("options",1,$ig,lang(101),"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">',lang(178),'<th><noscript>',"<input type='image' class='icon' name='add[0]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.17.1")."' alt='+' title='".lang(102)."'>",'</noscript>
</thead>
';if($qf){echo"<tr><td>PRIMARY<td>";foreach($qf["columns"]as$z=>$d){echo
select_input(" disabled",$o,$d),"<label><input disabled type='checkbox'>".lang(49)."</label> ";}echo"<td><td>\n";}$xd=1;foreach($L["indexes"]as$w){if(!$_POST["drop_col"]||$xd!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$xd][type]",array(-1=>"")+$ld,$w["type"],($xd==count($L["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$d){echo"<span>".select_input(" name='indexes[$xd][columns][$t]' title='".lang(38)."'",($o?array_combine($o,$o):$o),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape($y=="sql"?"":$_GET["indexes"]."_")."')"),"<span class='idxopts".($ig?"":" hidden")."'>",($Md?"<input type='number' name='indexes[$xd][lengths][$t]' class='size' value='".h($w["lengths"][$z])."' title='".lang(100)."'>":""),(support("descidx")?checkbox("indexes[$xd][descs][$t]",1,$w["descs"][$z],lang(49)):""),"</span> </span>";$t++;}echo"<td><input name='indexes[$xd][name]' value='".h($w["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td><input type='image' class='icon' name='drop_col[$xd]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.17.1")."' alt='x' title='".lang(105)."'>".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$xd++;}echo'</table>
</div>
<p>
<input type="submit" value="',lang(15),'">
<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$E=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(179),drop_databases(array(DB)));}elseif(DB!==$E){if(DB!=""){$_GET["db"]=$E;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($E),lang(180),rename_database($E,$L["collation"]));}else{$j=explode("\n",str_replace("\r","",$E));$Ag=true;$Fd="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$L["collation"]))$Ag=false;$Fd=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Fd),lang(181),$Ag);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),lang(182));}}page_header(DB!=""?lang(57):lang(109),$m,array(),h(DB));$bb=collations();$E=DB;if($_POST)$E=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$bb);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$Qc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$Qc,$C)&&$C[1]){$E=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add_x"]||strpos($E,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($E).'</textarea><br>':'<input name="name" autofocus value="'.h($E).'" data-maxlength="64" autocapitalize="off">')."\n".($bb?html_select("collation",array(""=>"(".lang(95).")")+$bb,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",)):""),'<input type="submit" value="',lang(15),'">
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(121)."'>".confirm(lang(170,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.17.1")."' alt='+' title='".lang(102)."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(183).": ".h($ca),$m);$Qf=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$jd=array();$Re=array();foreach($Qf["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT")$Re[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$jd[]=$t;}if(!$m&&$_POST){$Ma=array();foreach($Qf["fields"]as$z=>$n){if(in_array($z,$jd)){$X=process_input($n);if($X===false)$X="''";if(isset($Re[$z]))$g->query("SET @".idf_escape($n["field"])." = $X");}$Ma[]=(isset($Re[$z])?"@".idf_escape($n["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ca)."(".implode(", ",$Ma).")";$ug=microtime(true);$J=$g->multi_query($I);$oa=$g->affected_rows;echo$c->selectQuery($I,$ug,!$J);if(!$J)echo"<p class='error'>".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$J=$g->store_result();if(is_object($J))select($J,$h);else
echo"<p class='message'>".lang(184,$oa)." <span class='time'>".@date("H:i:s")."</span>\n";}while($g->next_result());if($Re)select($g->query("SELECT ".implode(", ",$Re)));}}echo'
<form action="" method="post">
';if($jd){echo"<table class='layout'>\n";foreach($jd
as$z){$n=$Qf["fields"][$z];$E=$n["field"];echo"<tr><th>".$c->fieldName($n);$Y=$_POST["fields"][$E];if($Y!=""){if($n["type"]=="enum")$Y=+$Y;if($n["type"]=="set")$Y=array_sum($Y);}input($n,$Y,(string)$_POST["function"][$E]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(183),'">
<input type="hidden" name="token" value="',$T,'">
</form>
<pre>
';function
pre_tr($Tf){return
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Tf))));}$Q='(\+--[-+]+\+\n)';$L='(\| .* \|\n)';echo
preg_replace_callback("~^$Q?$L$Q?($L*)$Q?~m",function($C){$Ec=pre_tr($C[2]);return"<table>\n".($C[1]?"<thead>$Ec</thead>\n":$Ec).pre_tr($C[4])."\n</table>";},preg_replace('~(\n( -|mysql)&gt; )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Qf['comment']))));echo'</pre>
';}elseif(isset($_GET["foreign"])){$b=$_GET["foreign"];$E=$_GET["name"];$L=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?lang(185):($E!=""?lang(186):lang(187)));$B=ME."table=".urlencode($b);if(!$_POST["drop"]){$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Ng=array();foreach($L["source"]as$z=>$X)$Ng[$z]=$L["target"][$z];$L["target"]=$Ng;}if($y=="sqlite")queries_redirect($B,$D,recreate_table($b,$b,array(),array(),array(" $E"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$ta="ALTER TABLE ".table($b);$Rb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E);if($_POST["drop"])query_redirect($ta.$Rb,$B,$D);else{query_redirect($ta.($E!=""?"$Rb,":"")."\nADD".format_foreign_key($L),$B,$D);$m=lang(188)."<br>$m";}}}page_header(lang(189),$m,array("table"=>$b),h($b));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($E!=""){$Jc=foreign_keys($b);$L=$Jc[$E];$L["source"][]="";}else{$L["table"]=$b;$L["source"]=array("");}echo'
<form action="" method="post">
';$ng=array_keys(fields($b));if($L["db"]!="")$g->select_db($L["db"]);if($L["ns"]!="")set_schema($L["ns"]);$Ef=array_keys(array_filter(table_status('',true),'fk_support'));$Ng=array_keys(fields(in_array($L["table"],$Ef)?$L["table"]:reset($Ef)));$Be="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>".lang(190).": ".html_select("table",$Ef,$L["table"],$Be)."\n";if($y=="pgsql")echo
lang(191).": ".html_select("ns",$c->schemas(),$L["ns"]!=""?$L["ns"]:$_GET["ns"],$Be);elseif($y!="sqlite"){$Bb=array();foreach($c->databases()as$k){if(!information_schema($k))$Bb[]=$k;}echo
lang(65).": ".html_select("db",$Bb,$L["db"]!=""?$L["db"]:$_GET["db"],$Be);}echo'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="',lang(192),'"></noscript>
<table>
<thead><tr><th id="label-source">',lang(127),'<th id="label-target">',lang(128),'</thead>
';$xd=0;foreach($L["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$ng,$X,($xd==count($L["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"<td>".html_select("target[".(+$z)."]",$Ng,$L["target"][$z],1,"label-target");$xd++;}echo'</table>
<p>
',lang(97),': ',html_select("on_delete",array(-1=>"")+explode("|",$Ae),$L["on_delete"]),' ',lang(96),': ',html_select("on_update",array(-1=>"")+explode("|",$Ae),$L["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",)),'<p>
<input type="submit" value="',lang(15),'">
<noscript><p><input type="submit" name="add" value="',lang(193),'"></noscript>
';if($E!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$E));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["view"])){$b=$_GET["view"];$L=$_POST;$Pe="VIEW";if($y=="pgsql"&&$b!=""){$vg=table_status($b);$Pe=strtoupper($vg["Engine"]);}if($_POST&&!$m){$E=trim($L["name"]);$va=" AS\n$L[select]";$B=ME."table=".urlencode($E);$D=lang(194);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$b==$E&&$y!="sqlite"&&$U=="VIEW"&&$Pe=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$va,$B,$D);else{$Pg=$E."_adminer_".uniqid();drop_create("DROP $Pe ".table($b),"CREATE $U ".table($E).$va,"DROP $U ".table($E),"CREATE $U ".table($Pg).$va,"DROP $U ".table($Pg),($_POST["drop"]?substr(ME,0,-1):$B),lang(195),$D,lang(196),$b,$E);}}if(!$_POST&&$b!=""){$L=view($b);$L["name"]=$b;$L["materialized"]=($Pe!="VIEW");if(!$m)$m=error();}page_header(($b!=""?lang(33):lang(197)),$m,array("table"=>$b),h($b));echo'
<form action="" method="post">
<p>',lang(178),': <input name="name" value="',h($L["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$L["materialized"],lang(122)):""),'<p>';textarea("select",$L["select"]);echo'<p>
<input type="submit" value="',lang(15),'">
';if($b!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$b));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$qd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$wg=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(198));elseif(in_array($L["INTERVAL_FIELD"],$qd)&&isset($wg[$L["STATUS"]])){$Uf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(199):lang(200)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Uf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$Uf)."\n".$wg[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(201).": ".h($aa):lang(202)),$m);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo'
<form action="" method="post">
<table class="layout">
<tr><th>',lang(178),'<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(203),'<td><input name="STARTS" value="',h("$L[EXECUTE_AT]$L[STARTS]"),'">
<tr><th title="datetime">',lang(204),'<td><input name="ENDS" value="',h($L["ENDS"]),'">
<tr><th>',lang(205),'<td><input type="number" name="INTERVAL_VALUE" value="',h($L["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$qd,$L["INTERVAL_FIELD"]),'<tr><th>',lang(112),'<td>',html_select("STATUS",$wg,$L["STATUS"]),'<tr><th>',lang(40),'<td><input name="EVENT_COMMENT" value="',h($L["EVENT_COMMENT"]),'" data-maxlength="64">
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",lang(206)),'</table>
<p>';textarea("EVENT_DEFINITION",$L["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',lang(15),'">
';if($aa!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$aa));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Qf=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$m){$Me=routine($_GET["procedure"],$Qf);$Pg="$L[name]_adminer_".uniqid();drop_create("DROP $Qf ".routine_id($ca,$Me),create_routine($Qf,$L),"DROP $Qf ".routine_id($L["name"],$L),create_routine($Qf,array("name"=>$Pg)+$L),"DROP $Qf ".routine_id($Pg,$L),substr(ME,0,-1),lang(207),lang(208),lang(209),$ca,$L["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(210):lang(211)).": ".h($ca):(isset($_GET["function"])?lang(212):lang(213))),$m);if(!$_POST&&$ca!=""){$L=routine($_GET["procedure"],$Qf);$L["name"]=$ca;}$bb=get_vals("SHOW CHARACTER SET");sort($bb);$Rf=routine_languages();echo'
<form action="" method="post" id="form">
<p>',lang(178),': <input name="name" value="',h($L["name"]),'" data-maxlength="64" autocapitalize="off">
',($Rf?lang(20).": ".html_select("language",$Rf,$L["language"])."\n":""),'<input type="submit" value="',lang(15),'">
<div class="scrollable">
<table class="nowrap">
';edit_fields($L["fields"],$bb,$Qf);if(isset($_GET["function"])){echo"<tr><td>".lang(214);edit_type("returns",$L["returns"],$bb,array(),($y=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$L["definition"]);echo'<p>
<input type="submit" value="',lang(15),'">
';if($ca!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$ca));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["check"])){$b=$_GET["check"];$E=$_GET["name"];$L=$_POST;if($L&&!$m){$J=($E==""||queries("ALTER TABLE ".table($b)." DROP CONSTRAINT ".idf_escape($E)));if(!$L["drop"])$J=queries("ALTER TABLE ".table($b)." ADD".($L["name"]!=""?" CONSTRAINT ".idf_escape($L["name"])."":"")." CHECK ($L[clause])");queries_redirect(ME."table=".urlencode($b),($L["drop"]?lang(215):($E!=""?lang(216):lang(217))),$J);}page_header(($E!=""?lang(218).": ".h($E):lang(132)),$m,array("table"=>$b));if(!$L){$Sa=check_constraints($b);$L=array("name"=>$E,"clause"=>$Sa[$E]);}echo'
<form action="" method="post">
<p>',lang(178),': <input name="name" value="',h($L["name"]),'" data-maxlength="64" autocapitalize="off">',doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",)),'<p>';textarea("clause",$L["clause"]);echo'<p><input type="submit" value="',lang(15),'">
';if($E!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$E));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["trigger"])){$b=$_GET["trigger"];$E=$_GET["name"];$jh=trigger_options();$L=(array)trigger($E,$b)+array("Trigger"=>$b."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$jh["Timing"])&&in_array($_POST["Event"],$jh["Event"])&&in_array($_POST["Type"],$jh["Type"])){$_e=" ON ".table($b);$Rb="DROP TRIGGER ".idf_escape($E).($y=="pgsql"?$_e:"");$B=ME."table=".urlencode($b);if($_POST["drop"])query_redirect($Rb,$B,lang(219));else{if($E!="")queries($Rb);queries_redirect($B,($E!=""?lang(220):lang(221)),queries(create_trigger($_e,$_POST)));if($E!="")queries(create_trigger($_e,$L+array("Type"=>reset($jh["Type"]))));}}$L=$_POST;}page_header(($E!=""?lang(222).": ".h($E):lang(223)),$m,array("table"=>$b));echo'
<form action="" method="post" id="form">
<table class="layout">
<tr><th>',lang(224),'<td>',html_select("Timing",$jh["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($b,"/")."_[ba][iud]$/, '".js_escape($b)."', this.form);"),'<tr><th>',lang(225),'<td>',html_select("Event",$jh["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$jh["Event"])?" <input name='Of' value='".h($L["Of"])."' class='hidden'>":""),'<tr><th>',lang(39),'<td>',html_select("Type",$jh["Type"],$L["Type"]),'</table>
<p>',lang(178),': <input name="Trigger" value="',h($L["Trigger"]),'" data-maxlength="64" autocapitalize="off">
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$L["Statement"]);echo'<p>
<input type="submit" value="',lang(15),'">
';if($E!=""){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,$E));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["user"])){$ea=$_GET["user"];$uf=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$nb)$uf[$nb][$L["Privilege"]]=$L["Comment"];}$uf["Server Admin"]+=$uf["File access on server"];$uf["Databases"]["Create routine"]=$uf["Procedures"]["Create routine"];unset($uf["Procedures"]["Create routine"]);$uf["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$uf["Columns"][$X]=$uf["Tables"][$X];unset($uf["Server Admin"]["Usage"]);foreach($uf["Tables"]as$z=>$X)unset($uf["Databases"][$z]);$me=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$me[$X]=(array)$me[$X]+(array)$_POST["grants"][$z];}$Rc=array();$ye="";if(isset($_GET["host"])&&($J=$g->query("SHOW GRANTS FOR ".q($ea)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$Td,PREG_SET_ORDER)){foreach($Td
as$X){if($X[1]!="USAGE")$Rc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$Rc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C))$ye=$C[1];}}if($_POST&&!$m){$ze=(isset($_GET["host"])?q($ea)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $ze",ME."privileges=",lang(226));else{$oe=q($_POST["user"])."@".q($_POST["host"]);$cf=$_POST["pass"];if($cf!=''&&!$_POST["hashed"]&&!min_version(8)){$cf=$g->result("SELECT PASSWORD(".q($cf).")");$m=!$cf;}$rb=false;if(!$m){if($ze!=$oe){$rb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $oe IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($cf));$m=!$rb;}elseif($cf!=$ye)queries("SET PASSWORD FOR $oe = ".q($cf));}if(!$m){$Nf=array();foreach($me
as$te=>$Qc){if(isset($_GET["grant"]))$Qc=array_filter($Qc);$Qc=array_keys($Qc);if(isset($_GET["grant"]))$Nf=array_diff(array_keys(array_filter($me[$te],'strlen')),$Qc);elseif($ze==$oe){$we=array_keys((array)$Rc[$te]);$Nf=array_diff($we,$Qc);$Qc=array_diff($Qc,$we);unset($Rc[$te]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$te,$C)&&(!grant("REVOKE",$Nf,$C[2]," ON $C[1] FROM $oe")||!grant("GRANT",$Qc,$C[2]," ON $C[1] TO $oe"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($ze!=$oe)queries("DROP USER $ze");elseif(!isset($_GET["grant"])){foreach($Rc
as$te=>$Nf){if(preg_match('~^(.+)(\(.*\))?$~U',$te,$C))grant("REVOKE",array_keys($Nf),$C[2]," ON $C[1] FROM $oe");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(227):lang(228)),!$m);if($rb)$g->query("DROP USER $oe");}}page_header((isset($_GET["host"])?lang(25).": ".h("$ea@$_GET[host]"):lang(141)),$m,array("privileges"=>array('',lang(61))));if($_POST){$L=$_POST;$Rc=$me;}else{$L=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$ye;if($ye!="")$L["hashed"]=true;$Rc[(DB==""||$Rc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table class="layout">
<tr><th>',lang(24),'<td><input name="host" data-maxlength="60" value="',h($L["host"]),'" autocapitalize="off">
<tr><th>',lang(25),'<td><input name="user" data-maxlength="80" value="',h($L["user"]),'" autocapitalize="off">
<tr><th>',lang(26),'<td><input name="pass" id="pass" value="',h($L["pass"]),'" autocomplete="new-password">
';if(!$L["hashed"])echo
script("typePassword(qs('#pass'));");echo(min_version(8)?"":checkbox("hashed",1,$L["hashed"],lang(229),"typePassword(this.form['pass'], this.checked);")),'</table>
';echo"<table class='odds'>\n","<thead><tr><th colspan='2'>".lang(61).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($Rc
as$te=>$Qc){echo'<th>'.($te!="*.*"?"<input name='objects[$t]' value='".h($te)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(24),"Databases"=>lang(27),"Tables"=>lang(124),"Columns"=>lang(38),"Procedures"=>lang(230),)as$nb=>$Ib){foreach((array)$uf[$nb]as$tf=>$fb){echo"<tr><td".($Ib?">$Ib<td":" colspan='2'").' lang="en" title="'.h($fb).'">'.h($tf);$t=0;foreach($Rc
as$te=>$Qc){$E="'grants[$t][".h(strtoupper($tf))."]'";$Y=$Qc[strtoupper($tf)];if($nb=="Server Admin"&&$te!=(isset($Rc["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$E><option><option value='1'".($Y?" selected":"").">".lang(231)."<option value='0'".($Y=="0"?" selected":"").">".lang(232)."</select>";else{echo"<td align='center'><label class='block'>","<input type='checkbox' name=$E value='1'".($Y?" checked":"").($tf=="All privileges"?" id='grants-$t-all'>":">".($tf=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$t-all'); };"))),"</label>";}$t++;}}}echo"</table>\n",'<p>
<input type="submit" value="',lang(15),'">
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',lang(121),'">',confirm(lang(170,"$ea@$_GET[host]"));}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$Ad=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$Ad++;}queries_redirect(ME."processlist=",lang(233,$Ad),$Ad||!$_POST["kill"]);}}page_header(lang(110),$m);echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap checkable odds">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($L
as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L
as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.lang(234).'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill")){echo($t+1)."/".lang(235,max_connections()),"<p><input type='submit' value='".lang(236)."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$b=$_GET["select"];$R=table_status1($b);$x=indexes($b);$o=fields($b);$Jc=column_foreign_keys($b);$ve=$R["Oid"];parse_str($_COOKIE["adminer_import"],$na);$Of=array();$e=array();$Sg=null;foreach($o
as$z=>$n){$E=$c->fieldName($n);if(isset($n["privileges"]["select"])&&$E!=""){$e[$z]=html_entity_decode(strip_tags($E),ENT_QUOTES);if(is_shortable($n))$Sg=$c->selectLengthProcess();}$Of+=$n["privileges"];}list($N,$s)=$c->selectColumnsProcess($e,$x);$ud=count($s)<count($N);$Z=$c->selectSearchProcess($o,$x);$Ie=$c->selectOrderProcess($o,$x);$_=$c->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$rh=>$L){$va=convert_field($o[key($L)]);$N=array($va?$va:idf_escape(key($L)));$Z[]=where_check($rh,$o);$K=$l->select($b,$N,$Z,$N);if($K)echo
reset($K->fetch_row());}exit;}$qf=$th=null;foreach($x
as$w){if($w["type"]=="PRIMARY"){$qf=array_flip($w["columns"]);$th=($N?$qf:array());foreach($th
as$z=>$X){if(in_array(idf_escape($z),$N))unset($th[$z]);}break;}}if($ve&&!$qf){$qf=$th=array($ve=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($ve));}if($_POST&&!$m){$Oh=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Sa=array();foreach($_POST["check"]as$Pa)$Sa[]=where_check($Pa,$o);$Oh[]="((".implode(") OR (",$Sa)."))";}$Oh=($Oh?"\nWHERE ".implode(" AND ",$Oh):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($b);$c->dumpTable($b,"");$Nc=($N?implode(", ",$N):"*").convert_fields($e,$o,$N)."\nFROM ".table($b);$Tc=($s&&$ud?"\nGROUP BY ".implode(", ",$s):"").($Ie?"\nORDER BY ".implode(", ",$Ie):"");if(!is_array($_POST["check"])||$qf)$I="SELECT $Nc$Oh$Tc";else{$ph=array();foreach($_POST["check"]as$X)$ph[]="(SELECT".limit($Nc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$Tc,1).")";$I=implode(" UNION ALL ",$ph);}$c->dumpData($b,"table",$I);exit;}if(!$c->selectEmailProcess($Z,$Jc)){if($_POST["save"]||$_POST["delete"]){$J=true;$oa=0;$P=array();if(!$_POST["delete"]){foreach($e
as$E=>$X){$X=process_input($o[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($E)]=($X!==false?$X:idf_escape($E));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($b)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($b);if($_POST["all"]||($qf&&is_array($_POST["check"]))||$ud){$J=($_POST["delete"]?$l->delete($b,$Oh):($_POST["clone"]?queries("INSERT $I$Oh"):$l->update($b,$P,$Oh)));$oa=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Nh="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$J=($_POST["delete"]?$l->delete($b,$Nh,1):($_POST["clone"]?queries("INSERT".limit1($b,$I,$Nh)):$l->update($b,$P,$Nh,1)));if(!$J)break;$oa+=$g->affected_rows;}}}$D=lang(237,$oa);if($_POST["clone"]&&$J&&$oa==1){$Gd=last_id();if($Gd)$D=lang(163," $Gd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($b,$o,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(238);else{$J=true;$oa=0;foreach($_POST["val"]as$rh=>$L){$P=array();foreach($L
as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$o[$z]["type"])||$X!=""?$c->processInput($o[$z],$X):"NULL");}$J=$l->update($b,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($rh,$o),!$ud&&!$qf," ");if(!$J)break;$oa+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(237,$oa),$J);}}elseif(!is_string($Ac=get_file("csv_file",true)))$m=upload_error($Ac);elseif(!preg_match('~~u',$Ac))$m=lang(239);else{cookie("adminer_import","output=".urlencode($na["output"])."&format=".urlencode($_POST["separator"]));$J=true;$cb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Ac,$Td);$oa=count($Td[0]);$l->begin();$cg=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Td[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$cg]*)$cg~",$X.$cg,$Ud);if(!$z&&!array_diff($Ud[1],$cb)){$cb=$Ud[1];$oa--;}else{$P=array();foreach($Ud[1]as$t=>$Ya)$P[idf_escape($cb[$t])]=($Ya==""&&$o[$cb[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ya))));$M[]=$P;}}$J=(!$M||$l->insertUpdate($b,$M,$qf));if($J)$J=$l->commit();queries_redirect(remove_from_uri("page"),lang(240,$oa),$J);$l->rollback();}}}$Gg=$c->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(43).": $Gg",$m);$P=null;if(isset($Of["insert"])||!support("table")){$We=array();foreach((array)$_GET["where"]as$X){if(isset($Jc[$X["col"]])&&count($Jc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$We["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$P=$We?"&".http_build_query($We):"";}$c->selectLinks($R,$P);if(!$e&&support("table"))echo"<p class='error'>".lang(241).($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($b).'">',"</div>\n";$c->selectColumnsPrint($N,$e);$c->selectSearchPrint($Z,$e,$x);$c->selectOrderPrint($Ie,$e,$x);$c->selectLimitPrint($_);$c->selectLengthPrint($Sg);$c->selectActionPrint($x);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$Mc=$g->result(count_rows($b,$Z,$ud,$s));$G=floor(max(0,$Mc-1)/$_);}$Xf=$N;$Sc=$s;if(!$Xf){$Xf[]="*";$ob=convert_fields($e,$o,$N);if($ob)$Xf[]=substr($ob,2);}foreach($N
as$z=>$X){$n=$o[idf_unescape($X)];if($n&&($va=convert_field($n)))$Xf[$z]="$va AS $X";}if(!$ud&&$th){foreach($th
as$z=>$X){$Xf[]=idf_escape($z);if($Sc)$Sc[]=idf_escape($z);}}$J=$l->select($b,$Xf,$Z,$Sc,$Ie,$_,$G,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$dc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&$_!=""&&$s&&$ud&&$y=="sql")$Mc=$g->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".lang(13)."\n";else{$Ca=$c->backwardKeys($b,$Gg);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".lang(242)."</a>");$le=array();$Oc=array();reset($N);$Bf=1;foreach($M[0]as$z=>$X){if(!isset($th[$z])){$X=$_GET["columns"][key($N)];$n=$o[$N?($X?$X["col"]:current($N)):$z];$E=($n?$c->fieldName($n,$Bf):($X["fun"]?"*":h($z)));if($E!=""){$Bf++;$le[$z]=$E;$d=idf_escape($z);$fd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Ib="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($z))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'<a href="'.h($fd.($Ie[0]==$d||$Ie[0]==$z||(!$Ie&&$ud&&$s[0]==$d)?$Ib:'')).'">';echo
apply_sql_function($X["fun"],$E)."</a>";echo"<span class='column hidden'>","<a href='".h($fd.$Ib)."' title='".lang(49)."' class='text'> ↓</a>";if(!$X["fun"]){echo'<a href="#fieldset-search" title="'.lang(46).'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($z)."');");}echo"</span>";}$Oc[$z]=$X["fun"];next($N);}}$Md=array();if($_GET["modify"]){foreach($M
as$L){foreach($L
as$z=>$X)$Md[$z]=max($Md[$z],min(40,strlen(utf8_decode($X))));}}echo($Ca?"<th>".lang(243):"")."</thead>\n";if(is_ajax())ob_end_clean();foreach($c->rowDescriptions($M,$Jc)as$ke=>$L){$qh=unique_array($M[$ke],$x);if(!$qh){$qh=array();foreach($M[$ke]as$z=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$z))$qh[$z]=$X;}}$rh="";foreach($qh
as$z=>$X){if(($y=="sql"||$y=="pgsql")&&preg_match('~char|text|enum|set~',$o[$z]["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y!='sql'||preg_match("~^utf8~",$o[$z]["collation"])?$z:"CONVERT($z USING ".charset($g).")").")";$X=md5($X);}$rh.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($z));}echo"<tr>".(!$s&&$N?"":"<td>".checkbox("check[]",substr($rh,1),in_array(substr($rh,1),(array)$_POST["check"])).($ud||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($b).$rh)."' class='edit'>".lang(244)."</a>"));foreach($L
as$z=>$X){if(isset($le[$z])){$n=$o[$z];$X=$l->value($X,$n);if($X!=""&&(!isset($dc[$z])||$dc[$z]!=""))$dc[$z]=(is_mail($X)?$le[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$n["type"])&&$X!="")$A=ME.'download='.urlencode($b).'&field='.urlencode($z).$rh;if(!$A&&$X!==null){foreach((array)$Jc[$z]as$p){if(count($Jc[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$t=>$ng)$A.=where_link($t,$p["target"][$t],$M[$ke][$ng]);$A=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$A;if($p["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$A);if(count($p["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($b);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$qh))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($qh
as$yd=>$W)$A.=where_link($t++,$yd,$W);}$X=select_value($X,$A,$n,$Sg);$u=h("val[$rh][".bracket_escape($z)."]");$Y=$_POST["val"][$rh][bracket_escape($z)];$Yb=!is_array($L[$z])&&is_utf8($X)&&$M[$ke][$z]==$L[$z]&&!$Oc[$z];$Rg=preg_match('~text|lob~',$n["type"]);echo"<td id='$u'";if(($_GET["modify"]&&$Yb)||$Y!==null){$Wc=h($Y!==null?$Y:$L[$z]);echo">".($Rg?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Wc</textarea>":"<input name='$u' value='$Wc' size='$Md[$z]'>");}else{$Qd=strpos($X,"<i>…</i>");echo" data-text='".($Qd?2:($Rg?1:0))."'".($Yb?"":" data-warning='".h(lang(245))."'").">$X</td>";}}}if($Ca)echo"<td>";$c->backwardKeysPrint($Ca,$M[$ke]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($M||$G){$pc=true;if($_GET["page"]!="last"){if($_==""||(count($M)<$_&&($M||!$G)))$Mc=($G?$G*$_:0)+count($M);elseif($y!="sql"||!$ud){$Mc=($ud?false:found_rows($R,$Z));if($Mc<max(1e4,2*($G+1)*$_))$Mc=reset(slow_query(count_rows($b,$Z,$ud,$s)));else$pc=false;}}$Ue=($_!=""&&($Mc===false||$Mc>$_||$G));if($Ue){echo(($Mc===false?count($M)+1:$Mc-$G*$_)>$_?'<p><a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" class="loadmore">'.lang(246).'</a>'.script("qsl('a').onclick = partial(selectLoadMore, ".(+$_).", '".lang(247)."…');",""):''),"\n";}}echo"<div class='footer'><div>\n";if($M||$G){if($Ue){$Wd=($Mc===false?$G+(count($M)>=$_?2:1):floor(($Mc-1)/$_));echo"<fieldset>";if($y!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".lang(248)."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".lang(248)."', '".($G+1)."')); return false; };"),pagination(0,$G).($G>5?" …":"");for($t=max(1,$G-4);$t<min($Wd,$G+5);$t++)echo
pagination($t,$G);if($Wd>0){echo($G+5<$Wd?" …":""),($pc&&$Mc!==false?pagination($Wd,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Wd'>".lang(249)."</a>");}}else{echo"<legend>".lang(248)."</legend>",pagination(0,$G).($G>1?" …":""),($G?pagination($G,$G):""),($Wd>$G?pagination($G+1,$G).($Wd>$G+1?" …":""):"");}echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(250)."</legend>";$Ob=($pc?"":"~ ").$Mc;echo
checkbox("all",1,0,($Mc!==false?($pc?"":"~ ").lang(145,$Mc):""),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Ob' : checked); selectCount('selected2', this.checked || !checked ? '$Ob' : checked);")."\n","</fieldset>\n";if($c->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(242),'</legend><div>
<input type="submit" value="',lang(15),'"',($_GET["modify"]?'':' title="'.lang(238).'"'),'>
</div></fieldset>
<fieldset><legend>',lang(120),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',lang(11),'">
<input type="submit" name="clone" value="',lang(234),'">
<input type="submit" name="delete" value="',lang(19),'">',confirm(),'</div></fieldset>
';}$Kc=$c->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Kc['sql']);break;}}if($Kc){print_fieldset("export",lang(63)." <span id='selected2'></span>");$Se=$c->dumpOutput();echo($Se?html_select("output",$Se,$na["output"])." ":""),html_select("format",$Kc,$na["format"])," <input type='submit' name='export' value='".lang(63)."'>\n","</div></fieldset>\n";}$c->selectEmailPrint(array_filter($dc,'strlen'),$e);}echo"</div></div>\n";if($c->selectImportPrint()){echo"<div>","<a href='#import'>".lang(62)."</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"),$na["format"],1);echo" <input type='submit' name='import' value='".lang(62)."'>","</span>","</div>";}echo"<input type='hidden' name='token' value='$T'>\n","</form>\n",(!$s&&$N?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$vg=isset($_GET["status"]);page_header($vg?lang(112):lang(111));$Eh=($vg?show_status():show_variables());if(!$Eh)echo"<p class='message'>".lang(13)."\n";else{echo"<table>\n";foreach($Eh
as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($vg?"status":"set")."'>".h($z)."</code>","<td>".h($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Dg=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$E=>$R){json_row("Comment-$E",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$E",h($R[$z]));foreach($Dg+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$E",($z=="Rows"&&$X&&$R["Engine"]==($y=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Dg[$z]))$Dg[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$E");}}}foreach($Dg
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($c->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Lg=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Lg&&!$m&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D=lang(251);}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(252);}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(253);}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D=lang(254);}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D=lang(255);}elseif(!$_POST["tables"])$D=lang(10);elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?lang(27).": ".h(DB):lang(191).": ".h($_GET["ns"])),$m,true);if($c->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(256)."</h3>\n";$Kg=tables_list();if(!$Kg)echo"<p class='message'>".lang(10)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(257)." <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(46)."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$l->convertOperator("LIKE %%");search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),'<th>'.lang(124),'<td>'.lang(258).doc_link(array('sql'=>'storage-engines.html')),'<td>'.lang(116).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.lang(259).doc_link(array('sql'=>'show-table-status.html',)),'<td>'.lang(260).doc_link(array('sql'=>'show-table-status.html',)),'<td>'.lang(261).doc_link(array('sql'=>'show-table-status.html')),'<td>'.lang(41).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.lang(262).doc_link(array('sql'=>'show-table-status.html',)),(support("comment")?'<td>'.lang(40).doc_link(array('sql'=>'show-table-status.html',)):''),"</thead>\n";$S=0;foreach($Kg
as$E=>$U){$Hh=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$E);echo'<tr><td>'.checkbox(($Hh?"views[]":"tables[]"),$E,in_array($E,$Lg,true),"","","",$u),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($E)."' title='".lang(32)."' id='$u'>".h($E).'</a>':h($E));if($Hh){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($E).'" title="'.lang(33).'">'.(preg_match('~materialized~i',$U)?lang(122):lang(123)).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($E).'" title="'.lang(31).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(34)),"Index_length"=>array("indexes",lang(126)),"Data_free"=>array("edit",lang(35)),"Auto_increment"=>array("auto_increment=1&create",lang(34)),"Rows"=>array("select",lang(31)),)as$z=>$A){$u=" id='$z-".h($E)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($E)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($E)."'>");}$S++;}echo(support("comment")?"<td id='Comment-".h($E)."'>":""),"\n";}echo"<tr><td><th>".lang(235,count($Kg)),"<td>".h($y=="sql"?$g->result("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align='right' id='sum-$z'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Ch="<input type='submit' value='".lang(263)."'> ".on_help("'VACUUM'");$Fe="<input type='submit' name='optimize' value='".lang(264)."'> ".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".lang(120)." <span id='selected'></span></legend><div>".($y=="sqlite"?$Ch:($y=="pgsql"?$Ch.$Fe:($y=="sql"?"<input type='submit' value='".lang(265)."'> ".on_help("'ANALYZE TABLE'").$Fe."<input type='submit' name='check' value='".lang(266)."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".lang(267)."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".lang(268)."'> ".on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".lang(121)."'>".on_help("'DROP TABLE'").confirm()."\n";$j=(support("scheme")?$c->schemas():$c->databases());if(count($j)!=1&&$y!="sqlite"){$k=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(269).": ",($j?html_select("target",$j,$k):'<input name="target" value="'.h($k).'" autocapitalize="off">')," <input type='submit' name='move' value='".lang(270)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(271)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(272)):""),"\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='$T'>\n","</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo'<p class="links"><a href="'.h(ME).'create=">'.lang(64)."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.lang(197)."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".lang(138)."</h3>\n";$Sf=routines();if($Sf){echo"<table class='odds'>\n",'<thead><tr><th>'.lang(178).'<td>'.lang(39).'<td>'.lang(214)."<td></thead>\n";foreach($Sf
as$L){$E=($L["SPECIFIC_NAME"]==$L["ROUTINE_NAME"]?"":"&name=".urlencode($L["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["SPECIFIC_NAME"]).$E).'">'.h($L["ROUTINE_NAME"]).'</a>','<td>'.h($L["ROUTINE_TYPE"]),'<td>'.h($L["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["SPECIFIC_NAME"]).$E).'">'.lang(129)."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(213).'</a>':'').'<a href="'.h(ME).'function=">'.lang(212)."</a>\n";}if(support("event")){echo"<h3 id='events'>".lang(139)."</h3>\n";$M=get_rows("SHOW EVENTS");if($M){echo"<table>\n","<thead><tr><th>".lang(178)."<td>".lang(273)."<td>".lang(203)."<td>".lang(204)."<td></thead>\n";foreach($M
as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?lang(274)."<td>".$L["Execute at"]:lang(205)." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.lang(129).'</a>';}echo"</table>\n";$nc=$g->result("SELECT @@event_scheduler");if($nc&&$nc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($nc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.lang(202)."</a>\n";}if($Kg)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();
+3
View File
@@ -17,6 +17,9 @@ RUN cd /build \
FROM scratch
ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz /
LABEL version="0.1"
LABEL maintainer="KeyZox"
RUN mkdir -p /backup \
&& mkdir -p /source \
&& mkdir /docker-entrypoint.d \
+15
View File
@@ -0,0 +1,15 @@
FROM scratch
ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz /
LABEL version="0.1"
LABEL maintainer="KeyZox"
RUN apk update \
&& apk add redis
RUN echo "maxmemory 256mb" >> /etc/redis.conf \
&& echo "maxmemory-policy allkeys-lru" >> /etc/redis.conf \
&& sed -i -r "s/bind 127.0.0.1//" /etc/redis.conf
EXPOSE 6379
CMD [ "redis-server", "--protected-mode", "no"]
+18
View File
@@ -0,0 +1,18 @@
FROM scratch
ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz /
RUN apk add vsftpd
COPY docker/bonus/vsftpd/entry.sh /docker-entrypoint
COPY docker/bonus/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf
RUN chmod +x /docker-entrypoint
EXPOSE 21
EXPOSE 30000-30100
VOLUME /var/ftp
STOPSIGNAL SIGTERM
ENTRYPOINT [ "/docker-entrypoint" ]
CMD [ "vsftpd", "/etc/vsftpd/vsftpd.conf" ]
+28
View File
@@ -0,0 +1,28 @@
#!/bin/sh
# Environment variables:
# VSFTPD_USER: Username for the vsftpd user
# VSFTPD_PASSWORD: Password for the vsftpd user
DONE_FILE=/vsftpd.ok
if [ -f "${DONE_FILE}" ]; then
echo "[*] vsftpd already setup, skipping"
else
echo "[*] Creating vsftpd user"
adduser -D $VSFTPD_USER
echo "$VSFTPD_USER:$VSFTPD_PASS" | /usr/sbin/chpasswd > /dev/null
echo "[*] Giving vsftpd user ownership of WordPress data directory"
chown -R "$VSFTPD_USER:$VSFTPD_USER" /var/ftp
echo $VSFTPD_USER | tee -a /etc/vsftpd/vsftpd.userlist > /dev/null
touch ${DONE_FILE}
fi
mkdir /var/run/vsftpd/empty -p
echo "[*] Starting '$@'"
exec "$@"
+25
View File
@@ -0,0 +1,25 @@
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
ftpd_banner=Welcome to your WordPress FTP server.
chroot_local_user=YES
allow_writeable_chroot=YES
user_sub_token=$USER
local_root=/var/ftp
listen=YES
listen_port=21
listen_address=0.0.0.0
seccomp_sandbox=NO
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30100
userlist_enable=YES
userlist_file=/etc/vsftpd/vsftpd.userlist
userlist_deny=NO
+1 -1
View File
@@ -44,4 +44,4 @@ WORKDIR /var/lib/mysql
EXPOSE 3306
CMD [ "mariadbd", "--user=mysql" ]
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=1s --start-interval=2s CMD /docker-healthcheck
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=3s --start-interval=2s CMD /docker-healthcheck
+2 -2
View File
@@ -29,7 +29,7 @@ RUN set -x \
php84 php84-mysqli php84-fpm php84-json \
php84-zlib php84-session php84-dom \
php84-xmlreader php84-pdo php84-gd \
php84-opcache php84-ctype \
php84-opcache php84-ctype php84-tokenizer \
&& curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wp \
@@ -65,4 +65,4 @@ STOPSIGNAL SIGQUIT
EXPOSE 9000
CMD [ "php-fpm84", "-F" ]
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=3s --start-interval=2s CMD cgi-fcgi -bind -connect 127.0.0.1:${PHP_PORT:-9000} || exit 1
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=7s --start-interval=2s CMD cgi-fcgi -bind -connect 127.0.0.1:${PHP_PORT:-9000} || exit 1