Sindbad~EG File Manager

Current Path : /lib64/python3.11/email/__pycache__/
Upload File :
Current File : //lib64/python3.11/email/__pycache__/_header_value_parser.cpython-311.opt-2.pyc

�

�=Ogv��	��	ddlZddlZddlZddlmZddlmZddlmZ	ddlm
Z
ddlmZed��Z
e
ed��zZed	��Zee
zZeed
��z
Zeed��z
Zeed��zed
��z
Zee
zZeed
��zZee
zZeed��z
ZddhZeezZd�Zejdejejz��ZGd�de��Z Gd�de ��Z!Gd�de ��Z"Gd�de ��Z#Gd�de ��Z$Gd�de!��Z%Gd�d e ��Z&Gd!�d"e ��Z'Gd#�d$e ��Z(Gd%�d&e ��Z)Gd'�d(e)��Z*Gd)�d*e!��Z+Gd+�d,e ��Z,Gd-�d.e ��Z-Gd/�d0e ��Z.Gd1�d2e ��Z/Gd3�d4e ��Z0Gd5�d6e ��Z1Gd7�d8e ��Z2Gd9�d:e ��Z3Gd;�d<e ��Z4Gd=�d>e ��Z5Gd?�d@e ��Z6GdA�dBe ��Z7GdC�dDe ��Z8GdE�dFe ��Z9GdG�dHe ��Z:GdI�dJe ��Z;GdK�dLe#��Z<GdM�dNe ��Z=GdO�dPe ��Z>GdQ�dRe ��Z?GdS�dTe ��Z@GdU�dVe@��ZAGdW�dXe ��ZBGdY�dZe ��ZCGd[�d\e ��ZDGd]�d^e ��ZEGd_�d`e ��ZFGda�dbeF��ZGGdc�ddeF��ZHGde�dfe ��ZIGdg�dhe ��ZJGdi�dje ��ZKGdk�dleK��ZLGdm�dneL��ZMGdo�dpe ��ZNGdq�dreO��ZPGds�dteP��ZQGdu�dveP��ZRGdw�dxeQ��ZSGdy�dze
jT��ZUeRd
d{��ZVeRd|d}��ZWd~eW_Xd~eW_YeRdd���ZZejd��[d��\e
������j]Z^ejd��[ej_d��\e��������j`Zaejd���jbZcejd��[ej_d��\e��������j`Zdejd��[ej_d��\e��������j`Zeejd��[ej_d��\e��������j`Zfd��Zgd��Zhd��Zid��Zjd��Zkd��Zld��Zmd��Znd��Zod��Zpd��Zqd��Zrd��Zsd��Ztd��Zud��Zvd��Zwd��Zxd��Zyd��Zzd��Z{d��Z|d��Z}d��Z~d��Zd��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�dS)��N)�	hexdigits)�
itemgetter)�_encoded_words)�errors)�utilsz 	�(z
()<>@,:;.\"[]�.z."(z/?=z*'%�%�
�
c�|�dt|���dd���dd��zdzS)N�"�\�\\z\")�str�replace��values �3/usr/lib64/python3.11/email/_header_value_parser.py�quote_stringrbs8���s�5�z�z�!�!�$��/�/�7�7��U�C�C�C�C�G�G�z�
   =\?            # literal =?
   [^?]*          # charset
   \?             # literal ?
   [qQbB]         # literal 'q' or 'b', case insensitive
   \?             # literal ?
  .*?             # encoded word
  \?=             # literal ?=
c���eZdZdZdZdZ�fd�Zd�Z�fd�Ze	d���Z
e	d���Zd�Ze	d	���Z
e	d
���Zd�Zdd
�Zdd�Zdd�Z�xZS)�	TokenListNTc�H��t��j|i|��g|_dS�N)�super�__init__�defects)�self�args�kw�	__class__s   �rrzTokenList.__init__{s*��������$�%�"�%�%�%�����rc�@�d�d�|D����S)N�c3�4K�|]}t|��V��dSr�r��.0�xs  r�	<genexpr>z$TokenList.__str__.<locals>.<genexpr>��(����,�,�!�s�1�v�v�,�,�,�,�,�,r��join�rs r�__str__zTokenList.__str__s#���w�w�,�,�t�,�,�,�,�,�,rc���d�|jjt�������S�Nz{}({})��formatr"�__name__r�__repr__�rr"s �rr5zTokenList.__repr__�s3������t�~�6�"�W�W�-�-�/�/�1�1�	1rc�@�d�d�|D����S)Nr$c3�2K�|]}|j�	|jV��dSrrr's  rr*z"TokenList.value.<locals>.<genexpr>�s+����8�8�1���8�q�w�8�8�8�8�8�8rr,r.s rrzTokenList.value�s#���w�w�8�8��8�8�8�8�8�8rc�@�td�|D��|j��S)Nc3�$K�|]}|jV��dSr)�all_defectsr's  rr*z(TokenList.all_defects.<locals>.<genexpr>�s$����0�0�a�A�M�0�0�0�0�0�0r)�sumrr.s rr;zTokenList.all_defects�s#���0�0�4�0�0�0�$�,�?�?�?rc�6�|d���S�Nr)�startswith_fwsr.s rr?zTokenList.startswith_fws�s���A�w�%�%�'�'�'rc�6�	td�|D����S)Nc3�$K�|]}|jV��dSr)�
as_ew_allowed)r(�parts  rr*z*TokenList.as_ew_allowed.<locals>.<genexpr>�s%����7�7�$�4�%�7�7�7�7�7�7r)�allr.s rrBzTokenList.as_ew_allowed�s"��O��7�7�$�7�7�7�7�7�7rc�H�g}|D]}|�|j���|Sr)�extend�comments)rrG�tokens   rrGzTokenList.comments�s2�����	,�	,�E��O�O�E�N�+�+�+�+��rc�$�t||���S)N��policy)�_refold_parse_tree�rrKs  r�foldzTokenList.fold�s��!�$�v�6�6�6�6rr$c�L�t|�|�����dS)N��indent)�print�ppstr�rrQs  r�pprintzTokenList.pprint�s$��
�d�j�j��j�'�'�(�(�(�(�(rc�T�d�|�|�����S)NrrP)r-�_pprTs  rrSzTokenList.ppstr�s"���y�y������0�0�1�1�1rc#�nK�d�||jj|j��V�|D]K}t	|d��s|d�|��zV��-|�|dz��Ed{V���L|jrd�|j��}nd}d�||��V�dS)Nz{}{}/{}(rWz*    !! invalid element in token list: {!r}z    z Defects: {}r$z{}){})r3r"r4�
token_type�hasattrrWr)rrQrH�extras    rrWz
TokenList._pp�s����������N�#��O���	�	�	��	4�	4�E��5�%�(�(�
4��!5�5;�V�E�]�]�C�D�D�D�D�!�9�9�V�F�]�3�3�3�3�3�3�3�3�3�3��<�	�"�)�)�$�,�7�7�E�E��E��n�n�V�U�+�+�+�+�+�+�+r�r$)r4�
__module__�__qualname__rY�syntactic_break�ew_combine_allowedrr/r5�propertyrr;r?rBrGrNrUrSrW�
__classcell__�r"s@rrrus9��������J��O��������-�-�-�1�1�1�1�1��9�9��X�9��@�@��X�@�(�(�(��8�8��X�8�����X��7�7�7�)�)�)�)�2�2�2�2�,�,�,�,�,�,�,�,rrc�:�eZdZed���Zed���ZdS)�WhiteSpaceTokenListc��dS�N� �r.s rrzWhiteSpaceTokenList.value�����src��d�|D��S)Nc�2�g|]}|jdk�
|j��S)�comment)rY�contentr's  r�
<listcomp>z0WhiteSpaceTokenList.comments.<locals>.<listcomp>�s&��C�C�C�a�1�<��+B�+B��	�+B�+B�+Brrir.s rrGzWhiteSpaceTokenList.comments�s��C�C�4�C�C�C�CrN)r4r]r^rarrGrirrrere�sM������
����X���D�D��X�D�D�Drrec��eZdZdZdS)�UnstructuredTokenList�unstructuredN�r4r]r^rYrirrrqrq�s�������J�J�Jrrqc��eZdZdZdS)�Phrase�phraseNrsrirrruru���������J�J�Jrruc��eZdZdZdS)�Word�wordNrsrirrryry���������J�J�Jrryc��eZdZdZdS)�CFWSList�cfwsNrsrirrr}r}�r{rr}c��eZdZdZdS)�Atom�atomNrsrirrr�r��r{rr�c��eZdZdZdZdS)�TokenrHFN)r4r]r^rY�encode_as_ewrirrr�r��s�������J��L�L�Lrr�c��eZdZdZdZdZdZdS)�EncodedWord�encoded-wordN)r4r]r^rY�cte�charset�langrirrr�r��s"�������J�
�C��G��D�D�Drr�c�T�eZdZdZed���Zed���Zed���ZdS)�QuotedString�
quoted-stringc�8�|D]}|jdkr	|jcS�dS�N�bare-quoted-string�rYr�rr)s  rrnzQuotedString.content�s9���	�	�A��|�3�3�3��w����4�	�	rc���g}|D]J}|jdkr#|�t|�����0|�|j���Kd�|��S)Nr�r$)rY�appendrrr-)r�resr)s   r�quoted_valuezQuotedString.quoted_value�sf�����	$�	$�A��|�3�3�3��
�
�3�q�6�6�"�"�"�"��
�
�1�7�#�#�#�#��w�w�s�|�|�rc�8�|D]}|jdkr	|jcS�dSr�r��rrHs  r�stripped_valuezQuotedString.stripped_value�s=���	#�	#�E���#7�7�7��{�"�"�"�8�	#�	#rN)r4r]r^rYrarnr�r�rirrr�r��sh������ �J�
����X��
����X���#�#��X�#�#�#rr�c�.�eZdZdZd�Zed���ZdS)�BareQuotedStringr�c�Z�td�d�|D������S)Nr$c3�4K�|]}t|��V��dSrr&r's  rr*z+BareQuotedString.__str__.<locals>.<genexpr>s(����#9�#9�q�C��F�F�#9�#9�#9�#9�#9�#9r)rr-r.s rr/zBareQuotedString.__str__s+���B�G�G�#9�#9�D�#9�#9�#9�9�9�:�:�:rc�@�d�d�|D����S)Nr$c3�4K�|]}t|��V��dSrr&r's  rr*z)BareQuotedString.value.<locals>.<genexpr>r+rr,r.s rrzBareQuotedString.value�#���w�w�,�,�t�,�,�,�,�,�,rN)r4r]r^rYr/rarrirrr�r��sC������%�J�;�;�;��-�-��X�-�-�-rr�c�J�eZdZdZd�Zd�Zed���Zed���ZdS)�Commentrmc�l��d�tdg�fd��D��dggg����S)Nr$rc�:��g|]}��|����Sri)�quote)r(r)rs  �rroz#Comment.__str__.<locals>.<listcomp>s#���9�9�9�q�T�Z�Z��]�]�9�9�9r�))r-r<r.s`rr/zComment.__str__
sP����w�w�s� �E�9�9�9�9�D�9�9�9� �E�� "�	#�#�$�$�	$rc���|jdkrt|��St|���dd���dd���dd��S)Nrmrrrz\(r�z\))rYrr)rrs  rr�z
Comment.quotesc����y�(�(��u�:�:���5�z�z�!�!�$��/�/�7�7�"%�u�.�.�.5�g�"%�u�/.�/.�	.rc�@�d�d�|D����S)Nr$c3�4K�|]}t|��V��dSrr&r's  rr*z"Comment.content.<locals>.<genexpr>r+rr,r.s rrnzComment.contentr�rc��|jgSr)rnr.s rrGzComment.commentss����~�rN)	r4r]r^rYr/r�rarnrGrirrr�r�	sm�������J�$�$�$�.�.�.��-�-��X�-�����X���rr�c�T�eZdZdZed���Zed���Zed���ZdS)�AddressListzaddress-listc��d�|D��S)Nc�(�g|]}|jdk�
|��S)�address�rYr's  rroz)AddressList.addresses.<locals>.<listcomp>)�$��;�;�;�a�1�<��#:�#:��#:�#:�#:rrir.s r�	addresseszAddressList.addresses'���;�;�4�;�;�;�;rc�6�td�|D��g��S)Nc3�:K�|]}|jdk�
|jV��dS�r�N�rY�	mailboxesr's  rr*z(AddressList.mailboxes.<locals>.<genexpr>-s<����>�>��Q�\�9�%<�%<��K�%<�%<�%<�%<�>�>r�r<r.s rr�zAddressList.mailboxes+�6���>�>�!�>�>�>�?A�C�C�	Crc�6�td�|D��g��S)Nc3�:K�|]}|jdk�
|jV��dSr��rY�
all_mailboxesr's  rr*z,AddressList.all_mailboxes.<locals>.<genexpr>2s<����>�>��Q�\�9�%<�%<��O�%<�%<�%<�%<�>�>rr�r.s rr�zAddressList.all_mailboxes0r�rN)r4r]r^rYrar�r�r�rirrr�r�#sp�������J�
�<�<��X�<��C�C��X�C��C�C��X�C�C�Crr�c�T�eZdZdZed���Zed���Zed���ZdS)�Addressr�c�B�|djdkr
|djSdS)Nr�group�rY�display_namer.s rr�zAddress.display_name:s)����7���(�(���7�'�'�)�(rc�v�|djdkr	|dgS|djdkrgS|djS�Nr�mailbox�invalid-mailboxr�r.s rr�zAddress.mailboxes?sE����7���*�*���G�9��
�!�W�
�#4�
4�
4��I��A�w� � rc��|djdkr	|dgS|djdkr	|dgS|djSr�r�r.s rr�zAddress.all_mailboxesGsL����7���*�*���G�9��
�!�W�
�#4�
4�
4���G�9���A�w�$�$rN)r4r]r^rYrar�r�r�rirrr�r�6sh�������J�
�(�(��X�(��!�!��X�!��%�%��X�%�%�%rr�c�>�eZdZdZed���Zed���ZdS)�MailboxList�mailbox-listc��d�|D��S)Nc�(�g|]}|jdk�
|��S)r�r�r's  rroz)MailboxList.mailboxes.<locals>.<listcomp>Ur�rrir.s rr�zMailboxList.mailboxesSr�rc��d�|D��S)Nc�$�g|]
}|jdv�|��S))r�r�r�r's  rroz-MailboxList.all_mailboxes.<locals>.<listcomp>Ys/��?�?�?�a��|�=�=�=��=�=�=rrir.s rr�zMailboxList.all_mailboxesWs"��?�?�4�?�?�?�	?rN�r4r]r^rYrar�r�rirrr�r�OsM�������J�
�<�<��X�<��?�?��X�?�?�?rr�c�>�eZdZdZed���Zed���ZdS)�	GroupList�
group-listc�F�|r|djdkrgS|djS�Nrr�r�r.s rr�zGroupList.mailboxesas-���	�t�A�w�)�^�;�;��I��A�w� � rc�F�|r|djdkrgS|djSr�r�r.s rr�zGroupList.all_mailboxesgs-���	�t�A�w�)�^�;�;��I��A�w�$�$rNr�rirrr�r�]sM�������J�
�!�!��X�!�
�%�%��X�%�%�%rr�c�T�eZdZdZed���Zed���Zed���ZdS)�Groupr�c�B�|djdkrgS|djS�N�r�r�r.s rr�zGroup.mailboxesrs&����7���-�-��I��A�w� � rc�B�|djdkrgS|djSr�r�r.s rr�zGroup.all_mailboxesxs&����7���-�-��I��A�w�$�$rc��|djSr>)r�r.s rr�zGroup.display_name~s���A�w�#�#rN)r4r]r^rYrar�r�r�rirrr�r�nsh�������J�
�!�!��X�!�
�%�%��X�%�
�$�$��X�$�$�$rr�c��eZdZdZed���Zed���Zed���Zed���Zed���Z	dS)�NameAddr�	name-addrc�F�t|��dkrdS|djS�N�r)�lenr�r.s rr�zNameAddr.display_name�s#���t�9�9��>�>��4��A�w�#�#rc��|djS�N�����
local_partr.s rr�zNameAddr.local_part�s���B�x�"�"rc��|djSr���domainr.s rr�zNameAddr.domain�s���B�x��rc��|djSr�)�router.s rr�zNameAddr.route�s���B�x�~�rc��|djSr���	addr_specr.s rr�zNameAddr.addr_spec�s���B�x�!�!rN�
r4r]r^rYrar�r�r�r�r�rirrr�r��s��������J�
�$�$��X�$�
�#�#��X�#�����X������X���"�"��X�"�"�"rr�c�j�eZdZdZed���Zed���Zed���Zed���ZdS)�	AngleAddrz
angle-addrc�8�|D]}|jdkr	|jcS�dS�N�	addr-spec)rYr�r�s  rr�zAngleAddr.local_part�s;���	$�	$�A��|�{�*�*��|�#�#�#�+�	$�	$rc�8�|D]}|jdkr	|jcS�dSr��rYr�r�s  rr�zAngleAddr.domain�s8���	 �	 �A��|�{�*�*��x����+�	 �	 rc�8�|D]}|jdkr	|jcS�dS)N�	obs-route)rY�domainsr�s  rr�zAngleAddr.route�s;���	!�	!�A��|�{�*�*��y� � � �+�	!�	!rc��|D];}|jdkr.|jr	|jcSt|j��|jzcS�<dS)Nr�z<>)rYr�r�rr�s  rr�zAngleAddr.addr_spec�s`���	�	�A��|�{�*�*��<�D��;�&�&�&�'���5�5���C�C�C�C�	+��4rN)	r4r]r^rYrar�r�r�r�rirrr�r��s��������J�
�$�$��X�$�
� � ��X� �
�!�!��X�!�
����X���rr�c�(�eZdZdZed���ZdS)�ObsRouter�c��d�|D��S)Nc�2�g|]}|jdk�
|j��Sr�r�r's  rroz$ObsRoute.domains.<locals>.<listcomp>�s&��C�C�C�Q�!�,�(�*B�*B���*B�*B�*Brrir.s rr�zObsRoute.domains�s��C�C�$�C�C�C�CrN)r4r]r^rYrar�rirrrr�s7�������J�
�D�D��X�D�D�Drrc��eZdZdZed���Zed���Zed���Zed���Zed���Z	dS)�Mailboxr�c�B�|djdkr
|djSdS�Nrr�r�r.s rr�zMailbox.display_name�s)����7���,�,���7�'�'�-�,rc��|djSr>r�r.s rr�zMailbox.local_part�����A�w�!�!rc��|djSr>r�r.s rr�zMailbox.domain�s���A�w�~�rc�B�|djdkr
|djSdSr)rYr�r.s rr�z
Mailbox.route�s(����7���,�,���7�=� �-�,rc��|djSr>r�r.s rr�zMailbox.addr_spec�s���A�w� � rNr�rirrrr�s��������J�
�(�(��X�(��"�"��X�"�����X���!�!��X�!��!�!��X�!�!�!rrc�8�eZdZdZed���ZexZxZxZZ	dS)�InvalidMailboxr�c��dSrrir.s rr�zInvalidMailbox.display_name�����trNr�rirrr
r
�sB������"�J�
����X��/;�:�J�:��:�%�)�)�)rr
c�6��eZdZdZdZe�fd���Z�xZS)�Domainr�Fc�t��d�t��j�����S�Nr$�r-rr�splitr6s �rr�z
Domain.domain��'����w�w�u�w�w�}�*�*�,�,�-�-�-r)r4r]r^rYrBrar�rbrcs@rrr�sL��������J��M�
�.�.�.�.��X�.�.�.�.�.rrc��eZdZdZdS)�DotAtom�dot-atomNrsrirrrr�s�������J�J�Jrrc��eZdZdZdZdS)�DotAtomTextz
dot-atom-textTN�r4r]r^rYrBrirrrr�s������ �J��M�M�Mrrc��eZdZdZdZdS)�
NoFoldLiteralzno-fold-literalFNrrirrrrs������"�J��M�M�Mrrc�n�eZdZdZdZed���Zed���Zed���Zed���Z	dS)�AddrSpecr�Fc��|djSr>r�r.s rr�zAddrSpec.local_partrrc�F�t|��dkrdS|djS)N�r�)r�r�r.s rr�zAddrSpec.domains"���t�9�9�q�=�=��4��B�x��rc���t|��dkr
|djS|dj���|djz|dj���zS)Nr#rr�r�)r�r�rstrip�lstripr.s rrzAddrSpec.valuesW���t�9�9�q�=�=���7�=� ��A�w�}�#�#�%�%�d�1�g�m�3�D��G�M�4H�4H�4J�4J�J�Jrc���t|j��}t|��t|tz
��krt	|j��}n|j}|j�
|dz|jzS|S)N�@)�setr�r��
DOT_ATOM_ENDSrr�)r�nameset�lps   rr�zAddrSpec.addr_specse���d�o�&�&���w�<�<�#�g�m�3�4�4�4�4��d�o�.�.�B�B���B��;�"���8�d�k�)�)��	rN)
r4r]r^rYrBrar�r�rr�rirrr r s��������J��M�
�"�"��X�"�����X��
�K�K��X�K�
����X���rr c��eZdZdZdZdS)�ObsLocalPartzobs-local-partFNrrirrr.r.(s������!�J��M�M�Mrr.c�L��eZdZdZdZed���Ze�fd���Z�xZS)�DisplayNamezdisplay-nameFc���t|��}t|��dkr|jS|djdkr|�d��n7|ddjdkr t|ddd���|d<|djdkr|���n7|ddjdkr t|ddd���|d<|jS)Nrr~r�r�)rr�rrY�pop)rr�s  rr�zDisplayName.display_name3s�����o�o���s�8�8�q�=�=��9���q�6���&�&��G�G�A�J�J�J�J��1�v�a�y�#�v�-�-�"�3�q�6�!�"�"�:�.�.��A���r�7���'�'��G�G�I�I�I�I��2�w�r�{�%��/�/�#�C��G�C�R�C�L�1�1��B���y�rc�t��d}|jrd}n|D]}|jdkrd}�t|��dkrt|rrdx}}|djdks|ddjdkrd}|djdks|ddjdkrd}|t|j��z|zSt��jS)	NFTr�rr$r~rhr�)rrYr�rr�rr)rr�r)�pre�postr"s     �rrzDisplayName.valueDs�������<�	!��E�E��
!�
!���<�?�2�2� �E���t�9�9��>�>�e�>��O�C�$��A�w�!�6�)�)�T�!�W�Q�Z�-B�F�-J�-J����B�x�"�F�*�*�d�2�h�r�l�.E�v�.M�.M����|�D�$5�6�6�6�t�;�;��7�7�=� r)	r4r]r^rYr`rar�rrbrcs@rr0r0.sh��������J���
����X�� �!�!�!�!��X�!�!�!�!�!rr0c�B�eZdZdZdZed���Zed���ZdS)�	LocalPartz
local-partFc�X�|djdkr
|djS|djS)Nrr�)rYr�rr.s rrzLocalPart.value]s-����7���0�0���7�'�'���7�=� rc�
�tg}t}d}|dtgzD]�}|jdkr�|r6|jdkr+|djdkrt|dd���|d<t|t��}|rG|jdkr<|djdkr+|�t|dd�����n|�|��|d}|}��t|dd���}|jS)NFrr~�dotr�r�)�DOTrYr�
isinstancer�r)rr��last�
last_is_tl�tok�is_tls      rr�zLocalPart.local_partds���e�����
���7�c�U�?�
	�
	�C��~��'�'���
