U if~C @ s d ddddddddd d ddd dgZ ddlZddlZddlZddlZddlZddlZddlZddl m Z ddl mZ ddl m Z ddl mZmZmZ ddlmZ dZdZdZdZdZedZedZdd Zdd ZdBd!dZd"d# Zd$d% Zd&Z d&d'd(dZ!d)d* Z"d+d, Z#d-d. Z$d/d0 Z%dCd2dZ&dDd3dZ'dEd4dZ(d5d Z)d&d'd6d Z*d7d Z+d8d Z,dFd9dZ-ed:ej.Z/d;d Z0dGd>d Z1dHd@dAZ2dS )Icollapse_rfc2231_value decode_paramsdecode_rfc2231encode_rfc2231 formataddr formatdateformat_datetimegetaddresses make_msgid mktime_tz parseaddr parsedateparsedate_tzparsedate_to_datetimeunquote N)quote)AddressList)r )r r _parsedate_tz)Charsetz, z 'z[][\\()<>@,:;".]z[\\"]c C s* z| W dS tk r$ Y dS X d S )NFT)encodeUnicodeEncodeError)s r 0/opt/alt/python38/lib64/python3.8/email/utils.py_has_surrogates4 s r c C s | dd}|ddS )Nutf-8surrogateescapereplace)r decode)stringZoriginal_bytesr r r _sanitizeA s r" r c C s | \}}| d |rz| d W n< tk r` t|trFt|}||}d||f Y S X d}t|rtd}t d|}d||||f S |S )Nasciiz%s <%s>r "z\\\g<0>z%s%s%s <%s>) r r isinstancestrr Z header_encode specialsresearch escapesresub)ZpaircharsetnameZaddressZencoded_nameZquotesr r r r M s c c s\ d}d}t | D ]8\}}|r0|d| fV d}q|dkr>d}q||fV q|rX|dfV d S )Nr F\T) enumerate)addrposescapechr r r _iter_escaped_charsn s r3 c C s d| kr| S d}d }g }t | D ]D\}}|dkr |d kr>|}q ||krX|| || |d }d }q |t| k r|| |d d|S )Nr$ r r )r3 appendlenjoin)r/ startZopen_posresultr0 r2 r r r _strip_quoted_realnames} s r: T)strictc C s |s&t