Viewing File: /opt/alt/python311/lib64/python3.11/email/__pycache__/_header_value_parser.cpython-311.opt-2.pyc



f2		ddlZddlZddlZddlmZddlmZddlmZ	ddlm
Z
ddlmZedZ
e
edzZed	Zee
zZeed
z
Zeedz
Zeedzed
z
Zee
zZeed
zZee
zZeedz
ZdZejdejejzZGddeZGddeZGddeZ GddeZ!GddeZ"GddeZ#GddeZ$Gdd eZ%Gd!d"eZ&Gd#d$eZ'Gd%d&e'Z(Gd'd(eZ)Gd)d*eZ*Gd+d,eZ+Gd-d.eZ,Gd/d0eZ-Gd1d2eZ.Gd3d4eZ/Gd5d6eZ0Gd7d8eZ1Gd9d:eZ2Gd;d<eZ3Gd=d>eZ4Gd?d@eZ5GdAdBeZ6GdCdDeZ7GdEdFeZ8GdGdHeZ9GdIdJe!Z:GdKdLeZ;GdMdNeZ<GdOdPeZ=GdQdReZ>GdSdTe>Z?GdUdVeZ@GdWdXeZAGdYdZeZBGd[d\eZCGd]d^eZDGd_d`eDZEGdadbeDZFGdcddeZGGdedfeZHGdgdheZIGdidjeIZJGdkdleJZKGdmdneZLGdodpeMZNGdqdreNZOGdsdteNZPGdudveOZQGdwdxe
jRZSePd
dyZTePdzd{ZUd|eU_VePd}d~ZWejdXdYe
jZZ[ejdXej\dYej]Z^ejdj_Z`ejdXej\dYej]ZaejdXej\dYej]ZbejdXej\dYej]ZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqdZrdZsdZtdZudZvdZwdZxdZydZzdZ{dZ|dZ}dZ~dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS)N)	hexdigits)
itemgetter)_encoded_words)errors)utilsz 	(z
()<>@,:;.\"[].z."(z/?=z*'%%c|dt|ddddzdzS)N"\\\z\")strreplacevalues A/opt/alt/python311/lib64/python3.11/email/_header_value_parser.pyquote_stringr`s8s5zz!!$//77UCCCCGGz
   =\?            # literal =?
   [^?]*          # charset
   \?             # literal ?
   [qQbB]         # literal 'q' or 'b', case insensitive
   \?             # literal ?
  .*?             # encoded word
  \?=             # literal ?=