/�s�~��6�6���H�'�6�1�1�#�D��"��I�.�.��B���s�I�.�.�E��
 �$�/�U�2�2���F�%��/�/��
�
�9�S����W�-�-�.�.�.�.��
�
�3�����r�7�D��J�J���A�b�D�	�"�"���y�rN)r4r]r^rYrBrarr�rirrr7r7XsR�������J��M�
�!�!��X�!�����X���rr7c�L��eZdZdZdZe�fd���Zed���Z�xZS)�
DomainLiteralzdomain-literalFc�t��d�t��j�����Srrr6s �rr�zDomainLiteral.domain�rrc�8�|D]}|jdkr	|jcS�dS)N�ptextr�r�s  r�ipzDomainLiteral.ip�s8���	�	�A��|�w�&�&��w����'�	�	r)	r4r]r^rYrBrar�rFrbrcs@rrBrB|sg�������!�J��M�
�.�.�.�.��X�.�����X�����rrBc��eZdZdZdZdZdS)�MIMEVersionzmime-versionN)r4r]r^rY�major�minorrirrrHrH�s�������J��E��E�E�ErrHc�J�eZdZdZdZdZdZed���Zed���Z	dS)�	Parameter�	parameterF�us-asciic�.�|jr
|djndSr�)�	sectioned�numberr.s r�section_numberzParameter.section_number�s��"&��6�t�A�w�~�~�Q�6rc��|D]N}|jdkr	|jcS|jdkr-|D]*}|jdkr|D]}|jdkr
|jcccS��+�OdS)Nrr�r�r$)rYr�r�s  r�param_valuezParameter.param_value�s����	<�	<�E���7�*�*��+�+�+�+���?�2�2�"�<�<�E��'�+?�?�?�%*�<�<�E�$�/�7�:�:�',�';� ;� ;� ;� ;� ;� ;� ;� ;����rrN)
r4r]r^rYrP�extendedr�rarRrTrirrrLrL�s\�������J��I��H��G�
�7�7��X�7�
����X���rrLc��eZdZdZdS)�InvalidParameter�invalid-parameterNrsrirrrWrW�s������$�J�J�JrrWc�(�eZdZdZed���ZdS)�	Attribute�	attributec�V�|D]%}|j�d��r	|jcS�&dS)N�attrtext)rY�endswithrr�s  rr�zAttribute.stripped_value�sG���	#�	#�E���(�(��4�4�
#��{�"�"�"�
#�	#�	#rN�r4r]r^rYrar�rirrrZrZ�s2�������J�
�#�#��X�#�#�#rrZc��eZdZdZdZdS)�Section�sectionN)r4r]r^rYrQrirrrara�s�������J�
�F�F�Frrac�(�eZdZdZed���ZdS)�Valuerc��|d}|jdkr|d}|j�d��r|jS|jS)Nrr~r�)r�r[zextended-attribute)rYr^r�rr�s  rr�zValue.stripped_value�sS���Q�����v�%�%���G�E���$�$�D�F�F�	(��'�'��z�rNr_rirrrdrd�s2�������J�
����X���rrdc�2�eZdZdZdZed���Zd�ZdS)�MimeParameters�mime-parametersFc#�K�i}|D]y}|j�d��s�|djdkr�/|dj���}||vrg||<||�|j|f���z|���D�]4\}}t|td�����}|dd}|j	}|j
sgt|��dkrT|dddkrB|ddj�tjd����|dd�}g}d}|D�]j\}	}
|	|kr`|
j
s-|
j�tjd�����@|
j�tjd����|dz
}|
j}|
j
r�	t j�|��}	|�|d	��}n-#t(t*f$r|�d
d	��}YnwxYwt-j|��r+|
j�tj����n1#t*$r$t j�|d���}YnwxYw|�|����ld
�|��}||fV���6dS)NrMrr[)�keyr�z.duplicate parameter name; duplicate(s) ignoredz+duplicate parameter name; duplicate ignoredz(inconsistent RFC2231 parameter numbering�surrogateescaperNzlatin-1)�encodingr$)rYr^r�stripr�rR�items�sortedrr�rUr�rr�InvalidHeaderDefectrT�urllib�parse�unquote_to_bytes�decode�LookupError�UnicodeEncodeErrorr�_has_surrogates�UndecodableBytesDefect�unquoter-)r�paramsrH�name�parts�first_paramr��value_parts�irR�paramrs            rrzzMimeParameters.params�sF�������	?�	?�E��#�,�,�[�9�9�
���Q�x�"�k�1�1����8�>�'�'�)�)�D��6�!�!�!��t���4�L����!5�u� =�>�>�>�>�!�<�<�>�>�3	�3	�K�D�%��5�j��m�m�4�4�4�E���(�1�+�K�!�)�G��'�
&�C��J�J��N�N���8�A�;�!�#�#��!�H�Q�K�'�.�.�v�/I�H�0J�0J�K�K�K�!�"�1�"�I�E��K��A�).�!
*�!
*�%���!�Q�&�&�!�>�I��
�,�,�V�-G�I�.K�.K�L�L�L� ��
�,�,�V�-G�F�.H�.H�I�I�I��Q����)���>�R�R� &�� =� =�e� D� D��P�$)�L�L��:K�$L�$L�E�E�� +�-?�@�P�P�P�
%*�L�L��=N�$O�$O�E�E�E�P����!�0��7�7�R�!�M�0�0��1N�1P�1P�Q�Q�Q���.�P�P�P�!'�� 4� 4�U�Y� 4� O� O����	P���� �"�"�5�)�)�)�)��G�G�K�(�(�E���+�����g3	�3	s$�I&�"G9�9'H#�"H#�&+J�Jc	��g}|jD]S\}}|r7|�d�|t|�������>|�|���Td�|��}|rd|zndS)N�{}={}z; rhr$)rzr�r3rr-)rrzr{rs    rr/zMimeParameters.__str__s������;�	$�	$�K�D�%��
$��
�
�g�n�n�T�<��3F�3F�G�G�H�H�H�H��
�
�d�#�#�#�#����6�"�"��%�-�s�V�|�|�2�-rN)r4r]r^rYr_rarzr/rirrrgrg�sJ������"�J��O�
�C�C��X�C�J.�.�.�.�.rrgc�(�eZdZdZed���ZdS)�ParameterizedHeaderValueFc�R�t|��D]}|jdkr	|jcS�iS)Nrh)�reversedrYrzr�s  rrzzParameterizedHeaderValue.params/s>���d�^�^�	$�	$�E���#4�4�4��|�#�#�#�5��	rN)r4r]r^r_rarzrirrr�r�)s4�������O�
����X���rr�c��eZdZdZdZdZdZdS)�ContentTypezcontent-typeF�text�plainN)r4r]r^rYrB�maintype�subtyperirrr�r�7s"�������J��M��H��G�G�Grr�c��eZdZdZdZdZdS)�ContentDispositionzcontent-dispositionFN)r4r]r^rYrB�content_dispositionrirrr�r�>s ������&�J��M����rr�c��eZdZdZdZdZdS)�ContentTransferEncodingzcontent-transfer-encodingF�7bitN)r4r]r^rYrBr�rirrr�r�Ds������,�J��M�
�C�C�Crr�c��eZdZdZdZdS)�HeaderLabelzheader-labelFNrrirrr�r�Js�������J��M�M�Mrr�c��eZdZdZdZd�ZdS)�MsgIDzmsg-idFc�0�t|��|jzSr)r�lineseprMs  rrNz
MsgID.foldSs���4�y�y�6�>�)�)rN)r4r]r^rYrBrNrirrr�r�Os-�������J��M�*�*�*�*�*rr�c��eZdZdZdS)�	MessageIDz
message-idNrsrirrr�r�Xs�������J�J�Jrr�c��eZdZdZdS)�InvalidMessageIDzinvalid-message-idNrsrirrr�r�\s������%�J�J�Jrr�c��eZdZdZdS)�Header�headerNrsrirrr�r�`rwrr�c�~��eZdZdZdZdZ�fd�Z�fd�Zd�Ze	d���Z
d�fd�	Zd�Ze	d	���Z
d
�Z�xZS)�TerminalTc�h��t���||��}||_g|_|Sr)r�__new__rYr)�clsrrYrr"s    �rr�zTerminal.__new__ns-����w�w���s�E�*�*��$�������rc���d�|jjt�������Sr1r2r6s �rr5zTerminal.__repr__ts,������t�~�6����8H�8H�8J�8J�K�K�Krc�N�t|jjdz|jz��dS)N�/)rRr"r4rYr.s rrUzTerminal.pprintws'��
�d�n�%��+�d�o�=�>�>�>�>�>rc�*�t|j��Sr)�listrr.s rr;zTerminal.all_defectszs���D�L�!�!�!rr$c	����d�||jj|jt	�����|jsdnd�|j����gS)Nz
{}{}/{}({}){}r$z {})r3r"r4rYrr5r)rrQr"s  �rrWzTerminal._pp~s_����&�&���N�#��O��G�G������l�B�B�B����T�\�(B�(B����	rc��dSrrir.s r�pop_trailing_wszTerminal.pop_trailing_ws�rrc��gSrrir.s rrGzTerminal.comments�s���	rc�.�t|��|jfSr)rrYr.s r�__getnewargs__zTerminal.__getnewargs__�s���4�y�y�$�/�*�*rr\)r4r]r^rBr`r_r�r5rUrar;rWr�rGr�rbrcs@rr�r�hs���������M����O������L�L�L�L�L�?�?�?��"�"��X�"��������������X��+�+�+�+�+�+�+rr�c�*�eZdZed���Zd�ZdS)�WhiteSpaceTerminalc��dSrgrir.s rrzWhiteSpaceTerminal.value�rjrc��dS)NTrir.s rr?z!WhiteSpaceTerminal.startswith_fws�s���trN�r4r]r^rarr?rirrr�r��s<������
����X������rr�c�*�eZdZed���Zd�ZdS)�
ValueTerminalc��|Srrir.s rrzValueTerminal.value�s���rc��dS)NFrir.s rr?zValueTerminal.startswith_fws�s���urNr�rirrr�r��s<������
����X������rr�c�*�eZdZed���Zd�ZdS)�EWWhiteSpaceTerminalc��dSrrir.s rrzEWWhiteSpaceTerminal.value�s���rrc��dSrrir.s rr/zEWWhiteSpaceTerminal.__str__�s���rrN)r4r]r^rarr/rirrr�r��s<������
����X������rr�c��eZdZdS)�_InvalidEwErrorN)r4r]r^rirrr�r��s������;�;rr�r:�,zlist-separatorFr(zroute-component-markerz([{}]+)r$z[^{}]+z[\x00-\x20\x7F]c��	t|��}|r,|j�tj|����tj|��r.|j�tjd����dSdS)Nz*Non-ASCII characters found in header token)�_non_printable_finderrr�r�NonPrintableDefectrrwrx)�xtext�non_printabless  r�_validate_xtextr��s���J�*�5�1�1�N��H�
�
���V�6�~�F�F�G�G�G���U�#�#�;�
�
���V�:�8�:�:�	;�	;�	;�	;�	;�;�;rc�n�	t|d��^}}g}d}d}tt|����D]D}||dkr
|rd}d}nd}�|rd}n|||vrn!|�||���E|dz}d�|��d�||d�g|z��|fS)Nr�FrTr$)�
_wsp_splitter�ranger�r�r-)r�endchars�fragment�	remainder�vchars�escape�had_qp�poss        r�_get_ptext_to_endcharsr��s����)���2�2��H�y�
�F�
�F�
�F��S��]�]�#�#�����C�=�D� � ��
����������	��F�F�
�c�]�h�
&�
&��E��
�
�h�s�m�$�$�$�$��A�g��
�7�7�6�?�?�B�G�G�X�c�d�d�^�$4�y�$@�A�A�6�I�Irc��	|���}t|dt|��t|��z
�d��}||fS)N�fws)r&r�r�)r�newvaluer�s   r�get_fwsr�sK����|�|�~�~�H�
�U�#<�C��J�J�s�8�}�}�$<�#<�=�u�
E�
E�C���=�rc���	t��}|�d��s'tjd�|�����|dd��dd��^}}||dd�kr'tjd�|�����d�|��}t|��dkrW|dtvrH|dtvr9|�	d��dkr |�dd��^}}|dz|z}t|�����dkr,|j
�tjd	����||_
d�|��}	tjd|zdz��\}}}}	n<#t t"f$r(t%d
�|j
�����wxYw||_||_|j
�|	��|r�|dt,vr(t/|��\}
}|�|
���9t1|d��^}}t3|d��}t5|��|�|��d�|��}|��|r;|dt,vr,|j
�tjd����||fS)
N�=?z"expected encoded word but found {}r�z?=r�r$r�?zwhitespace inside encoded wordz!encoded word format invalid: '{}'�vtextz.missing trailing whitespace after encoded-word)r��
startswithr�HeaderParseErrorr3rr-r�r�countrr�rpr��_ewrt�
ValueError�KeyErrorr�r�r�rF�WSPr�r�r�r�)
r�ewr?r��remstr�restr�r�r�rrH�charsr�s
             r�get_encoded_wordr�s���
