
    Rh\)                     F   d dl Z d dlZd dlZd dlZd dlmZ  G d d      Z e       ZddZej                  de       d Z
dj                         D ]  Zej                  ee
        [d	 Zd
j                         D ]  Zej                  dez   e        [d Zej                  de       d Zd Zd Zd Z	 	 	 ddZej+                  ee       	 	 	 ddZej+                  ej0                  j2                  e       	 	 	 ddZeeefD ]  Zej+                  ee        [y)    N)
quoprimimec                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ContentManagerc                      i | _         i | _        y N)get_handlersset_handlers)selfs    +/usr/lib/python3.12/email/contentmanager.py__init__zContentManager.__init__	   s        c                 "    || j                   |<   y r   )r   )r
   keyhandlers      r   add_get_handlerzContentManager.add_get_handler   s    !(#r   c                 B   |j                         }|| j                  v r | j                  |   |g|i |S |j                         }|| j                  v r | j                  |   |g|i |S d| j                  v r | j                  d   |g|i |S t        |      )N )get_content_typer   get_content_maintypeKeyError)r
   msgargskwcontent_typemaintypes         r   get_contentzContentManager.get_content   s    ++-4,,,24$$\23DDDD++-t(((.4$$X.s@T@R@@"""(4$$R(:t:r::|$$r   c                 "    || j                   |<   y r   )r	   )r
   typekeyr   s      r   add_set_handlerzContentManager.add_set_handler   s    %,'"r   c                     |j                         dk(  rt        d      | j                  ||      }|j                           |||g|i | y )N	multipartz"set_content not valid on multipart)r   	TypeError_find_set_handlerclear_content)r
   r   objr   r   r   s         r   set_contentzContentManager.set_content   sS    ##%4 @AA((c2S&4&2&r   c                    d }t        |      j                  D ]  }|| j                  v r| j                  |   c S |j                  }t	        |dd      }|rdj                  ||f      n|}||}|| j                  v r| j                  |   c S || j                  v r| j                  |   c S |j                  }|| j                  v s| j                  |   c S  d | j                  v r| j                  d    S t        |      )N
__module__r   .)type__mro__r	   __qualname__getattrjoin__name__r   )	r
   r   r%   full_path_for_errortypqnamemodname	full_pathnames	            r   r#   z ContentManager._find_set_handler'   s   "9$$ 	/Cd'''((--$$Ec<4G6='5!125I"*&/#D---((33)))((//<<Dt(((((..	/ 4$$$$$T***++r   N)	r/   r(   r,   r   r   r   r   r&   r#    r   r   r   r      s     )	%-',r   r   c                 p    | j                  d      }| j                  dd      }|j                  ||      S )NTdecodecharsetASCII)errors)get_payload	get_paramr9   )r   r<   contentr:   s       r   get_text_contentr@   @   s5    ooTo*GmmIw/G>>'&>11r   textc                 &    | j                  d      S )NTr8   r=   r   s    r   get_non_text_contentrE   G   s    ??$?''r   zaudio image video applicationc                 $    | j                  d      S Nr   rC   rD   s    r   get_message_contentrH   N   s    ??1r   zrfc822 external-bodyzmessage/c                 6    t        | j                  d            S rG   )bytesr=   rD   s    r   %get_and_fixup_unknown_message_contentrK   U   s     #$$r   messagec                    dj                  ||f      | d<   |rzt        |d   d      s8| j                  }|D cg c]!  } |j                  |j	                  |g       # }}	 |D ],  }|j
                  r|j
                  d   || |j                  <   . y y c c}w # t        j                  j                  $ r:}t        dj                  j                  | j                                    |d }~ww xY w)N/zContent-Typer   r5   zInvalid header: {})policy)r.   hasattrrO   header_factoryheader_source_parsedefectsr5   emailr<   HeaderDefect
ValueErrorformatfold)r   r   subtypeheadersmpheaderexcs          r   _prepare_setr^   a   s    ((Hg#67Cwqz6*B%,.! )r(("*@*@&*JK .G .	J! *>> ..++#)FKK * . ||(( 	J188 &3:: >@ AFIJ	Js   &B!1B C065C++C0c                     ||d}||| d<   || j                  d|dd       ||| d<   |+|j                         D ]  \  }}| j                  ||        y y )N
attachmentzContent-DispositionfilenameT)r\   replacez
Content-ID)	set_paramitems)r   dispositionra   cidparamsr   values          r   _finalize_setri   r   s    x3"%0!"j2" 	 	$ L ,,. 	&JCMM#u%	& r   c                     g }|dz  dz  }t        dt        |       |      D ]=  }| |||z    }|j                  t        j                  |      j                  d             ? dj                  |      S )N      r   asciir   )rangelenappendbinascii
b2a_base64r9   r.   )datamax_line_lengthencoded_linesunencoded_bytes_per_lineithislines         r   _encode_base64ry      s}    M.!3a71c$i!9: L!445X00:AA'JKL 77=!!r   c                    | j                  |      j                         }|j                  j                  d      fd}d }|t        d |D        d      |j                  k  r	 d ||      j                  d      fS  ||d d
       }t        j                  |j                  d      |j                        }t        j                  |      }	t        |      t        |	      kD  rd}nd}t        |      d
k  r||fS |dk(  r ||      j                  d      }
||
fS |dk(  r ||      j                  dd	      }
||
fS |dk(  r9t        j                   ||      j                  d      |j                        }
||
fS |dk(  r t         ||      |j                        }
||
fS t        dj                  |            # t        $ r Y nw xY w|j                  dk(  s[d ||      j                  dd	      fS )Nrm   c                 ,    j                  |       z   S r   r.   )lineslineseps    r   embedded_bodyz#_encode_text.<locals>.embedded_body   s    W\\%%87%BBr   c                 *    dj                  |       dz   S )N   
r|   )r}   s    r   normal_bodyz!_encode_text.<locals>.normal_body   s    5::e#4u#<<r   c              3   2   K   | ]  }t        |        y wr   )ro   ).0xs     r   	<genexpr>z_encode_text.<locals>.<genexpr>   s     &1A&s   r   )default7bit8bitsurrogateescape
   zlatin-1base64quoted-printablez$Unknown content transfer encoding {})encode
splitlinesr~   maxrt   r9   UnicodeDecodeErrorcte_typer   body_encoderq   rr   ro   ry   rV   rW   )stringr:   cterO   r}   r   r   sniffsniff_qpsniff_base64rs   r~   s              @r   _encode_textr      s   MM'"--/Enn##G,GB<
{&&2f6L6LL{5188AAA
 eCRj)))%,,y*A*0*@*@B**51x=3|,,C$C5zRH}$
f}5!((1 9 
5!((2CD 9 
"	"%%k%&8&?&?	&J&,&<&<> 9	 
mE2F4J4JK 9 ?FFsKLL3 & &({5188BSTTTs   (F< <	GGc
                    t        | d||	       t        |||| j                        \  }}
| j                  |
       | j	                  dt
        j                  j                  j                  ||      d       || d<   t        | ||||       y )NrA   r:   Trb   Content-Transfer-Encoding)
r^   r   rO   set_payloadrc   rT   r:   ALIASESgetri   )r   r   rY   r:   r   re   ra   rf   rg   rZ   payloads              r   set_text_contentr      s     fgw/cjjALCOOGMM)--''++GW=    (+C#$#{Hc6:r   c	                 4   |dk(  rt        d      |dk(  r%|dvrt        dj                  |            |dn|}n*|dk(  r!|dvrt        d	j                  |            d
}n|d
}t        | d||       | j                  |g       || d<   t	        | ||||       y )Npartialz4message/partial is not supported for Message objectsrfc822)Nr   r   binaryz*message/rfc822 parts do not support cte={}r   zexternal-body)Nr   z1message/external-body parts do not support cte={}r   rL   r   )rV   rW   r^   r   ri   )	r   rL   rY   r   re   ra   rf   rg   rZ   s	            r   set_message_contentr      s     )OPP(66<CCCHJ J f	O	#n$CJJ3OQ Q	 i'2OOWI'*C#$#{Hc6:r   c
                 r   t        | |||	       |dk(  r"t        || j                  j                        }n]|dk(  r+t	        j
                  |ddd      }|j                  d      }n-|dk(  r|j                  d      }n|d	v r|j                  dd
      }| j                  |       || d<   t        | ||||       y )Nr   )rt   r   FT)istextr\   	quotetabsrm   r   )r   r   r   r   )	r^   ry   rO   rt   rq   b2a_qpr9   r   ri   )
r   rs   r   rY   r   re   ra   rf   rg   rZ   s
             r   set_bytes_contentr      s     h1
hdCJJ4N4NO	"	" tE%4P{{7#	{{7#	"	"{{7$56OOD'*C#$#{Hc6:r   r   )plainzutf-8NNNNNN)r   NNNNNN)r   NNNNN)rq   email.charsetrT   email.messageemail.errorsr   r   raw_data_managerr@   r   rE   splitr   rH   rY   rK   r^   ri   ry   r   r   r   strr   rL   Messager   rJ   	bytearray
memoryviewr1   r6   r   r   <module>r      sn       3, 3,l "# 2     )9 :(/557 EH$$X/CDE%++- NG$$Z%79LMN%     !FHJ"&*"$N IM:>*.
;     &6 7 =A<@,0;<     !6!68K L 9A:>*.;& 9j) =C$$S*;<=r   