ceZdZdZdZdZfdZdZfdZe	dZ
e	dZdZe	d	Z
e	d
ZdZdd
ZddZddZxZS)	TokenListNTcHtj|i|g|_dSN)super__init__defects)selfargskw	__class__s   rrzTokenList.__init__ys*$%"%%%rc@dd|DS)Nc34K|]}t|VdSrr.0xs  r	<genexpr>z$TokenList.__str__.<locals>.<genexpr>~(,,!s1vv,,,,,,rjoinrs r__str__zTokenList.__str__}s#ww,,t,,,,,,rcd|jjtSNz{}({})formatr __name__r__repr__rr s rr3zTokenList.__repr__s3t~6"WW--//11	1rc@dd|DS)Nr"c32K|]}|j	|jVdSrrr%s  rr(z"TokenList.value.<locals>.<genexpr>s+8818qw888888rr*r,s rrzTokenList.values#ww88888888rc@td|D|jS)Nc3$K|]}|jVdSr)all_defectsr%s  rr(z(TokenList.all_defects.<locals>.<genexpr>s$00aAM000000r)sumrr,s rr9zTokenList.all_defectss#004000$,???rc6|dSNr)startswith_fwsr,s rr=zTokenList.startswith_fwssAw%%'''rc6	td|DS)Nc3$K|]}|jVdSr)
as_ew_allowed)r&parts  rr(z*TokenList.as_ew_allowed.<locals>.<genexpr>s%77$4%777777r)allr,s rr@zTokenList.as_ew_alloweds"O77$777777rcHg}|D]}||j|Sr)extendcomments)rrEtokens   rrEzTokenList.commentss2	,	,EOOEN++++rc$t||S)Npolicy)_refold_parse_treerrIs  rfoldzTokenList.folds!$v6666rr"cLt||dS)Nindent)printppstrrrOs  rpprintzTokenList.pprints$
djjj''(((((rcTd||S)N
rN)r+_pprRs  rrQzTokenList.ppstrs"yy00111rc#nKd||jj|jV|D]K}t	|ds|d|zV-||dzEd{VL|jrd|j}nd}d||VdS)Nz{}{}/{}(rVz*    !! invalid element in token list: {!r}z    z Defects: {}r"z{}){})r1r r2
token_typehasattrrVr)rrOrFextras    rrVz
TokenList._ppsN#O				4	4E5%((
4!55;VE]]CDDDD!99VF]3333333333<	"))$,77EEEnnVU+++++++rr")r2
__module____qualname__rXsyntactic_breakew_combine_allowedrr-r3propertyrr9r=r@rErLrSrQrV
__classcell__r s@rrrss9JO---1111199X9@@X@(((88X8X777))))2222,,,,,,,,rrc:eZdZedZedZdS)WhiteSpaceTokenListcdSN r,s rrzWhiteSpaceTokenList.valuesrcd|DS)Nc2g|]}|jdk
|jS)comment)rXcontentr%s  r
<listcomp>z0WhiteSpaceTokenList.comments.<locals>.<listcomp>s&CCCa1<+B+B	+B+B+Brrhr,s rrEzWhiteSpaceTokenList.commentssCC4CCCCrN)r2r\r]r`rrErhrrrdrdsM
XDDXDDDrrdceZdZdZdS)UnstructuredTokenListunstructuredNr2r\r]rXrhrrrprpsJJJrrpceZdZdZdS)PhrasephraseNrrrhrrrtrtJJJrrtceZdZdZdS)WordwordNrrrhrrrxrxJJJrrxceZdZdZdS)CFWSListcfwsNrrrhrrr|r|rzrr|ceZdZdZdS)AtomatomNrrrhrrrrrzrrceZdZdZdZdS)TokenrFFN)r2r\r]rXencode_as_ewrhrrrrsJLLLrrceZdZdZdZdZdZdS)EncodedWordencoded-wordN)r2r\r]rXctecharsetlangrhrrrrs"J
CGDDDrrcTeZdZdZedZedZedZdS)QuotedString
quoted-stringc8|D]}|jdkr	|jcSdSNbare-quoted-stringrXrrr's  rrmzQuotedString.contents9		A|333w4		rcg}|D]J}|jdkr#|t|0||jKd|S)Nrr")rXappendrrr+)rresr's   rquoted_valuezQuotedString.quoted_valuesf	$	$A|333

3q66""""

17####wws||rc8|D]}|jdkr	|jcSdSrrrrFs  rstripped_valuezQuotedString.stripped_values=	#	#E#777{"""8	#	#rN)r2r\r]rXr`rmrrrhrrrrsh J
X
X##X###rrc.eZdZdZdZedZdS)BareQuotedStringrcZtdd|DS)Nr"c34K|]}t|VdSrr$r%s  rr(z+BareQuotedString.__str__.<locals>.<genexpr>s(#9#9qCFF#9#9#9#9#9#9r)rr+r,s rr-zBareQuotedString.__str__s+BGG#9#9D#9#9#999:::rc@dd|DS)Nr"c34K|]}t|VdSrr$r%s  rr(z)BareQuotedString.value.<locals>.<genexpr>r)rr*r,s rrzBareQuotedString.value#ww,,t,,,,,,rN)r2r\r]rXr-r`rrhrrrrsC%J;;;--X---rrcJeZdZdZdZdZedZedZdS)CommentrlcldtdgfdDdgggS)Nr"rc:g|]}|Srh)quote)r&r'rs  rrnz#Comment.__str__.<locals>.<listcomp>s#999qTZZ]]999r))r+r:r,s`rr-zComment.__str__sPwws E9999D999 E "	##$$	$rc|jdkrt|St|ddddddS)Nrlr
rrz\(rz\))rXrr)rrs  rrz
Comment.quotescy((u::5zz!!$//77"%u...5g"%u/./.	.rc@dd|DS)Nr"c34K|]}t|VdSrr$r%s  rr(z"Comment.content.<locals>.<genexpr>r)rr*r,s rrmzComment.contentrrc|jgSr)rmr,s rrEzComment.commentss~rN)	r2r\r]rXr-rr`rmrErhrrrrsmJ$$$...--X-XrrcTeZdZdZedZedZedZdS)AddressListzaddress-listcd|DS)Nc(g|]}|jdk
|S)addressrXr%s  rrnz)AddressList.addresses.<locals>.<listcomp>'$;;;a1<#:#:#:#:#:rrhr,s r	addresseszAddressList.addresses%;;4;;;;rc6td|DgS)Nc3:K|]}|jdk
|jVdSrNrX	mailboxesr%s  rr(z(AddressList.mailboxes.<locals>.<genexpr>+s<>>Q\9%<%<K%<%<%<%<>>rr:r,s rrzAddressList.mailboxes)6>>!>>>?ACC	Crc6td|DgS)Nc3:K|]}|jdk
|jVdSrrX
all_mailboxesr%s  rr(z,AddressList.all_mailboxes.<locals>.<genexpr>0s<>>Q\9%<%<O%<%<%<%<>>rrr,s rrzAddressList.all_mailboxes.rrN)r2r\r]rXr`rrrrhrrrr!spJ
<<X<CCXCCCXCCCrrcTeZdZdZedZedZedZdS)AddressrcB|djdkr
|djSdS)NrgrouprXdisplay_namer,s rrzAddress.display_name8s)7((7'')(rcv|djdkr	|dgS|djdkrgS|djSNrmailboxinvalid-mailboxrr,s rrzAddress.mailboxes=sE7**G9
!W
#4
4
4IAw  rc|djdkr	|dgS|djdkr	|dgS|djSrrr,s rrzAddress.all_mailboxesEsL7**G9
!W
#4
4
4G9Aw$$rN)r2r\r]rXr`rrrrhrrrr4shJ
((X(!!X!%%X%%%rrc>eZdZdZedZedZdS)MailboxListmailbox-listcd|DS)Nc(g|]}|jdk
|S)rrr%s  rrnz)MailboxList.mailboxes.<locals>.<listcomp>Srrrhr,s rrzMailboxList.mailboxesQrrcd|DS)Nc$g|]
}|jdv|S))rrrr%s  rrnz-MailboxList.all_mailboxes.<locals>.<listcomp>Ws/???a|======rrhr,s rrzMailboxList.all_mailboxesUs"??4???	?rNr2r\r]rXr`rrrhrrrrMsMJ
<<X<??X???rrc>eZdZdZedZedZdS)	GroupList
group-listcF|r|djdkrgS|djSNrrrr,s rrzGroupList.mailboxes_s-	tAw)^;;IAw  rcF|r|djdkrgS|djSrrr,s rrzGroupList.all_mailboxeses-	tAw)^;;IAw$$rNrrhrrrr[sMJ
!!X!
%%X%%%rrcTeZdZdZedZedZedZdS)GrouprcB|djdkrgS|djSNrrr,s rrzGroup.mailboxesps&7--IAw  rcB|djdkrgS|djSrrr,s rrzGroup.all_mailboxesvs&7--IAw$$rc|djSr<)rr,s rrzGroup.display_name|sAw##rN)r2r\r]rXr`rrrrhrrrrlshJ
!!X!
%%X%
$$X$$$rrceZdZdZedZedZedZedZedZ	dS)NameAddr	name-addrcFt|dkrdS|djSNr)lenrr,s rrzNameAddr.display_names#t99>>4Aw##rc|djSN
local_partr,s rrzNameAddr.local_partsBx""rc|djSrdomainr,s rrzNameAddr.domainsBxrc|djSr)router,s rrzNameAddr.routesBx~rc|djSr	addr_specr,s rrzNameAddr.addr_specsBx!!rN
r2r\r]rXr`rrrrrrhrrrrsJ
$$X$
##X#XX""X"""rrcjeZdZdZedZedZedZedZdS)	AngleAddrz
angle-addrc8|D]}|jdkr	|jcSdSN	addr-spec)rXrrs  rrzAngleAddr.local_parts;	$	$A|{**|###+	$	$rc8|D]}|jdkr	|jcSdSrrXrrs  rrzAngleAddr.domains8	 	 A|{**x+	 	 rc8|D]}|jdkr	|jcSdS)N	obs-route)rXdomainsrs  rrzAngleAddr.routes;	!	!A|{**y   +	!	!rc|D];}|jdkr.|jr	|jcSt|j|jzcS<dS)Nrz<>)rXrrrrs  rrzAngleAddr.addr_specs`		A|{**<D;&&&'55CCCC	+4rN)	r2r\r]rXr`rrrrrhrrrrsJ
$$X$
  X 
!!X!
Xrrc(eZdZdZedZdS)ObsRoutercd|DS)Nc2g|]}|jdk
|jSrrr%s  rrnz$ObsRoute.domains.<locals>.<listcomp>s&CCCQ!,(*B*B*B*B*Brrhr,s rrzObsRoute.domainssCC$CCCCrN)r2r\r]rXr`rrhrrrrs7J
DDXDDDrrceZdZdZedZedZedZedZedZ	dS)MailboxrcB|djdkr
|djSdSNrrrr,s rrzMailbox.display_names)7,,7''-,rc|djSr<rr,s rrzMailbox.local_partAw!!rc|djSr<rr,s rrzMailbox.domainsAw~rcB|djdkr
|djSdSr)rXrr,s rrz
Mailbox.routes(7,,7= -,rc|djSr<rr,s rrzMailbox.addr_specsAw  rNrrhrrrrsJ
((X(""X"X!!X!!!X!!!rrc8eZdZdZedZexZxZxZZ	dS)InvalidMailboxrcdSrrhr,s rrzInvalidMailbox.display_nametrNrrhrrrrsB"J
X/;:J::%)))rrc6eZdZdZdZefdZxZS)DomainrFctdtjSNr"r+rrsplitr4s rrz
Domain.domain'wwuww}**,,---r)r2r\r]rXr@r`rrarbs@rrrsLJM
....X.....rrceZdZdZdS)DotAtomdot-atomNrrrhrrrrsJJJrrceZdZdZdZdS)DotAtomTextz
dot-atom-textTNr2r\r]rXr@rhrrrrs JMMMrrceZdZdZdZdS)
NoFoldLiteralzno-fold-literalFNrrhrrrrs"JMMMrrcneZdZdZdZedZedZedZedZ	dS)AddrSpecrFc|djSr<rr,s rrzAddrSpec.local_part
rrcFt|dkrdS|djS)Nr)rrr,s rrzAddrSpec.domains"t99q==4Bxrct|dkr
|djS|dj|djz|djzS)Nr"rrr)rrrstriplstripr,s rrzAddrSpec.valuesWt99q==7= Aw}##%%d1gm3DGM4H4H4J4JJJrct|j}t|t|tz
krt	|j}n|j}|j
|dz|jzS|S)N@)setrr
DOT_ATOM_ENDSrr)rnamesetlps   rrzAddrSpec.addr_specsedo&&w<<#gm34444do..BBB;"8dk))	rN)
r2r\r]rXr@r`rrrrrhrrrrsJM
""X"X
KKXK
XrrceZdZdZdZdS)ObsLocalPartzobs-local-partFNrrhrrr-r-&s!JMMMrr-cLeZdZdZdZedZefdZxZS)DisplayNamezdisplay-nameFct|}t|dkr|jS|djdkr|dn7|ddjdkr t|ddd|d<|djdkr|n7|ddjdkr t|ddd|d<|jS)Nrr}rr)rrrrXpop)rrs  rrzDisplayName.display_name1soos88q==9q6&&GGAJJJJ1vay#v--"3q6!"":..Ar7''GGIIII2wr{%//#CGCRCL11Byrctd}|jrd}n|D]}|jdkrd}t|dkrt|rrdx}}|djdks|ddjdkrd}|djdks|ddjdkrd}|t|jz|zStjS)	NFTrrr"r}rgr)rrXrrrrr)rrr'prepostr s     rrzDisplayName.valueBs<	!EE
!
!<?22 Et99>>e>OC$Aw!6))T!WQZ-BF-J-JBx"F**d2hrl.Ev.M.M|D$5666t;;77= r)	r2r\r]rXr_r`rrrarbs@rr/r/,shJ
X !!!!X!!!!!rr/cBeZdZdZdZedZedZdS)	LocalPartz
local-partFcX|djdkr
|djS|djS)Nrr)rXrrr,s rrzLocalPart.value[s-7007''7= rc
tg}t}d}|dtgzD]}|jdkr|r6|jdkr+|djdkrt|dd|d<t|t}|rG|jdkr<|djdkr+|t|ddn|||d}|}t|dd}|jS)NFrr}dotrr)DOTrXr
isinstancerr)rrlast
last_is_tltokis_tls      rrzLocalPart.local_partbse
7cU?
	
	C~''
/s~66H'611#D"I..BsI..E
 $/U22F%//

9SW--....

3r7DJJAbD	""yrN)r2r\r]rXr@r`rrrhrrr6r6VsRJM
!!X!Xrr6cLeZdZdZdZefdZedZxZS)
DomainLiteralzdomain-literalFctdtjSrrr4s rrzDomainLiteral.domainrrc8|D]}|jdkr	|jcSdS)Nptextrrs  ripzDomainLiteral.ips8		A|w&&w'		r)	r2r\r]rXr@r`rrErarbs@rrArAzsg!JM
....X.XrrAceZdZdZdZdZdS)MIMEVersionzmime-versionN)r2r\r]rXmajorminorrhrrrGrGsJEEEErrGcJeZdZdZdZdZdZedZedZ	dS)	Parameter	parameterFus-asciic.|jr
|djndSr)	sectionednumberr,s rsection_numberzParameter.section_numbers"&6tAw~~Q6rc|D]N}|jdkr	|jcS|jdkr-|D]*}|jdkr|D]}|jdkr
|jcccS+OdS)Nrrrr")rXrrs  rparam_valuezParameter.param_values	<	<E7**++++?22"<<E'+???%*<<E$/7::','; ; ; ; ; ; ; ; ;rrN)
r2r\r]rXrOextendedrr`rQrSrhrrrKrKs\JIHG
77X7
XrrKceZdZdZdS)InvalidParameterinvalid-parameterNrrrhrrrVrVs$JJJrrVc(eZdZdZedZdS)	Attribute	attributecV|D]%}|jdr	|jcS&dS)Nattrtext)rXendswithrrs  rrzAttribute.stripped_valuesG	#	#E((44
#{"""
#	#	#rNr2r\r]rXr`rrhrrrYrYs2J
##X###rrYceZdZdZdZdS)SectionsectionN)r2r\r]rXrPrhrrr`r`sJ
FFFrr`c(eZdZdZedZdS)Valuerc|d}|jdkr|d}|jdr|jS|jS)Nrr}r)rrZzextended-attribute)rXr]rrrs  rrzValue.stripped_valuesSQv%%GE$$DFF	(''zrNr^rhrrrcrcs2J
Xrrcc2eZdZdZdZedZdZdS)MimeParametersmime-parametersFc#Ki}|D]y}|jds|djdkr/|dj}||vrg||<|||j|fz|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tjn1#t*$r$t j|d}YnwxYw||ld
|}||fV6dS)NrLrrZ)keyrz.duplicate parameter name; duplicate(s) ignoredz+duplicate parameter name; duplicate ignoredz(inconsistent RFC2231 parameter numberingsurrogateescaperMzlatin-1)encodingr")rXr]rstriprrQitemssortedrrrTrrrInvalidHeaderDefectrSurllibparseunquote_to_bytesdecodeLookupErrorUnicodeEncodeErrorr_has_surrogatesUndecodableBytesDefectunquoter+)rparamsrFnamepartsfirst_paramrvalue_partsirQparamrs            rryzMimeParameters.paramssF	?	?E#,,[99
Qx"k118>''))D6!!!t4L!5u =>>>>!<<>>3	3	KD%5jmm444E(1+K!)G'
&CJJNN8A;!##!HQK'..v/IH0J0JKKK!"1"IEKA).!
*!
*%!Q&&!>I
,,V-GI.K.KLLL 
,,V-GF.H.HIIIQ)>RR & = =e D DP$)LL:K$L$LEE +-?@PPP
%*LL=N$O$OEEEP!077R!M001N1P1PQQQ.PPP!' 4 4UY 4 O O	P ""5))))GGK((E+g3	3	s$I&"G99'H#"H#&+JJc	g}|jD]S\}}|r7|d|t|>||Td|}|rd|zndS)N{}={}z; rgr")ryrr1rr+)rryrzrs    rr-zMimeParameters.__str__s;	$	$KD%
$

gnnT<3F3FGGHHHH

d####6""%-sV||2-rN)r2r\r]rXr^r`ryr-rhrrrfrfsJ"JO
CCXCJ.....rrfc(eZdZdZedZdS)ParameterizedHeaderValueFcRt|D]}|jdkr	|jcSiS)Nrg)reversedrXryrs  rryzParameterizedHeaderValue.params-s>d^^	$	$E#444|###5	rN)r2r\r]r^r`ryrhrrrr's4O
XrrceZdZdZdZdZdZdS)ContentTypezcontent-typeFtextplainN)r2r\r]rXr@maintypesubtyperhrrrr5s"JMHGGGrrceZdZdZdZdZdS)ContentDispositionzcontent-dispositionFN)r2r\r]rXr@content_dispositionrhrrrr<s &JMrrceZdZdZdZdZdS)ContentTransferEncodingzcontent-transfer-encodingF7bitN)r2r\r]rXr@rrhrrrrBs,JM
CCCrrceZdZdZdZdS)HeaderLabelzheader-labelFNrrhrrrrHsJMMMrrceZdZdZdZdZdS)MsgIDzmsg-idFc0t||jzSr)rlineseprKs  rrLz
MsgID.foldQs4yy6>))rN)r2r\r]rXr@rLrhrrrrMs-JM*****rrceZdZdZdS)	MessageIDz
message-idNrrrhrrrrVsJJJrrceZdZdZdS)InvalidMessageIDzinvalid-message-idNrrrhrrrrZs%JJJrrceZdZdZdS)HeaderheaderNrrrhrrrr^rvrrc~eZdZdZdZdZfdZfdZdZe	dZ
dfd	ZdZe	d	Z
d
ZxZS)TerminalTcht||}||_g|_|Sr)r__new__rXr)clsrrXrr s    rrzTerminal.__new__ls-wwsE**$rcd|jjtSr/r0r4s rr3zTerminal.__repr__rs,t~68H8H8J8JKKKrcNt|jjdz|jzdS)N/)rPr r2rXr,s rrSzTerminal.pprintus'
dn%+do=>>>>>rc*t|jSr)listrr,s rr9zTerminal.all_defectsxsDL!!!rr"c	d||jj|jt	|jsdnd|jgS)Nz
{}{}/{}({}){}r"z {})r1r r2rXrr3r)rrOr s  rrVzTerminal._pp|s_&&N#OGGlBBBT\(B(B	rcdSrrhr,s rpop_trailing_wszTerminal.pop_trailing_wsrrcgSrrhr,s rrEzTerminal.commentss	rc.t||jfSr)rrXr,s r__getnewargs__zTerminal.__getnewargs__s4yy$/**rr[)r2r\r]r@r_r^rr3rSr`r9rVrrErrarbs@rrrfsMOLLLLL???""X"X+++++++rrc*eZdZedZdZdS)WhiteSpaceTerminalcdSrfrhr,s rrzWhiteSpaceTerminal.valuerircdS)NTrhr,s rr=z!WhiteSpaceTerminal.startswith_fwsstrNr2r\r]r`rr=rhrrrrs<
Xrrc*eZdZedZdZdS)
ValueTerminalc|Srrhr,s rrzValueTerminal.valuesrcdS)NFrhr,s rr=zValueTerminal.startswith_fwssurNrrhrrrrs<
Xrrc*eZdZedZdZdS)EWWhiteSpaceTerminalcdSrrhr,s rrzEWWhiteSpaceTerminal.valuesrrcdSrrhr,s rr-zEWWhiteSpaceTerminal.__str__srrN)r2r\r]r`rr-rhrrrrs<
XrrceZdZdS)_InvalidEwErrorN)r2r\r]rhrrrrs;;rrr9,zlist-separatorFr'zroute-component-markerz([{}]+)r"z[^{}]+z[\x00-\x20\x7F]c	t|}|r,|jtj|tj|r.|jtjddSdS)Nz*Non-ASCII characters found in header token)_non_printable_finderrrrNonPrintableDefectrrvrw)xtextnon_printabless  r_validate_xtextrsJ*511NH

V6~FFGGGU##;

V:8::	;	;	;	;	;;;rcn	t|d^}}g}d}d}tt|D]D}||dkr
|rd}d}nd}|rd}n|||vrn!|||E|dz}d|d||dg|z|fS)NrFr
Tr")
_wsp_splitterrangerrr+)rendcharsfragment	remaindervcharsescapehad_qpposs        r_get_ptext_to_endcharsrs)22Hy
F
F
FS]]##C=D  
	FF
c]h
&
&E

hsm$$$$Ag
776??BGGXcdd^$4y$@AA6IIrc	|}t|dt|t|z
d}||fS)Nfws)r%rr)rnewvaluers   rget_fwsrsK||~~H
U#<CJJs8}}$<#<=u
E
EC=rc	t}|ds'tjd||dddd^}}||ddkr'tjd|d|}t|dkrW|dtvrH|dtvr9|	ddkr |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 {}rz?=rr"r?zwhitespace inside encoded wordz!encoded word format invalid: '{}'vtextz.missing trailing whitespace after encoded-word)r
startswithrHeaderParseErrorr1rr+rrcountrrror_ewrs
ValueErrorKeyErrorrrrrDWSPrrrr)
rewr>rremstrrestrrrrrFcharsrs
             rget_encoded_wordrs
BD!!@%077>>@@	@ABBioodA..OC)
eABBi%077>>@@	@
WWY

FFaq	Yq	Y		#!<<a00yDj4
399;;!

&4,..	/	/	/
BFGGIE@'*z$*t2C'D'D$gtWW!@@@/66rv>>@@	@@BJBGJg
	"7c>>!$--KE4IIe)$22	eW--
		%wwy!!	"
?q$$

&4<>>	?	?	?
u9sF..9G'c	t}|r|dtvr(t|\}}||:d}|dr	t|\}}d}t
|dkr?|djdkr.|jtj
dd}|r=t
|dkr*|d	jd
krt|dd|d<||#t$rd}Yntj
$rYnwxYwt|d^}}|r1t|r|d^}}t%|d}t'|||d|}||S)
NrTrrrz&missing whitespace before encoded wordFrrrr")rprrrrrrrXrrrorrrrrfc2047_matchersearch	partitionrrr+)rrqrFvalid_ewhave_wsr>rrs        rget_unstructuredr@s',)**L
(#8s??"5>>LE5&&&D!!	
/66u|$$q((#B'2e;;$,33F4ND5F5FGGG"'5s<00144#B'2nDD+?(,e,5,5R(##E***%#
!
!
! *



"(q11i	4..s33	4#ood33OC)c7++E"""	""Q(#Rs"DD=,D=<D=cr	t|d\}}}t|d}t|||fS)Nz()rD)rrrrrD_s   rget_qp_ctextrsE
-UD99OE5!ug..EE%<rcr	t|d\}}}t|d}t|||fS)NrrD)rrrrs   rget_qcontentrsE-UC88OE5!%))EE%<rc	t|}|s'tjd||}|t|d}t
|d}t|||fS)Nzexpected atext but found '{}'atext)_non_atom_end_matcherrrr1rrrr)rmrs   r	get_atextrs
	e$$A;%+22599;;	;
GGIIE#e**++E%))EE%<rc	|ddkr'tjd|t}|dd}|r3|ddkr't	|\}}|||r/|ddkr"|dtvrt|\}}n|dddkrd}	t|\}}|j	tj
dd	}n'#tj$rt	|\}}YnwxYw|rNt|dkr;|d
jdkr*|djd
krt|d
d|d
<nt	|\}}|||r
|ddk"|s0|j	tj
d||fS||ddfS)Nrrzexpected '"' but found '{}'rrrFz!encoded word inside quoted stringTrrrrz"end of header inside quoted string)rrr1rrrrrrrrorrXr)rbare_quoted_stringrFrs    rget_bare_quoted_stringrsJ
Qx3%*11%88::	:)++!""IE)qS#E**u!!%(((
)E!HOO8s??"5>>LE55
2A2Y$

H
3/66u"*11&2L73939:::*
3
3
3+E22uuu
3
7C 233a77&r*5>>*2.9^KK-A*2..7.7&r*(..LE5!!%(((+)E!HOO,)"))&*D0+2+2	3	3	3!5((uQRRy((sAD!D*)D*c"	|r3|ddkr'tjd|t}|dd}|r|ddkrv|dtvrt|\}}n1|ddkrt
|\}}nt|\}}|||r|ddkv|s0|j	tj
d||fS||ddfS)Nrrzexpected '(' but found '{}'rrzend of header inside comment)rrr1rrrget_commentrrrro)rrlrFs   rrrs7

9qS%)007799	9iiG!""IE
E!HOO8s??"5>>LE55
1X__&u--LE55'..LE5uE!HOOv9* , ,	-	-	-~E!""Irc	t}|ri|dtvrZ|dtvrt|\}}nt	|\}}|||r|dtvZ||fSr<)r|CFWS_LEADERrrrr)rr}rFs   rget_cfwsrs::D
E!H++8s??"5>>LE55&u--LE5EE!H++;rcV	t}|r6|dtvr't|\}}||t	|\}}|||r6|dtvr't|\}}||||fSr<)rrrrr)r
quoted_stringrFs   rget_quoted_stringrs!NNM$q[((uU###)%00LE5$q[((uU###%rcf	t}|r6|dtvr't|\}}|||r6|dtvr'tjd||dr;	t|\}}n9#t
j$rt|\}}YnwxYwt|\}}|||r6|dtvr't|\}}||||fS)Nrzexpected atom but found '{}'r)rrrr	ATOM_ENDSrrr1rrr)rrrFs   rget_atomrsN66Dq[((uE:qY&&%*11%88::	:(	,+E22LE55&	,	,	,%U++LE555	,
!''uKKq[((uE;sB))!C
C
c	t}|r|dtvr'tjd||ry|dtvrjt|\}}|||r0|ddkr$|t|dd}|r|dtvj|dtur*tjdd|z||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'r	rrz4expected atom at end of dot-atom-text but found '{}')rrrrr1rrr:)r
dot_atom_textrFs   rget_dot_atom_textr1s MMM:E!H	))%'++16%==::	:
E!HI-- ''uU###	U1X__  %%%!""IEE!HI--RC%'#VCI..00	0%rc	t}|dtvr't|\}}|||dr;	t|\}}n9#tj$rt|\}}YnwxYwt|\}}|||r6|dtvr't|\}}||||fS)Nrr)	rrrrrrrrr)rdot_atomrFs   rget_dot_atomr
Ds
yyHQx;u0	4+E22LE55&	4	4	4-U33LE555	4
)//uOOEq[((uU?sA//!BBcb	|dtvrt|\}}nd}|stjd|ddkrt	|\}}nH|dt
vr'tjd|t|\}}||g|dd<||fS)Nrz5Expected 'atom' or 'quoted-string' but found nothing.rz1Expected 'atom' or 'quoted-string' but found '{}')rrrrrSPECIALSr1r)rleaderrFs   rget_wordr]s
Qx; 
E%CEE	EQx}}(//uu	qX		%'77=ve}}FF	F u
Hbqb	%<rc	t}	t|\}}||nA#tj$r/|jtjdYnwxYw|r
|dtvr|ddkrQ|t|jtj	d|dd}n	t|\}}nd#tj$rR|dtvr?t|\}}|jtj	dnYnwxYw|||r|dtv||fS)Nzphrase does not start with wordrr	zperiod in 'phrase'rzcomment found without atom)rtrrrrrroPHRASE_ENDSr:ObsoleteHeaderDefectrr)rrurFs   r
get_phrasers
XXF0u

e"000f8-//	0	0	0	0	00!E!HK//8S==MM#N!!&"=$#&#&
'
'
'!""IEE
'uu*


8{**#+E??LE5N))&*E4+6+6777777

MM%   !!E!HK//"5=s"'9;A76A7*C==AEEc	t}d}|dtvrt|\}}|s'tjd|	t
|\}}nh#tj$rV	t|\}}n?#tj$r-|ddkr|dtvrt}YnwxYwYnwxYw||g|dd<|
||r|ddks|dtvrtt||z\}}|j
dkr-|j
tjdn,|j
tjd||d<	|jdn<#t&$r/|j
tjdYnwxYw||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))r6rrrrr1r
rrrrget_obs_local_partrrXrrorrencoderuNonASCIILocalPartDefect)rrr
rFobs_local_parts     rget_local_partrslJ
FQx; 
@%077>>@@	@ #E**uu"   	 #E??LE55&	 	 	 Qx4E!H$;$;KKEEE	  Hbqb	e'%(D..E!HK$?$? 23z??U3J K K$(@@@%%f&@N'P'P
Q
Q
Q
Q
%%f&A>'@'@
A
A
A&
1
>((((>>>!!&"@;#=#=	>	>	>	>	>>usHA00CBC9CCCCC F;;6G43G4c 	t}d}|r|ddks|dtvr|ddkrU|r,|jt	jd|td}|dd}|ddkrb|t|dd|dd}|jt	jd	d}|r=|d
jdkr,|jt	jd	t|\}}d}n7#tj
$r%|dtvrt|\}}YnwxYw|||r|ddk|dtv|djdks"|djd
kr=|djdkr,|jt	jd|d
jdks"|d
jd
kr=|djdkr,|jt	jd|jrd|_||fS)NFrr
r	zinvalid repeated '.'Trmisplaced-specialz/'\' character outside of quoted-string/ccontentrr9zmissing '.' between wordsr}z!Invalid leading '.' in local partrz"Invalid trailing '.' in local partr)
r-rrrrror:rrXrrrr)rrlast_non_ws_was_dotrFs    rrrs!^^N
%U1Xt^^uQx{'B'B8s??"
-&--f.H*/,/,---!!#&&&"&!""IE
1Xt^^!!-a0C#E#E
F
F
F!""IE"))&*DB+D+D
E
E
E"'	.nR0;uDD"))&*D++-+-
.
.
.	+#E??LE5"'&	+	+	+Qx{**#E??LE555	+	e$$$7%U1Xt^^uQx{'B'B8	q$--1(&001(%//%%f&@/'1'1	2	2	2r%..2)6112)500%%f&@0'2'2	3	3	3=$<!5  sE1F	F	c	t|d\}}}t|d}|r,|jt	jdt
|||fS)Nz[]rDz(quoted printable found in domain-literal)rrrrrrr)rrDrs   r	get_dtextrsz
2%>>E5&%))E
9

V8688	9	9	9E%<rc|rdS|tjd|tdddS)NFz"end of input inside domain-literal]domain-literal-endT)rrror)rdomain_literals  r_check_for_early_dl_endr$s]u&4,..///--ABBCCC4rcN	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 '{}'rzdomain-literal-startr!z4expected ']' at end of domain-literal but found '{}'r")rArrrrrr1r$rrrr)rr#rFs   rget_domain_literalr's;#__NQx;ue$$$A%&?@@@Qx3%'!!'00	0!""IEun55%u$$--CDDEEEQx3u~~ue$$$U##LE5%   un55%u$$Qx3u~~ue$$$un55%u$$Qx3%'!!'00	0--ABBCCC!""IE%q[((ue$$$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|tt|d	d\}}|||r|ddkW||fS)
Nrzexpected domain but found '{}'r&r'zInvalid Domainr	z(domain is not a dot-atom (contains CFWS)rr)rrrrrr1r'rr
rrrrXr:)rrr
rFs    r
get_domainr)>sXXF
FQx; 
<%,33E::<<	<Qx3)%00uE"1"I

eu}'#E**uu"'''uuu'8qS%&6777
Hbqb	
MM%!qSf9688	9	9	9!9:--q	F111I	!aCMM##E!""I..LE5MM%   	!aC5=sB11!CCc	t}t|\}}|||r|ddkr0|jt	jd||fS|t
ddt|dd\}}||||fS)Nrr'z#addr-spec local part with no domainaddress-at-symbolr)rrrrrrorr))rrrFs   r
get_addr_specr,ds

I!%((LE5
U E!HOO  !;1"3"3	4	4	4%
]3(;<<===eABBi((LE5
Uerc	t}|r|ddks|dtvr|dtvr(t|\}}||n0|ddkr$|t|dd}|r|ddku|dtv|r|ddkr'tjd||tt|dd\}}|||r|ddkr|t|dd}|sn|dtvr't|\}}|||ddkrI|tt|dd\}}|||r|ddk|stjd|ddkr'tjd||tdd	||ddfS)
Nrrrr'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)rrrr
ListSeparatorrrr1RouteComponentMarkerr)r)r	obs_routerFs   r
get_obs_router2ts