���B����D�!�!�@��%�0�7�7��>�>�@�@�	@��A�B�B�i�o�o�d�A�.�.�O�C�)�
�e�A�B�B�i����%�0�7�7��>�>�@�@�	@�
�W�W�Y�
�
�F��F���a����q�	�Y����q�	�Y����	�	�#������!�<�<��a�0�0���y��D�j�4���
�3�9�9�;�;���!���
�
���&�4�,�.�.�	/�	/�	/�
�B�F��G�G�I���E�@�'*�z�$��*�t�2C�'D�'D�$��g�t�W�W����!�@�@�@��/�6�6�r�v�>�>�@�@�	@�@�����B�J��B�G��J���g����
�	"���7�c�>�>�!�$�-�-�K�E�4��I�I�e�����)�$��2�2���	��e�W�-�-�������
�	�	�%�����w�w�y�!�!���	"�
�?��q���$�$�
�
���&�4�<�>�>�	?�	?�	?�
�u�9�s�F.�.9G'c��	t��}|�r�|dtvr(t|��\}}|�|���:d}|�d��r�	t|��\}}d}t
|��dkr?|djdkr.|j�tj
d����d}|r=t
|��dkr*|d	jd
krt|dd��|d<|�|����#t$rd}Yntj
$rYnwxYwt|d��^}}|r1t�|��r|�d��^}}t%|d��}t'|��|�|��d�|��}|���|S)
NrTr�r�r�z&missing whitespace before encoded wordFr����r�r�r$)rqr�r�r�r�r�r�rYrrrpr�r�r�r��rfc2047_matcher�search�	partitionr�r�r-)rrrrH�valid_ew�have_wsr?r�r�s        r�get_unstructuredr�Cs'���,)�*�*�L�
�(#���8�s�?�?�"�5�>�>�L�E�5�����&�&�&�������D�!�!�	�
�/��6�6���u����|�$�$�q�(�(�#�B�'�2�e�;�;�$�,�3�3�F�4N�D�5F�5F�G�G�G�"'���5�s�<�0�0�1�4�4�#�B�'�2�n�D�D�+?�(��,�e�,5�,5��R�(��#�#�E�*�*�*���%#�
!�
!�
!� �����*�
�
�
���
����"(��q�1�1���i��	4��.�.�s�3�3�	4�#�o�o�d�3�3�O�C�)��c�7�+�+����������E�"�"�"����	�"�"��Q�(#�R�s�"D�D=�,D=�<D=c�r�	t|d��\}}}t|d��}t|��||fS)Nz()rE)r�r�r��rrE�_s   r�get_qp_ctextr��sE��
�-�U�D�9�9�O�E�5�!��u�g�.�.�E��E�����%�<�rc�r�	t|d��\}}}t|d��}t|��||fS)NrrE)r�r�r�r�s   r�get_qcontentr��sE���-�U�C�8�8�O�E�5�!��%��)�)�E��E�����%�<�rc��	t|��}|s'tjd�|�����|���}|t|��d�}t
|d��}t|��||fS)Nzexpected atext but found '{}'�atext)�_non_atom_end_matcherrr�r3r�r�r�r�)r�mr�s   r�	get_atextr��s����
	�e�$�$�A��;��%�+�2�2�5�9�9�;�;�	;�
�G�G�I�I�E��#�e�*�*�+�+��E��%��)�)�E��E�����%�<�rc���	|ddkr'tjd�|�����t��}|dd�}|r3|ddkr't	|��\}}|�|��|�r/|ddk�r"|dtvrt|��\}}n�|dd�dkr�d}	t|��\}}|j	�tj
d����d	}n'#tj$rt	|��\}}YnwxYw|rNt|��dkr;|d
jdkr*|djd
krt|d
d��|d
<nt	|��\}}|�|��|r
|ddk��"|s0|j	�tj
d����||fS||dd�fS)Nrrzexpected '"' but found '{}'r�r�r�Fz!encoded word inside quoted stringTr�r�r�r�z"end of header inside quoted string)rr�r3r�r�r�r�r�r�rrpr�rYr�)r�bare_quoted_stringrHr�s    r�get_bare_quoted_stringr��sJ���
�Q�x�3����%�*�1�1�%�8�8�:�:�	:�)�+�+���!�"�"�I�E��)��q��S���#�E�*�*���u��!�!�%�(�(�(�
�)�E�!�H��O�O���8�s�?�?�"�5�>�>�L�E�5�5�
�2�A�2�Y�$�
�
��H�
3�/��6�6���u�"�*�1�1�&�2L�7�39�39�:�:�:������*�
3�
3�
3�+�E�2�2���u�u�u�
3�����
7�C� 2�3�3�a�7�7�&�r�*�5��>�>�*�2�.�9�^�K�K�-A�*�2�.��.7�.7�&�r�*��(��.�.�L�E�5��!�!�%�(�(�(�+�)�E�!�H��O�O�,�)��"�)�)�&�*D�0�+2�+2�	3�	3�	3�!�5�(�(��u�Q�R�R�y�(�(s�AD�!D*�)D*c�"�	|r3|ddkr'tjd�|�����t��}|dd�}|r�|ddkrv|dtvrt|��\}}n1|ddkrt
|��\}}nt|��\}}|�|��|r|ddk�v|s0|j	�tj
d����||fS||dd�fS)Nrrzexpected '(' but found '{}'r�r�zend of header inside comment)rr�r3r�r�r��get_commentr�r�rrp)rrmrHs   rr�r��s7���

�9��q��S����%�)�0�0��7�7�9�9�	9��i�i�G��!�"�"�I�E�
��E�!�H��O�O���8�s�?�?�"�5�>�>�L�E�5�5�
�1�X��_�_�&�u�-�-�L�E�5�5�'��.�.�L�E�5����u������E�!�H��O�O�������v�9�*� ,� ,�	-�	-�	-���~���E�!�"�"�I��rc��	t��}|ri|dtvrZ|dtvrt|��\}}nt	|��\}}|�|��|r|dtv�Z||fSr>)r}�CFWS_LEADERr�r�r�r�)rr~rHs   r�get_cfwsr��s�����:�:�D�
��E�!�H��+�+���8�s�?�?�"�5�>�>�L�E�5�5�&�u�-�-�L�E�5����E������E�!�H��+�+���;�rc�V�	t��}|r6|dtvr't|��\}}|�|��t	|��\}}|�|��|r6|dtvr't|��\}}|�|��||fSr>)r�r�r�r�r�)r�
quoted_stringrHs   r�get_quoted_stringrs����!�N�N�M��$��q��[�(�(�������u����U�#�#�#�)�%�0�0�L�E�5���������$��q��[�(�(�������u����U�#�#�#��%��rc�f�	t��}|r6|dtvr't|��\}}|�|��|r6|dtvr'tjd�|�����|�d��r;	t|��\}}n9#t
j$rt|��\}}YnwxYwt|��\}}|�|��|r6|dtvr't|��\}}|�|��||fS)Nrzexpected atom but found '{}'r�)r�r�r�r��	ATOM_ENDSrr�r3r�r�r�)rr�rHs   r�get_atomrsN����6�6�D����q��[�(�(�������u����E�����:��q��Y�&�&��%�*�1�1�%�8�8�:�:�	:�������(�	,�+�E�2�2�L�E�5�5���&�	,�	,�	,�%�U�+�+�L�E�5�5�5�	,����
!��'�'���u��K�K��������q��[�(�(�������u����E������;�s�B)�)!C
�C
c��	t��}|r|dtvr'tjd�|�����|ry|dtvrjt|��\}}|�|��|r0|ddkr$|�t��|dd�}|r|dtv�j|dtur*tjd�d|z�����||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'r	r�r�z4expected atom at end of dot-atom-text but found '{}')rrrr�r3r�r�r;)r�
dot_atom_textrHs   r�get_dot_atom_textr4s��� �M�M�M��:�E�!�H�	�)�)��%�'+�+1�6�%�=�=�:�:�	:�
��E�!�H�I�-�-� ��'�'���u����U�#�#�#��	�U�1�X��_�_�� � ��%�%�%��!�"�"�I�E���E�!�H�I�-�-��R��C����%�'�#�V�C��I�.�.�0�0�	0��%��rc���	t��}|dtvr't|��\}}|�|��|�d��r;	t|��\}}n9#tj$rt|��\}}YnwxYwt|��\}}|�|��|r6|dtvr't|��\}}|�|��||fS)Nrr�)	rr�r�r�r�r�rr�r)r�dot_atomrHs   r�get_dot_atomrGs���
�y�y�H��Q�x�;���������u��������������0�	4�+�E�2�2�L�E�5�5���&�	4�	4�	4�-�U�3�3�L�E�5�5�5�	4����
)��/�/���u��O�O�E�������q��[�(�(�������u���������U�?�s�A/�/!B�Bc�b�	|dtvrt|��\}}nd}|stjd���|ddkrt	|��\}}nH|dt
vr'tjd�|�����t|��\}}|�|g|dd�<||fS)Nrz5Expected 'atom' or 'quoted-string' but found nothing.rz1Expected 'atom' or 'quoted-string' but found '{}')r�r�rr�r�SPECIALSr3r)r�leaderrHs   r�get_wordr`s����
�Q�x�;��� ����
�������E��%�C�E�E�	E��Q�x��}�}�(��/�/���u�u�	�q��X�	�	��%�'7�7=�v�e�}�}�F�F�	F� ������u�
���H��b�q�b�	��%�<�rc��	t��}	t|��\}}|�|��nA#tj$r/|j�tjd����YnwxYw|�r
|dtvr�|ddkrQ|�t��|j�tj	d����|dd�}n�	t|��\}}nd#tj$rR|dtvr?t|��\}}|j�tj	d����n�YnwxYw|�|��|r|dtv��||fS)Nzphrase does not start with wordrr	zperiod in 'phrase'r�zcomment found without atom)rurr�rr�rrp�PHRASE_ENDSr;�ObsoleteHeaderDefectr�r�)rrvrHs   r�
get_phraser�s���
��X�X�F�0�������u��
�
�e�������"�0�0�0�����f�8�-�/�/�	0�	0�	0�	0�	0�0�����!�E�!�H�K�/�/���8�S�=�=��M�M�#�����N�!�!�&�"=�$�#&�#&�
'�
'�
'��!�"�"�I�E�E�
�'������u�u���*�
�
�
���8�{�*�*�#+�E�?�?�L�E�5��N�)�)�&�*E�4�+6�+6�7�7�7�7��7�7�
����
�M�M�%� � � �!�!�E�!�H�K�/�/�"�5�=�s"�'9�;A7�6A7�*C=�=AE�Ec��	t��}d}|dtvrt|��\}}|s'tjd�|�����	t
|��\}}nh#tj$rV	t|��\}}n?#tj$r-|ddkr|dtvr�t��}YnwxYwYnwxYw|�|g|dd�<|�
|��|r�|ddks|dtvr�tt|��|z��\}}|j
dkr-|j�
tjd����n,|j�
tjd����||d<	|j�d��n<#t&$r/|j�
tjd����YnwxYw||fS)	Nrz"expected local-part but found '{}'r�invalid-obs-local-partz<local-part is not dot-atom, quoted-string, or obs-local-partz,local-part is not a dot-atom (contains CFWS)�asciiz)local-part contains non-ASCII characters))r7r�r�rr�r3rrrrr��get_obs_local_partrrYrrprr�encoderv�NonASCIILocalPartDefect)rr�rrH�obs_local_parts     r�get_local_partr�sl������J�
�F��Q�x�;��� ����
����@��%�0�7�7��>�>�@�@�	@� �#�E�*�*���u�u���"� � � �	 �#�E�?�?�L�E�5�5���&�	 �	 �	 ��Q�x�4���E�!�H��$;�$;���K�K�E�E�E�	 ������ �������H��b�q�b�	����e�����'�%��(�D�.�.�E�!�H�K�$?�$?� 2�3�z�?�?�U�3J� K� K�����$�(@�@�@���%�%�f�&@�N�'P�'P�
Q�
Q�
Q�
Q�
��%�%�f�&A�>�'@�'@�
A�
A�
A�&�
�1�
�>������(�(�(�(���>�>�>���!�!�&�"@�;�#=�#=�	>�	>�	>�	>�	>�>�����u��sH�A0�0C�B�C�9C�C�C�C�C� F;�;6G4�3G4c� �	t��}d}|�r�|ddks|dtv�r�|ddkrU|r,|j�t	jd����|�t��d}|dd�}��|ddkrb|�t|dd����|dd�}|j�t	jd	����d}��|r=|d
jdkr,|j�t	jd����	t|��\}}d}n7#tj
$r%|dtvr�t|��\}}YnwxYw|�|��|r|ddk��|dtv���|djdks"|djd
kr=|djdkr,|j�t	jd����|d
jdks"|d
jd
kr=|djdkr,|j�t	jd����|jrd|_||fS)NFrrr	zinvalid repeated '.'Tr��misplaced-specialz/'\' character outside of quoted-string/ccontentr�r:zmissing '.' between wordsr~z!Invalid leading '.' in local partr�z"Invalid trailing '.' in local partr)
r.rrr�rrpr;r�rYrr�r�r�)rr�last_non_ws_was_dotrHs    rrr�s����!�^�^�N���
�%�U�1�X�t�^�^�u�Q�x�{�'B�'B���8�s�?�?�"�
-��&�-�-�f�.H�*�/,�/,�-�-�-��!�!�#�&�&�&�"&���!�"�"�I�E��
�1�X�t�^�^��!�!�-��a��0C�#E�#E�
F�
F�
F��!�"�"�I�E��"�)�)�&�*D�B�+D�+D�
E�
E�
E�"'����	.�n�R�0�;�u�D�D��"�)�)�&�*D�+�+-�+-�
.�
.�
.�	+�#�E�?�?�L�E�5�"'�����&�	+�	+�	+��Q�x�{�*�*��#�E�?�?�L�E�5�5�5�	+����	���e�$�$�$�7�%�U�1�X�t�^�^�u�Q�x�{�'B�'B�8	�q��$��-�-��1��(�&�0�0��1��(�%�/�/���%�%�f�&@�/�'1�'1�	2�	2�	2��r��%��.�.��2��)�6�1�1��2��)�5�0�0���%�%�f�&@�0�'2�'2�	3�	3�	3���=�$<��!��5� � s�E�1F	�F	c���	t|d��\}}}t|d��}|r,|j�t	jd����t
|��||fS)Nz[]rEz(quoted printable found in domain-literal)r�r�rr�rrr�)rrEr�s   r�	get_dtextr �sz��
�2�%��>�>��E�5�&��%��)�)�E�
�9�
�
���V�8�6�8�8�	9�	9�	9��E�����%�<�rc��|rdS|�tjd����|�tdd����dS)NFz"end of input inside domain-literal�]�domain-literal-endT)r�rrpr�)r�domain_literals  r�_check_for_early_dl_endr%s]�����u����&�4�,�.�.�/�/�/����-��-A�B�B�C�C�C��4rc�N�	t��}|dtvr't|��\}}|�|��|st	jd���|ddkr't	jd�|�����|dd�}t||��r||fS|�tdd����|dtvr't|��\}}|�|��t|��\}}|�|��t||��r||fS|dtvr't|��\}}|�|��t||��r||fS|ddkr't	jd�|�����|�tdd	����|dd�}|r6|dtvr't|��\}}|�|��||fS)
Nrzexpected domain-literal�[z6expected '[' at start of domain-literal but found '{}'r�zdomain-literal-startr"z4expected ']' at end of domain-literal but found '{}'r#)rBr�r�r�rr�r3r%r�r�r�r )rr$rHs   r�get_domain_literalr(s;���#�_�_�N��Q�x�;���������u����e�$�$�$��A��%�&?�@�@�@��Q�x�3����%�'!�!'�����0�0�	0��!�"�"�I�E��u�n�5�5�%��u�$�$����-��-C�D�D�E�E�E��Q�x�3����u�~�~���u����e�$�$�$��U�#�#�L�E�5����%� � � ��u�n�5�5�%��u�$�$��Q�x�3����u�~�~���u����e�$�$�$��u�n�5�5�%��u�$�$��Q�x�3����%�'!�!'�����0�0�	0����-��-A�B�B�C�C�C��!�"�"�I�E��%��q��[�(�(�������u����e�$�$�$��5� � rc��	t��}d}|dtvrt|��\}}|s'tjd�|�����|ddkr5t
|��\}}|�|g|dd�<|�|��||fS	t|��\}}n'#tj$rt|��\}}YnwxYw|r |ddkrtjd���|�|g|dd�<|�|��|r�|ddkr�|j
�tjd����|djdkr
|d|dd�<|rc|ddkrW|�t��t|d	d���\}}|�|��|r|ddk�W||fS)
Nrzexpected domain but found '{}'r'r(zInvalid Domainr	z(domain is not a dot-atom (contains CFWS)rr�)rr�r�rr�r3r(r�rrrrrYr;)rr�rrHs    r�
get_domainr*As����X�X�F�
�F��Q�x�;��� ����
����<��%�,�3�3�E�:�:�<�<�	<��Q�x�3���)�%�0�0���u�����E�"�1�"�I��
�
�e�����u�}��'�#�E�*�*���u�u���"�'�'�'�������u�u�u�'�����8��q��S����%�&6�7�7�7�
���H��b�q�b�	�
�M�M�%�����!��q��S�������f�9�6�8�8�	9�	9�	9��!�9��:�-�-��q�	�F�1�1�1�I��	!��a��C����M�M�#����#�E�!�"�"�I�.�.�L�E�5��M�M�%� � � ��	!��a��C����5�=�s�B1�1!C�Cc��	t��}t|��\}}|�|��|r|ddkr0|j�t	jd����||fS|�t
dd����t|dd���\}}|�|��||fS)Nrr(z#addr-spec local part with no domain�address-at-symbolr�)r rr�rrrpr�r*)rr�rHs   r�
get_addr_specr-gs�����
�
�I�!�%�(�(�L�E�5�
���U����� �E�!�H��O�O��� � ��!;�1�"3�"3�	4�	4�	4��%���
���]�3�(;�<�<�=�=�=��e�A�B�B�i�(�(�L�E�5�
���U�����e��rc���	t��}|r�|ddks|dtvr�|dtvr(t|��\}}|�|��n0|ddkr$|�t��|dd�}|r|ddk�u|dtv��|r|ddkr'tjd�|�����|�t��t|dd���\}}|�|��|r�|ddkr�|�t��|dd�}|sn�|dtvr't|��\}}|�|��|ddkrI|�t��t|dd���\}}|�|��|r|ddk��|stjd���|ddkr'tjd�|�����|�tdd	����||dd�fS)
Nrr�r�r(z(expected obs-route domain but found '{}'z%end of header while parsing obs-route�:z4expected ':' marking end of obs-route but found '{}'zend-of-obs-route-marker)rr�r�r��
ListSeparatorrr�r3�RouteComponentMarkerr*r�)r�	obs_routerHs   r�
get_obs_router3ws�����
�
�I�
��U�1�X�s�]�]�e�A�h�+�&=�&=���8�{�"�"�#�E�?�?�L�E�5����U�#�#�#�#�
�1�X��_�_����]�+�+�+��!�"�"�I�E�
��U�1�X�s�]�]�e�A�h�+�&=�&=��F�E�!�H��O�O��%�6�=�=�e�D�D�F�F�	F�
���)�*�*�*��e�A�B�B�i�(�(�L�E�5�
���U����
�$�E�!�H�c�M�M�����'�'�'��a�b�b�	���	����8�{�"�"�#�E�?�?�L�E�5����U�#�#�#���8�s�?�?����1�2�2�2�%�e�A�B�B�i�0�0�L�E�5����U�#�#�#��$�E�!�H�c�M�M��O��%�&M�N�N�N��Q�x�3����%�('�'-�v�e�}�}�6�6�	6�
���]�3�(A�B�B�C�C�C��e�A�B�B�i��rc�(�	t��}|dtvr't|��\}}|�|��|r|ddkr't	jd�|�����|�tdd����|dd�}|ddkr]|�tdd����|j�t	j	d����|dd�}||fS	t|��\}}n�#tj$r�	t|��\}}|j�t	jd	����n:#tj$r(t	jd
�|�����wxYw|�|��t|��\}}YnwxYw|�|��|r|ddkr|dd�}n,|j�t	j	d����|�tdd����|r6|dtvr't|��\}}|�|��||fS)Nr�<z"expected angle-addr but found '{}'zangle-addr-startr��>zangle-addr-endznull addr-spec in angle-addrz*obsolete route specification in angle-addrz.expected addr-spec or obs-route but found '{}'z"missing trailing '>' on angle-addr)
r�r�r�r�rr�r3r�rrpr-r3r)r�
angle_addrrHs   r�get_angle_addrr8�s�������J��Q�x�;���������u����%� � � ��@�E�!�H��O�O��%�0�7�7��>�>�@�@�	@����m�C�);�<�<�=�=�=��!�"�"�I�E�
�Q�x�3������-��-=�>�>�?�?�?���!�!�&�"<�*�#,�#,�	-�	-�	-��a�b�b�	���5� � �,�$�U�+�+���u�u���"�	,�	,�	,�	P�(��/�/�L�E�5���%�%�f�&A�<�'>�'>�
?�
?�
?�
?���&�	P�	P�	P��)�@�G�G��N�N�P�P�
P�	P����	���%� � � �$�U�+�+���u�u�u�	,�������e�����3��q��S����a�b�b�	�����!�!�&�"<�0�#2�#2�	3�	3�	3����m�C�)9�:�:�;�;�;��!��q��[�(�(�������u����%� � � ��u��s*�D%�%G�5>E4�3G�47F+�+*G�Gc��	t��}t|��\}}|�|dd���|jdd�|_||fSr)r0rrFr)rr�rHs   r�get_display_namer:�s]����=�=�L��e�$�$�L�E�5�����a�a�a��!�!�!� �=����+�L�����rc�j�	t��}d}|dtvr;t|��\}}|s'tjd�|�����|ddkr�|dtvr'tjd�|�����t|��\}}|s'tjd�|�����|�|g|ddd�<d}|�|��t|��\}}|�|g|dd�<|�|��||fS)Nrz!expected name-addr but found '{}'r5)
r�r�r�rr�r3rr:r�r8)r�	name_addrrrHs    r�
get_name_addrr=�sf����
�
�I�
�F��Q�x�;��� ����
����	D��)�3�:�:�6�B�B�D�D�
D��Q�x�3�����8�{�"�"��)�3�:�:�5�A�A�C�C�
C�'��.�.���u��	C��)�3�:�:�5�A�A�C�C�
C���"�8�E�!�H�R�a�R�L��F��������!�%�(�(�L�E�5�
���H��b�q�b�	�
���U�����e��rc��	t��}	t|��\}}nc#tj$rQ	t	|��\}}n:#tj$r(tjd�|�����wxYwYnwxYwt
d�|jD����rd|_|�	|��||fS)Nzexpected mailbox but found '{}'c3�JK�|]}t|tj��V��dSr)r<rrpr's  rr*zget_mailbox.<locals>.<genexpr>
sC����3�3���a��3�4�4�3�3�3�3�3�3rr�)
rr=rr�r-r3�anyr;rYr�)rr�rHs   r�get_mailboxrA�s���
�i�i�G�A�$�U�+�+���u�u���"�A�A�A�	A�(��/�/�L�E�5�5���&�	A�	A�	A��)�1�8�8��?�?�A�A�
A�	A�����5�A�����3�3� %� 1�3�3�3�3�3�/�.����N�N�5�����E�>��&�$�B�A�B�7A>�>B�Bc�,�	t��}|r�|d|vrv|dtvr4|�t|dd����|dd�}n't	|��\}}|�|��|r
|d|v�v||fS)Nrrr�)r
rr�r�r)rr��invalid_mailboxrHs    r�get_invalid_mailboxrEs����%�&�&�O�
�*�E�!�H�H�,�,���8�{�"�"��"�"�=��q��1D�$F�$F�
G�
G�
G��!�"�"�I�E�E�%�e�,�,�L�E�5��"�"�5�)�)�)��*�E�!�H�H�,�,��E�!�!rc��	t��}|�rd|ddk�rW	t|��\}}|�|���n}#tj$�rjd}|dt
vr�t
|��\}}|r
|ddvrB|�|��|j�tjd����n�t|d��\}}|�|g|dd�<|�|��|j�tj
d����n�|ddkr-|j�tjd����n^t|d��\}}|�|g|dd�<|�|��|j�tj
d����YnwxYw|rm|ddvrc|d}d|_t|d��\}}|�|��|j�tj
d����|r0|ddkr$|�t��|d	d�}|r
|ddk��W||fS)
Nr�;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listr�r�r�r�)r�rAr�rr�r�r�rrrErprYrFr0)r�mailbox_listrHrr�s     r�get_mailbox_listrI"s���
��=�=�L�
�(�E�!�H��O�O�	8�&�u�-�-�L�E�5�����&�&�&�&���&�	8�	8�	8��F��Q�x�;�&�&� (����
����
<��a��D� 0� 0� �'�'��/�/�/� �(�/�/��0K�7�19�19�:�:�:�:�$7�u�d�#C�#C�L�E�5��)�%+�H��b�q�b�	� �'�'��.�.�.� �(�/�/��0J�9�1;�1;�<�<�<�<��q��S����$�+�+�F�,G�3�-5�-5�6�6�6�6� 3�5�$�?�?���u��%�!'��E�"�1�"�I��#�#�E�*�*�*��$�+�+�F�,F�5�-7�-7�8�8�8���/	8����2�	4�U�1�X�T�)�)�#�2�&�G�!2�G��.�u�d�;�;�L�E�5��N�N�5�!�!�!�� �'�'��(B�1�)3�)3�
4�
4�
4��	�U�1�X��_�_����
�.�.�.��!�"�"�I�E�Q�(�E�!�H��O�O�R���s�'A
�
E7G�Gc��	t��}|s0|j�tjd����||fSd}|r�|dt
vr~t
|��\}}|sE|j�tjd����|�|��||fS|ddkr|�|��||fSt|��\}}t|j	��dkr\|�|�|��|�
|��|j�tjd����||fS|�|g|dd�<|�|��||fS)Nzend of header before group-listrzend of header in group-listrGzgroup-list with empty entries)r�rr�rrpr�r�rIr�r�rFr)r�
group_listrrHs    r�get_group_listrL[s�������J��!���!�!�&�"<�-�#/�#/�	0�	0�	0��5� � �
�F��%��q��[�(�(� ����
����	%�
��%�%�f�&@�-�'/�'/�
0�
0�
0����f�%�%�%��u�$�$���8�s�?�?����f�%�%�%��u�$�$�#�E�*�*�L�E�5�
�5�����"�"������f�%�%�%����%� � � ���!�!�&�"=�+�#-�#-�	.�	.�	.��5� � �
���H��b�q�b�	����e�����u��rc��	t��}t|��\}}|r|ddkr'tjd�|�����|�|��|�t
dd����|dd�}|r;|ddkr/|�t
dd����||dd�fSt|��\}}|�|��|s-|j�tj	d����n3|ddkr'tjd	�|�����|�t
dd����|dd�}|r6|dtvr't|��\}}|�|��||fS)
Nrr/z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorr�rGzgroup-terminatorzend of header in groupz)expected ';' at end of group but found {})r�r:rr�r3r�r�rLrrpr�r�)rr�rHs   r�	get_grouprN�s����
�G�G�E�#�E�*�*�L�E�5��9�E�!�H��O�O��%�'*�*0�&��-�-�9�9�	9�	�L�L�����	�L�L��s�$C�D�D�E�E�E��!�"�"�I�E�� ��q��S���
���]�3�(:�;�;�<�<�<��e�A�B�B�i���!�%�(�(�L�E�5�	�L�L������G�
�
���V�7�$�&�&�	'�	'�	'�	'�	�q��S����%�7�>�>�u�E�E�G�G�	G�	�L�L��s�$6�7�7�8�8�8��!�"�"�I�E����q��[�(�(�������u�
���U�����%�<�rc�@�	t��}	t|��\}}nc#tj$rQ	t	|��\}}n:#tj$r(tjd�|�����wxYwYnwxYw|�|��||fS)Nzexpected address but found '{}')r�rNrr�rAr3r�)rr�rHs   r�get_addressrP�s���� �i�i�G�A� ��'�'���u�u���"�A�A�A�	A�&�u�-�-�L�E�5�5���&�	A�	A�	A��)�1�8�8��?�?�A�A�
A�	A�����5�A�����N�N�5�����E�>�rBc��	t��}|�rm	t|��\}}|�|���n�#tj$�r�}d}|dt
vr�t
|��\}}|r|ddkrC|�|��|j�tjd�����nt|d��\}}|�|g|dd�<|�t|g����|j�tjd����n�|ddkr-|j�tjd����nlt|d��\}}|�|g|dd�<|�t|g����|j�tjd����Yd}~nd}~wwxYw|ru|ddkri|dd}d|_t|d��\}}|�
|��|j�tjd����|r$|�t��|dd�}|��m||fS)	Nrr�z"address-list entry with no contentzinvalid address in address-listzempty element in address-listr�r�r�)r�rPr�rr�r�r�rrrEr�rprYrFr0)r�address_listrH�errrr�s      r�get_address_listrT�s�����=�=�L�
�(�	8�&�u�-�-�L�E�5�����&�&�&�&���&�	8�	8�	8��F��Q�x�;�&�&� (����
����
<��a��C��� �'�'��/�/�/� �(�/�/��0K�<�1>�1>�?�?�?�?�$7�u�c�#B�#B�L�E�5��)�%+�H��b�q�b�	� �'�'����(8�(8�9�9�9� �(�/�/��0J�9�1;�1;�<�<�<�<��q��S����$�+�+�F�,G�3�-5�-5�6�6�6�6� 3�5�#�>�>���u��%�!'��E�"�1�"�I��#�#�G�U�G�$4�$4�5�5�5��$�+�+�F�,F�5�-7�-7�8�8�8����������/	8����2�	4�U�1�X��_�_�#�2�&�q�)�G�!2�G��.�u�c�:�:�L�E�5��N�N�5�!�!�!�� �'�'��(B�1�)3�)3�
4�
4�
4��	����
�.�.�.��!�"�"�I�E�Q�(�R���s�'=�G�
FG�Gc�H�	t��}|s'tjd�|�����|ddkr'tjd�|�����|�tdd����|dd�}t
|��\}}|�|��|r|ddkr'tjd�|�����|�tdd	����||dd�fS)
Nz'expected no-fold-literal but found '{}'rr'z;expected '[' at the start of no-fold-literal but found '{}'zno-fold-literal-startr�r"z9expected ']' at the end of no-fold-literal but found '{}'zno-fold-literal-end)rrr�r3r�r�r )r�no_fold_literalrHs   r�get_no_fold_literalrW�s4���#�o�o�O��E��%�5�<�<�U�C�C�E�E�	E��Q�x�3����%�
�#�V�E�]�]�,�,�	,����=��.E�F�F�G�G�G��!�"�"�I�E��U�#�#�L�E�5����5�!�!�!��,�E�!�H��O�O��%�
�#�V�E�]�]�,�,�	,����=��.C�D�D�E�E�E��E�!�"�"�I�%�%rc�(�	t��}|r6|dtvr't|��\}}|�|��|r|ddkr't	jd�|�����|�tdd����|dd�}	t|��\}}n�#tj$r}	t|��\}}|j
�t	jd����n:#tj$r(t	jd�|�����wxYwYnwxYw|�|��|r|ddkrk|j
�t	jd	����|r9|dd
kr-|�td
d����|dd�}||fS|�tdd����|dd�}	t|��\}}n�#tj$r�	t|��\}}n�#tj$r�}	t|��\}}|j
�t	jd
����n:#tj$r(t	jd�|�����wxYwYd}~nd}~wwxYwYnwxYw|�|��|r|dd
kr|dd�}n,|j
�t	jd����|�td
d����|r6|dtvr't|��\}}|�|��||fS)Nrr5zexpected msg-id but found '{}'zmsg-id-startr�zobsolete id-left in msg-idz4expected dot-atom-text or obs-id-left but found '{}'r(zmsg-id with no id-rightr6z
msg-id-endr,zobsolete id-right in msg-idzFexpected dot-atom-text, no-fold-literal or obs-id-right but found '{}'zmissing trailing '>' on msg-id)r�r�r�r�rr�r3r�rrrrrprWr*)r�msg_idrH�es    r�
get_msg_idr[s���
�W�W�F����q��[�(�(�������u��
�
�e�����<�E�!�H��O�O��%�,�3�3�E�:�:�<�<�	<�
�M�M�-��^�4�4�5�5�5��!�"�"�I�E�1�(��/�/���u�u���"�	1�	1�	1�	1�-�e�4�4�L�E�5��N�!�!�&�"=�,�#.�#.�
/�
/�
/�
/���&�	1�	1�	1��)�"�"(�&��-�-�1�1�
1�	1����
/�
/�		1�����M�M�%�����	�E�!�H��O�O�����f�8�%�'�'�	(�	(�	(�
�	�U�1�X��_�_��M�M�-��\�:�:�;�;�;��!�"�"�I�E��u�}��
�M�M�-��%8�9�9�:�:�:��!�"�"�I�E�
5�(��/�/���u�u���"�5�5�5�
	5�.�u�5�5�L�E�5�5���&�	5�	5�	5�
5�)�%�0�0���u���%�%�f�&A�1�'3�'3�4�4�4�4���*�
5�
5�
5��-�&�&,�f�U�m�m�5�5�5�
5����4�4�4�4�4�����	5������5�����M�M�%�����/��q��S����a�b�b�	�������f�8�,�.�.�	/�	/�	/�
�M�M�-��\�2�2�3�3�3����q��[�(�(�������u��
�
�e�����5�=�sx�+B>�>E
�>D
�E
�
7E�E
�	E
�	H�K�,H?�>K�?K�>J�
K
�7K�K
�K�
K�K�Kc���	t��}	t|��\}}|�|��|r?|j�t	jd�|������ny#tj$rg}t|��}t|��}|j�t	jd�|������Yd}~nd}~wwxYw|S)NzUnexpected {!r}zInvalid msg-id: {!r})
r�r[r�rrrpr3r�r�r�)r�
message_idrH�exs    r�parse_message_idr_Ms#������J�2�!�%�(�(���u����%� � � ��	2���%�%�f�&@�!�(�(��/�/�'1�'1�
2�
2�
2����"�K�K�K� ��'�'��%�e�,�,�
���!�!��&�'=�'D�'D�R�'H�'H�I�I�	K�	K�	K�	K�	K�	K�	K�	K�����K�����s�'A:�:C0�	AC+�+C0c��	t��}|s.|j�tjd����|S|dt
vrUt
|��\}}|�|��|s,|j�tjd����d}|rM|ddkrA|dt
vr2||dz
}|dd�}|r|ddkr|dt
v�2|���sc|j�tjd�	|������|�t|d����n7t|��|_|�t|d	����|r6|dt
vr't
|��\}}|�|��|r|ddkrZ|j�,|j�tjd
����|r#|�t|d����|S|�tdd����|dd�}|r6|dt
vr't
|��\}}|�|��|s5|j�,|j�tjd
����|Sd}|r5|dt
vr&||dz
}|dd�}|r|dt
v�&|���sc|j�tjd�	|������|�t|d����n7t|��|_
|�t|d	����|r6|dt
vr't
|��\}}|�|��|rO|j�tjd
����|�t|d����|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSr$r	r�z1Expected MIME major version number but found {!r}r��digitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)rHrr�r�HeaderMissingRequiredValuer�r��isdigitrpr3r��intrIrJ)r�mime_versionrHras    r�parse_mime_versionrfis����
�=�=�L�����#�#�F�$E�3�%5�%5�	6�	6�	6����Q�x�;���������u����E�"�"�"��	E�� �'�'��(I�B�)D�)D�
E�
E�
E�
�F�
��E�!�H��O�O��a���(C�(C��%��(����a�b�b�	����E�!�H��O�O��a���(C�(C��>�>���=���#�#�F�$>�?�F�F�v�N�N�%P�%P�	Q�	Q�	Q����M�&�'�:�:�;�;�;�;� ��[�[������M�&�(�;�;�<�<�<��#��q��[�(�(�������u����E�"�"�"���E�!�H��O�O���)�� �'�'��(B�B�)D�)D�
E�
E�
E��	?����
�e�W� =� =�>�>�>������
�c�+>�?�?�@�@�@��!�"�"�I�E��#��q��[�(�(�������u����E�"�"�"�����)�� �'�'��(B�B�)D�)D�
E�
E�
E���
�F�
��E�!�H�K�/�/��%��(����a�b�b�	����E�!�H�K�/�/��>�>���=���#�#�F�$>�?�F�F�v�N�N�%P�%P�	Q�	Q�	Q����M�&�'�:�:�;�;�;�;� ��[�[������M�&�(�;�;�<�<�<��#��q��[�(�(�������u����E�"�"�"��;���#�#�F�$>�5�%7�%7�	8�	8�	8����M�%��9�9�:�:�:��rc�4�	t��}|r�|ddkrx|dtvr4|�t|dd����|dd�}n't	|��\}}|�|��|r|ddk�x||fS)NrrGrr�)rWrr�r�r)r�invalid_parameterrHs   r�get_invalid_parameterri�s����)�*�*��
�,�E�!�H��O�O���8�{�"�"��$�$�]�5��8�3F�&H�&H�
I�
I�
I��!�"�"�I�E�E�%�e�,�,�L�E�5��$�$�U�+�+�+��,�E�!�H��O�O��e�#�#rc��	t|��}|s'tjd�|�����|���}|t|��d�}t
|d��}t|��||fS)Nzexpected ttext but found '{}'�ttext)�_non_token_end_matcherrr�r3r�r�r�r�)rr�rks   r�	get_ttextrm�s����	�u�%�%�A��;��%�+�2�2�5�9�9�;�;�	;�
�G�G�I�I�E��#�e�*�*�+�+��E��%��)�)�E��E�����%�<�rc���	t��}|r6|dtvr't|��\}}|�|��|r6|dtvr'tjd�|�����t|��\}}|�|��|r6|dtvr't|��\}}|�|��||fS�Nrzexpected token but found '{}')	r�r�r�r��
TOKEN_ENDSrr�r3rm)r�mtokenrHs   r�	get_tokenrr�s�����W�W�F����q��[�(�(�������u��
�
�e�����;��q��Z�'�'��%�+�2�2�5�9�9�;�;�	;��U�#�#�L�E�5�
�M�M�%�������q��[�(�(�������u��
�
�e�����5�=�rc��	t|��}|s'tjd�|�����|���}|t|��d�}t
|d��}t|��||fS)Nz expected attrtext but found {!r}r])�_non_attribute_end_matcherrr�r3r�r�r�r��rr�r]s   r�get_attrtextrv�s����	#�5�)�)�A��>��%�.�5�5�e�<�<�>�>�	>��w�w�y�y�H��#�h�-�-�.�.�!�E��X�z�2�2�H��H�����U�?�rc���	t��}|r6|dtvr't|��\}}|�|��|r6|dtvr'tjd�|�����t|��\}}|�|��|r6|dtvr't|��\}}|�|��||fSro)	rZr�r�r��ATTRIBUTE_ENDSrr�r3rv�rr[rHs   r�
get_attributerz�s�������I�� ��q��[�(�(�������u���������;��q��^�+�+��%�+�2�2�5�9�9�;�;�	;���&�&�L�E�5�
���U����� ��q��[�(�(�������u���������e��rc��	t|��}|s'tjd�|�����|���}|t|��d�}t
|d��}t|��||fS)Nz)expected extended attrtext but found {!r}�extended-attrtext)�#_non_extended_attribute_end_matcherrr�r3r�r�r�r�rus   r�get_extended_attrtextr~	s����	,�E�2�2�A��G��%�7�>�>�u�E�E�G�G�	G��w�w�y�y�H��#�h�-�-�.�.�!�E��X�':�;�;�H��H�����U�?�rc���	t��}|r6|dtvr't|��\}}|�|��|r6|dtvr'tjd�|�����t|��\}}|�|��|r6|dtvr't|��\}}|�|��||fSro)	rZr�r�r��EXTENDED_ATTRIBUTE_ENDSrr�r3r~rys   r�get_extended_attributer�%	s�������I�� ��q��[�(�(�������u���������;��q��4�4�4��%�+�2�2�5�9�9�;�;�	;�(��/�/�L�E�5�
���U����� ��q��[�(�(�������u���������e��rc��	t��}|r|ddkr'tjd�|�����|�tdd����|dd�}|r|d���s'tjd�|�����d}|rK|d���r1||dz
}|dd�}|r|d����1|ddkr2|dkr,|j�tjd	����t|��|_
|�t|d
����||fS)Nr�*zExpected section but found {}zsection-markerr�z$Expected section number but found {}r$�0z'section number has an invalid leading 0ra)rarr�r3r�r�rcrrprdrQ)rrbras   r�get_sectionr�;	s�����i�i�G��0�E�!�H��O�O��%�&E�&L�&L�(-�'/�'/�0�0�	0��N�N�=��&6�7�7�8�8�8��!�"�"�I�E��@��a��(�(�*�*�@��%�'1�17�����@�@�	@�
�F�
��E�!�H�$�$�&�&���%��(����a�b�b�	����E�!�H�$�$�&�&���a�y�C���F�c�M�M�����v�9�9� ;� ;�	<�	<�	<���[�[�G�N��N�N�=���2�2�3�3�3��E�>�rc��	t��}|stjd���d}|dtvrt	|��\}}|s'tjd�|�����|ddkrt
|��\}}nt|��\}}|�|g|dd�<|�|��||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r)	rdrr�r�r�r3rr�r�)r�vrrHs    r�	get_valuer�Y	s����	���A��P��%�&N�O�O�O�
�F��Q�x�;��� ����
����@��%�'0�06��v���@�@�	@��Q�x�3���(��/�/���u�u�-�e�4�4���u�
���H��b�q�b�	��H�H�U�O�O�O��e�8�Orc�T�	t��}t|��\}}|�|��|r|ddkrC|j�t	jd�|������||fS|ddkr�	t|��\}}d|_|�|��n#tj	$rYnwxYw|st	j	d���|ddkr4|�tdd����|dd�}d|_|dd	krt	j	d
���|�td	d����|dd�}d}|r6|dtvr't|��\}}|�|��d}|}|j�r|�r|ddk�rt|��\}}|j}d
}|jdkr4|r|ddkrd}nBt#|��\}}	|	r|	ddkrd}n	t%|��\}}	|	sd}n#YnxYw|r_|j�t	jd����|�|��|D]}
|
jdkrg|
dd�<|
}n�|}n.d}|j�t	jd����|r|ddkrd}nt)|��\}}|jr|jdkrW|r|ddkr|�|��|�|}||fS|j�t	jd����|sI|j�t	jd����|�|��|�||fS�nC|�>|D]}
|
jdkrn�|
jdk|�|
��|
j|_|ddkr't	j	d�|�����|�tdd����|dd�}|rt|ddkrht#|��\}}|�|��|j|_|r|ddkr't	j	d�|�����|�tdd����|dd�}|��t1��}|rr|dt2vrt5|��\}}n9|ddkrtdd��}|dd�}nt7|��\}}|�|��|�r|}nt)|��\}}|�|��|�|}||fS)NrrGz)Parameter contains name ({}) but no valuer�TzIncomplete parameterzextended-parameter-markerr��=zParameter not followed by '='�parameter-separatorrF�'z5Quoted string value for extended parameter is invalidr�zZParameter marked as extended but appears to have a quoted string value that is non-encodedzcApparent initial-extended-value but attribute was not marked as extended or was not initial sectionz(Missing required charset/lang delimitersr|r]z=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231-delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}�DQUOTE)rLrzr�rrrpr3r�rPr�r�rUr�r�rr�rRrvr~rYr�rr�r�rdr�r�r�)rr�rHrr��appendto�qstring�inner_value�
semi_validr��tr�s            r�
get_parameterr�o	s����
�K�K�E� ��'�'�L�E�5�	�L�L�������E�!�H��O�O�
�
���V�7�9%�%+�V�E�]�]�4�4�	5�	5�	5��e�|���Q�x�3���	�&�u�-�-�L�E�5�"�E�O��L�L��������&�	�	�	��D�	�����	B��)�*@�A�A�A���8�s�?�?��L�L��s�,G�H�H�I�I�I��!�"�"�I�E�!�E�N��Q�x�3����%�&E�F�F�F�	�L�L��s�$9�:�:�;�;�;��!�"�"�I�E�
�F����q��[�(�(�������u�
���U�����I��H��~�$<�%�$<�E�!�H��O�O�/�u�5�5�����,���
���1�$�$��
&�{�1�~��4�4�!�
�
�*�;�7�7���t��&�D��G�s�N�N�!%�J��
&�3�K�@�@���t��&�!%�J���	
�������	<��M� � ��!;�G�"I�"I�
J�
J�
J��L�L��!�!�!��
�
���<�#7�7�7��A�a�a�a�D� �H��E�8� �E�E��I��M� � ��!;�:�";�";�
<�
<�
<�
�(��q��S������ ��'�'���u��>�	F�U�1�A�5�5��	 ��a��C����O�O�E�"�"�"��$�!���%�<��
�
���V�7�
D�E�E�	F�	F�	F���
�
���V�7�6�8�8�	9�	9�	9�����������%�<������
�
���<�#6�6�6��E�7�
�L�J�&�&��O�O�A�����G�E�M���8�s�?�?��)�+F�FL�f�U�m�m�U�U�
U����
�c�+>�?�?�@�@�@��a�b�b�	���	K�U�1�X��_�_�'��.�.�L�E�5��O�O�E�"�"�"���E�J��
K�E�!�H��O�O��-�/<�<B�F�5�M�M�K�K�K����
�c�+>�?�?�@�@�@��a�b�b�	�����G�G���	��Q�x�3���&�u�~�~���u�u��q��S���%�c�8�4�4���a�b�b�	���+�E�2�2���u�
�H�H�U�O�O�O��	���� ��'�'���u��O�O�E���������%�<�s�.C�C�C�-I�Ic�$�	t��}|�r�	t|��\}}|�|���n#tj$�r}d}|dt
vrt
|��\}}|s|�|��|cYd}~S|ddkrD|�|�|��|j�tjd����npt|��\}}|r|g|dd�<|�|��|j�tjd�
|������Yd}~nd}~wwxYw|r�|ddkru|d}d|_t|��\}}|�|��|j�tjd�
|������|r-|�tdd����|d	d�}|���|S)
NrrGzparameter entry with no contentzinvalid parameter {!r}r�rXz)parameter with invalid trailing text {!r}r�r�)rgr�r�rr�r�r�rrprir3rYrFr�)r�mime_parametersrHrSrr�s      r�parse_mime_parametersr��	sl���%�&�&�O�
�#�	=�(��/�/�L�E�5��"�"�5�)�)�)�)���&�	=�	=�	=��F��Q�x�;�&�&� (����
����
'��&�&�v�.�.�.�&�&�&�&�&�&�&��Q�x�3����%�#�*�*�6�2�2�2��'�.�.�v�/I�5�07�07�8�8�8�8� 5�U�;�;���u��)�!'��E�"�1�"�I��&�&�u�-�-�-��'�.�.�v�/I�,�3�3�E�:�:�0<�0<�=�=�=����������#	=����&�	L�U�1�X��_�_�$�B�'�E�2�E��0��7�7�L�E�5��L�L������#�*�*�6�+E�;�B�B�5�I�I�,K�,K�
L�
L�
L��	��"�"�=��6K�#L�#L�M�M�M��!�"�"�I�E�G�#�H�s"�'=�E�
;E�E�CE�Ec��	|r�|ddkrx|dtvr4|�t|dd����|dd�}n't|��\}}|�|��|r|ddk�x|sdS|�tdd����|�t	|dd�����dS)NrrGrr�r�)rr�r�rr�)�	tokenlistrrHs   r�_find_mime_parametersr�1
s�����$�E�!�H��O�O���8�{�"�"����]�5��8�5H�I�I�J�J�J��!�"�"�I�E�E�%�e�,�,�L�E�5����U�#�#�#�
�$�E�!�H��O�O�����
���]�3�(=�>�>�?�?�?�
���*�5����9�5�5�6�6�6�6�6rc���	t��}d}|s.|j�tjd����|S	t|��\}}nf#tj$rT|j�tjd�|������t||��|cYSwxYw|�|��|r|ddkr@|j�tjd����|rt||��|S|j
������|_
|�tdd����|dd�}	t|��\}}nf#tj$rT|j�tjd	�|������t||��|cYSwxYw|�|��|j
������|_|s|S|dd
krU|j�tjd�|������|`
|`t||��|S|�td
d����|�t!|dd�����|S)
NFz"Missing content type specificationz(Expected content maintype but found {!r}rr�zInvalid content typezcontent-type-separatorr�z'Expected content subtype but found {!r}rGz<Only parameters are valid after content type, but found {!r}r�)r�rr�rrbrrr�rpr3r�rrm�lowerr�r�r�r�)r�ctype�recoverrHs    r�parse_content_type_headerr�A
s���
�M�M�E��G���
�
���V�>�0�2�2�	3�	3�	3���� ��'�'���u�u���"����
�
���V�7�6�=�=�e�D�D�F�F�	G�	G�	G��e�U�+�+�+�����	����

�L�L�������E�!�H��O�O�
�
���V�7�"�$�$�	%�	%�	%��	0�!�%��/�/�/����[�&�&�(�(�.�.�0�0�E�N�	�L�L��s�$<�=�=�>�>�>��!�"�"�I�E�� ��'�'���u�u���"����
�
���V�7�5�<�<�U�C�C�E�E�	F�	F�	F��e�U�+�+�+�����	����

�L�L������K�%�%�'�'�-�-�/�/�E�M������Q�x�3���
�
���V�7�
������(�(�	)�	)�	)�
�N�E�M��e�U�+�+�+���	�L�L��s�$9�:�:�;�;�;�	�L�L�&�u�Q�R�R�y�1�1�2�2�2��Ls&�A�A B9�8B9�=F�A G3�2G3c�^�	t��}|s.|j�tjd����|S	t|��\}}nf#tj$rT|j�tjd�|������t||��|cYSwxYw|�|��|j
������|_
|s|S|ddkrQ|j�tjd�|������t||��|S|�tdd����|�t|dd�����|S)NzMissing content dispositionz+Expected content disposition but found {!r}rrGzCOnly parameters are valid after content disposition, but found {!r}r�r�)r�rr�rrbrrr�rpr3r�rrmr�r�r�r�)r�disp_headerrHs   r� parse_content_disposition_headerr�z
s����%�&�&�K�����"�"�6�#D�)�$+�$+�	,�	,�	,���� ��'�'���u�u���"������"�"�6�#=�9�@�@��G�G�$I�$I�	J�	J�	J��k�5�1�1�1�����	����
���u����&+�k�&7�&7�&9�&9�&?�&?�&A�&A�K�#������Q�x�3�����"�"�6�#=�
������$(�$(�	)�	)�	)�	�k�5�1�1�1������}�S�*?�@�@�A�A�A����,�U�1�2�2�Y�7�7�8�8�8��s�A�A B7�6B7c��	t��}|s.|j�tjd����|S	t|��\}}|�|��|j������|_	nT#tj
$rB|j�tjd�|������YnwxYw|s|S|r�|j�tjd����|dtvr4|�t|dd����|dd�}n't|��\}}|�|��|��|S)Nz!Missing content transfer encodingz1Expected content transfer encoding but found {!r}z*Extra text after content transfer encodingrrr�)r�rr�rrbrrrrmr�r�r�rpr3rr�r)r�
cte_headerrHs   r�&parse_content_transfer_encoding_headerr��
s����)�*�*�J�����!�!�&�"C�/�#1�#1�	2�	2�	2���5� ��'�'���u�
	���%� � � ���*�*�,�,�2�2�4�4�
�����"�P�P�P���!�!�&�"<�?�F�F�u�M�M�#O�#O�	P�	P�	P�	P�	P�P��������
�%���!�!�&�"<�8�#:�#:�	;�	;�	;���8�{�"�"����m�E�!�H�6I�J�J�K�K�K��!�"�"�I�E�E�%�e�,�,�L�E�5����e�$�$�$��%��s�B�AC*�)C*c��d}|r>|dr6|ddtvr!|dd}|ddd�|d<|S)Nr$r�)r�)�lines�wsps  r�_steal_trailing_WSP_if_existsr��
sS��
�C��#��r��#�u�R�y��}��3�3��B�i��m���"�I�c�r�c�N��b�	��Jrc�|�	|jptj}|jrdnd}dg}d}d}d}d}t	dd��}	t|��}
|
�rO|
�d��}||	ur|dz}�"t|��}|sB|jdkrt�
|��}nt�
|��}	|�|��|}
n5#t$r(td	�|jD����rd
}
nd}
d}YnwxYw|jdkrt!||||����|�r|�s|js�d}d}|jr�|�|�
��dt)|j���}|j|vr_t)|��|t)|d��z
kr$t-|��}|�|��|dxx|z
cc<���t1|d��st|��|
z}
d}���|jr;|�|
|kr|d
ks|dkr|
dkrd}t3|||||j|
��}|
}d}���d}d}t)|��|t)|d��z
kr|dxx|z
cc<��9|jrWt)|��dz|krAt-|��}|s|���r|�||z��d}���t1|d��s7t|��}|js|dz
}|�|	��||
z}
���|jr|s|
�d|��d}��t-|��}|s|���r|�||z��n|dxx|z
cc<|
��O|j�|��|jzS)N�utf-8rNr$rF�wrap_as_ew_blockedr�rEc3�JK�|]}t|tj��V��dSr)r<rrxr's  rr*z%_refold_parse_tree.<locals>.<genexpr>�
sC����.�.���a��!>�?�?�.�.�.�.�.�.r�unknown-8bitTrhrJr�r)�max_line_length�sys�maxsize�utf8r�r�r2rrY�
SPECIALSNL�
isdisjoint�NLSETrrvr@r;�_fold_mime_parametersrBr_rNr�r�r�r�rZ�_fold_as_ewr`r?�insertr-)�
parse_treerK�maxlenrlr��last_ew�last_charsetr��
want_encoding�end_ew_not_allowedr|rC�tstrr��encoded_part�newline�newpartss                 rrLrL�
s�����
#�
2�s�{�F� �+�5�w�w�:�H�
�D�E��G��L����M�!�"�&:�;�;������E�
�j��y�y��|�|���%�%�%��!�#����4�y�y���	;���'�)�)�$.�$9�$9�$�$?�$?� ?�
�
�%*�$4�$4�T�$:�$:� :�
�	!��K�K��!�!�!��G�G��!�	!�	!�	!��.�.� �,�.�.�.�.�.�
"�(���"�� �M�M�M�	!�����?�/�/�/�!�$��v�x�@�@�@���)	&�!3�)	&��%�

!� %�
����'�
!�#'�9�9�F�9�#;�#;�<Q�c�&�.�>Q�>Q�=Q�<Q�#R�L��~�\�9�9��|�,�,�v��E�"�I���/F�F�F�&C�E�&J�&J�G�!�L�L��1�1�1��b�	�	�	�\�1�	�	�	� �
�4��*�*�
&��T�
�
�U�*�� %�
���#�
&��'��|�+�+�!�^�3�3�!�W�,�,��J�1F�1F�"�G�%�d�E�6�7�&*�&=�w�H�H��&�� %�
���� %�
��t�9�9���U�2�Y���/�/�/��"�I�I�I���I�I�I��
� �	��D�	�	�A�
��'�'�3�E�:�:�G��
�$�-�-�/�/�
����W�t�^�,�,�,�����t�X�&�&�	��D�z�z�H��%�
4�"�a�'�"���� 2�3�3�3��u�$�E����	�&8�	�
�L�L��D�!�!�!� �M��/��6�6���	�d�)�)�+�+�	��L�L��4��(�(�(�(�
�"�I�I�I���I�I�I�U�j�V�>���u�%�%���6�6s�C�/D
�	D
c�z�	|�B|r@tt|d|d�|z����}|dd|�|d<|dtvr]|d}|dd�}t|d��|kr"|�t|����|dxx|z
cc<d}|dtvr|d}|dd�}|�t|d��n|}|dkrdn|}	t|	��dz}
|
dz|krt
jd���|r�|t|d��z
}||
z
}|dkr|�d	���;|d|�}
tj	|
|	�
��}t|��|z
}|dkr8|
dd�}
tj	|
|	�
��}t|��|z
}|dk�8|dxx|z
cc<|t|
��d�}|r*|�d	��t|d��}|��|dxx|z
cc<|r|ndS)Nr�rr�r$rNr��z3max_line_length is too small to fit an encoded wordrh)r�)
rr�r�r�r�r�rr�r�r)�	to_encoder�r�r�r`r��leading_wsp�trailing_wsp�new_last_ew�	encode_as�
chrome_len�remaining_space�
text_space�to_encode_word�encoded_word�excesss                rr�r�Is���	���1����U�2�Y�w�x�x�0�9�<�=�=�?�?�	��"�I�h�w�h�'��b�	���|�s��� ��l���a�b�b�M�	���b�	�N�N�f�$�$��L�L�6�u�=�=�>�>�>�
�b�	�	�	�[� �	�	�	��L���}���� ��}���c�r�c�N�	�$+�O�#�e�B�i�.�.�.��K�"�j�0�0���g�I��Y���!�#�J��Q��6�!�!��%�A�C�C�	C��)� �3�u�R�y�>�>�1��$�z�1�
���?�?��L�L������"�;�J�;�/���z�.�)�D�D�D���\�"�"�_�4���q�j�j�,�C�R�C�0�N��:�n�i�H�H�H�L���&�&��8�F��q�j�j�	�b�	�	�	�\�!�	�	�	��c�.�1�1�2�2�3�	��	)��L�L������e�B�i�.�.�K�+�)�,
�"�I�I�I���I�I�I�,�6�;�;�$�6rc	��	|jD�]O\}}|d����d��s|dxxdz
cc<|}d}	|�|��d}n-#t$r d}tj|��rd}d}nd}YnwxYw|r:tj�	|d	|�
��}	d�
|||	��}
n#d�
|t|����}
t|d��t|
��zd
z|kr|ddz|
z|d<��+t|
��dz|kr|�
d|
z����[d}|dz}|r�t|��tt|����zdzt|��z}
||
dzkrd}||
z
dz
x}}	|d|�}tj�	|d	|�
��}	t|	��|krn|d
z}�F|�
d�
||||	����d	}|d
z
}||d�}|r|dxxdz
cc<|���QdS)Nr�rG�strictFTr�rkr�r$)�saferz
{}*={}''{}r�r�rhr�rz''r#�Nz {}*{}*={}{})rzr%r^rrvrrwrqrrr�r3rr�r�r)rCr�r�rlr{rr��
error_handler�encoding_required�
encoded_valuer�rb�extra_chromer��
splitpoint�maxchars�partials                 rr�r��s�����{�:!�:!���e��R�y���!�!�*�*�3�/�/�	��"�I�I�I���I�I�I��� �
�		"��L�L��"�"�"� %����!�	"�	"�	"� $���$�U�+�+�
"�(�� 1�
�
�!����
	"�����	=�"�L�.�.��B�}�/�6�6�M��&�&�t�W�m�D�D�D�D��>�>�$��U�(;�(;�<�<�D��u�R�y�>�>�C��I�I�%��)�F�2�2��b�	�C��$�.�E�"�I��
��Y�Y��]�f�
$�
$��L�L��t��$�$�$������~���	!��T���S��W���%6�%6�6��:�S��=N�=N�N�J���a��'�'�
��$*�Z�$7�!�$;�;�J��
 �����,�� &�� 2� 2��"�]�!3�!<�!<�
