+
    Tj\                     x   ^ RI t^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIH	t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ RI H!t!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t( ^ RI)H*t*H+t+ ^ RI,H-t-H.t.H/t/ ^ RI0H1t1 ]
P                  ! R4      t2R]2n3        ]
P                  ! R4      t4]
Pj                  ]4n3        Rt6Rt7]8t90 R*mt:R t;R t< ! R R4      t= ! R R]=]4      t> ! R R]=]4      t? ! R  R!]=]4      t@]! R"R#R$.4      tA]! R%. R+O4      tB ! R& R'4      tC ! R( R)]C4      tDR# ),    N)
namedtuple)datetimetimezonecharset)	generator)HeaderParseError)Header)AddressAddressHeaderparser)MIMEBase)MIMEMessage)MIMEMultipart)MIMEText)
formataddrgetaddresses
make_msgid)BytesIOStringIO)Path)settings)DNS_NAME)RemovedInDjango70Warningdeprecate_posargs)force_bytes	force_strpunycode)get_current_timezoneutf-8zapplication/octet-streami  c                ,  a \         P                  ! R\        4       S;'       g    \        P                  o\        V4      pRV9   g   RV9   d   \        RV: RV : R24      h VP                  R4       V P                  4       R8X  d   \        V4      P                  4       pW3#   \         db    T P                  4       \        9   d*   R	P                  T3R
 l\        T34       4       4      p Y3# \        TS4      P                  4       p Y3# i ; i)z6Forbid multi-line headers to prevent header injection.zThe internal API forbid_multi_line_headers() is deprecated. Python's modern email API (with email.message.EmailMessage or email.policy.default) will reject multi-line headers.
z*Header values can't contain newlines (got z for header )asciisubject, c              3   <   <"   T F  p\        VS4      x  K  	  R # 5iN)sanitize_address).0addrencodings   & M/var/www/idalgo/venv/lib/python3.14/site-packages/django/core/mail/message.py	<genexpr>,forbid_multi_line_headers.<locals>.<genexpr>U   s       =QT x00=Qs   )warningswarnr   r   DEFAULT_CHARSETstrBadHeaderErrorencodelowerr
   UnicodeEncodeErrorADDRESS_HEADERSjoinr   )namevalr-   s   &&fr.   forbid_multi_line_headersr=   B   s   MM	A 	!	 33833H
c(Cs{dckMPRVW
 	
'

7 ::<9$+$$&C9  1::<?*)) =I3&=Q C 9	 h'..0C 91s   %B' 'A	D4DDc                   \         P                  ! R\        4       Rp\        V \        4      '       gz   \        V 4      p  \        P                  ! V 4      w  r4V'       d   \        RV: RV : R24      hVP                  ;'       g    RpVP                  pVP                  ;'       g    RpM.V w  rRRV9  d   \        R	V R24      hVP                  R^4      w  rgWV,           V,           pR
V9   g   RV9   d   \        R4      h VP                  R4       \!        V4      P                  4       p VP                  R4       \%        V4      p\'        WgR7      p	\)        WYP*                  34      #   \        \        \        3 d    \        RT ,          4      hi ; i  \"         d    \!        YQ4      P                  4       p Li ; i  \"         d    \!        Ya4      P                  4       p Li ; i)z>
Format a pair of (name, address) or an email address string.
a  The internal API sanitize_address() is deprecated. Python's modern email API (with email.message.EmailMessage or email.policy.default) will handle most required validation and encoding. Use Python's email.headerregistry.Address to construct formatted addresses from component parts.NzInvalid address; only z could be parsed from "" zInvalid address "%s"@zInvalid address "r"   r#   z7Invalid address; address parts cannot contain newlines.r%   )usernamedomain)r1   r2   r   
isinstancetupler   r   get_mailbox
ValueErrordisplay_name
local_partrC   r	   
IndexErrorrsplitr6   r
   r8   r   r   r   	addr_spec)
