� !A?h����� dZddlmZmZmZddlmZddlZddlZddl Z ddl m Z ddl mZddlZddlZddlZddlZgd�Zejed� ��d adad �Zd �Zd �Zd�Zeadadejdddfd�Zd#d�Z d�Z!d�Z"Gd�d��Z#Gd�d��Z$ejfd�Z%d$d�Z&ejfd�Z'd�Z(d�Z)d�Z*d �Z+d!�Z,ed"kr e%��dSdS)%z2.6�)�StringIO�BytesIO� TextIOWrapper)�MappingN)� FeedParser)�Message) �MiniFieldStorage� FieldStorage�parse�parse_multipart� parse_header�test�print_exception� print_environ� print_form�print_directory�print_arguments�print_environ_usage)�� )�remove�c��� tjdtd���tr0ts) t tdd���an#t $rYnwxYwtstantat|�dS)Nz7cgi.log() is deprecated as of 3.10. Use logging instead�)� stacklevel�a�locale)�encoding) �warnings�warn�DeprecationWarning�logfile�logfp�open�OSError�nolog�log�dolog��allargss �0/opt/alt/python-internal/lib64/python3.11/cgi.py�initlogr,As����. �M�K�$��4�4�4�4���u�� ���#��9�9�9�E�E��� � � � �D� ���� ���������M�M�M�Ms�A� A�Ac�H� t�||zdz��dS)N� )r#�write)�fmt�argss r+r(r(fs%��G� �K�K��D��4�� � � � � �c�� dS�N�r)s r+r&r&js ��C��Dr2c�^� datrt���datadS)Nr)r"r#�closer,r'r5r2r+�closelogr8ns-����G� �� � � � � � ��� �C�C�Cr2�&c�<� |� tj}t|d��r|j}nd}t |t ��r|j}d|vrd|d<|ddkr�t|d��\}}|dkrt|||���S|d kr_t|d ��}tr|tkrtd ���|� |��� |��} nd } d |vr| r| dz} | |d z} n0tjdd�r| r| dz} | tjdz} | |d <n;d |vr |d } n.tjdd�rtjd} nd } | |d <tj�| ||||���S)Nrzlatin-1�REQUEST_METHOD�GET�POST� CONTENT_TYPEzmultipart/form-data)� separator�!application/x-www-form-urlencoded�CONTENT_LENGTH�Maximum content length exceededr� QUERY_STRINGr9�)rr?)�sys�stdin�hasattrr� isinstancer�bufferr r �int�maxlen� ValueError�read�decode�argv�urllibr �parse_qs) �fp�environ�keep_blank_values�strict_parsingr?r�ctype�pdict�clength�qss r+r r �s����, �z� �Y���r�*�����;������"�m�$�$�� �Y�� �w� &� &�$)�� �!��� �F�*�*�#�G�N�$;�<�<� ��u� �)� )� )�"�2�u� �B�B�B� B� �9� 9� 9��'�"2�3�4�4�G�� D�'�F�*�*� �!B�C�C�C�����!�!�(�(��2�2�B�B��B� �W� $� $�� ��S��2��g�n�-�-�B�B� �X�a�b�b�\� "�� ��S��2��c�h�q�k�!�B�"$����� �7� "� "� �^� $��� �8�A�B�B�<� ���!��B�B��B�"$���� �<� � ��%6��*2�i� !� I� I�Ir2�utf-8�replacec�0�� |d�d��}d�|��}t��}|�|�� |d|d<n#t$rYnwxYwt ||||ddi|�����fd ��D��S) N�boundary�asciiz multipart/form-data; boundary={}zCONTENT-LENGTHzContent-Lengthr;r=)�headersr�errorsrSr?c�<��i|]}|��|����Sr5)�getlist)�.0�k�fss �r+� z#parse_multipart..�s%��� )� )� )��A�r�z�z�!�}�}� )� )� )r2)rN�formatr�set_type�KeyErrorr ) rRrWrr`r?r]rVr_res @r+r r �s���� ��Z� �'�'��0�0�H� .� 5� 5�h� ?� ?�E��i�i�G� ���U���� �$)�*:�$;�� �!�!�� � � � � �� ���� �b�'�H�V�!�6�*�i� A� A� A�B� )� )� )� )�b� )� )� )�)s� A#�# A0�/A0c#�K�|dd�dkr�|dd�}|�d��}|dkr�|�dd|��|�dd|��z dzrQ|�d|dz��}|dkr2|�dd|��|�dd|��z dz�Q|dkrt|��}|d|�}|���V�||d�}|dd�dk��dSdS)NrD�;r�"�\"r)�find�count�len�strip)�s�end�fs r+� _parseparamru�s���� �B�Q�B�%�3�,�,� �a�b�b�E���f�f�S�k�k���A�g�g�1�7�7�3��3�/�/�!�'�'�%��C�2H�2H�H�A�M�g��&�&��c�A�g�&�&�C��A�g�g�1�7�7�3��3�/�/�!�'�'�%��C�2H�2H�H�A�M�g� ��7�7��a�&�&�C� �d�s�d�G���g�g�i�i���� �c�d�d�G�� �B�Q�B�%�3�,�,�,�,�,�,r2c�� td|z��}|���}i}|D]�}|�d��}|dkr�|d|�������}||dzd����}t |��dkrP|d|dcxkrdkr7nn4|dd�}|�dd ���d d��}|||<��||fS) Nrk�=rrDr�����rlz\\�\rm)ru�__next__rnrq�lowerrpr[)�line�parts�keyrW�p�i�name�values r+r r �s ��� ��d� � #� #�E� �.�.� � �C� �E� � � �� �F�F�3�K�K�� ��6�6��R�a�R�5�;�;�=�=�&�&�(�(�D��a��c�d�d�G�M�M�O�O�E��5�z�z�Q���5��8�u�R�y�#?�#?�#?�#?�C�#?�#?�#?�#?�#?��a��d� ��� � �f�d�3�3�;�;�E�3�G�G���E�$�K�� ��:�r2c�<�eZdZ dZdZdZdZiZdZiZ iZ d�Z d�Z dS)r Nc�$� ||_||_dSr4�r�r���selfr�r�s r+�__init__zMiniFieldStorage.__init__s��4��� ��� � � r2c�(�d|j�d|j�d�S)NzMiniFieldStorage(�, �)r��r�s r+�__repr__zMiniFieldStorage.__repr__s��.�-1�Y�Y�Y�� � � �C�Cr2) �__name__� __module__� __qualname__�filename�list�type�file� type_options� disposition�disposition_optionsr_r�r�r5r2r+r r se������G��H� �D� �D� �D��L��K����G���� D�D�D�D�Dr2r c ���eZdZ dddejdddddddf d�Zd�Zd �Zd �Zd �Z d �Z d �Z d�Z d!d�Z d!d�Zd�Zd�Zd�Zd�Zd�Zd�ZdZd�Zd�ZdZd�Zd�Zd�Zd�Zd�Zd�Zd �ZdS)"r Nr2rrZr[r9c �� d} ||_||_| |_| |_d|vr|d���} d|_| dks| dkrrd|vr |d} n)t jdd�rt jd} nd} | �tj ��d��} t| ��}|�dd i}|�=i}| d krd |d<d |vr |d |d<d|vr |d|_d |vr |d |d <n+t|ttf��std���||_|�t jj|_nXt|t(��r |j|_n6t+|d��rt+|d��std���||_||_| |_t|t0��s$tdt3|��jz���||_d|_||_di}}d|jvrt=|jd��\}}||_||_ d|_!d|vr |d|_!d|_"d|vr |d|_"|j"du|_#d|jvrt=|jd��\}}n|js| d krdi}}nd i}}||_||_$d|vr,|d�|j|j��|_%nd|_%d}d |jvrM tM|jd ��}n#tN$rYnwxYwtPr|tPkrtOd���||_)|j� |dkr||_dx|_*|_+d|_,|d kr|�-��dS|dd�dkr|�.|||��dS|�/��dS)Nr<r;�HEADrCrDr�surrogateescapez content-typer@r=r>rA�content-lengthz?headers must be mapping or an instance of email.message.MessagerM�readlinezfp must be file pointerz#outerboundary must be bytes, not %srzcontent-dispositionr�r�z text/plainr]r2rxrB� z multipart/)0rTrU�max_num_fieldsr?�upper� qs_on_postrErO�encoder�getpreferredencodingrrHrr� TypeErrorr_rFrIrRrrGrr`�bytesr�r�� outerboundary� bytes_read�limitr r�r�r�r�� _binary_filer�� innerboundaryrJrLrK�lengthr�r��done�read_urlencoded� read_multi� read_single)r�rRr_r�rSrTrUr�rr`r�r?�methodrY�cdisprWrV�clens r+r�zFieldStorage.__init__Js���* �V��!2���,���,���"��� �w� &� &��-�.�4�4�6�6�F���� �U�?�?�f��.�.���(�(��^�,�����!�"�"�� ��X�a�[��������6�6�8�8�:K�L�L�B�����B���)�>�@�� �?��G�����*M���'���(�(�*1�.�*A���'���(�(�")�.�"9����7�*�*�,3�4D�,E��(�)���w��'�(:�;�;� 9��!8�9�9�9��� � �:��i�&�D�G�G� ��M� *� *� ��i�D�G�G��B��'�'� ;�G�B� �,C�,C� ;�� 9�:�:�:��D�G� �� ��� ��-��/�/� <��A�"�=�1�1�:�;�<�<� <�*�������� ��2�u�� �D�L� 0� 0�'�� �5J�(K�L�L�L�E�5� ���#(�� ��� � �U�?�?��f� �D�I��� � �� � �!�*�-�D�M� �M��5��� �T�\� )� )�'�� �^�(D�E�E�L�E�5�5� � � C�6�V�#3�#3�'��5�E�E�>��5�E��� �!��� �� � �!&�z�!2�!9�!9�$�-�:>�+�"G�"G�D� � �"%�D� ��� �t�|� +� +� ��4�<�(8�9�:�:����� � � ��� ����� D�$��-�-� �!B�C�C�C��� � �:� �$�!�)�)��D�J� $�$�� �D�I��� � �7� 7� 7� � � � "� "� "� "� "� �3�B�3�Z�<� '� '� �O�O�G�%6�� G� G� G� G� G� � � � � � � � s�L � L-�,L-c�\� |j���dS#t$rYdSwxYwr4)r�r7�AttributeErrorr�s r+�__del__zFieldStorage.__del__�sA�� � �I�O�O� � � � � ��� � � � �D�D� ���s �� +�+c��|Sr4r5r�s r+� __enter__zFieldStorage.__enter__�s��� r2c�8�|j���dSr4)r�r7)r�r1s r+�__exit__zFieldStorage.__exit__�s�� � �������r2c�8�d|j�d|j�d|j�d�S)Nz FieldStorage(r�r�)r�r�r�r�s r+r�zFieldStorage.__repr__�s(��0�� � � �4�=�=�=�$�*�*�*�6� 6r2c�D�t|�����Sr4)�iter�keysr�s r+�__iter__zFieldStorage.__iter__s���D�I�I�K�K� � � r2c���|dkrt|���|jrN|j�d��|j���}|j�d��n|j�|j}nd}|S)Nr�r)r�r��seekrMr�r�s r+� __getattr__zFieldStorage.__getattr__sz�� �7�?�?� ��&�&� &� �9� � �I�N�N�1� � � ��I�N�N�$�$�E� �I�N�N�1� � � � � �Y� "��I�E�E��E�� r2c��� |j�td���g}|jD]"}|j|kr|�|���#|st |���t |��dkr|dS|S)N� not indexablerDr)r�r�r��appendrirp)r�r~�found�items r+� __getitem__zFieldStorage.__getitem__s���(� �9� ��O�,�,� ,����I� 4� 4�D��y�C������d�!3�!3�!3��� ��3�-�-� � �u�:�:��?�?���8�O��Lr2c�p� ||vr0||}t|t��r d�|D��S|jS|S)Nc��g|] }|j�� Sr5�r��rc�xs r+� z)FieldStorage.getvalue..#���/�/�/�A���/�/�/r2�rHr�r��r�r~�defaultr�s r+�getvaluezFieldStorage.getvaluesJ��F� �$�;�;���I�E��%��&�&� #�/�/��/�/�/�/��{�"��Nr2c�r� ||vr1||}t|t��r |djS|jS|S�Nrr�r�s r+�getfirstzFieldStorage.getfirst)sB��/� �$�;�;���I�E��%��&�&� #��Q�x�~�%��{�"��Nr2c�r� ||vr1||}t|t��r d�|D��S|jgSgS)Nc��g|] }|j�� Sr5r�r�s r+r�z(FieldStorage.getlist..9r�r2r�)r�r~r�s r+rbzFieldStorage.getlist4sL��.� �$�;�;���I�E��%��&�&� %�/�/��/�/�/�/�� �}�$��Ir2c�� |j�td���ttd�|jD������S)Nr�c3�$K�|] }|jV�� dSr4�r�)rcr�s r+� z$FieldStorage.keys..Cs$����8�8�d�� �8�8�8�8�8�8r2)r�r��setr�s r+r�zFieldStorage.keys?sB��-� �9� ��O�,�,� ,��C�8�8�d�i�8�8�8�8�8�9�9�9r2c�r�� |j�td���t�fd�|jD����S)Nr�c3�.�K�|]}|j�kV��dSr4r�)rcr�r~s �r+r�z,FieldStorage.__contains__..Is*�����:�:��4�9��#�:�:�:�:�:�:r2)r�r��any)r�r~s `r+� __contains__zFieldStorage.__contains__EsA���3� �9� ��O�,�,� ,��:�:�:�:�� �:�:�:�:�:�:r2c�F� t|�����Sr4)rpr�r�s r+�__len__zFieldStorage.__len__Ks��.��4�9�9�;�;���r2c�V�|j�td���t|j��S)NzCannot be converted to bool.)r�r��boolr�s r+�__bool__zFieldStorage.__bool__Os'�� �9� ��:�;�;� ;��D�I���r2c �� |j�|j��}t|t��s+t |j�dt |��j�����|�|j |j ��}|j r |d|j zz }tj �||j|j|j |j |j|j���}d�|D��|_|���dS)N� should return bytes, got r9�rr`r�r?c�4�g|]\}}t||����Sr5�r �rcr~r�s r+r�z0FieldStorage.read_urlencoded..as'��J�J�J�j�c�5�%�c�5�1�1�J�J�Jr2)rRrMr�rHr�rLr�r�rNrr`r�rPr � parse_qslrTrUr�r?r�� skip_lines)r�rY�querys r+r�zFieldStorage.read_urlencodedTs���9� �W�\�\�$�+� &� &���"�e�$�$� =�� $�����b���):�):�<�=�=� =� �Y�Y�t�}�d�k� 2� 2�� �?� (� �#���'� '�B�� �&�&� ��&��(;��]�4�;��.�$�.�'�J�J��K�J�E�J�J�J�� � �������r2c �� |j}t|��std|�����g|_|jrmt j�|j|j|j |j |j |j |j ���}|j�d�|D����|jp|j}|j���}t'|t(��s+t|j�dt+|��j�����|xjt1|��z c_|���d|jzkrZ|rX|j���}|xjt1|��z c_|���d|jzkr|�X|j }|�|t1|j��z} t5��} d} |j���} | | z } | ���sn�4| s�n9|xjt1| ��z c_| �| �|j |j ����| ���} d| vr| d=|j�dn|j|jz } ||j| ||||| |j |j ||j � � }|�8|d z}|jr|t1|j��z}|d krtd ���|xj|jz c_|j�|��|j s|j|j!cxkrd krnnn���|�"��dS) Nz$Invalid boundary in multipart form: r�c3�<K�|]\}}t||��V��dSr4r�r�s r+r�z*FieldStorage.read_multi..qs1����R�R�j�c�5�-�c�5�9�9�R�R�R�R�R�Rr2r��--Tr2r�rDrzMax number of fields exceeded)#r��valid_boundaryrLr�r�rPr r�rTrUrr`r�r?�extend�FieldStorageClass� __class__rRr�rHr�r�r�r�rprqr�feedrNr7r�r�r�r�r�)r�rSrTrU�ibr��klass� first_liner��parser�hdr_text�datar_r��parts r+r�zFieldStorage.read_multifs���=� � ���b�!�!� O��*���M�N�N� N��� � �?� S��L�*�*����!7��9L���t�{�#�2�d�n�+�N�N�E� �I� � �R�R�E�R�R�R� R� R� R��&�8�$�.���W�%�%�'�'� ��*�e�,�,� E�� $�����j�)9�)9�)B�)B�D�E�E� E� ���3�z�?�?�*������!�!�e�d�.@�&@�A�A��B���)�)�+�+�J� �O�O�s�:��� .�O�O����!�!�e�d�.@�&@�A�A��B� �,�� � %� �c�$�)�n�n� ,�N�# ��\�\�F��H� ��w�'�'�)�)���D� ���z�z�|�|���  � � �� �O�O�s�8�}�}� ,�O�O� �K�K����� �t�{�C�C� D� D� D��l�l�n�n�G� �7�*�*��,�-� �J�.�D�D��Z�$�/�1� ��5���'�2�w�8I�'����� �^�T�^�U�U�D��)��!�#���9�5�"�c�$�)�n�n�4�N�!�A�%�%�$�%D�E�E�E� �O�O�t�� .�O�O� �I� � �T� "� "� "��y� �D�O�t�{�>�>�>�>�Q�>�>�>�>�>��G# �H �������r2c��� |jdkr)|���|���n|���|j�d��dSr�)r�� read_binaryr�� read_linesr�r�r�s r+r�zFieldStorage.read_single�sa��,� �;�!� � � � � � � � � �O�O� � � � � �O�O� � � � � ���q�����r2i c��� |���|_|j}|dkr�|dkr�|j�t ||j����}t|t��s+t|j�dt|��j �����|xj t|��z c_ |s d|_dS|j�|��|t|��z }|dk��dSdSdS)Nrr�rx)� make_filer�r�rRrM�min�bufsizerHr�rLr�r�r�rpr�r/)r��todor�s r+r�zFieldStorage.read_binary�s���)��N�N�$�$�� ��{�� �1�9�9���(�(��w�|�|�C��d�l�$;�$;�<�<��!�$��.�.�G�$�(,�����d���1D�1D�&F�G�G�G����3�t�9�9�,����� "�D�I��E�� ����%�%�%��c�$�i�i�'����(�(�(�(� �9��(r2c��� |jrt��x|_|_nt ��x|_|_|jr|���dS|���dSr4)r�rr��_FieldStorage__filerr��read_lines_to_outerboundary�read_lines_to_eofr�s r+rzFieldStorage.read_lines�sq��>� � � 1�&-�i�i� /�D�I�� � �&.�j�j� 0�D�I�� � � � %� � ,� ,� .� .� .� .� .� � "� "� $� $� $� $� $r2c��� |j��|j���t|��zdkrS|���|_|j���}|j�|��d|_|jr|j�|��dS|j�|�|j |j ����dS)Ni�) r�tellrprr�r�r/r�rNrr`)r�r|r�s r+�__writezFieldStorage.__write�s���.� �;� "��{���!�!�C��I�I�-��4�4� �N�N�,�,�� ��{�+�+�-�-��� ����%�%�%�"�� � � � E� �I�O�O�D� !� !� !� !� !� �I�O�O�D�K�K�� �t�{�C�C� D� D� D� D� Dr2c�� |j�d��}|xjt|��z c_|s d|_dS|�|���X)NrD�rx)rRr�r�rpr��_FieldStorage__write)r�r|s r+r zFieldStorage.read_lines_to_eof�s`��-� ��7�#�#�E�*�*�D� �O�O�s�4�y�y� (�O�O�� ��� ��� �L�L�� � � �  r2c��� d|jz}|dz}d}d}d} |j�d|jcxkr|krnndS|j�d��}|xjt |��z c_|t |��z }|s d|_dS|dkr||z}d}|�d��r-|r+|���}||krdS||kr d|_dS|}|� d ��rd }|dd �}d}nL|� d ��rd }|dd�}d}n(|� d��rd}|dd�}d }nd}d }|� ||z����M) Nr�r2TrrDrrx� s ������ F) r�r�rRr�r�rpr�� startswith�rstrip�endswithr) r�� next_boundary� last_boundary�delim�last_line_lfend�_readr|� strippedline�odelims r+rz(FieldStorage.read_lines_to_outerboundary�s��� ��� 2�2� �%��-� �������& (��z�%�!�t�z�*B�*B�*B�*B�U�*B�*B�*B�*B�*B����7�#�#�E�*�*�D� �O�O�s�4�y�y� (�O�O� �S��Y�Y� �E�� ��� �����~�~��t�|�������u�%�%� �/� �#�{�{�}�}� ��=�0�0��E��=�0�0� !�D�I��E��F��}�}�W�%�%� (����C�R�C�y��"&������u�%�%� (����C�R�C�y��"&������u�%�%� (����C�R�C�y��"'�����"'�� �L�L��$�� '� '� '�M& (r2c�|� |jr|jrdSd|jz}|dz}d} |j�d��}|xjt |��z c_|s d|_dS|�d��r-|r+|���}||krdS||kr d|_dS|�d��}��)Nr�TrrxrDr)r�r�rRr�r�rprrq)r�rrrr|rs r+r�zFieldStorage.skip_liness���C��!� �T�Y� � �F��� 2�2� �%��-� ��� 3��7�#�#�E�*�*�D� �O�O�s�4�y�y� (�O�O�� ��� ����}�}�U�#�#� �� �#�z�z�|�|� ��=�0�0��E��=�0�0� !�D�I��E�"�m�m�E�2�2�O� 3r2c�r� |jrtjd��Stjd|jd���S)Nzwb+zw+r.)r�newline)r��tempfile� TemporaryFilerr�s r+rzFieldStorage.make_file3sH�� �. � � 8��)�%�0�0� 0��)�$���$�8�8�8� 8r2r4) r�r�r��osrSr�r�r�r�r�r�r�r�r�r�rbr�r�r�r�r�r�r�r�rr�rrr rr�rr5r2r+r r s�������(�R��C���q���g�i� $��c�c�c�c�J��� ������6�6�6� !�!�!� � � � � � � � � � � � � � � � � �:�:�:� ;�;�;�  � � ���� ��� ��C�C�C�J����G�(�(�(�" %� %� %� E� E� E����0(�0(�0(�d3�3�3�,8�8�8�8�8r2r c�j� td��t��tjt_ t ��}t ��t ��t|��t|��t��d�}|fd�}td��|��n#t��YnxYwtd��da t ��}t ��t ��t|��t|��dS#t��YdSxYw)NzContent-type: text/htmlc�$�td��dS)Nz,testing print_exception() -- italics?)�execr5r2r+rtztest..ffs�� �?� @� @� @� @� @r2c��|��dSr4r5)rts r+�gztest..ghs�� �A�C�C�C�C�Cr2z9