��}�%�%��1�1���a��
�

 �
�L�L��.�.��g�|�]�<�<�
=�
=�
=��L��q�L�G��*�+�+�&�E��
!��b�	�	�	�S� �	�	�	�-�	!��I:!�:!s�A)�)'B�B)��rer�rq�stringr�operatorr�emailrr�rrr)r�r�r
rr*r�	TSPECIALSrp�	ASPECIALSrxr�r�r�r�compile�VERBOSE�	MULTILINEr�r�rrerqruryr}r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrr r.r0r7rBrHrLrWrZrardrgr�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r;r0rBr_r1r3r-rr�r��matchr��findallr�rlrtr}r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrr r%r(r*r-r3r8r:r=rArErIrLrNrPrTrWr[r_rfrirmrrrvrzr~r�r�r�r�r�r�r�r�r�r�rLr�r�rirr�<module>r�s���C�J
�	�	�	�
�
�
�
�
�
�
�
�������������'�'�'�'�'�'�������������
�c�%�j�j���C�C��H�H�n���3�� � ���s�N�	��C�C��H�H�$�
����U���#��
���E�
�
�
"�c�c�#�h�h�.�	�
��_�
����E�
�
�"�	��S���(�3�3�s�8�8�3��	
�t���
��
�
�H�H�H��"�*���Z�"�,�� � ��@,�@,�@,�@,�@,��@,�@,�@,�FD�D�D�D�D�)�D�D�D� � � � � �I� � � ������Y���������9���������"���������9���������I����
�����)����#�#�#�#�#�9�#�#�#�6	-�	-�	-�	-�	-�|�	-�	-�	-������!����4C�C�C�C�C�)�C�C�C�&%�%�%�%�%�i�%�%�%�2?�?�?�?�?�)�?�?�?�%�%�%�%�%�	�%�%�%�"$�$�$�$�$�I�$�$�$�*"�"�"�"�"�y�"�"�"�6�����	����DD�D�D�D�D�y�D�D�D�!�!�!�!�!�i�!�!�!�6;�;�;�;�;�Y�;�;�;�.�.�.�.�.�Y�.�.�.������i���������)����
�����I����
�����y����B�����9����'!�'!�'!�'!�'!�&�'!�'!�'!�T!�!�!�!�!�	�!�!�!�H
�
�
�
�
�I�
�
�
� �����)���������	����8%�%�%�%�%�y�%�%�%�
#�#�#�#�#�	�#�#�#������i���������I����S.�S.�S.�S.�S.�Y�S.�S.�S.�l�����y���������*���������1���������i���������)����
*�*�*�*�*�I�*�*�*����������&�&�&�&�&�y�&�&�&������Y����(+�(+�(+�(+�(+�s�(+�(+�(+�V��������������H���������-����<�<�<�<�<�f�-�<�<�<��m�C������
�c�#3�4�4�
�#�
�� %�
��$�}�S�*B�C�C��.��
�:�,�,�R�W�W�S�\�\�:�:�;�;�A�
�"��
�9�#3�#3�
�B�I�b�g�g�i� � �!�!�$#�$#�$�$�$)��"��
�#5�6�6�>��#���I�$4�$4�
�B�I�b�g�g�j�!�!�"�"�%$�%$�%�%�%*��'�R�Z�	�(8�(8�
�B�I�b�g�g�n�%�%�&�&�)(�)(�)�)�).��&0�b�j��1A�1A�
�B�I�b�g�g�-�.�.�/�/�21�21�'2�'2�27�$�;�;�;�J�J�J�<
�
�
�/�/�/�bA�A�A�F���"
�
�
���� ))�))�))�V���2��� � � �$���6 � � �&���2 � � �D$�$�$�L%�%�%�N-!�-!�-!�^���(���%!�%!�%!�N$�$�$�L��� ' �' �' �R,�,�,�\������<���*"�"�"�$6�6�6�r#�#�#�J���<���:4�4�4�n&�&�&�,B�B�B�J���8B�B�B�H$�$�$�$���&���.���&���.���$���,���<���,L�L�L�\2�2�2�h7�7�7� 7�7�7�r���<���^���y7�y7�y7�v?7�?7�?7�BI!�I!�I!�I!�I!r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists