ióZ1Lƾ¥£ƒ_O ð!!ÙD4¥.fëeŠÅž¶ñ÷à±·,ü„Z’”ù@Ä\0<F.—ŒàÄðc>_}¥Ž£‘˜€£Ê p€C<•I·=çŸZ05ÑŒ’°)ÞŽóÈÆ¿çÁNz,uþ€ŒˆØ\\p6ÞŸyŽ-å—=5Æ!T#Gø\0*m¿óõ¢’InÊ©ÞøâÐÿ�—»:�*úÚýi½`7›hÞþ¿Ýþ罈�ÑøEB.ÖœXʉ¢¯`U„Žq§¬s¯�’ïsl[S+{ ³ ›¦0úç×{Š7eØ5—\raaûFäðSx̶ØOcÃ�¾‘¡á[LþeÔ𗂤 7„„ˆ§>@éàïà+|Šëï©;î¾ý£¿¥.ð÷@Y'»¿ÿ㡇È>Eò@0‘Ÿ@@ôíH=C¯¨`Ö€®b®ˆ-Ozóm¶ø²t>=Á=¸—3n!à×ö“ö8DM&�‡JÛwÔö„.]\0×O?Ÿ[û4D#~<öOÀú„‰\"ë oò‘t¹�ÍBcLK1éœ ‚YĉIƒÑxýù“8Qè×e)¯…Ó`ÿÅÞÇ�Lú6�+•جBéùãwbo½L]+VPü¹•ÿBœE�Ó幊ß_VÂÒ±xèr»|[…æ±û\"_~âÂÛâHG…sp‡óCœ\n\$—ÈR`ù€Ç®` í\"é@F?è Q¿Äq›û²^�¤`ÀW\"è;ý\"IPD¥þÇdž€2•ÿûþ°ÁoCƒnÝÂÌ}sÿûxš2“›i wc%ý¿êþ£ñ\rù€Nù\0I¬à±äþ©C 8€pÓÏáºÒYP!À)¶F5’ š˜ Ž¯c¾.ó÷oö7dZôÏ`<*7£ý€äÑÚÖÃ4w(éOˆr“â0n¨Êð¯ôÐà9«�'ÓýŽtƒX�6gŒ6æ�\"®V:Èͪ€ö¼Vä³`\rZ„Z¦ð“A›�&!Û_O\r’O€D® ˆöᤠ,œÐ34/´ìo³õm)„‚Í#}¯þðØyĤ҈[nª4\0á´Ï\"\rŠC¦°²ð;À³@þ£³®‰æí\0´ŒD0¾Zÿb\r“€V%\nRRA}‚”Ôƒ\"Á.“ªP �>n1Ø4É=&:>‰\$€^RMpQ†ö§\$ÉL\0ö1ñè𥀔Òÿ�}‡Õ«m‰HÁB€‡ ¥² ™£�Ah1ÚVÉ=&•LÁ A””ºT¬!í\\)^Á2è.°W¬p.ïC€QØ”£‹\0Ü\n`(à. 9Û@�†¦`(ì|\0ʦˆ>¯ô˜×#á@2D@Ö’´\$éE\0f¸�r…v\nˆ*`£½.’Wás€\\à|À>€H� *©ƒAr¥ñQÇjš›úP‰;ÁD<|¡IÁN•È0UAX=)ÒkŒ˜ºX0‰Áv1ØÝ�ŒA®U,#…DAc@(P‘AZt¡Ûp[AÏá/°•Œ� 0³0_B5Ik˜Á4ÐdÁ©bQðg€T1Á�%{Ñ©©=\$”PI=KHð°†Â¼\"0\\A; aÒ¢ÑÂ]ü&7A‡\n:YƒÇ”•\$)€•Â�\n€.°k§ ÄPs\$ù\nÈRp¤ü¥„+Ј/‹'¨OÂÜ#\$,ð¡¥°*dЀB`Ä B âÿ°ÃAHTD1)I¥QtLN©C©=\0¶—Œe“ÿ\n{,±•„<4B…ÔIi%�“ô\"PÕ\$BWðh%S¤PËì³Ü30MAE\n(Äp¶AÑ|c›¤)à¹Âë\n”#Ç®'\r8ðX'š[Úìà5C‚”¤0àáB<•BS0iBf¥Læx ä1f €û@àДC ¬;†æC¾U,8�b\0Þ–t)\"2AŸŒiRC›\n‰/°»˜¾³Ü:�¤Ã¬ä; _€X(”Â\rCç\rì;…¹C_(�µB�,-°dCý\n\\9P¹C™ .Ðè=B–ð”À-€tê]P‰�oä\0ù N ààÖ³HÚhö‹^€ÞÐF@¬/Ê<Ðá\nDjØ`€ˆ�ˆã‚Œl—¹€þ|/ ! ñ*¿ªœGà3€^ \n@€°'¸ C€Ÿ€„š( ™HàÑ'&‡¼\"¤äê\rLF‘þ¿2ìÑDx¦óè!jDµI@<¦vQ‚À0€§ Ÿ…CªÔXH\0002€^;i©~œ†¾TH©6…5 C–“H5“(€î49ÄI Å,SF€_TSÑFÅB5\0Cq!¬`þ¨‘¯Å\0OÄPÑDEWìQ‘PEEˆ?ÑY•™?õXBQFØã©Qþ\$`¬\0>06ÐT‰\rˆÂZ\\ã: (+ ÂFJàQµƒƒdf`>\0ŠÓd1ž³h«ÌP²ÅpKò\0¾T„@0µBà˜Hà>5 äi 6Æ–Ÿœj޶B8•èZ ò?™¶Š¹†4 7ê¼€¦»°D*ܼ¤QŽÿ\r®ÔŒŒWTÒ�\n(¼M»‚Aµ€ž¨i¡l><ÔÞ‹s—{(H\"“MÔè�¤Éö¾Âúði’SN¹ü ¯MÔ\r¸+Éöƒâúª‚6zZ@? 7MÕ9\0B‰öµÚÒK힊´˜ÀJ‹üIjl¥’qÇ*Œ’RM#T‡�'ÎnÙ쇒k)ç9ÜÌ!µ€«\"ü©D¤½�Üッ‘/ÓJO¦/œ+3�\rË—.P[ÁH¦�ë\n³\r%#X8ÒmÈÞ„¸1ÐZX6¨�6z¼xn\0œøHT°|…J4ms³ŠÁ)‚ èK<ªÌœóÉôÚl™CµÈ‚›ÍP¿á.ð\0006@\$ôº©\rKHÀ>ó²K§ì“ÚÀ‹;p5ªD\0©;t³¸-#\$òÓÍI¦0èä®fÏ8˜¼ô3¶;ú”€3ʦ/=@á?g-kAò\"—i4H82aÃÈ%R2+„Fû…“ÐpaòÏ@Ë´pmöIã>\$¹“*?¤™¿Ó(\0µÇõ|¡\r¦Ï©5 1þ(\r¬û2ä˶`°OqmMJá\\‚– é>|À³óO¥8À ,:Ÿ8¨ ,ÏßücÚØr_±ü€àY€à€c4Dä&‚\0”¶Êd¼‘B„e0\$ÃTÌþì~S¾&Z\nœ¦RÌ\n • ¶Kðýr÷:ñ<Œ½ÓÏò%|Á¨Ž€ñ9ÀêoPM95 6PQ=¤äÁÿŸÀ:È5³üšË1�@9Ðm°\r”Eô`,ö³\rTÄm�ÌF P2Q‚¦+}�3‰^fè )ŠLnd¦`†\0ä+Ð¬ÓØ‘\$D·R\0ȨÑ'žÉJ\rd~Áj\0îùÆÒ›†Õ:\\¤Ì\nJá[€?: ÐåLÞì�ü:û/+„>(!%1ýˆf“g¦/ñ;;3ƒ‰Îv%|ÚtÁĸ@:53MdúÔ»Àü’R-4x 2I9G9iaGQœg¬ì�ö£)(äT¹\0ÊFQtâKŒ LDeÓ”D¥kq¦A¡rAN@wïDB&5l;�Û‰8ÚsA\$°,h'€!U€€\nA² \rÊ`(\$#@NúÙý òª\nÍJx‚04‰ê„Ó÷O|œoÈÈ\$ŒYàØÉËD¡\r)JÆŒ€Ï ׇÿ\"(5ààÊóBœæDÜÈï'9Fó0Í`�Iì•5“ïN§°cò?E/Ó’±`=¤‡¤ðK¨0!c0\0Ò¼|‘Å\$ÐHÌ�FŸÈ0IFJG&Ý\">†´\0ìu!ˆp½4m€ö\0FÐr¯L%HO�œD)Aî\0@àbX b•Ðd�/A¤kl)Ð�¥ÓOUÄ@6cM‘b`Õ:ÀŽ¡U:ÀÓ²O ýãø€¦8üI÷€¤\ng#ðTð� )€®Ÿ¥O\0¤\0Ž` ä\0˜(þiÀ§Šœ \\ ¦D¸˜\nu>'¥T…€ Î?j€®b~`&\0‰`4†IBu L•SAz–Cƒ¥¡ÐÄi~Ã8z`!¶Ä?RµK-%¾µ;53TÁeL@ÅTÉ,9qU\\–Ø )=\0„D�»A²•ø`É�·<¸ªÜ&š@Tzcõ�Ú(\nò¨ƒ;Ï\0¸Ç4Q’U5Ô©U¸µ+Ô²åWu.�KV-M5—ø`'€ÃIVŒs5(‡Öe ¹alUd?p¤U_X\nZõYyUJµtÕsWeK•^ÃÍ[\0Bö å_fÄMWJU~Cp–_5T�‚2\0 µ�‚yXì;iPBÌ•Ä'qDáW-cQ9‚*•LFË^€ò>p<\0•Ćà6Öf3\\H,øÆÿYQ—õ}ƒå}jJoXf†µÜWêSðŒ”Jþit•ª€ñb\r‡vØn½´€ÕÉ€Åa{4@èTa=vfÚ\0˜å†öE³a5…jûXa\r‚ÄÜØ³`í‹‘u•gaEŒ�jXºÕŒámXµ`Å‹…Y¦vÚh]´¹XI`Í�-ØÕaÑ“Dƒ\0ÿÝŠìÚXÇcÐV5‹~2@\r\r&ŸËd²VAØácÝ…ƒÆ†ñc�6GÙ]\0‡5’óDåvF4óaE…VLWËb“¶JXÝaU“6¸™Úgi^ŠMdXÁ‚·H¬¥oÕÆYGd଱ºÈ·e”Šõ×XeˆvYµ%[UgCç\nÜN!%6\0GÖ0e‰aM †(˜gò…±dóUvS¦9d0\"QyN•_ý”ÁgØSf¼]a–W¦3Ø+ÕÛaf ¤Ör’“)üMÏYÏ[Ìxaƒˆú!ð®�Ùà¦ñ–zRŽýžâAYò\nÕv+4Yûg�9zL Ý v€ÎÈ6\0€ŒnõmVxÚiwuô/ð\r„UÿØÓb¥›ÖPÙ#cê�–?×afíƒv�X¼ŒUš‰“ÙAg…‡)Úh½‚¶ÚHe›ìÚY\rfxCRƒØíi�¦¢ÉY\reM“`2Fëeͧ–“Và¥* Yi´]aTÚ“bͨІ×j}¥v¦XYúŸ®fÚ©j]§ÑuÙ²¥š6™X±j«¶\"@\n€áB\nÌÉE¨¶–X˜ ‰ÖÚÛj²gv1Fê} 7J¢À+Í¢,\0ªQ\0è;`B€ÀZÀmªk„ÚZê~ÚëbÅ®ö¼Úöm¯&…«l°VÂY¹l=}ö®’c´Œà5k°ŠñºŠ5g ›`ŽY§8ÛO6ÀƒõlÕ²€�Û-d\\b‘¯ZÉlü]v»šmv5½‰m�¯ÖËÚØ�Ø\r¶#? g¢VÖÄÚèT¶@ý)û]üé\rxÚåk³Â>Ùk%\0;€×d�º–ŽÙ®¬M65bL±öXÖ€á¤SshE»Ö›\n`S%h'ÕÍZ Ñ—ÄkZ=˜£5Öjmfõ¦�Z|oëQ<|`Uß‚(ø76,Ù‚˜:¶›Ö›]ŠdpV´a€ñÁŸõmm¿!ØólýÃ\$ÚE×pÍÂ\0”Ö¨6EšAdÚòÿÑü¡¼/à5u¶79²,mi·ZÍpzÈ— Yê:…Ä¢>ŠÝˆ“b\\ipˆ77ØfÝ{µqõ˜×܃p\\ÌõåÚ0²��×Üc5ÇëÚ4î°6ÆØ_c¥Ãvë\\;d5Ä—+\\.ÒýË!ˆÛŸråÊ5™Ü§oÊ·\"9úh“ XQr� 70\\Ûq5Íæö3Irè9œM¥Ž‚·°Í ´W•A]\rÎ÷\\ót|öo\\_rýÊ—!ÜñrÅÏWFØ7s¥’÷6]%tS¸W>\0ÝsðÍwWOEjŽ”Ü\\æmÔÛhZ¤QÊ£s¥WSÜ9q��Î]_r`CW'—^uÍ7\\ë]ÖÕª]qn-y—(Y½tÀ\"°^¨aá„]�Õ×aVgrmØ·^]�sUή¥š‹ØO¯ÄÝ£ZÕØw]Wš½Îwl]2¯±£—XZ•tuÕ\0¯ çtl6øÖ…AÌNQ´VcpÍ¿vþÜ3pj úP§vd”]«w%Ê# \\ïÀà<^vý{À‚ÝÅv5Ò÷ƒ]U;qÆÖXi�j·ï^ôö~W@€�l1ÍS¹Rœv £�º>ø\n@ìš`ÉžÔü`˜,PS‰f»X*À\"€Vªˆ#î¼?å@§œB€¢W^|¡Eè\0\"‚™yè )·¦ãz2€«\0¨@:fá^Oyà3r�º:n)ý€�h,˜�DÀ\nªÚ.áyr¶£ø€¤8þC…éà!^£z=ê·•ÞÆ»�ë´òÞf\nî €¦�Qcü¦q\"ð\n€,®¾Å嗗™è\nÀ'§�ì!r§â(þà«f>è -\0‹yên\0/€®L¨ûà/¦ˆøIžÕ ø\\µD\0†>íæ€ÞÛzˆ0£ñÕ½|½ï7ÂÞéy…îÀÑËyµç_\\œUç·Ù^^\rö·Ô€�{\ng \$§ }Ðü—Þ_c{�÷÷¯ S}°*Î\0ž©Ã8{}mù#ïÞ{yýåס(Ëz-î\0Ë{ (§zø`&^vˆ!r€§TzWÔ^šZg©¦\0±~Eõ÷žÞÔ‚n €¤Íõ7ÕÞ�~Åÿ7åÞ[}�ø™_¡}Q2 #ÞÑ|f\0—å_Ä\n²n!r�Èšýú—ðÞ¬eëÎ^·{©‚`¤^Ã}õì£ð^Ð×(ÿ·¶^¡z6W¹`~mø7¼`'{Õï—÷^ÿ|åð@«‘}õðà'_|]ñ «_|ˆô�×~Ø ×¢ß½z%å×ÔßꚨkX#\0¡Ö7þßÿ€aUª kCõ§¤ŸÕò×Ì\0Ÿ|Õó€\"ß=ƒô8\$Ç©zô×ùË€kX¦³yMï7Ìß6ŸÞ×ÏàÓ}\r—éàÝzv §KyíPõD�»z@)Õ«ÝþuI¦}TµøÀ'Êž€ é¬U/„�*É›Þn`kCúíyíý8N_æáÀ €*€š™ö£ú€¯yêz7þÞÑ}MZ #Þ\\%VXU_Ö óuarœŠÑ U…N÷¼áC}MúWêaœBz8`aW{εEaTv7Ô§¢?2°Øea@ýX,^ÜœØfU†vØEa£šoÄÊàW…¥çW”anšI\0ä�ä?ÐÿƒÿHyØ\nWÒÇ©yjfár®ö?eêxzÞü•æãðáûƒ~õ@_© …O€%¦�ˆ&cñTø?æw±MÕ}=ýU<«g{@\\£ÿ'£y}õJºö™À x†&oSÎ\$\0)áM‰þWÝ�¿‡Y\0ÄU±‡€ÿ ƒ ‰P¸{\0�‡Æ& «aö?û8œÞô? 8ž__‰Eýõ>bS‰íüiŸ�Ð °üê?�ÆHCùDŽ?@ý@(bY{nÃùâ?‡–*ƒõßoyºë8®â¬\nµøjåá/‹\\¸bߪL¦*Xªâm‰ÆIô�Ù‚–Ø€Á‹Fm⋈>.—§`€~/\0«\r‹¾/ à‡ ²jɬ&zàØR�èŸ=Ox°§Þ¢fãð�ø`ýŠÁ¦€ºÆwõbÓ….JÜ.®X 8ŠÕ\rTw•�*{xŒ�yDzxÔˇf68Ôß鈖6¡rÆáÙ2˜ŒˆÖXLÇ©2ÀýÃøb}�Þ%¸¬âaŠæ8£øâQVÝN¸Ÿc?é¬b?\"t¸×b7Ž¢p)Ï_ÜšÅæõm§Š›~øì&ˆ?&9ãò`‡zŒ* ã³~�P5A¨B?žË´Ò0?¨\nS,a=Tø*Ø4ßý�ÈwÑãõ�¨x=Ç©Šýç�ì(ÿwÿU-ˆâ³˜ýä„®ØHãé�X*Î.²L¨TŒ&ã�V?€âiо¸—â·‰–BùäG‹Î\$y d3ŠFR/€¯‘ND˜—aß‘89_n õû¹\0V?\0ýXüäi‰Ö2 *du�þ5ù^ž¢°Ù!Þ}VîÕaÏ’rjà*ãC’8n\0’ŸŠf÷´d±‰‚pØÊßÝ’^I¹\0§�'Ãú§£’þM1á©’Æ\0Y7d™“†/ãðd°½ÿÀ''�‘\0þw¤�ß)^i c¾Ÿ†é¢bÇ{ÖM\nÂäô™õéøÏ_£�1wò.ì&0aUVÒfùB*åyB¯ ÔãK€\0\$€� ° „eEƒ�[•oež–€ÂĹ~&X”AÉ„éùAbýT¦»b£�üIب€?nB„\0†^¹B_øšXõe…‰\réÀ'ßÝ–2� þ�—Óe™’–/@á;Žð*Øèãõ–æDU=d‡ö'ùi(u’гÉÄ_O‰X*ÊÑ_ƺæT ž…Ê øJ�Ë’ˆ ®�å—–[¸jT÷{î@8‹€ª7ÀåòáÐ\n÷Ë0ü\0&½T¦7Éd<úzcòâºÈkIè*åS¾[¸leZF* *\0®-Z²\0ž¦^iÏfG™.1i¸fP\n²g·©\0œŸl‡ãøÞ¥†È0©ª«“2Æe×Û€±™ØkY„Ï/€¶B‰£á:¡Š¶™ŽdJq¹Kf˜?–g¸LæžÖj �É{BjÕmæ°†)Äfš.eÍœ+h´ýØ8o‡v\n9-†µ�ö\n÷Ö“(?p\n€/§\$?m÷œ_<¡þ%9º®³›½N×§Þמ\"˜/ǯœoiæÿHænJ¼gœx !æøœoÙ®\nš(Ô_\$Éââ�B¶¸~æÅ|¥òÍœL°@HyÑUªž*zXðâ¢5érfND‚ ößN?Ö5”ã'�>Aµ=Ôú?#ùa�ÅTE[Ra-‰N¸S+q�Љýä-�Òz5=å‘�Ò¹Wóä5ˆ\nˆ8šbx~Yºcò›ˆýäÕ±‡fFÓ,\nÈãú“)žî|‰ýÇžÂg Â+kŸéý\0�HÆ*@ çÈ@Vy¥€†šÂ|×–\0ƒ†Å[é¦çí~®)cýb—yF~Jä“,?F�X³hžŠzq.í‹ý�ÊV?(ÿyRU±V®yö+jœ\rôõnè?™úˆ #»VÀÉÏh3Œh ãó\0iŒf4à*\0qŒf{™Ö\0¥ˆ>†À\"äýŒbjXÆf<>ýý˜È(b?b‰Š'ÝzH \0/äµzÍð)÷(b–~\$ËÕŸÆ}Ú')¢Ž~cóçÍ¢†Š™±äý�n+¬bp»–.鞨b¢\n°iŸg•�\nhsÿ¦‡zh`®°¦…é¡èf«ž©ÇhòÌËLç“¢2�j ¨õz-ÿÊ(£î…ªÚåž�ûh”L®‰‰öã€?\0øc€¿ˆTYûâ�¤¥ú˜Í�ýJÜ…@\$€ˆ\"fùdg埦Š9õè»{*gºTiW!S‡9QH¿™æ_ØCàíƒ.÷Ð_Eƒ^~xЍàœò¶éù䡦à\$çC‚öBÚd'>è ‰ö¯£:~yúã>Œn&pž†BÙ-ýû‡cõ_©~´{XÞ�匎÷ä«k§68ƒò€‰ƒ&mèR?vÕmå3VÆ9ºq€‹0 )ócÍ#:ˆ#òd˜’·‰ëŠÖ ê ‰Ž[ùäiS¢ž}¹±�£Vu8öUSÞ<ãùßàN÷÷é¯ynt·½å{âj·ê^Ù�¶£Øi�ϨöO€'å¨ö—@#€¿ŽÆ€î€˜þ\"™ÇgY�¥ãûcõ{æ’£ÿ_Õ©zp:˜áŽ?žVªå(?žjk #‰êúêø`P–~IÅ+kV¢·U'�*~Q.^“ŒUãù`F«¥ü™†e¤]ì8ñ¨\nª°Ù‚j¼»À‰¿aK…æ¹ÜåÇ«n?éù'pµù¡gaƒ¸üù²€øÈüº(eòºÎvËÕ‡Æ�<é1>ãíÛ9P\"@<шù�“È\$`d€9ÌÖ»g¡\0‚ëF&´\rq×\r1b\ržÇï\$;@Úƒ‚-@…óILÜ‚ïTP#²;%ˆˆajŸÌ\r}2rMÊÅeLåaRŠÊôåÚàÎõÓƒƒªL´—3Iš±šçk…ardŠk¦ÈzsÅ#LðISí¡V»zÏ\0Û®Ëi k«B&¼¡Ïˆ#X.´�†µl¹Òf†{F :â�S†í0À3Ζj¸`©WÝæ¿ºúœ§°úÿkóCe¹±f*8íi|àÂØ£}ÖoY¸ã§˜ÍÀ`\"\0…!P)èá!Pÿ©¸çd˜\nÍœhnFKcù^݈Hþ¸‘ÞÍ�>…)úê¤Ð ·³çã°ÍR &†µ¨šzXKåç�œ™PlqžURþä†F\\Ûìu²BxRáO‡FÈØHìv*}ãúloöÇ;'l‘š’€·ÿl @H )¦�²J)ö^{¤%ñ—ù«DµO\0؆ù>áHJÐ0è>²;€æÖhUTBP§#´‚{8‡ø\0?Û:kqIaÍò]‚ HкèëHá{4ÒJj]è\"°í&€¤ÛF‰)\$E54Ô!e àä\0í\$üŽ€ÔJèìÞ•Kxº0äêïC,ÍRAK/Ë¿³0†Î%âQ6yµ–Òr»€¿P‰›ÔØŒ’ÿÛ\\ƒ�˜%ÂÁR 01®ÔΈ]/(8Ûd´FÑÃÈ\0Æ€dˆØ™½^ä�TÛ˜L)5s€L\n“ýòmƒG#ÆÒü“Ø#\n+ 4ŒkMíD´à9]N Ê{R—š*—à>\0뵈5{Uíä·kA³€Æ¿Ä³A˜9€±ôÇÛT•Ñ÷¿ÒT~\0ë…O¸\0asπƜyàÖÜ*È•ñúÇï\"|rñýOc¤yö:G¤ ¬€rz><€D&¢\rÞä´2H\rC\$œÚÌÈŒ�rWmà)ÀR]›¹eI€¦îk‚Zµ¯a)€ô¤ L»œ0©®çTؤ•&;¸8»ömIä.ø}›¦I›E„ŠÒÒn¨+4@ïJeº¸ÖÂMYºæ¸ò¯„”PîÙ1Ý‚Yº¤Ÿâ\0¾¨IT©/µ½³“*ÛMha4zí†\rŒ¬[»ë‚‰Àô¤RÅõ!on³/vð`4TDQ¶äVW†ºTˆ£Ú„M¦èòÇ)„×&ïÛ–n˜ÌZà†Ï¼Æî³Ik¹À}›ÍVg¹Æ¸3•ï#9^¸ƒDïQ9kýôÊk‡½fôâ²îáµN²\0�o9JD¤»ºÖg½Îò´YîØžõèÈG*ÌÕ›¯n©¾ 5†‹»›ænúôõÁ¡ÉkØkBîÈ£Eû{ÙRHkZÇŒ–ä<³F‹Z±=Á€¦‹jÍKü/%|Œ3}ÈÙ'RÈÈðoÑ')‰SÛ–•¿i@6€È¬¼¦Àf8nÙÛÿ¦VZY^ü\0Ã?ø8¤Ìo×·”�›õW‚\rŽÒM0É\rý‘ €ÍXbôÞ�…ŠLL\r±ƒ7Ó0›rDWõlþØöLˆT8�¢0“k;žîŽþíK\"+Q›ïÈÔ\n…š\$†�uºÊyÊ=v˜C[µ¸1·—õ ì%L÷mžîß_ŒÌ ýí6ï !.¼ùÎ[[ʵvLÄá,ð}À‡ 8ƒraxgÂÊÙìûÃ%©ã\$vÏ#·5a£€ü�©6R\"ðØ!pO´ù6zÑ}I\"æ€ì>ûÒ¿íÜ™AµÞOë¶qù9M¸âlßk‡TÔ¢@\$ úÈ‹ÄtFÆD›¸mb&|IDlîø@ÚIpo·×W9uرFË5AÕË[€Û´¼&ÐZì„ÛnÐI{ÄÊ8•òͲ5qe4ŽÜYlì¬hñþÄÿÂ@šqb%[yšÅðC‡c6ó½T'¤6tø\\ZkÿÅÁ—ó0ÜŒ¼²½q…)/ÒÏq”–û :†�;þÓAE\0ÐÖ«|qőƶÛÎΗfÿ@ÿFµ6 :\0îÓ3#\\FëóLcn»m€æ¬ˆ¯�Âù³b‚§È(ë-ŠQ¾l�`2kç#Tm»G%{È}=üŠk2Ì'\"›9S†Ëî2\"¯ÿ+7!!,÷.¯|‘#\"W¼’…¨ŒU áƒ\$7¶>¾frP¯&6ákßm–Á{³k³l¯'ZõëëÉî» ¢ƒaʳ¼Šr‰æ¿\0<ò�Ê5¸šìò“Ê8@2/ð§g)\\¦ë×Ê�)ü«k»l¯'6âqOÇØ\r»³r¿Éÿ+À5Љʌœ±rÍÊE}ܵrÏÊÈ%|¯ò™Ë�-|¸\0ÛÊÿ*<©Ó\rËtÄ|‡r©Ëç& <ìÇpd›Hs¯æÀ¼ÃS‡ÌD¤úÿó°0:ýIÈÏ)<É´Ô`kB˜\n;@ú‰WO-;/Ûx©N Ö5y(•NªEÚíÜõ‚y\\ ºP&€Ž3H^‘»Ûw?P×6f‰¿uCÜ.)Ùvìͼٚc²þÕ#ƒY·u‚'ñóŒ!Z� ‰\0Ç¡ù(È÷p8äØñÕÎÈ`0ŽØ,o²syÎÏQEó¹Î':üØ–ïÏÔÔËìù¼ìWÏrÏqO˜˜ã‚r‘sÆ!_Û[–Vaz#Üýï: zM¢q Ï9ãÈkT…”²Ý“°� À�´wÐ×Rï2a ‚WôÏøö‚ÍÉÐu 4]“\rfÒà‹€ñÏ\\ìÝ\ntCÏ\0I³±ôú€!ôËñ�Ï�=P(¸'Ä×C\\ùs©Â÷Ó•�ÐM~#˜D¦(!â+“ª•Ž�Xé\rø“]ô•gI�³IÒ|5œísÌÖ_JœÿƒÏGK;\\vN¥Â¶¸t³Ó£ïlG@WmÐDýƒ€á¶OA7mÁ8 \"\0®ôÓQœ‰|,t¡Ó 5=3ùÒÔ³ÝÏiU‘ù>ô}E7A#)D=Ña ‘õô\r ö{O€ñBOQ2+s¦á:�¦žgÑÏ=J…ó©Ôç6u„MÄO=üûtÕ �>ƒ‚i‰²½ô§žÑ¼Î\0Æb`åœY†œŽø[ýY \$&€¶i•é~–§Ö\0e†´\r`1bXéÕù•÷gƒ5Ö ¹ÝbG)ÖGD{µ€áº0o`7S\rÖ?8ý%†™·ÍÑ�f\0º²ˆ¬qu„XùÉÀ•ïÍ¿Y%5ÉÌy6¬peÃ8üè„€ì0`×eÅ:8xO»Ÿõ¨9d\n!.À²~F¸=joÐ%Ž�¦…OÖ£×;PPÉÖ§V…€á¬�+F;V¿d*¡rXó�Õ…�€ãuçØÐ…t3óÚGo\rQ±g\\À‰uÄb�>½qs×¾1mî5ÙLrCt‘Ò‡`ô¹vÖº=%örKžvo\rgK`„�Ò?[Q¶K4¿·9�|½Úmã´øUÚ€<Á½³0/Z�%„5È8`¡ž‰5ïY}b]+×YÔFWÚ\$\\C¬Q5\0qýbp¶pjºuÅÛdн¹u‰ÁÑi}põˆ#'m¦Wõ8ÿoFW€çÀqQ|1T“£¥otd€AG„\\ª&&07ÃEÑœõÍtª}ÙfË)UÒ¡‚ÊÈ,lÓ=Ê‚.\nÍuvŸÇn“=UWØïp�y©!°sã%wu‰®�ýÀ€»+¿ekütÑvvFWˆ]·ÈÓwUô<ª”�ÉôÑu_ek\rk›Û •û§P\"\nÀY=qwyº`J�4Pj¨TóÊÆ5×àÝqG)gpŒ�˜RÄügnbpô&Ò—zP(п=¬Æ7w€Ù×I\$Áí!ÝïX ýv\\Y]Ø{Gµß nýé]ÿ´]Àýý÷ü;'X�4Hy߸ϢØJ8'nrvgÖ'pþ™^({â> \0»bW\\EÒvÉHýqVû,÷y�b¿÷׉^PÎ\rЇÂWô“ám×f�Ïl�k•A>Ð(¼3ïÜ7R|E¬sÖ#Q�ø;Fr�€2xresQ8Aà@PtR ¯ˆ]bmq �uÕªÕÞ•w]qpL—íLi\nEÖ…>3G°©Öy¥•öæ®Ó}Á‚¥áÁNálwáÃ<º¾3wÛݵájFñ0pž*uËà,}~,¼hçŽæW¬ƒãXTäösó8øÍ}qs¬/wUÊY¶ÅHR]¶\rÑOpý�©LQ¨ãƒv—C@Ö˜—µs^<ð[3“ÆT#.¯”A|^”ùj~ô¹ Ô\0ØÏÿå`i\0ØÇž–iœ+lüd—xMmÐIÞ<»H¯¿ÝOI{C%ÖðhÞ`t¡Öwu%ÒQ:4ÞÚ\\8Ý”H¯u>)Û/u>ÀZ3ž¸@�oSÀb @Œù/Ѽr €ù¯×Ÿx!¿÷v_\$HïöËç(±I]·µ3ñ=¥“IiÐO§qøÈY\\ }BtG6Ø\r‡äp]Ò¶Ò=,lfß\\Êè³þ+ðPàݺÒvóé7ŽÝαpDvø½îž/—yÚàoeèÊeÊáˆY¾&öbaÏ9×#ÑO{S„“iÁwoþ‘úTL(¾ot°^7_TÌ[ΗiÛN‚kÍ]ŽƒîÑ·D> Ã謑A.k) �Óý£Yi°K—m&W´—©‚Æ“©êxz¾¨¬ƒÜðM4Ì‚[ÑI•%Mžgê‰÷wX1ç7J°Ø›ÄNÒ÷mz«×Z]¤÷t¤f÷„ê…XÐ-÷Áë‡uiŠðëŽþÍžúùpdË<ÛÉ™.Iü·dîM.®66(bUvþÀôŠ\r�ŽzïìpüÀû)βüOû(÷NžÉúâÏàMÁUzãh�Y2êúãê¿gþÊ;¶?®<øôM¥Ì<ûZ¸?>Jªqì§´>Ü\0óËDÕ�µTEß—{b„»-t¨2gû‚¿ ¼ÂwõÂß¹…P·î¹œ%/¿B¸Þè™oÁàT’{“Óƒ\\{ë±x¥¼ZóYÎßKõYÒ÷[!.Œ:ç’Þ€Yï(ÆÁ.¬®—h+Á)„]|·žKvë—ý.{õãúµé=À¬té?gK„•zˆ•ù4wµá>œeÖl–W>˜Æ¾•Ý?Pôù›�v‘×b¾«ëƒµå�¤õ\0ï»ý�ï�iá‚>÷>wuÈ;a6�‘Œk¬ï�Õüú)Ü?Žümdm6½úSÀ‡UùÝäˆanCüz^�!ƒ4õ=Ú�Ü|~M§È?ùßêKñ?#—³½˜O»OðMò8’3úÛ¯c÷mN6bgI&tOåˆ\"Ÿ,\rò9=‚Ap#¼'�Á^wÃMºÀÖÐ)ò8T%w•v×^í´óò<ü‹Å¶²\\OôÂç}�ý\n�¿3í?Яh?E‚YÑ”ª!½»…çÒEaQ‡ØÇCý3óo¨Þ^ûßògA,ýÔWE‘Ðý1õ0%�XK4Lûß‚¥.ß ^÷|ß)—o…auSéo×=ÓõiÄ×?@ýy4wˆ4>\n´üM�¢Ñ[´lFÿcx~Õ¿½öôEó´½ÕÎ}�ì’2™ÞÁ:�4 #µ·ÖÝ,|ºËètqaƒ^‡!ð…̘i\"ô..÷¥rÁËbg\\œéëªàŸKžÔ|ð#g¿}vÄYX]!w,rš^ùvÒÇßÝ�IÛøH!à;×ã·q¹‚JÅ긒?zùW×—âß{Ÿ‘ÒÇÞñô¯ò¯ã´`I›øè7DÚ}Ãù\0ñ�u«Ó˜+Ü2~Uó,~Ó~]ïO 7Üœð3EåW�_K•ãàý:ƒ‹Ñó^sú¯Ò_‰ÿP~=èʵrµ£ù”ãö�ì`6¥õ-Â�T—aüH Œ“ t·íOSÂ1Hyn·ì\ntwÙKž–õ=Óÿìªp„§&ßÈ?ƒvuÒÇî>‡õMûŒÔà2n\$Ÿã¡?LO9_¤2AúäÂⲓi¯àI2Ï|óñWK�уw]eÏ¿Œþû¥u_È]?øª›ÀíÿÑ=„]èJvìÕÅ«\$ÏêEŒUû#æñý×Ü·?âLuÐf÷õiŠóÿŸí¢\nèl™£�˜pmýÏX‡>tíf\rx–—ýá•äÀ‚s¼§ø€.Ÿ*O˜(Aî½P?4‘Ù]çx\r^ÂE8nJRo\0¦ð%[Ñ\0004Õôw%_êKÕ[SJ^�ü¡”nÂOKŽVUòTP¹‰Þ…9Ü�»Á»¶?uF§ùSˆx ¹D”šWµŒ&CxËþr¤ž€;’˜.8KyUB¸\0CJ ˆ¢!”ÿÄHeWüJÀIf†äÿš\0þ�ÄoúÕ/¿íV ÿìÚ5Z\0ïÑØ¬UÌKÙY;EðÆjƒwD¤·Õ¢%`n@‰«4FI*o\0`À®Ã åV Ùq)8c5Wz«EFõ\0ÈôBñë~ ¢DFÒê”ôŧPÑAšYŒ¯A]˜fµ¼*ë -+Yf<¾àÅ·¦úà/‚_€Â°:DPÀyÖA,Êm––bÈÕqàó 8Xè³HÚ·•®Ë\0ä@u\\ÈÀ!ôâdë^OÚ„}%él€>Â׊ÞVÇÀmYŸ\rÚ½21P\$”5ÑrHêDÖéÂíHÅÀ™€äôhô E¸e‹!@ž[Zíò4‚š(£`QF5µ\\(`Oð*@9\0f�Dµ~k• \"J×QÅÀBDá\0@\$ßDNˆ¿ \$õ€k1ˆ î}`(†R€|`PåÄàžÑ6\"KXܨ5¼*Öû\0PÔ™Ú[(\"fƒ”á�Æy,”1\$ÎÑ;\"8\nLµÔYX7”¸ÆžV9¸gX\niØHapSI®„Yš,‚º!·žäVÐ3€ú�å�î\0�C8|ø ¾ÃÀ,€N!ÕIq•jëÈØ)ÜÀæ áÀÒˆZX9ä+jȬZ§Æs,FIÏõgÞŸ»K9…QÐIËœ9cÙ«;MÕ[‹ÿ˜Ÿ0ŽU*¿»²ü–DÛÁrÁ0h‘§›åR«ÍÙc±aÔË)ˆLÈ&pG•F€C_\0Ù@94×þÌ„ÙF3Î.²Ë}™{5f^ÐT׿0âlƒ…�ºõ�Aùš’2à‚lÊäÃ(+0Yàœ¸¸ËÑŒÛ2í,™«•x‚äȉ�¤BîÐ]Ùé²vd-ÝŸ˜0Üÿ‡Þ‚8Ém”û%ãg=Ù“±&Á-Ž#ö,ZÙ:±ƒ¼Õc:x/ðeÀ´9düÆÍ�Xeó`@(*݃-FôÆE�ü »±e‚ÛAˆã¸.í`»“X(<Ì\r�<UÿÌÁUD€J&ÍÁ—#Iðü\rF Ä/–clƸ~°üù™îAw_øË¨Ÿlæ›ÌZÉóAÎ\0ª½¸¸20QàÖAœ'ÒW*ì¶xY2'ƒ€ÀÙ˜a\\¸<Œ¹ Ÿ±A‚îÔ™ P6tpg“\0Bô&U©¸>�µAçƒWù–Á3v/pzØ7Á•„\0¾Vì :kÏCÿA¥'Œ2†Oëå[\0EexÄQ)[;Ð pQYê³ÀbRÆ9�„–bìõY_&8pA�“#\$0]!x‚@ÎÍž¬\"¦xP^™ãÂ2'Ä„[\"qPh¬3Á„T‹š|÷Öaµ[bï \nËF¢îÐH Ô²èƒB\0®\rXHðŠ¡&±Ï„˜¿‹<'pH0Á ƒma«T#¦]ŒÁ‰Å0惊¿U|s#(LLO å5g¹‚x™hE,P×èÁÓiÁ ‹Lv]P�!<Vƒ¹ õš´8PrÚƒA ¥ˆ<(f“lï!Aðh!Êx>à`üÂ5„é}ƒ2í@S`�0„\n ³C` °¨!B�\0³& µï0ƒQ핈…9©Œ94Æ™Œ˜¦“8gøÅIŠc\"zéØù±Sc\nÌŸD\"Ö)°J1¯cÍ‹;X/¬~Y1…ƒÏ~\$\$1laa!Á”„Œ†¤\$˜G,aa*±ª^ž–Œf00·aLBㄱ6#¶0XÂÂ_ƒpŵŠó\$…åqcBhdb¾B |h9�¶!bBq\0†OµŒ+¨NðÀa=AÙ.ìÆü0†Œë÷a„B‚c\nŒ(rpz¡ˆÂ‹†\"É.‹>(X�}aI•cÕ9Œ,)æ мC¡&ã\nŽ hd0©á’1I^¨ÀÎd ð)¬aXð[c½ü?95æ1En´ 'ÐVÍ£Bö²n0VarCc4Ò®K2V4í\"—é€Kl8½œ?“/–<,ËšLÁ2j&ÓØš‰8 k¡y‡Ý…ëP~FŒ,v`1ê_Ó�–•ÿ@áACU¸ËETiCf=Ì{Xˆ—Zd\"¨×(&Vù×°¶DfJV�›ôæÍ]·°èƒ“é�; Âk\"—üB;`)!€«!˜ql:ÂÂm…÷)T\nzè\n\0—¡C›zˆÝcö–ø)˔ضK••½[| üÌÙ¼å\0´N•§iîÞ½Zvðà陑[Vl\$ÜYµ³*fHUì+5æåØÒ¶Zeš¾éŠËWs\\¡ÿk2¥ä-KºÖ†ÏàDGð7@lõ³ËŠÓf¬ÏÙ5—XfÄÌÐ�ŒÖcëäÚfªØ_ü©î‹:6€Â@,Á'<‘œÙÄ2°Xس³l'ÚËÑ<»âz,IßBÈgˆ¿ªã\nFx̯Jå¶i›ªC<ö'¬õÙìÁN\0¤ÍÁ© €f‘¢3sˆ(ÍÚüAvopÄ\"\r3qguœ{8`ý‘é±KhLÔÅyc\$mYÒ³Éh Ð9©\nÆ„ Ãù46hi\rˆ›{CÆdŒèJ¸°¡h„]ñ¢)Aö«ãK¬3Êi˜O´ #FRë,� ß´xf4OA¥êR²êìðÙ”\$iÔOɤ x„ÌCï3xg\0¼�œ+9…�-R•³.ˆ¢�±˜ñG¶˜Ý—Ÿ´Î(BÅÝ£ m”á)´KŒ¯`Ü�Æ6ìRêÛÅ4úaöÐm¡[o„šGòßµ:âMt‡ƒŸZ\0 DÛtFûoÿMÿ9=ÃKL q:ú]W™¡‡ñ¼ÍÂ(tP«7Ó@ÅB�âMq¶ãkð�M¼Ts\\Yâ2%¶â?58ÔÁ6‰�\r\níM·³øá½�”À·ok˜ØN«]‡�oTß¾µŠt�ñ¿ÚJÌMs©·¤ÄJõ!{µ8u-¿]¿-4ûâ*Xh–é1IÛ¤«ãÌìÓ€0Œc4Á8�\0Ì9Ðèð% †&€R‰v+#nà7*Ä\re^:õæÛ£àÍñâ™?–ŠàÞ±,Ð]è–ÏwL]®5È Y9à²Io„ö(}> ¯¹(²‹‚&`…’µß ^”Ŭ²_‘0\"{žƒHN'öÓ_÷2®Â„m6âüBbÉ\$~Àˆ�\$ÍvÔÝȪçÕ‘jžª»|‹T’Åãˆ'\r¢ÖEŒk³ZÑg¸�ÔQ�ú™ä¸ˆÑs„G‹=¿*SS¸r0ÑÑ1q_2<1×Ô\\8¹ñp]©¶‹�ëX=¤R‡”ñK\"æ%špîáíÃÓ}ä‰ïQÆ;(d‹Èâò1¤Dòÿ\\E§ŽGäY퓉ĽNä:¸Ÿ\r™d(Á`é~büvpîüŒTCâ1\\]§VQ¸TMª<ø¿¯˜F^’:0@0€#€yIšâ@g“‰g‰ƒ\0:8“Nß Åfè¾A¢\\O�rn»¼/‘Á…†Ñn^ˆ=νÈeºãÅ 1Œ>Æ2trá)-“xÇA®c»t`2Ýßüc§ ¨R>ÉQm5YÐ%7kq�\\�lCXáXl°\"Wc’Ü-9Œœár-K»d¯›šà¾ëLºè\rùêˆ1xàp_–¦Pmn³^3χ¯VBÊ?SŒÓ’3\\dŧ/:#1Š®Œ¾êz3|ghÌÅH˜Æy~[632h‘ÝHkž<Œ\\úáYð]1ÔˆkFˆ�›’(jѶԡŽãDÆ�CY¨ti0Ìq£ãE¿Œ�f4³öðE±¦£Jª\r[9Š4ÙXÇ6ÞÕ�ÞÅ]»x›tÿHk·«}�_5»zxDzø#\\8JŒTŒºP•GQ¯_´§\0W\rÞ5£„§KÛcÆÄ�6BÊ6C⤹ Cã6™†YPBtµ¶£PÈ'lW^S’6äm—f£áÏw�8¤íÃø²ñ¡`ÿªl„tep>'ÈDÚV�x†°�ØjDoↅo�ÞpM5ôoÓ¯¿À5ÇvˆûexK¤˜¡±�\0<:Kmt”\"8\\9èá®”“@óŽ †²8˜wB®AÌÆWŽ3m-\$p²ºî—\"†Æ.ŽIáùJÙ÷ÜNÑĺúÎ×É\rdgÀcñÉÛÌT†¶±n´r°\"OžEE\r~;ñÚ dP•Ä&>O˜çR: HèÏ*ŸÉ¿4oÅåTtU„QÓE\rE˜Ý*:\\\\×ßÎ\n¶GI޲ÝÚJbx¡±ÔŸ6ŒLQ ÷ö:â hìqÒ£©ÇfŽÂ? ²‹™õ:ê¯\\Ñ“\r|ÿýW3š‚�°7œ6¤t—ìôwתK§Õ»¸!�| cÔçŽM¶©£�Õða¥äê�7cÇ�,ŽùAÕ߇#Ñå#ÄEå°™ïßw®±æÀ•G—�-V1ª—vÖé4_Çœ�f<ù«xõ.–Äì)üGó<! ?1ì—m\$)�qB=0d°JOJcÆÇÁ�‚��´CÃóg ñ_i:\0KܨûIa¤jg‹üFÒ@&÷Q”fu¦É2Ö'º- MüªÓçó®cèGàwIÙù¨ÂêðVë=±[?\n+sµW¥±ðcÝ\0e�dêy!LD«Qïê\$)SY<€*“›.õ�MqØ¢ˆNʇåoálÇö%l1Ù6Ê_µ›q/]Ѷ·Ip²žøÇ1DRà¾\ny´®(�âVÆ’f¾\nY\\Ö鵄9øü ôÛP-ë�Ò ì;uVï€KDë<ª‹0• N @@†&-êzÜþ–+¯¦ÖÀDdÆ+nlþËÁÇ\n@Jâé¿*lè“Ùß7DM´£ï=q”\rì!sqQê¦ÈÅ8^xP—T�a‚ÉÆIŒ¤\r®7hÉÀ5‡È£t`yN9MA#©d’�Ò£Ù@ªNÜ¢)’/\"T&µA‚†`²\rigØ!HÇNÒ‹(¶]´øíóû©\0¤ÏŸS´.¤�êì‘Ì Jö÷ï ŸºO€žBD›†w NŸn>Žy0¼)2Öu3)1€ä\n�Êüù0¸0Í/y€Û�3Hé}ûÔŠ™nŠ¬È¯ŠÔÙÜPLI`£dZ�}˜iOˆ6¥ÊÏí”S=¹{B+##_¥µKgß~?Æÿ2’Q`ÀSÛü'l\0ÖÈ![»Ç¶ÎRŸ Èב²¢‰Q�çÅú@ݸWI„ìlàÄŠˆÚp愤ǧ]vý|ø(³Oæ_ ¿Zu<±E¿`Q6.‰h,þ&N¨]3K´»n‚[È…¤LMö›ò–¾Njä„:QêîŒ�*²ÑYxG3}@ó†6¼�§{\0hbQ`” Àƒ¦ÐkNSßǶp>�î4cá0\r¿c¡Åvžñ=R8¤eÏ@I#Lü=ékÖ¨Ò(ŒGá“\"Ò�dav®`|»sÙðÔ’U„Ò ^²‹+TDé.7ËÐD…2TË=t°é.*°]õϲTco+3~�ž!Àóõg�‘“ÞMDäªõ5*ÃÜG©¢u\$¼t–üKl‚J\$R¨Ÿ 0Q%1\rcð’!•€ó>~9R½D�NÏ��¹xTìâDƒãÇIgD\$D_’’ –J#¥·Éi#‡°uôÖñðÓð÷íaã «ÙÇ%b2[¥çÃRÉ[7Ý&ùU³²¸fó ~šáÈ)zÚåΚuÔæ¶–×|¥\$º*ñý¥�¢Wm+}‘¶¨ÝOs¥ÉR@ÆAŒ½#iýY+Ù##¾U‚Ú‚N¬dê\0Ä_·5� 0¥6úF·ìËAÀ®‚§)'lnó‹Y;OÛ•¾Èw“Æémìàé£òsØ2Þ4S”™ÈœŠIÐN¤èØ\\®W¥²º%r½u›Í&œ˜U}ÒžkÅÏ>æÝä:Þ·»îŠ=JúsníýÌú¤øî¨vàW€\$Riÿ°RJH0É�‚“CFKð—ò«Hjº3?î\$Kpz\" \0 .?ä1,ÿ“šƒ‡ŒÁy?øI\0�À×ÿÒÂ¥�@–‡XôuV¿ÐËUc,EXD±Eaê±�ç\"%D\n«<“ò±Yed» @(D“\0•Xȇgú’Ñ•’@¾Vƒ,²Z 4•eÐB¼ìD³R/´EòÁ`\"À0�‰-TCµuÀ zA\"¬+Wá-”H¨`ŸÊÞAeÊ\\wJ&[<”`êï%¶Kh:®•aĶInFúÕÂ+†–ã0긥mK岯²XP‹®[h0°9€qeì,–Ú²¤\$¸ÙpŽÅdîË‘XܻŴùj00e©Ë_V„\"Z¸C0+«�eË®ý—Dz�Ð\$¹„Mò楥‰E.v<¶ tÀßÙ+•Y½-Ž]Q)0ÃòÔ;@?_.Œú0UëÈ_èˆ#–¸æ¢»Tè|�…\rœ\0T^žÐf<0W-؇±�…Ù½ˆeP±!š±‰ƒ\r #Ñ2Í?Z1¸cªÅŒò´�[³Ã�\0«á¼+Ÿ,“î²²\nÊíŒ\\\"\"„ÐQÀ&2ˇ¿i{ÌJéŒDWûKÿ…2Á½�Jô%ÿl˜\0000�a/Å€+5ÿs˜*ª{`®Â6¬Àf\nŒßæCB˜-06JùêP\\\n Áh6pÒŒÙÁ@Æ.í3Ñ3¢gJÏüš#1Pÿ«ÎpgZPõ�šús‡P†™^¶JgŽN K•I–\"Dl\"Î=žÔApQ™îÂ=…qœ>ôBh…LCbÄhÅ9 y\\¢g)¥êÃ6ˆb½±ŒC?¸”lxZ1¥ˆoÝ¡ÔC˜‡±X�ÄA*äÊ�¢ù>b‡áüYä•xavVÔ™ìDeýQ\0'sc8}�CG8‰“â'&XcFÑê\"ÉG ýí?Ú[tfÚ#LFrŠ‘Š)•¸ižÓHáÜf›²ÉƒDyi¸Ì1¦ã<æž…Ü\">4ñ‚€–e‰òFaøGzŽ ß¬ûmPŸ=tûÉi²ÑýV}»“|µ}MP( %œe8�u=6‚2¨I€Ìq¡œføfú^MKÂ÷›é«>ø•Ð’\r´Œ‘ö^ð7d›vRŠm ÅIÓHã»9¥—>>]sýRº `Ðs€gUô;˜˜Ô°q“Ì%…!ù€8«ÁŒÝÈrÃDü+–,ªnxÍ”5ªÈ€€]–:JýÔ´àIóv¥®ÀÃVrÌ!ͦïŽ3Á¢™“Vm)áÈ\$@E`¯º,Î\0æ\0ÄÀàII�ŒØœ\0à¨@s�fÿ€8\0p\0̹àó��·\0005\0d\0Úpdà\0À\0\0005œ2\0ÞpDâ Ãó‚€\0007œ2mŒœá Äà\0N%œ38”ÄâÉÅà\rçN&›ý8p|áÉÅæÛ€\09œf\0ä”á)“ƒÀNB›þ\0ܸ`‚çÎ\0d\0Ýk4àÙÈ“‡§&Μ;8Ìœá¹Ãó’�·N;\0o8¶pùT0s•' ÎR\0g8ºq¼ä€3™çÎ\n\0s9Fp<äPŠçÎdœ)8„ç9Í3‚€N4›d°9És…§Îœ}9üiÉŠg2N€�\0ÊrìäÙÆ‘§\0NH\0i9ús,ã‰È�§LÎ1\0b\0Út<éÐ3ƒç;NfœÙ94ÌåùÏS§@\0005œÑ:²pé‰ÀÓ’g%’œÒ\0Þp´ç ÁÀ\0Î¥œq8¦t¤àË3°gÎYœ^\0ÀŒèIÍ3�g&N™œi9:püä�`\r p€c� \0ÂrLéƒúµçΜ�g8p”íIÒS’çoN\r�‘8:qüåyÖó¢§fÎ��\0æuè É�g[N��:âq|äùÀS´g\rΔœ¿:2qœåù×Ó®çÎ^\0s:úq¤ãIÞ³…'E\0006�Å:t ,éùÃó¨ÀÎñ\0Ä\0Ô \$äYá¨ÀNþ\0i:Žw,á©Ís¨g\n\09\0i:öqüæ¹ÅePç…ÎG\0i8*wlßólsÇç’O2œ—9qÜå™×SŽg„N¸ž8¾y0iÎ\0O!œQ8Fq|èØÓ“@Ωž=;Âu\\íùÐ3°gyÏQœ\0ÆqìóYÀSÇçNùœ‘:Ês4â)ÕÍ'€4�±8®sö Ç’g�Ï\0i8s çó²çŽÏ�ï;†yŒà è3Þg\\N©žÕ9 ¬à9Øà'Î?\0i;úuÀ)ï3‰giÏVžõ:^{TàéË3äg\"›cœ°\0ÎyÜâÉä3ˆ'‡Nþž+=\"w\\öyɳ†çS΢ž›=¶r|öùÅàg�κž;†qà©Þ©¶g5ÏoŸ=2zløéÄ…§ÇNžq:\"w¼à áó¬ç%OB�«;rq”ü Þsê§e€5�Õ:vvLæùèÉçfÎòœ#:Fuáiå³¥gÌNœ�·8Æ{4ð9ÑSÊ'IN Ÿ:¦xÄâ9ÌóÕ'/ÏÜ8‚|\$ñ9Áû§JÎ@žÕ<Îx<áùÆ3ì'DNn!=jq,æ¹ò“—çbOrŸèmºt¼á)ûó‹'0+p�8Æ{dö†âŽç%Ͻ�I>nuÄòùÄsªh\0Pžµ:à ,ù¹Ús gÏÎ&w>ÒvœúÉïó’€P\0œ7=vŒñŠÆ(Î9ž,\0æxtýyâfØçûÏšž<˜ªyÑ3¢èÏúž…;6€\\ôYîÓ£èOå a9Vut÷ùåóë(!N�Ÿ >{,ä¹Í¤q¨\$PœYr„ôšSî'ŠÏ«�Ã@~xüê Ås‹gíÏ€#�A\ns\\ãZÇ'éÏ Õ?J}ë…’4�·N¡ 9*{äóIûs‡'TÏ›*‡;ârláyÔtèNœ!AŠvtí9Õ3ìgÑN¢œIBZxüá*™çEP} ,mŽ„\\è¤ÿÓ–(UÏLœÇ@ÞqLä‰÷³ÁèVÎ�ž›>*‚¬è¹és³§ÃÐr ;^xtèÙÑ3 §3Ð.��AV†\$åªtg�Τ¡\rBƒLú:Ûgгž;>öuâªÓÉç¤Î‚ž�9.‚|úiȳÐ'OZœQ@’tDûYÙõ@1PêŸù>š„…iÌsß'iи¡8Æ~uÚ(eлœ)BÊ…œòùûfØç'Ï|œ•>‚vtüZ³™çKÐBŸý?uE)èŒh:ÎàžÛ:¦ƒôæ™Ã”8g’ÎH ë@fxì™À3—¨ Ψ*‡:¬þ„äYƓʧ*Î_žÿ9žpLïÉÉ%§P¡oCZƒ-*ó»§ÖOTn!>.zœþyÄ)ÎÀOh¢3:fqDëÉËÔç=Ñ 7C*w´ÿú!Óëç³O�_DvrTìyëÀÎÓœw9¾€ãÉèsÅhMÎ7œQ;î€u©ìÓïgNÊ�;8–Mº\$³³§ZP\0œh\0Æ€üäª(óÃ'ŽÐôœ[>Rt4ô é³ý'Ïùœ÷>ƒ¬äª-ÓÃ'ÔÑ‚¢»<|Œðz³Ô§dO«œ9<¶rÌàš(´\$g^ÑaœßDV~uùã´3g\\Q@£%@Rˆ…ÉçSÚ(,Q YF²}ÑT:Ô[ÈãOºœB–rhYóM(‘Îiž)>¢{• ÉôHHãP.�GF&sÍiîTXg³OCœFî„îŠsبºN�)=„X‰íóªèQÍ 8umú;3™ç¾NœÇ?êpLðôÛ3Æ'¹Q;Ÿß9B†´ÿ0ó²g~QJ¢5”6ç¶Î\n£Ã>Žr}éÁôèÖ«k\0ÇC�ÅùÉSœ'O¢Í9.‹Äæë”giÎ ÏFp\$ëyã³ÛgÀOC�á:‹<ð‰ÍÓßç\\QWœ�<²uÔùZ”b'Ò5œFn�¥:Ôv¨Ñ ¢ç? \$û©í49§%Òp¤?=Œ\$åÊsëèjN,¤:ª‘¥‰ðó�è¯Q¾œA“m™Â4§àPÄ£?*q¥,ÚBÔ0gP¢¡‡@V|Üï\nWÔR)^ÐØœIê”üåŠtµi^Ï¢=¶tý%ê\"4ç)Oo \0–ƒm\nêGóÄ'^Oâ�Ÿ>®|…J\n“ùhóÑ®£¡BÚ“ÌùzW“æ'ÊO˜œ-ˆ‚9½’òQ¯=8p½…yC\r&OÌ¿ƒù/:‡ÆVÑ™“\0 ~ìBY£S#e†Ä-�É7f–LºÙP2˦Q ‘ŽØ.VÌôɘ…2‡ƒÚ&Y‰óI6\\”ÌÙ�Bfc/Þ™ó%Yj¥[#¯ªfðÍš_Ã.ˆ8ˆõ!Þ±¡cfW%�ã?F6ÀR%ö2a\nÚš4æ@f)ª—v¦¯õ™;ðk@R\0ê�L�\0’¡¬{6µù,±%û°Øe¯\r@€¨y\nVé±�˜¦Ê\0üLû ÿŒ°á/º„=MùŸc¨24ψ\nanN\$d>ñ2ÔÌš=4Ì_ÝN&\$u8Æ�”ÖÁy.º¾¶+.iPViª1‘‚nÅžšý9…ílýÝ„g¢Ê�eL’9¡óEÚß@o<(B�lšÀ«nÕØ\"‡å_Õ\nÒ�@’„ÍmnÎå`£\nÚ ¥;öpM ”H~͘�i9æTÓ™³iU*Ãn+\0àü¡ç0ZßOA‹ô-zzÌœ•´‚©â£ \rHš4DKcòMšŸ3€þDÕIœSu\0uO²\nt3�ûW«0èftɬÔ3Ðÿr±\$¤Žú¡µ?’jNMѶ \0Ð’¡Ì5¥íVi¡Â4bâÑ T6À0«Ö ¢T\nd‹PY¢c°kQA1X0õ¹¬’K¦T4óÓ\"eB˜Ì<T\$ÝI Sî]V--¬Û]p)Š!*Ôg&Mƒ?ÅþqA1¤fp\0¢¡ó0 ”€!ª5¨æ“øRµXÒ³\0jLÍ(�è&iÌ×À6+e@!¬Ôw!ä’TCRb}P5„»¬v¹‹^–õµÈfÀÌ�Ö<[v½mmLØ�…ƒ•Pª£}8”Ï*8‡ù§ ‘žœ“Ú‰u™³\\¨5Q¹HÀ#X€¶7*Ì`+eélªV±èd‘LÅ—i8ꑌyà¡1@¦qQÊ™ÝI*‘\$ç„ÊT*cÔMÙ•C¶0ÚYaÂeq¶¥Š”°h‰¸Ól�÷[,Uæõ)˜GÔ¨aǵ–Ý2\n–칃ú)DŽ^¡UE’›Ð(j35ƒYO4lš¬� f@§+´Ê¦{6ЫÊåÃŽ…0\rjeÀ5¢¤àFdÜ%w^\0 ¬ÍM†^œ¡ŒÔâ'\$Ñ—3)P0¬9Y “Y\0©P,Ëúž-‰Ö®^´Í˜Pd`Ì·¡‘°èjùO)b�%RÍ%Y%² ‚A9y‚5 ÒŸeÖÙZ\nÕOZ ì\"ƒþ¯n¨MTN£½8º’5Eá\0BÔ¾.;I€Ìƒ)•TFª¾�3;ªsPŒ �/8ƒ‰T�‘|*rh�ÏÀ(6\$\0‡py?~µL\0ÂϪ\rýžóæìò`¬µ\0‡L®ŸLuO™‡ãªeTBœ\$#ø0�\0*ž0[¦ûU)‰ô-P\\µaƒT*„…M‡º§Œ(jt2ˆ%M2ªÃƇäÕ`¬°¹ªÇUc&0ým‘*·±ff#T.`9€L˜‰U<_GLþ«Å3–I5&jŽB—TìªU˜, Чð¥Û&Á_ƒ]Q†«KËôÑXåÕ‹© ‹eSÆa„à*ž3fORUˆIv?«ýaÕ‘f¬N¢zýF-,½Y�Á ƒ¹Vv#�YØUm*ŒÕ7ª7W0›ƒ36ÆÕi˜8UÔ˜3WReSÆÂui˜!Õ¯î¦6Óþµ(˜c£áÊC«›Yžxšº0ûkÕÕÕjž•<‰{›kGÕÛWv²å]ú¼,‘*V\\F\rYÕ‰�^’lÕ]à»ÕòªºÍ§lÚ¿~—ÉAœ‡ÙWþ£Å`5¦aù4ƪ“[m—%`J¤�WãV«F°]bæT_+\n/ñ‡Çr°ÍS:ÕMªœV!fͪ3x25S+OV+^õX¶®eúÜ�+V3ªŸ~™äzªÌ´k}1¬ŽÂ&«nv#•”ªUg\0�\\5—%qI€Œ+‰W¬±UȬûšãµZª»WƒgYV¸&45Æ*LVg‚ïV³Zôê×�s›*6`®IRÚ¹K%šæµeÖëƒ9Va~½sšÏ•Ë+C²ùRZ´S–�õÅë‘Ö‡HZ%‰òõ† \$Ü+{ÁÞÐ݉òÿƵÑ*ˆ×>ƒ·Vƺj÷ªÒÕÎkLU½¬TËš}iØ,§ëV¡ª\\š¥tŠëÌ„+¹W-µ¾µ}wx3•¥äÕ×®sZú½l\nç5°šDÕâg%\\æ¶8š½†Y\nVË_Ž£i³P€tË÷C†ƒJËYŸ‹/¥êUå᦯žg!^l€ö:+Ôƒý\0I\0“^’¬¨¢3WéA¦_^’iZ&b”÷îUþ+E^´›µBa\0Õ\nƒó#Î^¤Zºc2g¬ÚšS{\0–Ę�•7DŒªP/hum}ѯ2Èž\0ß×Ñ|ÜÒŠ›Òÿêû5!毯�_\"›ÓVÀá`S¥ºÐ‚¨59f5î Ua*|™¹AäòôéZ™×£§10ú¿ezúþìñ€)Ćeá^Ñ�Ñ@X-µþk÷Y&Àáž…€zÖÌô*¶3\0œÎ²�-|Ê…´æ,Th§1Lb�-1†¥«ò*™\0_^ÑŒŠ.f™½‡äfOF½�‚9‰QbKX*fíZú uËdÎ,/Øj'0Á¡m{j“Tíl2€Y+EaÂÃ=_k\r–aSª�ªj©î›•‡¨X,7,=uj^VÎ¥s<’…)YP4°ÚfÇ;Ö,<›5+—b>™å‰5í„û@0аþÍ¡™Ì@òn5ü&Ø¡d‚ÏÅTsV¦V(š(3ó«óXˆÙŠÆ‘ëôàêX�±d )¤Å«6)Ú“X�ƒ&òŸxv'¬a´¢°…c¿±W1,\\¬bXËh‡ae™µ@ÄÑìXÒ&ocT«ƒ)vlШƒóW0a_P\0?%P\\ÐÖlqV¶®(ˬ>ê=KÅ+RXب}‰Ã<Ðü WÏSž‚ÐÔÒ�5VÊ�Dç¬zª”'õÁ›';kÓÚ5T<¨&Nxœ•�5*•{ê ±r\nÃìž5…fÊ,Ü™a3™¨6 %¢P~\0 µÿIöXÐe@ÙDA>Àûì:53q¯°É-‘æc5 š6²VÍÙ˜’øƒlÉ+Ú0¹¯eca…Í“†\"V>�“бQb½›5“è7¤Ùš³/Õf3_ô›;�ül YG²PÞÈ3*\nv+ á£Ç\ni>Àòt:ö–V,“Ô@'dª w\\ÕüYKVO_F’Ë+\n¢‘³f¼&V®�EP+ýÀ³òl`Lö¿\"üUæíN@+Â8ªîÖÂ0‚¹jž™ª/�²ºªz•RèkÕí+\nÔõˆ¢Êž£p(7ÄÎY¹/slÀÁvÌ‘6k\nÖPìÊXɳ8ÍÆ%–‡VfIœØØ³?aË¡C¦J;+§×X¨ô«V¢šð Áú€+”*¨ÜÉA3ÖµðÚ™ØU³=fí“ýz•`‰µ°´\0 Õ\$Ó; aZ‹×(ƒMcý„[dÊôösûX°©`?£'¸Qv2@(\0W\0‰f»c{;Ö&™s/æ«?c%SÜÇV\"I¬“?d‚ÁÄ�{F25+šsTèeP¿Q±-Ÿrp‹Ë`lWA—ÏWCR´¨*OÓç`ã2º¥:”`ëÑ0¦b¢ÍšÍ¥1vokèkà“@²àÂu‘=…k462CýAʯgTºÅÕv[ÄHÄ’±ah�œ%¢:“„ÏØN²~a:(Ô蕘AZ06ækÆÑmBªéõÊ!°�jy–‹:õÕ —½ØGn¿šž+@üÕÿl§£·\0¨M0³ ÛIëͫóʹ¤T¡C ØRMVŠÄ0‚aMih™ý¡¦:vh˜“Za'‹^ÒÓ+IK*vqÕAûöÒþ¥ãGÊœìÞNÚr'Î\nÓ…§P µíت׹´êÄ™Hͧ{NŒ ¢HXô}d¦}2ªøŒÈæW0è©Ð½±›5N†ÖWI¢Zsãiå•tZôLäMM©Ÿ²ÂµX«4Ub¬l/ä8pM2§5�Êœ”™³V¾´ÇevÓŒ–µáÀ+,¯Š¾—I'8C íTëµlæÕÀF@–Œm‹�\nßrÖ8XÎSjŸ ´Ö¾ÒXînhŸï ”Òÿ†XB°RäpÀ¹MÕ–g7]³ÄÄ®Wñˆ%ÒMähU<`‰„Ÿ4põ®Ð1Ñ\\ÀÏ*â]åk^ßcGi]ц| \$*p0€À!Qx�\0Ø–Hy‡w€€’\0002\0^ЉèYk¤Áå\$ûFèKòÅé3Án‹Î,¶3lRØÝ±`°@\rm��ô¶*ì,kd²_œ[\0ol®Ù=±ÐÌ-�Û(J\0æÙ¢½ûc€I\0’[9^:ììì‹gÀ†È:�%!^ZÙ³«bÖÐQ,[H¶MlÖÚ-±ëiÖË-Ž[A¶ImNÙ�´eVÖ-¨[A¶_mrÚU´\0\$¶Ìí°[?¶£lâÛ-´C°Ïm´Û-¶ÖÂÛmµYÙÑÅ¡[I¶Ím®Úm·[iöØ@/΂¶…mÆØµ·ënˆá-½ÛfžÍmþÛÕµKbÖáíÁÛ¶ùnÛ͸KqAŽíÀ4¶‡l¶Ü=µ{q6ÌmÃÛ[·7mBÜ=µûsöãí±Û—¶9nÛEº;pÓ²\0[¦¶-J¢Ýpc¹å–ãm»[D¥)nÄüòËrÖà-ÙRø·q<²Üõ¹+f3Ë-Ñ[¶¡<²Û%º«vÖÍíßÛ¬·šŸúÞ}»Kp¶Ñ([p·•l¶�e½+r`è[‘·mš�e»»zöÇ([š·�mò�e¼{öõ(Û¸ Yo&ß=¾y–ï-î[ηéHnÞµ¿}“Ö-÷Pë·û>²ßý¾k}vö'd[ê·kl¶p¸‹W-£[¸¸ozà=±Ë�6ø®Û¢)oæàÁk�¶ý(Š\\·§l¶ˆ¥ÁKƒ6ŨŠ\\¸#p� -Àkƒ÷§l[¸¢)oÂácº\"–ên\nÜ(¶ÙoŽáµÁ‹„÷¹Ü.·ýprvEÂ+‡`çO\\&¸WpÚáU½¹ÓÖñnÜD�Ïpú‹ÅÃã°®\\G¸y9â•Áë‰Sá.!\\V¸�:¶â•Ä›f3þî&\\CŸ÷pÂâ\n‹Š¶öèT[Ú¶cB¢âÕÆð\$·n6[¾·éB¢ãµ\nn/P¨¸Ñqöß�ÀÇfØîÜ5¹;\"ã]Ç+—îÜ‚\0¿rã¥È«ˆ×gOÛ¸¹ qòä¥Çû’—\r.&Ñ·[r0•È›j`®\\M¹IqºåYÉvî.R\\‘¹SqÚäuÊK�6ß.R\\|XÅpnÛÕË{•vÓ®]\\]¹uqåÕ«—W-–,[¥¹ys�m²[–÷!`F¬�¹s*æ-È»—74n\\˹}sFæÍ˜W4nb,‚¸ŸsæõÅœ3®)Üã4ó>âË{‹9�/Ï„¹«sw\rÍ›×.v'Ÿ snç�ÍÛœ—îu\\4\0F¦zÄûš7 î~‰~¹ÿ=bpê á÷-çA\\ò¹�>bèuÎvâDnvÎ)º)sÚv�Ñp7s î�\0sœ—sâè}Ï«¢W?.b‘ƺ;8²äýÍ;›ÓÛî“χº[s¾é]Í{¥w6n•Ý ¹Ï=émÒK¥w'ÑÜÅ*‡tžpµÔ¦3§Ý@ºiuéµÎÙð7P.�]Dºytæ,䫤óЮ©ÛÒ¹o:ê�Ó+™Ó‡n©ÝI¹í:*ê�ÔÛœó¨.“κËs¦æ,ᬷPîsÎ_ºËuëmÕë£s’.²Ýb¹Û=6é<ã¯7Z.oOºóu²çm«¯7\\.ÀÝrº=8–ëÍ×kžÆÛ®“›c»uòætä±·`.{O&»vìØj·H®vΣ»u=cX+£¶Ï.ÑÏ„»KvP\rØK«Fži'Ý¥»’ìá2zW7inÐ,XOýt¦Ü%Úz=nÔÜÒ»svÚ‘Ú;€o&ÿÎÉ»…v¾pÜ+±WonÚ¬‚ž±vâæmÚË”7hîuÝ*Y=bíDßûž7q(ÝÔ»_9>î¥Ü»»WsnëÝ\r»¹tBï=Õk¶×E®óÝ«4¿HÖìÅÚ™Âhç3Ýô»Év²{5Ú;¥—w.—]ü»³>²ïuÛ)ä÷~®×Ý8»ùwŠ}eß{½÷OîîO»Guðmßû¨·ƒnøÍÿŸ�x>Þ(0> ƒîPÒº¡w:êX,[ÃN¨€3^�Cv†ñ*;Äw‡)μQx\"xÚ;ªWw.ª^4»Õw:êÅãKÀ7jn®^4»_u‚ñ¥à‹¬—w.³^D»!v²ëUäK¿÷[¯\"^œvŽë¥äKÁ^.î]~¼«wþìå[ÉÓ‡.Ñ݈»¹v:òýä{½÷d¯/Ýÿ»-y~òu‹´wg¯/Þ\n&Omè騯ë#NÀ]Ù;xì5LëËÎ3ܯ=ݱvvïØÍןîf]=Yr†óæû·×tM/Ü¡¼íwî±§›”7…nP݆¹Cyø5LàÎ78¯HÞ�¹Ëzvó}Ý;¸“�o9Þ’ŸyÆîÝêÏ÷=/U©œ/z¢ôÄäÐ3�mŒÓS¹k^^EoD]ëœÖ%®ÂÏ%˜½qפô\0%°û®¹YÆ»„Ì5ÎX\\ÕŠ®¸(Ÿƒ\"Šç0p¡3C_˜BÁ¹|&X^�q¯k±6®¹Y�=íõ#ø+°±\0—bª÷-gšè0tŠ*2Ÿ®¸ÇbMEö{Ú ï2ö½ßR‘–¸€ ðˆë®Y‰ƒÕ{õ†…ì–B¡k®W|®öÄŠ5ðZïÒòk™Áœ¯r¼¼µòÕéÕG©W\$L´8jìðò*Â\"_sNˆ¼ZiŒLvêžXª|Š©K V'O/_Uä¬NÈÙ})3Ú•ÐH/`Aš®|ѧÉ6fÃ×Ë/b^Æ«M{\"ªô\"«Ùp—‰^ΫM{@›õWæ*êž^Ô½·ÙŒ3#+é·¶¡¯^Ü…îÈ…}SËÜï*Ó4g½É|º¹Ó,;ÝØ/sW1d\npæ¬-Y{åui« U–„Æ¿Jû]ö\n‘U#«E“C«aTJT¿ÆYl\r¯}ß¾ÁVÖ®COxbv€!C\0P¾ã\nµ‘8JÖ•u&Â�¾~Uk†õO/£_`«ËÎûE]«E•w/©Xz']O9T\ný6£ +UÕÊ[XbõÝkªÃ>o“Ö�¾[:±“e‹0´Y¼BJ¬É~Ð?!3›çu—\"^ÅbåY*²õûz¿—²áußExÆúEí(]·ÒØÿÖ;¾�}Vú…x*Ì·Õ!3Ã`_!{z²åõ»õL¡ï¯X¥}–ÆýýûÝUªkÞí)û�ušá•¤¯{_ì©U{æµïÊÒ÷àš_ä§ZÎËŒ2�÷þ˜½C#k]úZÚÖ°Ë/Ì\0D°©µô3Kó°öɯ²üd³ÚŸÌ8»\$0Ro—Ø ±²Ùrûܺ‚ÐÐ*“k²ËR®¦½—V̨ ¸VšlnÓ‰•Ež…æÐÙêTËýbRÊ}÷j–ðÜ™mÔ˜€Õ^\n»-ª—u´P1ï`Rž±}MJe–ªj…#åK4��,ÐÝÇt\rÖœ:¦ ‰k .lO°lî(â—8£qÀ’í%rY¦à³FO¼ßtN£µ2W¸WT\"uj�€ªÍ}Tí@ÐÓ×7k’S Vwéڀ姮\\€ÚG˜Ä<ï²I\r’ýp:/²â'Ú0ö¦s{M©%\"G%:‰Ú”uà‰Zõjõ³Yg´õÎJÁ>à“,öòW›‡T|é&›5·àÁ�œbX©‘¹3Ÿ„ŒXëæ�Jv¨sÑTS×½I6ŠM FI&ÁhðYàŠqè’¨PY&Ƽx�!I6\n4!†ðº)&Ô07ÕQ10Ø níÑŠ7ÕX�3Háru\00053¤ˆCÚŠ°ß`ø¬@ab]“„Ã\nÈ&䮘Y¢|‰Zv°pˆ“µƒZ �c�uTéÅÜ[ü.MxÀ7½»ÂóOü+N—k KiØ:æà05¨³bœ\rºùw'†2<©A3\\á�Ã%60²ØVäu7ðͦjkûƒ„åÀ|w1ïr'½òum�¥%@I:d°Ål\\Rþ£ ¬5ëŸ@Ö¦öpë†ÉiðÃÏ)°5ñÃW©;HÏ¥à`®Ã„0¾¤¿ŽpÇ�…”ZÞd3·À˜sœï*mVæ_¨Œ:øs°œ�R¿Ùi)oDp‡áâolû™qf ŸH°aêŒQbt€xÀÎ ’5\0rGÈáÝ/Ì_¨ÂñƒÖ`áû‡¨4Xì-Ť¿9—‰�ˆú<@s;Â�Û{ˆ \"êjjŒÂ£0™aÎÂh6LFyÌ%‘óŒ\nÊþ·Îå¾pŸ£éÁ8ÛŒ^k¼:c°¢V\$¦2V'Õ\rßA?8¨ÄXÚߌ=§ÕšCG¶ù€íζ#å±c_ â='ˆýÖËð×å@VcÇbB¶,ý¤(Ö\$œIÁŽñ(J‹WF웾%\\+‚·„ð`:ÄnÝÇþ#œGч±1¸—\"g‰”mìba²x{q5€mmò¬ÍóôS˜ù؉ñ8Äu‰ÀBh&POxVââpÁ®Ý¬&&&ðÇ`Vð<®�QŠ€*™;¸ —„�E]ÝŠN'Ø ¯6¢¼TÍHŠXv Ȫ-íÄaEBv�äÐQ{ª™¡˜©³È>CiÚ�7œTopðfâ«Å#LV¼0ÔÑHâžuà±>) E¨¨øª±]¡4ˆÛ4ª›ñuB:[Åp›R*T:0)xªñMàòÅ=…ùîî ‹Jê�èbÈ#*¨ìª 8©(@=;V1cSkÉP\n`a]g`PÂÛShàÆ.„U¸q°Žà ‚‹X\\:™`¤\0v“¤ƒ|þìM—Æ`Ö±E+…ÅøØ>¼_âJŠv¸Å¤\n¦VØ0l`m¥¡í©N£Œ*ÖHýñFøH�T£ÃÁ\0£¨?,b%Ò±ˆ’-Œ6\n-ld+ʬš·ÆT/:º¤^RÀfâK:LXBm‰ºrÂIvKV,âR²¼eàpq˜ÚùDê‰^&\0Ea&®.ù\0ƒ�B]#b�…€âÕê‰Ò\$à@Ü6¢ŽE¨ˆf€„o€9äLìé, Ãè×ÁM\0SJèûgxÒ‰‹cYY_�{P) \n¯y\"ØY-Ír]Ð#8Û–ácd•4�^3°6!\\Ô(Ë‘›‚w¤×�\\«Û€�æ�°\rjf©Æ—k`Ô\0Í3lä™…¾«¹kI/݇§›nÍN@:”‰'ópßè\0");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"‰PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6ž¶\0\0\0000PLTE\0\0\0ƒ—+NvYt“s‰£ž®¾´¾ÌÈÒÚü�‘üsuüIJ÷ÓÔü/.üü¯±úüúC¥×\0\0\0tRNS\0@æØf\0\0\0 pHYs\0\0\0\0\0šœ\0\0´IDAT8�Õ”ÍNÂ@ÇûEáìl϶õ¤p6ˆG.\$=£¥Ç>�á w5r}‚z7²>€‘På#\$Œ³K¡j«7�üݶ¿ÌÎÌ?4m•„ˆÑ÷t&î~À3!0“0Šš^„½Af0Þ\"å½í,Êð* ç4¼Œâo¥Eè³è×X(*YÓó¼¸ 6 ïPcOW¢ÉÎÜŠm’¬rƒ0Ã~/ áL¨\rXj#ÖmÊÁújÀC€]G¦mæ\0¶}Þˬߑu¼A9ÀX£\nÔØ8¼V±YÄ+ÇD#¨iqÞnKQ8Jà1Q6²æY0§`•ŸP³bQ�\\h”~>ó:pSÉ€£¦¼¢ØóGEõQ=îIÏ{’*Ÿ3ë2£7÷\neÊLèBŠ~Ð/R(\$°)Êç‹ —ÁHQn€i•6J¶ <�×-.–wÇɪjêVm«êüm¿?SÞH ›vÃÌûñÆ©§Ý\0àÖ^Õq«¶)ª—Û]÷‹U¹92Ñ,;ÿÇ�î'pøµ£!X˃äÚÜÿLñD.»tæ—ý/wÃÓäìR÷� wdÓÖr2ïÆ¤ª4[=½E5÷S+ñ—c\0\0\0\0IEND®B`‚";}exit;}if($_GET["script"]=="version"){$o=get_temp_dir()."/adminer.version";@unlink($o);$q=file_open_lock($o);if($q)file_write_unlock($q,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$ad);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'15');function
lang($u,$Ff=null){$ua=func_get_args();$ua[0]=$u;return
call_user_func_array('Adminer\lang_format',$ua);}function
lang_format($Yi,$Ff=null){if(is_array($Yi)){$Jg=($Ff==1?0:1);$Yi=$Yi[$Jg];}$Yi=str_replace("'",'’',$Yi);$ua=func_get_args();array_shift($ua);$md=str_replace("%d","%s",$Yi);if($md!=$Yi)$ua[0]=format_number($Ff);return
vsprintf($md,$ua);}define('Adminer\LANG','en');abstract
class
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($N,$V,$F);abstract
function
quote($Q);abstract
function
select_db($Nb);abstract
function
query($H,$jj=false);function
multi_query($H){return$this->multi=$this->query($H);}function
store_result(){return$this->multi;}function
next_result(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($nc,$V,$F,array$Xf=array()){$Xf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$Xf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($nc,$V,$F,$Xf);}catch(\Exception$Ic){return$Ic->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($Q){return$this->pdo->quote($Q);}function
query($H,$jj=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';return
false;}$this->store_result($I);return$I;}function
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
true;}function
next_result(){$I=$this->multi;if(!is_object($I))return
false;$I->_offset=0;return@$I->nextRowset();}}class
PdoResult
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
function
fetch_array($qf){$J=$this->fetch($qf);return($J?array_map(array($this,'unresource'),$J):$J);}private
function
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
seek($C){for($s=0;$s<$C;$s++)$this->fetch();}}}function
add_driver($t,$B){SqlDriver::$drivers[$t]=$B;}function
get_driver($t){return
SqlDriver::$drivers[$t];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
function
connect($N,$V,$F){$f=new
Db;return($f->attach($N,$V,$F)?:$f);}function
__construct(Db$f){$this->conn=$f;}function
types(){return
call_user_func_array('array_merge',array_values($this->types));}function
structuredTypes(){return
array_map('array_keys',$this->types);}function
enumLength(array$m){}function
unconvertFunction(array$m){}function
select($R,array$M,array$Z,array$wd,array$Zf=array(),$z=1,$D=0,$Sg=false){$te=(count($wd)selectQueryBuild($M,$Z,$wd,$Zf,$z,$D);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$wd&&$te&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($wd&&$te?"\nGROUP BY ".implode(", ",$wd):"").($Zf?"\nORDER BY ".implode(", ",$Zf):""),$z,($D?$z*$D:0),"\n");$ji=microtime(true);$J=$this->conn->query($H);if($Sg)echo
adminer()->selectQuery($H,$ji,!$J);return$J;}function
delete($R,$bh,$z=0){$H="FROM ".table($R);return
queries("DELETE".($z?limit1($R,$H,$bh):" $H$bh"));}function
update($R,array$O,$bh,$z=0,$Mh="\n"){$Bj=array();foreach($O
as$x=>$X)$Bj[]="$x = $X";$H=table($R)." SET$Mh".implode(",$Mh",$Bj);return
queries("UPDATE".($z?limit1($R,$H,$bh,$Mh):" $H$bh"));}function
insert($R,array$O){return
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function
insertReturning($R){return"";}function
insertUpdate($R,array$L,array$G){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($H,$Li){}function
convertSearch($u,array$X,array$m){return$u;}function
convertOperator($Tf){return$Tf;}function
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
quoteBinary($_h){return
q($_h);}function
warnings(){}function
tableHelp($B,$xe=false){}function
inheritsFrom($R){return
array();}function
inheritedTables($R){return
array();}function
partitionsInfo($R){return
array();}function
hasCStyleEscapes(){return
false;}function
engines(){return
array();}function
supportsIndex(array$S){return!is_view($S);}function
indexAlgorithms(array$ti){return
array();}function
checkConstraints($R){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($R)."
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'",$this->conn);}function
allFields(){$J=array();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
class
SqliteDb
extends
SqlDb{var$extension="SQLite3";private$link;function
attach($o,$V,$F){$this->link=new
\SQLite3($o);$Ej=$this->link->version();$this->server_info=$Ej["versionString"];return'';}function
query($H,$jj=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
false;}elseif($I->numColumns())return
new
Result($I);$this->affected_rows=$this->link->changes();return
true;}function
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;}function
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
__destruct(){$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){abstract
class
SqliteDb
extends
PdoDb{var$extension="PDO_SQLite";function
attach($o,$V,$F){$this->dsn(DRIVER.":$o","","");$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}}}if(class_exists('Adminer\SqliteDb')){class
Db
extends
SqliteDb{function
attach($o,$V,$F){parent::attach($o,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a"))return!self::attach($o,'','');return
false;}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($N,$V,$F){if($F!="")return'Database does not support password.';return
parent::connect(":memory:","","");}function
__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");}function
structuredTypes(){return
array_keys($this->types[0]);}function
insertUpdate($R,array$L,array$G){$Bj=array();foreach($L
as$O)$Bj[]="(".implode(", ",$O).")";return
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Bj));}function
tableHelp($B,$xe=false){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}function
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$Ye);return
array_combine($Ye[2],$Ye[2]);}function
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$J[$R][]=$m;}return$J;}}function
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
table($u){return
idf_escape($u);}function
get_databases($hd){return
array();}function
limit($H,$Z,$z,$C=0,$Mh=" "){return" $H$Z".($z?$Mh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Mh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$Mh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Mh."LIMIT 1)");}function
db_collation($j,$jb){return
get_val("PRAGMA encoding");}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
count_tables($i){return
array();}function
table_status($B=""){$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K){$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($B!=""?" WHERE name = ".q($B):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$B=$K["name"];$U=strtolower($K["type"]);$k=$K["dflt_value"];$J[$B]=array("field"=>$B,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$k,$A)?str_replace("''","'",$A[1]):($k=="NULL"?null:$k)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($G!="")$J[$G]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$B]["auto_increment"]=true;$G=$B;}}$di=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$di,$Ye,PREG_SET_ORDER);foreach($Ye
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($J[$B])$J[$B]["collation"]=trim($A[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$di,$Ye,PREG_SET_ORDER);foreach($Ye
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$J[$B]["default"]=$A[3];$J[$B]["generated"]=strtoupper($A[4]);}return$J;}function
indexes($R,$g=null){$g=connection($g);$J=array();$di=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$di,$A)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$Ye,PREG_SET_ORDER);foreach($Ye
as$A){$J[""]["columns"][]=idf_unescape($A[2]).$A[4];$J[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$J){foreach(fields($R)as$B=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$hi=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$K){$B=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$g)as$zh){$v["columns"][]=$zh["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$hi[$B],$mh)){preg_match_all('/("[^"]*+")+( DESC)?/',$mh[2],$Ye);foreach($Ye[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$B))$J[$B]=$v;}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$p=&$J[$K["id"]];if(!$p)$p=$K;$p["source"][]=$K["from"];$p["target"][]=$K["to"];}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($B))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($j){return
false;}function
error(){return
h(connection()->error);}function
check_sqlite_name($B){$Qc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Qc)\$~",$B)){connection()->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Qc));return
false;}return
true;}function
create_database($j,$c){if(file_exists($j)){connection()->error='File exists.';return
false;}if(!check_sqlite_name($j))return
false;try{$_=new
Db();$_->attach($j,'','');}catch(\Exception$Ic){connection()->error=$Ic->getMessage();return
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
true;}function
drop_databases($i){connection()->attach(":memory:",'','');foreach($i
as$j){if(!@unlink($j)){connection()->error='File exists.';return
false;}}return
true;}function
rename_database($B,$c){if(!check_sqlite_name($B))return
false;connection()->attach(":memory:",'','');connection()->error='File exists.';return@rename(DB,$B);}function
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$vj=($R==""||$jd);foreach($n
as$m){if($m[0]!=""||!$m[1]||$m[2]){$vj=true;break;}}$b=array();$kg=array();foreach($n
as$m){if($m[1]){$b[]=($vj?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$kg[$m[0]]=$m[1][0];}}if(!$vj){foreach($b
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
false;}if($R!=$B&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)))return
false;}elseif(!recreate_table($R,$B,$b,$kg,$jd,$_a))return
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($B).", $_a)");queries("COMMIT");}return
true;}function
recreate_table($R,$B,array$n,array$kg,array$jd,$_a="",$w=array(),$jc="",$ja=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$kg[$x]=idf_escape($x);}}$Rg=false;foreach($n
as$m){if($m[6])$Rg=true;}$lc=array();foreach($w
as$x=>$X){if($X[2]=="DROP"){$lc[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$Ae=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$kg[$d])continue
2;$e[]=$kg[$d].($v["descs"][$x]?" DESC":"");}if(!$lc[$Ae]){if($v["type"]!="PRIMARY"||!$Rg)$w[]=array($v["type"],$Ae,$e);}}foreach($w
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$jd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$Ae=>$p){foreach($p["source"]as$x=>$d){if(!$kg[$d])continue
2;$p["source"][$x]=idf_unescape($kg[$d]);}if(!isset($jd[" $Ae"]))$jd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Ua=array();foreach($n
as$m){if(preg_match('~GENERATED~',$m[3]))unset($kg[array_search($m[0],$kg)]);$Ua[]=" ".implode($m);}$Ua=array_merge($Ua,array_filter($jd));foreach(driver()->checkConstraints($R)as$Wa){if($Wa!=$jc)$Ua[]=" CHECK ($Wa)";}if($ja)$Ua[]=" CHECK ($ja)";$Fi=($R==$B?"adminer_$B":$B);if(!queries("CREATE TABLE ".table($Fi)." (\n".implode(",\n",$Ua)."\n)"))return
false;if($R!=""){if($kg&&!queries("INSERT INTO ".table($Fi)." (".implode(", ",$kg).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($kg)))." FROM ".table($R)))return
false;$fj=array();foreach(triggers($R)as$dj=>$Mi){$cj=trigger($dj,$R);$fj[]="CREATE TRIGGER ".idf_escape($dj)." ".implode(" ",$Mi)." ON ".table($B)."\n$cj[Statement]";}$_a=$_a?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$B&&!queries("ALTER TABLE ".table($Fi)." RENAME TO ".table($B)))||!alter_indexes($B,$w))return
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));foreach($fj
as$cj){if(!queries($cj))return
false;}queries("COMMIT");}return
true;}function
index_sql($R,$U,$B,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($R."_"))." ON ".table($R)." $e";}function
alter_indexes($R,$b){foreach($b
as$G){if($G[0]=="PRIMARY")return
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
truncate_tables($T){return
apply_queries("DELETE FROM",$T);}function
drop_views($Gj){return
apply_queries("DROP VIEW",$Gj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
move_tables($T,$Gj,$Di){return
false;}function
trigger($B,$R){if($B=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$ej=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$ej["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($B)),$A);$Hf=$A[3];return
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($Hf?" OF":""),"Of"=>idf_unescape($Hf),"Trigger"=>$B,"Statement"=>$A[4],);}function
triggers($R){$J=array();$ej=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$ej["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$A);$J[$K["name"]]=array($A[1],$A[2]);}return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id($I){return
get_val("SELECT LAST_INSERT_ROWID()");}function
explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
found_rows($S,$Z){}function
types(){return
array();}function
create_sql($R,$_a,$ni){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$B=>$v){if($B=='')continue;$J
.=";\n\n".index_sql($R,$v['type'],$B,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$J;}function
truncate_sql($R){return"DELETE FROM ".table($R);}function
use_sql($Nb){}function
trigger_sql($R){return
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
show_variables(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$B=$K["name"];if($B!="pragma_list"&&$B!="compile_options"){$J[$B]=array($B,'');foreach(get_rows("PRAGMA $B")as$K)$J[$B][1].=implode(", ",$K)."\n";}}return$J;}function
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$Wf)$J[]=explode("=",$Wf,2)+array('','');return$J;}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Vc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
PgsqlDb
extends
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
_error($Dc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
attach($N,$V,$F){$j=adminer()->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$ii=adminer()->connectSsl();if(isset($ii["mode"]))$this->string
.=" sslmode='".$ii["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
value($X,array$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
select_db($Nb){if($Nb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Nb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
query($H,$jj=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
warnings(){return
h(pg_last_notice($this->link));}function
copyFrom($R,array$L){$this->error='';set_error_handler(function($Dc,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);return
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
fetch_assoc(){return
pg_fetch_assoc($this->result);}function
fetch_row(){return
pg_fetch_row($this->result);}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$J->type=(preg_match(number_type(),$U)?0:15);$J->charsetnr=($U=="bytea"?63:0);return$J;}function
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
PgsqlDb
extends
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
attach($N,$V,$F){$j=adminer()->database();$nc="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$ii=adminer()->connectSsl();if(isset($ii["mode"]))$nc
.=" sslmode='".$ii["mode"]."'";return$this->dsn($nc,$V,$F);}function
select_db($Nb){return(adminer()->database()==$Nb);}function
query($H,$jj=false){$J=parent::query($H,$jj);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
warnings(){}function
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
Db
extends
PgsqlDb{function
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$A)){$L=explode("\n",$A[2]);$this->affected_rows=count($L);return$this->copyFrom($A[1],$L);}return
parent::multi_query($H);}}}class
Driver
extends
SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","NOT IN","IS NOT NULL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";static
function
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f))return$f;$Ej=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$Ej)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$Ej);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Strings']["json"]=4294967295;if(min_version(9.4,0,$f))$this->types['Strings']["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f))$this->generated=array("STORED");$this->partitionBy=array("RANGE","LIST");if(!$f->flavor)$this->partitionBy[]="HASH";}function
enumLength(array$m){$_c=$this->types['User types'][$m["type"]];return($_c?type_values($_c):"");}function
setUserTypes($ij){$this->types['User types']=array_flip($ij);}function
insertReturning($R){$_a=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($_a)==1?" RETURNING ".idf_escape(key($_a)):"");}function
insertUpdate($R,array$L,array$G){foreach($L
as$O){$rj=array();$Z=array();foreach($O
as$x=>$X){$rj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$rj)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
slowQuery($H,$Li){$this->conn->query("SET statement_timeout = ".(1000*$Li));$this->conn->timeout=1000*$Li;return$H;}function
convertSearch($u,array$X,array$m){$Ii="char|text";if(strpos($X["op"],"LIKE")===false)$Ii
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Ii~",$m["type"])?$u:"CAST($u AS text)");}function
quoteBinary($_h){return"'\\x".bin2hex($_h)."'";}function
warnings(){return$this->conn->warnings();}function
tableHelp($B,$xe=false){$Qe=array("information_schema"=>"infoschema","pg_catalog"=>($xe?"view":"catalog"),);$_=$Qe[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".html";}function
inheritsFrom($R){return
get_vals("SELECT relname FROM pg_class JOIN pg_inherits ON inhparent = oid WHERE inhrelid = ".$this->tableOid($R)." ORDER BY 1");}function
inheritedTables($R){return
get_vals("SELECT relname FROM pg_inherits JOIN pg_class ON inhrelid = oid WHERE inhparent = ".$this->tableOid($R)." ORDER BY 1");}function
partitionsInfo($R){$K=connection()->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".driver()->tableOid($R))->fetch_assoc();if($K){$ya=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $K[partrelid] AND attnum IN (".str_replace(" ",", ",$K["partattrs"]).")");$Oa=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
array("partition_by"=>$Oa[$K["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$ya)),);}return
array();}function
tableOid($R){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($R)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
indexAlgorithms(array$ti){static$J=array();if(!$J)$J=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = 'btree' DESC, amname");return$J;}function
supportsIndex(array$S){return$S["Engine"]!="view";}function
hasCStyleEscapes(){static$Qa;if($Qa===null)$Qa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Qa;}}function
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
table($u){return
idf_escape($u);}function
get_databases($hd){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($H,$Z,$z,$C=0,$Mh=" "){return" $H$Z".($z?$Mh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Mh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$Mh):" $H".(is_view(table_status1($R))?$Z:$Mh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Mh."LIMIT 1)"));}function
db_collation($j,$jb){return
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}function
logged_user(){return
get_val("SELECT user");}function
tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$H
.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$H
.="
ORDER BY 1";return
get_key_vals($H);}function
count_tables($i){$J=array();foreach($i
as$j){if(connection()->select_db($j))$J[$j]=count(tables_list());}return$J;}function
table_status($B=""){static$Fd;if($Fd===null)$Fd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
relname AS \"Name\",
CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($Fd?",
pg_table_size(oid) AS \"Data_length\",
pg_indexes_size(oid) AS \"Index_length\"":"").",
obj_description(oid, 'pg_class') AS \"Comment\",
".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
reltuples as \"Rows\",
inhparent AS inherited,
current_schema() AS nspname
FROM pg_class
LEFT JOIN pg_inherits ON inhrelid = oid
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
AND relnamespace = ".driver()->nsOid."
".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return
in_array($S["Engine"],array("view","materialized view"));}function
fk_support($S){return
true;}function
fields($R){$J=array();$ra=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
a.attname AS field,
format_type(a.atttypid, a.atttypmod) AS full_type,
pg_get_expr(d.adbin, d.adrelid) AS default,
a.attnotnull::int,
col_description(a.attrelid, a.attnum) AS comment".(min_version(10)?",
a.attidentity".(min_version(12)?",
a.attgenerated":""):"")."
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = ".driver()->tableOid($R)."
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$A);list(,$U,$y,$K["length"],$ka,$va)=$A;$K["length"].=$va;$Ya=$U.$ka;if(isset($ra[$Ya])){$K["type"]=$ra[$Ya];$K["full_type"]=$K["type"].$y.$va;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$y.$ka.$va;}if(in_array($K['attidentity'],array('a','d')))$K['default']='GENERATED '.($K['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$K["generated"]=($K["attgenerated"]=="s"?"STORED":"");$K["null"]=!$K["attnotnull"];$K["auto_increment"]=$K['attidentity']||preg_match('~^nextval\(~i',$K["default"])||preg_match('~^unique_rowid\(~',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$A))$K["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$J[$K["field"]]=$K;}return$J;}function
indexes($R,$g=null){$g=connection($g);$J=array();$wi=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $wi AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial, pg_am.amname as algorithm, pg_get_expr(pg_index.indpred, pg_index.indrelid, true) AS partial
FROM pg_index
JOIN pg_class ON indexrelid = oid
JOIN pg_am ON pg_am.oid = pg_class.relam
WHERE indrelid = $wi
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$nh=$K["relname"];$J[$nh]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$nh]["columns"]=array();$J[$nh]["descs"]=array();$J[$nh]["algorithm"]=$K["algorithm"];$J[$nh]["partial"]=$K["partial"];if($K["indkey"]){foreach(explode(" ",$K["indkey"])as$ee)$J[$nh]["columns"][]=$e[$ee];foreach(explode(" ",$K["indoption"])as$fe)$J[$nh]["descs"][]=(intval($fe)&1?'1':null);}$J[$nh]["lengths"]=array();}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = ".driver()->tableOid($R)."
AND contype = 'f'::char
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$A)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$We)){$K['ns']=idf_unescape($We[2]);$K['table']=idf_unescape($We[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$A[4],$We)?$We[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$A[4],$We)?$We[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
view($B){return
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($B).")")));}function
collations(){return
array();}function
information_schema($j){return
get_schema()=="information_schema";}function
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$A))$J=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1\2',$A[2]).$A[4];return
nl_br($J);}function
create_database($j,$c){return
queries("CREATE DATABASE ".idf_escape($j).($c?" ENCODING ".idf_escape($c):""));}function
drop_databases($i){connection()->close();return
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
rename_database($B,$c){connection()->close();return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
auto_increment(){return"";}function
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$b=array();$ah=array();if($R!=""&&$R!=$B)$ah[]="ALTER TABLE ".table($R)." RENAME TO ".table($B);$Nh="";foreach($n
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$Aj=$X[5];unset($X[5]);if($m[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":" ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$ah[]="ALTER TABLE ".table($B)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Oh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($Oh).")":"DROP DEFAULT"));if(isset($X[6]))$Nh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Oh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$Aj!="")$ah[]="COMMENT ON COLUMN ".table($B).".$X[0] IS ".($Aj!=""?substr($Aj,9):"''");}}$b=array_merge($b,$jd);if($R==""){$P="";if($E){$eb=(connection()->flavor=='cockroach');$P=" PARTITION BY $E[partition_by]($E[partition])";if($E["partition_by"]=='HASH'){$zg=+$E["partitions"];for($s=0;$s<$zg;$s++)$ah[]="CREATE TABLE ".idf_escape($B."_$s")." PARTITION OF ".idf_escape($B)." FOR VALUES WITH (MODULUS $zg, REMAINDER $s)";}else{$Qg="MINVALUE";foreach($E["partition_names"]as$s=>$X){$Y=$E["partition_values"][$s];$vg=" VALUES ".($E["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Qg) TO ($Y)");if($eb)$P
.=($s?",":" (")."\n PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$vg";else$ah[]="CREATE TABLE ".idf_escape($B."_$X")." PARTITION OF ".idf_escape($B)." FOR$vg";$Qg=$Y;}$P
.=($eb?"\n)":"");}}array_unshift($ah,"CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($ah,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Nh)array_unshift($ah,$Nh);if($ob!==null)$ah[]="COMMENT ON TABLE ".table($B)." IS ".q($ob);foreach($ah
as$H){if(!queries($H))return
false;}return
true;}function
alter_indexes($R,$b){$h=array();$ic=array();$ah=array();foreach($b
as$X){if($X[0]!="INDEX")$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$ic[]=idf_escape($X[1]);else$ah[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R).($X[3]?" USING $X[3]":"")." (".implode(", ",$X[2]).")".($X[4]?" WHERE $X[4]":"");}if($h)array_unshift($ah,"ALTER TABLE ".table($R).implode(",",$h));if($ic)array_unshift($ah,"DROP INDEX ".implode(", ",$ic));foreach($ah
as$H){if(!queries($H))return
false;}return
true;}function
truncate_tables($T){return
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function
drop_views($Gj){return
drop_tables($Gj);}function
drop_tables($T){foreach($T
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
false;}return
true;}function
move_tables($T,$Gj,$Di){foreach(array_merge($T,$Gj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Di)))return
false;}return
true;}function
trigger($B,$R){if($B=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($B);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement"
FROM information_schema.triggers'."
$Z
ORDER BY event_manipulation DESC")as$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$cj=trigger($K["trigger_name"],$R);$J[$cj["Trigger"]]=array($cj["Timing"],$cj["Event"]);}return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
routine($B,$U){$L=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
FROM information_schema.routines
WHERE routine_schema = current_schema() AND specific_name = '.q($B));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = '.q($B).'
ORDER BY ordinal_position');return$J;}function
routines(){return
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
FROM information_schema.routines
WHERE routine_schema = current_schema()
ORDER BY SPECIFIC_NAME');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($B,$K){$J=array();foreach($K["fields"]as$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
idf_escape($B)."(".implode(", ",$J).")";}function
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
explain($f,$H){return$f->query("EXPLAIN $H");}function
found_rows($S,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$mh))return$mh[1];}function
types(){return
get_key_vals("SELECT oid, typname
FROM pg_type
WHERE typnamespace = ".driver()->nsOid."
AND typtype IN ('b','d','e')
AND typelem = 0");}function
type_values($t){$Cc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($Cc?"'".implode("', '",array_map('addslashes',$Cc))."'":"");}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){return
get_val("SELECT current_schema()");}function
set_schema($Bh,$g=null){if(!$g)$g=connection();$J=$g->query("SET search_path TO ".idf_escape($Bh));driver()->setUserTypes(types());return$J;}function
foreign_keys_sql($R){$J="";$P=table_status1($R);$fd=foreign_keys($R);ksort($fd);foreach($fd
as$ed=>$dd)$J
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($ed)." $dd[definition] ".($dd['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
create_sql($R,$_a,$ni){$sh=array();$Ph=array();$P=table_status1($R);if(is_view($P)){$Fj=view($R);return
rtrim("CREATE VIEW ".idf_escape($R)." AS $Fj[select]",";");}$n=fields($R);if(count($P)<2||empty($n))return
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($n
as$m){$tg=idf_escape($m['field']).' '.$m['full_type'].default_value($m).($m['null']?"":" NOT NULL");$sh[]=$tg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$Ye)){$Oh=$Ye[1];$ci=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Oh)):"SELECT * FROM $Oh"),null,"-- "));$Ph[]=($ni=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Oh;\n":"")."CREATE SEQUENCE $Oh INCREMENT $ci[increment_by] MINVALUE $ci[min_value] MAXVALUE $ci[max_value]".($_a&&$ci['last_value']?" START ".($ci["last_value"]+1):"")." CACHE $ci[cache_value];";}}if(!empty($Ph))$J=implode("\n\n",$Ph)."\n\n$J";$G="";foreach(indexes($R)as$ce=>$v){if($v['type']=='PRIMARY'){$G=$ce;$sh[]="CONSTRAINT ".idf_escape($ce)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$ub=>$wb)$sh[]="CONSTRAINT ".idf_escape($ub)." CHECK $wb";$J
.=implode(",\n ",$sh)."\n)";$vg=driver()->partitionsInfo($P['Name']);if($vg)$J
.="\nPARTITION BY $vg[partition_by]($vg[partition])";$J
.="\nWITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J
.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($n
as$Xc=>$m){if($m['comment'])$J
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Xc)." IS ".q($m['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($G?" AND indexname != ".q($G):""),null,"-- ")as$K)$J
.="\n\n$K[indexdef];";return
rtrim($J,';');}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$bj=>$aj){$cj=trigger($bj,$P['Name']);$J
.="\nCREATE TRIGGER ".idf_escape($cj['Trigger'])." $cj[Timing] $cj[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $cj[Type] $cj[Statement];;\n";}return$J;}function
use_sql($Nb){return"\connect ".idf_escape($Nb);}function
show_variables(){return
get_rows("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$Vc);}function
kill_process($X){return
queries("SELECT pg_terminate_backend(".number($X).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){return
get_val("SHOW max_connections");}}add_driver("oracle","Oracle (beta)");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="oci8";var$_current_db;private$link;function
_error($Dc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
attach($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$l=oci_error();return$l["message"];}function
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
select_db($Nb){$this->_current_db=$Nb;return
true;}function
query($H,$jj=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["message"];return
false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
new
Result($I);$this->affected_rows=oci_num_rows($I);oci_free_statement($I);}return$J;}}class
Result{var$num_rows;private$result,$offset=1;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$x]=$X->load();}return$K;}function
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
Db
extends
PdoDb{var$extension="PDO_OCI";var$_current_db;function
attach($N,$V,$F){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);}function
select_db($Nb){$this->_current_db=$Nb;return
true;}}}class
Driver
extends
SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
begin(){return
true;}function
insertUpdate($R,array$L,array$G){foreach($L
as$O){$rj=array();$Z=array();foreach($O
as$x=>$X){$rj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$rj)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
hasCStyleEscapes(){return
true;}}function
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
table($u){return
idf_escape($u);}function
get_databases($hd){return
get_vals("SELECT DISTINCT tablespace_name FROM (
SELECT tablespace_name FROM user_tablespaces
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
)
ORDER BY 1");}function
limit($H,$Z,$z,$C=0,$Mh=" "){return($C?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$C).") WHERE rnum > $C":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$C):" $H$Z"));}function
limit1($R,$H,$Z,$Mh="\n"){return" $H$Z";}function
db_collation($j,$jb){return
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
logged_user(){return
get_val("SELECT USER FROM DUAL");}function
get_current_db(){$j=connection()->_current_db?:DB;unset(connection()->_current_db);return$j;}function
where_owner($Og,$ng="owner"){if(!$_GET["ns"])return'';return"$Og$ng = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$ng=where_owner('');return"(SELECT $e FROM all_views WHERE ".($ng?:"rownum < 0").")";}function
tables_list(){$Fj=views_table("view_name");$ng=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$ng
UNION SELECT view_name, 'view' FROM $Fj
ORDER BY 1");}function
count_tables($i){$J=array();foreach($i
as$j)$J[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$J;}function
table_status($B=""){$J=array();$Fh=q($B);$j=get_current_db();$Fj=views_table("view_name");$ng=where_owner(" AND ");foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q($j).$ng.($B!=""?" AND table_name = $Fh":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $Fj".($B!=""?" WHERE view_name = $Fh":"")."
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return
true;}function
fields($R){$J=array();$ng=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$ng ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$y="$K[DATA_PRECISION],$K[DATA_SCALE]";if($y==",")$y=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$J;}function
indexes($R,$g=null){$J=array();$ng=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
FROM all_ind_columns aic
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
WHERE aic.table_name = ".q($R)."$ng
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$ce=$K["INDEX_NAME"];$lb=$K["DATA_DEFAULT"];$lb=($lb?trim($lb,'"'):$K["COLUMN_NAME"]);$J[$ce]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$ce]["columns"][]=$lb;$J[$ce]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$ce]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
view($B){$Fj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Fj.' WHERE view_name = '.q($B));return
reset($L);}function
collations(){return
array();}function
information_schema($j){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
h(connection()->error);}function
explain($f,$H){$f->query("EXPLAIN PLAN FOR $H");return$f->query("SELECT * FROM plan_table");}function
found_rows($S,$Z){}function
auto_increment(){return"";}function
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$b=$ic=array();$gg=($R?fields($R):array());foreach($n
as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$fg=$gg[$m[0]];if($X&&$fg){$Jf=process_field($fg,$fg);if($X[2]==$Jf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$ic[]=idf_escape($m[0]);}if($R=="")return
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$ic||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$ic).")"))&&($R==$B||queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)));}function
alter_indexes($R,$b){$ic=array();$ah=array();foreach($b
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($ah,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$ic[]=idf_escape($X[1]);else$ah[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($ic)array_unshift($ah,"DROP INDEX ".implode(", ",$ic));foreach($ah
as$H){if(!queries($H))return
false;}return
true;}function
foreign_keys($R){$J=array();$H="SELECT c_list.CONSTRAINT_NAME as NAME,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.OWNER as DEST_DB,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN,
c_list.DELETE_RULE as ON_DELETE
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = 'R'
AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Gj){return
apply_queries("DROP VIEW",$Gj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
last_id($I){return
0;}function
schemas(){$J=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($J?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
get_schema(){return
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
set_schema($Dh,$g=null){if(!$g)$g=connection();return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Dh));}function
show_variables(){return
get_rows('SELECT name, display_value FROM v$parameter');}function
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$x=>$X)$J[]=array($x,$X);return$J;}function
process_list(){return
get_rows('SELECT
sess.process AS "process",
sess.username AS "user",
sess.schemaname AS "schema",
sess.status AS "status",
sess.wait_class AS "wait_class",
sess.seconds_in_wait AS "seconds_in_wait",
sql.sql_text AS "sql_text",
sess.machine AS "machine",
sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \'USER\'
ORDER BY PROCESS
');}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Vc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="sqlsrv";private$link,$result;private
function
get_error(){$this->error="";foreach(sqlsrv_errors()as$l){$this->errno=$l["code"];$this->error
.="$l[message]\n";}$this->error=rtrim($this->error);}function
attach($N,$V,$F){$vb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$ii=adminer()->connectSsl();if(isset($ii["Encrypt"]))$vb["Encrypt"]=$ii["Encrypt"];if(isset($ii["TrustServerCertificate"]))$vb["TrustServerCertificate"]=$ii["TrustServerCertificate"];$j=adminer()->database();if($j!="")$vb["Database"]=$j;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$N),$vb);if($this->link){$ge=sqlsrv_server_info($this->link);$this->server_info=$ge['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
quote($Q){$kj=strlen($Q)!=strlen(utf8_decode($Q));return($kj?"N":"")."'".str_replace("'","''",$Q)."'";}function
select_db($Nb){return$this->query(use_sql($Nb));}function
query($H,$jj=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
false;}return$this->store_result($I);}function
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
false;}return
true;}function
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
false;if(sqlsrv_field_metadata($I))return
new
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
true;}function
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
Result{var$num_rows;private$result,$offset=0,$fields;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$x=>$X){if(is_a($X,'DateTime'))$K[$x]=$X->format("Y-m-d H:i:s");}return$K;}function
fetch_assoc(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_ASSOC));}function
fetch_row(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_NUMERIC));}function
fetch_field(){if(!$this->fields)$this->fields=sqlsrv_field_metadata($this->result);$m=$this->fields[$this->offset++];$J=new
\stdClass;$J->name=$m["Name"];$J->type=($m["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
seek($C){for($s=0;$s<$C;$s++)sqlsrv_fetch($this->result);}function
__destruct(){sqlsrv_free_stmt($this->result);}}function
last_id($I){return
get_val("SELECT SCOPE_IDENTITY()");}function
explain($f,$H){$f->query("SET SHOWPLAN_ALL ON");$J=$f->query($H);$f->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
class
MssqlDb
extends
PdoDb{function
select_db($Nb){return$this->query(use_sql($Nb));}function
lastInsertId(){return$this->pdo->lastInsertId();}}function
last_id($I){return
connection()->lastInsertId();}function
explain($f,$H){}if(extension_loaded("pdo_sqlsrv")){class
Db
extends
MssqlDb{var$extension="PDO_SQLSRV";function
attach($N,$V,$F){return$this->dsn("sqlsrv:Server=".str_replace(":",",",$N),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
Db
extends
MssqlDb{var$extension="PDO_DBLIB";function
attach($N,$V,$F){return$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);}}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
function
connect($N,$V,$F){if($N=="")$N="localhost:1433";return
parent::connect($N,$V,$F);}function
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
insertUpdate($R,array$L,array$G){$n=fields($R);$rj=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Pa=0;$me=array();foreach($O
as$x=>$X){$Pa++;$B=idf_unescape($x);if(!$n[$B]["auto_increment"])$me[$x]="c$Pa";if(isset($G[$B]))$Z[]="$x = c$Pa";else$rj[]="$x = c$Pa";}$Bj=array();foreach($L
as$O)$Bj[]="(".implode(", ",$O).")";if($Z){$Rd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Bj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($rj?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$rj):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Rd?$O:$me)).") VALUES (".($Rd?$e:implode(", ",$me)).");");if($Rd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Bj));return$J;}function
begin(){return
queries("BEGIN TRANSACTION");}function
tableHelp($B,$xe=false){$Qe=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Qe[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($B))."-transact-sql";}}function
idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
get_databases($hd){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($H,$Z,$z,$C=0,$Mh=" "){return($z?" TOP (".($z+$C).")":"")." $H$Z";}function
limit1($R,$H,$Z,$Mh="\n"){return
limit($H,$Z,1,0,$Mh);}function
db_collation($j,$jb){return
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function
logged_user(){return
get_val("SELECT SUSER_NAME()");}function
tables_list(){return
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
count_tables($i){$J=array();foreach($i
as$j){connection()->select_db($j);$J[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
table_status($B=""){$J=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment
FROM sys.all_objects AS ao
WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="VIEW";}function
fk_support($S){return
true;}function
fields($R){$qb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$ui=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($R));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, d.definition [default], d.name default_constraint, i.is_primary_key
FROM sys.all_columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE c.object_id = ".q($ui))as$K){$U=$K["type"];$y=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($y?"($y)":""),"type"=>$U,"length"=>$y,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$A)?str_replace("''","'",$A[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$qb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($ui))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
indexes($R,$g=null){$J=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE OBJECT_NAME(i.object_id) = ".q($R),$g)as$K){$B=$K["name"];$J[$B]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$B]["lengths"]=array();$J[$B]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$B]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($B))));}function
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
information_schema($j){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
create_database($j,$c){return
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
drop_databases($i){return
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
rename_database($B,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($B));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($R,$B,$n,$jd,$ob,$yc,$c,$_a,$E){$b=array();$qb=array();$gg=fields($R);foreach($n
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$qb[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($jd[$X[0]],16+strlen($X[0])):"");else{$k=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$fg=$gg[$m[0]];if(default_value($fg)!=$k){if($fg["default"]!==null)$b["DROP"][]=" ".idf_escape($fg["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
queries("CREATE TABLE ".table($B)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$B)queries("EXEC sp_rename ".q(table($R)).", ".q($B));if($jd)$b[""]=$jd;foreach($b
as$x=>$X){if(!queries("ALTER TABLE ".table($B)." $x".implode(",",$X)))return
false;}foreach($qb
as$x=>$X){$ob=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($B).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = $ob,
@level0type = N'Schema',
@level0name = ".q(get_schema()).",
@level1type = N'Table',
@level1name = ".q($B).",
@level2type = N'Column',
@level2name = ".q($x));}return
true;}function
alter_indexes($R,$b){$v=array();$ic=array();foreach($b
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$ic[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$ic||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$ic)));}function
found_rows($S,$Z){}function
foreign_keys($R){$J=array();$Qf=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q(get_schema()))as$K){$p=&$J[$K["FK_NAME"]];$p["db"]=$K["PKTABLE_QUALIFIER"];$p["ns"]=$K["PKTABLE_OWNER"];$p["table"]=$K["PKTABLE_NAME"];$p["on_update"]=$Qf[$K["UPDATE_RULE"]];$p["on_delete"]=$Qf[$K["DELETE_RULE"]];$p["source"][]=$K["FKCOLUMN_NAME"];$p["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Gj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Gj)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$Gj,$Di){return
apply_queries("ALTER SCHEMA ".idf_escape($Di)." TRANSFER",array_merge($T,$Gj));}function
trigger($B,$R){if($B=="")return
array();$L=get_rows("SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
WHERE s.xtype = 'TR' AND s.name = ".q($B));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
triggers($R){$J=array();foreach(get_rows("SELECT sys1.name,
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
schemas(){return
get_vals("SELECT name FROM sys.schemas");}function
get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return
get_val("SELECT SCHEMA_NAME()");}function
set_schema($Bh){$_GET["ns"]=$Bh;return
true;}function
create_sql($R,$_a,$ni){if(is_view(table_status1($R))){$Fj=view($R);return"CREATE VIEW ".table($R)." AS $Fj[select]";}$n=array();$G=false;foreach(fields($R)as$B=>$m){$X=process_field($m,$m);if($X[6])$G=true;$n[]=implode("",$X);}foreach(indexes($R)as$B=>$v){if(!$G||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$B=idf_escape($B);$n[]=($v["type"]=="INDEX"?"INDEX $B":"CONSTRAINT $B ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$B=>$Wa)$n[]="CONSTRAINT ".idf_escape($B)." CHECK ($Wa)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$jd)$n[]=ltrim(format_foreign_key($jd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
use_sql($Nb){return"USE ".idf_escape($Nb);}function
trigger_sql($R){$J="";foreach(triggers($R)as$B=>$cj)$J
.=create_trigger(" ON ".table($R),trigger($B,$R)).";";return$J;}function
convert_field($m){}function
unconvert_field($m,$J){return$J;}function
support($Vc){return
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Vc);}}class
Adminer{static$instance;var$error='';function
name(){return"
Adminer";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($h=false){return
password_file($h);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($N){return
h($N);}function
database(){return
DB;}function
databases($hd=true){return
get_databases($hd);}function
pluginsLinks(){}function
operators(){return
driver()->operators;}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(array$Gb){return$Gb;}function
head($Kb=null){return
true;}function
bodyClass(){echo" adminer";}function
css(){$J=array();foreach(array("","-dark")as$qf){$o="adminer$qf.css";if(file_exists($o)){$Zc=file_get_contents($o);$J["$o?v=".crc32($Zc)]=($qf?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$Zc)?'':'light'));}}return$J;}function
loginForm(){echo"\n",adminer()->loginFormField('driver','| '.'System'.' | ',html_select("auth[driver]",SqlDriver::$drivers,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server',' |
|---|
| '.'Server'.' | ',''),adminer()->loginFormField('username',' |
|---|
| '.'Username'.' | ',''.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password',' |
|---|
| '.'Password'.' | ',''),adminer()->loginFormField('db',' |
|---|
| '.'Database'.' | ','')," |
|---|
\n","\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
loginFormField($B,$Hd,$Y){return$Hd.$Y."\n";}function
login($Se,$F){if($F=="")return
sprintf('Adminer does not support accessing a database without a password, more information.',target_blank());return
true;}function
tableName(array$ti){return
h($ti["Name"]);}function
fieldName(array$m,$Zf=0){$U=$m["full_type"];$ob=$m["comment"];return''.h($m["field"]).'';}function
selectLinks(array$ti,$O=""){$B=$ti["Name"];echo'
';$Qe=array("select"=>'Select data');if(support("table")||support("indexes"))$Qe["table"]='Show structure';$xe=false;if(support("table")){$xe=is_view($ti);if($xe)$Qe["view"]='Alter view';else$Qe["create"]='Alter table';}if($O!==null)$Qe["edit"]='New item';foreach($Qe
as$x=>$X)echo" $X";echo
doc_link(array(JUSH=>driver()->tableHelp($B,$xe)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$si){return
array();}function
backwardKeysPrint(array$Da,array$K){}function
selectQuery($H,$ji,$Tc=false){$J="
\n";if(!$Tc&&($Jj=driver()->warnings())){$t="warnings";$J=", ".'Warnings'."".script("qsl('a').onclick = partial(toggle, '$t');","")."$J\n$Jj
\n";}return"".h(str_replace("\n"," ",$H))." (".format_time($ji).")".(support("sql")?" ".'Edit'."":"").$J;}function
sqlCommandQuery($H){return
shorten_utf8(trim($H),1000);}function
sqlPrintAfter(){}function
rowDescription($R){return"";}function
rowDescriptions(array$L,array$kd){return$L;}function
selectLink($X,array$m){}function
selectVal($X,$_,array$m,$jg){$J=($X===null?"NULL":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"$X":(preg_match('~json~',$m["type"])?"$X":$X)));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$J="".lang_format(array('%d byte','%d bytes'),strlen($jg))."";return($_?"$J":$J);}function
editVal($X,array$m){return$X;}function
config(){return
array();}function
tableStructurePrint(array$n,$ti=null){echo"
\n";}function
tableIndexesPrint(array$w,array$ti){$ug=false;foreach($w
as$B=>$v)$ug|=!!$v["partial"];echo"\n";$Sb=first(driver()->indexAlgorithms($ti));foreach($w
as$B=>$v){ksort($v["columns"]);$Sg=array();foreach($v["columns"]as$x=>$X)$Sg[]="".h($X)."".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"","| $v[type]".($Sb&&$v['algorithm']!=$Sb?" ($v[algorithm])":"")," | ".implode(", ",$Sg);if($ug)echo" | ".($v['partial']?"WHERE ".h($v['partial']):"");echo"\n";}echo" |
\n";}function
selectColumnsPrint(array$M,array$e){print_fieldset("select",'Select',$M);$s=0;$M[""]=array();foreach($M
as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($x!==""?"selectFieldChange":"selectAddRow"));echo"".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array('Functions'=>driver()->functions,'Aggregation'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."
\n";$s++;}echo"\n";}function
selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",'Search',$Z);foreach($w
as$s=>$v){if($v["type"]=="FULLTEXT")echo"(".implode(", ",array_map('Adminer\h',$v["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"
\n";}$Ta="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$s][op]",adminer()->operators(),$X["op"],$Ta),"",script("mixin(qsl('input'), {oninput: function () { $Ta }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function
selectOrderPrint(array$Zf,array$e,array$w){print_fieldset("sort",'Sort',$Zf);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),'descending')."
\n";$s++;}}echo"".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",1,false,'descending')."
\n","\n";}function
selectLimitPrint($z){echo"\n";}function
selectLengthPrint($Ji){if($Ji!==null)echo"\n";}function
selectActionPrint(array$w){echo"\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint(array$vc,array$e){}function
selectColumnsProcess(array$e,array$w){$M=array();$wd=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$wd[]=$M[$x];}}return
array($M,$wd);}function
selectSearchProcess(array$n,array$w){$J=array();foreach($w
as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){$hb=$X["col"];if("$hb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$sb=array();foreach(($hb!=""?array($hb=>$n[$hb]):$n)as$B=>$m){$Og="";$rb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Wd=process_length($X["val"]);$rb
.=" ".($Wd!=""?$Wd:"(NULL)");}elseif($X["op"]=="SQL")$rb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$rb=" $A[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Og="$X[op](".q($X["val"]).", ";$rb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$rb
.=" ".adminer()->processInput($m,$X["val"]);if($hb!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$sb[]=$Og.driver()->convertSearch(idf_escape($B),$X,$m).$rb;}$J[]=(count($sb)==1?$sb[0]:($sb?"(".implode(" OR ",$sb).")":"1 = 0"));}}return$J;}function
selectOrderProcess(array$n,array$w){$J=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC":"");}return$J;}function
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function
selectEmailProcess(array$Z,array$kd){return
false;}function
selectQueryBuild(array$M,array$Z,array$wd,array$Zf,$z,$D){return"";}function
messageQuery($H,$Ki,$Tc=false){restart_session();$Jd=&get_session("queries");if(!idx($Jd,$_GET["db"]))$Jd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Jd[$_GET["db"]][]=array($H,time(),$Ki);$fi="sql-".count($Jd[$_GET["db"]]);$J="".'SQL command'."\n";if(!$Tc&&($Jj=driver()->warnings())){$t="warnings-".count($Jd[$_GET["db"]]);$J="".'Warnings'.", $J\n$Jj
\n";}return" ".@date("H:i:s").""." $J".shorten_utf8($H,1000)."
".($Ki?"
($Ki)":'').(support("sql")?'
'.'Edit'.'':'').'
';}function
editRowPrint($R,array$n,$K,$rj){}function
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$rj=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$rd){if(!$x||(!isset($_GET["call"])&&$rj)){foreach($rd
as$Cg=>$X){if(!$Cg||preg_match("~$Cg~",$m["type"]))$J
.="/$X";}}if($x&&$rd&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$J
.="/SQL";}if($m["auto_increment"]&&!$rj)$J='Auto Increment';return
explode("/",$J);}function
editInput($R,array$m,$ya,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").($m["null"]?" ":"").enum_input("radio",$ya,$m,$Y,$Y===0?0:null);return"";}function
editHint($R,array$m,$Y){return"";}function
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$B=$m["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$J="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$J=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$J=idf_escape($B)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($B)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($B).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$J="$r($J)";return
unconvert_field($m,$J);}function
dumpOutput(){$J=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($j){}function
dumpTable($R,$ni,$xe=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($ni)dump_csv(array_keys(fields($R)));}else{if($xe==2){$n=array();foreach(fields($R)as$B=>$m)$n[]=idf_escape($B)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$ni);set_utf8mb4($h);if($ni&&$h){if($ni=="DROP+CREATE"||$xe==1)echo"DROP ".($xe==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($xe==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
dumpData($R,$ni,$H){if($ni){$af=(JUSH=="sqlite"?0:1048576);$n=array();$Sd=false;if($_POST["format"]=="sql"){if($ni=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n
as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Sd=true;break;}}}}$I=connection()->query($H,1);if($I){$me="";$Na="";$Be=array();$sd=array();$pi="";$Wc=($R!=''?'fetch_assoc':'fetch_row');$Cb=0;while($K=$I->$Wc()){if(!$Be){$Bj=array();foreach($K
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$sd[$m->name]=true;continue;}$Be[]=$m->name;$x=idf_escape($m->name);$Bj[]="$x = VALUES($x)";}$pi=($ni=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Bj):"").";\n";}if($_POST["format"]!="sql"){if($ni=="table"){dump_csv($Be);$ni="INSERT";}dump_csv($K);}else{if(!$me)$me="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Be)).") VALUES";foreach($K
as$x=>$X){if($sd[$x]){unset($K[$x]);continue;}$m=$n[$x];$K[$x]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$_h=($af?"\n":" ")."(".implode(",\t",$K).")";if(!$Na)$Na=$me.$_h;elseif(JUSH=='mssql'?$Cb%1000!=0:strlen($Na)+4+strlen($_h)+strlen($pi)<$af)$Na
.=",$_h";else{echo$Na.$pi;$Na=$me.$_h;}}$Cb++;}if($Na)echo$Na.$pi;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Sd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($Qd){return
friendly_url($Qd!=""?$Qd:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($Qd,$sf=false){$mg=$_POST["output"];$Oc=(preg_match('~sql~',$_POST["format"])?"sql":($sf?"tar":"csv"));header("Content-Type: ".($mg=="gz"?"application/x-gzip":($Oc=="tar"?"application/x-tar":($Oc=="sql"||$mg!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($mg=="gz"){ob_start(function($Q){return
gzencode($Q);},1e6);}return$Oc;}function
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
importServerPath(){return"adminer.sql";}function
homepage(){echo''.($_GET["ns"]==""&&support("database")?''.'Alter database'."\n":""),(support("scheme")?"".($_GET["ns"]!=""?'Alter schema':'Create schema')."\n":""),($_GET["ns"]!==""?''.'Database schema'."\n":""),(support("privileges")?"".'Privileges'."\n":"");return
true;}function
navigation($pf){echo"
\n";if($pf=="auth"){$mg="";foreach((array)$_SESSION["pwds"]as$Dj=>$Rh){foreach($Rh
as$N=>$zj){$B=h(get_setting("vendor-$Dj-$N")?:get_driver($Dj));foreach($zj
as$V=>$F){if($F!==null){$Qb=$_SESSION["db"][$Dj][$N][$V];foreach(($Qb?array_keys($Qb):array(""))as$j)$mg
.="($B) ".h($V.($N!=""?"@".adminer()->serverName($N):"").($j!=""?" - $j":""))."\n";}}}}if($mg)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$pf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($pf);$ia=array();if(DB==""||!$pf){if(support("sql")){$ia[]="".'SQL command'."";$ia[]="".'Import'."";}$ia[]="".'Export'."";}$Xd=$_GET["ns"]!==""&&!$pf&&DB!="";if($Xd)$ia[]='".'Create table'."";echo($ia?"\n".implode("\n",$ia)."\n":"");if($Xd){if($T)adminer()->tablesPrint($T);else
echo"
".'No tables.'."
\n";}}}function
syntaxHighlighting(array$T){echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.3.0",true);if(support("sql")){echo"\n";}echo
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
databasesPrint($pf){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"\n";}function
tablesPrint(array$T){echo"".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["inherited"])echo'- ".'select'." ",(support("table")||support("indexes")?'$B":"$B")."\n";}echo"
\n";}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
__construct($Hg){if($Hg===null){$Hg=array();$Ha="adminer-plugins";if(is_dir($Ha)){foreach(glob("$Ha/*.php")as$o)$Yd=include_once"./$o";}$Id=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ha.php")){$Yd=include_once"./$Ha.php";if(is_array($Yd)){foreach($Yd
as$Gg)$Hg[get_class($Gg)]=$Gg;}else$this->error
.=sprintf('%s must return an array.',"$Ha.php",$Id)."
";}foreach(get_declared_classes()as$db){if(!$Hg[$db]&&preg_match('~^Adminer\w~i',$db)){$kh=new
\ReflectionClass($db);$xb=$kh->getConstructor();if($xb&&$xb->getNumberOfRequiredParameters())$this->error
.=sprintf('Configure %s in %s.',$Id,"$db","$Ha.php")."
";else$Hg[$db]=new$db;}}}$this->plugins=$Hg;$la=new
Adminer;$Hg[]=$la;$kh=new
\ReflectionObject($la);foreach($kh->getMethods()as$nf){foreach($Hg
as$Gg){$B=$nf->getName();if(method_exists($Gg,$B))$this->hooks[$B][]=$Gg;}}}function
__call($B,array$rg){$ua=array();foreach($rg
as$x=>$X)$ua[]=&$rg[$x];$J=null;foreach($this->hooks[$B]as$Gg){$Y=call_user_func_array(array($Gg,$B),$ua);if($Y!==null){if(!self::$append[$B])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($u,$Ff=null){$ua=func_get_args();$ua[0]=idx($this->translations[LANG],$u)?:$u;return
call_user_func_array('Adminer\lang_format',$ua);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
Plugins(null):new
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
Db
extends
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
__construct(){parent::init();}function
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Md,$Ig)=explode(":",$N,2);$ii=adminer()->connectSsl();if($ii)$this->ssl_set($ii['key'],$ii['cert'],$ii['ca'],'','');$J=@$this->real_connect(($N!=""?$Md:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($Ig)?intval($Ig):ini_get("mysqli.default_port")),(is_numeric($Ig)?null:$Ig),($ii?($ii['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($J?'':$this->error);}function
set_charset($Va){if(parent::set_charset($Va))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Va");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db
extends
SqlDb{private$link;function
attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return
sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
set_charset($Va){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Va,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Va");}function
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
select_db($Nb){return
mysql_select_db($Nb,$this->link);}function
query($H,$jj=false){$I=@($jj?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($I);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($N,$V,$F){$Xf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$ii=adminer()->connectSsl();if($ii){if($ii['key'])$Xf[\PDO::MYSQL_ATTR_SSL_KEY]=$ii['key'];if($ii['cert'])$Xf[\PDO::MYSQL_ATTR_SSL_CERT]=$ii['cert'];if($ii['ca'])$Xf[\PDO::MYSQL_ATTR_SSL_CA]=$ii['ca'];if(isset($ii['verify']))$Xf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$ii['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$Xf);}function
set_charset($Va){return$this->query("SET NAMES $Va");}function
select_db($Nb){return$this->query("USE ".idf_escape($Nb));}function
query($H,$jj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$jj);return
parent::query($H,$jj);}}}class
Driver
extends
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($_h=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$_h;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types['Strings']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Strings']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Numbers']["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"GeomFromText":"")));}function
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$Og="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Bj=array();foreach($e
as$x)$Bj[$x]="$x = VALUES($x)";$pi="\nON DUPLICATE KEY UPDATE ".implode(", ",$Bj);$Bj=array();$y=0;foreach($L
as$O){$Y="(".implode(", ",$O).")";if($Bj&&(strlen($Og)+$y+strlen($Y)+strlen($pi)>1e6)){if(!queries($Og.implode(",\n",$Bj).$pi))return
false;$Bj=array();$y=0;}$Bj[]=$Y;$y+=strlen($Y)+2;}return
queries($Og.implode(",\n",$Bj).$pi);}function
slowQuery($H,$Li){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Li FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Li*1000).") */ $A[2]";}}function
convertSearch($u,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u);}function
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
ob_get_clean();}}function
tableHelp($B,$xe=false){$Ue=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($Ue?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ue?"mysql$B-table/":"system-schema.html");}function
partitionsInfo($R){$pd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $pd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$zg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $pd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($zg);$J["partition_values"]=array_values($zg);return$J;}function
hasCStyleEscapes(){static$Qa;if($Qa===null){$gi=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Qa=(strpos($gi,'NO_BACKSLASH_ESCAPES')===false);}return$Qa;}function
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
indexAlgorithms(array$ti){return(preg_match('~^(MEMORY|NDB)$~',$ti["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
table($u){return
idf_escape($u);}function
get_databases($hd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($hd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
limit($H,$Z,$z,$C=0,$Mh=" "){return" $H$Z".($z?$Mh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Mh="\n"){return
limit($H,$Z,1,0,$Mh);}function
db_collation($j,array$jb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$J=$jb[$A[1]][-1];return$J;}function
logged_user(){return
get_val("SELECT USER()");}function
tables_list(){return
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
count_tables(array$i){$J=array();foreach($i
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
table_status($B="",$Uc=false){$J=array();foreach(get_rows($Uc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")$K["Name"]=$B;$J[$K["Name"]]=$K;}return$J;}function
is_view(array$S){return$S["Engine"]===null;}function
fk_support(array$S){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
fields($R){$Ue=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$m=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$td=$K["GENERATION_EXPRESSION"];$Rc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Rc,$sd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Xe);$k=$K["COLUMN_DEFAULT"];if($k!=""){$we=preg_match('~text|json~',$Xe[1]);if(!$Ue&&$we)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($Ue||$we){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return
stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$Ue&&preg_match('~binary~',$Xe[1])&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Xe[1],"length"=>$Xe[2],"unsigned"=>ltrim($Xe[3].$Xe[4]),"default"=>($sd?($Ue?$td:stripslashes($td)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Rc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Rc,$A)?$A[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($sd[1]=="PERSISTENT"?"STORED":$sd[1]),);}return$J;}function
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;$J[$B]["algorithm"]=$K["Index_type"];}return$J;}function
foreign_keys($R){static$Cg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Db=get_val("SHOW CREATE TABLE ".table($R),1);if($Db){preg_match_all("~CONSTRAINT ($Cg) FOREIGN KEY ?\\(((?:$Cg,? ?)+)\\) REFERENCES ($Cg)(?:\\.($Cg))? \\(((?:$Cg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Db,$Ye,PREG_SET_ORDER);foreach($Ye
as$A){preg_match_all("~$Cg~",$A[2],$ai);preg_match_all("~$Cg~",$A[5],$Di);$J[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$ai[0]),"target"=>array_map('Adminer\idf_unescape',$Di[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
as$x=>$X)sort($J[$x]);return$J;}function
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($j,$c){return
queries("CREATE DATABASE ".idf_escape($j).($c?" COLLATE ".q($c):""));}function
drop_databases(array$i){$J=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
rename_database($B,$c){$J=false;if(create_database($B,$c)){$T=array();$Gj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Gj[]=$R;else$T[]=$R;}$J=(!$T&&!$Gj)||move_tables($T,$Gj,$B);drop_databases($J?array(DB):array());}return$J;}function
auto_increment(){$Aa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Aa="";break;}if($v["type"]=="PRIMARY")$Aa=" UNIQUE";}}return" AUTO_INCREMENT$Aa";}function
alter_table($R,$B,array$n,array$jd,$ob,$yc,$c,$_a,$E){$b=array();foreach($n
as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$jd);$P=($ob!==null?" COMMENT=".q($ob):"").($yc?" ENGINE=".q($yc):"").($c?" COLLATE ".q($c):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($E){$zg=array();if($E["partition_by"]=='RANGE'||$E["partition_by"]=='LIST'){foreach($E["partition_names"]as$x=>$X){$Y=$E["partition_values"][$x];$zg[]="\n PARTITION ".idf_escape($X)." VALUES ".($E["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P
.="\nPARTITION BY $E[partition_by]($E[partition])";if($zg)$P
.=" (".implode(",",$zg)."\n)";elseif($E["partitions"])$P
.=" PARTITIONS ".(+$E["partitions"]);}elseif($E===null)$P
.="\nREMOVE PARTITIONING";if($R=="")return
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function
alter_indexes($R,$b){$Ua=array();foreach($b
as$X)$Ua[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
queries("ALTER TABLE ".table($R).implode(",",$Ua));}function
truncate_tables(array$T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views(array$Gj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Gj)));}function
drop_tables(array$T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables(array$T,array$Gj,$Di){$oh=array();foreach($T
as$R)$oh[]=table($R)." TO ".idf_escape($Di).".".table($R);if(!$oh||queries("RENAME TABLE ".implode(", ",$oh))){$Wb=array();foreach($Gj
as$R)$Wb[table($R)]=view($R);connection()->select_db($Di);$j=idf_escape(DB);foreach($Wb
as$B=>$Fj){if(!queries("CREATE VIEW $B AS ".str_replace(" $j."," ",$Fj["select"]))||!queries("DROP VIEW $j.$B"))return
false;}return
true;}return
false;}function
copy_tables(array$T,array$Gj,$Di){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$B=($Di==DB?table("copy_$R"):idf_escape($Di).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$cj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Di==DB?idf_escape("copy_$cj"):idf_escape($Di).".".idf_escape($cj))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return
false;}}foreach($Gj
as$R){$B=($Di==DB?table("copy_$R"):idf_escape($Di).".".table($R));$Fj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Fj[select]"))return
false;}return
true;}function
trigger($B,$R){if($B=="")return
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
reset($L);}function
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($B,$U){$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$bi="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$_c=driver()->enumLength;$hj="((".implode("|",array_merge(array_keys(driver()->types()),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$_c)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Cg="$bi*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$hj";$h=get_val("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$Cg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$hj\\s+":"")."(.*)~is",$h,$A);$n=array();preg_match_all("~$Cg\\s*,?~is",$A[1],$Ye,PREG_SET_ORDER);foreach($Ye
as$qg)$n[]=array("field"=>str_replace("``","`",$qg[2]).$qg[3],"type"=>strtolower($qg[5]),"length"=>preg_replace_callback("~$_c~s",'Adminer\normalize_enum',$qg[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$qg[8] $qg[7]"))),"null"=>true,"full_type"=>$qg[4],"inout"=>strtoupper($qg[1]),"collation"=>strtolower($qg[9]),);return
array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($B)),)+($U!="FUNCTION"?array("definition"=>$A[11]):array("returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",));}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($B,array$K){return
idf_escape($B);}function
last_id($I){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$f,$H){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$_a,$ni){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$_a)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($Nb){return"USE ".idf_escape($Nb);}function
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
show_variables(){return
get_rows("SHOW VARIABLES");}function
show_status(){return
get_rows("SHOW STATUS");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function
unconvert_field(array$m,$J){if(preg_match("~binary~",$m["type"]))$J="UNHEX($J)";if($m["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$Og=(min_version(8)?"ST_":"");$J=$Og."GeomFromText($J, $Og"."SRID($m[field]))";}return$J;}function
support($Vc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Vc);}function
kill_process($X){return
queries("KILL ".number($X));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types(){return
array();}function
type_values($t){return"";}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($Bh,$g=null){return
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
page_header($Ni,$l="",$Ma=array(),$Oi=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Pi=$Ni.($Oi!=""?": $Oi":"");$Qi=strip_tags($Pi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'
',$Qi,'
';$Hb=adminer()->css();if(is_int(key($Hb)))$Hb=array_fill_keys($Hb,'light');$Ed=in_array('light',$Hb)||in_array('',$Hb);$Cd=in_array('dark',$Hb)||in_array('',$Hb);$Kb=($Ed?($Cd?null:false):($Cd?:null));$gf=" media='(prefers-color-scheme: dark)'";if($Kb!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.3.0");if(adminer()->head($Kb))echo"\n","\n";foreach($Hb
as$tj=>$qf){$ya=($qf=='dark'&&!$Kb?$gf:($qf=='light'&&$Cd?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\nbodyClass();echo"'>\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Ej=unserialize(file_get_contents($o));$Yg="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($Ej["version"],base64_decode($Ej["signature"]),$Yg)==1)$_COOKIE["adminer_version"]=$Ej["version"];}echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."});
document.body.classList.replace('nojs', 'js');
const offlineMessage = '".js_escape('You are offline.')."';
const thousandsSeparator = '".js_escape(',')."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"\n","".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ma!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'
'.get_driver(DRIVER).' » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:'Server');if($Ma===false)echo"$N\n";else{echo"$N » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ma)))echo''.h(DB).' » ';if(is_array($Ma)){if($_GET["ns"]!="")echo''.h($_GET["ns"]).' » ';foreach($Ma
as$x=>$X){$Yb=(is_array($X)?$X[1]:h($X));if($Yb!="")echo"$Yb » ";}}echo"$Ni\n";}}echo"
$Pi
\n","
\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Gb){$Gd=array();foreach($Gb
as$x=>$X)$Gd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Gd));}adminer()->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$Bf;if(!$Bf)$Bf=base64_encode(rand_string());return$Bf;}function
page_messages($l){$sj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$mf=idx($_SESSION["messages"],$sj);if($mf){echo"
".implode("
\n
",$mf)."
".script("messagesPrint();");unset($_SESSION["messages"][$sj]);}if($l)echo"
$l
\n";if(adminer()->error)echo"
".adminer()->error."
\n";}function
page_footer($pf=""){echo"
\n\n\n\n",script("setupSubmitHighlight(document);");}function
int32($uf){while($uf>=2147483648)$uf-=4294967296;while($uf<=-2147483649)$uf+=4294967296;return(int)$uf;}function
long2str(array$W,$Ij){$_h='';foreach($W
as$X)$_h
.=pack('V',$X);if($Ij)return
substr($_h,0,end($W));return$_h;}function
str2long($_h,$Ij){$W=array_values(unpack('V*',str_pad($_h,4*ceil(strlen($_h)/4),"\0")));if($Ij)$W[]=strlen($_h);return$W;}function
xxtea_mx($Pj,$Oj,$qi,$_e){return
int32((($Pj>>5&0x7FFFFFF)^$Oj<<2)+(($Oj>>3&0x1FFFFFFF)^$Pj<<4))^int32(($qi^$Oj)+($_e^$Pj));}function
encrypt_string($li,$x){if($li=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($li,true);$uf=count($W)-1;$Pj=$W[$uf];$Oj=$W[0];$Zg=floor(6+52/($uf+1));$qi=0;while($Zg-->0){$qi=int32($qi+0x9E3779B9);$pc=$qi>>2&3;for($og=0;$og<$uf;$og++){$Oj=$W[$og+1];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Pj=int32($W[$og]+$tf);$W[$og]=$Pj;}$Oj=$W[0];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Pj=int32($W[$uf]+$tf);$W[$uf]=$Pj;}return
long2str($W,false);}function
decrypt_string($li,$x){if($li=="")return"";if(!$x)return
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($li,false);$uf=count($W)-1;$Pj=$W[$uf];$Oj=$W[0];$Zg=floor(6+52/($uf+1));$qi=int32($Zg*0x9E3779B9);while($qi){$pc=$qi>>2&3;for($og=$uf;$og>0;$og--){$Pj=$W[$og-1];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Oj=int32($W[$og]-$tf);$W[$og]=$Oj;}$Pj=$W[$uf];$tf=xxtea_mx($Pj,$Oj,$qi,$x[$og&3^$pc]);$Oj=int32($W[0]-$tf);$W[0]=$Oj;$qi=int32($qi-0x9E3779B9);}return
long2str($W,true);}$Eg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$Eg[$x]=$X;}}function
add_invalid_login(){$Fa=get_temp_dir()."/adminer.invalid";foreach(glob("$Fa*")?:array($Fa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Fa-".rand_string());if(!$q)return;$re=unserialize(stream_get_contents($q));$Ki=time();if($re){foreach($re
as$se=>$X){if($X[0]<$Ki)unset($re[$se]);}}$qe=&$re[adminer()->bruteForceKey()];if(!$qe)$qe=array($Ki+30*60,0);$qe[1]++;file_write_unlock($q,serialize($re));}function
check_invalid_login(array&$Eg){$re=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$re=unserialize(stream_get_contents($q));file_unlock($q);break;}}$qe=idx($re,adminer()->bruteForceKey(),array());$Af=($qe[1]>29?$qe[0]-time():0);if($Af>0)auth_error(lang_format(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Af/60)),$Eg);}$za=$_POST["auth"];if($za){session_regenerate_id();$Dj=$za["driver"];$N=$za["server"];$V=$za["username"];$F=(string)$za["password"];$j=$za["db"];set_password($Dj,$N,$V,$F);$_SESSION["db"][$Dj][$N][$V][$j]=true;if($za["permanent"]){$x=implode("-",array_map('base64_encode',array($Dj,$N,$V,$j)));$Tg=adminer()->permanentLogin(true);$Eg[$x]="$x:".base64_encode($Tg?encrypt_string($F,$Tg):"");cookie("adminer_permanent",implode(" ",$Eg));}if(count($_POST)==1||DRIVER!=$Dj||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Dj,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($Eg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.'Thanks for using Adminer, consider donating.');}elseif($Eg&&!$_SESSION["pwds"]){session_regenerate_id();$Tg=adminer()->permanentLogin();foreach($Eg
as$x=>$X){list(,$cb)=explode(":",$X);list($Dj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($Dj,$N,$V,decrypt_string(base64_decode($cb),$Tg));$_SESSION["db"][$Dj][$N][$V][$j]=true;}}function
unset_permanent(array&$Eg){foreach($Eg
as$x=>$X){list($Dj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($Dj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Eg[$x]);}cookie("adminer_permanent",implode(" ",$Eg));}function
auth_error($l,array&$Eg){$Sh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Sh]||$_GET[$Sh])&&!$_SESSION["token"])$l='Session expired, please login again.';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$l
.=($l?'
':'').sprintf('Master password expired. Implement %s method to make it permanent.',target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Eg);}}if(!$_COOKIE[$Sh]&&$_GET[$Sh]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$rg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$rg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$l,null);echo"\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Eg);page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Md,$Ig)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$Ig,$A)&&($A[1]<1024||$A[1]>65535))auth_error('Connecting to privileged ports is not allowed.',$Eg);check_invalid_login($Eg);$Fb=adminer()->credentials();$f=Driver::connect($Fb[0],$Fb[1],$Fb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Se=null;if(!is_object($f)||($Se=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($Se)?$Se:'Invalid credentials.')).(preg_match('~^ | $~',get_password())?'
'.'There is a space in the input password which might be the cause.':'');auth_error($l,$Eg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($za&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$je="max_input_vars";$ef=ini_get($je);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$ef||$X<$ef)){$je=$x;$ef=$X;}}}$l=(!$_POST["token"]&&$ef?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$je'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$l
.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
print_select_result($I,$g=null,array$dg=array(),$z=0){$Qe=array();$w=array();$e=array();$Ka=array();$ij=array();$J=array();for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"":"".'No rows.')."\n";return$J;}function
referencable_primary($Kh){$J=array();foreach(table_status('',true)as$vi=>$R){if($vi!=$Kh&&fk_support($R)){foreach(fields($vi)as$m){if($m["primary"]){if($J[$vi]){unset($J[$vi]);break;}$J[$vi]=$m;}}}}return$J;}function
textarea($B,$Y,$L=10,$kb=80){echo"";}function
select_input($ya,array$Xf,$Y="",$Rf="",$Fg=""){$Ci=($Xf?"select":"input");return"<$Ci$ya".($Xf?">