<?php
/** Adminer - Compact database management
* @link https://www.adminer.org/
* @author Jakub Vrana, https://www.vrana.cz/
* @copyright 2007 Jakub Vrana
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 5.5.0
*/namespace
Adminer;const
VERSION="5.5.0";error_reporting(24575);set_error_handler(function($Dc,$Fc){return!!preg_match('~^Undefined (array key|offset|index)~',$Fc);},E_WARNING|E_NOTICE);$bd=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($bd||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$xj=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($xj)$$X=$xj;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection($g=null){return($g?:Db::$instance);}function
adminer(){return
Adminer::$instance;}function
driver(){return
Driver::$instance;}function
connect(){$Hb=adminer()->credentials();$J=Driver::connect($Hb[0],$Hb[1],$Hb[2]);return(is_object($J)?$J:null);}function
idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$Ke=substr($u,-1);return
str_replace($Ke.$Ke,$Ke,substr($u,1,-1));}function
q($Q){return
connection()->quote($Q);}function
idx($wa,$x,$k=null){return($wa&&array_key_exists($x,$wa)?$wa[$x]:$k);}function
number($X){return
preg_replace('~[^0-9]+~','',$X);}function
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
remove_slashes(array$Nj,$bd=false){$J=array();foreach($Nj
as$x=>$X)$J[stripslashes($x)]=(is_array($X)?remove_slashes($X,$bd):($bd?$X:stripslashes($X)));return$J;}function
bracket_escape($u,$Ea=false){static$gj=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($u,($Ea?array_flip($gj):$gj));}function
min_version($Qj,$Xe="",$g=null){$g=connection($g);$Yh=$g->server_info;if($Xe&&preg_match('~([\d.]+)-MariaDB~',$Yh,$B)){$Yh=$B[1];$Qj=$Xe;}return$Qj&&version_compare($Yh,$Qj)>=0;}function
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
ini_bool($le){$X=ini_get($le);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
ini_bytes($le){$X=ini_get($le);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
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
set_password($Pj,$N,$V,$G){$_SESSION["pwds"][$Pj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function
get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
get_val($H,$m=0,$vb=null){$vb=connection($vb);$I=$vb->query($H);if(!is_object($I))return
false;$K=$I->fetch_row();return($K?$K[$m]:false);}function
get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
get_key_vals($H,$g=null,$bi=true){$g=connection($g);$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($bi)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
get_rows($H,$g=null,$l="<p class='error'>"){$vb=connection($g);$J=array();$I=$vb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$J;}function
unique_array($K,array$w){foreach($w
as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])&&!$v["partial"]){$J=array();foreach($v["columns"]as$x){if(!isset($K[$x]))continue
2;$J[$x]=$K[$x];}return$J;}}}function
escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
idf_escape($x);}function
where(array$Z,array$n=array()){$J=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$Yc=$m["type"];$J[]=$d.(JUSH=="sql"&&$Yc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$m["full_type"])?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Yc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Yc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$J[]=escape_key($x)." IS NULL";return
implode(" AND ",$J);}function
where_check($X,array$n=array()){parse_str($X,$Ya);remove_slashes(array(&$Ya));return
where($Ya,$n);}function
where_link($s,$d,$Y,$ag="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$ag:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
convert_fields(array$e,array$n,array$M=array()){$J="";foreach($e
as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$xa=convert_field($n[$x]);if($xa)$J
.=", $xa AS ".idf_escape($x);}return$J;}function
cookie_path(){return
strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),array(";"=>"%3B",","=>"%2C"));}function
cookie($C,$Y,$Re=2592000){header("Set-Cookie: $C=".rawurlencode($Y).($Re?"; expires=".gmdate("D, d M Y H:i:s",time()+$Re)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
get_url($Dj,$Bb){$J=@file_get_contents($Dj,false,$Bb);if(function_exists('http_get_last_response_headers'))$http_response_header=http_get_last_response_headers();return
array($J,(preg_match('~^HTTP/[\d.]+ (\d+)~',$http_response_header[0],$B)?$B[1]:''),);}function
get_settings($Db){parse_str($_COOKIE[$Db],$ci);return$ci;}function
get_setting($x,$Db="adminer_settings",$k=null){return
idx(get_settings($Db),$x,$k);}function
save_settings(array$ci,$Db="adminer_settings"){$Y=http_build_query($ci+get_settings($Db));cookie($Db,$Y);$_COOKIE[$Db]=$Y;}function
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
stop_session($jd=false){$Gj=ini_bool("session.use_cookies");if(!$Gj||$jd){session_write_close();if($Gj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Pj,$N,$V,$j=null){$Cj=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Pj=='mssql'||$Pj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Cj,$B);return"$B[1]?".(sid()?SID."&":"").($Pj!="server"||$N!=""?urlencode($Pj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($B[2]?"&$B[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($A,$nf=null){if($nf!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$nf;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function
query_redirect($H,$A,$nf,$mh=true,$Kc=true,$Tc=false,$Ti=""){if($Kc){$ri=microtime(true);$Tc=!connection()->query($H);$Ti=format_time($ri);}$li=($H?adminer()->messageQuery($H,$Ti,$Tc):"");if($Tc){adminer()->error
.=error().$li.script("messagesPrint();")."<br>";return
false;}if($mh)redirect($A,$nf.$li);return
true;}class
Queries{static$queries=array();static$start=0;}function
queries($H){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$H:(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";");return
connection()->query($H);}function
apply_queries($H,array$T,$Gc='Adminer\table'){foreach($T
as$R){if(!queries("$H ".$Gc($R)))return
false;}return
true;}function
queries_redirect($A,$nf,$mh){$hh=implode("\n",Queries::$queries);$Ti=format_time(Queries::$start);return
query_redirect($hh,$A,$nf,$mh,false,!$mh,$Ti);}function
format_time($ri){return
sprintf('%.3f s',max(0,microtime(true)-$ri));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($xg=""){return
substr(preg_replace("~(?<=[?&])($xg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_file($x,$Tb=false,$Zb=""){$ad=$_FILES[$x];if(!$ad)return
null;foreach($ad
as$x=>$X)$ad[$x]=(array)$X;$J='';foreach($ad["error"]as$x=>$l){if($l)return$l;$C=$ad["name"][$x];$bj=$ad["tmp_name"][$x];$_b=file_get_contents($Tb&&preg_match('~\.gz$~',$C)?"compress.zlib://$bj":$bj);if($Tb){$ri=substr($_b,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$ri))$_b=iconv("utf-16","utf-8",$_b);elseif($ri=="\xEF\xBB\xBF")$_b=substr($_b,3);}$J
.=$_b;if($Zb)$J
.=(preg_match("($Zb\\s*\$)",$_b)?"":$Zb)."\n\n";}return$J;}function
upload_error($l){$hf=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Wgranie pliku było niemożliwe.'.($hf?" ".sprintf('Maksymalna wielkość pliku to %sB.',$hf):""):'Plik nie istnieje.');}function
repeat_pattern($Jg,$y){return
str_repeat("$Jg{0,65535}",$y/65535)."$Jg{0,".($y%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
format_number($X){return
strtr(number_format($X,0,".",' '),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace('~\W~i','-',$X);}function
table_status1($R,$Uc=false){$J=table_status($R,$Uc);return($J?reset($J):array("Name"=>$R));}function
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$J[$X][]=$p;}return$J;}function
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($x==driver()->primary),);}return$J;}function
dump_headers($Rd,$yf=false){$J=adminer()->dumpHeaders($Rd,$yf);$tg=$_POST["output"];if($tg!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Rd).".$J".($tg!="file"&&preg_match('~^[0-9a-z]+$~',$tg)?".$tg":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
dump_csv(array$K){$pj=$_POST["format"]=="tsv";foreach($K
as$x=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($pj?'\t':'[,;]|^$').'~',$X))$K[$x]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($pj?"\t":";")),$K)."\r\n";}function
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function
get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$J=dirname($o);unlink($o);}}return$J;}function
file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;@chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function
file_write_unlock($q,$Nb){rewind($q);fwrite($q,$Nb);ftruncate($q,strlen($Nb));file_unlock($q);}function
file_unlock($q){flock($q,LOCK_UN);fclose($q);}function
first(array$wa){return
reset($wa);}function
password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$J=stream_get_contents($q);if(!$J){$J=rand_string();file_write_unlock($q,$J);}else
file_unlock($q);return$J;}function
rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function
select_value($X,$_,array$m,$Si){if(is_array($X)){$J="";if(array_filter($X,'is_array')==array_values($X)){$Ee=array();foreach($X
as$W)$Ee+=array_fill_keys(array_keys($W),null);foreach(array_keys($Ee)as$Ce)$J
.="<th>".h($Ce);foreach($X
as$W){$J
.="<tr>";foreach(array_merge($Ee,$W)as$Kj)$J
.="<td>".select_value($Kj,$_,$m,$Si);}}else{foreach($X
as$Ce=>$W)$J
.="<tr>".($X!=array_values($X)?"<th>".h($Ce):"")."<td>".select_value($W,$_,$m,$Si);}return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$X=driver()->value($X,$m);$J=adminer()->editVal($X,$m);if($J!==null){if(!is_utf8($J))$J="\0";elseif($Si!=""&&is_shortable($m))$J=shorten_utf8($J,max(0,+$Si));else$J=h($J);}return
adminer()->selectVal($J,$_,$m,$X);}function
is_blob(array$m){return
preg_match('~blob|bytea|raw|file~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),'Typy użytkownika',array()));}function
is_mail($uc){$ya='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$hc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Jg="$ya+(\\.$ya+)*@($hc?\\.)+$hc";return
is_string($uc)&&preg_match("(^$Jg(,\\s*$Jg)*\$)i",$uc);}function
is_url($Q){$hc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^((https?):)?//($hc?\\.)+$hc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
is_shortable(array$m){return!preg_match('~'.number_type().'|date|time|year~',$m["type"]);}function
host_port($N){return(preg_match('~^(\[(.+)]|([^:]*)):([^:]+)$~',$N,$B)?array($B[2].$B[3],$B[4]):array($N,''));}function
count_rows($R,array$Z,$ve,array$xd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($ve&&(JUSH=="sql"||count($xd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$xd).")$H":"SELECT COUNT(*)".($ve?" FROM (SELECT 1$H GROUP BY ".implode(", ",$xd).") x":$H));}function
slow_query($H){$j=adminer()->database();$Ui=adminer()->queryTimeout();$gi=driver()->slowQuery($H,$Ui);$g=null;if(!$gi&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$Fe=get_val(connection_id(),0,$g);echo
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Fe&token=".get_token()."'); }, 1000 * $Ui);");}}ob_flush();flush();$J=@get_key_vals(($gi?:$H),$g,false);if($g){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
get_token(){$kh=rand(1,1e6);return($kh^$_SESSION["token"]).":$kh";}function
verify_token(){list($cj,$kh)=explode(":",$_POST["token"]);return($kh^$_SESSION["token"])==$cj&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"));}function
lzw_decompress($Ka){$ec=256;$La=8;$ib=array();$xh=0;$yh=0;for($s=0;$s<strlen($Ka);$s++){$xh=($xh<<8)+ord($Ka[$s]);$yh+=8;if($yh>=$La){$yh-=$La;$ib[]=$xh>>$yh;$xh&=(1<<$yh)-1;$ec++;if($ec>>$La)$La++;}}$dc=range("\0","\xFF");$J="";$Zj="";foreach($ib
as$s=>$hb){$tc=$dc[$hb];if(!isset($tc))$tc=$Zj.$Zj[0];$J
.=$tc;if($s)$dc[]=$Zj.$tc[0];$Zj=$tc;}return$J;}function
script($ii,$fj="\n"){return"<script".nonce().">$ii</script>$fj";}function
script_src($Dj,$Wb=false){return"<script src='".h($Dj)."'".nonce().($Wb?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
input_hidden($C,$Y=""){return"<input type='hidden' name='".h($C)."' value='".h($Y)."'>\n";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($Q){return
str_replace(array('&','<','"',"'","\0"),array('&amp;','&lt;','&quot;','&#039;','&#0;'),$Q);}function
nl_br($Q){return
str_replace("\n","<br>",$Q);}function
checkbox($C,$Y,$bb,$He="",$Zf="",$fb="",$Je=""){$J="<input type='checkbox' name='$C' value='".h($Y)."'".($bb?" checked":"").($Je?" aria-labelledby='$Je'":"").">".($Zf?script("qsl('input').onclick = function () { $Zf };",""):"");return($He!=""||$fb?"<label".($fb?" class='$fb'":"").">$J".h($He)."</label>":$J);}function
optionlist($eg,$Qh=null,$Hj=false){$J="";foreach($eg
as$Ce=>$W){$fg=array($Ce=>$W);if(is_array($W)){$J
.='<optgroup label="'.h($Ce).'">';$fg=$W;}foreach($fg
as$x=>$X)$J
.='<option'.($Hj||is_string($x)?' value="'.h($x).'"':'').($Qh!==null&&($Hj||is_string($x)?(string)$x:$X)===$Qh?' selected':'').'>'.h($X);if(is_array($W))$J
.='</optgroup>';}return$J;}function
html_select($C,array$eg,$Y="",$Yf="",$Je=""){static$He=0;$Ie="";if(!$Je&&substr($eg[""],0,1)=="("){$He++;$Je="label-$He";$Ie="<option value='' id='$Je'>".h($eg[""]);unset($eg[""]);}return"<select name='".h($C)."'".($Je?" aria-labelledby='$Je'":"").">".$Ie.optionlist($eg,$Y)."</select>".($Yf?script("qsl('select').onchange = function () { $Yf };",""):"");}function
html_radios($C,array$eg,$Y="",$Uh=""){$J="";foreach($eg
as$x=>$X)$J
.="<label><input type='radio' name='".h($C)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>$Uh";return$J;}function
confirm($nf="",$Rh="qsl('input')"){return
script("$Rh.onclick = () => confirm('".($nf?js_escape($nf):'Czy na pewno?')."');","");}function
print_fieldset($t,$Pe,$Tj=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$Pe</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($Tj?"":" class='hidden'").">\n";}function
bold($Na,$fb=""){return($Na?" class='active $fb'":($fb?" class='$fb'":""));}function
js_escape($Q){return
addcslashes($Q,"\r\n'\\/");}function
pagination($E,$Kb){return" ".($E==$Kb?$E+1:'<a href="'.h(remove_from_uri("page|next").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
hidden_fields(array$eh,array$Vd=array(),$Vg=''){$J=false;foreach($eh
as$x=>$X){if(!in_array($x,$Vd)){if(is_array($X))hidden_fields($X,array(),$x);else{$J=true;echo
input_hidden(($Vg?$Vg."[$x]":$x),$X);}}}return$J;}function
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
file_input($ne){$cf="max_file_uploads";$df=ini_get($cf);$Aj="upload_max_filesize";$Bj=ini_get($Aj);return(ini_bool("file_uploads")?$ne.script("qsl('input[type=\"file\"]').onchange = partialArg(fileChange, "."$df, '".sprintf('Zwiększ %s.',"$cf = $df")."', ".ini_bytes("upload_max_filesize").", '".sprintf('Zwiększ %s.',"$Aj = $Bj")."')"):'Wgrywanie plików jest wyłączone.');}function
enum_input($U,$za,array$m,$Y,$xc=""){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$af);$Vg=($m["type"]=="enum"?"val-":"");$bb=(is_array($Y)?in_array("null",$Y):$Y===null);$J=($m["null"]&&$Vg?"<label><input type='$U'$za value='null'".($bb?" checked":"")."><i>$xc</i></label>":"");foreach($af[1]as$X){$X=stripcslashes(str_replace("''","'",$X));$bb=(is_array($Y)?in_array($Vg.$X,$Y):$Y===$X);$J
.=" <label><input type='$U'$za value='".h($Vg.$X)."'".($bb?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$J;}function
input(array$m,$Y,$r,$Ca=false){$C=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r)$r="json";$Ae=($r=="json"||preg_match('~^jsonb?$~',$m["full_type"]));if($Ae&&$Y!=''&&(JUSH!="pgsql"||$m["type"]!="json"))$Y=json_encode(is_array($Y)?$Y:json_decode($Y),128|64|256);$wh=(JUSH=="mssql"&&$m["auto_increment"]);if($wh&&!$_POST["save"])$r=null;$sd=(isset($_GET["select"])||$wh?array("orig"=>'bez zmian'):array())+adminer()->editFunctions($m);$Cc=driver()->enumLength($m);if($Cc){$m["type"]="enum";$m["length"]=$Cc;}$za=" name='fields[$C]".($m["type"]=="enum"||$m["type"]=="set"?"[]":"")."'".($Ca?" autofocus":"");echo
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
h($sd[""])."<td>".adminer()->editInput($R,$m,$za,$Y);else{$Ed=(in_array($r,$sd)||isset($sd[$r]));echo(count($sd)>1?"<select name='function[$C]'>".optionlist($sd,$r===null||$Ed?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($sd))).'<td>';$ne=adminer()->editInput($R,$m,$za,$Y);if($ne!="")echo$ne;elseif(preg_match('~bool~',$m["type"]))echo"<input type='hidden'$za value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$za value='1'>";elseif($m["type"]=="set")echo
enum_input("checkbox",$za,$m,(is_string($Y)?explode(",",$Y):$Y));elseif(is_blob($m)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif($Ae)echo"<textarea$za cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($Qi=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($Qi&&JUSH!="sqlite")$za
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$za
.=" cols='30' rows='$L'";}echo"<textarea$za>".h($Y).'</textarea>';}else{$rj=driver()->types();$jf=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$B)?((preg_match("~binary~",$m["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$m["unsigned"]?1:0)):($rj[$m["type"]]?$rj[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$jf+=7;echo"<input".((!$Ed||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($jf?" data-maxlength='$jf'":"").(preg_match('~char|binary~',$m["type"])&&$jf>20?" size='".($jf>99?60:40)."'":"")."$za>";}echo
adminer()->editHint($R,$m,$Y);$cd=0;foreach($sd
as$x=>$X){if($x===""||!$X)break;$cd++;}if($cd&&count($sd)>1)echo
script("qsl('td').oninput = partial(skipOriginal, $cd);");}}function
process_input(array$m){$u=bracket_escape($m["field"]);$r=idx($_POST["function"],$u);if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?idf_escape($m["field"]):false);if($r=="NULL")return"NULL";if(is_blob($m)&&ini_bool("file_uploads")){$ad=get_file("fields-$u");if(!is_string($ad))return
false;return
driver()->quoteBinary($ad);}$Y=idx($_POST["fields"],$u);if($Y===null)return
false;if($m["type"]=="enum"||driver()->enumLength($m)){$Y=idx($Y,0);if($Y=="orig"||!$Y)return
false;if($Y=="null")return"NULL";$Y=substr($Y,4);}if($m["auto_increment"]&&$Y=="")return
null;if($m["type"]=="set")$Y=implode(",",(array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}return
adminer()->processInput($m,$Y,$r);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Th="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=adminer()->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$ah="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$Th<li>".($I?$ah:"<p class='error'>$ah: ".error())."\n";$Th="";}}}echo($Th?"<p class='message'>".'Brak tabel.':"</ul>")."\n";}function
on_help($ob,$ei=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $ob, $ei) }, onmouseout: helpMouseout});","");}function
edit_form($R,array$n,$K,$_j,$l=''){$Di=adminer()->tableName(table_status1($R,true));page_header(($_j?'Edytuj':'Dodaj'),$l,array("select"=>array($R,$Di)),$Di);adminer()->editRowPrint($R,$n,$K,$_j);if($K===false){echo"<p class='error'>".'Brak rekordów.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";$rc=false;if(!$n)echo"<p class='error'>".'Brak uprawnień do edycji tej tabeli.'."\n";else{echo"<table class='layout nowrap'>".script("qsl('table').onkeydown = editingKeydown;");$Ca=!$_POST;foreach($n
as$C=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($C));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$th))$k=$th[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($K!==null?($K[$C]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($K[$C])?implode(",",$K[$C]):(is_bool($K[$C])?+$K[$C]:$K[$C])):(!$_j&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$m);if(($_j&&!isset($m["privileges"]["update"]))||$m["generated"])echo"<td class='function'><td>".select_value($Y,'',$m,null);else{$rc=true;$r=($_POST["save"]?idx($_POST["function"],$C,""):($_j&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$_j&&$Y==$m["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$m["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($m["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}if($Ca!==false)$Ca=($m["auto_increment"]||$r=="now"||$r=="uuid"?null:true);input($m,$Y,$r,$Ca);if($Ca)$Ca=false;}}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;","")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>";echo"</table>\n";}echo"<p>\n";if($rc){echo"<input type='submit' value='".'Zapisz zmiany'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($_j?'Zapisz i kontynuuj edycję':'Zapisz i dodaj następny')."' title='Ctrl+Shift+Enter'>\n",($_j?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Zapisywanie'."…', this); };"):"");}echo($_j?"<input type='submit' name='delete' value='".'Usuń'."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
shorten_utf8($Q,$y=80,$xi=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$y).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$y).")($)?)",$Q,$B);return
h($B[1]).$xi.(isset($B[2])?"":"<i>…</i>");}function
icon($Qd,$C,$Pd,$Wi){return"<button type='submit' ".($C?"name='$C'":"draggable='true'")." title='".h($Wi)."' class='icon icon-$Qd".($C?"":" jsonly")."'><span>$Pd</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}@ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgб\"PimcQCa	2ód<fa:;NBqR;1Lf9u7&)l;3J/CQXr2Mai0)e:LuÝh-923li7mZw4њ<-̴!U,Févt2S,a҇FVXaNq)-ǜh:n59Y;j-_9krٓ;.tTqo0{y\rHnGSZh;i^uxWΒC@k=b/A0+(l\\x:\rb8\00!\0F\nB͎(3\r\\Ȅa'I|(i\n\r4Og@4C@@!QB	°c¯q,\r1Eh&2PZiGH9G\"v4rDR\npJ-A|/.cDu:,=R]U5mVkLLQ@-\\@9%SrMPDIa\r(YY\\@Xp:plLC O,\r2]7?m06pTaҥC;_˗yȴd>bnnܣ3X8\r[ˀ-)i>V[Yy&L3#X|	X\\ù`C#H22.#Z`<sÒ\0uh־M_\niZeO/CӒ_`31>=k3R/;/d\0ڵm7/AXq.sL :\$Fw8߾~Hj\"Գ7gSFLίQ_O'W]c=51X~7;i\r*\nJS1ZctAV86fdy;Y]zIpc3Y]}@\$.+1'>ZcpdGL#k8PzYAuv]s9_Aq:\nKhB;XbAHq,CI`jS[ˌ1Vr;pB)#鐉;4H/*<3L!ZXèrEdRH;lf\ns\$K`}Ք7jx`d%j]4YHbaWYx.2	LJyzeABY%T\nk00JMeeNދ8@9תWi@-\0bKK4 w3̘DڊVTBTy\\LS0\\ :~2EeIMe('HMNUrA@<QT\0)ϝ:]\nE6A22պ?\$ΚFC1VV'j|RLaʜU\rXe饻70_s	z8N	\"@#9dVL;H64XnaK ^	)2\nYv]>G\\u]ZF`D\r \njEo!!K73.Nm]:s]яLv=	,MTfyv7A23k\$JE]uEջ>n%䯨YOJfSsʻa8`wW[LY޲_2`)i,f#Mn8s-AتDwTNɻj%ix;`L*92KlS;AqZԐl;B1AJb)54t\r\rR^SjWzśM9{kIv\nLCJ7GSf8ٔf5BLH{~` [`뀏q2FB|hvkU{~7ˀ`pmuK(k{uD\rzݶ>f5]E4|Ә3ŎgֿfDNc(f/wPsQNuH ;m!\0V9H\n:f4ܡJ\\i1[Zo1aQG&,k׷ējbl0ufp1RIz[]wrNvdIznn8`{;31I\r]s'ZRwn\0ݳ ]qę}SNU<|9¤}i2x~bSەc5f&m:^nhdauMr?rxe{`˾_>RG<LsޡQo:񈰾V7L3COMȜ2e0NN.l9fhh2}+B;T0rxKf9&C,=(j,/@0^P<o>CH`DXOk7\$KΚM̝,\0C#\rƄ\0PZro^g	\\FdO\$)vbx/P29@Hnb-d1 Z\n\0t  5. \$olX\n@`\r	\r  	 	@@\n `	\0j@7qM\0@`	 \r\0i``\n\0\n \0il@'::	\0 	b1|\rP\rAPHpqq#q+3;CI71U\rQa@	 \r`\r\r@\nh\n\0`	@@	ɐn\rh>\r\0@%-d1E 1K \rq6	 !qf`\n`\n@fh\0` \n@	F`p14`Cd'0B>*\"NI2\0\r\0`QL	3BT1=+R2\rJ\nT	H*@	`\n  	iEqL\r \r9hN \rNdS]:\\<@\\}<3C\n}Ie<͸>mI;fhsOhbYE	>so@jF?s.~d;G2U3:\\A*t/C4\nB谐>B0	\"G!EMsAh#mC4A<GE\$cDƊ-\":O`Pv^W@ttDpDP1>F<\r*\$4x'	MԨ[i	NH.fo:,>Tl/I˺M<OD\0ڠZ@r| ޅMHžoLGRTW\".f+FWG%PfjCB`ڨUUh1]5O`/x5C\riZmZ/.2iXiR\rpT	{LmGiXV?˧XEHt??1DKC4mA^t[uH]/GLPXV-C5Ua3Brw`P %Ն?t3W!JT,:+VNEH%MΕ\0001VXt\"BuWRi@6nrsH6)hV/gEcVFitXJ<V4DoL*Q ( .k\"\"&%!bF \$ܱ@`b(vUm'4\rd%/\"@r( ?n\"hb\r\$c b2(DH+`ZwrmK\n4I-n0\nBn%RUn#km6\"n@nvw)nbw{tWD=vzHBnȪc\nlW=\0\r%`]w^ʀ}\$}C4̀x`Ԡ~wnw}7~\0Z@7πiJ6wC!~^T蝗{Ϙ6Oוx=#~\r+DX+zoW=X8+8\n=+8*ƀXƃYalVyń\"ppww8\r&X^`|I~/c-@ߍ}sXOl*HJ4M]mozV|j\$G|Yյd?EƪSw7D`ޓ&)wb߄/4酔م7xN7_Xߗyl%p|cnv}1}y5 @Yh(q±Y=Yўxy]\0%wX+\\m9Ow62âZq:}x	fsZ/sX9';yq3`ƙSCzjzo~3{KX/*ͨٝ@mZsz\r4ECe˨yIZz˩Xs9wyLiyŎŌX/Z\"Ϥkct\r	t:W{@1`[*/C\r##-mwψ%\0005]U~+JͶ5u\\7F1:Ģ>ɞ8流[~۝ħG;}wYfSqy[Ͻx@ev?ec|@dك[#fCZďG.;;R");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgh0LЁd91S!	F!\"-6NbdGg:;Nr)c7\r(Hb81s9k\rc)m8OVAc1c34Of*-P1r416d2ցo#3Bf#	g9Φ،fc\rIb6EC&,bum7aVs#m!hrv\\3\rL:SAdk5naF3e6fSyr!L-K,3L@J˲*J쵣	bc99@H8\\6>`Ŏ;A<T'p&qqE4\rlh<5#pR #I%fBIܲ>ʫ29<Cj27j8jc(n?(a\0@5*3:δ60-AlLP4@ɰ\$H4n311t0͙9WO!rH9Q96F<7\r-xC\n @:\$iضm4Kid{\n6\rxhˋ#^'4V@a<#h0S-c9+pa2cyhBO\$9wiXɔVY9*rHtm	@b|@/l\$z+%p2l.7;&{mXC<l96x9m7R0\\4P)AoxqO#f[;6~P\raTGT0uޟ\n3\\ \\ʎJudCGPZ>d8ҨC?VdLL.(ti>,֜R+9iޞC\$#\"AChVb\n6T2ew\nf6m	!1'c;*eLRn\rG\$2S\$0a'l6&~Ad\$J\$s ȃB4j.RC̔Qj\"7\nXs!6=BȀ}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("':̢i11	4Q6a&:OAIe:NFD|!Cym2\"r<̱/C#:DbqSeJ˦Cܺ\n\nǱS\rZH\$RAܞS+XKvtdg:6EvXŞjmҩej2MB&ʮLC3Q0L-x\nDyNaPn:s͐(cL/(5{Qy4g-i4ڃf(bUko7&ä*ACb`.\r\nCh<\r)`إ`7CʒZX<Q1X@0dp9EQfF\r!(h)\np'#ČH(i*r&<#7K~# A:N6l,\rJP3!@2>CrhN](a0M326UE2'!<#3R<XCH7#n+a\$!2P0.wdr:YE!]<j@\\pl_\rZғTͩZs3\"~9j>WeQ:X/\"\$8X硉@4H:tL܌j~#8_Ax\$x{LEJ4'00<8>c(zX^5Dt;#K_v꩕u1\n`jn'\"Ir7U*!Ynjk@Ì+5)̄3CZB2HV`qæk]<{\r9|gr\\襜:B2781͍d=HLU}^NߔC*/|􊾓V`)8z:Rb8WA:\$2\r/BE~8iYtzX6ǰICQ7 3)6\00N\r갦 \r0ѯ 9~'%Dw'cdi'ta&r11?\\CmSɞ\$ж o&R,!.AHG\"tPv-&	30.	裃!iĕkJ7	:sO\0^'7^(`B(0nL9(\0\n[Uec)Fʛq2R5\r܀e}ܱh.iZ:AYED2@s1d<)H`تI1I\rZGRϔ/\$Oc\"*p'7`]@\\4BXzgABTQ3wc-sr_:բS@2 #Ė\nuP!Te6TaM)\0v(sVAZS<av(A%#&: `C)\r]MIC'/	PHXb\r\nYMzJFJP?JdBllDCS+-r1<w]v!)IKP4EslkV-kj,c,fRdC!&n0RJ2[3x3TB-Glls`hsV)W4SvC:nd-x` ®\$AP-kr^sASV?3E2X,KtSAq7\n^+%skG<aw	DdYڇQgbn\0A{濡9ùl.Hg(0TJ\$h-Bzm\nWY`!lc\0ϪÄՆMLxyk*Z3EU L-~?ii4[ iDZP)hZ\n5\"1tŦd/BrJcN[FժxK߭nDQS?Q\rL'!\nͅII%2萵Q;ǘ8mX-zIFF]t.H	r/[!#\r{̫pH\n4&3r*L臜{Ae\0L(*{kؘDJ_C:U2\0I0,\n;|xef0`1N`6>C){)3(t8dèO_DT^`H:c\0f<Y`f\\&x \nd+5U݇Oz{n-iFYb7vo%)Xh '7UIVwSR}dK_4 Wjnτ\0l\r\0.p@\0@Ȅ[PZIXكcbqtg2 \\i9< Z@i,`^N'uGBr'&\$F(/җ*uɄYiO	`ʑn:paPhnrM	\0кML,\$Nw)\0*l7GrlrQ	Os\"46 bXbӄoXbbeg\r `BВRhJ\"g\rTcj>I-zGolvu\rz\r	D9BK\r^\rY@,BЖL`^#\rwHpDJMXQ&lg&I\01 	P5&n0?gTs٠O!)`v X ͐QЂ\r y!'v.\r	fK! {#*/ඡ\0H\0r(Ȉ`SpcmI)8.s#G\"`Ƈx'ŔE)Qo)&\\VRZ@2bʒf'dZ&,U\r\"*4! \rD'G\\VHi1Rpc\$L2\nbToB8Fk\\\rB\r\0-l\n1354\04SHM4Qr2O%6p5/O5:pL5)Pľ%E361\r4I:S\"LeGs\\Q627=C	,	&D)<;\\~2ˮr076.'?52K6sa6R23SVLM@Fr9pț3j@NSӂk:@)B\0N`!e\n'PX\\YqLV&r+c.]锏h2]4 z`q8c6q4 ӓPg>#.)7Ne\$nB`\" 4L~΂\nu.OBN@R&N(uN@:h\n]6*hPXΠ@,P3S6U:鮟H5L-6T6SC0FsRRB~r:TnA/OP2-H:1e]P-'''8;8WUbYe!\r ^)Ȗp]	j.`</\"Uw3ʸb brA`fF_u^McTB	_Se65`\ra)ec]cAa_oa2>B\$@Q<OHJtx\"gZ\$nW@	D#S\0002#VΕB;N1NKPnv1wEl*YnB4IqZ`z\0\rR'\"픚iO	ps|)=fs1s72i-Gf `P%H\nhI\re\0X'\"\$z͉Yex@|~k yse`\$ZRz \\Wx[v`{\"Rwn'to#r*\0D3~^@xB~Ħ@}BUCx| YPXN`	\n\0Rmz+X:qy*X(No^8[fG\$LZ[vr#Xυe׍\$':\0[\nr\0Z}	b\$S|BcrQH)xРNDeMb ewzXswxAd苂LYC`{}q}Ό  4j4bFO7MN.'WS/uL	|\")IՁU%VUՌ^q'K4=c\"PvV7HI!\n`	㛓firH	tXn\$wFHĂP@rBa@W9`~bu>wbw3M~zw\$J<@\r&IX<_,[,eDuWL%\06\r?bLeKe*l;cXkY\0BL@\n@o\0h%lx=RB's2tpDϧ\"Z=\rBcQ2vBr4lv ^g(% \$\rvС\nP\\~U.R%ٯvГzx_e{3!e,{ewco|0EW!8wѶuitNef:\r(DV@\n{}cAâ׃|*!X¶\r\$LL/ELlU-/WƬc\$l\nUTPNŵt羣SY<,44.s	kv۠R+bdFN!rgs\$?BB2?P\$dtU`U\rāT\"搖EJ@oUx:<3SSIxGzD(7~M|Q~b5+Irzv@wf6#E\"-	(җhS*7\$QlvB%+]2Ohˢrod\rw'!C`biH8ώ(\0 @DdB>,4qHү츠Hbd\0`]e\"b w6;I?uMNj\rbS_!޷wdK\\O}{=ttZ\0DxaN 3Re#w^NPzU=!zLy͸@˸c]l٬[p՞XMspq5*W4Xs^\"@r~|>B5g2	N\$gFu\rzTjB2Anyc^vҸv\nOv:v}\0P[A%3@@Ǌ=cXGy)~u>zĜQXW\"wEwt;mJnfa@Oo;O hVVc^\06,#2s*y2{tXo;lث\n\nZc?`(%4\$&GrT!AݡCmj0ԀC\0D[H/{!Ak!N:5q\0MKC.B7/ @`Ip;PGr`+D<C]ǆ+<,%Hl`09-GsV]J\nu^Vi5/	6\r%T肊:\n!@ nS\"&)mt1f%RVXJtX%@=bU\$`z@X2dD^Pqő4p@\\,B~6??2OP6\0U0@	XKpf6 RR,e8񶁄Z\nk.BfB:7]\"I6JU\$Mpa:4_gpǐ/0@K;pÅTI<AD =!C\nj	忉S<e-a?XRA]@r4ӢӁOD%9n9x'O4-ZtpFK&1f^biB\rPKƢ)%'*Age\r.o@,`[	`}+C24.(\nƄlfan*\0Ok!l%Y݄EttƬ(	|@J0\0D4!J\0pe@O.>;Mfk~N2K!h@ 5\06iwzgURXہ 8A[ƧѸ2&8Hf9]r\$j81AY<をx\n/\$h	\0p(Qw@@ZDE`ik#ޯ%G	Ad>B@H=m\$q t\0X@u\0HY<x*F@!<l\rg@U>	ڷP 9B#\nԜ0g.iNIH.=TdGL ܓH3S\0^0F-E\$\$ /\\q)\n@t# qF2od胢uG|Hc9#<~:*;,BMd@t\0j5M펤!uku(|8%'ȀFЦc[C8!1	JAT\$|6vX\\:nlr@#\$2!nC-H62B\0=@>H0>SA&h|u\$C\\`tk\0|r ;\$zGq\"o&C;-[Q zLx	:~6mE0͇̮#r0 <iXKxu#IYH@V[*ǍQG®TiP8*%<\njM\r.AZ&5s3<y:0!%RW**YyUFrHU0Fa,]Ä\"I9amRr¬<|jop\"\0XDH{8Ì0No9*F`8<4ôABΡ%chgsggc=]p7s@nHp2(=ő4d+0!M\\\$8\"\"`dOcyH/bmYǛFK&M,\$3	]C?.F&70`>kTOэNNB\0l䀤ADdZXcD4tJ!B\0%(ԧь2IOrtI=@O\0<ib3Kz&S8:@@21^?W_(bQQ|b,G9>J}މݧEќQհ؈NJ-LHGdz9\0`zksiER8Zt7E#hO!RF0Z!G5oI(}\$Fvb'\0&3L`:<0)l_`53&\\\\Q*B<50DX(\ndE-= HOū4t\$AW-Dt\nM9N|)@48(\0E@\",gytD^\$u`/`@P>H\"(:WF\0c7GJd844χB&SkSZ6d%W.EC\0zlTdG\nyȉz a\00(	x\"(\\>,z\"!j(M@lBtq\r༒`(\0XIz0<]p!DX|X*ޗU!BEkE0b\"41OY1;Z#btl+GT5g\\W#~<ªsVz1B`	BJ2\0FIP(ofpBz8\r1jHy|S bw\0SDM\nykC^knr!φ`\"w\"w#bG ``:LiH1Ԯ+[GX&yqG\r]m'@33!#Qݬ.\$d&@\"P8kŌ0.6MR=ߌh,k@a2Y\$Fll&XFY?Nk(@e*y7>`n\"\"kRgK]Ӂ\"V}8@uhKCOdw/--Y%KP  YjĨ6'\"Hgj	Xzɛ*\nP60lPlwL}=ڭt:]ups+h|ҹ2Z)Jխ )[XdBPuAo^mbMuPG:UO	6qB<G(nb8'7\$;\" ɳo.ۍN>goze\\pUXbȠ81ٚ]~g:+%Q'c\r/xM\nt+~5@[^DUӛ%uLU-fºneP3ctՈ`qTfQr^mopI1fsJtJ b\n@3Y\"W -i8f'I|D/|KE AU\$U:HA^@]ش~Ew{|W*\nrd9.W=3gj\\dD<F(1nF_9ǡƾ]PC\0DeRb%TZFN`\"u	 hۨ&IBEy]򕣦.:zgG?PJFL=)Y;,Q_'	}=\$%25u7Ũb?`;-`㤿P,g(5L	8RAچT\nuv@e-	-jc[(?]8nه%qd)J N@WL?k-(tbūJV8dH0z9<@}]&n^&v+k(p-gKHD?qڽI%@\\VSʪ\0c=0Ucd0@~_r8͎kKVP̆2 B=ms0͐sTpH`\0<w 3@\$;1тyM<AIͳdOP@rꁠrǖAcƷ;?T`(ð:)\nc!FEt4%\n)l,tchH8)dn̘Яt<4d&iFPZ\0y8ן0Nc\0<dS C[NѬg:+C8<\$8fr<;hGB6K\$dSW?\$B\"ѼotꤞBOp\$3X./=(	g}7f_}VƸ\nn1\\W>Gfiֱ[oEcAVC\0e1U.NF{@Цctۅ.P,#7:`Sjb[Wm<K8v1PnI~ǓV2\0\n*Eî\$`8\\[fx.L{:o;۾}PpnEEbDٱdhaΕeJ(\"zV*\n9\0TԀKZl\$vnPXli&Ld9%VCCH3H`N@y]\$R>\\jxNBnPiAGi/qkh~ 8t<\rǥl,{k\rKМ`?-<\0Dmal]a34WG@[0.{\"/eV}bg/S_y2%HznA@\rk4g7qIWm2j^DXC+j~l/ɁqNI\$bY??CPQƤ; &b()NX\0ƣpդyԓlgEPWc5a-&x~C\\I*\"łQF	jJ@_`XkxVZ@[D\r{C]!4#jI~%WP{Ҭz\"Z)fw[u[\$nEôϡ?镾^\"\$\r0 (m'v]15\"O6rC8(sL6Wmjp8t9CF|X(E0@.\0P\n@OOcl͐Wh_cl!5/iT\\\\֞xĭlOt-sT2p\$֬&tHGN\$c'Zn%_&[㣎&'qnD98A (ס?*lt\\\"\0uxɘT\0Ʊ\0E,}dmc%U|\0'=Ӓqq0Y(~0@zCL\rq]R'x-9әIBvhc~/\"ڑ?eBL`V\0AjJ\0#O)5Is&p\0d\r^(Aod\0\0D=4\$«\0007P5G@ >TuNѨˎ0O8NARQi]dnx!.ʗ\$%Q0ް`y,+Uˈ\$3W\"Jw+7̹0OƮ]iV\0AŻ}љ]%fǐs\\[9oLȥ<C.W5N\"Q&TPm˔x8wWKTIbv|TPkZ~ai,b\0x<Ϙx]y>)C.TDX7/%nRkg%f59gw~0o԰zA?>])9C6tk\\LBgmQ[aDIs|3blJ+rU}Yo&̚Pu}f7ZPV3\09j]\"	kzn}mBXsH4b=]贈Wo\n\0x6%=O<,NrXZk9Xdd]dp#	/e7b1LۏwyBYQ\\{T쀇W脱E?^iRKBGh8%{@_d,޲*l_NR`99\0D'XN:ӸQtH5YJµG=N.4\0taec׫+F'W!?|GZ~UV:Gp{uX	d\\[t33<KsxU^Ri^:v\$/G?~\"ǛI696DVgdaZ6#MT	kCVLַ^(P*#^\nj籱(~zyAp\n:Uqe֪%`2>8DzJFd=<_\0ڄq~^ne]Rq/8:cjϡӽ	cFX7&H0Ok{EH	v`ĸϊۆi+(@ml3\rYO{Ð\0002ԑ	0=me}{`GN\r8E\rMQ[}fbWto`s*v9ne[W/Mz0-ڡ)6jӯS*~#>_	̯'͏N9@#P3`I-\0yp3ňeX.\"*1*iMdqa/bH0Ga9zXq\nLΈ@PJ*ID#&SIF+T=>ԝ?`m+Nzlހv\\C@-v\$&a1E\\6oBrea`li;MwNS]WD 40%T*bR.v|=~,R\rA{`/t80\00fji:Ԥ9)DH4+ l\0*bӂ͉\0!y\n[O:醄e1\0@6%e@\$kDP\0[\0[c\0{0@'̔y\"X=0D?\\Q>esi&S'߰Ð\0006\$mm&2aqtհ2LP8o@D\0t@,Z=]@2@	xvah/kҤ?8xAD@2pJ_\rJx\n+P@=*y8OAvI焓0^?.#\$?:zAh6EnVJp26 W`R\$b=30t\01줛!|n6\"2U\0;XHy\\Ji3[AV0A,AZHH@2NkcDn\n֥jO0e`On@<pͰ	umaXAq\0yp`\0fRI\"Э8'(W	!_(QL1f&{C\$P\r)\0j=֖B 5АF(&A+q܁ϭ		\"Ё-}1c^r8-;bB9&=kr@NȻ`!B\".(@HZL.|)\$^	z`cҬ?3\0V	8!)\0*2~|)c)Q'h	:y\rGm\0Nv!p}6F\rVOX/mjBڐ7Dõ7C*K?K(>L) 0d+cQ{	#T=K\$X\0TFr/(.6\n 2\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS	_6MƳr:ECIo:CXc\r؄J(:=Ea28x?'iSANNxsNBVl0S	Ul(D|҄P>E㩶yHch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0<d4E'\n#\r.C!^t(bqH.s2Nq٤9#{c3nӸ2r:<+9CȨ\n<\r`/b\\!H2SڙF#8ЈI78K*ں!鎑+:+&2|:9:NpA/# 0D\\'12a@+J.c,1@^.Bь`OK=`BP6>(eK%! ^!ϬBHSs8^93O1.Xj+M	#+F:7S\$0V(FQ\r!I*X/̊67=۪X3݆؇^gf#Wg8ߋh7Ek\rŹG)tWe4Vו\rC+8\r\0aRؾ70^v6nxP\\@yAR o`K~f\n{f9ť~!`@C.A޺.9z\nl빨w~\${XHpɉح/Ԥg=ѤcHfd%jc5^cH{\$\n\r!4n6cH[.6`ӥλ\\7Wޔ>}hW^Lژ rY_WV:@v\nøi40BE*`z|ڑy|7D^RlPB::!Dj[b{WTI.7{`I4sVkMxn6 )E64n%\nϘ ?+HG&\$=AD\nhwF'yq!> CCgxɇ3.|YjHzBSVIW S0n(D\n\$[zG/ĠfJԋ)<\rl&f`]@bs.ȔbA *И|AYMi|\nMI7NUSH9Vkf	abxa2AiA^5xVU}\r \$h2kxw{*>Hi((rC[X>:NvSb(,\$q,\n.]j*cwf։af인O\nV0ʼkp.o;*:K5EAqB!<xWx8<M*I8BmH8nh=9O䴉է`z3^OLcNXE))<Iti7J\"L[4%\n*:ۻCbyr6\nnh79uA:tpH2Xe!j@oȬzj)P;0RTĺ%+U@tC{U'A|8PΩle+UQJG\nÞ8ƵY7d,tl4Rik:%ђU`~2)@G	Ϧ8b,ÚCfe*K	psAo:)z9̼Yfue(gA`I#]D{v\$\\LbttW %m\rDA18tЯJb23o.h1zw3K_Uʒ\0[pfa6ΘcMl{7fՀo	=\"mM5?q32ӊm-׻C`VIZ	[qjO%t(*:RAxdDfV[ٵl`-÷rDq@~LV=ئy◰+ҷLE'=W>zkap+PfZjgoBN/q{?i\"|SpΥ@+1~A;>Ozo)0\nL\n)(Aa\" 	&P@O\n師0(M&}'! 0{7>wl-;z&}6\\ib'3\\ro28\r{\04.y\0|֏.R/<o,p\n\$ Nd<zpN%X*nHP:^p&Z/E/n-O4p(/!7\n\$\ro(0\rP-~P8pO(G|bi0j02?PP\nf[P//@\rN`M-&. \rDpVzo(\$&8\$n&&&!m!W	]VL@\r<mN~zOʸ`AiYxdC\r2 ,Šq NQ\0p-L\r\0ZMNnn+%\"Vn(\\dK2J,r<%\$'d%#^ϤReA#o%&\0@w'U(&I(Y'A'MoA-BZM}ܻM&ҏ)z಍'*\0\rCjIpi!!ZMLc6ˇb{j{g-l@\\<B|,=/\"kD+L\n\$Q(q +Ō\\௬Nv\n	 %fPC`VƗ!+ [+V\n\"NJHWd4'r\r#`\06fv-*\rr\$@[f#k<r7hfL. \rdTb@Hw2`P( B'0/zb.2.SvQӭK0z=``O<CE`CFA&E@N=>q<D\rr6-<@iZk1G=9S(z8`/q0TԽesEeNM%OK_#1J\nqH=пc^ sH#tЭo<5):CQRof\n@5\0P!`\\\r@\"C-\0RSHVFY9\0d5:\r 6`f5t\rjrS@o*2ySLsS\rZu	@u7?uZu4S[ZX4@ FR)	SATI 5{r)STP-k\$6}^L!W+Ul,O\r)F*hn BuZ/Y3)uڳַb.IVg:6TB6/[UF}ffw'v^v\\\"RIbd|ED	#XQGbBKG\"d`RaJ7@e3B\rgUv)3fZ'|Չb#PL.i7!`Nn^ne3V6)<^lbXDdR*p!bhQЬFlq\$RT`NA0b*\"8	~\\\r3E,Bagl.%:rh y\0Z6ؗ:mt'?7P6w8H(7rnR76}tzHO~`\rx֖A/jIM<@wH5s&=┤Btͷ#yfڣm#m^cĲi۪j`x:mh̙̑DS!?@1R+M\0Yxj9\0Ov\"!.<k2sHpi /-z`R,S\"dݎ,xx\r0K`T\r@ Z'/I=x:5b?Ϗ>xMǎ.x`o lLXV7Kbw#f)gm[F\na&DcUb.#/xˌYmE@[DQę1R	m9mrb-ٙRepA6u8LG͇L-wx#瞖:'LFLvP!V1\rQ\r;9\0\$F ˤe:-@%ekc9\rgtlu<ٍL,|'LZr,V@yL8VY,rWwY+:-CrPK)zclIR5\$DӱYuȮHP\rћ{`cYn8zXɢV:z6Di:KtrUy!q+co:i0e٫ڷNA9)\0^:cHODQV#a:fn;`{e9jo[rrj߳Yi:øwfʻvѭOۡ%]{qeɦVɀ=Ȥv\"7c\r7\\g}շk61|㻨p|ÉǺ`SvBջ:Oeŀ˔LŘeƜ]dLہ<DL6 @k\0?@ɰۯd{ʼWļ:˺K<ӔrLB^``ma;rY-f|ǜdϹ4y=9Ûr	;#?=\r|EǭIr{۴6P3 nxb5D|Jȁ#l[!?D-q;ɵ61ŔgEԚOۗ==du|E+GqP\rEVCuFm8Ŏ|Տߎ{uɼ*ݪ,ZǬg,t\rzLu]:ʺO\"ebS1ú]ړݿd[=>T<D ޫs==~}W\\,!ګ~+G-%wkRڬLoؔQ|HZN^9L8r5w{kkxbkSv޺+eI۾Y?r{Fٚ\0(c=pDi/8_5m]P??ܾTR?R ugNNٽ\\?qtrSޚ?#p]p-7C)	j(LcHF?ָ\0MK2F?@T+~vdц\\Bg)KK0-T^zV^WtDm`\"&.s41Gp 6\0\rp*{e`M,\ne^ghM\\'`[v#0[0f|4\r ctnSe~\0>|̿q}H׋[Ae3x8J!.rF1T{Ƣ0vpH FȐCV'g_sr\r/kI '؃Bu885O{aRBAyp+6Vg#ubfհp*Og\n=Q꽣a\n(;7E['A_xkVBeЄ\rh>^Ԇa}4iC\nCXh, rH\rux\0)^P@\r\r\"/y'Ո	,aid;Wahkl;Ɋ#='3 gtS1tEri<47!IY8\nE@\\XH)pQ쏄>cYE<Fc`ɖ&mUC	&b	\0(46-ƆKʦe/P\"OSJW//Lදpj4ʌ(@jO@@0on0)˼8Bqm{\noO\nVHľ7[gΨ%qtX\0rb#YtZN`:o	bh(\0D@pZQ8=E4Q́ۃ#7i[q}µDU\0&H\$kXGuuxM䮵AO 1\"6gR@T\"XǖCzdC\"9\n0­#!Tǖ<8#PG댏<@vqrHg&pqp.\$AT`2@@I;Vlw~(E V  )i\0~x@Rdg^Ǟ=rkj\\g2H-r%i8W3Q))GH2v=h,L\0SA2^#iIR .ʦUadC%;*	J<(E=3QC%)\0@(	Xyb|m/T%>i\nZPŀY-H|&Cu-0CH\0Tq`˭#bL%~RbTe/p䟒@~\0KZawPr11\ne3ɠLܵ+-KCL-	˒dL\$2nLA	@/|\$P@ZK\"dOIr=jLif<|\03PLcUx{-0L)>3_	V)c.8h͡3	T2Ly'* \ru\rٸCPF\0s kd@\0O)P!Q5`'H *\0sT|s`D,f\0#	!(\0 uOg<'@''4(Nvs󡜤\0'xsќ'BX3O({*\ns|@:p&&w@ X@	Τg`;|,?Gޞ\0+B{Sd뀋;	\0T')(	(t) Pp\n'*NsG\n@s5yXS͜\0U:\$L\nCDI\\,\0;'zBP}:p |@@C0>OfuRM\$R|h\0	PsN=hF\\ӡ5A\n	P|StOl0Po@G::y@=ԀtF`'ѢTN%hLкU(G*RMh3Hnt.(Q	E\rULzVϖT3)m:gPtã5EVQZ38=Snj.iL*js>tJ>TR\0E}S輴\0*nM<eWJ3h@*<%k3S95GJ5e 1TH)\"0J0Ca\$UJlsX2\"<.u>\n]h\$<Vlc\\U00VYQ\r\0wF\nE<铇ZP\0<P]U\nUt\0\0z18.6H87\rD\n܏1\0QU9C1y~9W8A0MıՋ]BJU;jȠjJ²5h㬠Ws}^Yc?\r5d\0Zy\rekV-n+]V⮆cB3Zھ\rƷbj6ֵZk3\\*fu }!\\VN\nSY\nCO`}hW@9 =L~΢w@|h;Ys.Z\0Ҟ(|yEra*P^4'?)~)mw{،v&\0\n(|jeRt N%'``2ĵ\rK8N5>h~Q&sFU|\"\nbd9!XUR\\;S蕰(*Uc]g\"Q4&)ڭVNVq+JK6\n,ﰞ	\n\0WL脶a4>h[=љjJZյm`UhYNc\0]ke}b[NYvh@PG\0	'[P1\"3lUIU(;hI2Y&ۦ4%KyV[,il1ioV!xlL\0`'FqT3x\0嘴w'hQ@ |*m*q\"m._\nhK#5\0e&H1ek๛sƟbLDF\"j|#`3\"U+P{C}m\0\nkH\09\\j޻%\0005׌K3a=\r\nؘm^yg	\\5nj֭xɋy*UBX6\\'nI1f-mH(M/pA/Lj1@RLWj<K{(pYu	B\\\0w+L6泅Rl'*H@}	뜇|H\ndQ\nɀP0rUbg\rpպ}}qt(a`+Lt\n'0\\T9EʠСS@!k:Ǝ?-ρdSʗq@\0006eUa]+^0rxsV^],JxH	Z^5Wb \rIT:'Ue׸M|֭Q]zg6T+F*YeBpkɎ0 >.ns(!W\0\0.	Cf KxG0\nj_\nc]LQB͊	J! 1H`bBRS\\FO/\$KF6!j6`\0	]q3XC	8r\0㍗\0F2[ATJ)j0\03	2\\e\$3M㾕pDY8)Q\\bccymk)<5T.4QX<E	=ڃ	+af<Lٟ \$ڹi 2GdbƆ/sFl)Nx0p̀c_n,\\ԭD\"h@eE\$%r:>2~,HQkT-M2,~G+̏\07ug]LQۡ㕁YRFUlC++Vdg.saœcSr/f8?YS#d(i	t#\"s@{|xHB(s<c%nZX5%6Rb\0e'?LPqeVY[PX.nY-ig'? cbsy6,;%Cu\0ɝd;&xDg0g7I[+ffs'COߗF/ܬ	QT3	yAbnsbk1ЦwWb+D1i++Sc[.1\$qČPc>F\rv-@٢p\nGl#?I)`(<ځ֢EĎ1-1)BMt+/`JcvRIAPʨ{!.&-|a*&\"q7	Am,hEf0t!!`fOT@c3db1/H#})RL5H0Zpw-X%sޱH/<	+OU1 5)Nb{Vd%c<q댭`_mu\\X?@at3I^RQoS#\nZo XzR\"^DTl[oN&l`[\n0lcV(Bm;\r^RÐb\$dd8\r|0\nGؐ)='c[|vp-[ge\0_Ch&3F½f7^vLàjYq}ЋE6˷Ƴj9R|\\Q\n(\0*^lnAs0ݔ\0#P'|xx-zT3p\0-]5\"YR]vK|ct\\z*}iݛQӷ	opaf7fTZܲD:S꜇!^@>o<>{G2ύ;knWjmIސu=̤69(\0hk;05t<\0\"Q%mPYspV[.o\\vn3sz0*a0\0pS^.W\0{咚s0xR	gmocĎ_\\G~.)-Qb̋o]/~,NDU5@,㖦֭'q\rkH-q|e\$l\nƢqќfT*=h_.Ja;Хs?>Z86v^;HAd'< xz kDf-Tpm^;j2yi.1+wPm>ʃ\r=ڄ;;U2\\<@vD_;r3\$5kHU[SzS(k*Z_L1x\r4Z{q/TI馦Psz\$gpr6\rbOrշ<n8+bo^6\n~nmg:wNjUtz\$=I\rYX+KxaoP8MkdP<	4eQ\0#ˎ)ڹj1qW%ֻ7˧[P\r:7ts66[\\BxU\0ڈ8[˰rA+`	lx\\\r.֠opDvk5Y\$\ryǰ!aݎsc28[;5B{Sn='k6<jsV-[n6Cm\"/W,.v(418j#]A@i0@WXdK:Pvvp:vi\\gV#'-m/ӈ,7L[Jҁ/&-!Xq=d6Jq׷E֦	>Bی&Лs:ev\"iN{	nSFr\0<sod}	P<fQ-!)pPL\0TEGI|`!izևq)V}+pEߵ;\\{ʤ1Ρ!v=[Eb&04b\0\rJ&y};|!s`a-=ڧ6;ӍԂV*)\0'+Ê˾9\\2[Wt3huT[o۬]N4cv{Y0	\"dt6\\F' 7xSkܸ1@7YM6.VB}.q~]|5Ը=`ud\r*Յl\\yIT]ft޳#L!f\n񮷁XebɉE_Wdw}'Í cJL1ŀ~1(8uj!hzS85rta{:@Í c+{Q1SIRJ;ņ\0.^Y 1S\$F04\nsQ?a~H<RK@0b㑕#8CE(6'y܈?<65s'E7\nN戮vp[)út3h~E(6OȾ#ܡ(]U\"Gfv65\r91|EP{`:\n)x<t|*s\r>t6Xsss\0\r\$0J\0O9`ۢ!=	[@=\nXrg\"p\n\0\"!=.Xs+q璨ոhC=L!\rmn_\r5׃sȘ5ۈ-._5B	X\rF3ށ\0\$=Q:F\0b\n-\0\$KmdՆ:*ɂk1&-S1 ڨq6薀B)0;#ڤz;AóMrJڂX^-`:\n=xB^[ne}	U!w]\0\0=:``1n2#<^\02B3c_J*D.skPfTo\$A#\"\0Xx&L5I[>9<&H݂h]k#6pF \0PĐSlS@\rUNFbSX9j¹\\\r@\"O{	(\$0Đ	ScNԃX9숼<tĠ,(n- p!!;'Fl)d0_KHo\n1Q#\"9~!<-Im{+\n@k<|w@4tbwOL(< >o@\nD\rjYXB\\)jta3#]quX%d%LxIdC8z0ϥj)|; BĈ_p+t3\04Z	f׌k\r:bk1Ô^%z`ꗀ_iNm .D;T0c0\$D9\\ü;oK\0ʪA7\nŘPنfD3kX8`xWeC\0!\rrgs\\z`>H	|hYT1\"]C\$'\rc G\r('}\rdCzʰð4\r(QMCE.TmCvd74C49DcõZI%URc>B1	\nllgʦDIyT8	p'*C,ټSDL\0.DĖL%M1Mx<Rl@arD\ndD@ā\rHPΕ?_iqĞFO!Z-ZC\nTT\0x@gR\\#W!	aEɌQI\"D8pP:@ï.ӯ]J0ԅ'caă`\rŞXOqlFDOU:	'9jeT]q}|3qh~lDI;ŭ^Q>ŷ_oCEVPE]	mX(F	\$Y}<aQiÙJF#\\[@C3&|%0`\0TWfDB^iEX0Z	Cd?edC`	ִ(F@08H\nF`j#!	`1 \\qzv&	S=\\ml\0[P &3j'#\nc6Cpѣe2r(8'Pz:C\rh@>Cp2VU!U=5a1K!FtjFqՆ|<j %\n\nq\0^T(#5!FʖP.T`<\0ړCx1n:\0*\0#fq0>0	'\0d	)DxG  \$\0H(@A4sH7\ñ`7GFJNx%\rSj`\nRH\$R!% <Lz H5\0ÂZ2VG!@\00\"hmf`>\01ȧ\"\ra#X(~ \njB3O#HcT<GZt2ǱHg,b\0#uI#҆i֓] bGI_b7\0I6MlI2aal\05̍#13@\\PO A5@GCC.Ϫ4*K\"H\r\$T^1~.%G#!r@_&\0Cqd|ԛt\nnG,/Ift*\$jt%̛r^ɻ%Ra.!q\r'g!(Z>2u%{2x , ɇ'5n J@`rh+!U;KCllm g&ଞ//@3yl2H|M,16bntp2\r5\$dZ\0H^Rt`֠؆l,H4ҥ#HK*22x@m{%8\$<%%r`J% '-I\\ur\0(?B,Z,5&\0R[xI	h8X/	9\nؔ#`8<I&OJ\nr\nd'<T@6A.H'K	8\0X+0uR}%ՀQ.C\$,b:e@K+%' i\n#PK87!RL`K+Xy01JeCGpc\0y-\\2AȲ\"33A\"\rZ\rxՙ%<o	#8Kpg!@@6:#Ҕ(ROSU)@#1\$Tʀ LR\"83ɺa--2W\r,^]eH@̢T+/2?\01iw<1S6Lk\$@16{!Љ30Ct@Bl|i13}&-,Ϣe\0.@wDKܘajjjB]0sUdLc5lZL.,\rd\";;XK6\$	}5m9o5|!6͟5fͦ*LBȉ\0S!I9	.k<,דh<ݓ˕.,\"M}z1SS\rmK,:R9 \r]?S{5dOˊ)7lj\rj\re3\nJZ)mXNA	\rsJH	MR,6'9BH@:CHJg9\$9硙:xNFt2u9_/)_\rI91-䶠H47 6\0\rN°|@\0;H5{3>8H?RH1S^ (Mj:bxZ;BS͵-N<HJ5f	;6N<5MB\r5|sBJSJX19&SI5#S^8#Tju6j*=&8\0H5; 0:򻦇& g2T!o \n}*ܓǶdq]68Hks+->q,uaR\"b<Rt뒺85*@ shg&̧@8\r2}30+&)\no\0*O	 p\nʠPF3A[Jf|L7*JɎPJ a½!(\0J@#	Uf<+خsEL>UdÉh;a2Ah<S(bM39P< \n4=G@%sC-53B˱ zaLcDls1!C/+Nqk+ 8	u`6Q3-kɴK[4bMuQ^e</=2[D!TU-*D%&:!̣@1ND뀕\0(P*a2er׀ 5K\\`PH .+?(`5[a0NiWc&̓7XCM-RS3\"TO]> g=о: AQA;_kH?Tl\0FШBC!k);Hg>WG<@2/5 ӓ}25݀>D\nHNDoHL@N=s6J!N@\r\\[GyAnѼF\nQGu\\o&G2pq&ԗrwI]l\0>a'<wf]ERz	fhܘU<FSK|Rv'|{KĈ3K1/\"\$bCH|[ѹ5X		e'3Uj11GeJ\0sUb=.~SNh3UӘ56\0M}9eN~گM8TكN7sS<ӸtM@lTӯ-WTN\"!O\"TN*;EMĮT̒:tS>T6,~O%6P-A`!6A\rSP=<|3N:Ƞ2JuyS\0DTaQaOTMLğ9K|4l\$1M(4C`\r{Q.4L|5d|`6ȻR%/	RRQ-%	TluTs%S?Rl2TR0(9JM2~TQIԢԣZRѥ`Y1OcU^E2HɅ\\{TU<8` 2hS,wGR{ƣQh;al\0FuTTRSTL:=f;9Gn3w#ni\"\0_%x\0\"a\0*Рʵ+ǚj\r\02`7DnQXʿ3\r\nAROɴ8Fc.\n!:}N>EʒH	!(062D#}2X@ׇ#5F̬e%9I(M8xR=RHP>>\\!\0{>CrR2	ZK2#EP?2IH#&tҫ\r2`=3E'l]֘EOUYcy \0X&5 q*Dɤ%bq{Flhǖd(T?0ue>(\n`Ïlh\n@ 2=o(\n9V\n@&\0>	rRI\nbv!\\uQ\0\\ * \n`҃HhG]dH*;ɗ\rfָmkհRE|VUmqdk6i@ F-\\)v\02uH= \"=ʘ1sD(-EZkׁ[%xuW[Ǣ^5k\rF]WhaU܋]wV^:U&	\rly/y_zqWRck_u~jXA]xئ}]q3l&SjȽ=F 6jx\rqR./M'\"*rFUp+v{aX	Xya\r F6yArGVI6+ \0b`.؏f0'X2s4Y(+W4\0VjVIcp8Vj~*B	;dZF\ne@\$͒hrimd؊Uc`gDX\0&\0ʏ \$\00v:>(\n@#=	(Y8JYQcv:eF=f`)\\I&,1e\0z~)n*\"dg <d\"CX>	,-I\05ـ !';\\rr	=7dccSsR\0P=|xYfŎْ\r?/%YYh;'h`#,\\	֌ OHQU%VghYc͢\0=`\"=ťH\0[Tq^qhFXdzvIY\\ۀ}6GL`Iީ(\nu(=?'2ͤΧXŨ!?Y{ehuM{  ͤ_=h5b\nKZiZEiů\$׀e՛־Zevڏi6V=xڟeMvz]i@Yii,iepֹdvb[h-8[[fmYgiVnif*p(o)ډljUrڛc\"'{%8Z!šV䀡dUWk6IlHg5Yl{`\"Il/shP%g} 'g{g	~Yg6فh(SAdlx6S]Vz(o͟[g	\\kSV\$.\nplEW\\}\0\\6M\0W\\s\0\\*\$N=`'Ycu[)I74\\H>H\nEZh\r!N	\\|2hphCdRVui%{`#%Pܣn=ʷ\"Yլޯk:}@>,d%U hMs-f\\i%w(W8ܣEw<q=rGq]6(=҆7A[tH({ܭr-@*ڱp}WIWB1t=qDUqe_h%M\rl3R>>RZl:'.*	Өkuݶ)X=6jpC	iӅmX-3-0!t(J%Xqz0]vVw8\nw&]pɀuCWu  	k}\0#}w*`w7ciww/ve'ujs)*=ڟۀѳx=\nzYus]sxy%㠫ZL7s3x߷ׂ݀ݏyVW\rxmWilez\r3ု#w':&(bC!jȉˏj>	,(Gڱy}W/,	`\$ڱ 5>\\?]>^]w]nu^-- >\0Mu]c}߲⏄>%ٯw|^G|X|klxpewq_6R'c|*'kq||6m\\r&3\r9䀥.-rk ~%- %ߘ>P\\n\\_\nV\\p}`ܔ5!Su߹wZ]yWߩ]7e'/W_zMW_w\0SMڗ_5ߥ`wtx\n ={w`	i`!i	*7/evf̟}VY9)O|h*%`[~WH`Km^` `J'(gHKY>=_Lu^Sfn`8)^ZЙh6\0:\0i6?ID?\0cbHO\\u|	#{Ur\0̓db!ZH:\0>\0˔Hg``66WɂvσI! ZpMҠũV\nf4Z1 j`}œxW6巌`rP	`]8	gqF(5Ę&Zvamv	a|=MU*]vȂ)}PZg?W T;w*J\now6A~p`& u,prUEX%7^zWƬej<pxѸ|	ӏs 'X\\+\\\r]7X\nVj䧍\\ѣcm-RZ?\\e-/=M !,~Ƞ6(`qPj\$[MZTؚ,bv-XO@W\0ȴ~(+WsP\"uU5\0hUTѳ%4/mY>p8nګ'vC]6F,ZŌʘat\$@<@m \0Z`X{8c\nw-K,cU%[/!Xp3@\\Z=Z\0)PX%@\$\n<7 )dc(8\r}5c_Vb{Z\"t|8%<!mcǉ8I;[84lȸbu87\",C͛IF85r:\0c<֎]kd4\"`^8l{㯏@X\r:*CC'I!΀Vh*3\rMp@*\0XgdvG\"Vd嗲o't~I~J(GIId>]&`jsɏpK:\0yL1\$\0&6\"c1ɹ9}+Y;ԛI1.PA4PP ,9B5`5\n/}\$dVN!ぃ&>vPULp\0̋Q\\e8I+!!l-etH?\"ZspWNJcY!MaM3OWT=tymo[րyO&[ eOԴgXonX6[YqG09Eו._Ae!-_1cW%K#6*91rlяh>(F]{jȶSd\n=ٔWw^05\rbz܏{nH׬[Q~vW~x߻rbGi@\\jwck} 'W\riy|{Y.( ,>I5ٯ̣'0jȹ	^2lfxi(c^\$\06+x,MŬjJ&'j>Ub)-0#^{yܲ*}Iǝ5`={#( 'uu\0qzk٘\0xnv\"zvWb=\n`b8\0d	\0/Aee6)bnd}n]nўz`+]mΩb\n(рf\n1G7'2E)V)|&,z\0Q5(׀{\0v>.=>B,\0 ၛn۞Sda>5wHb!ݾ	g͟rH2\n|k[	6w艚fcgj9Nfwϟi(ynZ|] Uݽ|+\"ڎ%Z4r=|89W||6\0%K=![&7\\\0-7f޲&Y(f[u|VuٖMjV:\0 nvg{iזٝw[Y\0\nX)i>#|J`ahKYiWY\ncZ}ZZv	,}s9d|ڙħ:ȵ,Fiw>5ڥ\nZ'o}R\"c}2Uwߐ0)	w@훚}\0gx_a\$\nC;uf)*ZTD)\n*:2!y78:)	l끈8O*-`f)46%TPa@LT a^۩V3\$nC[#vLyke^]&fZY\"MNUhb4άj6]lT؀\"Z۫@jFVć\$.mbGn4!RõSQRHڲ*X]YG-`<; ֲh+;ц*&Da VB9%a@ᔘ ̃>URL!Tb̄`HJԄHP>?q &ep:\r޼tiGLtn22JW6/Xt1<Y'ydbЩHH\r9I(4y*[0#`/5ЂV(\ra:3U\"{\rHpᙄ#3a{I^l7]#\$r6ȖRx!Hʉ#[Lj{*5珙u%gTÊ&Fȶ\0en{&W6l#ޫ/\\2tV73tl\n%Q~57@aNd겷^elFϗ\\rmջFdp+@͚;<*6{:m; ;O&[QߝM˵0	Tl	&ӦmC5;DY-,e]\0006dr!g⡰*`IN6.Ӿ6`!p8[f{M\0ZjZ0:DkDe&\r݂#%Q1B9\0;7E2;a!ðceA+QSnqP\"Q%ts0{pH%!ReRhDH+D-ѷh2 Aa%SfPЅs 9e!>TZ0\rT5UHϮ#ø!;IՄKCF`c*:G8T۩h6Dۭhܖ[S?Zm0RP5I\\a?Sn1ǻ6{Kn|{jĻY)	Њco*6L\$NJ̶e\$]\r2\0k3	f\rN˄imDPyI86@\$Ä@`+\"9.SeR\r`e?.\"\0Ro\$\n P02b/FEm&DHA>cZOo\rU\0[\0n犙S/ʐ<UN\"YJcb	Gre!l`ɧ	pGOh :cm3]?)%_vALY|	P/p')(R2j	Np|s[ 	\\jP𑐠:`ZCcY7ᵓ@փP^PoMn9@M;[p	W\rmppk[Xq\\@k>8I\\0\"9Tmď\r#mPnъJ<3G#0aUŮ.Lsԁ!`\\S\rO@A\nHZ[ІM'}<_\r?S	D`:&K\n>h8|E)ÆcCƫ)p䘥^+X\00046hf56M\rjNX56o>Y\0007\0*N0)S<q/7<Z9(\"s4\n,^`U\0>H|vMUjc?ɵ2m<5T#r)\"<2\r&;8ZІ2O\r\$. 6'!l9qeȠ>⧭n-ko,ںk1NܵիT]!f<m˲ <ԓ?\\s1p}DẆ.4g/ܽsFW.]3ܾs3̽\\s̟1a1˭ 6k?F\\ق9NrR|Om{cMlܬO+':P)'+5%b])XabX1ga\0wEXc%aU+&a1<<cŪ|6ܠhaQρ<i!OO@M.Տ\\O7ωRVnWC\n+}Gi>}\nН\nЪA)9-BtPd[N%=/T`LwYU\\mpJXX=&'%plr ҐJaIW@]'<H w\"<.\r*9xI !wH=6o}6t1^OVwgEed O\"XӴYL?}Pb'TSѷG2U/LVSLJU}wSDN)GXE\"N+`i#]ew@N֠[\0r`e*\$}%?PkpFE/N='-gt}/H|tdJCNE\nC`f]{ۘf۬=\r!؄D~\\/BXN`i@b/ScHҚۅa%K7@gdCvId-YhƐRji .5druAXrRObv-ٝ}#ئ/lj]Roα=ookp!U'.4hQr)am]s78UϽb[cHKp\0N[o/DXMXأn_jCqB*Hږ;p?jKgtX~\nwZ `ՅܗvHxFc97fݰ;Zc\"kyGevf>h۸\"]߯x?^>\\w\rSUw</V]aj/}ft-w}1]\\j]19ڼ=u|T7]M+OC˓\0>mەgvCv?b 'lUrNFBL֭p/xo࿃d}SoEHB@v9t~f;w8iNGeo݅i1xiRts`r\0m(w/\01'?>9`qfC܀\"~'hܨU^/Dҳxp7wu\nO-w\$]w0߀bwg=ޛT`9wi\r\\}F͍.wtyUרPQO+S*p+Y3VA>xq\$u*uESij1wP\$^>BG%	ǓTʘ)l^,ޱs5tt@Y[87>c}gX5y2SMNL]YƐ\nF .M∆H3eL?e7vt!POz5 Z3lV?\"^.\0#*'7.I?O5Cχ(vҧ]2_n03]tHZ}x\n>S)e)*Ԍ۷zw-,ϻN=i\\~^luSEþdj)\0h\rGu2):7\"7wڽB5]nܖǳV#2ATajw߾&H%2V\r 0>ھW[vTUѬ07Ts0f>uUD3V\nRCz~Cz<9\0+Rj=rJ-ds\0a{*A^w0qsuӴYW/Y/\"YUZ~(;Ϸ%&?x=o	S\\I!.h _sM͓}b}(\">y4Tgd*VF1S6zNfvS:LjXO36O N2X~=S8%|>/3yŉɢXn+G{u=qsx\rc&8\\9\n9oKPyVo45xXg\naSDrGAHpc@#eS:?@~?Da[zWJ?>+G_ArT!YUu}?9\nfôK*Pfy\$[w'! ⫁W\0ֿj\"精з\nM,#ݫs|׾V_z>{Ҭ\nYsudHɀL,`R\rоh\"_-a'E!P/,I~Lیd(:oM!	!@a.*3nxF.Y`#qw~Ne\$u_.yD~IgX[SDߙ蟗O}?SO6eTQ66	a{3\0O޾yaV\rH_2MXzD_dp]}pb*߳Տ4A}!g\\\rY~?_oߟV?44+P*T4wWYp!_nJQ8_B^ZUV^F^Q5}&|ơGyOXHn'wxa2N(֭Y*ҭs&0S`NҴwԀ!A>Q	 ՑaD:{XNB*IK,\rEOt[u@(\n~.&q{M2+'1t\09w\r/J;\0i7Jn/@X2rĐ}N@F\$ѮPx\0000D:%QI<G@ 1={,	M*:\0@ru!JM@25ˀ	5GL`,{\n\\'A\$ܠ/=y\0ı~;p_|@1_AȤ\0O{`:zbla?H\r(\rkx/cGs:!˅P*@k3H;pf!sg&vhfܢ;xwcK7˨\0dpZ	b.@l)uZlca܊^y4A0W{\rF@.kRQx @,Pի8`';J/\\U*E.x.,^UVw=0^{0|MPOp8\r\0y\$|4A1a|]F!AUWnL	ІV\0ZD	a0[?A93ȫBuF\0	UaȔ\"R+Rϲ,+FDhmȺX;`4QoIx\rb	``P%*pQNXL5|X/Tu\nT\rt]5񒚣et~x`	k#&ގB(/ŗYH9:\nnU7h1b)_%9\0dba_kK֘Y)p`{ȫ\0f:0>*!K +]P>K7U4hU}{\nsKG]O]npx:;/W6V,-U0\0VeVoK4D'Z~4晬qb\rfK 	\0|4*٦.`iq\n]lX{D\r|Ci`	˱B ]͉y!vp\r-`0!`2dd!bqz\$!uLזgr*0\\=\0 PWƻ!v\"jB5^T\$l.O\0Eֻ1W(t\$\$UY޽n&&\nWBbZOFB1dUfcJ0`/.Q2hJD?BR_\$}#!AB|'>Kqj{!1.\08M{JXBpĻRڵᐣWq8^\nʾ8LKE҄P\nd&(M%ْ4Ja\\=vzYBdI}4+X0\\ACٚ,C!gH\$\"hp¸&B;gP\$#<NBCW	\$,]LBjB鄡S<88`BX\0	i4,\0\$hgBGi.T&6Wh¼ZpKB؅1XPW_em(q!G*R\\Xe!L\0I4&RڵFa0ԅGq{\nvaB!Uf*8fBHPHM\$',Ne+׌I'rxYp_Ľy-5ؙK\r5,45١sCo\n\0*Б!xl8x^偡3Æφ/`!e	T6(MpמCvF8s!8By(pMCr`\ny(}0!ش\r\r9RءKC5nv6(TK/BW5\r7v©ZbiЬ\0bҷzb dgTЄ2b/a\nq3He%[E1Z^-p.C6P_Pōx>*Iؓ\0c|0XL/Kpυ|D ˰alp|+<d/QA{eK\ra8일>ō	;\\z-bVA z9I.+\\|BKd`D2'\\<CvKub[\r!hk1\rt8jKUs-oUTP=6H@-IDZ2wl@_B	]csTQ})2T1ۂQYx\0feK=ȑ`RBqB4\nШ>Tx8\nDEO)}vģ>\"Ŏ]+o95J^%7y>lK=\$9~x͋\0\"o+!DaUQCWƆ` ?M!kp`b2&ج.Z>x6tD〽&NhB\"vD0kbz|upar/ب\0k\r BAD\$@`x)\"@^PzR+DCEVNh징~p@'):hbZ)Ko\"-v#YUgqM8{[)c&6,hTOHiӌXC?*M	HYdHRТeY-dȡ?6&7X1Vb+;ЙN7]l!HWT \$yA֚>Y͇ũUMtŌb	.+W8I1`d_ѐ)F1PY̑^ep0i>t,6iବ1iF AhBM3HC&M'pElBZe\$vI%ش>\r\\\"2>aU5I,*/x\"pKgȍ8j3ٝ@rzJ+KJNj_џ[D1\0l_	\",Wfk?\r\0\r\\\0ɒ+\$̔/Zhl`Ĵш hY|''A.*ْ\rWC(=\n1kH\r [+\\sx9C\"߃ũ^2* 	ڴ]X˲6J84``ENFN\nȍv }fg(+VdR\n;ĕA@	%kY!2:ֻNl<^P:֕k5\0a*A1-d9Sk	!XIR!RW8	!-\noۤaSi_7%ܝezRnrE4\0\r-[yEԍCۈ6n4%zq/W7OȑA	tI0T+YuD`xxl\$TT!(=F.\rv5p]nq\noiqT5+fSߓUr<8om\nʍF⅕\0\"<B\"5`pT1y1ԋbIN3`ZFd\"`nD{*OJP,@#A5wEs43Oۛѽ9qBJ3bu)	<\$\rԽ@NS9#(HNR:rƮEhg!IH!(^8)\rL3\0\nGlvsLw7y#>/1;ӆETc\\%j6;u@WZlg'j<GLywNRMP.!kAʍ8-pL;i\n8nyc4yAcc9#a\04{#c\0xf*}08'>`MXD;L=IQd\0f[#[ó;ECooXV_CADV~/:v|)}\0M@#g]OF̉J*UuTUJ8o%',%TT0[jˢ H%A]oH8d?:n (ڧr2HITaRX@<HNBy	M'򐢑%1HXt!6BH&HVAR\\v:z!hud``\rl5* {_FB#m|:7,KQAX, \0%\0]R{4#YPV	C9`K#VP1D̊@.'ّc\"`_+!ȪJd`!.yȰU\"~E%'ps# %0\$XL-R#YEy2di8Nu!79Rzb%l?|,ɦ*Jhq<̾B}T0*Dq\\AF(W=<l3\0qJD|-\nH%cMoÀޑ^H܍8WR@SOF8Ԛ1=\\V!F3GBfD XS~6j~0:	(U\\B#(s^o5j:x@?	k	`KD7H\0Ojz@\$4A+#HkUD͋ٸ>TCu-]x2I܌Xnm2'!R%\$B	 k7J*\ni4H֎,D\rq-G띠6Dor}S'NS\0ld	\$rNYy)\$2o^\\ux98B|l^N\0T_{\0p\"&[@}'`̝(	'i^;xUx]JK΢͂15qNQh@DK\"1Czt`9nP6@#G쓫\0h\"KV=	}\"\$N^f`DwqNJǛK\"\$\ntBHJ9~>7т1 RzhT6J+asWQ]Z7\0ЇB4m'/RNf?M+\$LA9Ms\"e@#)k^ .Kk\"P8ar>>5pr(!DĮc'}]T,RƏV!?\0&3٘\0%T\"Xg_&J/%D:|1[U)ئ.X9S\rvߗ6\nAgUKK?x@⽥b:pT	ba:\$Ęg<? VI~mIP{]d~)#\r6B`_:}\\˾9ǵgICL!,\n V{\0iIըn6֒ضOyQE[]Nq\$%m>GVY+h%}*zYDIZ(K>L	fR;eYuJ\$vƅX\nZ,pӝ@\\}l<R#O@	斡-.(T`5_m\r\nYexxbkjOe:,ue-?:M0j2	K2N;O<pnڕ~-2ZA8gP50;(!'0;璠H}X͞U2Hɠ~	Q(vtw0mIJځ\$H܎Gi8~xO	Irw=Jm\0002\0,q;UDnZ٣q.FcA*[l\"hr\\A϶>Q,nܒYLuDnZZ嗡WP*%`)6	\$)<+GF,t0!㗩v?,<0{)~80Xe'96(naنEklz\rX]z>;QȼsLbl7 \"j\"TiQX#ܰ* `ACLz3\0		\\\n<`N؊Vi\nz-* `jbʻIo.\0aEMuz.*	7W~I^:+Fd=AG8d0wd>5R	U\$wA{RzLw<nA\0XW[(!P,fJPsP5(\rnfHq!E\ry=u鰍W'ڽDMGwS3.͈,ر ;U\\+`OJ\0y:rt;F%l+vi0oR1ػBgނ-oYӌJ@fuFY3l	k#u[}Y!yֿ-xn5k\\-x1*h`^uDM#d4n+Ғ[,bgCV\rJE§^̞-1CUK'f^řZfgmR{-kP̢ыj.]ðW3iD^clY3g Ym}9\"^tڢgu/Dxf\ngQ|VDel';j`84 _(K)8Mtb#@HSN1+D8L݃ړ,\r18}&/hA6k`bÅ}LZ3YK'\n}ژ|w5ZajX˅\rx.m,42)[\$`D[*j+Tm}#X0ER	J\$TuD[Mo00i)	)\r>nFa\r˛l6HKtn܌F1paT1+jbpi-`?UH)<xW8.Y1cm'@),ѰӈtǌL9:yIY,k!-:A}̠&O,Tn)q;t*\rMV,ɩ''\$̤2a7ast)NVXBcX3s 5>\r1gYBAH*\"EPs~ߑ3vcILH礝VtB	]\n~D_B6(=*0h\\B@SM,2iJdG'NS0~YOvŸ;߁?^D\0{wOx[O^m<\na&GXڊ	)~:iCDrw5L1aXԏ̮CI*57Ñ6W;(:X0-H;;Zm𓺔OOk\$b\\NbtwEaS{Ɯe\0;%Mރ \n!+sL	8C\r5&3 Q+Ԍ)]Tfȣ]\$fc9刯&N/\01L	3,2Clj0]<\nhx@\0@%'7=D\r\0W\0=H0'O_8t\0iԀ\08\0l\0{\\g\\\0p\0{Y\0sا0\0i={\\pߧ7={,\0sۧ:\0d\0|(S\0Q\0q=I\0\r\0000>&z 'O>zq:p|hyJ3O>V{4@7\0s>.|3'OT\0OT\0a?&}ځM'Z\0l\0|O\0\0}Oȟ?|S٧ހ4?|t\0\06>XgП\0}ϻ>gOq\0o=~\$i`\rgϊk>tOf?j}ygO?\\9S\0O@|S')K>zgO9>|@3OIv}\ngOTN\0)SgP.\0||4gO?\0jP?@@\r@O?悄Y4gO=Jg}+A~zI稜0\0iA{]\nsP=jpZSh<6>{ISןY>Ft\0YB.5\nI@gwB	S'bTp=\n\r(Љ%>ԧP	=b|]O\\)?%\nZ\r4-(Os@zih(\0eCFzis(Jڟ1Cj|	`KW\0iA҅0J\n44nϝ=}	I=Pà1BmgP_N>Z\ngZBR{DJPǡK>vt(^Pc'C6jTiA9'PסC	(+O>zTvQ>ʈth4QA={zP\0bBgPBN\$LAOe@Mz'϶@>)>DOC\r	4/Q\0c?}pZShwБCVZ%h>\0001\09=TCPKW<9+SP5Dr]]'OD|dtSgX>6TPqp<-Ь@l\n!'i1C6yRgБ\$EFF,ph8PϡBv}'e:Dʀe*Th\0P+F:<j14.h3P]@\0\n /hdBt0hptt;g(WFK(Q%D~*t	(yQ5Gb4{HN}lZ\0-Dn:a{Ϻo?	=qQ5Bj|(E]=~!)R;HΏj\$T8(qPߣDґ DhP\$Cj}z9KP@%	hOޢDf\"ytG>}FS[D-d(OϢ5>f|5ϋ@}QR)=NjGШkD=\0ϒHƑ&hRAʐ\n*r'ͣIF4?3(Q>6~Hh4_>z!O/)D϶GNJMԆՀ1)>vE\n\n(ѡKe\nT(\0002>v\n>:CjۧP=z}dZ(\nRI'\n9Ґ>6M/xR/>ڌI\\A	QG҃%PShh@&*\$?>\0VT/(ZER%z@t	'R١@ZiQFJ0T'O=nm4!Q)E%Z4i\0e#:ZFD5ITh\$MC-,hTo(L\n	h+PyOI*fTЗC*~,Z[VP=n)(R,@ZT6RD{M%jdh}RΞAE\rY4^hӋ\r=,DMt'm\"*Kt(sPaC\\jeta(ӗA|/4(QǢM.|:l'Ϣ=\nح\0O*04yS7L-p\$*I^;g:KB50\$(qPgI~2t1iPӋH0Zǁ%s>>-*TRkJZ.t):S@)twҟ_G\"Y(\0IEm jU(8QMHJ53SiSO7JzB'@6{NN:ThOO@>M:@IiRB9Fމ\n?Fv>c\\mMƕg+1<\nC2K۬o]Fvblc\r\0000X'(xG=/t]Gu/h(\0Ut K.*F/f	 %IZ-/f\nD(BM5	R5EJSNWTeiHP)\0u@;vMA\r00Efxª!]ȩ\n{60*Ddb%D3hrZjSE3L:Q3L[Se7jZT~1j`ageQS3Faa-XX.UZEPkKD\$mYTP{k^*6M\\Qs {+Z	Tl`4U5J\"TI\"P͏'3T|bw*c#\0T?s\0*±`d\rLP0L B\nڪA; hdݍ9ʘ4ULWaé\$6/U aVU:HMŉ̕V´#XQ]jXz'NMHn\0HH4Rb),504U+Փb#6~L?\rޯoVI{Ss\n\0B+eڞR\09\$%*~jZP\rJp:hcqmS+XU}SN?jjpEZKDڸHyUl\nϝ|Vūo° Z.}jɀhx`c_ES%J7=ZKH5_bޫ2@=շWv\$2{5.Q)z\r _A@PTiLJ#g\rhCڟ\n,&c;#aSՃE`Xo\0Vl=fzU_	aʋV.a\rKf5|ҽ*h\n<P7>;<uՑVCb4YKKTuQ-|\r¹Ƙ\r*j`Bb+2PPa\"e̋-E\\6z*a\0f\"ւUwvhfֳ0DJju*0eOE5>wY|{<ppp#vEeOjk\0-j0uV\0P[YTՅ`-\rV\\!^V_\rkԕ1quEje/wV[)jlPEVɄmkif.][Y~R@F,>竡W*#r;iέl_`V81t+P+t[<!*1Z\n¸>y`Z\\5nPaC\n;c\0<^Y~j\0]{Z}HZVTYSx,c·K	3J+Ҿj*%^oUJ X'\\elFJʳMPHl6]ng*ubl<V~7TF35%ZaAªZ,EwZՕ!\"֒(Qv	kC86	G-'k3}Z\n9իktWy7֕3C̭~BY1]][<ؕVǩ3^u}zx5Vװfm0kVשG^qWWé]5n\"kC̭klUy/>*u뱽\\\neHUWcґMupŮYR>~W5Zy]|8e+WI^eʫThb_vVs_ҹ>ص5WQWrɺ@@]\n5tJX*9X5t!e_BOk\0&n	Jd{̫-[+xO<:h#],!{ծBR]޸}%uG\0]5iZ6a)W	qK3k׍oaU,Tu^luu&}[.6v\n)-dŒvW,a8X]y[!z*ؒ6eMl/+b9}j+MC\\_j\0j)k(5o@*k_v9=PW5\\:eqlZWWwx0ků^.0WإS\\2ĝSث:Xab5[7xM4i`Ut{]`}mJB*~-A	Tlc=	0/8H X4ܹ:K jK1.[a&	c+\"J\"QF\n,E4Zv`ݥ`ChZɝMb\rB:k].Mk&\0_S=:QnY'AY]8rT\0d|efiSTꚜNy+\"BGerʁRy˚k*Ij	*yVe/5ZX]X}eqX,D\"a\$2CBc\$lV[`mT:Aً̓	ZfEZ+yvʭl,->a\0mk5Pv+3x\nw7l35aPF5\"aW(Q`6q	Y,euqkVjEQ8.+>QYjݳ:#\"2эUE'qg*y[\rk/gn]+=uaT^+\${6TZ`ĽR@L50&}vh1et%2՘.bǾ{7+YIfw+DpYXchk46/9U!R(ha+\\U<=vx5TX>+a.bF`\n,?״k	U٧S1HuY\naTQ&m.Y(}VF)?EUy`ZEVNܶd~>=V\0M\05mfV,Uvl	VUhQ{HCR\"lڜ^veW[OmU\"(&s-:-LZiE)jEe`j\$A[76El4Nn=şI-df9R BkU\0b6nQV,~ix^MA[\\'p+X\n!XPFb*eTd~մ\\K^l_fP{[\0i.5K[qWYgol-Yj\0W)QW]*biWllkcTHElF]X&Uj8	ʉʰ1mt<r\0P\0diZ\\\nk'>*Fiz*mW;zWt[D=UWWW0=^6~VZU\0dre;m,HN֥`nmټb-OKC%u'2}p	`X!!.A}\r\"pݻe`!,£2f*ΫX5j5\n?ڶP`kuvm[DQ(JjW傓3jo[(eewi9ߘ݇)XJ\nK?L+['tB}V:PmYONmvH^[TY5<滄ܬXeR*-`b\\v/XaFe6o+ZKZ*cku#8XUx@.jY(󖢓؂p\r71\0d%nPVw\nÝ;E@4VK79\$złiK<	ٌS&F!љLeji\$@ƁV\0I3@g\0\\Q8mӖn]Pؚ_DkB,YF\" T\0006&P8z`1RKQkm\rmS:ZU`p`\r.?z`Kծ=܈\n\0\\I@ܑr\$kD95r@\$'d֧rj*.>R֟=rE됁5nC\\\\\0˕\$.Z\\@u[\$]%3s2.M\04nSPKZI.m%\"s27.p\\s|][78ѼO~;;>\\ysk<nc\\sK9A@[W(?s0=wCKtRh=\\SEF.pt)\\7J.te*˚nr]0tM7M.] ~;%]t	-˧W8n\\ºmrr;S(]3uZ`noH+w)iFrmԫ''5rmۣ.=uՠoSILw]u-׺5)1jr\")1RvBת64.].t͛7b.ܜkuM[`]/vk4ֻku}j`nKC	v۶j.]vu95(]Gњ?oIwV]ת?jKw+fn8atȋsֻu}{w~+Iܜavr(6{.KvMʻW\\\rw^p[W	]ܺ3xk\"\r\\{xv%۸n^2?2xEn\\5v⋾W͂xN-W]~pt/\0]4\0eWOCx%+q%PXx]g@iY>9/2Ь?ڃxѮ{ǳ=^@yDk^qz|]苿P\rC};ѷoFW]A}[ѷOz.;U₹^)xzKwM^9x-KϯO\rBZ+ַboz׷ Omoz[e޺c>]k/g¼i>]+7/O\r=NƓooҽ{Rkǳoڽ{rqy{>k/{꼁@7Kr=,^6:8ztoI{7/|2{_lDEIo\"oRƾv}P߾o|z7o1|w;_Ly|Zo~_|M7įG_/!}z|A_d|ZuKק_[-z}o'%zy\$ݒ\0F}\nlu~\02{2_]yBWh4m|3o_}~b[o^ƿ1}-of_/|t_~(_;=v_/JX|_ƾAn=k7oPCrq)k_}Z)k_1P=-k/^d=yBM_޼w|MW/OT|\"_w>N\0)w_:\0`рMZg9\\9a:[EcND	kR؞Y	JE6&lZ\0J(ܿ\$9XPᄬK4&|kdXb:%KhJ'6,,VXJП\0A6c`ʬ&}kL)68X6s\r,rX/`=A6֣ZʍlՔsf/ij-&oIZmrՑ!l&Qt=:5V`ZоZρ&b|	we[@8s\\Bdw\n *tI}	պp&Vb*|13+}޹*y,_q!Y/'ٟ11#n]+P\\:8ppo\rs|u+/[̜,16M\\Vf-r k*ClC`bcPUUW힚'dG}uv\\#`SH9̺0ł9q+`..p`ca0c6\n,S`هOW-kZ][mL;pü#\\HxKϰ8W`s<(y?\"a\"cc4Mh>p0Lxy:խLӵXZY`іMoX!>\r)%7\\A~j,WkB\nWb|EbM\nEH+ .Laa\$mE°1<	8kQa9<KwL*[pLwjRZ,;\r~\r:>v(X\nR,k;e*V@\\}a\0ЗxT UF|\00072hl@/e0>pakD	xv\"Rc) V8)?\0001J\r\"~0?4x	\$\n.\"#r/#U	Q5OgF\0_\0{:N#` JmxX%M/~\$IC\$Vhڪ^%u)1&|bYP%0UTضD\0P3וV=>rP0E=׆N'7ĲI7v*Ӊ~aTUA\"\n	l+*@8HbUK_N,~(<EC ]7%([6mٮ*FT;P3\"8nU 0 U˺ă9/6ł݆bL:nd3܃NBH?~5V,v%ߋpm-`Ć'rsb\neZä+x(x W-	qxcCta!gkaXuAWҴA@tau&:ڻ6;*s|?ԧ6;(athqe\0P\07O{F4lh@k\0ߍ(ȮqR׍7k*#Xu\\>yQF:Gnx>\\|6AMJ܎huLgsqB~p0A;u2aV*hXen\$GC؉q1<V\0F0\"@J\\1012Oc{(E\"`X2f:\0\rc&,ߐe8SZ	rW:CP|kM;ˎ\"a^;s	1(K%V>!\0v-ѫu0V,px.+}U 1<{Ć&>+xyE!<#\0*ATшZcG0sR&@6]b%Dw\"\\gW=bL\rJ.'+<]2s^:7b2Eې\"(GD'\$+ Ax]|o,or!Ȇ izQ0\0a[E+d%\"cҐQXC_bȘs\"qB*=Wi r/ELhkҦF BٗY	Lq3OIRug%	@*y<5|FL;V[#&\\*\0KA-â,	FUG%d̭^=\0Ea%,\0AS@ꍚQxxOLX2W,Yg*\0\"'R'Ilw8RL@]ڤ\0x!VM@]Ѯ&1M`ϦU\$7itxd۩-'&[3ǆM&GZ `)Tܓw9kdY:r\"!Oy(@=P,\r&QY+aڍ+qB+*rJ(#mRvdR]zR\\;\n(ڱɦՉx Y2jޠd \0c ]E.");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6\0\0\0000PLTE\0\0\0+NvYtssuIJ/.C\0\0\0tRNS\0@f\0\0\0	pHYs\0\0\0\0\0\0\0IDAT8ՔN@El϶p6G.\$=>	w5r}z7>P#\$Kj7ݶ?4mt&~3!00^Af0\",*4oEX(*Y	6	PcOW܊mr0~/L\rXj#mjC]Gm\0}ߑuA9X\n8VY+D#iqnKQ8J1Q6Y0`PbQ\\h~>:pSɀGEQ=I{*327\neLB~/R(\$) HQni6J	<-.wɪjVmm?SHvƩ\0^q)]U92,;Ǎ'p!X˃LD.tæ/wR	wdr2Ƥ4[=E5S+c\0\0\0\0IENDB`";}exit;}if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if(preg_match('~^/[^/]~',$_SERVER["HTTP_X_FORWARDED_PREFIX"]))$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,cookie_path(),"",HTTPS,true);session_start();}if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){$_GET=remove_slashes($_GET,$bd);$_POST=remove_slashes($_POST,$bd);$_COOKIE=remove_slashes($_COOKIE,$bd);}if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'16');function
lang($u,$Mf=null){$va=func_get_args();$va[0]=$u;return
call_user_func_array('Adminer\lang_format',$va);}function
lang_format($hj,$Mf=null){if(is_array($hj)){$Qg=($Mf==1?0:($Mf%10>1&&$Mf%10<5&&$Mf/10%10!=1?1:2));$hj=$hj[$Qg];}$hj=str_replace("'",'’',$hj);$va=func_get_args();array_shift($va);$nd=str_replace("%d","%s",$hj);if($nd!=$hj)$va[0]=format_number($Mf);return
vsprintf($nd,$va);}define('Adminer\LANG','pl');abstract
class
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($N,$V,$G);abstract
function
quote($Q);abstract
function
select_db($Pb);abstract
function
query($H,$sj=false);function
multi_query($H){return$this->multi=$this->query($H);}function
store_result(){return$this->multi;}function
next_result(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($oc,$V,$G,array$eg=array()){$eg[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$eg[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($oc,$V,$G,$eg);}catch(\Exception$Ic){return$Ic->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($Q){return$this->pdo->quote($Q);}function
query($H,$sj=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Nieznany błąd.';return
false;}$this->store_result($I);return$I;}function
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
true;}function
next_result(){$I=$this->multi;if(!is_object($I))return
false;$I->_offset=0;return@$I->nextRowset();}}class
PdoResult
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
function
fetch_array($vf){$J=$this->fetch($vf);return($J?array_map(array($this,'unresource'),$J):$J);}private
function
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
seek($D){for($s=0;$s<$D;$s++)$this->fetch();}}}function
add_driver($t,$C){SqlDriver::$drivers[$t]=$C;}function
get_driver($t){return
SqlDriver::$drivers[$t];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$delimiter=";";var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
function
connect($N,$V,$G){$f=new
Db;return($f->attach($N,$V,$G)?:$f);}function
__construct(Db$f){$this->conn=$f;}function
types(){return
call_user_func_array('array_merge',array_values($this->types));}function
structuredTypes(){return
array_map('array_keys',$this->types);}function
enumLength(array$m){}function
unconvertFunction(array$m){}function
select($R,array$M,array$Z,array$xd,array$gg=array(),$z=1,$E=0,$ah=false){$ve=(count($xd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$xd,$gg,$z,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$xd&&$ve&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($xd&&$ve?"\nGROUP BY ".implode(", ",$xd):"").($gg?"\nORDER BY ".implode(", ",$gg):""),$z,($E?$z*$E:0),"\n");$ri=microtime(true);$J=$this->conn->query($H);if($ah)echo
adminer()->selectQuery($H,$ri,!$J);return$J;}function
delete($R,$ih,$z=0){$H="FROM ".table($R);return
queries("DELETE".($z?limit1($R,$H,$ih):" $H$ih"));}function
update($R,array$O,$ih,$z=0,$Uh="\n"){$Nj=array();foreach($O
as$x=>$X)$Nj[]="$x = $X";$H=table($R)." SET$Uh".implode(",$Uh",$Nj);return
queries("UPDATE".($z?limit1($R,$H,$ih,$Uh):" $H$ih"));}function
insert($R,array$O){return
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function
insertReturning($R){return"";}function
insertUpdate($R,array$L,array$Yg){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($H,$Ui){}function
convertSearch($u,array$X,array$m){return$u;}function
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
quoteBinary($Gh){return
q($Gh);}function
warnings(){}function
tableHelp($C,$ze=false){}function
inheritsFrom($R){return
array();}function
inheritedTables($R){return
array();}function
partitionsInfo($R){return
array();}function
hasCStyleEscapes(){return
false;}function
engines(){return
array();}function
supportsIndex(array$S){return!is_view($S);}function
indexAlgorithms(array$Bi){return
array();}function
checkConstraints($R){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME".($this->conn->flavor=='maria'?" AND c.TABLE_NAME = ".q($R):"")."
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($R).(JUSH=="pgsql"?"
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'":""),$this->conn);}function
allFields(){$J=array();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
class
SqliteDb
extends
SqlDb{var$extension="SQLite3";private$link;function
attach($o,$V,$G){$this->link=new
\SQLite3($o);$Qj=$this->link->version();$this->server_info=$Qj["versionString"];return'';}function
query($H,$sj=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
false;}elseif($I->numColumns())return
new
Result($I);$this->affected_rows=$this->link->changes();return
true;}function
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;}function
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}}}elseif(extension_loaded("pdo_sqlite")){abstract
class
SqliteDb
extends
PdoDb{var$extension="PDO_SQLite";function
attach($o,$V,$G){return$this->dsn(DRIVER.":$o","","");}}}if(class_exists('Adminer\SqliteDb')){class
Db
extends
SqliteDb{function
attach($o,$V,$G){parent::attach($o,$V,$G);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a"))return!self::attach($o,'','');return
false;}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($N,$V,$G){if($G!="")return'Baza danych nie obsługuje hasła.';return
parent::connect(":memory:","","");}function
__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");if(min_version(3.37,0,$f))$this->types[0]["any"]=0;}function
structuredTypes(){return
array_keys($this->types[0]);}function
engines(){return(min_version(3.37)?array("STRICT","STRICT, WITHOUT ROWID","WITHOUT ROWID"):(min_version("3.8.2")?array("WITHOUT ROWID"):array()));}function
insertUpdate($R,array$L,array$Yg){$Nj=array();foreach($L
as$O)$Nj[]="(".implode(", ",$O).")";return
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Nj));}function
tableHelp($C,$ze=false){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if(preg_match('~^sqlite(_temp)?_(master|schema)$~',$C))return"schematab.html";}function
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$af);return
array_combine($af[2],$af[2]);}function
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$J[$R][]=$m;}return$J;}}function
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
table($u){return
idf_escape($u);}function
get_databases($id){return
array();}function
limit($H,$Z,$z,$D=0,$Uh=" "){return" $H$Z".($z?$Uh."LIMIT $z".($D?" OFFSET $D":""):"");}function
limit1($R,$H,$Z,$Uh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$Uh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Uh."LIMIT 1)");}function
db_collation($j,$lb){return
get_val("PRAGMA encoding");}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
count_tables($i){return
array();}function
table_status($C=""){$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, sql, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K){if($K["Engine"]=="table"){$xi=preg_replace('~.*\)~s','',$K["sql"]);$K["Engine"]=implode(", ",array_filter(array((preg_match('~\bSTRICT\b~i',$xi)?"STRICT":""),(preg_match('~\bWITHOUT\s+ROWID\b~i',$xi)?"WITHOUT ROWID":""),)));}unset($K["sql"]);$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($C!=""?" WHERE name = ".q($C):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($R){$J=array();$li=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$dh=array("select"=>1,"where"=>1,"order"=>1);if(!preg_match('~^sqlite(_temp)?_(master|schema)$~',$R))$dh+=array("insert"=>1,"update"=>1);foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$C=$K["name"];$U=strtolower($K["type"]);$k=$K["dflt_value"];$J[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":(preg_match('~any~i',$U)?"any":"numeric"))))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$k,$B)?str_replace("''","'",$B[1]):($k=="NULL"?null:$k)),"null"=>!$K["notnull"],"privileges"=>$dh,"primary"=>$K["pk"],);if($K["pk"]&&preg_match('~\bAUTOINCREMENT\b~i',$li))$J[$C]["auto_increment"]=true;}$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$li,$af,PREG_SET_ORDER);foreach($af
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($J[$C])$J[$C]["collation"]=trim($B[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$li,$af,PREG_SET_ORDER);foreach($af
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));$J[$C]["default"]=$B[3];$J[$C]["generated"]=strtoupper($B[4]);}return$J;}function
indexes($R,$g=null){$g=connection($g);$J=array();$li=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$li,$B)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$af,PREG_SET_ORDER);foreach($af
as$B){$J[""]["columns"][]=idf_unescape($B[2]).$B[4];$J[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$J){foreach(fields($R)as$C=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$pi=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$K){$C=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$g)as$Fh){$v["columns"][]=$Fh["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$pi[$C],$th)){preg_match_all('/("[^"]*+")+( DESC)?/',$th[2],$af);foreach($af[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$C))$J[$C]=$v;}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$p=&$J[$K["id"]];if(!$p)$p=$K;$p["source"][]=$K["from"];$p["target"][]=$K["to"];}return$J;}function
view($C){return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($C))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($j){return
false;}function
error(){return
h(connection()->error);}function
check_sqlite_name($C){$Qc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Qc)\$~",$C)){connection()->error=sprintf('Proszę użyć jednego z rozszerzeń: %s.',str_replace("|",", ",$Qc));return
false;}return
true;}function
create_database($j,$c){if(file_exists($j)){connection()->error='Plik już istnieje.';return
false;}if(!check_sqlite_name($j))return
false;try{$_=new
Db();$_->attach($j,'','');}catch(\Exception$Ic){connection()->error=$Ic->getMessage();return
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
true;}function
drop_databases($i){connection()->attach(":memory:",'','');foreach($i
as$j){if(!check_sqlite_name($j))return
false;if(!@unlink($j)){connection()->error='Plik już istnieje.';return
false;}}return
true;}function
rename_database($C,$c){if(!check_sqlite_name($C))return
false;connection()->attach(":memory:",'','');connection()->error='Plik już istnieje.';return@rename(DB,$C);}function
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
alter_table($R,$C,$n,$kd,$qb,$yc,$c,$Aa,$F){$Fj=($R==""||$kd||$yc!==null);foreach($n
as$m){if($m[0]!=""||!$m[1]||$m[2]){$Fj=true;break;}}$b=array();$rg=array();foreach($n
as$m){if($m[1]){$b[]=($Fj?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$rg[$m[0]]=$m[1][0];}}if(!$Fj){foreach($b
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
false;}elseif(!recreate_table($R,$C,$b,$rg,$kd,$Aa,array(),"","",$yc))return
false;if($Aa){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Aa WHERE name = ".q($C));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $Aa)");queries("COMMIT");}return
true;}function
recreate_table($R,$C,array$n,array$rg,array$kd,$Aa="",$w=array(),$kc="",$ka="",$yc=null){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$rg[$x]=idf_escape($x);}}$Zg=false;foreach($n
as$m){if($m[6])$Zg=true;}$mc=array();foreach($w
as$x=>$X){if($X[2]=="DROP"){$mc[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$De=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$rg[$d])continue
2;$e[]=$rg[$d].($v["descs"][$x]?" DESC":"");}if(!$mc[$De]){if($v["type"]!="PRIMARY"||!$Zg)$w[]=array($v["type"],$De,$e);}}foreach($w
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$kd[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$De=>$p){foreach($p["source"]as$x=>$d){if(!$rg[$d])continue
2;$p["source"][$x]=idf_unescape($rg[$d]);}if(!isset($kd[" $De"]))$kd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Wa=array();foreach($n
as$m){if(preg_match('~GENERATED~',$m[3]))unset($rg[array_search($m[0],$rg)]);$Wa[]="  ".implode($m);}$Wa=array_merge($Wa,array_filter($kd));foreach(driver()->checkConstraints($R)as$Ya){if($Ya!=$kc)$Wa[]="  CHECK ($Ya)";}if($ka)$Wa[]="  CHECK ($ka)";$Oi=($R==$C?"adminer_$C":$C);if($yc===null&&$R!="")$yc=idx(table_status1($R),"Engine");if(!queries("CREATE TABLE ".table($Oi)." (\n".implode(",\n",$Wa)."\n)".(in_array($yc,driver()->engines())?" $yc":"")))return
false;if($R!=""){if($rg&&!queries("INSERT INTO ".table($Oi)." (".implode(", ",$rg).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($rg)))." FROM ".table($R)))return
false;$oj=array();foreach(triggers($R)as$mj=>$Vi){$lj=trigger($mj,$R);$oj[]="CREATE TRIGGER ".idf_escape($mj)." ".implode(" ",$Vi)." ON ".table($C)."\n$lj[Statement]";}$Aa=$Aa?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$C&&!queries("ALTER TABLE ".table($Oi)." RENAME TO ".table($C)))||!alter_indexes($C,$w))return
false;if($Aa)queries("UPDATE sqlite_sequence SET seq = $Aa WHERE name = ".q($C));foreach($oj
as$lj){if(!queries($lj))return
false;}queries("COMMIT");}return
true;}function
index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $e";}function
alter_indexes($R,$b){foreach($b
as$Yg){if($Yg[0]=="PRIMARY")return
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
truncate_tables($T){return
apply_queries("DELETE FROM",$T);}function
drop_views($Sj){return
apply_queries("DROP VIEW",$Sj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
move_tables($T,$Sj,$Mi){return
false;}function
trigger($C,$R){if($C=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$nj=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$nj["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$Of=$B[3];return
array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($Of?" OF":""),"Of"=>idf_unescape($Of),"Trigger"=>$C,"Statement"=>$B[4],);}function
triggers($R){$J=array();$nj=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$nj["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$B);$J[$K["name"]]=array($B[1],$B[2]);}return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id($I){return
get_val("SELECT LAST_INSERT_ROWID()");}function
explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
found_rows($S,$Z){}function
types(){return
array();}function
create_sql($R,$Aa,$vi){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$J
.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$J;}function
truncate_sql($R){return"DELETE FROM ".table($R);}function
use_sql($Pb,$vi=""){}function
trigger_sql($R){return
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
show_variables(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$C=$K["name"];if($C!="pragma_list"&&$C!="compile_options"){$J[$C]=array($C,'');foreach(get_rows("PRAGMA $C")as$K)$J[$C][1].=implode(", ",$K)."\n";}}return$J;}function
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$dg)$J[]=explode("=",$dg,2)+array('','');return$J;}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Vc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
PgsqlDb
extends
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
_error($Dc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
attach($N,$V,$G){$j=adminer()->database();set_error_handler(array($this,'_error'));list($Nd,$Pg)=host_port($N);$this->string="host=$Nd".($Pg?" port=$Pg":"")." user='".addcslashes($V,"'\\")."' password='".addcslashes($G,"'\\")."'";$qi=adminer()->connectSsl();if(isset($qi["mode"]))$this->string
.=" sslmode='".$qi["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
value($X,array$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
select_db($Pb){if($Pb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Pb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
query($H,$sj=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
warnings(){if(PHP_VERSION_ID>=70100){$J=implode("\n",pg_last_notice($this->link,2));pg_last_notice($this->link,3);}else$J=pg_last_notice($this->link);return
nl_br(h($J));}function
copyFrom($R,array$L){$this->error='';set_error_handler(function($Dc,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);return
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
fetch_assoc(){return
pg_fetch_assoc($this->result);}function
fetch_row(){return
pg_fetch_row($this->result);}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$J->type=(preg_match(number_type(),$U)?0:15);$J->charsetnr=($U=="bytea"?63:0);return$J;}}}elseif(extension_loaded("pdo_pgsql")){class
PgsqlDb
extends
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
attach($N,$V,$G){$j=adminer()->database();list($Nd,$Pg)=host_port($N);$oc="pgsql:host=$Nd".($Pg?" port=$Pg":"")." client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$qi=adminer()->connectSsl();if(isset($qi["mode"]))$oc
.=" sslmode='".$qi["mode"]."'";return$this->dsn($oc,$V,$G);}function
select_db($Pb){return(adminer()->database()==$Pb);}function
query($H,$sj=false){$J=parent::query($H,$sj);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
warnings(){}function
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
Db
extends
PgsqlDb{function
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$B)){$L=explode("\n",$B[2]);$this->affected_rows=count($L);return$this->copyFrom($B[1],$L);}return
parent::multi_query($H);}}}class
Driver
extends
SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","~*","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";static
function
connect($N,$V,$G){$f=parent::connect($N,$V,$G);if(is_string($f))return$f;$Qj=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$Qj)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$Qj);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Numeryczne'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Data i czas'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Tekstowe'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binarne'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Sieć'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometria'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Tekstowe']["json"]=4294967295;if(min_version(9.4,0,$f))$this->types['Tekstowe']["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f)){$this->generated[]="STORED";if(min_version(18,0,$f))$this->generated[]="VIRTUAL";}$this->partitionBy=array("RANGE","LIST");if(!$f->flavor)$this->partitionBy[]="HASH";}function
enumLength(array$m){$_c=$this->types['Typy użytkownika'][$m["type"]];return($_c?type_values($_c):"");}function
setUserTypes($rj){$this->types['Typy użytkownika']=array_flip($rj);}function
insertReturning($R){$Aa=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($Aa)==1?" RETURNING ".idf_escape(key($Aa)):"");}function
insertUpdate($R,array$L,array$Yg){foreach($L
as$O){$_j=array();$Z=array();foreach($O
as$x=>$X){$_j[]="$x = $X";if(isset($Yg[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_j)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
slowQuery($H,$Ui){$this->conn->query("SET statement_timeout = ".(1000*$Ui));$this->conn->timeout=1000*$Ui;return$H;}function
convertSearch($u,array$X,array$m){$Ri="char|text";if(strpos($X["op"],"LIKE")===false)$Ri
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Ri~",$m["type"])?$u:"CAST($u AS text)");}function
quoteBinary($Gh){return"'\\x".bin2hex($Gh)."'";}function
warnings(){return$this->conn->warnings();}function
tableHelp($C,$ze=false){$Te=array("information_schema"=>"infoschema","pg_catalog"=>($ze?"view":"catalog"),);$_=$Te[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}function
inheritsFrom($R){return
get_rows("SELECT relname AS table, nspname AS ns FROM pg_class JOIN pg_inherits ON inhparent = oid JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE inhrelid = ".$this->tableOid($R)." ORDER BY 2, 1");}function
inheritedTables($R){return
get_rows("SELECT relname AS table, nspname AS ns FROM pg_inherits JOIN pg_class ON inhrelid = oid JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE inhparent = ".$this->tableOid($R)." ORDER BY 2, 1");}function
partitionsInfo($R){$K=(min_version(10)?$this->conn->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($R))->fetch_assoc():null);if($K){$za=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $K[partrelid] AND attnum IN (".str_replace(" ",", ",$K["partattrs"]).")");$Qa=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
array("partition_by"=>$Qa[$K["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$za)),);}return
array();}function
tableOid($R){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($R)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
indexAlgorithms(array$Bi){static$J=array();if(!$J)$J=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = '".($this->conn->flavor=='cockroach'?"prefix":"btree")."' DESC, amname");return$J;}function
supportsIndex(array$S){return$S["Engine"]!="view";}function
hasCStyleEscapes(){static$Sa;if($Sa===null)$Sa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Sa;}}function
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
table($u){return
idf_escape($u);}function
get_databases($id){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($H,$Z,$z,$D=0,$Uh=" "){return" $H$Z".($z?$Uh."LIMIT $z".($D?" OFFSET $D":""):"");}function
limit1($R,$H,$Z,$Uh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$Uh):" $H".(is_view(table_status1($R))?$Z:$Uh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Uh."LIMIT 1)"));}function
db_collation($j,$lb){return
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}function
logged_user(){return
get_val("SELECT user");}function
tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$H
.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$H
.="
ORDER BY 1";return
get_key_vals($H);}function
count_tables($i){$J=array();foreach($i
as$j){if(connection()->select_db($j))$J[$j]=count(tables_list());}return$J;}function
table_status($C=""){static$Gd;if($Gd===null)$Gd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
	relname AS \"Name\",
	CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($Gd?",
	pg_table_size(c.oid) AS \"Data_length\",
	pg_indexes_size(c.oid) AS \"Index_length\"":"").",
	obj_description(c.oid, 'pg_class') AS \"Comment\",
	".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
	reltuples AS \"Rows\",
	".(min_version(10)?"relispartition::int AS partition,":"")."
	current_schema() AS nspname
FROM pg_class c
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
AND relnamespace = ".driver()->nsOid."
".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return
in_array($S["Engine"],array("view","materialized view"));}function
fk_support($S){return
true;}function
fields($R){$J=array();$sa=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
	a.attname AS field,
	format_type(a.atttypid, a.atttypmod) AS full_type,
	pg_get_expr(d.adbin, d.adrelid) AS default,
	a.attnotnull::int,
	i.indrelid AS primary,
	col_description(a.attrelid, a.attnum) AS comment".(min_version(10)?",
	a.attidentity".(min_version(12)?",
	a.attgenerated":""):"")."
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_index i ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) AND i.indisprimary
WHERE a.attrelid = ".driver()->tableOid($R)."
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$B);list(,$U,$y,$K["length"],$la,$wa)=$B;$K["length"].=$wa;$ab=$U.$la;if(isset($sa[$ab])){$K["type"]=$sa[$ab];$K["full_type"]=$K["type"].$y.$wa;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$y.$la.$wa;}if(in_array($K['attidentity'],array('a','d')))$K['default']='GENERATED '.($K['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$K["generated"]=idx(array("s"=>"STORED","v"=>"VIRTUAL"),$K["attgenerated"],"");$K["null"]=!$K["attnotnull"];$K["auto_increment"]=$K['attidentity']||preg_match('~^nextval\(~i',$K["default"])||preg_match('~^unique_rowid\(~',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(!$K['generated']&&preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$B))$K["default"]=($B[1]=="NULL"?null:idf_unescape($B[1]).$B[2]);$J[$K["field"]]=$K;}return$J;}function
indexes($R,$g=null){$g=connection($g);$J=array();$Ei=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ei AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, amname, pg_get_expr(indpred, indrelid, true) AS partial, pg_get_expr(indexprs, indrelid) AS indexpr
FROM pg_index
JOIN pg_class ON indexrelid = oid
JOIN pg_am ON pg_am.oid = pg_class.relam
WHERE indrelid = $Ei
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$uh=$K["relname"];$J[$uh]["type"]=($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX"));$J[$uh]["columns"]=array();$J[$uh]["descs"]=array();$J[$uh]["algorithm"]=$K["amname"];$J[$uh]["partial"]=$K["partial"];$fe=preg_split('~(?<=\)), (?=\()~',$K["indexpr"]);foreach(explode(" ",$K["indkey"])as$ge)$J[$uh]["columns"][]=($ge?$e[$ge]:array_shift($fe));foreach(explode(" ",$K["indoption"])as$he)$J[$uh]["descs"][]=(intval($he)&1?'1':null);$J[$uh]["lengths"]=array();}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, condeferred::int AS deferred, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = ".driver()->tableOid($R)."
AND contype = 'f'::char
ORDER BY conkey, conname")as$K){$K['deferrable']=($K['deferrable']?'':'NOT ').'DEFERRABLE'.($K['deferred']?' INITIALLY DEFERRED':'');if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$B)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$Ye)){$K['ns']=idf_unescape($Ye[2]);$K['table']=idf_unescape($Ye[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$B[4],$Ye)?$Ye[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$B[4],$Ye)?$Ye[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
view($C){return
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($C).")")));}function
collations(){return
array();}function
information_schema($j){return
get_schema()=="information_schema";}function
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$B))$J=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\1<b>\2</b>',$B[2]).$B[4];return
nl_br($J);}function
create_database($j,$c){return
queries("CREATE DATABASE ".idf_escape($j).($c?" ENCODING ".idf_escape($c):""));}function
drop_databases($i){connection()->close();return
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
rename_database($C,$c){connection()->close();return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
auto_increment(){return"";}function
alter_table($R,$C,$n,$kd,$qb,$yc,$c,$Aa,$F){$b=array();$hh=array();if($R!=""&&$R!=$C)$hh[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);$Vh="";foreach($n
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$Mj=$X[5];unset($X[5]);if($m[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":"  ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$hh[]="ALTER TABLE ".table($C)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Wh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) (STORED|VIRTUAL)~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($Wh).")":"DROP DEFAULT"));if(isset($X[6]))$Vh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Wh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$Mj!="")$hh[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($Mj!=""?substr($Mj,9):"''");}}$b=array_merge($b,$kd);if($R==""){$P="";if($F){$gb=(connection()->flavor=='cockroach');$P=" PARTITION BY $F[partition_by]($F[partition])";if($F["partition_by"]=='HASH'){$Fg=+$F["partitions"];for($s=0;$s<$Fg;$s++)$hh[]="CREATE TABLE ".idf_escape($C."_$s")." PARTITION OF ".idf_escape($C)." FOR VALUES WITH (MODULUS $Fg, REMAINDER $s)";}else{$Xg="MINVALUE";foreach($F["partition_names"]as$s=>$X){$Y=$F["partition_values"][$s];$Bg=" VALUES ".($F["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Xg) TO ($Y)");if($gb)$P
.=($s?",":" (")."\n  PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$Bg";else$hh[]="CREATE TABLE ".idf_escape($C."_$X")." PARTITION OF ".idf_escape($C)." FOR$Bg";$Xg=$Y;}$P
.=($gb?"\n)":"");}}array_unshift($hh,"CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($hh,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Vh)array_unshift($hh,$Vh);if($qb!==null)$hh[]="COMMENT ON TABLE ".table($C)." IS ".q($qb);foreach($hh
as$H){if(!queries($H))return
false;}return
true;}function
alter_indexes($R,$b){$h=array();$jc=array();$hh=array();foreach($b
as$X){if($X[0]!="INDEX")$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$jc[]=idf_escape($X[1]);else$hh[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R).($X[3]?" USING $X[3]":"")." (".implode(", ",$X[2]).")".($X[4]?" WHERE $X[4]":"");}if($h)array_unshift($hh,"ALTER TABLE ".table($R).implode(",",$h));if($jc)array_unshift($hh,"DROP INDEX ".implode(", ",$jc));foreach($hh
as$H){if(!queries($H))return
false;}return
true;}function
truncate_tables($T){return
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function
drop_views($Sj){return
drop_tables($Sj);}function
drop_tables($T){foreach($T
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
false;}return
true;}function
move_tables($T,$Sj,$Mi){foreach(array_merge($T,$Sj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Mi)))return
false;}return
true;}function
trigger($C,$R){if($C=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($C);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement"
FROM information_schema.triggers'."
$Z
ORDER BY event_manipulation DESC")as$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$lj=trigger($K["trigger_name"],$R);$J[$lj["Trigger"]]=array($lj["Timing"],$lj["Event"]);}return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
routine($C,$U){$L=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
FROM information_schema.routines
WHERE routine_schema = current_schema() AND specific_name = '.q($C));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT COALESCE(parameter_name, ordinal_position::text) AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = '.q($C).'
ORDER BY ordinal_position');return$J;}function
routines(){return
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
FROM information_schema.routines
WHERE routine_schema = current_schema()
ORDER BY SPECIFIC_NAME');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($C,$K){$J=array();foreach($K["fields"]as$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
idf_escape($C)."(".implode(", ",$J).")";}function
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
explain($f,$H){return$f->query("EXPLAIN $H");}function
found_rows($S,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$th))return$th[1];}function
types(){return
get_key_vals("SELECT oid, typname
FROM pg_type
WHERE typnamespace = ".driver()->nsOid."
AND typtype IN ('b','d','e')
AND typelem = 0");}function
type_values($t){$Cc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($Cc?"'".implode("', '",array_map('addslashes',$Cc))."'":"");}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){return
get_val("SELECT current_schema()");}function
set_schema($Ih,$g=null){$J=connection($g)->query("SET search_path TO ".idf_escape($Ih));driver()->setUserTypes(types());return$J;}function
foreign_keys_sql($R){$J="";$P=table_status1($R);$Jf=idf_escape($P['nspname']);$gd=foreign_keys($R);ksort($gd);foreach($gd
as$fd=>$ed)$J
.="ALTER TABLE ONLY $Jf.".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($fd)." ".preg_replace('~( REFERENCES )([^(.]+\()~',"\\1$Jf.\\2",$ed["definition"]).";\n";return($J?"$J\n":$J);}function
create_sql($R,$Aa,$vi){$zh=array();$Xh=array();$P=table_status1($R);$Jf=idf_escape($P['nspname']);if(is_view($P)){$Rj=view($R);return
rtrim("CREATE VIEW $Jf.".idf_escape($R)." AS $Rj[select]",";");}$n=fields($R);if(count($P)<2||empty($n))return
false;$J="CREATE TABLE $Jf.".idf_escape($P['Name'])." (\n    ";foreach($n
as$m){if($m['default']=="nextval('$P[Name]_$m[field]_seq')"){$m['default']=null;$m['full_type']=preg_replace('~int(eger)?~','serial',$m['full_type']);}$_g=idf_escape($m['field']).' '.$m['full_type'].preg_replace('~(nextval\(\')([^.\']+\')~','\1'.str_replace("'","''",$P['nspname']).'.\2',default_value($m)).($m['null']?"":" NOT NULL");$zh[]=$_g;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$af)){$Wh=$af[1];$ki=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Wh)):"SELECT * FROM $Wh"),null,"-- "));$Xh[]=($vi=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Jf.$Wh;\n":"")."CREATE SEQUENCE $Jf.$Wh INCREMENT $ki[increment_by] MINVALUE $ki[min_value] MAXVALUE $ki[max_value]".($Aa&&$ki['last_value']?" START ".($ki["last_value"]+1):"")." CACHE $ki[cache_value];";}}if(!empty($Xh))$J=implode("\n\n",$Xh)."\n\n$J";$Yg="";foreach(indexes($R)as$de=>$v){if($v['type']=='PRIMARY'){$Yg=$de;$zh[]="CONSTRAINT ".idf_escape($de)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$wb=>$yb)$zh[]="CONSTRAINT ".idf_escape($wb)." CHECK ($yb)";$J
.=implode(",\n    ",$zh)."\n)";$Bg=driver()->partitionsInfo($P['Name']);if($Bg)$J
.="\nPARTITION BY $Bg[partition_by]($Bg[partition])";$J
.="\nWITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J
.="\n\nCOMMENT ON TABLE $Jf.".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($n
as$Xc=>$m){if($m['comment'])$J
.="\n\nCOMMENT ON COLUMN $Jf.".idf_escape($P['Name']).".".idf_escape($Xc)." IS ".q($m['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($Yg?" AND indexname != ".q($Yg):""),null,"-- ")as$K)$J
.="\n\n$K[indexdef];";return
rtrim($J,';');}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$kj=>$jj){$lj=trigger($kj,$P['Name']);$J
.="\nCREATE TRIGGER ".idf_escape($lj['Trigger'])." $lj[Timing] $lj[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $lj[Type] $lj[Statement];;\n";}return$J;}function
use_sql($Pb,$vi=""){$C=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$vi)){if($vi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $C;\n";$J
.="CREATE DATABASE $C;\n";}return"$J\\connect $C";}function
show_variables(){return
get_rows("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$Vc);}function
kill_process($X){return
queries("SELECT pg_terminate_backend(".number($X).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){return
get_val("SHOW max_connections");}}add_driver("oracle","Oracle (beta)");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="oci8";var$_current_db;private$link;function
_error($Dc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
attach($N,$V,$G){$this->link=@oci_new_connect($V,$G,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$l=oci_error();return$l["message"];}function
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
select_db($Pb){$this->_current_db=$Pb;return
true;}function
query($H,$sj=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["message"];return
false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
new
Result($I);$this->affected_rows=oci_num_rows($I);oci_free_statement($I);}return$J;}function
timeout($wf){return
oci_set_call_timeout($this->link,$wf);}}class
Result{var$num_rows;private$result,$offset=1;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$x]=$X->load();}return$K;}function
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}}}elseif(extension_loaded("pdo_oci")){class
Db
extends
PdoDb{var$extension="PDO_OCI";var$_current_db;function
attach($N,$V,$G){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$G);}function
select_db($Pb){$this->_current_db=$Pb;return
true;}}}class
Driver
extends
SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
__construct(Db$f){parent::__construct($f);$this->types=array('Numeryczne'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Data i czas'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Tekstowe'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binarne'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
begin(){return
true;}function
insertUpdate($R,array$L,array$Yg){foreach($L
as$O){$_j=array();$Z=array();foreach($O
as$x=>$X){$_j[]="$x = $X";if(isset($Yg[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_j)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
hasCStyleEscapes(){return
true;}}function
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
table($u){return
idf_escape($u);}function
get_databases($id){return
get_vals("SELECT DISTINCT tablespace_name FROM (
SELECT tablespace_name FROM user_tablespaces
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
)
ORDER BY 1");}function
limit($H,$Z,$z,$D=0,$Uh=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$D).") WHERE rnum > $D":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$D):" $H$Z"));}function
limit1($R,$H,$Z,$Uh="\n"){return" $H$Z";}function
db_collation($j,$lb){return
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
logged_user(){return
get_val("SELECT USER FROM DUAL");}function
get_current_db(){$j=connection()->_current_db?:DB;unset(connection()->_current_db);return$j;}function
where_owner($Vg,$ug="owner"){if(!$_GET["ns"])return'';return"$Vg$ug = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$ug=where_owner('');return"(SELECT $e FROM all_views WHERE ".($ug?:"rownum < 0").")";}function
tables_list(){$Rj=views_table("view_name");$ug=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$ug
UNION SELECT view_name, 'view' FROM $Rj
ORDER BY 1");}function
count_tables($i){$J=array();foreach($i
as$j)$J[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$J;}function
table_status($C=""){$J=array();$Nh=q($C);$j=get_current_db();$Rj=views_table("view_name");$ug=where_owner(" AND ");foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q($j).$ug.($C!=""?" AND table_name = $Nh":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $Rj".($C!=""?" WHERE view_name = $Nh":"")."
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return
true;}function
fields($R){$J=array();$ug=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$ug ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$y="$K[DATA_PRECISION],$K[DATA_SCALE]";if($y==",")$y=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$J;}function
indexes($R,$g=null){$J=array();$ug=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
FROM all_ind_columns aic
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
WHERE aic.table_name = ".q($R)."$ug
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$de=$K["INDEX_NAME"];$nb=$K["DATA_DEFAULT"];$nb=($nb?trim($nb,'"'):$K["COLUMN_NAME"]);$J[$de]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$de]["columns"][]=$nb;$J[$de]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$de]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
view($C){$Rj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Rj.' WHERE view_name = '.q($C));return
reset($L);}function
collations(){return
array();}function
information_schema($j){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
h(connection()->error);}function
explain($f,$H){$f->query("EXPLAIN PLAN FOR $H");return$f->query("SELECT * FROM plan_table");}function
found_rows($S,$Z){}function
auto_increment(){return"";}function
alter_table($R,$C,$n,$kd,$qb,$yc,$c,$Aa,$F){$b=$jc=array();$ng=($R?fields($R):array());foreach($n
as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$mg=$ng[$m[0]];if($X&&$mg){$Qf=process_field($mg,$mg);if($X[2]==$Qf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):"  ").implode($X).($R!=""?")":"");else$jc[]=idf_escape($m[0]);}if($R=="")return
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$jc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$jc).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
alter_indexes($R,$b){$jc=array();$hh=array();foreach($b
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($hh,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$jc[]=idf_escape($X[1]);else$hh[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($jc)array_unshift($hh,"DROP INDEX ".implode(", ",$jc));foreach($hh
as$H){if(!queries($H))return
false;}return
true;}function
foreign_keys($R){$J=array();$H="SELECT c_list.CONSTRAINT_NAME as NAME,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.OWNER as DEST_DB,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN,
c_list.DELETE_RULE as ON_DELETE
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = 'R'
AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Sj){return
apply_queries("DROP VIEW",$Sj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
last_id($I){return
0;}function
schemas(){$J=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($J?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
get_schema(){return
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
set_schema($Kh,$g=null){return
connection($g)->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Kh));}function
show_variables(){return
get_rows('SELECT name, display_value FROM v$parameter');}function
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$x=>$X)$J[]=array($x,$X);return$J;}function
process_list(){return
get_rows('SELECT
	sess.process AS "process",
	sess.username AS "user",
	sess.schemaname AS "schema",
	sess.status AS "status",
	sess.wait_class AS "wait_class",
	sess.seconds_in_wait AS "seconds_in_wait",
	sql.sql_text AS "sql_text",
	sess.machine AS "machine",
	sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \'USER\'
ORDER BY PROCESS
');}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Vc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="sqlsrv";private$link,$result;private
function
get_error(){$this->error="";foreach(sqlsrv_errors()as$l){$this->errno=$l["code"];$this->error
.="$l[message]\n";}$this->error=rtrim($this->error);}function
attach($N,$V,$G){$xb=array("UID"=>$V,"PWD"=>$G,"CharacterSet"=>"UTF-8");$qi=adminer()->connectSsl();if(isset($qi["Encrypt"]))$xb["Encrypt"]=$qi["Encrypt"];if(isset($qi["TrustServerCertificate"]))$xb["TrustServerCertificate"]=$qi["TrustServerCertificate"];$j=adminer()->database();if($j!="")$xb["Database"]=$j;list($Nd,$Pg)=host_port($N);$this->link=@sqlsrv_connect($Nd.($Pg?",$Pg":""),$xb);if($this->link){$ie=sqlsrv_server_info($this->link);$this->server_info=$ie['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
quote($Q){$tj=strlen($Q)!=strlen(utf8_decode($Q));return($tj?"N":"")."'".str_replace("'","''",$Q)."'";}function
select_db($Pb){return$this->query(use_sql($Pb));}function
query($H,$sj=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
false;}return$this->store_result($I);}function
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
false;}return
true;}function
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
false;if(sqlsrv_field_metadata($I))return
new
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
true;}function
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
Result{var$num_rows;private$result,$offset=0,$fields;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$x=>$X){if(is_a($X,'DateTime'))$K[$x]=$X->format("Y-m-d H:i:s");}return$K;}function
fetch_assoc(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_ASSOC));}function
fetch_row(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_NUMERIC));}function
fetch_field(){if(!$this->fields)$this->fields=sqlsrv_field_metadata($this->result);$m=$this->fields[$this->offset++];$J=new
\stdClass;$J->name=$m["Name"];$J->type=($m["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
seek($D){for($s=0;$s<$D;$s++)sqlsrv_fetch($this->result);}}function
last_id($I){return
get_val("SELECT SCOPE_IDENTITY()");}function
explain($f,$H){$f->query("SET SHOWPLAN_ALL ON");$J=$f->query($H);$f->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
class
MssqlDb
extends
PdoDb{function
select_db($Pb){return$this->query(use_sql($Pb));}function
lastInsertId(){return$this->pdo->lastInsertId();}}function
last_id($I){return
connection()->lastInsertId();}function
explain($f,$H){}if(extension_loaded("pdo_sqlsrv")){class
Db
extends
MssqlDb{var$extension="PDO_SQLSRV";function
attach($N,$V,$G){list($Nd,$Pg)=host_port($N);return$this->dsn("sqlsrv:Server=$Nd".($Pg?",$Pg":""),$V,$G);}}}elseif(extension_loaded("pdo_dblib")){class
Db
extends
MssqlDb{var$extension="PDO_DBLIB";function
attach($N,$V,$G){list($Nd,$Pg)=host_port($N);return$this->dsn("dblib:charset=utf8;host=$Nd".($Pg?(is_numeric($Pg)?";port=":";unix_socket=").$Pg:""),$V,$G);}}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
function
connect($N,$V,$G){if($N=="")$N="localhost:1433";return
parent::connect($N,$V,$G);}function
__construct(Db$f){parent::__construct($f);$this->types=array('Numeryczne'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Data i czas'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Tekstowe'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binarne'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
insertUpdate($R,array$L,array$Yg){$n=fields($R);$_j=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Ra=0;$oe=array();foreach($O
as$x=>$X){$Ra++;$C=idf_unescape($x);if(!$n[$C]["auto_increment"])$oe[$x]="c$Ra";if(isset($Yg[$C]))$Z[]="$x = c$Ra";else$_j[]="$x = c$Ra";}$Nj=array();foreach($L
as$O)$Nj[]="(".implode(", ",$O).")";if($Z){$Sd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Nj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($_j?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$_j):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Sd?$O:$oe)).") VALUES (".($Sd?$e:implode(", ",$oe)).");");if($Sd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Nj));return$J;}function
begin(){return
queries("BEGIN TRANSACTION");}function
tableHelp($C,$ze=false){$Te=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Te[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($C))."-transact-sql";}}function
idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
get_databases($id){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($H,$Z,$z,$D=0,$Uh=" "){return($z?" TOP (".($z+$D).")":"")." $H$Z";}function
limit1($R,$H,$Z,$Uh="\n"){return
limit($H,$Z,1,0,$Uh);}function
db_collation($j,$lb){return
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function
logged_user(){return
get_val("SELECT SUSER_NAME()");}function
tables_list(){return
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
count_tables($i){$J=array();foreach($i
as$j){connection()->select_db($j);$J[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
table_status($C=""){$J=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT cast(value as varchar(max)) FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment
FROM sys.all_objects AS ao
WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="VIEW";}function
fk_support($S){return
true;}function
fields($R){$sb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$Ci=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($R));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, d.definition [default], d.name default_constraint, i.is_primary_key
FROM sys.all_columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE c.object_id = ".q($Ci))as$K){$U=$K["type"];$y=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($y?"($y)":""),"type"=>$U,"length"=>$y,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$B)?str_replace("''","'",$B[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$sb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Ci))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
indexes($R,$g=null){$J=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE OBJECT_NAME(i.object_id) = ".q($R),$g)as$K){$C=$K["name"];$J[$C]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$C]["lengths"]=array();$J[$C]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$C]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
view($C){return
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
information_schema($j){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
create_database($j,$c){return
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
drop_databases($i){return
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
rename_database($C,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($R,$C,$n,$kd,$qb,$yc,$c,$Aa,$F){$b=array();$sb=array();$ng=fields($R);foreach($n
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$sb[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n  ".implode("",$X).($R==""?substr($kd[$X[0]],16+strlen($X[0])):"");else{$k=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$mg=$ng[$m[0]];if(default_value($mg)!=$k){if($mg["default"]!==null)$b["DROP"][]=" ".idf_escape($mg["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
queries("CREATE TABLE ".table($C)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($kd)$b[""]=$kd;foreach($b
as$x=>$X){if(!queries("ALTER TABLE ".table($C)." $x".implode(",",$X)))return
false;}foreach($sb
as$x=>$X){$qb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = $qb,
@level0type = N'Schema',
@level0name = ".q(get_schema()).",
@level1type = N'Table',
@level1name = ".q($C).",
@level2type = N'Column',
@level2name = ".q($x));}return
true;}function
alter_indexes($R,$b){$v=array();$jc=array();foreach($b
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$jc[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$jc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$jc)));}function
found_rows($S,$Z){}function
foreign_keys($R){$J=array();$Xf=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q(get_schema()))as$K){$p=&$J[$K["FK_NAME"]];$p["db"]=$K["PKTABLE_QUALIFIER"];$p["ns"]=$K["PKTABLE_OWNER"];$p["table"]=$K["PKTABLE_NAME"];$p["on_update"]=$Xf[$K["UPDATE_RULE"]];$p["on_delete"]=$Xf[$K["DELETE_RULE"]];$p["source"][]=$K["FKCOLUMN_NAME"];$p["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Sj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Sj)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$Sj,$Mi){return
apply_queries("ALTER SCHEMA ".idf_escape($Mi)." TRANSFER",array_merge($T,$Sj));}function
trigger($C,$R){if($C=="")return
array();$L=get_rows("SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
WHERE s.xtype = 'TR' AND s.name = ".q($C));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
triggers($R){$J=array();foreach(get_rows("SELECT sys1.name,
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
schemas(){return
get_vals("SELECT name FROM sys.schemas");}function
get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return
get_val("SELECT SCHEMA_NAME()");}function
set_schema($Ih){$_GET["ns"]=$Ih;return
true;}function
create_sql($R,$Aa,$vi){if(is_view(table_status1($R))){$Rj=view($R);return"CREATE VIEW ".table($R)." AS $Rj[select]";}$n=array();$Yg=false;foreach(fields($R)as$C=>$m){$X=process_field($m,$m);if($X[6])$Yg=true;$n[]=implode("",$X);}foreach(indexes($R)as$C=>$v){if(!$Yg||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$C=idf_escape($C);$n[]=($v["type"]=="INDEX"?"INDEX $C":"CONSTRAINT $C ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$C=>$Ya)$n[]="CONSTRAINT ".idf_escape($C)." CHECK ($Ya)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$kd)$n[]=ltrim(format_foreign_key($kd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
use_sql($Pb,$vi=""){return"USE ".idf_escape($Pb);}function
trigger_sql($R){$J="";foreach(triggers($R)as$C=>$lj)$J
.=create_trigger(" ON ".table($R),trigger($C,$R)).";";return$J;}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Vc);}}class
Adminer{static$instance;var$error='';function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.5.0")."' width='24' height='24' alt='' id='logo'>Adminer</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($h=false){return
password_file($h);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($N){return
h($N);}function
database(){return
DB;}function
databases($id=true){return
get_databases($id);}function
pluginsLinks(){}function
operators(){return
driver()->operators;}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
afterConnect(){}function
headers(){}function
csp(array$Ib){return$Ib;}function
head($Mb=null){return
true;}function
bodyClass(){echo" adminer";}function
css(){$J=array();foreach(array("","-dark")as$vf){$o="adminer$vf.css";if(file_exists($o)){$ad=file_get_contents($o);$J["$o?v=".crc32($ad)]=($vf?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$ad)?'':'light'));}}return$J;}function
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'Rodzaj bazy'.'<td>',html_select("auth[driver]",SqlDriver::$drivers,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.'Serwer'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="'.'hostname[:port] lub :socket'.'" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.'Użytkownik'.'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password','<tr><th>'.'Hasło'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.'Baza danych'.'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".'Zaloguj się'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Zapamiętaj sesję')."\n";}function
loginFormField($C,$Id,$Y){return$Id.$Y."\n";}function
login($Ue,$G){if($G=="")return
sprintf('Adminer nie obsługuje dostępu do bazy danych bez hasła, <a href="https://www.adminer.org/pl/password/"%s>więcej informacji</a>.',target_blank());return
true;}function
tableName(array$Bi){return
h($Bi["Name"]);}function
fieldName(array$m,$gg=0){$U=$m["full_type"].($m["null"]?" NULL":"");$qb=$m["comment"];return'<span title="'.h($U.($qb!=""?($U?": ":"").$qb:'')).'">'.h($m["field"]).'</span>';}function
selectLinks(array$Bi,$O=""){$C=$Bi["Name"];echo'<p class="links">';$Te=array("select"=>'Pokaż dane');if(support("table")||support("indexes"))$Te["table"]='Struktura tabeli';$ze=false;if(support("table")){$ze=is_view($Bi);if($ze){if(support("view"))$Te["view"]='Zmień perspektywę';}elseif(function_exists('Adminer\alter_table'))$Te["create"]='Zmień tabelę';}if($O!==null)$Te["edit"]='Nowy rekord';foreach($Te
as$x=>$X)echo" <a href='".h(ME)."$x=".urlencode($C).($x=="edit"?$O:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
doc_link(array(JUSH=>driver()->tableHelp($C,$ze)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Ai){return
array();}function
backwardKeysPrint(array$Fa,array$K){}function
selectQuery($H,$ri,$Tc=false){$J="</p>\n";if(!$Tc&&($Vj=driver()->warnings())){$t="warnings";$J=", <a href='#$t'>".'Ostrzeżenia'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$J<div id='$t' class='hidden'>\n$Vj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($ri).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".'Edytuj'."</a>":"").$J;}function
sqlCommandQuery($H){return
shorten_utf8(trim($H),1000);}function
sqlPrintAfter(){}function
rowDescription($R){return"";}function
rowDescriptions(array$L,array$ld){return$L;}function
selectLink($X,array$m){}function
selectVal($X,$_,array$m,$qg){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":(preg_match('~^jsonb?$~',$m["full_type"])?"<code class='jush-js'>$X</code>":$X)));if(is_blob($m)&&!is_utf8($X))$J="<i>".lang_format(array('%d bajt','%d bajty','%d bajtów'),strlen($qg))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
editVal($X,array$m){return$X;}function
config(){return
array();}function
tableStructurePrint(array$n,$Bi=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Kolumna'."<td>".'Typ'.(support("comment")?"<td>".'Komentarz':"")."</thead>\n";$ui=driver()->structuredTypes();foreach($n
as$m){echo"<tr><th>".h($m["field"]);$U=h($m["full_type"]);$c=h($m["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$ui['Typy użytkownika'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($Bi["Collation"])&&$c!=$Bi["Collation"]?" $c":""))."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".'Automatyczny przyrost'."</i>":"");$k=h($m["default"]);echo(isset($m["default"])?" <span title='".'Wartość domyślna'."'>[<b>".($m["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($m["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint(array$w,array$Bi){$Ag=false;foreach($w
as$C=>$v)$Ag|=!!$v["partial"];echo"<table>\n";$Ub=first(driver()->indexAlgorithms($Bi));foreach($w
as$C=>$v){ksort($v["columns"]);$ah=array();foreach($v["columns"]as$x=>$X)$ah[]="<i>".h($X)."</i>".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"<tr title='".h($C)."'>","<th>$v[type]".($Ub&&$v['algorithm']!=$Ub?" ($v[algorithm])":""),"<td>".implode(", ",$ah);if($Ag)echo"<td>".($v['partial']?"<code class='jush-".JUSH."'>WHERE ".h($v['partial']):"");echo"\n";}echo"</table>\n";}function
selectColumnsPrint(array$M,array$e){print_fieldset("select",'pokaż',$M);$s=0;$M[""]=array();foreach($M
as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($x!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array('Funkcje'=>driver()->functions,'Agregacje'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$s++;}echo"</div></fieldset>\n";}function
selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",'Szukaj',$Z);foreach($w
as$s=>$v){if($v["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h(idx($_GET["fulltext"],$s))."'>",script("qsl('input').oninput = selectFieldChange;",""),(JUSH=='sql'?checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"):''),"</div>\n";}$Va="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'gdziekolwiek'.")"),html_select("where[$s][op]",adminer()->operators(),$X["op"],$Va),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Va }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
selectOrderPrint(array$gg,array$e,array$w){print_fieldset("sort",'Sortuj',$gg);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),'malejąco')."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",1,false,'malejąco')."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>","<input type='number' name='limit' class='size' value='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($Si){if($Si!==null)echo"<fieldset><legend>".'Długość tekstu'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Si)."'>","</div></fieldset>\n";}function
selectActionPrint(array$w){echo"<fieldset><legend>".'Czynność'."</legend><div>","<input type='submit' value='".'pokaż'."'>"," <span id='noindex' title='".'Wymaga pełnego przeskanowania tabeli'."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($w
as$v){$Lb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Lb)$e[$Lb]=1;}$e[""]=1;foreach($e
as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint(array$vc,array$e){}function
selectColumnsProcess(array$e,array$w){$M=array();$xd=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$xd[]=$M[$x];}}return
array($M,$xd);}function
selectSearchProcess(array$n,array$w){$J=array();foreach($w
as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){$jb=$X["col"];if("$jb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$ub=array();foreach(($jb!=""?array($jb=>$n[$jb]):$n)as$C=>$m){$Vg="";$tb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Xd=process_length($X["val"]);$tb
.=" ".($Xd!=""?$Xd:"(NULL)");}elseif($X["op"]=="SQL")$tb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$B))$tb=" $B[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Vg="$X[op](".q($X["val"]).", ";$tb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$tb
.=" ".adminer()->processInput($m,$X["val"]);if($jb!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$ub[]=$Vg.driver()->convertSearch(idf_escape($C),$X,$m).$tb;}$J[]=(count($ub)==1?$ub[0]:($ub?"(".implode(" OR ",$ub).")":"1 = 0"));}}return$J;}function
selectOrderProcess(array$n,array$w){$J=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC".(JUSH=='pgsql'&&idx($n[$X],"null")?" NULLS LAST":""):"");}return$J;}function
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function
selectEmailProcess(array$Z,array$ld){return
false;}function
selectQueryBuild(array$M,array$Z,array$xd,array$gg,$z,$E){return"";}function
messageQuery($H,$Ti,$Tc=false){restart_session();$Kd=&get_session("queries");if(!idx($Kd,$_GET["db"]))$Kd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Kd[$_GET["db"]][]=array($H,time(),$Ti);$ni="sql-".count($Kd[$_GET["db"]]);$J="<a href='#$ni' class='toggle'>".'Zapytanie SQL'."</a> <a href='' class='jsonly copy'>🗐</a>\n";if(!$Tc&&($Vj=driver()->warnings())){$t="warnings-".count($Kd[$_GET["db"]]);$J="<a href='#$t' class='toggle'>".'Ostrzeżenia'."</a>, $J<div id='$t' class='hidden'>\n$Vj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$ni' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1e4)."</code></pre>".($Ti?" <span class='time'>($Ti)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Kd[$_GET["db"]])-1)).'">'.'Edytuj'.'</a>':'').'</div>';}function
editRowPrint($R,array$n,$K,$_j){}function
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$_j=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$sd){if(!$x||(!isset($_GET["call"])&&$_j)){foreach($sd
as$Jg=>$X){if(!$Jg||preg_match("~$Jg~",$m["type"]))$J
.="/$X";}}if($x&&$sd&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$J
.="/SQL";}if($m["auto_increment"]&&!$_j)$J='Automatyczny przyrost';return
explode("/",$J);}function
editInput($R,array$m,$za,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$za value='orig' checked><i>".'bez zmian'."</i></label> ":"").enum_input("radio",$za,$m,$Y,"NULL");return"";}function
editHint($R,array$m,$Y){return"";}function
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$J="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$J=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$J=idf_escape($C)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($C).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$J="$r($J)";return
unconvert_field($m,$J);}function
dumpOutput(){$J=array('text'=>'otwórz','file'=>'zapisz');if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($j){}function
dumpTable($R,$vi,$ze=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($vi)dump_csv(array_keys(fields($R)));}else{if($ze==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$vi);set_utf8mb4($h);if($vi&&$h){if($vi=="DROP+CREATE"||$ze==1)echo"DROP ".($ze==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($ze==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
dumpData($R,$vi,$H){if($vi){$ef=(JUSH=="sqlite"?0:1048576);$n=array();$Td=false;if($_POST["format"]=="sql"){if($vi=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n
as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Td=true;break;}}}}$I=connection()->query($H,1);if($I){$oe="";$Pa="";$Ee=array();$td=array();$xi="";$Wc=($R!=''?'fetch_assoc':'fetch_row');$Eb=0;while($K=$I->$Wc()){if(!$Ee){$Nj=array();foreach($K
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$td[$m->name]=true;continue;}$Ee[]=$m->name;$x=idf_escape($m->name);$Nj[]="$x = VALUES($x)";}$xi=($vi=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Nj):"").";\n";}if($_POST["format"]!="sql"){if($vi=="table"){dump_csv($Ee);$vi="INSERT";}dump_csv($K);}else{if(!$oe)$oe="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Ee)).") VALUES";foreach($K
as$x=>$X){if($td[$x]){unset($K[$x]);continue;}$m=$n[$x];$K[$x]=($X===null?"NULL":($X===false?0:unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:(!is_blob($m)||is_utf8($X)?q($X):driver()->quoteBinary($X)))));}$Gh=($ef?"\n":" ")."(".implode(",\t",$K).")";if(!$Pa)$Pa=$oe.$Gh;elseif(JUSH=='mssql'?$Eb%1000!=0:strlen($Pa)+4+strlen($Gh)+strlen($xi)<$ef)$Pa
.=",$Gh";else{echo$Pa.$xi;$Pa=$oe.$Gh;}}$Eb++;}if($Pa)echo$Pa.$xi;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Td)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($Rd){return
friendly_url($Rd!=""?$Rd:(SERVER?:"localhost"));}function
dumpHeaders($Rd,$yf=false){$tg=$_POST["output"];$Oc=(preg_match('~sql~',$_POST["format"])?"sql":($yf?"tar":"csv"));header("Content-Type: ".($tg=="gz"?"application/x-gzip":($Oc=="tar"?"application/x-tar":($Oc=="sql"||$tg!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($tg=="gz"){ob_start(function($Q){return
gzencode($Q);},1e6);}return$Oc;}function
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
importServerPath(){return"adminer.sql";}function
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Zmień bazę danych'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Zmień schemat':'Utwórz schemat')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Schemat bazy danych'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Uprawnienia użytkowników'."</a>\n":"");if($_GET["ns"]!=="")echo(support("routine")?"<a href='#routines'>".'Procedury i funkcje'."</a>\n":""),(support("sequence")?"<a href='#sequences'>".'Sekwencje'."</a>\n":""),(support("type")?"<a href='#user-types'>".'Typy użytkownika'."</a>\n":""),(support("event")?"<a href='#events'>".'Wydarzenia'."</a>\n":"");return
true;}function
navigation($uf){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$Gf=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$Gf)<0?h($Gf):"")."</a>","</span></h1>\n";if($uf=="auth"){$tg="";foreach((array)$_SESSION["pwds"]as$Pj=>$Zh){foreach($Zh
as$N=>$Jj){$C=h(get_setting("vendor-$Pj-$N")?:get_driver($Pj));foreach($Jj
as$V=>$G){if($G!==null){$Sb=$_SESSION["db"][$Pj][$N][$V];foreach(($Sb?array_keys($Sb):array(""))as$j)$tg
.="<li><a href='".h(auth_url($Pj,$N,$V,$j))."'>($C) ".h("$V@".($N!=""?adminer()->serverName($N):"").($j!=""?" - $j":""))."</a>\n";}}}}if($tg)echo"<ul id='logins'>\n$tg</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$uf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($uf);$ja=array();if(DB==""||!$uf){if(support("sql")){$ja['sql']="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'Zapytanie SQL'."</a>";$ja['import']="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Importuj'."</a>";}$ja['dump']="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Eksportuj'."</a>";}$Yd=$_GET["ns"]!==""&&!$uf&&DB!="";if($Yd&&function_exists('Adminer\alter_table'))$ja['create']='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Utwórz tabelę'."</a>";$ja=adminer()->menuActions($ja,$uf);echo($ja?"<p class='links'>\n".implode("\n",$ja)."\n":"");if($Yd){if($T)adminer()->tablesPrint($T);else
echo"<p class='message'>".'Brak tabel.'."</p>\n";}}}function
syntaxHighlighting(array$T){echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.5.0",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Te=array();foreach($T
as$R=>$U)$Te[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$Te).')\b/g',false);if(support('routine')){foreach(routines()as$K)json_row(js_escape(ME).'function='.urlencode($K["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($K["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Ii=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n
as$m)$Ii[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ii)."); });\n";}}echo"</script>\n";}echo
script("syntaxHighlighting('".(preg_match('~^\d\.?\d~',connection()->server_info,$B)?$B[0]:"")."', '".connection()->flavor."');");}function
databasesPrint($uf){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Qb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".'Baza danych'."'>".'BD'.": ".($i?html_select("db",array(""=>"")+$i,DB).$Qb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".'Wybierz'."'".($i?" class='hidden'":"").">\n";if(support("scheme")){if($uf!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".'Schemat'.": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Qb</label>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
input_hidden($X);break;}}echo"</p></form>\n";}function
menuActions(array$ja,$uf){return$ja;}function
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$P){$R="$R";$C=adminer()->tableName($P);if($C!=""&&!$P["partition"])echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'Pokaż dane'."'>".'przeglądaj'."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($P)?"view":"structure"))." title='".'Struktura tabeli'."'>$C</a>":"<span>$C</span>")."\n";}echo"</ul>\n";}function
showVariables(){return
show_variables();}function
showStatus(){return
show_status();}function
processList(){return
process_list();}function
killProcess($t){return
kill_process($t);}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
__construct($Og){if($Og===null){$Og=array();$Ja="adminer-plugins";if(is_dir($Ja)){foreach(glob("$Ja/*.php")as$o)$this->includeOnce($o);}$Jd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ja.php")){$Zd=$this->includeOnce("$Ja.php");if(is_array($Zd)){foreach($Zd
as$Ng)$Og[get_class($Ng)]=$Ng;}else$this->error
.=sprintf('%s musi <a%s>zwrócić tablicę</a>.',"<b>$Ja.php</b>",$Jd)."<br>";}foreach(get_declared_classes()as$fb){if(!$Og[$fb]&&(preg_match('~^Adminer\w~i',$fb)||is_subclass_of($fb,'Adminer\Plugin'))){$rh=new
\ReflectionClass($fb);$zb=$rh->getConstructor();if($zb&&$zb->getNumberOfRequiredParameters())$this->error
.=sprintf('<a%s>Skonfiguruj</a> %s w %s.',$Jd,"<b>$fb</b>","<b>$Ja.php</b>")."<br>";else$Og[$fb]=new$fb;}}}$this->plugins=$Og;$ma=new
Adminer;$Og[]=$ma;$rh=new
\ReflectionObject($ma);foreach($rh->getMethods()as$sf){foreach($Og
as$Ng){$C=$sf->getName();if(method_exists($Ng,$C))$this->hooks[$C][]=$Ng;}}}function
includeOnce($o){return
include_once"./$o";}function
__call($C,array$yg){$va=array();foreach($yg
as$x=>$X)$va[]=&$yg[$x];$J=null;foreach($this->hooks[$C]as$Ng){$Y=call_user_func_array(array($Ng,$C),$va);if($Y!==null){if(!self::$append[$C])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($u,$Mf=null){$va=func_get_args();$va[0]=idx($this->translations[LANG],$u)?:$u;return
call_user_func_array('Adminer\lang_format',$va);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
Plugins(null):new
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
Db
extends
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
__construct(){parent::init();}function
attach($N,$V,$G){mysqli_report(MYSQLI_REPORT_OFF);list($Nd,$Pg)=host_port($N);$qi=adminer()->connectSsl();if($qi)$this->ssl_set($qi['key'],$qi['cert'],$qi['ca'],'','');$J=@$this->real_connect(($N!=""?$Nd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$G!=""?$G:ini_get("mysqli.default_pw")),null,(is_numeric($Pg)?intval($Pg):ini_get("mysqli.default_port")),(is_numeric($Pg)?null:$Pg),($qi?($qi['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($J?'':$this->error);}function
set_charset($Xa){if(parent::set_charset($Xa))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Xa");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db
extends
SqlDb{private$link;function
attach($N,$V,$G){if(ini_bool("mysql.allow_local_infile"))return
sprintf('Wyłącz %s lub włącz rozszerzenia %s lub %s.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),($N.$V!=""?$V:ini_get("mysql.default_user")),($N.$V.$G!=""?$G:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
set_charset($Xa){return
mysql_set_charset($Xa,$this->link)||mysql_set_charset('utf8',$this->link);}function
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
select_db($Pb){return
mysql_select_db($Pb,$this->link);}function
query($H,$sj=false){$I=@($sj?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($I);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($N,$V,$G){$eg=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$qi=adminer()->connectSsl();if($qi){if($qi['key'])$eg[\PDO::MYSQL_ATTR_SSL_KEY]=$qi['key'];if($qi['cert'])$eg[\PDO::MYSQL_ATTR_SSL_CERT]=$qi['cert'];if($qi['ca'])$eg[\PDO::MYSQL_ATTR_SSL_CA]=$qi['ca'];if(isset($qi['verify']))$eg[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$qi['verify'];}list($Nd,$Pg)=host_port($N);return$this->dsn("mysql:charset=utf8".($Nd!=""?";host=$Nd":'').($Pg?(is_numeric($Pg)?";port=":";unix_socket=").$Pg:""),$V,$G,$eg);}function
set_charset($Xa){return$this->query("SET NAMES $Xa");}function
select_db($Pb){return$this->query("USE ".idf_escape($Pb));}function
query($H,$sj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$sj);return
parent::query($H,$sj);}}}class
Driver
extends
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");var$partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");static
function
connect($N,$V,$G){$f=parent::connect($N,$V,$G);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($Gh=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Gh;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Numeryczne'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Data i czas'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Tekstowe'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Listy'=>array("enum"=>65535,"set"=>64),'Binarne'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometria'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types['Tekstowe']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Tekstowe']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$f)){$this->types['Sieć']["inet6"]=39;if(min_version('','10.10',$f))$this->types['Sieć']["inet4"]=15;}if(min_version(9,11.7,$f))$this->types['Numeryczne']["vector"]=16383;if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"<code class='jush-sql'>UNHEX</code>":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):($m["type"]=="vector"?"<code class='jush-sql'>".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."</code>":(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"<code class='jush-sql'>GeomFromText</code>":""))));}function
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,array$L,array$Yg){$e=array_keys(reset($L));$Vg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Nj=array();foreach($e
as$x)$Nj[$x]="$x = VALUES($x)";$xi="\nON DUPLICATE KEY UPDATE ".implode(", ",$Nj);$Nj=array();$y=0;foreach($L
as$O){$Y="(".implode(", ",$O).")";if($Nj&&(strlen($Vg)+$y+strlen($Y)+strlen($xi)>1e6)){if(!queries($Vg.implode(",\n",$Nj).$xi))return
false;$Nj=array();$y=0;}$Nj[]=$Y;$y+=strlen($Y)+2;}return
queries($Vg.implode(",\n",$Nj).$xi);}function
slowQuery($H,$Ui){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Ui FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($Ui*1000).") */ $B[2]";}}function
convertSearch($u,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u);}function
quoteBinary($Gh){return"X".q(bin2hex($Gh));}function
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
ob_get_clean();}}function
tableHelp($C,$ze=false){$We=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($We?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($We?"mysql$C-table/":"system-schema.html");}function
partitionsInfo($R){$qd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $qd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$Fg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $qd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($Fg);$J["partition_values"]=array_values($Fg);return$J;}function
hasCStyleEscapes(){static$Sa;if($Sa===null){$oi=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Sa=(strpos($oi,'NO_BACKSLASH_ESCAPES')===false);}return$Sa;}function
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
indexAlgorithms(array$Bi){return(preg_match('~^(MEMORY|NDB)$~',$Bi["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
table($u){return
idf_escape($u);}function
get_databases($id){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($id?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
limit($H,$Z,$z,$D=0,$Uh=" "){return" $H$Z".($z?$Uh."LIMIT $z".($D?" OFFSET $D":""):"");}function
limit1($R,$H,$Z,$Uh="\n"){return
limit($H,$Z,1,0,$Uh);}function
db_collation($j,array$lb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$B))$J=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$B))$J=$lb[$B[1]][-1];return$J;}function
logged_user(){return
get_val("SELECT USER()");}function
tables_list(){return
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
count_tables(array$i){$J=array();foreach($i
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
table_status($C="",$Uc=false){$J=array();foreach(get_rows($Uc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($C!="")$K["Name"]=$C;$J[$K["Name"]]=$K;}return$J;}function
is_view(array$S){return$S["Engine"]===null;}function
fk_support(array$S){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
fields($R){$We=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$m=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$ud=$K["GENERATION_EXPRESSION"];$Rc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Rc,$td);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ze);$k=$K["COLUMN_DEFAULT"];if($k!=""){$ye=preg_match('~text|json~',$Ze[1]);if(!$We&&$ye)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($We||$ye){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return
stripslashes(str_replace("''","'",$B[1]));},$k));}if(!$We&&preg_match('~binary~',$Ze[1])&&preg_match('~^0x(\w*)$~',$k,$B))$k=pack("H*",$B[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Ze[1],"length"=>$Ze[2],"unsigned"=>ltrim($Ze[3].$Ze[4]),"default"=>($td?($We?$ud:stripslashes($ud)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Rc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Rc,$B)?$B[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($td[1]=="PERSISTENT"?"STORED":$td[1]),);}return$J;}function
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$K){$C=$K["Key_name"];$J[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$K["Index_type"])?$K["Index_type"]:"INDEX"):"UNIQUE")));$J[$C]["columns"][]=$K["Column_name"];$J[$C]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$C]["descs"][]=null;$J[$C]["algorithm"]=$K["Index_type"];}return$J;}function
foreign_keys($R){static$Jg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Fb=get_val("SHOW CREATE TABLE ".table($R),1);if($Fb){preg_match_all("~CONSTRAINT ($Jg) FOREIGN KEY ?\\(((?:$Jg,? ?)+)\\) REFERENCES ($Jg)(?:\\.($Jg))? \\(((?:$Jg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Fb,$af,PREG_SET_ORDER);foreach($af
as$B){preg_match_all("~$Jg~",$B[2],$ii);preg_match_all("~$Jg~",$B[5],$Mi);$J[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('Adminer\idf_unescape',$ii[0]),"target"=>array_map('Adminer\idf_unescape',$Mi[0]),"on_delete"=>($B[6]?:"RESTRICT"),"on_update"=>($B[7]?:"RESTRICT"),);}}return$J;}function
view($C){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),1)));}function
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
as$x=>$X)sort($J[$x]);return$J;}function
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($j,$c){return
queries("CREATE DATABASE ".idf_escape($j).($c?" COLLATE ".q($c):""));}function
drop_databases(array$i){$J=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
rename_database($C,$c){$J=false;if(create_database($C,$c)){$T=array();$Sj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Sj[]=$R;else$T[]=$R;}$J=(!$T&&!$Sj)||move_tables($T,$Sj,$C);drop_databases($J?array(DB):array());}return$J;}function
auto_increment(){$Ba=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Ba="";break;}if($v["type"]=="PRIMARY")$Ba=" UNIQUE";}}return" AUTO_INCREMENT$Ba";}function
alter_table($R,$C,array$n,array$kd,$qb,$yc,$c,$Aa,$F){$b=array();foreach($n
as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$kd);$P=($qb!==null?" COMMENT=".q($qb):"").($yc?" ENGINE=".q($yc):"").($c?" COLLATE ".q($c):"").($Aa!=""?" AUTO_INCREMENT=$Aa":"");if($F){$Fg=array();if($F["partition_by"]=='RANGE'||$F["partition_by"]=='LIST'){foreach($F["partition_names"]as$x=>$X){$Y=$F["partition_values"][$x];$Fg[]="\n  PARTITION ".idf_escape($X)." VALUES ".($F["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P
.="\nPARTITION BY $F[partition_by]($F[partition])";if($Fg)$P
.=" (".implode(",",$Fg)."\n)";elseif($F["partitions"])$P
.=" PARTITIONS ".(+$F["partitions"]);}elseif($F===null)$P
.="\nREMOVE PARTITIONING";if($R=="")return
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function
alter_indexes($R,$b){$Wa=array();foreach($b
as$X)$Wa[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
queries("ALTER TABLE ".table($R).implode(",",$Wa));}function
truncate_tables(array$T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views(array$Sj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Sj)));}function
drop_tables(array$T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables(array$T,array$Sj,$Mi){$vh=array();foreach($T
as$R)$vh[]=table($R)." TO ".idf_escape($Mi).".".table($R);if(!$vh||queries("RENAME TABLE ".implode(", ",$vh))){$Yb=array();foreach($Sj
as$R)$Yb[table($R)]=view($R);connection()->select_db($Mi);$j=idf_escape(DB);foreach($Yb
as$C=>$Rj){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$Rj["select"]))||!queries("DROP VIEW $j.$C"))return
false;}return
true;}return
false;}function
copy_tables(array$T,array$Sj,$Mi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$C=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$lj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Mi==DB?idf_escape("copy_$lj"):idf_escape($Mi).".".idf_escape($lj))." $K[Timing] $K[Event] ON $C FOR EACH ROW\n$K[Statement];"))return
false;}}foreach($Sj
as$R){$C=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));$Rj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $Rj[select]"))return
false;}return
true;}function
trigger($C,$R){if($C=="")return
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return
reset($L);}function
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($C,$U){$n=get_rows("SELECT
	PARAMETER_NAME field,
	DATA_TYPE type,
	REGEXP_REPLACE(DTD_IDENTIFIER, '^[^(]+\\\\(?|\\\\)$', '') length,
	REGEXP_REPLACE(DTD_IDENTIFIER, '^[^ ]+ ', '') `unsigned`,
	1 `null`,
	DTD_IDENTIFIER full_type,
	".($U=="FUNCTION"?"''":"PARAMETER_MODE")." `inout`,
	CHARACTER_SET_NAME collation
FROM information_schema.PARAMETERS
WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($C)."
ORDER BY ORDINAL_POSITION");$J=connection()->query("SELECT
	ROUTINE_COMMENT comment,
	CONCAT(IF(IS_DETERMINISTIC = 'YES', 'DETERMINISTIC\\n', ''), IF(SQL_DATA_ACCESS != 'CONTAINS SQL', CONCAT(SQL_DATA_ACCESS, '\\n'), ''), ROUTINE_DEFINITION) definition,
	'SQL' language
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND ROUTINE_NAME = ".q($C))->fetch_assoc();if($n&&$n[0]['field']=='')$J['returns']=array_shift($n);$J['fields']=$n;return$J;}function
routines(){return
get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($C,array$K){return
idf_escape($C);}function
last_id($I){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$f,$H){return$f->query("EXPLAIN ".(min_version(5.7)?"":"PARTITIONS ").$H);}function
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$Aa,$vi){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Aa)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($Pb,$vi=""){$C=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$vi)&&($h=get_val("SHOW CREATE DATABASE $C",1))){set_utf8mb4($h);if($vi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $C;\n";$J
.="$h;\n";}return$J."USE $C";}function
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
show_variables(){return
get_rows("SHOW VARIABLES");}function
show_status(){return
get_rows("SHOW STATUS");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if($m["type"]=="vector")return(connection()->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."(".idf_escape($m["field"]).")";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function
unconvert_field(array$m,$J){if(preg_match("~binary~",$m["type"]))$J="UNHEX($J)";if($m["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if($m["type"]=="vector")$J=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($J)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$Vg=(min_version(8)?"ST_":"");$J=$Vg."GeomFromText($J, $Vg"."SRID($m[field]))";}return$J;}function
support($Vc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|event|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Vc);}function
kill_process($t){return
queries("KILL ".number($t));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types(){return
array();}function
type_values($t){return"";}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($Ih,$g=null){return
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
page_header($Wi,$l="",$Oa=array(),$Xi=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Yi=$Wi.($Xi!=""?": $Xi":"");$Zi=strip_tags($Yi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
<html lang="pl" dir="ltr">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>',$Zi,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.5.0"),'">
';$Jb=adminer()->css();if(is_int(key($Jb)))$Jb=array_fill_keys($Jb,'light');$Fd=in_array('light',$Jb)||in_array('',$Jb);$Dd=in_array('dark',$Jb)||in_array('',$Jb);$Mb=($Fd?($Dd?null:false):($Dd?:null));$kf=" media='(prefers-color-scheme: dark)'";if($Mb!==false)echo"<link rel='stylesheet'".($Mb?"":$kf)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.5.0")."'>\n";echo"<meta name='color-scheme' content='".($Mb===null?"light dark":($Mb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.5.0");if(adminer()->head($Mb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.5.0")."'>\n";foreach($Jb
as$Dj=>$vf){$za=($vf=='dark'&&!$Mb?$kf:($vf=='light'&&$Dd?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$za href='".h($Dj)."'>\n";}echo"\n<body class='".'ltr'." nojs";adminer()->bodyClass();echo"'>\n";$o=get_temp_dir()."/adminer.version";echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."')")."});
document.body.classList.replace('nojs', 'js');
if (!window.isSecureContext) {
	document.body.classList.add('insecure');
}
const offlineMessage = '".js_escape('Jesteś offline.')."';
const thousandsSeparator = '".js_escape(' ')."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Oa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.get_driver(DRIVER).'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:'Serwer');if($Oa===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Oa)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Oa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Oa
as$x=>$X){$ac=(is_array($X)?$X[1]:h($X));if($ac!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$ac</a> » ";}}echo"$Wi\n";}}echo"<h2>$Yi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Ib){$Hd=array();foreach($Ib
as$x=>$X)$Hd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Hd));}adminer()->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"'none'","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$If;if(!$If)$If=base64_encode(rand_string());return$If;}function
page_messages($l){$Cj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$rf=idx($_SESSION["messages"],$Cj);if($rf){echo"<div class='message'>".implode("</div>\n<div class='message'>",$rf)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Cj]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
page_footer($uf=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($uf);echo"</div>\n";if($uf!="auth")echo'<form action="" method="post">
<p class="logout">
<span>',h($_GET["username"])."\n",'</span>
<input type="submit" name="logout" value="Wyloguj się" id="logout">
',input_token(),'</form>
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
int32($_f){while($_f>=2147483648)$_f-=4294967296;while($_f<=-2147483649)$_f+=4294967296;return(int)$_f;}function
long2str(array$W,$Uj){$Gh='';foreach($W
as$X)$Gh
.=pack('V',$X);if($Uj)return
substr($Gh,0,end($W));return$Gh;}function
str2long($Gh,$Uj){$W=array_values(unpack('V*',str_pad($Gh,4*ceil(strlen($Gh)/4),"\0")));if($Uj)$W[]=strlen($Gh);return$W;}function
xxtea_mx($bk,$ak,$yi,$Ce){return
int32((($bk>>5&0x7FFFFFF)^$ak<<2)+(($ak>>3&0x1FFFFFFF)^$bk<<4))^int32(($yi^$ak)+($Ce^$bk));}function
encrypt_string($ti,$x){if($ti=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($ti,true);$_f=count($W)-1;$bk=$W[$_f];$ak=$W[0];$gh=floor(6+52/($_f+1));$yi=0;while($gh-->0){$yi=int32($yi+0x9E3779B9);$pc=$yi>>2&3;for($vg=0;$vg<$_f;$vg++){$ak=$W[$vg+1];$zf=xxtea_mx($bk,$ak,$yi,$x[$vg&3^$pc]);$bk=int32($W[$vg]+$zf);$W[$vg]=$bk;}$ak=$W[0];$zf=xxtea_mx($bk,$ak,$yi,$x[$vg&3^$pc]);$bk=int32($W[$_f]+$zf);$W[$_f]=$bk;}return
long2str($W,false);}function
decrypt_string($ti,$x){if($ti=="")return"";if(!$x)return
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($ti,false);$_f=count($W)-1;$bk=$W[$_f];$ak=$W[0];$gh=floor(6+52/($_f+1));$yi=int32($gh*0x9E3779B9);while($yi){$pc=$yi>>2&3;for($vg=$_f;$vg>0;$vg--){$bk=$W[$vg-1];$zf=xxtea_mx($bk,$ak,$yi,$x[$vg&3^$pc]);$ak=int32($W[$vg]-$zf);$W[$vg]=$ak;}$bk=$W[$_f];$zf=xxtea_mx($bk,$ak,$yi,$x[$vg&3^$pc]);$ak=int32($W[0]-$zf);$W[0]=$ak;$yi=int32($yi-0x9E3779B9);}return
long2str($W,true);}$Lg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$Lg[$x]=$X;}}function
add_invalid_login(){$Ha=get_temp_dir()."/adminer-invalid";foreach(glob("$Ha*")?:array($Ha)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Ha-".rand_string());if(!$q)return;$te=json_decode(stream_get_contents($q),true);$Ti=time();if($te){foreach($te
as$ue=>$X){if($X[0]<$Ti)unset($te[$ue]);}}$se=&$te[adminer()->bruteForceKey()];if(!$se)$se=array($Ti+30*60,0);$se[1]++;file_write_unlock($q,json_encode($te));}function
check_invalid_login(array&$Lg){$te=array();foreach(glob(get_temp_dir()."/adminer-invalid*")as$o){$q=file_open_lock($o);if($q){$te=json_decode(stream_get_contents($q),true);file_unlock($q);break;}}$se=idx($te,adminer()->bruteForceKey(),array());$Hf=($se[1]>29?$se[0]-time():0);if($Hf>0)auth_error(lang_format(array('Za dużo nieudanych prób logowania, spróbuj ponownie za %d minutę.','Za dużo nieudanych prób logowania, spróbuj ponownie za %d minuty.','Za dużo nieudanych prób logowania, spróbuj ponownie za %d minut.'),ceil($Hf/60)),$Lg);}$_a=$_POST["auth"];if($_a){session_regenerate_id();$Pj=$_a["driver"];$N=$_a["server"];$V=$_a["username"];$G=(string)$_a["password"];$j=$_a["db"];set_password($Pj,$N,$V,$G);$_SESSION["db"][$Pj][$N][$V][$j]=true;if($_a["permanent"]){$x=implode("-",array_map('base64_encode',array($Pj,$N,$V,$j)));$bh=adminer()->permanentLogin(true);$Lg[$x]="$x:".base64_encode($bh?encrypt_string($G,$bh):"");cookie("adminer_permanent",implode(" ",$Lg));}if(count($_POST)==1||DRIVER!=$Pj||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Pj,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($Lg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Wylogowano pomyślnie.'.' '.'Dziękujemy za używanie Adminera, rozważ <a href="https://www.adminer.org/pl/donation/">dotację</a>.');}elseif($Lg&&!$_SESSION["pwds"]){session_regenerate_id();$bh=adminer()->permanentLogin();foreach($Lg
as$x=>$X){list(,$eb)=explode(":",$X);list($Pj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($Pj,$N,$V,decrypt_string(base64_decode($eb),$bh));$_SESSION["db"][$Pj][$N][$V][$j]=true;}}function
unset_permanent(array&$Lg){foreach($Lg
as$x=>$X){list($Pj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($Pj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Lg[$x]);}cookie("adminer_permanent",implode(" ",$Lg));}function
auth_error($l,array&$Lg){$ai=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$ai]||$_GET[$ai])&&!$_SESSION["token"])$l='Sesja wygasła, zaloguj się ponownie.';else{restart_session();add_invalid_login();$G=get_password();if($G!==null){if($G===false)$l
.=($l?'<br>':'').sprintf('Ważność hasła głównego wygasła. <a href="https://www.adminer.org/pl/extension/"%s>Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Lg);}}if(!$_COOKIE[$ai]&&$_GET[$ai]&&ini_bool("session.use_only_cookies"))$l='Wymagana jest obsługa sesji w PHP.';$yg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$yg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Zaloguj się',$l,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'Czynność zostanie wykonana po pomyślnym zalogowaniu przy użyciu tych samych danych logowania.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Lg);page_header('Brak rozszerzenia',sprintf('Żadne z rozszerzeń PHP umożliwiających połączenie się z bazą danych (%s) nie jest dostępne.',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Nd,$Pg)=host_port(SERVER);if(!preg_match('~^[-a-z0-9.:]*$~Di',$Nd)||!preg_match('~^[-\w./]*$~D',$Pg))auth_error('Nieprawidłowy serwer.',$Lg);if(preg_match('~^-?\d+~',$Pg,$B)&&($B[0]<1024||$B[0]>65535))auth_error('Łączenie do portów uprzywilejowanych jest niedozwolone.',$Lg);check_invalid_login($Lg);$Hb=adminer()->credentials();$f=Driver::connect($Hb[0],$Hb[1],$Hb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Ue=null;if(!is_object($f)||($Ue=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($Ue)?$Ue:'Nieprawidłowe dane logowania.')).(preg_match('~^ | $~',get_password())?'<br>'.'W haśle wejściowym znajduje się spacja, która może być przyczyną.':'');auth_error($l,$Lg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Wyloguj się','Nieprawidłowy token CSRF. Spróbuj wysłać formularz ponownie.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($_a&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$le="max_input_vars";$if=ini_get($le);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$if||$X<$if)){$le=$x;$if=$X;}}}$l=(!$_POST["token"]&&$if?sprintf('Przekroczono maksymalną liczbę pól. Zwiększ %s.',"'$le'"):'Nieprawidłowy token CSRF. Spróbuj wysłać formularz ponownie.'.' '.'Jeżeli nie wywołałeś tej strony z Adminera, zamknij to okno.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('Przesłano zbyt dużo danych. Zmniejsz objętość danych lub zwiększ zmienną konfiguracyjną %s.',"'post_max_size'");if(isset($_GET["sql"]))$l
.=' '.'Większe pliki SQL możesz wgrać na serwer poprzez FTP przed zaimportowaniem.';}function
print_select_result($I,$g=null,array$kg=array(),$z=0){$Te=array();$w=array();$e=array();$Ma=array();$rj=array();$J=array();for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($_e=0;$_e<count($K);$_e++){$m=$I->fetch_field();$C=$m->name;$jg=(isset($m->orgtable)?$m->orgtable:"");$ig=(isset($m->orgname)?$m->orgname:$C);if($kg&&JUSH=="sql")$Te[$_e]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($jg!=""){if(isset($m->table))$J[$m->table]=$jg;if(!isset($w[$jg])){$w[$jg]=array();foreach(indexes($jg,$g)as$v){if($v["type"]=="PRIMARY"){$w[$jg]=array_flip($v["columns"]);break;}}$e[$jg]=$w[$jg];}if(isset($e[$jg][$ig])){unset($e[$jg][$ig]);$w[$jg][$ig]=$_e;$Te[$_e]=$jg;}}if($m->charsetnr==63)$Ma[$_e]=true;$rj[$_e]=$m->type;echo"<th".($jg!=""||$m->name!=$ig?" title='".h(($jg!=""?"$jg.":"").$ig)."'":"").">".h($C).($kg?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
as$x=>$X){$_="";if(isset($Te[$x])&&!$e[$Te[$x]]){if($kg&&JUSH=="sql"){$R=$K[array_search("table=",$Te)];$_=ME.$Te[$x].urlencode($kg[$R]!=""?$kg[$R]:$R);}else{$_=ME."edit=".urlencode($Te[$x]);foreach($w[$Te[$x]]as$jb=>$_e){if($K[$_e]===null){$_="";break;}$_
.="&where".urlencode("[".bracket_escape($jb)."]")."=".urlencode($K[$_e]);}}}$m=array('type'=>($Ma[$x]?'blob':($rj[$x]==254?'char':'')),);$X=select_value($X,$_,$m,null);echo"<td".($rj[$x]<=9||$rj[$x]==246?" class='number'":"").">$X";}}echo($s?"</table>\n</div>":"<p class='message'>".'Brak rekordów.')."\n";return$J;}function
referencable_primary($Sh){$J=array();foreach(table_status('',true)as$Di=>$R){if($Di!=$Sh&&fk_support($R)){foreach(fields($Di)as$m){if($m["primary"]){if($J[$Di]){unset($J[$Di]);break;}$J[$Di]=$m;}}}}return$J;}function
textarea($C,$Y,$L=10,$mb=80){echo"<textarea name='".h($C)."' rows='$L' cols='$mb' class='sqlarea jush-".JUSH."' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
as$X)echo
h($X[0])."\n\n\n";}else
echo
h($Y);echo"</textarea>";}function
select_input($za,array$eg,$Y="",$Yf="",$Mg=""){$Li=($eg?"select":"input");return"<$Li$za".($eg?"><option value=''>$Mg".optionlist($eg,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Mg'>").($Yf?script("qsl('$Li').onchange = $Yf;",""):"");}function
json_row($x,$X=null,$Gc=true){static$cd=true;if($cd)echo"{";if($x!=""){echo($cd?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?($Gc?'"'.addcslashes($X,"\r\n\"\\/").'"':$X):'null');$cd=false;}else{echo"\n}\n";$cd=true;}}function
edit_type($x,array$m,array$lb,array$md=array(),array$Sc=array()){$U=$m["type"];echo"<td><select name='".h($x)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($md[$U])&&!in_array($U,$Sc))$Sc[]=$U;$ui=driver()->structuredTypes();if($md)$ui['Klucze obce']=$md;echo
optionlist(array_merge($Sc,$ui),$U),"</select><td>","<input name='".h($x)."[length]' value='".h($m["length"])."' size='3'".(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($lb?"<input list='collations' name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($m["collation"])."' placeholder='(".'porównywanie znaków'.")'>":''),(driver()->unsigned?"<select name='".h($x)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'W przypadku zmiany'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"CURRENT_TIMESTAMP":$m["on_update"])).'</select>':''),($md?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'W przypadku usunięcia'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
process_length($y){$Bc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$Bc(?:\\s*,\\s*$Bc)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$Bc~",$y,$af)?"(".implode(",",$af[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
process_type(array$m,$kb="COLLATE"){return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],driver()->unsigned)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $kb ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
process_field(array$m,array$qj){if($m["on_update"])$m["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$m["on_update"]);return
array(idf_escape(trim($m["field"])),process_type($qj),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
default_value(array$m){if($m["default"]===null)return"";$k=str_replace("\r","",$m["default"]);$td=$m["generated"];return(in_array($td,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($td=="VIRTUAL"?"":" $td"):" GENERATED ALWAYS AS ($k) $td"):(preg_match('~^GENERATED ~i',$k)?" $k":" DEFAULT ".(preg_match('~char|binary|text|json|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$k)?(JUSH=="sql"&&preg_match('~text|json~',$m["type"])?"(".q($k).")":q($k)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($k)":$k)))));}function
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}function
edit_fields(array$n,array$lb,$U="TABLE",array$md=array()){$n=array_values($n);$Vb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$rb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?'Nazwa kolumny':'Nazwa parametru'),"<td id='label-type'>".'Typ'."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".'Długość',"<td>".'Opcje';if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".'Automatyczny przyrost'."'>AI</abbr>",doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",'mssql'=>"t-sql/statements/create-table-transact-sql-identity-property",)),"<td id='label-default'$Vb>".'Wartość domyślna',(support("comment")?"<td id='label-comment'$rb>".'Komentarz':"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($n))."]","+",'Dodaj następny'),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
as$s=>$m){$s++;$lg=$m[($_POST?"orig":"field")];$fc=(isset($_POST["add"][$s-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$s)))&&(support("drop_col")||$lg=="");echo"<tr".($fc?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>",(support("move_col")?icon("move","","↕",'Przenieś')." ":"");if($fc)echo"<input name='fields[$s][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'".(isset($_POST["add"][$s-1])?" autofocus":"").">";echo
input_hidden("fields[$s][orig]",$lg);edit_type("fields[$s]",$m,$lb,$md);if($U=="TABLE"){echo"<td>".checkbox("fields[$s][null]",1,$m["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$s'".($m["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Vb>".(driver()->generated?html_select("fields[$s][generated]",array_merge(array("","DEFAULT"),driver()->generated),$m["generated"])." ":checkbox("fields[$s][generated]",1,$m["generated"],"","","","label-default"));$za=" name='fields[$s][default]' aria-labelledby='label-default'";$Y=h($m["default"]);echo(preg_match('~\n~',$m["default"])?"<textarea$za rows='2' cols='30' style='vertical-align: bottom;'>\n$Y</textarea>":"<input$za value='$Y'>"),(support("comment")?"<td$rb><input name='fields[$s][comment]' value='".h($m["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(support("move_col")?icon("plus","add[$s]","+",'Dodaj następny')." ":""),($lg==""||support("drop_col")?icon("cross","drop_col[$s]","x",'Usuń'):"");}}function
process_fields(array&$n){if($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}return$_POST["add"]||$_POST["drop_col"];}function
normalize_enum(array$B){$X=$B[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
grant($vd,array$dh,$e,$Vf){if(!$dh)return
true;if($dh==array("ALL PRIVILEGES","GRANT OPTION"))return($vd=="GRANT"?queries("$vd ALL PRIVILEGES$Vf WITH GRANT OPTION"):queries("$vd ALL PRIVILEGES$Vf")&&queries("$vd GRANT OPTION$Vf"));return
queries("$vd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$dh).$e).$Vf);}function
drop_create($jc,$h,$lc,$Pi,$nc,$A,$qf,$of,$pf,$Tf,$Ef){if($_POST["drop"])query_redirect($jc,$A,$qf);elseif($Tf=="")query_redirect($h,$A,$pf);elseif($Tf!=$Ef){$Gb=queries($h);queries_redirect($A,$of,$Gb&&queries($jc));if($Gb)queries($lc);}else
queries_redirect($A,$of,queries($Pi)&&queries($nc)&&queries($jc)&&queries($h));}function
create_trigger($Vf,array$K){$Vi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Vf.$Vi:$Vi.$Vf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
create_routine($Ch,array$K){$O=array();$n=(array)$K["fields"];ksort($n);foreach($n
as$m){if($m["field"]!="")$O[]=(preg_match("~^(".driver()->inout.")\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$Xb=rtrim($K["definition"],";");return"CREATE $Ch ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($Ch=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Xb):"\n$Xb;");}function
remove_definer($H){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
format_foreign_key(array$p){$j=$p["db"];$Jf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($Jf!=""&&$Jf!=$_GET["ns"]?idf_escape($Jf).".":"").idf_escape($p["table"])." (".implode(", ",array_map('Adminer\idf_escape',$p["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"").($p["deferrable"]?" $p[deferrable]":"");}function
tar_file($o,$aj){$J=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($aj->size),decoct(time()));$db=8*32;for($s=0;$s<strlen($J);$s++)$db+=ord($J[$s]);$J
.=sprintf("%06o",$db)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$aj->send();echo
str_repeat("\0",511-($aj->size+511)%512);}function
doc_link(array$Ig,$Qi="<sup>?</sup>"){$Yh=connection()->server_info;$Qj=preg_replace('~^(\d\.?\d).*~s','\1',$Yh);$Ej=array('sql'=>"https://dev.mysql.com/doc/refman/$Qj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$Qj)."/",'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',$Yh)."&id=",);if(connection()->flavor=='maria'){$Ej['sql']="https://mariadb.com/kb/en/";$Ig['sql']=(isset($Ig['mariadb'])?$Ig['mariadb']:str_replace(".html","/",$Ig['sql']));}return($Ig[JUSH]?"<a href='".h($Ej[JUSH].$Ig[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Qj":""))."'".target_blank().">$Qi</a>":"");}function
db_size($j){if(!connection()->select_db($j))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
format_number($J);}function
set_utf8mb4($h){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$h)){$O=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Baza danych'.": ".h(DB),'Nie znaleziono bazy danych.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Bazy danych zostały usunięte.',drop_databases($_POST["db"]));page_header('Wybierz bazę danych',$l,false);echo"<p class='links'>\n";foreach(array('database'=>'Utwórz bazę danych','privileges'=>'Uprawnienia użytkowników','processlist'=>'Lista procesów','variables'=>'Zmienne','status'=>'Status',)as$x=>$X){if(support($x))echo"<a href='".h(ME)."$x='>$X</a>\n";}echo"<p>".sprintf('Wersja %s: %s za pomocą %s',get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".sprintf('Zalogowany jako: %s',"<b>".h(logged_user())."</b>")."\n";$i=adminer()->databases();if($i){$Kh=support("scheme");$lb=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>".'Baza danych'.(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".'Odśwież'."</a>":"")."<td>".'Porównywanie znaków'."<td>".'Tabele'."<td>".'Rozmiar'." - <a href='".h(ME)."dbsize=1'>".'Oblicz'."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i
as$j=>$T){$Bh=h(ME)."db=".urlencode($j);$t=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"<th><a href='$Bh' id='$t'>".h($j)."</a>";$c=h(db_collation($j,$lb));echo"<td>".(support("database")?"<a href='$Bh".($Kh?"&amp;ns=":"")."&amp;database=' title='".'Zmień bazę danych'."'>$c</a>":$c),"<td align='right'><a href='$Bh&amp;schema=' id='tables-".h($j)."' title='".'Schemat bazy danych'."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($j)."'>".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".'Zaznaczone'." <span id='selected'></span></legend><div>\n".input_hidden("all").script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".'Usuń'."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".'Wczytane wtyczki'."</h3>\n<ul>\n";foreach(adminer()->plugins
as$Ng){$bc=(method_exists($Ng,'description')?$Ng->description():"");if(!$bc){$rh=new
\ReflectionObject($Ng);if(preg_match('~^/[\s*]+(.+)~',$rh->getDocComment(),$B))$bc=$B[1];}$Lh=(method_exists($Ng,'screenshot')?$Ng->screenshot():"");echo"<li><b>".get_class($Ng)."</b>".h($bc?": $bc":"").($Lh?" (<a href='".h($Lh)."'".target_blank().">".'zrzut ekranu'."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header('Schemat'.": ".h($_GET["ns"]),'Nieprawidłowy schemat.',true);page_footer("ns");exit;}}}adminer()->afterConnect();class
TmpFile{private$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Ab){$this->size+=strlen($Ab);fwrite($this->handler,$Ab);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$n)),$M);$K=($I?$I->fetch_row():array());echo
driver()->value($K[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:'Brak tabel.';$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Zmaterializowana perspektywa':'Perspektywa':'Tabela').": ".($C!=""?$C:h($a)),$l);$Ah=array();foreach($n
as$x=>$m)$Ah+=$m["privileges"];adminer()->selectLinks($S,(isset($Ah["insert"])||!support("table")?"":null));$qb=$S["Comment"];if($qb!="")echo"<p class='nowrap'>".'Komentarz'.": ".h($qb)."\n";if($n)adminer()->tableStructurePrint($n,$S);function
tables_links(array$T){echo"<ul>\n";foreach($T
as$K){$_=preg_replace('~ns=[^&]*~',"ns=".urlencode($K["ns"]),ME);echo"<li><a href='".h($_."table=".urlencode($K["table"]))."'>".($K["ns"]!=$_GET["ns"]?"<b>".h($K["ns"])."</b>.":"").h($K["table"])."</a>";}echo"</ul>\n";}$ke=driver()->inheritsFrom($a);if($ke){echo"<h3>".'Dziedziczy po'."</h3>\n";tables_links($ke);}if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indeksy'."</h3>\n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Zmień indeksy'."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".'Klucze obce'."</h3>\n";$md=foreign_keys($a);if($md){echo"<table>\n","<thead><tr><th>".'Źródło'."<td>".'Cel'."<td>".'W przypadku usunięcia'."<td>".'W przypadku zmiany'."<td></thead>\n";foreach($md
as$C=>$p){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$p["source"]))."</i>";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($p["table"]))."'>".($p["db"]!=""&&$p["db"]!=DB?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$p["target"]))."</i>)","<td>".h($p["on_delete"]),"<td>".h($p["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.'Zmień'.'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Dodaj klucz obcy'."</a>\n";}if(support("check")){echo"<h3 id='checks'>".'Kontrole'."</h3>\n";$Za=driver()->checkConstraints($a);if($Za){echo"<table>\n";foreach($Za
as$x=>$X)echo"<tr title='".h($x)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($x))."'>".'Zmień'."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.'Utwórz kontrolę'."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Wyzwalacze'."</h3>\n";$oj=triggers($a);if($oj){echo"<table>\n";foreach($oj
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".'Zmień'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Dodaj wyzwalacz'."</a>\n";}$je=driver()->inheritedTables($a);if($je){echo"<h3 id='partitions'>".'Odziedziczone przez'."</h3>\n";$Bg=driver()->partitionsInfo($a);if($Bg)echo"<p><code class='jush-".JUSH."'>BY ".h("$Bg[partition_by]($Bg[partition])")."</code>\n";tables_links($je);}}elseif(isset($_GET["schema"])){page_header('Schemat bazy danych',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Fi=array();$Gi=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$af,PREG_SET_ORDER);foreach($af
as$s=>$B){$Fi[$B[1]]=array($B[2],$B[3]);$Gi[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$dj=0;$Ia=-1;$Ih=array();$qh=array();$Oe=array();$ta=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Qg=0;$Ih[$R]["fields"]=array();foreach($ta[$R]as$m){$Qg+=1.25;$m["pos"]=$Qg;$Ih[$R]["fields"][$m["field"]]=$m;}$Ih[$R]["pos"]=($Fi[$R]?:array($dj,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$Me=$Ia;if(idx($Fi[$R],1)||idx($Fi[$X["table"]],1))$Me=min(idx($Fi[$R],1,0),idx($Fi[$X["table"]],1,0))-1;else$Ia-=.1;while($Oe[(string)$Me])$Me-=.0001;$Ih[$R]["references"][$X["table"]][(string)$Me]=array($X["source"],$X["target"]);$qh[$X["table"]][$R][(string)$Me]=$X["target"];$Oe[(string)$Me]=true;}}$dj=max($dj,$Ih[$R]["pos"][0]+2.5+$Qg);}echo'<div id="schema" style="height: ',$dj,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = () => false;
const tablePos = {',implode(",",$Gi)."\n",'};
const em = qs(\'#schema\').offsetHeight / ',$dj,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($Ih
as$C=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($C).'"><b>'.h($C)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X='<span'.type_class($m["type"]).' title="'.h($m["type"].($m["length"]?"($m[length])":"").($m["null"]?" NULL":'')).'">'.h($m["field"]).'</span>';echo"<br>".($m["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$Ni=>$sh){foreach($sh
as$Me=>$nh){$Ne=$Me-idx($Fi[$C],1);$s=0;foreach($nh[0]as$ii)echo"\n<div class='references' title='".h($Ni)."' id='refs$Me-".($s++)."' style='left: $Ne"."em; top: ".$R["fields"][$ii]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$Ne)."em;'></div></div>";}}foreach((array)$qh[$C]as$Ni=>$sh){foreach($sh
as$Me=>$e){$Ne=$Me-idx($Fi[$C],1);$s=0;foreach($e
as$Mi)echo"\n<div class='references arrow' title='".h($Ni)."' id='refd$Me-".($s++)."' style='left: $Ne"."em; top: ".$R["fields"][$Mi]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$Ne)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Ih
as$C=>$R){foreach((array)$R["references"]as$Ni=>$sh){if($Ih[$Ni]){foreach($sh
as$Me=>$nh){$tf=$dj;$gf=-10;foreach($nh[0]as$x=>$ii){$Rg=$R["pos"][0]+$R["fields"][$ii]["pos"];$Sg=$Ih[$Ni]["pos"][0]+$Ih[$Ni]["fields"][$nh[1][$x]]["pos"];$tf=min($tf,$Rg,$Sg);$gf=max($gf,$Rg,$Sg);}echo"<div class='references' id='refl$Me' style='left: $Me"."em; top: $tf"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($gf-$tf)."em;'></div></div>\n";}}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($ca)),'" id="schema-link">Trwały link</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){$k=array("auto_increment"=>'');foreach(array("type","routine","event","trigger")as$_i){if(support($_i))$k[$_i."s"]='';}save_settings(array_intersect_key($_POST+$k,array_flip(array("output","format","db_style","table_style","data_style"))+$k),"adminer_export");$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Oc=dump_headers((count($T)==1?key($T):DB),(DB==""||$_GET["ns"]===""||count($T)>1));$xe=preg_match('~sql~',$_POST["format"]);if($xe){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->server_info)." dump\n\n";if(JUSH=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$vi=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
as$j){adminer()->dumpDatabase($j);if(connection()->select_db($j)){if($xe){if($vi)echo
use_sql($j,$vi).";\n\n";$sg="";if($_POST["types"]){foreach(types()as$t=>$U){$Cc=type_values($t);if($Cc)$sg
.=($vi!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($Cc);\n\n";else$sg
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$C=$K["ROUTINE_NAME"];$Ch=$K["ROUTINE_TYPE"];$h=create_routine($Ch,array("name"=>$C)+routine($K["SPECIFIC_NAME"],$Ch));set_utf8mb4($h);$sg
.=($vi!='DROP+CREATE'?"DROP $Ch IF EXISTS ".idf_escape($C).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($h);$sg
.=($vi!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}echo($sg&&JUSH=='sql'?"DELIMITER ;;\n\n$sg"."DELIMITER ;\n\n":$sg);}if($_POST["table_style"]||$_POST["data_style"]){foreach(($_GET["ns"]===""?(array)$_POST["schemas"]:(DB!=""||!support("scheme")?array(""):adminer()->schemas()))as$Ih){if($Ih!=""){set_schema($Ih);if(DB==""&&(information_schema(DB)||$Ih=="pg_catalog"))continue;}$Sj=array();foreach(table_status('',true)as$C=>$S){$R=(DB==""||$_GET["ns"]===""||in_array($C,(array)$_POST["tables"]));$Nb=(DB==""||$_GET["ns"]===""||in_array($C,(array)$_POST["data"]));if($R||$Nb){$aj=null;if($Oc=="tar"){$aj=new
TmpFile;ob_start(array($aj,'write'),1e5);}adminer()->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Sj[]=$C;elseif($Nb){$n=fields($C);adminer()->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($C));}if($xe&&$_POST["triggers"]&&$R&&($oj=trigger_sql($C)))echo"\nDELIMITER ;;\n$oj\nDELIMITER ;\n";if($Oc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$C.csv",$aj);}elseif($xe)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$C=>$S){$R=(DB==""||$_GET["ns"]===""||in_array($C,(array)$_POST["tables"]));if($R&&!is_view($S))echo
foreign_keys_sql($C);}}foreach($Sj
as$Rj)adminer()->dumpTable($Rj,$_POST["table_style"],1);if($Oc=="tar")echo
pack("x512");}}}}adminer()->dumpFooter();exit;}page_header('Eksportuj',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table class="layout">
';$Rb=array('','USE','DROP+CREATE','CREATE');$Hi=array('','DROP+CREATE','CREATE');$Ob=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Ob[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");echo"<tr><th>".'Rezultat'."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Baza danych'."<td>".html_select('db_style',$Rb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],'Typy użytkownika'):"").(support("routine")?checkbox("routines",1,$K["routines"],'Procedury i funkcje'):"").(support("event")?checkbox("events",1,$K["events"],'Wydarzenia'):"")),"<tr><th>".'Tabele'."<td>".html_select('table_style',$Hi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],'Automatyczny przyrost').(support("trigger")?checkbox("triggers",1,$K["triggers"],'Wyzwalacze'):""),"<tr><th>".'Dane'."<td>".html_select('data_style',$Ob,$K["data_style"]),'</table>
<p><input type="submit" value="Eksportuj">
',input_token(),'
<table>
',script("qsl('table').onclick = dumpClick;");$Wg=array();if($_GET["ns"]===""){echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-schemas' checked class='jsonly'>".'Schemat'."</label>","</thead>\n",script("qs('#check-schemas').onclick = partial(formCheck, /^schemas\\[/);");foreach(adminer()->schemas()as$Ih)echo"<tr><td>".checkbox("schemas[]",$Ih,true,$Ih,"","block")."\n";}elseif(DB!=""){$bb=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$bb class='jsonly'>".'Tabela'."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".'Dane'."<input type='checkbox' id='check-data'$bb class='jsonly'></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Sj="";$Ji=tables_list();foreach($Ji
as$C=>$U){$Vg=preg_replace('~_.*~','',$C);$bb=($a==""||$a==(substr($a,-1)=="%"?"$Vg%":$C));$ah="<tr><td>".checkbox("tables[]",$C,$bb,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$Sj
.="$ah\n";else
echo"$ah<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$bb)."</label>\n";$Wg[$Vg]++;}echo$Sj;if($Ji)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{$i=adminer()->databases();echo"<thead><tr><th style='text-align: left;'>","<label class='block'>".($i?"<input type='checkbox' id='check-databases'".($a==""?" checked":"")." class='jsonly'>".script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""):"").'Baza danych'."</label>","</thead>\n";if($i){foreach($i
as$j){if(!information_schema($j)){$Vg=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$Vg%",$j,"","block")."\n";$Wg[$Vg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$cd=true;foreach($Wg
as$x=>$X){if($x!=""&&$X>1){echo($cd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$cd=false;}}}elseif(isset($_GET["privileges"])){page_header('Uprawnienia użytkowników');echo'<p class="links"><a href="'.h(ME).'user=">'.'Dodaj użytkownika'."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$vd=$I;if(!$I)$I=connection()->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo
input_hidden("db",DB),($vd?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".'Użytkownik'."<th>".'Serwer'."<th></thead>\n";while($K=$I->fetch_assoc())echo'<tr><td>'.h($K["User"])."<td>".h($K["Host"]).'<td><a href="'.h(ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.'Edytuj'."</a>\n";if(!$vd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edytuj'."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Ld=&get_session("queries");$Kd=&$Ld[DB];if(!$l&&$_POST["clear"]){$Kd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Importuj':'Zapytanie SQL'),$l);$Se='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$mi=adminer()->importServerPath();$q=@fopen((file_exists($mi)?$mi:"compress.zlib://$mi.gz"),"rb");$H=($q?fread($q,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($lf=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($lf,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$gh=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Kd||first(end($Kd))!=$gh){restart_session();$Kd[]=array($gh,time());set_session("queries",$Ld);stop_session();}}$ji="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Se)[^\n]*\n?|--\r?\n)";$Zb=driver()->delimiter;$D=0;$xc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$pb=0;$Ec=array();$zg='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Se.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ej=microtime(true);$na=get_settings("adminer_import");while($H!=""){if(!$D&&preg_match("~^$ji*+DELIMITER\\s+(\\S+)~i",$H,$B)){$Zb=preg_quote($B[1]);$H=substr($H,strlen($B[0]));}elseif(!$D&&JUSH=='pgsql'&&preg_match("~^($ji*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$B)){$Zb="\n\\\\\\.\r?\n";$D=strlen($B[0]);}else{preg_match("($Zb\\s*|$zg)",$H,$B,PREG_OFFSET_CAPTURE,$D);list($od,$Qg)=$B[0];if(!$od&&$q&&!feof($q))$H
.=fread($q,1e5);else{if(!$od&&rtrim($H)=="")break;$D=$Qg+strlen($od);if($od&&!preg_match("(^$Zb)",$od)){$Ta=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($Qg>0&&strtolower($H[$Qg-1])=="e"));$Jg=($od=='/*'?'\*/':($od=='['?']':(preg_match("~^$Se|^#~",$od)?"\n":preg_quote($od).($Ta?'|\\\\.':''))));while(preg_match("($Jg|\$)s",$H,$B,PREG_OFFSET_CAPTURE,$D)){$Gh=$B[0][0];if(!$Gh&&$q&&!feof($q))$H
.=fread($q,1e5);else{$D=$B[0][1]+strlen($Gh);if(!$Gh||$Gh[0]!="\\")break;}}}else{$xc=false;$gh=substr($H,0,$Qg+($Zb[0]=="\n"?3:0));$pb++;$ah="<pre id='sql-$pb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($gh)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$ji*+(ATTACH|VACUUM\\b.*\\bINTO)\\b~is",$gh,$B)!==0){echo$ah,"<p class='error'>".sprintf('Zapytania %s są niewspierane.',preg_match('~ATTACH~i',$B[1])?'ATTACH':'VACUUM INTO')."\n";$Ec[]=" <a href='#sql-$pb'>$pb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$ah;ob_flush();flush();}$ri=microtime(true);if(connection()->multi_query($gh)&&$g&&preg_match("~^$ji*+USE\\b~i",$gh))$g->query($gh);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$ah:""),"<p class='error'>".'Błąd w zapytaniu'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Ec[]=" <a href='#sql-$pb'>$pb</a>";if($_POST["error_stops"])break
2;}else{$Ti=" <span class='time'>(".format_time($ri).")</span>".(strlen($gh)<1000?" <a href='".h(ME)."sql=".urlencode(trim($gh))."'>".'Edytuj'."</a>":"");$pa=connection()->affected_rows;$Vj=($_POST["only_errors"]?"":driver()->warnings());$Wj="warnings-$pb";if($Vj)$Ti
.=", <a href='#$Wj'>".'Ostrzeżenia'."</a>".script("qsl('a').onclick = partial(toggle, '$Wj');","");$Mc=null;$kg=null;$Nc="explain-$pb";if(is_object($I)){$z=$_POST["limit"];$kg=print_select_result($I,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Lf=$I->num_rows;echo"<p class='sql-footer'>".($Lf?($z&&$Lf>$z?sprintf('%d / ',$z):"").lang_format(array('%d rekord','%d rekordy','%d rekordów'),$Lf):""),$Ti;if($g&&preg_match("~^($ji|\\()*+SELECT\\b~i",$gh)&&($Mc=explain($g,$gh)))echo", <a href='#$Nc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Nc');","");$t="export-$pb";echo", <a href='#$t'>".'Eksportuj'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."<span id='$t' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$na["output"])." ".html_select("format",adminer()->dumpFormat(),$na["format"]).input_hidden("query",$gh)."<input type='submit' name='export' value='".'Eksportuj'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$ji*+(CREATE|DROP|ALTER)$ji++(DATABASE|SCHEMA)\\b~i",$gh)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang_format(array('Zapytanie wykonane pomyślnie, zmieniono %d rekord.','Zapytanie wykonane pomyślnie, zmieniono %d rekordy.','Zapytanie wykonane pomyślnie, zmieniono %d rekordów.'),$pa)."$Ti\n";}echo($Vj?"<div id='$Wj' class='hidden'>\n$Vj</div>\n":"");if($Mc){echo"<div id='$Nc' class='hidden explain'>\n";print_select_result($Mc,$g,$kg);echo"</div>\n";}}$ri=microtime(true);}while(connection()->next_result());}$H=substr($H,$D);$D=0;}}}}if($xc)echo"<p class='message'>".'Nic do wykonania.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang_format(array('Pomyślnie wykonano %d zapytanie.','Pomyślnie wykonano %d zapytania.','Pomyślnie wykonano %d zapytań.'),$pb-count($Ec))," <span class='time'>(".format_time($ej).")</span>\n";elseif($Ec&&$pb>1)echo"<p class='error'>".'Błąd w zapytaniu'.": ".implode("",$Ec)."\n";}else
echo"<p class='error'>".upload_error($H)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$Kc="<input type='submit' value='".'Wykonaj'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$gh=$_GET["sql"];if($_POST)$gh=$_POST["query"];elseif($_GET["history"]=="all")$gh=$Kd;elseif($_GET["history"]!="")$gh=idx($Kd[$_GET["history"]],0);echo"<p>";textarea("query",$gh,20);echo
script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"<p>";adminer()->sqlPrintAfter();echo"$Kc\n",'Limit rekordów'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{$Ad=(extension_loaded("zlib")?"[.gz]":"");echo"<fieldset><legend>".'Wgranie pliku'."</legend><div>",file_input("SQL$Ad: <input type='file' name='sql_file[]' multiple>\n$Kc"),"</div></fieldset>\n";$Wd=adminer()->importServerPath();if($Wd)echo"<fieldset><legend>".'Z serwera'."</legend><div>",sprintf('Plik %s na serwerze',"<code>".h($Wd)."$Ad</code>"),' <input type="submit" name="webfile" value="'.'Uruchom z pliku'.'">',"</div></fieldset>\n";echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Zatrzymaj w przypadku błędu')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Pokaż tylko błędy')."\n",input_token();if(!isset($_GET["import"])&&$Kd){print_fieldset("history",'Historia',$_GET["history"]!="");for($X=end($Kd);$X;$X=prev($Kd)){$x=key($Kd);list($gh,$Ti,$sc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.'Edytuj'."</a>"." <span class='time' title='".@date('Y-m-d',$Ti)."'>".@date("H:i:s",$Ti)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Se).*~m",'',$gh)))),80,"</code>").($sc?" <span class='time'>($sc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Wyczyść'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edytuj wszystkie'."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$_j=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
as$C=>$m){if((!$_j&&!isset($m["privileges"]["insert"]))||adminer()->fieldName($m)=="")unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($_j?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$vj=unique_array($_GET["where"],$w);$jh="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,'Rekord został usunięty.',driver()->delete($a,$jh,$vj?0:1));else{$O=array();foreach($n
as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($_j){if(!$O)redirect($A);queries_redirect($A,'Rekord został zaktualizowany.',driver()->update($a,$O,$jh,$vj?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$I=driver()->insert($a,$O);$Le=($I?last_id($I):0);queries_redirect($A,sprintf('Rekord%s został dodany.',($Le?" $Le":"")),$I);}}}$K=null;if($Z){$M=array();foreach($n
as$C=>$m){if(isset($m["privileges"]["select"])){$xa=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$M[]=($xa?"$xa AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$l=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$n){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K
as$x=>$X){if(!$Z)$K[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}if($_POST["save"])$K=(array)$_POST["fields"]+($K?$K:array());edit_form($a,$n,$K,$_j,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Dg=driver()->partitionBy;$Gg=($Dg?driver()->partitionsInfo($a):array());$ph=referencable_primary($a);$md=array();foreach($ph
as$Di=>$m)$md[str_replace("`","``",$Di)."`".str_replace("`","``",$m["field"])]=$Di;$ng=array();$S=array();if($a!=""){$ng=fields($a);$S=table_status1($a);if(count($S)<2)$l='Brak tabel.';}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!$l)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Tabela została usunięta.',drop_tables(array($a)));else{$n=array();$ta=array();$Fj=false;$kd=array();$mg=reset($ng);$ra=" FIRST";foreach($K["fields"]as$x=>$m){$p=$md[$m["type"]];$qj=($p!==null?$ph[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$fh=process_field($m,$qj);$ta[]=array($m["orig"],$fh,$ra);if(!$mg||$fh!==process_field($mg,$mg)){$n[]=array($m["orig"],$fh,$ra);if($m["orig"]!=""||$ra)$Fj=true;}if($p!==null)$kd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$md[$m["type"]],'source'=>array($m["field"]),'target'=>array($qj["field"]),'on_delete'=>$m["on_delete"],));$ra=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Fj=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$mg=next($ng);if(!$mg)$ra="";}}$F=array();if(in_array($K["partition_by"],$Dg)){foreach($K
as$x=>$X){if(preg_match('~^partition~',$x))$F[$x]=$X;}foreach($F["partition_names"]as$x=>$C){if($C==""){unset($F["partition_names"][$x]);unset($F["partition_values"][$x]);}}$F["partition_names"]=array_values($F["partition_names"]);$F["partition_values"]=array_values($F["partition_values"]);if($F==$Gg)$F=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$F=null;$nf='Tabela została zmieniona.';if($a==""){cookie("adminer_engine",$K["Engine"]);$nf='Tabela została utworzona.';}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$nf,alter_table($a,$C,(JUSH=="sqlite"&&($Fj||$kd)?$ta:$n),$kd,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]!=$S["Engine"]?$K["Engine"]:null),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$F));}}page_header(($a!=""?'Zmień tabelę':'Utwórz tabelę'),$l,array("table"=>$a),h($a));if(!$_POST){$rj=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($rj["int"])?"int":(isset($rj["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($ng
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$K["fields"][]=$m;}if($Dg){$K+=$Gg;$K["partition_names"][]="";$K["partition_values"][]="";}}}$lb=collations();if(is_array(reset($lb)))$lb=call_user_func_array('array_merge',array_values($lb));$zc=driver()->engines();foreach($zc
as$yc){if(!strcasecmp($yc,$K["Engine"])){$K["Engine"]=$yc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo'Nazwa tabeli'.": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($zc?html_select("Engine",array(""=>"(".'składowanie'.")")+$zc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($lb)echo"<datalist id='collations'>".optionlist($lb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".'porównywanie znaków'.")'>\n");echo"<input type='submit' value='".'Zapisz zmiany'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$lb,"TABLE",$md);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Automatyczny przyrost'.": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Wartości domyślne',"columnShow(this.checked, 5)","jsonly");$sb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$sb,'Komentarz',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($sb?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($sb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="Zapisz zmiany">
';}echo'
';if($a!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$a));if($Dg&&(JUSH=='sql'||$a=="")){$Eg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",'Partycjonowanie',$K["partition_by"]);echo"<p>".html_select("partition_by",array_merge(array(""),$Dg),$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",'Partycje'.": <input type='number' name='partitions' class='size".($Eg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($Eg?"":" class='hidden'").">\n","<thead><tr><th>".'Nazwa partycji'."<th>".'Wartości'."</thead>\n";foreach($K["partition_names"]as$x=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($x==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$x)).'">';echo"</table>\n</div></fieldset>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$ee=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$be=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$ee[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$ee[]="SPATIAL";if(min_version('',11.7)&&preg_match('~MyISAM|InnoDB~i',$S["Engine"]))$ee[]="VECTOR";$w=indexes($a);$n=fields($a);$Yg=array();if(JUSH=="mongo"){$Yg=$w["_id_"];unset($ee[0]);unset($w["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$ee)){$e=array();$Qe=array();$cc=array();$ce=(support("partial_indexes")?$v["partial"]:"");$ae=(in_array($v["algorithm"],$be)?$v["algorithm"]:"");$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$ac=idx($v["descs"],$x);$O[]=($n[$d]?idf_escape($d):$d).($y?"(".(+$y).")":"").($ac?" DESC":"");$e[]=$d;$Qe[]=($y?:null);$cc[]=$ac;}}$Lc=$w[$C];if($Lc){ksort($Lc["columns"]);ksort($Lc["lengths"]);ksort($Lc["descs"]);if($v["type"]==$Lc["type"]&&array_values($Lc["columns"])===$e&&(!$Lc["lengths"]||array_values($Lc["lengths"])===$Qe)&&array_values($Lc["descs"])===$cc&&$Lc["partial"]==$ce&&(!$be||$Lc["algorithm"]==$ae)){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O,$ae,$ce);}}foreach($w
as$C=>$Lc)$b[]=array($Lc["type"],$C,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indeksy zostały zmienione.',alter_indexes($a,$b));}page_header('Indeksy',$l,array("table"=>$a),h($a));$Zc=array_keys($n);if($_POST["add"]){foreach($K["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$v=end($K["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($w
as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$K["indexes"]=$w;}$Qe=(JUSH=="sql"||JUSH=="mssql");$di=($_POST?$_POST["options"]:get_setting("index_options"));echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap">
<thead><tr>
<th id="label-type">Typ indeksu
';$Ud=" class='idxopts".($di?"":" hidden")."'";if($be)echo"<th id='label-algorithm'$Ud>".'Algorytm'.doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'<th><input type="submit" class="wayoff">','Kolumny'.($Qe?"<span$Ud> (".'długość'.")</span>":"");if($Qe||support("descidx"))echo
checkbox("options",1,$di,'Opcje',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Nazwa
';if(support("partial_indexes"))echo"<th id='label-condition'$Ud>".'Warunek';echo'<th><noscript>',icon("plus","add[0]","+",'Dodaj następny'),'</noscript>
</thead>
';if($Yg){echo"<tr><td>PRIMARY<td>";foreach($Yg["columns"]as$x=>$d)echo
select_input(" disabled",$Zc,$d),"<label><input disabled type='checkbox'>".'malejąco'."</label> ";echo"<td><td>\n";}$_e=1;foreach($K["indexes"]as$v){if(!$_POST["drop_col"]||$_e!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$_e][type]",array(-1=>"")+$ee,$v["type"],($_e==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($be)echo"<td$Ud>".html_select("indexes[$_e][algorithm]",array_merge(array(""),$be),$v['algorithm'],"label-algorithm");echo"<td>";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$_e][columns][$s]' title='".'Kolumna'."'",($n&&($d==""||$n[$d])?array_combine($Zc,$Zc):array()),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span$Ud>",($Qe?"<input type='number' name='indexes[$_e][lengths][$s]' class='size' value='".h(idx($v["lengths"],$x))."' title='".'Długość'."'>":""),(support("descidx")?checkbox("indexes[$_e][descs][$s]",1,idx($v["descs"],$x),'malejąco'):""),"</span> </span>";$s++;}echo"<td><input name='indexes[$_e][name]' value='".h($v["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n";if(support("partial_indexes"))echo"<td$Ud><input name='indexes[$_e][partial]' value='".h($v["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>".icon("cross","drop_col[$_e]","x",'Usuń').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$_e++;}echo'</table>
</div>
<p>
<input type="submit" value="Zapisz zmiany">
',input_token(),'</form>
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Baza danych została usunięta.',drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),'Nazwa bazy danych została zmieniona.',rename_database($C,$K["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$wi=true;$Ke="";foreach($i
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$K["collation"]))$wi=false;$Ke=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Ke),'Baza danych została utworzona.',$wi);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),'Baza danych została zmieniona.');}}page_header(DB!=""?'Zmień bazę danych':'Utwórz bazę danych',$l,array(),h(DB));$lb=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$lb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$vd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$vd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add"]||strpos($C,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($C).'</textarea><br>':'<input name="name" autofocus value="'.h($C).'" data-maxlength="64" autocapitalize="off">')."\n".($lb?html_select("collation",array(""=>"(".'porównywanie znaków'.")")+$lb,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),'<input type="submit" value="Zapisz zmiany">
';if(DB!="")echo"<input type='submit' name='drop' value='".'Usuń'."'>".confirm(sprintf('Usunąć %s?',DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
icon("plus","add[0]","+",'Dodaj następny')."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schemat został usunięty.');else{$C=trim($K["name"]);$_
.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,'Schemat został utworzony.');elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,'Schemat został zmieniony.');else
redirect($_);}}page_header($_GET["ns"]!=""?'Zmień schemat':'Utwórz schemat',$l);if(!$K)$K["name"]=$_GET["ns"];echo'
<form action="" method="post">
<p><input name="name" autofocus value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="Zapisz zmiany">
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".'Usuń'."'>".confirm(sprintf('Usunąć %s?',$_GET["ns"]))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["call"])){$ba=($_GET["name"]?:$_GET["call"]);page_header('Uruchom'.": ".h($ba),$l);$Ch=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Xd=array();$sg=array();foreach($Ch["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$sg[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Xd[]=$s;}if(!$l&&$_POST){$Ua=array();foreach($Ch["fields"]as$x=>$m){$X="";if(in_array($x,$Xd)){$X=process_input($m);if($X===false)$X="''";if(isset($sg[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($sg[$x]))$Ua[]="@".idf_escape($m["field"]);elseif(in_array($x,$Xd))$Ua[]=$X;}$H=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($Ch["returns"],"type")=="record"?"* FROM ":"").table($ba)."(".implode(", ",$Ua).")";$ri=microtime(true);$I=connection()->multi_query($H);$pa=connection()->affected_rows;echo
adminer()->selectQuery($H,$ri,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$g);else
echo"<p class='message'>".lang_format(array('Procedura została uruchomiona, zmieniono %d rekord.','Procedura została uruchomiona, zmieniono %d rekordy.','Procedura została uruchomiona, zmieniono %d rekordów.'),$pa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($sg)print_select_result(connection()->query("SELECT ".implode(", ",$sg)));}}echo'
<form action="" method="post">
';if($Xd){echo"<table class='layout'>\n";foreach($Xd
as$x){$m=$Ch["fields"][$x];$C=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$C);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$C,""));echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="Uruchom">
',input_token(),'</form>

<pre>
';function
pre_tr($Gh){return
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Gh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($B){$dd=pre_tr($B[2]);return"<table>\n".($B[1]?"<thead>$dd</thead>\n":$dd).pre_tr($B[4])."\n</table>";},preg_replace('~(\n(    -|mysql)&gt; )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Ch['comment']))));echo'</pre>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Mi=array();foreach($K["source"]as$x=>$X)$Mi[$x]=$K["target"][$x];$K["target"]=$Mi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $C"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Klucz obcy został usunięty.':($C!=""?'Klucz obcy został zmieniony.':'Klucz obcy został utworzony.')),$I);if(!$K["drop"])$l='Źródłowa i docelowa kolumna muszą być tego samego typu, powinien istnieć indeks na docelowej kolumnie oraz muszą istnieć dane referencyjne.';}page_header('Klucz obcy',$l,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["change"]||$_POST["change-js"])$K["target"]=array();else$K["source"][]="";}elseif($C!=""){$md=foreign_keys($a);$K=$md[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
<form action="" method="post">
';$ii=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$og=get_schema();set_schema($K["ns"]);}$oh=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Mi=array_keys(fields(in_array($K["table"],$oh)?$K["table"]:reset($oh)));$Yf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".'Tabela docelowa'.": ".html_select("table",$oh,$K["table"],$Yf)."</label>\n";if(support("scheme")){$Jh=array_filter(adminer()->schemas(),function($Ih){return!preg_match('~^information_schema$~i',$Ih);});echo"<label>".'Schemat'.": ".html_select("ns",$Jh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$Yf)."</label>";if($K["ns"]!="")set_schema($og);}elseif(JUSH!="sqlite"){$Sb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Sb[]=$j;}echo"<label>".'BD'.": ".html_select("db",$Sb,$K["db"]!=""?$K["db"]:$_GET["db"],$Yf)."</label>";}echo
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="Zmień"></noscript>
<table>
<thead><tr><th id="label-source">Źródło<th id="label-target">Cel</thead>
';$_e=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$ii,$X,($_e==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$x)."]",$Mi,idx($K["target"],$x),"","label-target");$_e++;}echo'</table>
<p>
<label>W przypadku usunięcia: ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),'</label>
<label>W przypadku zmiany: ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),'</label>
',(DRIVER==='pgsql'?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$K["deferrable"]).' ':''),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'<p>
<input type="submit" value="Zapisz zmiany">
<noscript><p><input type="submit" name="add" value="Dodaj kolumnę"></noscript>
';if($C!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$C));echo
input_token(),'</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$pg="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$pg=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($K["name"]);$xa=" AS\n$K[select]";$A=ME."table=".urlencode($C);$nf='Perspektywa została zmieniona.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$pg=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$xa,$A,$nf);else{$Oi=$C."_adminer_".uniqid();drop_create("DROP $pg ".table($a),"CREATE $U ".table($C).$xa,"DROP $U ".table($C),"CREATE $U ".table($Oi).$xa,"DROP $U ".table($Oi),($_POST["drop"]?substr(ME,0,-1):$A),'Perspektywa została usunięta.',$nf,'Perspektywa została utworzona.',$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($pg!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'Zmień perspektywę':'Utwórz perspektywę'),$l,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>Nazwa: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],'Zmaterializowana perspektywa'):""),'<p>';textarea("select",$K["select"]);echo'<p>
<input type="submit" value="Zapisz zmiany">
';if($a!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$a));echo
input_token(),'</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$re=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$si=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Wydarzenie zostało usunięte.');elseif(in_array($K["INTERVAL_FIELD"],$re)&&isset($si[$K["STATUS"]])){$Hh="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Wydarzenie zostało zmienione.':'Wydarzenie zostało utworzone.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Hh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Hh)."\n".$si[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Zmień wydarzenie'.": ".h($aa):'Utwórz wydarzenie'),$l);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
<form action="" method="post">
<table class="layout">
<tr><th>Nazwa<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">Początek<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
<tr><th title="datetime">Koniec<td><input name="ENDS" value="',h($K["ENDS"]),'">
<tr><th>Wykonuj co<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$re,$K["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$si,$K["STATUS"]),'<tr><th>Komentarz<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",'Nie kasuj wydarzenia po przeterminowaniu'),'</table>
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="Zapisz zmiany">
';if($aa!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$aa));echo
input_token(),'</form>
';}elseif(isset($_GET["procedure"])){$ba=($_GET["name"]?:$_GET["procedure"]);$Ch=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$l){foreach($K["fields"]as$x=>$m){if($m["field"]=="")unset($K["fields"][$x]);}$Sf=routine_id($ba,routine($_GET["procedure"],$Ch));$Df=routine_id($K["name"],$K);$h=create_routine($Ch,$K);$A=substr(ME,0,-1);$nf='Procedura została zmieniona.';if(!$_POST["drop"]&&$Sf==$Df&&connection()->flavor!="mysql")query_redirect(substr_replace($h,' OR REPLACE',6,0),$A,$nf);else{$Oi="$K[name]_adminer_".uniqid();drop_create("DROP $Ch $Sf",$h,"DROP $Ch $Df",create_routine($Ch,array("name"=>$Oi)+$K),"DROP $Ch ".routine_id($Oi,$K),$A,'Procedura została usunięta.',$nf,'Procedura została utworzona.',$ba,$K["name"]);}}page_header(($ba!=""?(isset($_GET["function"])?'Zmień funkcję':'Zmień procedurę').": ".h($ba):(isset($_GET["function"])?'Utwórz funkcję':'Utwórz procedurę')),$l);if(!$_POST){if($ba=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$Ch);$K["name"]=$ba;}}$lb=get_vals("SHOW CHARACTER SET");sort($lb);$Dh=routine_languages();echo($lb?"<datalist id='collations'>".optionlist($lb)."</datalist>":""),'
<form action="" method="post" id="form">
<p>Nazwa: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',($Dh?"<label>".'Język'.": ".html_select("language",$Dh,$K["language"])."</label>\n":""),'<input type="submit" value="Zapisz zmiany">
<div class="scrollable">
<table id="edit-fields" class="nowrap">
';edit_fields($K["fields"],$lb,$Ch);if(isset($_GET["function"])){echo"<tr><td>".'Zwracany typ';edit_type("returns",(array)$K["returns"],$lb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$K["definition"],20);echo'<p>
<input type="submit" value="Zapisz zmiany">
';if($ba!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$ba));echo
input_token(),'</form>
';}elseif(isset($_GET["sequence"])){$da=$_GET["sequence"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($da),$_,'Sekwencja została usunięta.');elseif($da=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,'Sekwencja została utworzona.');elseif($da!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($da)." RENAME TO ".idf_escape($C),$_,'Sekwencja została zmieniona.');else
redirect($_);}page_header($da!=""?'Zmień sekwencję'.": ".h($da):'Utwórz sekwencję',$l);if(!$K)$K["name"]=$da;echo'
<form action="" method="post">
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="Zapisz zmiany">
';if($da!="")echo"<input type='submit' name='drop' value='".'Usuń'."'>".confirm(sprintf('Usunąć %s?',$da))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["type"])){$ea=$_GET["type"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ea),$_,'Typ został usunięty.');else
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,'Typ został utworzony.');}page_header($ea!=""?'Zmień typ'.": ".h($ea):'Utwórz typ',$l);if(!$K)$K["as"]="AS ";echo'
<form action="" method="post">
<p>
';if($ea!=""){$rj=driver()->types();$Cc=type_values($rj[$ea]);if($Cc)echo"<code class='jush-".JUSH."'>ENUM (".h($Cc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".'Usuń'."'>".confirm(sprintf('Usunąć %s?',$ea))."\n";}else{echo'Nazwa'.": <input name='name' value='".h($K['name'])."' autocapitalize='off'>\n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"<p><input type='submit' value='".'Zapisz zmiany'."'>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$K=$_POST;if($K&&!$l){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$C",($K["drop"]?"":$K["clause"]));else{$I=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Kontrola została usunięta.':($C!=""?'Kontrola została zmieniona.':'Kontrola została utworzona.')),$I);}page_header(($C!=""?'Zmień kontrolę'.": ".h($C):'Utwórz kontrolę'),$l,array("table"=>$a));if(!$K){$cb=driver()->checkConstraints($a);$K=array("name"=>$C,"clause"=>$cb[$C]);}echo'
<form action="" method="post">
<p>';if(JUSH!="sqlite")echo'Nazwa'.': <input name="name" value="'.h($K["name"]).'" data-maxlength="64" autocapitalize="off"> ';echo
doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'<p>';textarea("clause",$K["clause"]);echo'<p><input type="submit" value="Zapisz zmiany">
';if($C!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$C));echo
input_token(),'</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$nj=trigger_options();$K=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$nj["Timing"])&&in_array($_POST["Event"],$nj["Event"])&&in_array($_POST["Type"],$nj["Type"])){$Vf=" ON ".table($a);$jc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$Vf:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($jc,$A,'Wyzwalacz został usunięty.');else{if($C!="")queries($jc);queries_redirect($A,($C!=""?'Wyzwalacz został zmieniony.':'Wyzwalacz został utworzony.'),queries(create_trigger($Vf,$_POST)));if($C!="")queries(create_trigger($Vf,$K+array("Type"=>reset($nj["Type"]))));}}$K=$_POST;}page_header(($C!=""?'Zmień wyzwalacz'.": ".h($C):'Utwórz wyzwalacz'),$l,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table class="layout">
<tr><th>Czas<td>',html_select("Timing",$nj["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Wydarzenie<td>',html_select("Event",$nj["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$nj["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>Typ<td>',html_select("Type",$nj["Type"],$K["Type"]),'</table>
<p>Nazwa: <input name="Trigger" value="',h($K["Trigger"]),'" data-maxlength="64" autocapitalize="off">
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$K["Statement"]);echo'<p>
<input type="submit" value="Zapisz zmiany">
';if($C!="")echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',$C));echo
input_token(),'</form>
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$dh=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$Bb)$dh[$Bb=="File access on server"?"Server Admin":$Bb][$K["Privilege"]]=$K["Comment"];}unset($dh["Server Admin"]["Usage"]);foreach($dh["Tables"]as$x=>$X)unset($dh["Databases"][$x]);$Cf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$Cf[$X]=(array)$Cf[$X]+idx($_POST["grants"],$x,array());}$wd=array();if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$af,PREG_SET_ORDER)){foreach($af
as$X){if($X[1]!="USAGE")$wd["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$wd["$B[2]$X[2]"]["GRANT OPTION"]=true;}}}}if($_POST&&!$l){$Uf=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Uf",ME."privileges=",'Użytkownik został usunięty.');else{$Ff=q($_POST["user"])."@".q($_POST["host"]);$Hg=$_POST["pass"];$Gb=false;$I=true;if($Uf!=$Ff){$Gb=queries("CREATE USER $Ff IDENTIFIED BY ".($_POST["hashed"]?"PASSWORD ":"").q($Hg));$I=$Gb;}elseif($Hg!="")$I=queries("SET PASSWORD FOR $Ff = ".(min_version(8,99)||$_POST["hashed"]?q($Hg):"PASSWORD(".q($Hg).")"));if($I){$_h=array();foreach($Cf
as$Nf=>$vd){if(isset($_GET["grant"]))$vd=array_filter($vd);$vd=array_keys($vd);if(isset($_GET["grant"]))$_h=array_diff(array_keys(array_filter($Cf[$Nf],'strlen')),$vd);elseif($Uf==$Ff){$Rf=array_keys((array)$wd[$Nf]);$_h=array_diff($Rf,$vd);$vd=array_diff($vd,$Rf);unset($wd[$Nf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$Nf,$B)&&(!grant("REVOKE",$_h,$B[2]," ON $B[1] FROM $Ff")||!grant("GRANT",$vd,$B[2]," ON $B[1] TO $Ff"))){$I=false;break;}}}if($I&&isset($_GET["host"])){if($Uf!=$Ff)queries("DROP USER $Uf");elseif(!isset($_GET["grant"])){foreach($wd
as$Nf=>$_h){if(preg_match('~^(.+)(\(.*\))?$~U',$Nf,$B))grant("REVOKE",array_keys($_h),$B[2]," ON $B[1] FROM $Ff");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'Użytkownik został zmieniony.':'Użytkownik został dodany.'),$I);if($Gb)connection()->query("DROP USER $Ff");}}page_header((isset($_GET["host"])?'Użytkownik'.": ".h("$fa@$_GET[host]"):'Dodaj użytkownika'),$l,array("privileges"=>array('','Uprawnienia użytkowników')));$K=$_POST;if($K)$wd=$Cf;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$wd[(DB==""||$wd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table class="layout">
<tr><th>Serwer<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
<tr><th>Użytkownik<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
<tr><th>Hasło<td><input name="pass" id="pass" value="',h($K["pass"]),'" autocomplete="new-password">
',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8,99)?"":checkbox("hashed",1,$K["hashed"],'Zahashowane',"typePassword(this.form['pass'], this.checked);")),'</table>

',"<table class='odds'>\n","<thead><tr><th colspan='2'>".'Uprawnienia użytkowników'.doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($wd
as$Nf=>$vd){echo'<th>'.($Nf!="*.*"?"<input name='objects[$s]' value='".h($Nf)."' size='10' autocapitalize='off'>":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Serwer',"Databases"=>'Baza danych',"Tables"=>'Tabela',"Procedures"=>'Procedura',)as$Bb=>$ac){foreach((array)$dh[$Bb]as$ch=>$qb){echo"<tr><td".($ac?">$ac<td":" colspan='2'").' lang="en" title="'.h($qb).'">'.h($ch);$s=0;foreach($wd
as$Nf=>$vd){$C="'grants[$s][".h(strtoupper($ch))."]'";$Y=$vd[strtoupper($ch)];if($Bb=="Server Admin"&&$Nf!=(isset($wd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".'Uprawnienia'."<option value='0'".($Y=="0"?" selected":"").">".'Usuń uprawnienia'."</select>";else
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$C value='1'".($Y?" checked":"").($ch=="All privileges"?" id='grants-$s-all'>":">".($ch=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$s-all'); };"))),"</label>";$s++;}}}echo"</table>\n",'<p>
<input type="submit" value="Zapisz zmiany">
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="Usuń">',confirm(sprintf('Usunąć %s?',"$fa@$_GET[host]"));echo
input_token(),'</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$Ge=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Ge++;}queries_redirect(ME."processlist=",lang_format(array('Przerwano %d wątek.','Przerwano %d wątki.','Przerwano %d wątków.'),$Ge),$Ge||!$_POST["kill"]);}}page_header('Lista procesów',$l);echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap checkable odds">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$s=-1;foreach(adminer()->processList()as$s=>$K){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K
as$x=>$X)echo"<td>".($X!=""&&((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$K["Command"]))||(JUSH=="pgsql"&&$x=="query")||(JUSH=="oracle"&&$x=="sql_text"))?"<code class='jush-".JUSH."' data-full='".h($X)."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.'Duplikuj'.'</a>'.' <a href="" class="jsonly copy">🗐</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
',script("copyCode(qsl('table'));");if(support("kill"))echo($s+1)."/".sprintf('%d w sumie',max_connections()),"<p><input type='submit' value='".'Przerwij wykonywanie'."'>\n";echo
input_token(),'</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$md=column_foreign_keys($a);$Pf=$S["Oid"];$oa=get_settings("adminer_import");$Ah=array();$e=array();$Oh=array();$hg=array();$Si="";foreach($n
as$x=>$m){$C=adminer()->fieldName($m);$Af=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$Af;if(is_shortable($m))$Si=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$Oh[$x]=$Af;if(isset($m["privileges"]["order"])&&$C!="")$hg[$x]=$Af;$Ah+=$m["privileges"];}list($M,$xd)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$xd=array_unique($xd);$ve=count($xd)<count($M);$Z=adminer()->selectSearchProcess($n,$w);$gg=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$wj=>$K){$xa=convert_field($n[key($K)]);$M=array($xa?:idf_escape(key($K)));$Z[]=where_check($wj,$n);$J=driver()->select($a,$M,$Z,$M);if($J)echo
first($J->fetch_row());}exit;}$Yg=$yj=array();foreach($w
as$v){if($v["type"]=="PRIMARY"){$Yg=array_flip($v["columns"]);$yj=($M?$Yg:array());foreach($yj
as$x=>$X){if(in_array(idf_escape($x),$M))unset($yj[$x]);}break;}}if($Pf&&!$Yg){$Yg=$yj=array($Pf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($Pf));}if($_POST&&!$l){$Yj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$cb=array();foreach($_POST["check"]as$Ya)$cb[]=where_check($Ya,$n);$Yj[]="((".implode(") OR (",$cb)."))";}$Yj=($Yj?"\nWHERE ".implode(" AND ",$Yj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$qd=($M?implode(", ",$M):"*").convert_fields($e,$n,$M)."\nFROM ".table($a);$zd=($xd&&$ve?"\nGROUP BY ".implode(", ",$xd):"").($gg?"\nORDER BY ".implode(", ",$gg):"");$H="SELECT $qd$Yj$zd";if(is_array($_POST["check"])&&!$Yg){$uj=array();foreach($_POST["check"]as$X)$uj[]="(SELECT".limit($qd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$zd,1).")";$H=implode(" UNION ALL ",$uj);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$md)){if($_POST["save"]||$_POST["delete"]){$I=true;$pa=0;$O=array();if(!$_POST["delete"]){foreach($n
as$C=>$X){$u=bracket_escape($C);if(isset($_POST["fields"][$u])||$_FILES["fields-$u"]){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($Yg&&is_array($_POST["check"]))||$ve){$I=($_POST["delete"]?driver()->delete($a,$Yj):($_POST["clone"]?queries("INSERT $H$Yj".driver()->insertReturning($a)):driver()->update($a,$O,$Yj)));$pa=connection()->affected_rows;if(is_object($I))$pa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$Xj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$I=($_POST["delete"]?driver()->delete($a,$Xj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Xj)):driver()->update($a,$O,$Xj,1)));if(!$I)break;$pa+=connection()->affected_rows;}}}$nf=lang_format(array('Zmieniono %d rekord.','Zmieniono %d rekordy.','Zmieniono %d rekordów.'),$pa);if($_POST["clone"]&&$I&&$pa==1){$Le=last_id($I);if($Le)$nf=sprintf('Rekord%s został dodany.'," $Le");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$nf,$I);if(!$_POST["delete"]){$Tg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$Tg),$Tg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+kliknij wartość, aby ją edytować.';else{$I=true;$pa=0;foreach($_POST["val"]as$wj=>$K){$O=array();foreach($K
as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($wj,$n),($ve||$Yg?0:1)," ");if(!$I)break;$pa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang_format(array('Zmieniono %d rekord.','Zmieniono %d rekordy.','Zmieniono %d rekordów.'),$pa),$I);}}elseif(!is_string($ad=get_file("csv_file",true)))$l=upload_error($ad);elseif(!preg_match('~~u',$ad))$l='Kodowanie pliku musi być ustawione na UTF-8.';else{save_settings(array("output"=>$oa["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$mb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$ad,$af);$pa=count($af[0]);driver()->begin();$Uh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($af[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Uh]*)$Uh~",$X.$Uh,$bf);if(!$x&&!array_diff($bf[1],$mb)){$mb=$bf[1];$pa--;}else{$O=array();foreach($bf[1]as$s=>$jb)$O[idf_escape($mb[$s])]=($jb==""&&$n[$mb[$s]]["null"]?"NULL":q(preg_match('~^".*"$~s',$jb)?str_replace('""','"',substr($jb,1,-1)):$jb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$Yg));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang_format(array('%d rekord został zaimportowany.','%d rekordy zostały zaimportowane.','%d rekordów zostało zaimportowanych.'),$pa),$I);driver()->rollback();}}}$Di=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header('pokaż'.": $Di",$l);$O=null;if(isset($Ah["insert"])||!support("table")){$yg=array();foreach((array)$_GET["where"]as$X){if(isset($md[$X["col"]])&&count($md[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$yg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$yg?"&".http_build_query($yg):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".'Nie udało się pobrać danych z tabeli'.($n?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Oh,$w);adminer()->selectOrderPrint($gg,$hg,$w);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Si);adminer()->selectActionPrint($w);echo"</form>\n";$E=$_GET["page"];$pd=null;if($E=="last"){$pd=get_val(count_rows($a,$Z,$ve,$xd));$E=floor(max(0,intval($pd)-1)/$z);}$Ph=$M;$yd=$xd;if(!$Ph){$Ph[]="*";$Cb=convert_fields($e,$n,$M);if($Cb)$Ph[]=substr($Cb,2);}foreach($M
as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($xa=convert_field($m)))$Ph[$x]="$xa AS $X";}if(!$ve&&$yj){foreach($yj
as$x=>$X){$Ph[]=idf_escape($x);if($yd)$yd[]=idf_escape($x);}}$I=driver()->select($a,$Ph,$Z,$yd,$gg,$z,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$E)$I->seek($z*$E);$wc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$xd&&$ve&&JUSH=="sql")$pd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'Brak rekordów.'."\n";else{$Ga=adminer()->backwardKeys($a,$Di);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>".(!$xd&&$M?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Zmień'."</a>");$Bf=array();$sd=array();reset($M);$lh=1;foreach($L[0]as$x=>$X){if(!isset($yj[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$lh):($X["fun"]?"*":h($x)));if($C!=""){$lh++;$Bf[$x]=$C;$d=idf_escape($x);$Od=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$ac="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$rd=apply_sql_function($X["fun"],$C);$hi=isset($m["privileges"]["order"])||$rd!=$C;echo($hi?"<a href='".h($Od.($gg[0]==$d||$gg[0]==$x?$ac:''))."'>$rd</a>":$rd);$mf=($hi?"<a href='".h($Od.$ac)."' title='".'malejąco'."' class='text'> ↓</a>":'');if(!$X["fun"]&&isset($m["privileges"]["where"])){$mf
.='<a href="#fieldset-search" title="'.'Szukaj'.'" class="text jsonly"> =</a>';$mf
.=script("qsl('a').onclick = partial(selectSearch, '".js_escape($x)."');");}echo($mf?"<span class='column hidden'>$mf</span>":"");}$sd[$x]=$X["fun"];next($M);}}$Qe=array();if($_GET["modify"]){foreach($L
as$K){foreach($K
as$x=>$X)$Qe[$x]=max($Qe[$x],min(40,strlen(utf8_decode($X))));}}echo($Ga?"<th>".'Relacje':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$md)as$_f=>$K){$vj=unique_array($L[$_f],$w);if(!$vj){$vj=array();reset($M);foreach($L[$_f]as$x=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$vj[$x]=$X;next($M);}}$wj="";foreach($vj
as$x=>$X){$m=(array)$n[$x];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($X);}$wj
.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr>".(!$xd&&$M?"":"<td>".checkbox("check[]",substr($wj,1),in_array(substr($wj,1),(array)$_POST["check"])).($ve||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$wj)."' class='edit'>".'edytuj'."</a>"));reset($M);foreach($K
as$x=>$X){if(isset($Bf[$x])){$d=current($M);$m=(array)$n[$x];if($X!=""&&(!isset($wc[$x])||$wc[$x]!=""))$wc[$x]=(is_mail($X)?$Bf[$x]:"");$_="";if(is_blob($m)&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$wj;if(!$_&&$X!==null){foreach((array)$md[$x]as$p){if(count($md[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$ii)$_
.=where_link($s,$p["target"][$s],$L[$_f][$ii]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$vj))$_
.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($vj
as$Ce=>$W)$_
.=where_link($s++,$Ce,$W);}$Pd=select_value($X,$_,$m,$Si);$t=h("val[$wj][".bracket_escape($x)."]");$Ug=idx(idx($_POST["val"],$wj),bracket_escape($x));$_j=idx($m["privileges"],"update");$rc=!is_array($K[$x])&&is_utf8($Pd)&&$L[$_f][$x]==$K[$x]&&!$sd[$x]&&!$m["generated"]&&$_j;$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$B)?$n[idf_unescape($B[2])]["type"]:$m["type"]);$Qi=preg_match('~text|json|lob~',$U);$we=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$t'".($we&&($X===null||is_numeric(strip_tags($Pd))||$U=="money")?" class='number'":"");if(($_GET["modify"]&&$rc&&$X!==null)||$Ug!==null){$Bd=h($Ug!==null?$Ug:$K[$x]);echo">".($Qi?"<textarea name='$t' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$Bd</textarea>":"<input name='$t' value='$Bd' size='$Qe[$x]'>");}else{$Ve=strpos($Pd,"<i>…</i>");echo($_j?" data-text='".($Ve?2:($Qi?1:0))."'".($rc?"":" data-warning='".h('Użyj linku edycji, aby zmienić tę wartość.')."'"):"").">$Pd";}}next($M);}if($Ga)echo"<td>";adminer()->backwardKeysPrint($Ga,$L[$_f]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$E){$Jc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$E)))$pd=($E?$E*$z:0)+count($L);elseif(JUSH!="sql"||!$ve){$pd=($ve?false:found_rows($S,$Z));if(intval($pd)<max(1e4,2*($E+1)*$z))$pd=first(slow_query(count_rows($a,$Z,$ve,$xd)));elseif(JUSH=='sql'||JUSH=='pgsql')$Jc=false;}}$wg=($z&&($pd===false||$pd>$z||$E));if($wg)echo(($pd===false?count($L)+1:$pd-$E*$z)>$z?'<p><a href="'.h(remove_from_uri("page|next").($_GET["next"]?"&next=".urlencode($_GET["next"]):"")."&page=".($E+1)).'" class="loadmore">'.'Wczytaj więcej danych'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".'Wczytywanie'."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($wg){$ff=($pd===false?$E+($L?(count($L)>=$z?2:1):0):floor(($pd-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"&&JUSH!="redis"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Strona'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Strona'."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($s=max(1,$E-4);$s<min($ff,$E+5);$s++)echo
pagination($s,$E);if($ff>0)echo($E+5<$ff?" …":""),($Jc&&$pd!==false?pagination($ff,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ff'>".'ostatni'."</a>");}else
echo"<legend>".'Strona'."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($ff>$E?pagination($E+1,$E).($ff>$E+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Wybierz wszystkie'."</legend>";$gc=($Jc?"":"~ ").$pd;$Zf="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$gc' : checked); selectCount('selected2', this.checked || !checked ? '$gc' : checked);";echo
checkbox("all",1,0,($pd!==false?($Jc?"":"~ ").lang_format(array('%d rekord','%d rekordy','%d rekordów'),$pd):""),$Zf)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Zmień</legend><div>
<input type="submit" value="Zapisz zmiany"',($_GET["modify"]?'':' title="'.'Ctrl+kliknij wartość, aby ją edytować.'.'"'),'>
</div></fieldset>
<fieldset><legend>Zaznaczone <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="Edytuj">
<input type="submit" name="clone" value="Duplikuj">
<input type="submit" name="delete" value="Usuń">',confirm(),'</div></fieldset>
';$nd=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($nd['sql']);break;}}if($nd){print_fieldset("export",'Eksportuj'." <span id='selected2'></span>");$tg=adminer()->dumpOutput();echo($tg?html_select("output",$tg,$oa["output"])." ":""),html_select("format",$nd,$oa["format"])," <input type='submit' name='export' value='".'Eksportuj'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($wc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import'>".'Importuj'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input("<input type='file' name='csv_file'> ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$oa["format"])." <input type='submit' name='import' value='".'Importuj'."'>"),"</span>";echo
input_token(),"</form>\n",(!$xd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Zmienne');$Oj=($P?adminer()->showStatus():adminer()->showVariables());if(!$Oj)echo"<p class='message'>".'Brak rekordów.'."\n";else{echo"<table>\n";foreach($Oj
as$K){echo"<tr>";$x=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($x)."</code>";foreach($K
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$zi=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($S[$x]));foreach($zi+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=format_number($S[$x]);if($X>=0)json_row("$x-$C",($x=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($zi[$x]))$zi[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$C","?");}}}foreach($zi
as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Ki=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Ki&&!$l&&!$_POST["search"]){$I=true;$nf="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$I=truncate_tables($_POST["tables"]);$nf='Tabele zostały opróżnione.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$nf='Tabele zostały przeniesione.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$nf='Tabele zostały skopiowane.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$nf='Tabele zostały usunięte.';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$nf
.="<b>".h($R)."</b>: ".h($K["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?" ANALYZE":""),$_POST["tables"]));$nf='Tabele zostały zoptymalizowane.';}elseif(!$_POST["tables"])$nf='Brak tabel.';elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$nf
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect($_SERVER["REQUEST_URI"],$nf,$I);}page_header(($_GET["ns"]==""?'Baza danych'.": ".h(DB):'Schemat'.": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){$gg=$_GET["order"];echo"<h3 id='tables-views'>".'Tabele i perspektywy'."</h3>\n";$Ji=($gg?table_status():tables_list());if(!$Ji)echo"<p class='message'>".'Brak tabel.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Wyszukaj we wszystkich tabelach'." <span id='selected2'></span></legend><div>",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," <input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".'Szukaj'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];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><a href="'.h(substr(ME,0,-1)).'">'.'Tabela'.'</a>';$e=array("Engine"=>array('Składowanie'.doc_link(array('sql'=>'storage-engines.html'))));if(collations())$e["Collation"]=array('Porównywanie znaków'.doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$e["Data_length"]=array('Rozmiar danych'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),"create",'Zmień tabelę');if(support('indexes'))$e["Index_length"]=array('Rozmiar indeksów'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),"indexes",'Zmień indeksy');$e["Data_free"]=array('Wolne miejsce'.doc_link(array('sql'=>'show-table-status.html')),"edit",'Nowy rekord');if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=array('Automatyczny przyrost'.doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",'Zmień tabelę');$e["Rows"]=array('Liczba rekordów'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),"select",'Pokaż dane');if(support("comment"))$e["Comment"]=array('Komentarz'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')));foreach($e
as$x=>$d)echo"<th><a href='".h(ME)."order=$x'>$d[0]</a>";echo"</thead>\n";if($gg){uasort($Ji,function($ia,$Da)use($gg){$J=($ia[$gg]<$Da[$gg]?-1:($ia[$gg]>$Da[$gg]?1:0));return(in_array($gg,array('Engine','Collation','Comment'))?$J:-$J);});}$T=0;foreach($Ji
as$C=>$P){$Rj=($gg?is_view($P):$P!==null&&!preg_match('~table|sequence~i',$P));$P=($gg?$P:array('Engine'=>$P));$t=h("Table-".$C);echo'<tr><td>'.checkbox(($Rj?"views[]":"tables[]"),$C,in_array("$C",$Ki,true),"","","",$t),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($C)."' title='".'Struktura tabeli'."' id='$t'>".h($C).'</a>':h($C));if($Rj&&!preg_match('~materialized~i',$P['Engine'])){$Wi='Perspektywa';echo'<td colspan="'.(count($e)-2).'">'.(support("view")?"<a href='".h(ME)."view=".urlencode($C)."' title='".'Zmień perspektywę'."'>$Wi</a>":$Wi),'<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.'Pokaż dane'.'">?</a>','<td>'.h($P['Comment']);}else{foreach($e
as$x=>$d){$t=" id='$x-".h($C)."'";$X=idx($P,$x,'?');echo($d[1]?"<td align='right'><a href='".h(ME."$d[1]=").urlencode($C)."'$t title='$d[2]'>".(is_numeric($X)?($X<0?'?':($x=="Rows"&&$X&&$P["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?'~ ':'').format_number($X)):$X)."</a>":"<td id='$x-".h($C)."'>".h($X));}$T++;}echo"\n";}echo"<tr><td><th>".sprintf('%d w sumie',count($Ji)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),(collations()?"<td>".h(db_collation(DB,collations())):'');foreach(array("Data_length","Index_length","Data_free")as$x)echo($e[$x]?"<td align='right' id='sum-$x'>":"");echo"\n","</table>\n",($gg?'':script("ajaxSetHtml('".js_escape(ME)."script=db');")),"</div>\n";if(!information_schema(DB)){$Lj="<input type='submit' value='".'Wyczyść'."'> ".on_help("'VACUUM'");$cg="<input type='submit' name='optimize' value='".'Optymalizuj'."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM ANALYZE'");$ah=(JUSH=="sqlite"?$Lj."<input type='submit' name='check' value='".'Sprawdź'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Lj.$cg:(JUSH=="sql"?"<input type='submit' value='".'Analizuj'."'> ".on_help("'ANALYZE TABLE'").$cg."<input type='submit' name='check' value='".'Sprawdź'."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".'Napraw'."'> ".on_help("'REPAIR TABLE'"):""))).(function_exists('Adminer\truncate_tables')?"<input type='submit' name='truncate' value='".'Opróżnij'."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm():"").(function_exists('Adminer\drop_tables')?"<input type='submit' name='drop' value='".'Usuń'."'>".on_help("'DROP TABLE'").confirm():"");echo($ah?"<div class='footer'><div>\n<fieldset><legend>".'Zaznaczone'." <span id='selected'></span></legend><div>$ah\n</div></fieldset>\n":"");$i=(support("scheme")?adminer()->schemas():adminer()->databases());$Mh="";if(count($i)!=1&&function_exists('Adminer\move_tables')){echo"<fieldset><legend>".'Przenieś do innej bazy danych'." <span id='selected3'></span></legend><div>";$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">'),"</label> <input type='submit' name='move' value='".'Przenieś'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Kopiuj'."'> ".checkbox("overwrite",1,$_POST["overwrite"],'nadpisz'):""),"</div></fieldset>\n";$Mh=" selectCount('selected3', formChecked(this, /^(tables|views)\[/));";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")."$Mh }"),input_token(),"</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"<p class='links'><a href='".h(ME)."create='>".'Utwórz tabelę'."</a>\n":''),(support("view")?"<a href='".h(ME)."view='>".'Utwórz perspektywę'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Procedury i funkcje'."</h3>\n";$Eh=routines();if($Eh){echo"<table class='odds'>\n",'<thead><tr><th>'.'Nazwa'.'<td>'.'Typ'.'<td>'.'Zwracany typ'."<td></thead>\n";foreach($Eh
as$K){$C=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["SPECIFIC_NAME"]).$C).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["SPECIFIC_NAME"]).$C).'">'.'Zmień'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Utwórz procedurę'.'</a>':'').'<a href="'.h(ME).'function=">'.'Utwórz funkcję'."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".'Sekwencje'."</h3>\n";$Xh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Xh){echo"<table class='odds'>\n","<thead><tr><th>".'Nazwa'."</thead>\n";foreach($Xh
as$X)echo"<tr><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".'Utwórz sekwencję'."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".'Typy użytkownika'."</h3>\n";$Ij=types();if($Ij){echo"<table class='odds'>\n","<thead><tr><th>".'Nazwa'."</thead>\n";foreach($Ij
as$X)echo"<tr><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".'Utwórz typ'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Wydarzenia'."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".'Nazwa'."<td>".'Harmonogram'."<td>".'Początek'."<td>".'Koniec'."<td></thead>\n";foreach($L
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?'O danym czasie'."<td>".$K["Execute at"]:'Wykonuj co'." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.'Zmień'.'</a>';echo"</table>\n";$Hc=get_val("SELECT @@event_scheduler");if($Hc&&$Hc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Hc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Utwórz wydarzenie'."</a>\n";}}}}page_footer();