I
U1Xs]]eAh+&=&=8{""#E??LE5U####
1X__]+++!""IE
U1Xs]]eAh+&=&=FE!HOO%6==eDDFF	F
)***eABBi((LE5
U
$E!HcMM'''abb		8{""#E??LE5U###8s??1222%eABBi00LE5U###$E!HcMMO%&MNNNQx3%(''-ve}}66	6
]3(ABBCCCeABBirc(	t}|dtvr't|\}}|||r|ddkr't	jd||tdd|dd}|ddkr]|tdd|jt	j	d|dd}||fS	t|\}}n#tj$r	t|\}}|jt	jd	n:#tj$r(t	jd
|wxYw||t|\}}YnwxYw|||r|ddkr|dd}n,|jt	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)
rrrrrrr1rrror,r2r)r
angle_addrrFs   rget_angle_addrr7sJQx;u%   @E!HOO%077>>@@	@mC);<<===!""IE
Qx3--=>>???!!&"<*#,#,	-	-	-abb	5  ,$U++uu"	,	,	,	P(//LE5%%f&A<'>'>
?
?
?
?&	P	P	P)@GGNNPP
P	P	%   $U++uuu	,e3qSabb	!!&"<0#2#2	3	3	3mC)9::;;;!q[((u%   us*D%%G5>E43G47F++*GGc	t}t|\}}||dd|jdd|_||fSr)r/rrDr)rrrFs   rget_display_namer9s]==Le$$LE5aaa!!! =+Lrcj	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 '{}'r4)
rrrrrr1rr9rr7)r	name_addrr
rFs    r
get_name_addrr<sf

I
FQx; 
	D)3::6BBDD
DQx38{"")3::5AACC
C'..u	C)3::5AACC
C"8E!HRaRLF!%((LE5
Hbqb	
Uerc	t}	t|\}}nc#tj$rQ	t	|\}}n:#tj$r(tjd|wxYwYnwxYwt
d|jDrd|_|	|||fS)Nzexpected mailbox but found '{}'c3JK|]}t|tjVdSr)r;rror%s  rr(zget_mailbox.<locals>.<genexpr>sC33a344333333rr)
rr<rrr,r1anyr9rXr)rrrFs   rget_mailboxr@s
iiGA$U++uu"AAA	A(//LE55&	A	A	A)188??AA
A	A5A33 % 133333/.NN5E>&$BAB7A>>BBc,	t}|r|d|vrv|dtvr4|t|dd|dd}n't	|\}}|||r
|d|vv||fS)Nrrr)rrrrr)rrinvalid_mailboxrFs    rget_invalid_mailboxrD
s%&&O
*E!HH,,8{""""=q1D$F$F
G
G
G!""IEE%e,,LE5""5)))*E!HH,,E!!rc	t}|rd|ddkrW	t|\}}||n}#tj$rjd}|dt
vrt
|\}}|r
|ddvrB|||jtjdnt|d\}}||g|dd<|||jtj
dn|ddkr-|jtjdn^t|d\}}||g|dd<|||jtj
dYnwxYw|rm|ddvrc|d}d|_t|d\}}|||jtj
d|r0|ddkr$|t|d	d}|r
|ddkW||fS)
Nr;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listrrrr)rr@rrrrrrrrDrorXrDr/)rmailbox_listrFr
rs     rget_mailbox_listrHs
==L
(E!HOO	8&u--LE5&&&&&	8	8	8FQx;&& (

<aD 0 0 ''/// (//0K71919::::$7ud#C#CLE5)%+Hbqb	 ''... (//0J91;1;<<<<qS$++F,G3-5-56666 35$??u%!'E"1"I##E***$++F,F5-7-7888/	82	4U1XT))#2&G!2G.ud;;LE5NN5!!! ''(B1)3)3
4
4
4	U1X__
...!""IEQ(E!HOORs'A

E7GGc	t}|s0|jtjd||fSd}|r|dt
vr~t
|\}}|sE|jtjd||||fS|ddkr||||fSt|\}}t|j	dkr\||||
||jtjd||fS||g|dd<||||fS)Nzend of header before group-listrzend of header in group-listrFzgroup-list with empty entries)rrrrrorrrHrrrDr)r
group_listr
rFs    rget_group_listrKXsJ!!!&"<-#/#/	0	0	05  
F%q[(( 
	%
%%f&@-'/'/
0
0
0f%%%u$$8s??f%%%u$$#E**LE5
5""f%%%%   !!&"=+#-#-	.	.	.5  
Hbqb	eurc	t}t|\}}|r|ddkr'tjd||||t
dd|dd}|r;|ddkr/|t
dd||ddfSt|\}}|||s-|jtj	dn3|ddkr'tjd	||t
dd|dd}|r6|dtvr't|\}}||||fS)
Nrr.z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorrrFzgroup-terminatorzend of header in groupz)expected ';' at end of group but found {})rr9rrr1rrrKrrorr)rrrFs   r	get_grouprM}s
GGE#E**LE59E!HOO%'**0&--99	9	LL	LLs$CDDEEE!""IE qS
]3(:;;<<<eABBi!%((LE5	LLG

V7$&&	'	'	'	'	qS%7>>uEEGG	G	LLs$677888!""IEq[((u
U%<rc@	t}	t|\}}nc#tj$rQ	t	|\}}n:#tj$r(tjd|wxYwYnwxYw||||fS)Nzexpected address but found '{}')rrMrrr@r1r)rrrFs   rget_addressrOs iiGA ''uu"AAA	A&u--LE55&	A	A	A)188??AA
A	A5ANN5E>rAc	t}|rm	t|\}}||n#tj$r}d}|dt
vrt
|\}}|r|ddkrC|||jtjdnt|d\}}||g|dd<|t|g|jtjdn|ddkr-|jtjdnlt|d\}}||g|dd<|t|g|jtjdYd}~nd}~wwxYw|ru|ddkri|dd}d|_t|d\}}|
||jtjd|r$|t|dd}|m||fS)	Nrrz"address-list entry with no contentzinvalid address in address-listzempty element in address-listrrr)rrOrrrrrrrrDrrorXrDr/)raddress_listrFerrr
rs      rget_address_listrSs==L
(	8&u--LE5&&&&&	8	8	8FQx;&& (

<aC ''/// (//0K<1>1>????$7uc#B#BLE5)%+Hbqb	 ''(8(8999 (//0J91;1;<<<<qS$++F,G3-5-56666 35#>>u%!'E"1"I##GUG$4$4555$++F,F5-7-7888/	82	4U1X__#2&q)G!2G.uc::LE5NN5!!! ''(B1)3)3
4
4
4	
...!""IEQ(Rs'=G
FGGcH	t}|s'tjd||ddkr'tjd||tdd|dd}t
|\}}|||r|ddkr'tjd||tdd	||ddfS)
Nz'expected no-fold-literal but found '{}'rr&z;expected '[' at the start of no-fold-literal but found '{}'zno-fold-literal-startrr!z9expected ']' at the end of no-fold-literal but found '{}'zno-fold-literal-end)rrrr1rrr)rno_fold_literalrFs   rget_no_fold_literalrVs4#ooOE%5<<UCCEE	EQx3%
#VE]],,	,=.EFFGGG!""IEU##LE55!!!,E!HOO%
#VE]],,	,=.CDDEEEE!""I%%rc(	t}|r6|dtvr't|\}}|||r|ddkr't	jd||tdd|dd}	t|\}}n#tj$r}	t|\}}|j
t	jdn:#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)Nrr4zexpected msg-id but found '{}'zmsg-id-startrzobsolete id-left in msg-idz4expected dot-atom-text or obs-id-left but found '{}'r'zmsg-id with no id-rightr5z
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)rrrrrrr1rrrrrrorVr))rmsg_idrFes    r
get_msg_idrZs
WWFq[((u

e<E!HOO%,33E::<<	<
MM-^44555!""IE1(//uu"	1	1	1	1-e44LE5N!!&"=,#.#.
/
/
/
/&	1	1	1)""(&--11
1	1
/
/		1MM%	E!HOOf8%''	(	(	(
	U1X__MM-\::;;;!""IEu}
MM-%899:::!""IE
5(//uu"555
	5.u55LE55&	5	5	5
5)%00u%%f&A1'3'34444*
5
5
5-&&,fUmm555
544444	55MM%/qSabb	f8,..	/	/	/
MM-\22333q[((u

e5=sx+B>>E
>D
E

7EE
	E
	HK,H?>K?K>J
K
7KK
K
KKKc	t}	t|\}}|||r?|jt	jd|ny#tj$rg}t|}t|}|jt	jd|Yd}~nd}~wwxYw|S)NzUnexpected {!r}zInvalid msg-id: {!r})
rrZrrrror1rrr)r
message_idrFexs    rparse_message_idr^Js#J2!%((u%   	2%%f&@!((//'1'1
2
2
2"KKK ''%e,,
!!&'='D'DR'H'HII	K	K	K	K	K	K	K	KKs'A::C0	AC++C0c	t}|s.|jtjd|S|dt
vrUt
|\}}|||s,|jtjdd}|rM|ddkrA|dt
vr2||dz
}|dd}|r|ddkr|dt
v2|sc|jtjd	||t|dn7t||_|t|d	|r6|dt
vr't
|\}}|||r|ddkrZ|j,|jtjd
|r#|t|d|S|tdd|dd}|r6|dt
vr't
|\}}|||s5|j,|jtjd
|Sd}|r5|dt
vr&||dz
}|dd}|r|dt
v&|sc|jtjd	||t|dn7t||_
|t|d	|r6|dt
vr't
|\}}|||rO|jtjd
|t|d|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSr"r	rz1Expected MIME major version number but found {!r}rdigitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)rGrrrHeaderMissingRequiredValuerrisdigitror1rintrHrI)rmime_versionrFr`s    rparse_mime_versionrefs
==L##F$E3%5%5	6	6	6Qx;uE"""	E ''(IB)D)D
E
E
E
F
E!HOOa(C(C%(abb	E!HOOa(C(C>>=##F$>?FFvNN%P%P	Q	Q	QM&'::;;;; [[M&(;;<<<#q[((uE"""E!HOO) ''(BB)D)D
E
E
E	?
eW = =>>>
c+>??@@@!""IE#q[((uE""") ''(BB)D)D
E
E
E
F
E!HK//%(abb	E!HK//>>=##F$>?FFvNN%P%P	Q	Q	QM&'::;;;; [[M&(;;<<<#q[((uE""";##F$>5%7%7	8	8	8M%99:::rc4	t}|r|ddkrx|dtvr4|t|dd|dd}n't	|\}}|||r|ddkx||fS)NrrFrr)rVrrrr)rinvalid_parameterrFs   rget_invalid_parameterrhs)**
,E!HOO8{""$$]583F&H&H
I
I
I!""IEE%e,,LE5$$U+++,E!HOOe##rc	t|}|s'tjd||}|t|d}t
|d}t|||fS)Nzexpected ttext but found '{}'ttext)_non_token_end_matcherrrr1rrrr)rrrjs   r	get_ttextrls	u%%A;%+22599;;	;
GGIIE#e**++E%))EE%<rc	t}|r6|dtvr't|\}}|||r6|dtvr'tjd|t|\}}|||r6|dtvr't|\}}||||fSNrzexpected token but found '{}')	rrrr
TOKEN_ENDSrrr1rl)rmtokenrFs   r	get_tokenrqsWWFq[((u

e;qZ''%+22599;;	;U##LE5
MM%q[((u

e5=rc	t|}|s'tjd||}|t|d}t
|d}t|||fS)Nz expected attrtext but found {!r}r\)_non_attribute_end_matcherrrr1rrrrrrr\s   rget_attrtextrus	#5))A>%.55e<<>>	>wwyyH#h--..!EXz22HHU?rc	t}|r6|dtvr't|\}}|||r6|dtvr'tjd|t|\}}|||r6|dtvr't|\}}||||fSrn)	rYrrrATTRIBUTE_ENDSrrr1rurrZrFs   r
get_attributerysI q[((u;q^++%+22599;;	;&&LE5
U q[((uerc	t|}|s'tjd||}|t|d}t
|d}t|||fS)Nz)expected extended attrtext but found {!r}extended-attrtext)#_non_extended_attribute_end_matcherrrr1rrrrrts   rget_extended_attrtextr}	s	,E22AG%7>>uEEGG	GwwyyH#h--..!EX':;;HHU?rc	t}|r6|dtvr't|\}}|||r6|dtvr'tjd|t|\}}|||r6|dtvr't|\}}||||fSrn)	rYrrrEXTENDED_ATTRIBUTE_ENDSrrr1r}rxs   rget_extended_attributer"	sI q[((u;q444%+22599;;	;(//LE5
U q[((uerc	t}|r|ddkr'tjd||tdd|dd}|r|ds'tjd|d}|rK|dr1||dz
}|dd}|r|d1|ddkr2|dkr,|jtjd	t||_
|t|d
||fS)Nr*zExpected section but found {}zsection-markerrz$Expected section number but found {}r"0z'section number has an invalid leading 0r`)r`rrr1rrrbrrorcrP)rrar`s   rget_sectionr8	siiG0E!HOO%&E&L&L(-'/'/00	0NN=&677888!""IE@a((**@%'117@@	@
F
E!H$$&&%(abb	E!H$$&&ayCFcMMv99 ; ;	<	<	<[[GNNN=22333E>rc	t}|stjdd}|dtvrt	|\}}|s'tjd||ddkrt
|\}}nt|\}}||g|dd<||||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r)	rcrrrrr1rrr)rvr
rFs    r	get_valuerV	s	AP%&NOOO
FQx; 
@%'006v@@	@Qx3(//uu-e44u
Hbqb	HHUOOOe8OrcT	t}t|\}}|||r|ddkrC|jt	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}|}|jr|r|ddkrt|\}}|j}d
}|jdkr4|r|ddkrd}nBt#|\}}	|	r|	ddkrd}n	t%|\}}	|	sd}n#YnxYw|r_|jt	jd|||D]}
|
jdkrg|
dd<|
}n|}n.d}|jt	jd|r|ddkrd}nt)|\}}|jr|jdkrW|r|ddkr||||}||fS|jt	jd|sI|jt	jd|||||fSnC|>|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)NrrFz)Parameter contains name ({}) but no valuerTzIncomplete parameterzextended-parameter-markerr=zParameter not followed by '='parameter-separatorrF'z5Quoted string value for extended parameter is invalidrzZParameter 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)rKryrrrror1rrOrrrTrrrrrQrur}rXrrrrrcrrr)rrrFr
rappendtoqstringinner_value
semi_validrtrs            r
get_parameterrl	s
KKE ''LE5	LLE!HOO

V79%%+VE]]44	5	5	5e|Qx3	&u--LE5"EOLL&			D		B)*@AAA8s??LLs,GHHIII!""IE!ENQx3%&EFFF	LLs$9::;;;!""IE
Fq[((u
UIH~$<%$<E!HOO/u55,
1$$
&{1~44!

*;77t&DGsNN!%J
&3K@@t&!%J	
	<M  !;G"I"I
J
J
JLL!!!

<#777AaaaD HE8 EEIM  !;:";";
<
<
<
(qS ''u>	FU1A55	 aCOOE"""$!%<

V7
DEE	F	F	F

V7688	9	9	9%<

<#666E7
LJ&&OOAGEM8s??)+FFLfUmmUU
U
c+>??@@@abb		KU1X__'..LE5OOE"""EJ
KE!HOO-/<<BF5MMKKK
c+>??@@@abb	GG	Qx3&u~~uuqS%c844abb	+E22u
HHUOOO	 ''uOOE%<s.CCC-IIc$	t}|r	t|\}}||n#tj$r}d}|dt
vrt
|\}}|s|||cYd}~S|ddkrD||||jtjdnpt|\}}|r|g|dd<|||jtjd
|Yd}~nd}~wwxYw|r|ddkru|d}d|_t|\}}|||jtjd
||r-|tdd|d	d}||S)
NrrFzparameter entry with no contentzinvalid parameter {!r}rrWz)parameter with invalid trailing text {!r}rr)rfrrrrrrrrorhr1rXrDr)rmime_parametersrFrRr
rs      rparse_mime_parametersr	sl%&&O
#	=(//LE5""5))))&	=	=	=FQx;&& (

'&&v...&&&&&&&Qx3%#**6222'..v/I507078888 5U;;u)!'E"1"I&&u---'..v/I,33E::0<0<===#	=&	LU1X__$B'E2E077LE5LL#**6+E;BB5II,K,K
L
L
L	""=6K#L#LMMM!""IEG#Hs"'=E
;EECEEc	|r|ddkrx|dtvr4|t|dd|dd}n't|\}}|||r|ddkx|sdS|tdd|t	|dddS)NrrFrrr)rrrrr)	tokenlistrrFs   r_find_mime_parametersr.
s$E!HOO8{""]585HIIJJJ!""IEE%e,,LE5U###
$E!HOO
]3(=>>???
*595566666rc	t}d}|s.|jtjd|S	t|\}}nf#tj$rT|jtjd|t|||cYSwxYw|||r|ddkr@|jtjd|rt|||S|j
|_
|tdd|dd}	t|\}}nf#tj$rT|jtjd	|t|||cYSwxYw|||j
|_|s|S|dd
krU|jtjd||`
|`t|||S|td
d|t!|dd|S)
NFz"Missing content type specificationz(Expected content maintype but found {!r}rrzInvalid content typezcontent-type-separatorrz'Expected content subtype but found {!r}rFz<Only parameters are valid after content type, but found {!r}r)rrrrrarqrror1rrrllowerrrrr)rctyperecoverrFs    rparse_content_type_headerr>
s
MMEG

V>022	3	3	3 ''uu"

V76==eDDFF	G	G	GeU+++	

LLE!HOO

V7"$$	%	%	%	0!%///[&&((..00EN	LLs$<==>>>!""IE ''uu"

V75<<UCCEE	F	F	FeU+++	

LLK%%''--//EMQx3

V7
((	)	)	)
NEMeU+++	LLs$9::;;;	LL&uQRRy11222Ls&AA B98B9=FA G32G3c^	t}|s.|jtjd|S	t|\}}nf#tj$rT|jtjd|t|||cYSwxYw|||j
|_
|s|S|ddkrQ|jtjd|t|||S|tdd|t|dd|S)NzMissing content dispositionz+Expected content disposition but found {!r}rrFzCOnly parameters are valid after content disposition, but found {!r}rr)rrrrrarqrror1rrrlrrrr)rdisp_headerrFs   r parse_content_disposition_headerrw
s%&&K""6#D)$+$+	,	,	, ''uu"""6#=9@@GG$I$I	J	J	Jk5111	
u&+k&7&7&9&9&?&?&A&AK#Qx3""6#=
$($(	)	)	)	k5111}S*?@@AAA,U122Y77888sAA B76B7c	t}|s.|jtjd|S	t|\}}|||j|_	nT#tj
$rB|jtjd|YnwxYw|s|S|r|jtjd|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)rrrrrarqrrlrrrror1rrr)r
cte_headerrFs   r&parse_content_transfer_encoding_headerr
s)**J!!&"C/#1#1	2	2	25 ''u
	%   **,,2244
"PPP!!&"<?FFuMM#O#O	P	P	P	P	PP
%!!&"<8#:#:	;	;	;8{""mE!H6IJJKKK!""IEE%e,,LE5e$$$%sBAC*)C*cd}|r>|dr6|ddtvr!|dd}|ddd|d<|S)Nr"r)r)lineswsps  r_steal_trailing_WSP_if_existsr
sS
C#r#uRy}33Bim"IcrcNb	Jrc 	|jptj}|jrdnd}dg}d}d}d}d}t	dd}	t|}
|
r!|
d}||	ur|dz}"t|}|jdkrt|tzrd	}	|||}
n5#t$r(td
|jDrd}
nd}
d	}YnwxYw|jdkrt|||||r|s	|jsd}d}|jr||
dt'|j}|j|vr_t'||t'|dz
kr$t+|}|||dxx|z
cc<rt/|dst||
z}
n7||
|kr|dks|dkr|
dkrd}t1|||||j|
}|
}d}t'||t'|dz
kr|dxx|z
cc<|jrWt'|dz|krAt+|}|s|r|||zd}it/|ds7t|}|js|dz
}||	||
z}
|jr|s|
d|d	}t+|}|s|r|||zn|dxx|z
cc<|
!|j||jzS)Nutf-8rMr"rFwrap_as_ew_blockedrrDTc3JK|]}t|tjVdSr)r;rrwr%s  rr(z%_refold_parse_tree.<locals>.<genexpr>
sC..a!>??......runknown-8bitrgrHrr)max_line_lengthsysmaxsizeutf8rrr1rrXr(rrrur?r9_fold_mime_parametersr@r^rLrrrrrY_fold_as_ewr_r=insertr+)
parse_treerImaxlenrkrlast_ewlast_charsetr
want_encodingend_ew_not_allowedr{rAtstrrencoded_partnewlinenewpartss                 rrJrJ
sa
#
2s{F +5ww:H
DEGLM!"&:;;E
]yy||%%%!#4yy?g%%#d))h*>% M	!KK!!!GG!	!	!	!.. ,.....
"(" MMM	!?///!$vx@@@"	!3"	%

! %
'
!#'99F9#;#;<Qc&.>Q>Q=Q<Q#RL~\99|,,vE"I/FFF&CE&J&JG!LL111b			\1			 
4**

'T

U*'|++!^33!W,,J1F1F"G%dE67&*&=wHH&!Mt99U2Y///"IIIIII
 	D		A
''3E::G
$--//
Wt^,,,tX&&	DzzH%
4"a'" 2333u$E	&8	
LLD!!! M/66	d))++	LL4((((
"IIIIII{]|>u%%66s B88/C*)C*cz	|B|r@tt|d|d|z}|dd||d<|dtvr]|d}|dd}t|d|kr"|t||dxx|z
cc<d}|dtvr|d}|dd}|t|dn|}|dkrdn|}	t|	dz}
|
dz|krt
jd|r|t|dz
}||
z
}|dkr|d	;|d|}
tj	|
|	
}t||z
}|dkr8|
dd}
tj	|
|	
}t||z
}|dk8|dxx|z
cc<|t|
d}|r*|d	t|d}||dxx|z
cc<|r|ndS)Nrrrr"rMrz3max_line_length is too small to fit an encoded wordrg)r)
rrrrrrrrrr)	to_encoderrrr_rleading_wsptrailing_wspnew_last_ew	encode_as
chrome_lenremaining_space
text_spaceto_encode_wordencoded_wordexcesss                rrr9s	1U2Ywxx09<==??	"Ihwh'b	|s labbM	b	NNf$$LL6u==>>>
b			[ 			L} }crcN	$+O#eBi...K"j00gIY!#JQ6!!%ACC	C) 3uRy>>1$z1
??LL";J;/z.)DDD\""_4qjj,CRC0N:niHHHL&&8Fqjj	b			\!			c.11223		)LLeBi..K+),
"IIIIII,6;;$6rc		|jD]O\}}|dds|dxxdz
cc<|}d}	||d}n-#t$r d}tj|rd}d}nd}YnwxYw|r:tj	|d	|
}	d
|||	}
n#d
|t|}
t|dt|
zd
z|kr|ddz|
z|d<+t|
dz|kr|
d|
z[d}|dz}|rt|tt|zdzt|z}
||
dzkrd}||
z
dz
x}}	|d|}tj	|d	|
}	t|	|krn|d
z}F|
d
||||	d	}|d
z
}||d}|r|dxxdz
cc<|QdS)NrrFstrictFTrrjrr")saferz
{}*={}''{}rrrgrrz''r"Nz {}*{}*={}{})ryr$r]rrurrvrprqrr1rrrr)rArrrkrzrr
error_handlerencoding_required
encoded_valuerraextra_chromer
splitpointmaxcharspartials                 rrrzs{:!:!eRy!!**3//	"IIIIII 
		"LL""" %!	"	"	" $$U++
"( 1

!
	"	="L..B}/66M&&tWmDDDD>>$U(;(;<<DuRy>>CII%)F22b	C$.E"I
YY]f
$
$LLt$$$~	!TSW%6%66:S=N=NNJa''
$*Z$7!$;;J
 , & 2 2"]!3!<!<
}%%11a


 
LL..g|]<<
=
=
=LqLG*++&E
!b			S 			-	!I:!:!sA))'BB)rerrpstringroperatorremailrrrrr(rrrrr)r	TSPECIALSro	ASPECIALSrwrrcompileVERBOSE	MULTILINErrrrdrprtrxr|rrrrrrrrrrrrrrrrrrrrrr-r/r6rArGrKrVrYr`rcrfrrrrrrrrrrrrrrrrr:r/r@r0r1r+rrrmatchrfindallrrkrsr|rrrrrrrrrrrrrrr
rrrrrr$r'r)r,r2r7r9r<r@rDrHrKrMrOrSrVrZr^rerhrlrqruryr}rrrrrrrrrrrJrrrhrr<module>rsiCJ
			







''''''
c%jjCCHHn3  sN	CCHH$
U#
E


"cc#hh.	
_
E

"	S(33s883HHH"*Z",  @,@,@,@,@,@,@,@,FDDDDD)DDD     I   Y9"9I
)#####9###6	-	-	-	-	-|	-	-	-!4CCCCC)CCC&%%%%%i%%%2?????)???%%%%%	%%%"$$$$$I$$$*"""""y"""6	DDDDDDyDDD!!!!!i!!!6;;;;;Y;;;.....Y...i)
I
yB9'!'!'!'!'!&'!'!'!T!!!!!	!!!H




I


 )	8%%%%%y%%%
#####	###iIS.S.S.S.S.YS.S.S.ly*1i)
*****I***&&&&&y&&&Y(+(+(+(+(+s(+(+(+VH-<<<<<f-<<<mC
c#344
#
$}S*BCC.
:,,RWWS\\::;;A
"
9#3#3
BIbggi  !!$#$#$$$)"
#566>#I$4$4
BIbggj!!""%$%$%%%*'RZ	(8(8
BIbggn%%&&)()())).&0bj1A1A
BIbgg-..//2121'2'227$;;;JJJ<


///bAAAF"


 ))))))V2   $6   &2   D$$$L%%%N-!-!-!^(%!%!%!N$$$L ' ' ' R,,,\<*"""$666r###J<:444n&&&,BBBJ8BBBH$$$$&.&.$,<,LLL\222h777 777r<^l7l7l7\?7?7?7BI!I!I!I!I!r
Back to Directory File Manager