r,   r-   addresstokenrestnm	localpartrC   address_partsparsed_addresss
   &&        r.   r*   r*   a   s    MM	5
 	! GdE""	( ,,T2KE  LQSWX  ##))rB((I\\''RFg0	;<<#NN32	NV+M} 5RSS+
		'BZ 9! fFi?Nr33455E !*j9 	<3d:;;	<2  +B!((*+  99/668	9s0    E- *F /G -)F$G ?G $G*)G*c                   4   a  ] tR t^t o RR ltRR ltRtV tR# )	MIMEMixinc                    \        4       p\        P                  ! VRR7      pVP                  WVR7       VP	                  4       # )zReturn the entire formatted message as a string.
Optional `unixfrom' when True, means include the Unix From_ envelope
header.

This overrides the default as_string() implementation to not mangle
lines that begin with 'From '. See bug #13433 for details.
Fmangle_from_unixfromlinesep)r   r   	GeneratorflattengetvalueselfrZ   r[   fpgs   &&&  r.   	as_stringMIMEMixin.as_string   s9     Z7			$7	;{{}    c                    \        4       p\        P                  ! VRR7      pVP                  WVR7       VP	                  4       # )zReturn the entire formatted message as bytes.
Optional `unixfrom' when True, means include the Unix From_ envelope
header.

This overrides the default as_bytes() implementation to not mangle
lines that begin with 'From '. See bug #13433 for details.
FrW   rY   )r   r   BytesGeneratorr]   r^   r_   s   &&&  r.   as_bytesMIMEMixin.as_bytes   s9     Y$$Re<			$7	;{{}re    N)Fr"   )__name__
__module____qualname____firstlineno__rc   rh   __static_attributes____classdictcell____classdict__s   @r.   rU   rU      s      re   rU   c                   &   a  ] tR t^t o R tRtV tR# )SafeMIMEMessagec                P    \        WR 4      w  r\        P                  ! WV4       R# )r%   N)r=   r   __setitem__r`   r;   r<   s   &&&r.   rv   SafeMIMEMessage.__setitem__   s"     .dA	C0re   rj   N)rk   rl   rm   rn   rv   ro   rp   rq   s   @r.   rt   rt      s     1 1re   rt   c                   :   a  ] tR t^t o RR ltR tRR ltRtV tR# )SafeMIMETextNc                B    W0n         \        P                  ! WW#R 7       R# ))_subtype_charsetN)r-   r   __init__)r`   _textr|   r}   s   &&&&r.   r~   SafeMIMEText.__init__   s     $Lre   c                d    \        WV P                  4      w  r\        P                  ! WV4       R # r)   )r=   r-   r   rv   rw   s   &&&r.   rv   SafeMIMEText.__setitem__   s$    -dG	T-re   c                L   VR 8X  d   \        V\        P                  4      '       ge   \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      pV'       d   \        M\
        p\        P                  ! WVR7       R# )r    c              3   f   "   T F'  p\        VP                  R R7      4      \        8  x  K)  	  R# 5i)surrogateescape)errorsN)lenr6   RFC5322_EMAIL_LINE_LENGTH_LIMIT)r+   lines   & r.   r/   +SafeMIMEText.set_payload.<locals>.<genexpr>   s2      ! 1D DKK'8K9:120s   /1TFr   N)rD   Charsetany
