a XC?h�B�@s�gd�ZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZmZmZddlmZdZd Zd Zd Zd Ze�d �Ze�d �Zdd�Zdd�Zd@dd�Zdd�Zdd�ZdZ dd�dd�Z!dd�Z"dd �Z#d!d"�Z$d#d$�Z%dAd&d'�Z&dBd(d)�Z'dCd*d+�Z(d,d-�Z)dd�d.d/�Z*d0d1�Z+d2d3�Z,dDd4d5�Z-e�d6ej.�Z/d7d8�Z0dEd;d<�Z1dFd>d?�Z2dS)G)�collapse_rfc2231_value� decode_params�decode_rfc2231�encode_rfc2231� formataddr� formatdate�format_datetime� getaddresses� make_msgid� mktime_tz� parseaddr� parsedate� parsedate_tz�parsedate_to_datetime�unquote�N)�quote)� AddressList)r )r r � _parsedate_tz)�Charsetz, �z �'z[][\\()<>@,:;".]z[\\"]cCs(z|��WdSty"YdS0dS)NFT)�encode�UnicodeEncodeError)�s�r�0/opt/alt/python39/lib64/python3.9/email/utils.py�_has_surrogates4s  rcCs|�dd�}|�dd�S)N�utf-8�surrogateescape�replace)r�decode)�stringZoriginal_bytesrrr� _sanitizeAs r"rcCs�|\}}|�d�|r�z|�d�Wn:ty^t|t�rDt|�}|�|�}d||fYS0d}t�|�rrd}t� d|�}d||||fS|S)N�asciiz%s <%s>r�"z\\\g<0>z %s%s%s <%s>) rr� isinstance�strrZ header_encode� specialsre�search� escapesre�sub)Zpair�charset�nameZaddressZ encoded_nameZquotesrrrrMs       rccs\d}d}t|�D]8\}}|r0|d|fVd}q|dkr>d}q||fVq|rX|dfVdS)NrF�\T)� enumerate)�addr�pos�escape�chrrr�_iter_escaped_charsns r3cCs�d|vr |Sd}d}g}t|�D]D\}}|dkr |dur>|}q ||krX|�|||��|d}d}q |t|�kr�|�||d��d�|�S)Nr$r�r)r3�append�len�join)r/�startZopen_pos�resultr0r2rrr�_strip_quoted_realnames}s  r:T)�strictcCs�|s&t�dd�|D��}t|�}|jSdd�|D�}t|�}t�|�}t|�}t|j�}d}|D]}t|�}|d|�d�7}q`t|�|kr�dgS|S) Ncss|]}t|�VqdS)N�r&��.0�vrrr� ��zgetaddresses..cSsg|] }t|��qSrr<r=rrr� �rAz getaddresses..rr4�,�rr) � COMMASPACEr7� _AddressList� addresslist�_pre_parse_validation�_post_parse_validationr:�countr6)Z fieldvaluesr;�all�ar/r9�nr?rrrr�s    rcCsVt|�}d}t|�D]8\}}|dkr.|d7}q|dkr|d8}|dkrdSq|dkS)Nr�(r4�)F)r:r3)r/Zopensr0r2rrr�_check_parenthesis�s rPcCs(g}|D]}t|�sd}|�|�q|S)Nz('', ''))rPr5)Zemail_header_fields�accepted_valuesr?rrrrH�s  rHcCs,g}|D]}d|dvrd}|�|�q|S)N�[r4rD)r5)Zparsed_email_header_tuplesrQr?rrrrI�s   rIc CsHdgd�|d|dgd�|dd|d|d|d |d |fS) Nz"%s, %02d %s %04d %02d:%02d:%02d %s)ZMonZTueZWedZThuZFriZSatZSun��) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecr4r���r)� timetuple�zonerrr�_format_timetuple_and_zone�s ��rZFcCsR|durt��}|s|r,tj�|tjj�}n tj�|�}|rH|��}d}t||�S)NF)�time�datetimeZ fromtimestamp�timezone�utcZutcfromtimestamp� astimezoner)�timeval� localtime�usegmt�dtrrrr�s rcCsV|��}|r2|jdus$|jtjjkr,td��d}n|jdurBd}n |�d�}t||�S)Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)rX�tzinfor\r]r^� ValueError�strftimerZ)rcrb�nowrYrrrrs  rcCs^tt��d�}t��}t�d�}|dur0d}nd|}|durHt��}d|||||f}|S)N�d�@r�.z<%d.%d.%d%s@%s>)�intr[�os�getpid�randomZ getrandbits�socketZgetfqdn)ZidstringZdomainr`�pidZrandintZmsgidrrrr "s  r cCsNt|��^}}|dur(tj|dd��Stj|dd�dt�tj|d��i�S)NrSrd��seconds)rr\r]� timedelta)�dataZdtuple�tzrrrr9s �rcCsv|st|�j}|sdS|dSt|t�r0|d}t|t�s>dSt|g�d}tt|�j�}|rjt|�dkrndS|dS)NrDrr4)rFrGr%�listr&rHrIr6)r/r;Zaddrsrrrr As    r cCs`t|�dkr\|�d�r<|�d�r<|dd��dd��dd�S|�d�r\|�d�r\|dd�S|S) Nr4r$�����z\\r-z\"�<�>)r6� startswith�endswithrr<rrrr`s   rcCs&|�td�}t|�dkr"dd|fS|S)NrT)�split�TICKr6)r�partsrrrrls   rcCsDtjj|d|pdd�}|dur*|dur*|S|dur6d}d|||fS)Nrr#)Zsafe�encodingz%s'%s'%s)�urllib�parser)rr+�languagerrrrts rz&^(?P\w+)\*((?P[0-9]+)\*?)?$c Cs@|dg}i}|dd�D]x\}}|�d�}t|�}t�|�}|r||�dd�\}}|durbt|�}|�|g��|||f�q|�|dt|�f�q|�r<|� �D]�\}}g}d} |� �|D],\}} }|r�t j j| dd �} d } |�| �q�tt �|��}| �r(t|�\} } }|�|| | d|ff�q�|�|d|f�q�|S) Nrr4�*r,�numz"%s"Fzlatin-1)rT)r{r�rfc2231_continuation�match�grouprk� setdefaultr5r�items�sortr�r�� EMPTYSTRINGr7r) �params� new_paramsZrfc2231_paramsr,�valueZencodedZmor�Z continuationsZextendedrr+r�rrrr�s8    rr�us-asciicCslt|t�rt|�dkrt|�S|\}}}|dur4|}t|d�}zt|||�WStyft|�YS0dS)NrUzraw-unicode-escape)r%�tupler6r�bytesr&� LookupError)r��errorsZfallback_charsetr+r��textZrawbytesrrrr�s   rrwc Cs|durtj�tjj���S|jdur.|��S|��dd�|f}t�|�}t� |�}z tj |j d�}t�||j �}Wn~t y�|tjt�|�dd��}tjo�|jdk}|r�tjntj }|tj |d�kr�t�|tj|�}n t�|�}Yn0|j|d�S)NrwrqrSr)rd)r\rgr]r^r_rdrXr[�mktimerars� tm_gmtoff�tm_zone�AttributeError�gmtime�daylight�tm_isdst�altzone�tznamer) rcZisdstZtmrrZlocaltmZdeltaruZdstZgmtoffrrrra�s$    ra)r)NFF)F)NN)NN)rr�)Nrw)3�__all__rl�rer[rnror\Z urllib.parser�Zemail._parseaddrrrrFr r r rZ email.charsetrrEr�Z UEMPTYSTRINGZCRLFr}�compiler'r)rr"rr3r:Zsupports_strict_parsingrrPrHrIrZrrr rr rrr�ASCIIr�rrrarrrr�s\        !,       �0