What follows is a test, not an actual exception:

z*

Second try with a small maxlen...

�2) �printrE�stdout�stderrr rrrrrrrK)rS�formrtr(s r+rrUsT���  � #�$�$�$� �G�G�G���C�J���~�~�����������4�����g�������� A� A� A�� � � � � �I�J�J�J� ����������������� � 6�7�7�7��F���~�~�����������4�����g�����������������s�A7B.�.C�AD�D2c ��|�tj��\}}}ddl}t��td��|�||��|�||��z}tdt jd�|dd������dt j|d���d���~dS)Nrz+

Traceback (most recent call last):

z
rrxzz
) rE�exc_info� tracebackr*� format_tb�format_exception_only�html�escape�join)r�r��tbr�r0r�s r+rr|s��� �|��,�.�.���e�R����� �G�G�G� � 7�8�8�8� � � �r�5� )� )� � *� *�4�� 7� 7� 8�D� �E� � �B�G�G�D��"��I�&�&�'�'�'�'� � �D��H����� � � � � ��r2c �^� t|�����}t��td��td��|D]>}tdtj|��dtj||�����?td��t��dS)Nz

Shell Environment:

�
�
�
�
)�sortedr�r*r3r4)rSr�r~s r+rr�s���-� �'�,�,�.�.� !� !�D� �G�G�G� � '�(�(�(� �&�M�M�M��K�K�� �f�d�k�#�&�&��� �G�C�L�0I�0I�J�J�J�J� �'�N�N�N� �G�G�G�G�Gr2c �N� t|�����}t��td��|std��td��|D]�}tdtj|��zdzd���||}tdtjt t |������zd z��td tjt |����z����td ��t��dS) Nz

Form Contents:

z

No form fields.r8r9�:� )rszzr:r;)r<r�r*r3r4�reprr�)r-r�r~r�s r+rr�s��.� �$�)�)�+�+� � �D� �G�G�G� � #�$�$�$� �$� �"�#�#�#� �&�M�M�M��1�1�� �f�t�{�3�'�'�'�#�-�3�7�7�7�7��S� �� �e�d�k�$�t�E�{�{�"3�"3�4�4�4�v�=�>�>�>� �f�t�{�4��;�;�/�/�/�0�0�0�0� �'�N�N�N� �G�G�G�G�Gr2c �V� t��td�� tj��}ttj|����nF#t $r9}tdtjt |������Yd}~nd}~wwxYwt��dS)Nz#