splitlinesutf8_charset_qputf8_charsetr   set_payload)r`   payloadr   has_long_liness   &&& r.   r   SafeMIMEText.set_payload   sw    gj'//&J&J S ! $..0!SSS ! $..0! N *8o\GTG<re   r-   )plainNr)   )	rk   rl   rm   rn   r~   rv   r   ro   rp   rq   s   @r.   rz   rz      s     M.
= 
=re   rz   c                   0   a  ] tR t^t o RR ltR tRtV tR# )SafeMIMEMultipartNc                B    W@n         \        P                  ! WW#3/ VB  R # r)   )r-   r   r~   )r`   r|   boundary	_subpartsr-   _paramss   &&&&&,r.   r~   SafeMIMEMultipart.__init__   s     !txNgNre   c                d    \        WV P                  4      w  r\        P                  ! WV4       R # r)   )r=   r-   r   rv   rw   s   &&&r.   rv   SafeMIMEMultipart.__setitem__   s$    -dG	!!$c2re   r   )mixedNNN)rk   rl   rm   rn   r~   rv   ro   rp   rq   s   @r.   r   r      s     O3 3re   r   EmailAlternativecontentmimetypeEmailAttachmentc                      a  ] tR t^t o RtRtRt]! ]. RO4      RRRRRRRRRRRR	R/R
 ll4       t	RR lt
R]P                  P                  /R ltR tRR ltRR ltRR ltR tR tR tR tR tRtV tR# )EmailMessagez"A container for email information.r   Nbcc
connectionattachmentsheadersccreply_toc                  V'       d3   \        V\        4      '       d   \        R4      h\        V4      V n        M. V n        V	'       d3   \        V	\        4      '       d   \        R4      h\        V	4      V n        M. V n        V'       d3   \        V\        4      '       d   \        R4      h\        V4      V n        M. V n        V
'       d3   \        V
\        4      '       d   \        R4      h\        V
4      V n        M. V n        T;'       g    \        P                  V n
        Wn        T;'       g    RV n        . V n        V'       d   V Fy  p\        V\        P                  P                   4      '       d   V P#                  V4       K@  \        V\$        4      '       d   V P#                  V4       Ki  V P"                  ! V!   K{  	  T;'       g    / V n        W`n        R# )O
Initialize a single email message (which can be sent to multiple
recipients).
z%"to" argument must be a list or tuplez%"cc" argument must be a list or tuplez&"bcc" argument must be a list or tuplez+"reply_to" argument must be a list or tupler@   N)rD   r4   	TypeErrorlisttor   r   r   r   DEFAULT_FROM_EMAIL
from_emailr&   bodyr   emailmessageMIMEPartattachr   extra_headersr   )r`   r&   r   r   r   r   r   r   r   r   r   
attachments   &&&&&$$$$$$ r.   r~   EmailMessage.__init__   sU   : "c"" GHH2hDGDG"c"" GHH2hDGDG#s## HIICyDHDH(C(( MNN NDMDM$CC(C(CJJB	)
j%--*@*@AAKK
+
H55KK
+KK, * %]]$re   c                f    ^ RI Hp V P                  '       g   V! VR7      V n        V P                  # )r   )get_connection)fail_silently)django.core.mailr   r   )r`   r   r   s   && r.   r   EmailMessage.get_connection4  s$    3,=IDOre   policyc                  \         P                  P                  VR 7      pV P                  V4       V P	                  V4       \        V P                  4      VR&   \        V P                  P                  RV P                  4      4      VR&   V P                  VRV P                  4       V P                  VRV P                  4       V P                  VRV P                  4       V P                   Uu. uF  q3P                  4       NK  	  ppRV9  dK   \        P                   '       d   \#        4       pM\$        P&                  p\(        P*                  ! V4      VR&   RV9  d   \-        \.        R	7      VR
&   V P                  P1                  4        F+  w  rgVP                  4       R9  g   K  \3        VRR7      W&&   K-  	  V P5                  V4       V# u upi )r   SubjectFromToCczReply-TodateDatez
message-id)rC   z
Message-IDT)strings_only>   r   r   fromreply-to)r   r   r   _add_bodies_add_attachmentsr4   r&   r   getr   _set_list_header_if_not_emptyr   r   r   r7   r   EMAIL_USE_LOCALTIMEr   r   utcr   nowr   r   itemsr   #_idna_encode_address_header_domains)r`   r   msgkeyheader_namestzr;   values   &$      r.   r   EmailMessage.message;  sq   mm(((7c"T\\*I$,,00IJF**3dgg>**3dgg>**3
DMMJ 04/A/AB/A		/AB%+++)+\\",,r*CK|+ *( ;C--335KDzz|#CC%e$?	 6 	005
 Cs   2Gc                    V P                   V P                  ,           V P                  ,            Uu. uF  q'       g   K  VNK  	  up# u upi )zj
Return a list of all recipients of the email (includes direct
addressees as well as Cc and Bcc entries).
)r   r   r   )r`   r   s   & r.   
recipientsEmailMessage.recipientsY  s8    
 %)GGdgg$5$@K$@%U$@KKKs
   	AAc                t    V P                  4       '       g   ^ # V P                  V4      P                  V .4      # )zSend the email message.)r   r   send_messages)r`   r   s   &&r.   sendEmailMessage.send`  s2       ""=1??GGre   c                    \        V\        P                  P                  4      '       d1   Vf   Ve   \	        R4      hV P
                  P                  V4       R# \        V\        4      '       dL   \        P                  ! R\        4       Vf   Ve   \	        R4      hV P
                  P                  V4       R# Vf   \	        R4      hT;'       g,    \        P                  ! V4      ^ ,          ;'       g    \        pVP                  R^4      w  rEVR8X  d(   \        V\        4      '       d    VP!                  4       pV P
                  P                  \%        WV4      4       R#   \"         d
    \        p L:i ; i)a  
Attach a file with the given filename and content. The filename can
be omitted and the mimetype is guessed, if not provided.

If the first parameter is a MIMEBase subclass, insert it directly
into the resulting message attachments.

For a text/* mimetype (guessed or specified), when a bytes object is
specified as content, decode it as UTF-8. If that fails, set the
mimetype to DEFAULT_ATTACHMENT_MIME_TYPE and don't decode the content.
NzLcontent and mimetype must not be given when a MIMEPart instance is provided.zKMIMEBase attachments are deprecated. Use an email.message.MIMEPart instead.zLcontent and mimetype must not be given when a MIMEBase instance is provided.zcontent must be provided./text)rD   r   r   r   rG   r   appendr   r1   r2   r   	mimetypes
guess_typeDEFAULT_ATTACHMENT_MIME_TYPEsplitbytesdecodeUnicodeDecodeErrorr   )r`   filenamer   r   basetypesubtypes   &&&&  r.   r   EmailMessage.attachh  s]    h 6 677"h&: ,  ##H-(++MM:(
 "h&: ,  ##H-_899  0 0''1!40 0/ 
 !)sA 6H6!gu--@").."2 ##OHx$PQ . @ $@@s   2E) )E=<E=c                    \        V4      pVP                  R4      ;_uu_ 4       pVP                  4       pV P                  VP                  WB4       RRR4       R#   + '       g   i     R# ; i)a4  
Attach a file from the filesystem.

Set the mimetype to DEFAULT_ATTACHMENT_MIME_TYPE if it isn't specified
and cannot be guessed.