Current Working Directory:

zOSError:)r*r#�getcwdr3r4r%�str)�pwd�msgs r+rr�s���-� �G�G�G� � /�0�0�0� ��i�k�k�� �d�k�#�������� �1�1�1� �j�$�+�c�#�h�h�/�/�0�0�0�0�0�0�0�0�����1���� �G�G�G�G�Gs�A� B�/B�Bc��t��td��t��ttj��t��dS)Nz

Command Line Arguments:

)r*rErOr5r2r+rr�s=�� �G�G�G� � ,�-�-�-� �G�G�G� �#�(�O�O�O� �G�G�G�G�Gr2c�&� td��dS)Na�

These environment variables could have been set:

  • AUTH_TYPE
  • CONTENT_LENGTH
  • CONTENT_TYPE
  • DATE_GMT
  • DATE_LOCAL
  • DOCUMENT_NAME
  • DOCUMENT_ROOT
  • DOCUMENT_URI
  • GATEWAY_INTERFACE
  • LAST_MODIFIED
  • PATH
  • PATH_INFO
  • PATH_TRANSLATED
  • QUERY_STRING
  • REMOTE_ADDR
  • REMOTE_HOST
  • REMOTE_IDENT
  • REMOTE_USER
  • REQUEST_METHOD
  • SCRIPT_NAME
  • SERVER_NAME
  • SERVER_PORT
  • SERVER_PROTOCOL
  • SERVER_ROOT
  • SERVER_SOFTWARE
In addition, HTTP headers sent by the server may be passed in the environment as well. Here are some common variable names:
  • HTTP_ACCEPT
  • HTTP_CONNECTION
  • HTTP_HOST
  • HTTP_PRAGMA
  • HTTP_REFERER
  • HTTP_USER_AGENT
)r*r5r2r+rr�s&��C� �' �'�'�'�'�'r2c�j�ddl}t|t��rd}nd}|�||��S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)�rerHr��match)rrrI� _vb_patterns r+r�r��s=�� �I�I�I��!�U���,�,� � �+� � �8�8�K�� #� #�#r2�__main__)rZr[r9)NNNN)-� __version__�iorrr�collections.abcrrEr#� urllib.parserP� email.parserr� email.messagerr3rr!r�__all__� _deprecatedr�r"r#r,r(r&r8r'rKrSr r rur r r rrrrrrrr�r5r2r+�rUs��� �*� � 0�/�/�/�/�/�/�/�/�/�#�#�#�#�#�#� � � � � � � � �����#�#�#�#�#�#�!�!�!�!�!�!� � � � � � � � ��������� "� "� "�� ���X�f�-�-�-�-� �� ��#�#�#�J!�!�!� � � ������ �� �2�:���c�CI�CI�CI�CI�L*�*�*�*�6 � � ����0D�D�D�D�D�D�D�D�2p8�p8�p8�p8�p8�p8�p8�p8�l��%�%�%�%�N  �  �  �  ��*�  �  �  �  � � � �  �  �  � � � �)�)�)�^$�$�$� �z����D�F�F�F�F�F��r2