For a text/* mimetype (guessed or specified), decode the file's content
as UTF-8. If that fails, set the mimetype to
DEFAULT_ATTACHMENT_MIME_TYPE and don't decode the content.
rbN)r   openreadr   r;   )r`   pathr   filer   s   &&&  r.   attach_fileEmailMessage.attach_file  sE     DzYYt__iikGKK		75 ___s   -AA-	c                   V P                   '       g   V P                  '       gf   V P                  ;'       g    \        P                  p\        V P                   ;'       g    R VRR7      pVP                  W0P                  VR7       R# R# )r@   r   )r-   r   r   r   N)r   r   r-   r   r3   r   set_contentcontent_subtype)r`   r   r-   r   s   &&  r.   r   EmailMessage._add_bodies  sf    999D,,,}}@@(@(@H		R(;LD OOD*>*>OQ -re   c                   V P                   '       d   \        V R 4      '       d   \        R4      hVP                  4        V P                    F}  p\	        V\
        P                  P                  4      '       d   VP                  V4       K@  \	        V\        4      '       d   VP                  V4       Ki  V P                  ! V.VO5!   K  	  R# R# )mixed_subtypezJEmailMessage no longer supports the undocumented `mixed_subtype` attributeN)r   hasattrAttributeError
make_mixedrD   r   r   r   r   r   _add_attachment)r`   r   r   s   && r.   r   EmailMessage._add_attachments  s    t_--$>  NN"..
j%--*@*@AAJJz*
H55JJz*((:z: / re   c                `   V P                   ;'       g    \        P                  pVP                  R ^4      w  rgVR8X  d(   \	        V\
        4      '       d    VP                  4       pVR8X  d   VP                  W7W%R7       R# VR8X  d   \	        V\        4      '       d   VP                  VP                  R7      pMo\	        V\        P                  P                  \        P                  P                  34      '       g,   \        P                  ! \!        V4      VP                  R7      pVP                  W7VR7       R# \	        V\
        \"        \$        34      '       g   \!        V4      pVP                  VVVVR7       R#   \         d    \        pTP                  R ^4      w  rg ELEi ; i)r   r   )r   r   r   r   r   )r   r   )maintyper   r   N)r-   r   r3   r   rD   r   r   r   r   add_attachmentr   r   r   r   Messagemessage_from_bytesr   	bytearray
memoryview)r`   r   r   r   r   r-   r  r   s   &&&&&   r.   r  EmailMessage._add_attachment  sj   ==<<H$<$<$NN32v*We"<"<;!..* v8   " '<00!///<%--44emm6K6KL   22( w(K gy*'EFF%g.!!	  9 & ;7$,NN3$:!';s   F %F-,F-c                     V P                   V,          W&   R#   \         d*    T'       d   RP                  R T 4       4      Y&    R#  R# i ; i)zi
Set msg's header, either from self.extra_headers, if present, or from
the values argument if not empty.
r'   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir)   )r4   )r+   vs   & r.   r/   =EmailMessage._set_list_header_if_not_empty.<locals>.<genexpr>  s     '?1As   N)r   KeyErrorr:   )r`   r   headervaluess   &&&&r.   r   *EmailMessage._set_list_header_if_not_empty  sI    
	@,,V4CK 	@"ii'?'?? 	@s    AAAc                   \        VP                  RR4      '       g   VP                  4        F  w  r#\        V\        4      '       g   K  \
        ;QJ d&    R VP                   4       F  '       g   K   RM	  RM! R VP                   4       4      '       g   Km  TP                  TVP                   Uu. uF8  p\        VP                  VP                  \        VP                  4      R7      NK:  	  up4       K  	  R# R# u upi )zj
If msg.policy does not permit utf8 in headers, IDNA encode all
non-ASCII domains in its address headers.
utf8Fc              3   ^   "   T F#  qP                   P                  4       '       * x  K%  	  R # 5ir)   )rC   isascii)r+   r,   s   & r.   r/   CEmailMessage._idna_encode_address_header_domains.<locals>.<genexpr>  s$      <:I$++---/s   +-T)rH   rB   rC   N)getattrr   r   rD   r   r   	addressesreplace_headerr   rH   rB   r   rC   )r`   r   fieldr   r,   s   &&   r.   r   0EmailMessage._idna_encode_address_header_domains  s     szz6511 !$		e]33 <:?//< <:?//< 9 9 && ). )8 $-1->->)-'/'<
 )8
	 !,	 2s   5>D)
r   r   r   r   r   r   r   r   r&   r   r   r   r   r   r   r   r@   r@   NN)F)NNNr)   )rk   rl   rm   rn   __doc__r   r-   r   r   r~   r   r   r   defaultr   r   r   r   r   r   r   r  r   r   ro   rp   rq   s   @r.   r   r      s     ,O H 	

8% 8% 8% 8% 8% 8% 8%
8%t 4 4 <LH2Rh6 R;$*X	@ re   r   c                      a a ] tR tRt oRt]! ]. RO4      RRR
RR
RR
RR
RR
RR
R	R
/V 3R lll4       tR tV 3R lt	R t
RtVtV ;t# )EmailMultiAlternativesi  z
A version of EmailMessage that makes it easy to send multipart/alternative
messages. For example, including text and HTML versions of the text is
made easier.
r   r   r   r   alternativesr   r   Nc                  < \         SV `  VVVVVVVVV
VR7
       T	;'       g    .  Uu. uF  p\        V!  NK  	  upV n        R# u upi )r   r  N)superr~   r   r%  )r`   r&   r   r   r   r   r   r   r   r%  r   r   alternative	__class__s   &&&&&$$$$$$$ r.   r~   EmailMultiAlternatives.__init__$  sl    > 	!# 	 	
 @L?Q?Qr?Q
?Q{k*?Q
 
s   Ac                t    Ve   Vf   \        R4      hV P                  P                  \        W4      4       R# )z-Attach an alternative content representation.Nz+Both content and mimetype must be provided.)rG   r%  r   r   )r`   r   r   s   &&&r.   attach_alternative)EmailMultiAlternatives.attach_alternativeS  s2    ?h.JKK  !1'!DEre   c                r  < V P                   '       g   V P                  '       g   \        SV `  V4       V P                  '       d   \	        V R 4      '       d   \        R4      hVP                  4        V P                  ;'       g    \        P                  pV P                   F  pVP                  P                  R^4      w  rEVP                  pVR8X  d<   \        V\        4      '       d   VP                  4       pVP!                  WeVR7       Ko  \#        WbRR7      pVP!                  WdVR7       K  	  V# )alternative_subtypezZEmailMultiAlternatives no longer supports the undocumented `alternative_subtype` attributer   r   r   T)r-   r   )r  r   )r   r%  r'  r   r   r  make_alternativer-   r   r3   r   r   r   rD   r   r   add_alternativer   )r`   r   r-   r(  r  r   r   r)  s   &&     r.   r   "EmailMultiAlternatives._add_bodiesY  s   999D---G$t233$D    "}}@@(@(@H#00$/$8$8$>$>sA$F!%--v%!'511").."2''('S)'SWXG''G'T  1 
re   c                    WP                   9  d   R# V P                   F'  w  r#VP                  R4      '       g   K  W9  g   K&   R# 	  R# )zb
Checks that ``text`` occurs in the email body and in all attached MIME
type text/* alternatives.
Fztext/T)r   r%  
startswith)r`   r   r   r   s   &&  r.   body_contains$EmailMultiAlternatives.body_containsq  sB    
 yy !%!2!2G""7++0C "3 re   )r%  )r   r   r   r   r%  r   r   r   )rk   rl   rm   rn   r!  r   r   r~   r,  r   r5  ro   rp   __classcell__)r)  rr   s   @@r.   r$  r$    s       	
!
 !
 !
 !
 !
 !
 !
 !
!
FF0 re   r$  >   r   r   r   r   senderr   	resent-cc	resent-to
resent-bccresent-fromresent-sender)r   r   r   )Eemail.messager   email.policyr   r1   collectionsr   r   r   r   r   r   email.errorsr	   email.headerr
   email.headerregistryr   r   r   email.mime.baser   email.mime.messager   email.mime.multipartr   email.mime.textr   email.utilsr   r   r   ior   r   pathlibr   django.confr   django.core.mail.utilsr   django.utils.deprecationr   r   django.utils.encodingr   r   r   django.utils.timezoner   r   body_encodingr   QPr   r   rG   r5   r9   r=   r*   rU   rt   rz   r   r   r   r   r$  rj   re   r.   <module>rR     s        " ' $  )  ? ? $ * . $ < <      + P B B 6
 w'! //'* '

   :  #&   >46p :1i 1=9h =.	3	= 	3 09j2IJ .0STt tn	_\ _re   