ó
    ‰*£h¿�  ã                   óH  • % S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  \R                  (       a
  SSKrSS	KJr  \R                   " S
\R"                  \R$                  5      r\R                   " S\R(                  \R*                  5      r\" / SQ5      r\" / SQ5      r\R4                  \R6                  \R8                  \R:                  \R<                  \R>                  S.r \RB                  \"\RF                  \RH                     4   \%S'    " S S5      r&g)z8Parse tokens from the lexer into nodes for the compiler.é    Né   )Únodes)ÚTemplateAssertionError)ÚTemplateSyntaxError)Údescribe_token)Údescribe_token_expr)ÚEnvironmentÚ_ImportIncludeÚ
_MacroCall)ÚforÚifÚblockÚextendsÚprintÚmacroÚincludeÚfromÚimportÚsetÚwithÚ
autoescape)ÚeqÚneÚltÚlteqÚgtÚgteq)ÚaddÚsubÚmulÚdivÚfloordivÚmodÚ_math_nodesc                   ó´  • \ rS rSrSr   SUSSS\S\R                  \   S\R                  \   S	\R                  \   S
S4S jjrS\	4S\S\R                  \
   S\R                  \	   S
S4S jjrS\R                  \   S\R                  \R                  \S4      S\R                  \
   S
S4S jr SVS\S\R                  \
   S
S4S jjr  SWS\R                  \R                  \S4      S\R                  \
   S
S4S jjr SVS\R                  \R                  \S4      S
\4S jjrSVS\R                  \
   S
\R*                  4S jjrS
\R.                  \R0                  \R                  \R0                     4   4S jr SXS\R                  \S4   S\S
\R                  \R0                     4S jjrS
\R.                  \R6                  \R8                  4   4S jrS
\R<                  4S jrS
\R@                  4S jr!S
\RD                  4S  jr#S
\RH                  4S! jr%S
\RL                  4S" jr'S
\RP                  4S# jr)S$\*S%\S
\*4S& jr+S
\RX                  4S' jr-S
\R\                  4S( jr/S
\R`                  4S) jr1S$\2S
S4S* jr3S
\Rh                  4S+ jr5S
\Rl                  4S, jr7S
\Rp                  4S- jr9S
\Rt                  4S. jr;\<Rz                   SYS/\S0S1S
\R|                  4S2 jj5       r?\<Rz                      SZS/\S0\S\R                  \R                  \S4      S3\S
\R.                  \R€                  \R|                  \R                  4   4
S4 jj5       r?    SZS/\S0\S\R                  \R                  \S4      S3\S
\R.                  \R€                  \R|                  \R                  4   4
S5 jjr?S[S6\S
\R‚                  4S7 jjrBS
\R‚                  4S8 jrCS
\R‚                  4S9 jrDS
\R‚                  4S: jrES
\R‚                  4S; jrFS
\R‚                  4S< jrGS
\R‚                  4S= jrHS
\R‚                  4S> jrIS
\R‚                  4S? jrJS
\R‚                  4S@ jrKS[SA\S
\R‚                  4SB jjrLSXS3\S
\R‚                  4SC jjrM     S\SD\S6\S\R                  \R                  \S4      SE\S3\S
\R.                  \R                  \R‚                  4   4SF jjrNS
\R                  4SG jrOS
\R                   4SH jrQS$\R‚                  S
\R‚                  4SI jrRS$\R‚                  S
\R‚                  4SJ jrSS$\R‚                  S
\R.                  \R¨                  \Rª                  4   4SK jrVS
\R‚                  4SL jrWS
\R                  \R                  \R‚                     \R                  \R°                     \R                  \R‚                     \R                  \R‚                     4   4SM jrYS$\R‚                  S
\R´                  4SN jr[ SXS$\R                  \R‚                     SO\S
\R                  \R‚                     4SP jjr\S$\R‚                  S
\R‚                  4SQ jr] SVS\R                  \R                  \S4      S
\R                  \R0                     4SR jjr^S
\R¾                  4SS jr`STrag)]ÚParseré0   z}This is the central parsing class Jinja uses.  It's passed to
extensions and can be used to parse expressions or statements.
NÚenvironmentr	   ÚsourceÚnameÚfilenameÚstateÚreturnc                 ó"  • Xl         UR                  X#XE5      U l        X0l        X@l        SU l        0 U l        UR                  5        H/  nUR                   H  nUR                  U R                  U'   M     M1     SU l
        / U l        / U l        g )NFr   )r(   Ú	_tokenizeÚstreamr*   r+   ÚclosedÚ
extensionsÚiter_extensionsÚtagsÚparseÚ_last_identifierÚ
_tag_stackÚ_end_token_stack)Úselfr(   r)   r*   r+   r,   Ú	extensionÚtags           ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/jinja2/parser.pyÚ__init__ÚParser.__init__5   s‰   € ð 'ÔØ!×+Ñ+¨F¸(ÓJˆŒØŒ	Ø ŒØˆŒð ð 	Œð %×4Ñ4Ö6ˆIØ —~”~�Ø'0§¡�—‘ Ó$ó &ñ 7ð !"ˆÔØ')ˆŒØ;=ˆÕó    ÚmsgÚlinenoÚexczte.NoReturnc                 ó„   • Uc   U R                   R                  R                  nU" XU R                  U R                  5      e)zˆConvenience method that raises `exc` with the message, passed
line number or last line number as well as the current name and
filename.
)r0   ÚcurrentrA   r*   r+   )r9   r@   rA   rB   s       r<   ÚfailÚParser.failL   s5   € ð ‰>Ø—[‘[×(Ñ(×/Ñ/ˆFÙ�#˜tŸy™y¨$¯-©-Ó8Ð8r?   Úend_token_stack.c           
      ó  • [        5       nU H"  nUR                  [        [        U5      5        M$     U(       a1  SR	                  [        [
        [        [        US   5      5      5      nOS nUc  S/nOSU< S3/nU(       a3  Ub  X;   a  UR                  SU S35        OUR                  SU S35        U R                  (       a#  UR                  SU R                  S   < S35        U R                  S	R	                  U5      U5        g )
Nz or éÿÿÿÿzUnexpected end of template.zEncountered unknown tag Ú.z\You probably made a nesting mistake. Jinja is expecting this tag, but currently looking for z*Jinja was looking for the following tags: z/The innermost block that needs to be closed is Ú )	r   ÚupdateÚmapr   ÚjoinÚreprÚappendr7   rE   )r9   r*   rG   rA   ÚexpectedÚexprsÚcurrently_lookingÚmessages           r<   Ú_fail_ut_eofÚParser._fail_ut_eofZ   s  € ô  #›uˆÛ$ˆEØ�O‰OœCÔ 3°UÓ;Ö<ñ %æØ17·±Ü”Dœ#Ô1°?À2Ñ3FÓGÓHó2Ñð !%Ðà‰<Ø4Ð5‰Gà1°$±¸Ð;Ð<ˆGæØÑ DÓ$4Ø—‘ð2Ø2CÐ1DÀAðGõð
 —‘Ø@ÐARÐ@SÐSTÐUôð �?�?Ø�N‰NðØ—O‘O BÑ'Ñ*¨!ð-ôð
 	�	‰	�#—(‘(˜7Ó# VÕ,r?   c                 ó<   • U R                  XR                  U5        g)zŒCalled if the parser encounters an unknown tag.  Tries to fail
with a human readable error message that could help to identify
the problem.
N)rU   r8   )r9   r*   rA   s      r<   Úfail_unknown_tagÚParser.fail_unknown_tag‚   s   € ð 	×Ñ˜$× 5Ñ 5°vÕ>r?   Ú
end_tokensc                 óz   • [        U R                  5      nUb  UR                  U5        U R                  SX25        g)z9Like fail_unknown_tag but for end of template situations.N)Úlistr8   rP   rU   )r9   rZ   rA   Ústacks       r<   Úfail_eofÚParser.fail_eof‹   s6   € ô �T×*Ñ*Ó+ˆØÑ!Ø�L‰L˜Ô$Ø×Ñ˜$ Õ.r?   Úextra_end_rulesc                 óž   • U R                   R                  R                  S;   a  gUb%  U R                   R                  R                  U5      $ g)zAre we at the end of a tuple?)Úvariable_endÚ	block_endÚrparenTF)r0   rD   ÚtypeÚtest_any)r9   r`   s     r<   Úis_tuple_endÚParser.is_tuple_end–   sD   € ð �;‰;×Ñ×#Ñ#Ð'NÓNØØÑ(Ø—;‘;×&Ñ&×/Ñ/°Ó@Ð@Ør?   c                 óÎ   • U =R                   S-  sl         [        R                  [        R                  5      n[        R
                  R                  USU R                    3US9  U$ )zDReturn a new free identifier as :class:`~jinja2.nodes.InternalName`.r   Úfi©rA   )r6   ÚobjectÚ__new__r   ÚInternalNameÚNoder=   )r9   rA   Úrvs      r<   Úfree_identifierÚParser.free_identifier    sS   € à×Ò Ñ"ÕÜ�^‰^œE×.Ñ.Ó/ˆÜ�
‰
×Ñ˜B " T×%:Ñ%:Ð$;Ð <ÀVÐÑLØˆ	r?   c                 ón  • U R                   R                  nUR                  S:w  a  U R                  SUR                  5        U R
                  R                  UR                  5        Sn UR                  [        ;   aV  [        U SU R                   R                  R                   35      nU" 5       U(       a  U R
                  R                  5         $ $ UR                  S:X  a2  U R                  5       U(       a  U R
                  R                  5         $ $ UR                  S:X  a2  U R                  5       U(       a  U R
                  R                  5         $ $ U R                  R                  UR                  5      nUb*  U" U 5      U(       a  U R
                  R                  5         $ $ U R
                  R                  5         SnU R                  UR                  UR                  5        U(       a  U R
                  R                  5         gg! U(       a  U R
                  R                  5         f f = f)	zParse a single statement.r*   ztag name expectedTÚparse_ÚcallÚfilterNF)r0   rD   re   rE   rA   r7   rP   ÚvalueÚ_statement_keywordsÚgetattrÚpopÚparse_call_blockÚparse_filter_blockr2   ÚgetrX   )r9   ÚtokenÚpop_tagÚfÚexts        r<   Úparse_statementÚParser.parse_statement§   s¨  € à—‘×#Ñ#ˆØ�:‰:˜ÓØ�I‰IÐ)¨5¯<©<Ô8Ø�‰×Ñ˜uŸ{™{Ô+Øˆð	&Ø�{‰{Ô1Ó1Ü˜D F¨4¯;©;×+>Ñ+>×+DÑ+DÐ*EÐ"FÓG�Ù“sö  Ø—‘×#Ñ#Õ%ð ð �{‰{˜fÓ$Ø×,Ñ,Ó.ö Ø—‘×#Ñ#Õ%ð ð �{‰{˜hÓ&Ø×.Ñ.Ó0ö Ø—‘×#Ñ#Õ%ð ð —/‘/×%Ñ% e§k¡kÓ2ˆCØ‰Ù˜4“yö Ø—‘×#Ñ#Õ%ð ð	 �O‰O×ÑÔ!ØˆGØ×!Ñ! %§+¡+¨u¯|©|Ô<æØ—‘×#Ñ#Õ%ð øŽwØ—‘×#Ñ#Õ%ð ús&   Á+AH ÃH ÄH Å/H Æ+AH È$H4Údrop_needlec                 ó6  • U R                   R                  S5        U R                   R                  S5        U R                  U5      nU R                   R                  R
                  S:X  a  U R                  U5        U(       a  [        U R                   5        U$ )a  Parse multiple statements into a list until one of the end tokens
is reached.  This is used to parse the body of statements as it also
parses template data if appropriate.  The parser checks first if the
current token is a colon and skips it if there is one.  Then it checks
for the block end and parses until if one of the `end_tokens` is
reached.  Per default the active token in the stream at the end of
the call is the matched end token.  If this is not wanted `drop_needle`
can be set to `True` and the end token is removed.
Úcolonrc   Úeof)r0   Úskip_ifÚexpectÚsubparserD   re   r^   Únext)r9   rZ   r„   Úresults       r<   Úparse_statementsÚParser.parse_statementsÄ   sr   € ð 	�‰×Ñ˜GÔ$ð 	�‰×Ñ˜;Ô'Ø—‘˜zÓ*ˆð �;‰;×Ñ×#Ñ# uÓ,Ø�M‰M˜*Ô%æÜ�—‘ÔØˆr?   c                 óT  • [        U R                  5      R                  nU R                  SS9nU R                  R	                  S5      (       a%  U R                  5       n[        R                  " X#US9$ U R                  S5      nU R                  SSS9n[        R                  " X$XQS9$ )zParse an assign statement.T©Úwith_namespaceÚassignrk   N)zname:endset©r„   )r‹   r0   rA   Úparse_assign_targetrˆ   Úparse_tupler   ÚAssignÚparse_filterr�   ÚAssignBlock)r9   rA   ÚtargetÚexprÚfilter_nodeÚbodys         r<   Ú	parse_setÚParser.parse_setá   s–   € ä�d—k‘kÓ"×)Ñ)ˆØ×)Ñ)¸Ð)Ð>ˆØ�;‰;×Ñ˜x×(Ñ(Ø×#Ñ#Ó%ˆDÜ—<’< °VÑ<Ð<Ø×'Ñ'¨Ó-ˆØ×$Ñ$Ð%5À4Ð$ÐHˆÜ× Ò  °dÑJÐJr?   c           
      ó  • U R                   R                  S5      R                  nU R                  SS9nU R                   R                  S5        U R	                  SSS9nSnU R                   R                  S	5      (       a  U R                  5       nU R                   R                  S
5      nU R                  S5      n[        U R                   5      R                  S:X  a  / nOU R                  SSS9n[        R                  " X#XgXEUS9$ )zParse a for loop.zname:for)úname:in)r`   r    F)úname:recursive)Úwith_condexprr`   Núname:ifr¡   )úname:endforú	name:elseÚendfor)r¤   Tr“   rk   )r0   r‰   rA   r”   r•   rˆ   Úparse_expressionr�   r‹   rw   r   ÚFor)r9   rA   r™   ÚiterÚtestÚ	recursiverœ   Úelse_s           r<   Ú	parse_forÚParser.parse_forì   só   € à—‘×#Ñ# JÓ/×6Ñ6ˆØ×)Ñ)¸,Ð)ÐGˆØ�‰×Ñ˜9Ô%Ø×ÑØÐ1Dð  ð 
ˆð ˆØ�;‰;×Ñ˜y×)Ñ)Ø×(Ñ(Ó*ˆDØ—K‘K×'Ñ'Ð(8Ó9ˆ	Ø×$Ñ$Ð%AÓBˆÜ�—‘Ó×"Ñ" hÓ.Ø‰Eà×)Ñ)Ð*:ÈÐ)ÐMˆEÜ�yŠy˜ t°DÈFÑSÐSr?   c                 ó4  • [         R                  " U R                  R                  S5      R                  S9=p U R                  SS9Ul        U R                  S5      Ul        / Ul	        / Ul
        [        U R                  5      nUR                  S5      (       aO  [         R                  " U R                  R                  R                  S9nUR                  R                  U5        M³  UR                  S5      (       a  U R                  S	SS
9Ul
         U$ )zParse an if construct.r£   rk   TF©r¢   )ú	name:elifr¥   ú
name:endifr±   r¥   )r²   r“   )r   ÚIfr0   r‰   rA   r•   rª   r�   rœ   Úelif_r¬   r‹   rD   rP   )r9   ÚnoderŒ   r~   s       r<   Úparse_ifÚParser.parse_ifÿ   sà   € äŸš¨¯©×(:Ñ(:¸9Ó(E×(LÑ(LÑMÐMˆØØ×(Ñ(°uÐ(Ð=ˆDŒIØ×-Ñ-Ð.VÓWˆDŒIØˆDŒJØˆDŒJÜ˜Ÿ™Ó%ˆEØ�z‰z˜+×&Ñ&Ü—x’x t§{¡{×':Ñ':×'AÑ'AÑB�Ø—‘×#Ñ# DÔ)ÙØ—‘˜K×(Ñ(Ø#×4Ñ4°_ÐRVÐ4ÐW�”ØØˆr?   c                 ób  • [         R                  " [        U R                  5      R                  S9n/ n/ nU R                  R
                  R                  S:w  a´  U(       a  U R                  R                  S5        U R                  5       nUR                  S5        UR                  U5        U R                  R                  S5        UR                  U R                  5       5        U R                  R
                  R                  S:w  a  M´  X!l        X1l        U R                  SSS9Ul        U$ )	Nrk   rc   ÚcommaÚparamr’   )zname:endwithTr“   )r   ÚWithr‹   r0   rA   rD   re   r‰   r”   Úset_ctxrP   r§   ÚtargetsÚvaluesr�   rœ   )r9   rµ   r½   r¾   r™   s        r<   Ú
parse_withÚParser.parse_with  sæ   € Ü�zŠz¤ d§k¡kÓ!2×!9Ñ!9Ñ:ˆØ&(ˆØ%'ˆØ�k‰k×!Ñ!×&Ñ&¨+Ó5ÞØ—‘×"Ñ" 7Ô+Ø×-Ñ-Ó/ˆFØ�N‰N˜7Ô#Ø�N‰N˜6Ô"Ø�K‰K×Ñ˜xÔ(Ø�M‰M˜$×/Ñ/Ó1Ô2ð �k‰k×!Ñ!×&Ñ&¨+Õ5ð ŒØŒØ×)Ñ)Ð*;ÈÐ)ÐNˆŒ	Øˆr?   c                 ó  • [         R                  " [        U R                  5      R                  S9n[         R
                  " SU R                  5       5      /Ul        U R                  SSS9Ul	        [         R                  " U/5      $ )Nrk   r   )zname:endautoescapeTr“   )r   ÚScopedEvalContextModifierr‹   r0   rA   ÚKeywordr§   Úoptionsr�   rœ   ÚScope©r9   rµ   s     r<   Úparse_autoescapeÚParser.parse_autoescape"  sh   € Ü×.Ò.´d¸4¿;¹;Ó6G×6NÑ6NÑOˆÜŸš l°D×4IÑ4IÓ4KÓLÐMˆŒØ×)Ñ)Ð*AÈtÐ)ÐTˆŒ	Ü�{Š{˜D˜6Ó"Ð"r?   c                 ó  • [         R                  " [        U R                  5      R                  S9nU R                  R                  S5      R                  Ul        U R                  R                  S5      Ul	        U R                  R                  S5      Ul
        U R                  R                  R                  S:X  a  U R                  S5        U R                  SSS	9Ul        UR                  (       af  UR                   HV  n[!        U[         R"                  5      (       a#  [%        S
 UR                    5       5      (       d  ME  U R                  S5        MX     U R                  R                  SUR                  -   5        U$ )Nrk   r*   zname:scopedzname:requiredr   zpBlock names in Jinja have to be valid Python identifiers and may not contain hyphens, use an underscore instead.)zname:endblockTr“   c              3   ó¬   #   • U  HJ  n[        U[        R                  5      (       + =(       d    UR                  R	                  5       (       + v •  ML     g 7f©N)Ú
isinstancer   ÚTemplateDataÚdataÚisspace)Ú.0Úoutput_nodes     r<   Ú	<genexpr>Ú%Parser.parse_block.<locals>.<genexpr>>  sI   é € ð Bò (7˜ô # ;´×0BÑ0BÓCÔC÷ 6Ø&×+Ñ+×3Ñ3Ó5Ô5ô6â'6ùs   ‚AAz7Required blocks can only contain comments or whitespacezname:)r   ÚBlockr‹   r0   rA   r‰   rw   r*   rˆ   ÚscopedÚrequiredrD   re   rE   r�   rœ   rÌ   ÚOutputÚany)r9   rµ   Ú	body_nodes      r<   Úparse_blockÚParser.parse_block(  s&  € Ü�{Š{¤$ t§{¡{Ó"3×":Ñ":Ñ;ˆØ—K‘K×&Ñ& vÓ.×4Ñ4ˆŒ	Ø—k‘k×)Ñ)¨-Ó8ˆŒØŸ™×+Ñ+¨OÓ<ˆŒð
 �;‰;×Ñ×#Ñ# uÓ,Ø�I‰Ið?ôð
 ×)Ñ)Ð*<È$Ð)ÐOˆŒ	ð
 �=�=Ø!ŸYœY�	Ü! )¬U¯\©\×:Ñ:¼cñ Bð (1§¢óB÷ ?ó ?ð
 —I‘IÐWÖXñ 'ð 	�‰×Ñ˜G d§i¡iÑ/Ô0Øˆr?   c                 ó’   • [         R                  " [        U R                  5      R                  S9nU R                  5       Ul        U$ ©Nrk   )r   ÚExtendsr‹   r0   rA   r§   ÚtemplaterÆ   s     r<   Úparse_extendsÚParser.parse_extendsH  s4   € Ü�}Š}¤D¨¯©Ó$5×$<Ñ$<Ñ=ˆØ×-Ñ-Ó/ˆŒØˆr?   rµ   Údefaultc                 óJ  • U R                   R                  R                  SS5      (       aq  U R                   R                  5       R	                  S5      (       aC  [        U R                   5      R                  S:H  Ul        U R                   R                  5         U$ X!l        U$ )Nz	name:withzname:withoutúname:contextr   )	r0   rD   rf   Úlookrª   r‹   rw   Úwith_contextÚskip)r9   rµ   râ   s      r<   Úparse_import_contextÚParser.parse_import_contextM  s„   € ð �;‰;×Ñ×'Ñ'Ø˜÷
ñ 
à�k‰k×ÑÓ ×%Ñ% n×5Ñ5Ü $ T§[¡[Ó 1× 7Ñ 7¸6Ñ AˆDÔØ�K‰K×ÑÔð ˆð !(ÔØˆr?   c                 ó¶  • [         R                  " [        U R                  5      R                  S9nU R                  5       Ul        U R                  R                  R                  S5      (       aQ  U R                  R                  5       R                  S5      (       a#  SUl
        U R                  R                  S5        OSUl
        U R                  US5      $ )Nrk   zname:ignorezname:missingTé   F)r   ÚIncluder‹   r0   rA   r§   rß   rD   rª   rå   Úignore_missingrç   rè   rÆ   s     r<   Úparse_includeÚParser.parse_includeY  s£   € Ü�}Š}¤D¨¯©Ó$5×$<Ñ$<Ñ=ˆØ×-Ñ-Ó/ˆŒØ�;‰;×Ñ×#Ñ# M×2Ñ2°t·{±{×7GÑ7GÓ7I×7NÑ7NØ÷8
ñ 8
ð #'ˆDÔØ�K‰K×Ñ˜QÕà"'ˆDÔØ×(Ñ(¨¨tÓ4Ð4r?   c                 ó$  • [         R                  " [        U R                  5      R                  S9nU R                  5       Ul        U R                  R                  S5        U R                  SS9R                  Ul
        U R                  US5      $ )Nrk   úname:asT©Ú	name_onlyF)r   ÚImportr‹   r0   rA   r§   rß   r‰   r”   r*   r™   rè   rÆ   s     r<   Úparse_importÚParser.parse_importe  so   € Ü�|Š|¤4¨¯©Ó#4×#;Ñ#;Ñ<ˆØ×-Ñ-Ó/ˆŒØ�‰×Ñ˜9Ô%Ø×.Ñ.¸Ð.Ð>×CÑCˆŒØ×(Ñ(¨¨uÓ5Ð5r?   c                 ó0  ^ ^• [         R                  " [        T R                  5      R                  S9mT R                  5       Tl        T R                  R                  S5        / Tl        S[        4UU 4S jjn TR                  (       a  T R                  R                  S5        T R                  R                  R                  S:X  Ga  U" 5       (       a  GO$T R                  SS9nUR                  R                  S	5      (       a  T R                  S
UR                  [         S9  T R                  R#                  S5      (       aA  T R                  SS9nTR                  R%                  UR                  UR                  45        O%TR                  R%                  UR                  5        U" 5       (       d$  T R                  R                  R                  S:w  a  OOT R                  R                  S5        GMƒ  ['        TS5      (       d  STl        T$ )Nrk   zname:importr-   c                  ó.  >• TR                   R                  R                  S;   ap  TR                   R                  5       R	                  S5      (       aB  [        TR                   5      R                  S:H  T l        TR                   R                  5         gg)N>   r   Úwithouträ   r   TF)r0   rD   rw   rå   rª   r‹   ræ   rç   )rµ   r9   s   €€r<   Úparse_contextÚ(Parser.parse_from.<locals>.parse_contextr  sr   ø€ Ø�{‰{×"Ñ"×(Ñ(ð -ó ð —+‘+×"Ñ"Ó$×)Ñ)¨.×9Ñ9Ü$(¨¯©Ó$5×$;Ñ$;¸vÑ$E�Ô!Ø—‘× Ñ Ô"ØØr?   Tr¹   r*   rò   Ú_z4names starting with an underline can not be imported)rB   rñ   ræ   F)r   Ú
FromImportr‹   r0   rA   r§   rß   r‰   ÚnamesÚboolrD   re   r”   r*   Ú
startswithrE   r   rˆ   rP   Úhasattrræ   )r9   rú   r™   Úaliasrµ   s   `   @r<   Ú
parse_fromÚParser.parse_froml  s�  ù€ Ü×Ò¤t¨D¯K©KÓ'8×'?Ñ'?Ñ@ˆØ×-Ñ-Ó/ˆŒØ�‰×Ñ˜=Ô)ØˆŒ
ð	œt÷ 	ð 	ð Ø�z�zØ—‘×"Ñ" 7Ô+Ø�{‰{×"Ñ"×'Ñ'¨6Ô1Ù —?‘?ÙØ×1Ñ1¸DÐ1ÐA�Ø—;‘;×)Ñ)¨#×.Ñ.Ø—I‘IØNØŸ™Ü2ð ñ ð
 —;‘;×&Ñ& y×1Ñ1Ø ×4Ñ4¸tÐ4ÐD�EØ—J‘J×%Ñ% v§{¡{°E·J±JÐ&?Õ@à—J‘J×%Ñ% f§k¡kÔ2Ù —?‘? d§k¡k×&9Ñ&9×&>Ñ&>À'Ó&IØð 'Jð —‘×"Ñ" 6Ô*ò+ ô, �t˜^×,Ñ,Ø %ˆDÔØˆr?   c                 óz  • / =o!l         / =o1l        U R                  R                  S5        U R                  R                  R
                  S:w  aÑ  U(       a  U R                  R                  S5        U R                  SS9nUR                  S5        U R                  R                  S5      (       a   UR                  U R                  5       5        OU(       a  U R                  S5        UR                  U5        U R                  R                  R
                  S:w  a  MÑ  U R                  R                  S5        g )	NÚlparenrd   r¹   Trò   rº   r’   z-non-default argument follows default argument)ÚargsÚdefaultsr0   r‰   rD   re   r”   r¼   rˆ   rP   r§   rE   )r9   rµ   r  r  Úargs        r<   Úparse_signatureÚParser.parse_signature–  sè   € ØÐˆŒyØ#%Ð%ˆ”=Ø�‰×Ñ˜8Ô$Ø�k‰k×!Ñ!×&Ñ&¨(Ó2ÞØ—‘×"Ñ" 7Ô+Ø×*Ñ*°TÐ*Ð:ˆCØ�K‰K˜Ô Ø�{‰{×"Ñ" 8×,Ñ,Ø—‘ × 5Ñ 5Ó 7Õ8ÞØ—	‘	ÐIÔJØ�K‰K˜Ôð �k‰k×!Ñ!×&Ñ&¨(Õ2ð 	�‰×Ñ˜8Õ$r?   c                 ó¼  • [         R                  " [        U R                  5      R                  S9nU R                  R
                  R                  S:X  a  U R                  U5        O/ Ul        / Ul	        U R                  5       n[        U[         R                  5      (       d  U R                  SUR                  5        X!l        U R                  SSS9Ul        U$ )Nrk   r  zexpected call)zname:endcallTr“   )r   Ú	CallBlockr‹   r0   rA   rD   re   r
  r  r  r§   rÌ   ÚCallrE   ru   r�   rœ   )r9   rµ   Ú	call_nodes      r<   r{   ÚParser.parse_call_block¦  s¦   € Ü�Š¤d¨4¯;©;Ó&7×&>Ñ&>Ñ?ˆØ�;‰;×Ñ×#Ñ# xÓ/Ø× Ñ  Õ&àˆDŒIØˆDŒMà×)Ñ)Ó+ˆ	Ü˜)¤U§Z¡Z×0Ñ0Ø�I‰I�o t§{¡{Ô3ØŒ	Ø×)Ñ)Ð*;ÈÐ)ÐNˆŒ	Øˆr?   c                 ó¼   • [         R                  " [        U R                  5      R                  S9nU R                  S SS9Ul        U R                  SSS9Ul        U$ )Nrk   T)Ústart_inline)zname:endfilterr“   )	r   ÚFilterBlockr‹   r0   rA   r—   rv   r�   rœ   rÆ   s     r<   r|   ÚParser.parse_filter_blockµ  sU   € Ü× Ò ¬¨T¯[©[Ó(9×(@Ñ(@ÑAˆØ×'Ñ'¨¸4Ð'Ð@ˆŒØ×)Ñ)Ð*=È4Ð)ÐPˆŒ	Øˆr?   c                 óð   • [         R                  " [        U R                  5      R                  S9nU R                  SS9R                  Ul        U R                  U5        U R                  SSS9Ul	        U$ )Nrk   Trò   )zname:endmacror“   )
r   ÚMacror‹   r0   rA   r”   r*   r
  r�   rœ   rÆ   s     r<   Úparse_macroÚParser.parse_macro»  se   € Ü�{Š{¤$ t§{¡{Ó"3×":Ñ":Ñ;ˆØ×,Ñ,°tÐ,Ð<×AÑAˆŒ	Ø×Ñ˜TÔ"Ø×)Ñ)Ð*<È$Ð)ÐOˆŒ	Øˆr?   c                 ó´  • [         R                  " [        U R                  5      R                  S9n/ Ul         U R                  R
                  R                  S:w  a{  UR                   (       a  U R                  R                  S5        UR                   R                  U R                  5       5        U R                  R
                  R                  S:w  a  M{  U$ )Nrk   rc   r¹   )
r   r×   r‹   r0   rA   rD   re   r‰   rP   r§   rÆ   s     r<   Úparse_printÚParser.parse_printÂ  s“   € Ü�|Š|¤4¨¯©Ó#4×#;Ñ#;Ñ<ˆØˆŒ
Ø�k‰k×!Ñ!×&Ñ&¨+Ó5Ø�z�zØ—‘×"Ñ" 7Ô+Ø�J‰J×Ñ˜d×3Ñ3Ó5Ô6ð �k‰k×!Ñ!×&Ñ&¨+Õ5ð ˆr?   Ú
with_tupleró   zte.Literal[True]c                 ó   • g rË   © )r9   r  ró   s      r<   r”   ÚParser.parse_assign_targetË  s   € ð r?   r‘   c                 ó   • g rË   r  )r9   r  ró   r`   r‘   s        r<   r”   r  Ð  s   € ð 9<r?   c                 ó¾  • U(       aF  U R                   R                  S5      n[        R                  " UR                  SUR
                  S9nO9U(       a  U R                  SUUS9nOU R                  US9nUR                  S5        UR                  5       (       dA  U R                  S[        U5      R                  R                  5       < 3UR
                  5        U$ )aÊ  Parse an assignment target.  As Jinja allows assignments to
tuples, this function can parse all allowed assignment targets.  Per
default assignments to tuples are parsed, that can be disable however
by setting `with_tuple` to `False`.  If only assignments to names are
wanted `name_only` can be set to `True`.  The `extra_end_rules`
parameter is forwarded to the tuple parsing function.  If
`with_namespace` is enabled, a namespace assignment may be parsed.
r*   Ústorerk   T)Ú
simplifiedr`   r‘   r�   zcan't assign to )r0   r‰   r   ÚNamerw   rA   r•   Úparse_primaryr¼   Ú
can_assignrE   re   Ú__name__Úlower)r9   r  ró   r`   r‘   r~   r™   s          r<   r”   r  Ù  s½   € ö" Ø—K‘K×&Ñ& vÓ.ˆEÜ—Z’Z §¡¨W¸U¿\¹\ÑJ‰FæØ×)Ñ)Ø#Ø$3Ø#1ð *ð ‘ð ×+Ñ+¸>Ð+ÐJ�à�N‰N˜7Ô#à× Ñ ×"Ñ"Ø�I‰IØ"¤4¨£<×#8Ñ#8×#>Ñ#>Ó#@Ñ"CÐDÀfÇmÁmôð ˆr?   r¢   c                 óP   • U(       a  U R                  5       $ U R                  5       $ )z¢Parse an expression.  Per default all expressions are parsed, if
the optional `with_condexpr` parameter is set to `False` conditional
expressions are not parsed.
)Úparse_condexprÚparse_or©r9   r¢   s     r<   r§   ÚParser.parse_expression   s"   € ö
 Ø×&Ñ&Ó(Ð(Ø�}‰}‹Ðr?   c                 óÚ  • U R                   R                  R                  nU R                  5       nU R                   R	                  S5      (       aš  U R                  5       nU R                   R	                  S5      (       a  U R                  5       nOS n[        R                  " X2XAS9nU R                   R                  R                  nU R                   R	                  S5      (       a  Mš  U$ )Nr£   r¥   rk   )r0   rD   rA   r+  rˆ   r*  r   ÚCondExpr)r9   rA   Úexpr1Úexpr2Úexpr3s        r<   r*  ÚParser.parse_condexpr	  s¯   € Ø—‘×$Ñ$×+Ñ+ˆØ—‘“ˆð �k‰k×!Ñ! )×,Ñ,Ø—M‘M“OˆEØ�{‰{×"Ñ" ;×/Ñ/Ø×+Ñ+Ó-‘à�Ü—N’N 5°ÑFˆEØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ! )×,Ó,ð ˆr?   c                 ót  • U R                   R                  R                  nU R                  5       nU R                   R	                  S5      (       ag  U R                  5       n[
        R                  " X#US9nU R                   R                  R                  nU R                   R	                  S5      (       a  Mg  U$ )Núname:orrk   )r0   rD   rA   Ú	parse_andrˆ   r   ÚOr©r9   rA   ÚleftÚrights       r<   r+  ÚParser.parse_or  s‡   € Ø—‘×$Ñ$×+Ñ+ˆØ�~‰~ÓˆØ�k‰k×!Ñ! )×,Ñ,Ø—N‘NÓ$ˆEÜ—8’8˜D°Ñ7ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ! )×,Ó,ð ˆr?   c                 ót  • U R                   R                  R                  nU R                  5       nU R                   R	                  S5      (       ag  U R                  5       n[
        R                  " X#US9nU R                   R                  R                  nU R                   R	                  S5      (       a  Mg  U$ )Núname:andrk   )r0   rD   rA   Ú	parse_notrˆ   r   ÚAndr8  s       r<   r6  ÚParser.parse_and!  s‡   € Ø—‘×$Ñ$×+Ñ+ˆØ�~‰~ÓˆØ�k‰k×!Ñ! *×-Ñ-Ø—N‘NÓ$ˆEÜ—9’9˜T°Ñ8ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ! *×-Ó-ð ˆr?   c                 óú   • U R                   R                  R                  S5      (       aB  [        U R                   5      R                  n[
        R                  " U R                  5       US9$ U R                  5       $ )Núname:notrk   )	r0   rD   rª   r‹   rA   r   ÚNotr>  Úparse_compare)r9   rA   s     r<   r>  ÚParser.parse_not*  sX   € Ø�;‰;×Ñ×#Ñ# J×/Ñ/Ü˜$Ÿ+™+Ó&×-Ñ-ˆFÜ—9’9˜TŸ^™^Ó-°fÑ=Ð=Ø×!Ñ!Ó#Ð#r?   c                 óÌ  • U R                   R                  R                  nU R                  5       n/ n U R                   R                  R                  nU[
        ;   aI  [        U R                   5        UR                  [        R                  " X@R                  5       5      5        OþU R                   R                  S5      (       a5  UR                  [        R                  " SU R                  5       5      5        O©U R                   R                  R                  S5      (       a~  U R                   R                  5       R                  S5      (       aP  U R                   R                  S5        UR                  [        R                  " SU R                  5       5      5        OO#U R                   R                  R                  nGM”  U(       d  U$ [        R                  " X#US9$ )Nr    ÚinrB  rë   Únotinrk   )r0   rD   rA   Úparse_math1re   Ú_compare_operatorsr‹   rP   r   ÚOperandrˆ   rª   rå   rç   ÚCompare)r9   rA   rš   ÚopsÚ
token_types        r<   rD  ÚParser.parse_compare0  sS  € Ø—‘×$Ñ$×+Ñ+ˆØ×ÑÓ!ˆØˆØØŸ™×,Ñ,×1Ñ1ˆJØÔ/Ó/Ü�T—[‘[Ô!Ø—
‘
œ5Ÿ=š=¨×5EÑ5EÓ5GÓHÕIØ—‘×$Ñ$ Y×/Ñ/Ø—
‘
œ5Ÿ=š=¨¨t×/?Ñ/?Ó/AÓBÕCØ—‘×$Ñ$×)Ñ)¨*×5Ñ5¸$¿+¹+×:JÑ:JÓ:L×:QÑ:QØ÷;ñ ;ð —‘× Ñ  Ô#Ø—
‘
œ5Ÿ=š=¨°$×2BÑ2BÓ2DÓEÕFàØ—[‘[×(Ñ(×/Ñ/ˆFò ö ØˆKÜ�}Š}˜T¨vÑ6Ð6r?   c                 óà  • U R                   R                  R                  nU R                  5       nU R                   R                  R                  S;   a™  [
        U R                   R                  R                     n[        U R                   5        U R                  5       nU" X$US9nU R                   R                  R                  nU R                   R                  R                  S;   a  M™  U$ )N)r   r   rk   )r0   rD   rA   Úparse_concatre   r$   r‹   ©r9   rA   r9  Úclsr:  s        r<   rI  ÚParser.parse_math1G  s³   € Ø—‘×$Ñ$×+Ñ+ˆØ× Ñ Ó"ˆØ�k‰k×!Ñ!×&Ñ&¨.Ó8Ü˜dŸk™k×1Ñ1×6Ñ6Ñ7ˆCÜ�—‘ÔØ×%Ñ%Ó'ˆEÙ�t¨6Ñ2ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ!×&Ñ&¨.Õ8ð ˆr?   c                 ó°  • U R                   R                  R                  nU R                  5       /nU R                   R                  R                  S:X  aZ  [        U R                   5        UR                  U R                  5       5        U R                   R                  R                  S:X  a  MZ  [        U5      S:X  a  US   $ [        R                  " X!S9$ )NÚtilder   r   rk   )
r0   rD   rA   Úparse_math2re   r‹   rP   Úlenr   ÚConcat)r9   rA   r  s      r<   rQ  ÚParser.parse_concatR  s    € Ø—‘×$Ñ$×+Ñ+ˆØ× Ñ Ó"Ð#ˆØ�k‰k×!Ñ!×&Ñ&¨'Ó1Ü�—‘ÔØ�K‰K˜×(Ñ(Ó*Ô+ð �k‰k×!Ñ!×&Ñ&¨'Õ1ô ˆt‹9˜‹>Ø˜‘7ˆNÜ�|Š|˜DÑ0Ð0r?   c                 óà  • U R                   R                  R                  nU R                  5       nU R                   R                  R                  S;   a™  [
        U R                   R                  R                     n[        U R                   5        U R                  5       nU" X$US9nU R                   R                  R                  nU R                   R                  R                  S;   a  M™  U$ )N)r    r!   r"   r#   rk   )r0   rD   rA   Ú	parse_powre   r$   r‹   rR  s        r<   rW  ÚParser.parse_math2\  s±   € Ø—‘×$Ñ$×+Ñ+ˆØ�~‰~ÓˆØ�k‰k×!Ñ!×&Ñ&Ð*KÓKÜ˜dŸk™k×1Ñ1×6Ñ6Ñ7ˆCÜ�—‘ÔØ—N‘NÓ$ˆEÙ�t¨6Ñ2ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ!×&Ñ&Ð*KÕKð ˆr?   c                 ó®  • U R                   R                  R                  nU R                  5       nU R                   R                  R                  S:X  a€  [        U R                   5        U R                  5       n[        R                  " X#US9nU R                   R                  R                  nU R                   R                  R                  S:X  a  M€  U$ )NÚpowrk   )r0   rD   rA   Úparse_unaryre   r‹   r   ÚPowr8  s       r<   r\  ÚParser.parse_powg  s�   € Ø—‘×$Ñ$×+Ñ+ˆØ×ÑÓ!ˆØ�k‰k×!Ñ!×&Ñ&¨%Ó/Ü�—‘ÔØ×$Ñ$Ó&ˆEÜ—9’9˜T°Ñ8ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð	 �k‰k×!Ñ!×&Ñ&¨%Õ/ð
 ˆr?   Úwith_filterc                 óø  • U R                   R                  R                  nU R                   R                  R                  nUS:X  a:  [	        U R                   5        [
        R                  " U R                  S5      US9nOPUS:X  a:  [	        U R                   5        [
        R                  " U R                  S5      US9nOU R                  5       nU R                  U5      nU(       a  U R                  U5      nU$ )Nr   Frk   r   )r0   rD   re   rA   r‹   r   ÚNegr`  ÚPosr%  Úparse_postfixÚparse_filter_expr)r9   rc  rN  rA   rµ   s        r<   r`  ÚParser.parse_unaryq  sÂ   € Ø—[‘[×(Ñ(×-Ñ-ˆ
Ø—‘×$Ñ$×+Ñ+ˆð ˜ÓÜ�—‘ÔÜ—9’9˜T×-Ñ-¨eÓ4¸VÑD‰DØ˜5Ó Ü�—‘ÔÜ—9’9˜T×-Ñ-¨eÓ4¸VÑD‰Dà×%Ñ%Ó'ˆDØ×!Ñ! $Ó'ˆÞØ×)Ñ)¨$Ó/ˆDØˆr?   c                 óØ  • U R                   R                  nUR                  S:X  GaB  [        U R                   5        UR                  S;   a.  [
        R                  " UR                  S;   UR                  S9nU$ UR                  S;   a!  [
        R                  " SUR                  S9nU$ U(       aŠ  U R                   R                  R                  S:X  af  [        U R                   5        U R                   R                  S5      n[
        R                  " UR                  UR                  UR                  S9nU$ [
        R                  " UR                  SUR                  S9n U$ UR                  S	:X  aâ  [        U R                   5        UR                  /nUR                  nU R                   R                  R                  S	:X  aj  UR                  U R                   R                  R                  5        [        U R                   5        U R                   R                  R                  S	:X  a  Mj  [
        R                  " S
R                  U5      US9nU$ UR                  S;   a@  [        U R                   5        [
        R                  " UR                  UR                  S9nU$ UR                  S:X  aA  [        U R                   5        U R                  SS9nU R                   R                  S5        U$ UR                  S:X  a  U R                  5       nU$ UR                  S:X  a  U R                  5       nU$ U R!                  S[#        U5      < 3UR                  5        W$ )zxParse a name or literal value. If ``with_namespace`` is enabled, also
parse namespace attr refs, for use in assignments.r*   )ÚtrueÚfalseÚTrueÚFalse)rk  rm  rk   )ÚnoneÚNoneNÚdotÚloadÚstringÚ )ÚintegerÚfloatr  T)Úexplicit_parenthesesrd   ÚlbracketÚlbracezunexpected )r0   rD   re   r‹   rw   r   ÚConstrA   r‰   ÚNSRefr$  rP   rN   r•   Ú
parse_listÚ
parse_dictrE   r   )r9   r‘   r~   rµ   ÚattrÚbufrA   s          r<   r%  ÚParser.parse_primaryƒ  sŸ  € ð —‘×#Ñ#ˆà�:‰:˜ÔÜ�—‘ÔØ�{‰{Ð@Ó@Ü—{’{ 5§;¡;Ð2BÑ#BÈ5Ï<É<ÑX�ð@ ˆð? —‘Ð 0Ó0Ü—{’{ 4°·±Ñ=�ð< ˆö;   D§K¡K×$7Ñ$7×$<Ñ$<ÀÓ$Eô �T—[‘[Ô!Ø—{‘{×)Ñ)¨&Ó1�Ü—{’{ 5§;¡;°·
±
À5Ç<Á<ÑP�ð0 ˆô- —z’z %§+¡+¨v¸e¿l¹lÑK‘ð, ˆð+ �Z‰Z˜8Ó#Ü�—‘ÔØ—;‘;�-ˆCØ—\‘\ˆFØ—+‘+×%Ñ%×*Ñ*¨hÓ6Ø—
‘
˜4Ÿ;™;×.Ñ.×4Ñ4Ô5Ü�T—[‘[Ô!ð —+‘+×%Ñ%×*Ñ*¨hÕ6ô —;’;˜rŸw™w s›|°FÑ;ˆDð ˆð �Z‰ZÐ/Ó/Ü�—‘ÔÜ—;’;˜uŸ{™{°5·<±<Ñ@ˆDð ˆð �Z‰Z˜8Ó#Ü�—‘ÔØ×#Ñ#¸Ð#Ð>ˆDØ�K‰K×Ñ˜xÔ(ð ˆð �Z‰Z˜:Ó%Ø—?‘?Ó$ˆDð
 ˆð	 �Z‰Z˜8Ó#Ø—?‘?Ó$ˆDð ˆð �I‰I˜¤N°5Ó$9Ñ#<Ð=¸u¿|¹|ÔLØˆr?   r#  rw  c                 ó¼  ^ ^^• T R                   R                  R                  nU(       a  S[        R                  4U U4S jjnOS[        R                  4U U4S jjn/ nSn	 U(       a  T R                   R                  S5        T R                  U5      (       a  O`UR                  U" 5       5        T R                   R                  R                  S:X  a  Sn	OO"T R                   R                  R                  nM™  U	(       dE  U(       a  US   $ U(       d2  T R                  S[        T R                   R                  5      < 35        [        R                  " US	US
9$ )ao  Works like `parse_expression` but if multiple expressions are
delimited by a comma a :class:`~jinja2.nodes.Tuple` node is created.
This method could also return a regular expression instead of a tuple
if no commas where found.

The default parsing mode is a full tuple.  If `simplified` is `True`
only names and literals are parsed; ``with_namespace`` allows namespace
attr refs as well. The `no_condexpr` parameter is forwarded to
:meth:`parse_expression`.

Because tuples do not require delimiters and may end in a bogus comma
an extra hint is needed that marks the end of a tuple.  For example
for loops support tuples between `for` and `in`.  In that case the
`extra_end_rules` is set to ``['name:in']``.

`explicit_parentheses` is true if the parsing was triggered by an
expression in parentheses.  This is used to figure out if an empty
tuple is a valid expression or not.
r-   c                  ó"   >• T R                  TS9$ )Nr�   )r%  )r9   r‘   s   €€r<   r5   Ú!Parser.parse_tuple.<locals>.parseË  s   ø€ Ø×)Ñ)¸Ð)ÐHÐHr?   c                  ó"   >• T R                  TS9$ )Nr°   )r§   r,  s   €€r<   r5   rƒ  Ð  s   ø€ Ø×,Ñ,¸=Ð,ÐIÐIr?   FTr¹   r   zExpected an expression, got rr  rk   )r0   rD   rA   r   ÚExprr‰   rg   rP   re   rE   r   ÚTuple)
r9   r#  r¢   r`   rw  r‘   rA   r5   r  Úis_tuples
   ` `  `    r<   r•   ÚParser.parse_tuple­  s$  ú€ ð6 —‘×$Ñ$×+Ñ+ˆÞðIœ5Ÿ:™:÷ Iñ Ið
Jœ5Ÿ:™:÷ Jð Jð $&ˆØˆàÞØ—‘×"Ñ" 7Ô+Ø× Ñ  ×1Ñ1ØØ�K‰K™›Ô Ø�{‰{×"Ñ"×'Ñ'¨7Ó2Ø‘àØ—[‘[×(Ñ(×/Ñ/ˆFñ ö ÞØ˜A‘w�ö (Ø—	‘	ðÜ*¨4¯;©;×+>Ñ+>Ó?ÑBðDôô
 �{Š{˜4 °Ñ7Ð7r?   c                 ó  • U R                   R                  S5      n/ nU R                   R                  R                  S:w  aŒ  U(       a  U R                   R                  S5        U R                   R                  R                  S:X  a  OEUR	                  U R                  5       5        U R                   R                  R                  S:w  a  MŒ  U R                   R                  S5        [        R                  " X!R                  S9$ )Nrx  Úrbracketr¹   rk   )	r0   r‰   rD   re   rP   r§   r   ÚListrA   )r9   r~   Úitemss      r<   r|  ÚParser.parse_listò  s¹   € Ø—‘×"Ñ" :Ó.ˆØ$&ˆØ�k‰k×!Ñ!×&Ñ&¨*Ó4ÞØ—‘×"Ñ" 7Ô+Ø�{‰{×"Ñ"×'Ñ'¨:Ó5ØØ�L‰L˜×.Ñ.Ó0Ô1ð �k‰k×!Ñ!×&Ñ&¨*Õ4ð 	�‰×Ñ˜:Ô&Ü�zŠz˜%¯©Ñ5Ð5r?   c                 ó¢  • U R                   R                  S5      n/ nU R                   R                  R                  S:w  aÖ  U(       a  U R                   R                  S5        U R                   R                  R                  S:X  a  O�U R	                  5       nU R                   R                  S5        U R	                  5       nUR                  [        R                  " X4UR                  S95        U R                   R                  R                  S:w  a  MÖ  U R                   R                  S5        [        R                  " X!R                  S9$ )Nry  Úrbracer¹   r†   rk   )
r0   r‰   rD   re   r§   rP   r   ÚPairrA   ÚDict)r9   r~   rŒ  Úkeyrw   s        r<   r}  ÚParser.parse_dictþ  sí   € Ø—‘×"Ñ" 8Ó,ˆØ$&ˆØ�k‰k×!Ñ!×&Ñ&¨(Ó2ÞØ—‘×"Ñ" 7Ô+Ø�{‰{×"Ñ"×'Ñ'¨8Ó3ØØ×'Ñ'Ó)ˆCØ�K‰K×Ñ˜wÔ'Ø×)Ñ)Ó+ˆEØ�L‰LœŸš C°s·z±zÑBÔCð �k‰k×!Ñ!×&Ñ&¨(Õ2ð 	�‰×Ñ˜8Ô$Ü�zŠz˜%¯©Ñ5Ð5r?   c                 óº   •  U R                   R                  R                  nUS:X  d  US:X  a  U R                  U5      nOUS:X  a  U R	                  U5      nO U$ M[  )Nrq  rx  r  )r0   rD   re   Úparse_subscriptÚ
parse_call©r9   rµ   rN  s      r<   rg  ÚParser.parse_postfix  s^   € ØØŸ™×,Ñ,×1Ñ1ˆJØ˜UÓ" j°JÓ&>Ø×+Ñ+¨DÓ1‘ð ˜xÓ'Ø—‘ tÓ,‘àØˆñ r?   c                 ó&  •  U R                   R                  R                  nUS:X  a  U R                  U5      nOWUS:X  a6  U R                   R                  R                  S:X  a  U R                  U5      nOUS:X  a  U R                  U5      nO U$ M‘  )NÚpiper*   Úisr  )r0   rD   re   r—   rw   Ú
parse_testr–  r—  s      r<   rh  ÚParser.parse_filter_expr  s„   € ØØŸ™×,Ñ,×1Ñ1ˆJØ˜VÓ#Ø×(Ñ(¨Ó.‘Ø˜vÓ%¨$¯+©+×*=Ñ*=×*CÑ*CÀtÓ*KØ—‘ tÓ,‘ð ˜xÓ'Ø—‘ tÓ,‘àØˆñ r?   c                 óT  • [        U R                  5      nUR                  S:X  aÚ  U R                  R                  n[        U R                  5        UR                  S:X  a*  [        R
                  " XR                  SUR                  S9$ UR                  S:w  a  U R                  SUR                  5        [        R                  " UR                  UR                  S9n[        R                  " XSUR                  S9$ UR                  S:X  aý  / nU R                  R                  R                  S:w  ag  U(       a  U R                  R                  S	5        UR                  U R                  5       5        U R                  R                  R                  S:w  a  Mg  U R                  R                  S5        [        U5      S
:X  a  US   nO [        R                  " USUR                  S9n[        R                  " XSUR                  S9$ U R                  SUR                  5        g )Nrq  r*   rr  rk   ru  zexpected name or numberrx  rŠ  r¹   r   r   zexpected subscript expression)r‹   r0   re   rD   r   ÚGetattrrw   rA   rE   rz  ÚGetitemr‰   rP   Úparse_subscribedrX  r†  )r9   rµ   r~   Ú
attr_tokenr	  r  s         r<   r•  ÚParser.parse_subscript)  s”  € ô �T—[‘[Ó!ˆð �:‰:˜ÓØŸ™×,Ñ,ˆJÜ�—‘ÔØ�‰ &Ó(Ü—}’}Ø×*Ñ*¨F¸5¿<¹<ñð ð —‘ IÓ-Ø—	‘	Ð3°Z×5FÑ5FÔGÜ—+’+˜j×.Ñ.°z×7HÑ7HÑIˆCÜ—=’= ¨F¸5¿<¹<ÑHÐHØ�:‰:˜Ó#Ø')ˆDØ—+‘+×%Ñ%×*Ñ*¨jÓ8ÞØ—K‘K×&Ñ& wÔ/Ø—‘˜D×1Ñ1Ó3Ô4ð —+‘+×%Ñ%×*Ñ*¨jÕ8ð �K‰K×Ñ˜zÔ*Ü�4‹y˜A‹~Ø˜1‘g‘ä—k’k $¨°u·|±|ÑD�Ü—=’= ¨F¸5¿<¹<ÑHÐHØ�	‰	Ð1°5·<±<Õ@r?   c                 óÚ  • U R                   R                  R                  nU R                   R                  R                  S:X  a  [	        U R                   5        S /nONU R                  5       nU R                   R                  R                  S:w  a  U$ [	        U R                   5        U/nU R                   R                  R                  S:X  a  UR                  S 5        OUU R                   R                  R                  S;  a   UR                  U R                  5       5        OUR                  S 5        U R                   R                  R                  S:X  ak  [	        U R                   5        U R                   R                  R                  S;  a   UR                  U R                  5       5        O#UR                  S 5        OUR                  S 5        [        R                  " USU06$ )Nr†   )rŠ  r¹   rA   )	r0   rD   rA   re   r‹   r§   rP   r   ÚSlice)r9   rA   r  rµ   s       r<   r¡  ÚParser.parse_subscribedH  s^  € Ø—‘×$Ñ$×+Ñ+ˆð �;‰;×Ñ×#Ñ# wÓ.Ü�—‘ÔØ�6‰Dà×(Ñ(Ó*ˆDØ�{‰{×"Ñ"×'Ñ'¨7Ó2Ø�Ü�—‘ÔØ�6ˆDà�;‰;×Ñ×#Ñ# wÓ.Ø�K‰K˜ÕØ�[‰[× Ñ ×%Ñ%Ð-BÓBØ�K‰K˜×-Ñ-Ó/Õ0à�K‰K˜Ôà�;‰;×Ñ×#Ñ# wÓ.Ü�—‘ÔØ�{‰{×"Ñ"×'Ñ'Ð/DÓDØ—‘˜D×1Ñ1Ó3Õ4à—‘˜DÕ!à�K‰K˜Ôä�{Š{¨4Ð0 &Ñ0Ð0r?   c                 ój  ^ ^	• T R                   R                  S5      m	/ n/ nS nS nSnS[        SS 4U U	4S jjnT R                   R                  R                  S:w  Ga8  U(       aA  T R                   R                  S5        T R                   R                  R                  S:X  a  GOðT R                   R                  R                  S:X  a<  U" US L =(       a    US L 5        [        T R                   5        T R                  5       nGOgT R                   R                  R                  S	:X  a1  U" US L 5        [        T R                   5        T R                  5       nGOT R                   R                  R                  S
:X  a¬  T R                   R                  5       R                  S:X  a„  U" US L 5        T R                   R                  R                  nT R                   R                  S5        T R                  5       nUR                  [        R                  " XxUR                  S95        OBU" US L =(       a    US L =(       a    U(       + 5        UR                  T R                  5       5        SnT R                   R                  R                  S:w  a  GM8  T R                   R                  S5        XX44$ )Nr  Frš   r-   c                 óN   >• U (       d  TR                  STR                  5        g g )Nz+invalid syntax for function call expression)rE   rA   )rš   r9   r~   s    €€r<   ÚensureÚ&Parser.parse_call_args.<locals>.ensurew  s   ø€ ÞØ—	‘	ÐGÈÏÉÕVð r?   rd   r¹   r    r_  r*   r’   rë   rk   T)r0   r‰   rÿ   rD   re   r‹   r§   rå   rw   rç   rP   r   rÃ   rA   )
r9   r  ÚkwargsÚdyn_argsÚ
dyn_kwargsÚrequire_commar©  r’  rw   r~   s
   `        @r<   Úparse_call_argsÚParser.parse_call_argsh  s+  ù€ ð —‘×"Ñ" 8Ó,ˆØˆØˆØˆØˆ
Øˆð	Wœð 	W $÷ 	Wð 	Wð �k‰k×!Ñ!×&Ñ&¨(Ô2ÞØ—‘×"Ñ" 7Ô+ð —;‘;×&Ñ&×+Ñ+¨xÓ7Ùà�{‰{×"Ñ"×'Ñ'¨5Ó0Ù�x 4Ð'×>¨J¸$Ð,>Ô?Ü�T—[‘[Ô!Ø×0Ñ0Ó2’Ø—‘×$Ñ$×)Ñ)¨UÓ2Ù�z TÐ)Ô*Ü�T—[‘[Ô!Ø!×2Ñ2Ó4’
ð —K‘K×'Ñ'×,Ñ,°Ó6ØŸ™×(Ñ(Ó*×/Ñ/°8Ó;ñ ˜:¨Ð-Ô.ØŸ+™+×-Ñ-×3Ñ3�CØ—K‘K×$Ñ$ QÔ'Ø ×1Ñ1Ó3�EØ—M‘M¤%§-¢-°À5Ç<Á<Ñ"PÕQñ ˜8 tÐ+×Q°
¸dÐ0B×QÈ6ÄzÔRØ—K‘K × 5Ñ 5Ó 7Ô8à ˆMðA �k‰k×!Ñ!×&Ñ&¨(Ö2ðD 	�‰×Ñ˜8Ô$Ø˜XÐ1Ð1r?   c           	      ó”   • U R                   R                  nU R                  5       u  p4pV[        R                  " XXEXbR
                  S9$ rÝ   )r0   rD   r¯  r   r  rA   )r9   rµ   r~   r  r«  r¬  r­  s          r<   r–  ÚParser.parse_call   s=   € ð —‘×#Ñ#ˆØ-1×-AÑ-AÓ-CÑ*ˆ�hÜ�zŠz˜$ f¸
Ï<É<ÑXÐXr?   r  c           
      ó  • U R                   R                  R                  S:X  d  U(       Ga`  U(       d  [        U R                   5        U R                   R	                  S5      nUR
                  nU R                   R                  R                  S:X  af  [        U R                   5        USU R                   R	                  S5      R
                  -   -  nU R                   R                  R                  S:X  a  Mf  U R                   R                  R                  S:X  a  U R                  5       u  pVpxO/ n/ nS =px[        R                  " XXVXxUR                  S9nSnU R                   R                  R                  S:X  a  GMV  U(       a  GM`  U$ )Nrš  r*   rq  rJ   r  rk   F)
r0   rD   re   r‹   r‰   rw   r¯  r   ÚFilterrA   )	r9   rµ   r  r~   r*   r  r«  r¬  r­  s	            r<   r—   ÚParser.parse_filter§  s4  € ð �k‰k×!Ñ!×&Ñ&¨&Ó0·LÞÜ�T—[‘[Ô!Ø—K‘K×&Ñ& vÓ.ˆEØ—;‘;ˆDØ—+‘+×%Ñ%×*Ñ*¨eÓ3Ü�T—[‘[Ô!Ø˜˜dŸk™k×0Ñ0°Ó8×>Ñ>Ñ>Ñ>�ð —+‘+×%Ñ%×*Ñ*¨eÕ3ð �{‰{×"Ñ"×'Ñ'¨8Ó3Ø59×5IÑ5IÓ5KÑ2�˜h¨
à�Ø�Ø(,Ð,�Ü—<’<Ø˜D¨(ÀuÇ|Á|ñˆDð !ˆLð# �k‰k×!Ñ!×&Ñ&¨&Ö0·L±Lð$ ˆr?   c           
      ó€  • [        U R                  5      nU R                  R                  R                  S5      (       a  [        U R                  5        SnOSnU R                  R	                  S5      R
                  nU R                  R                  R                  S:X  af  [        U R                  5        USU R                  R	                  S5      R
                  -   -  nU R                  R                  R                  S:X  a  Mf  S =pV/ nU R                  R                  R                  S:X  a  U R                  5       u  p‡pVO²U R                  R                  R                  S;   aŒ  U R                  R                  R                  S	S
S5      (       d`  U R                  R                  R                  S5      (       a  U R                  S5        U R                  5       n	U R                  U	5      n	U	/nO/ n[        R                  " XX‡XVUR                  S9nU(       a  [        R                  " XR                  S9nU$ )NrB  TFr*   rq  rJ   r  >   r*   rv  ry  r  rs  ru  rx  r¥   r5  r=  zname:isz'You cannot chain multiple tests with isrk   )r‹   r0   rD   rª   r‰   rw   re   r¯  rf   rE   r%  rg  r   ÚTestrA   rC  )
r9   rµ   r~   Únegatedr*   r¬  r­  r«  r  Úarg_nodes
             r<   rœ  ÚParser.parse_test¾  sÀ  € Ü�T—[‘[Ó!ˆØ�;‰;×Ñ×#Ñ# J×/Ñ/Ü�—‘ÔØ‰GàˆGØ�{‰{×!Ñ! &Ó)×/Ñ/ˆØ�k‰k×!Ñ!×&Ñ&¨%Ó/Ü�—‘ÔØ�C˜$Ÿ+™+×,Ñ,¨VÓ4×:Ñ:Ñ:Ñ:ˆDð �k‰k×!Ñ!×&Ñ&¨%Õ/ð !%Ð$ˆØ(*ˆØ�;‰;×Ñ×#Ñ# xÓ/Ø15×1EÑ1EÓ1GÑ.ˆD˜( JØ�[‰[× Ñ ×%Ñ%ð *
ó 
ð —+‘+×%Ñ%×.Ñ.¨{¸IÀz×RÑRØ�{‰{×"Ñ"×'Ñ'¨	×2Ñ2Ø—	‘	ÐCÔDØ×)Ñ)Ó+ˆHØ×)Ñ)¨(Ó3ˆHØ�:‰DàˆDÜ�zŠzØ˜ hÀ5Ç<Á<ñ
ˆö Ü—9’9˜T¯,©,Ñ7ˆDØˆr?   c                 óÆ  ^^• / m/ mTR                   nUb  U R                  R                  U5        SUU4S jjn U R                  (       GaÍ  U R                  R                  nUR                  S:X  aW  UR
                  (       a/  U" [        R                  " UR
                  UR                  S95        [        U R                  5        GO<UR                  S:X  aF  [        U R                  5        U" U R                  SS95        U R                  R                  S5        OæUR                  S:X  aË  U" 5         [        U R                  5        UbH  U R                  R                  R                  " U6 (       a   TUb  U R                  R                  5         $ $ U R                  5       n[        U[         5      (       a  TR#                  U5        OTR                  U5        U R                  R                  S	5        O[%        S
5      eU R                  (       a  GMÍ  U" 5         Ub  U R                  R                  5         T$ ! Ub  U R                  R                  5         f f = f)Nc                  óŒ   >• T(       a<  TS   R                   n TR                  [        R                  " TS S  U S95        TS S 2	 g g )Nr   rk   )rA   rP   r   r×   )rA   rœ   Údata_buffers    €€r<   Ú
flush_dataÚ#Parser.subparse.<locals>.flush_dataî  s<   ø€ ÞØ$ Q™×.Ñ.�Ø—‘œEŸLšL¨±Q¨ÀÑGÔHØ¢‘Nð r?   rÎ   rk   Úvariable_beginTr°   rb   Úblock_beginrc   zinternal parsing error)r-   N)rP   r8   r0   rD   re   rw   r   rÍ   rA   r‹   r•   r‰   rf   rz   r‚   rÌ   r\   ÚextendÚAssertionError)r9   rZ   Úadd_datar¾  r~   rp   rœ   r½  s         @@r<   rŠ   ÚParser.subparseä  sÚ  ù€ ð $&ˆØ*,ˆØ×%Ñ%ˆàÑ!Ø×!Ñ!×(Ñ(¨Ô4÷	#ð 	#ð	,Ø—+—+�+ØŸ™×+Ñ+�Ø—:‘: Ó'Ø—{—{Ù ¤×!3Ò!3°E·K±KÈÏÉÑ!UÔVÜ˜Ÿ™Ö%Ø—Z‘ZÐ#3Ó3Ü˜Ÿ™Ô%Ù˜T×-Ñ-¸DÐ-ÐAÔBØ—K‘K×&Ñ& ~Õ6Ø—Z‘Z =Ó0Ù”LÜ˜Ÿ™Ô%Ø!Ñ-°$·+±+×2EÑ2E×2NÒ2NØ#ö3ð  $ð Ñ%Ø×%Ñ%×)Ñ)Õ+ð &ð ×-Ñ-Ó/�BÜ! "¤d×+Ñ+ØŸ™ B�àŸ™ BœØ—K‘K×&Ñ& {Õ3ä(Ð)AÓBÐBð1 —+—+’+ñ4 ŒLàÑ%Ø×%Ñ%×)Ñ)Ô+Øˆøð Ñ%Ø×%Ñ%×)Ñ)Õ+ð &ús   »D=I  ÆB I  ÈI  É  I c                 ó‚   • [         R                  " U R                  5       SS9nUR                  U R                  5        U$ )z0Parse the whole template into a `Template` node.r   rk   )r   ÚTemplaterŠ   Úset_environmentr(   )r9   rŒ   s     r<   r5   ÚParser.parse  s1   € ä—’ §¡£¸Ñ:ˆØ×Ñ˜t×/Ñ/Ô0Øˆr?   )	r8   r6   r7   r1   r(   r2   r+   r*   r0   )NNNrË   )NN)F)..)TFNF)T)FTNFF)br'  Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚtÚOptionalr=   r   ÚintÚTyperE   r‹  r†  rU   rX   r^   rÿ   rg   r   rn   rq   ÚUnionro   r‚   r�   r–   r˜   r�   r¨   r­   r³   r¶   r»   r¿   rÅ   rÇ   rÔ   rÚ   rÞ   rà   r
   rè   rì   rî   rô   rõ   rý   r  r   r
  r  r{   r  r|   r  r  r×   r  ÚtypingÚoverloadr$  r”   r{  r…  r§   r*  r+  r6  r>  rD  rI  rQ  rW  r\  r`  r%  r•   r|  r‘  r}  rg  rh  rŸ  r   r•  r¡  rÃ   r¯  r  r–  r—   rœ  rŠ   rÇ  r5   Ú__static_attributes__r  r?   r<   r&   r&   0   s¥  † ñð !%Ø$(Ø!%ñ>à"ð>ð ð>ð �j‰j˜‰oð	>ð
 —*‘*˜S‘/ð>ð �z‰z˜#‰ð>ð 
õ>ð4 #'Ø+>ñ	9àð9ð —
‘
˜3‘ð9ð �V‰VÐ'Ñ(ð	9ð
 
õ9ð&-à�j‰j˜‰oð&-ð Ÿ™ §¡¨¨S¨Ñ 1Ñ2ð&-ð —
‘
˜3‘ð	&-ð
 
ô&-ðR 48ñ?Øð?Ø!"§¡¨C¡ð?à	õ?ð 59Ø"&ñ	/à—J‘J˜qŸw™w s¨C xÑ0Ñ1ð	/ð —
‘
˜3‘ð	/ð 
õ		/ð @DñØ Ÿz™z¨!¯'©'°#°s°(Ñ*;Ñ<ðà	õñ a§j¡j°¡oð À×ASÑASõ ð& §¡¨¯©°Q·V±V¸E¿J¹JÑ5GÐ)GÑ!Hô &ð< BGñØŸ'™' # s (Ñ+ðØ:>ðà	
�‰�—
‘
Ñ	õð:	K˜1Ÿ7™7 5§<¡<°×1BÑ1BÐ#BÑCô 	KðT˜5Ÿ9™9ô Tð&˜%Ÿ(™(ô ð$˜EŸJ™Jô ð"# %§+¡+ô #ð˜UŸ[™[ô ð@˜uŸ}™}ô ð

Ø"ð
Ø-1ð
à	ô
ð
5˜uŸ}™}ô 
5ð6˜eŸl™lô 6ð(˜E×,Ñ,ô (ðT% Jð %°4ô %ð  %§/¡/ô ð E×$5Ñ$5ô ð˜UŸ[™[ô ð˜UŸ\™\ô ð ‡_�_àFIñØðØ1Cðà	�‰ôó ðð ‡_�_ð  ØØ9=Ø$ñ<àð<ð ð<ð Ÿ™ A§G¡G¨C°¨HÑ$5Ñ6ð	<ð
 ð<ð 
�‰�—‘˜eŸj™j¨%¯+©+Ð5Ñ	6ô<ó ð<ð  ØØ9=Ø$ñ%àð%ð ð%ð Ÿ™ A§G¡G¨C°¨HÑ$5Ñ6ð	%ð
 ð%ð 
�‰�—‘˜eŸj™j¨%¯+©+Ð5Ñ	6õ%ñN¨dð ¸e¿j¹jõ ð §
¡
ô ð˜%Ÿ*™*ô ð˜5Ÿ:™:ô ð$˜5Ÿ:™:ô $ð7˜uŸz™zô 7ð.	˜UŸZ™Zô 	ð1˜eŸj™jô 1ð	˜UŸZ™Zô 	ð˜5Ÿ:™:ô ñ tð °u·z±zõ ñ$(¨Dð (¸U¿Z¹Zõ (ðX !Ø"Ø9=Ø%*Ø$ñC8àðC8ð ðC8ð Ÿ™ A§G¡G¨C°¨HÑ$5Ñ6ð	C8ð
 #ðC8ð ðC8ð 
�‰�—‘˜eŸj™jÐ(Ñ	)õC8ðJ
6˜EŸJ™Jô 
6ð6˜EŸJ™Jô 6ð %§*¡*ð °·±ô ð e§j¡jð °U·Z±Zô ðAØ—J‘JðAà	
�‰�—‘ §¡Ð-Ñ	.ôAð>1 %§*¡*ô 1ð@62à	
�‰Ø	�‰ˆu�z‰zÑØ	�‰ˆu�}‰}ÑØ	�
‰
�5—:‘:ÑØ	�
‰
�5—:‘:Ñð	 ñ
ô62ðpY˜uŸz™zð Y¨e¯j©jô Yð BGñØ—J‘J˜uŸz™zÑ*ðØ:>ðà	
�‰�E—J‘JÑ	õð.$˜uŸz™zð $¨e¯j©jô $ðN ;?ñ/ØŸ*™* Q§W¡W¨S°#¨XÑ%6Ñ7ð/à	
�‰�—
‘
Ñ	õ/ðb�u—~‘~÷ r?   r&   )'rÍ  rÔ  rÏ  rt  r   Ú
exceptionsr   r   Úlexerr   r   ÚTYPE_CHECKINGÚtyping_extensionsÚter(   r	   ÚTypeVarrô   rì   r
   r  r  r   Ú	frozensetrx   rJ  ÚAddÚSubÚMulÚDivÚFloorDivÚModr$   r‘  rÎ  rÒ  r…  Ú__annotations__r&   r  r?   r<   Ú<module>rå     sÞ   ðÚ >ã Û å Ý .Ý +Ý !Ý &à‡?‡?Û"å(à—’Ð+¨U¯\©\¸5¿=¹=ÓI€Ø�YŠY�| U§[¡[°%·/±/ÓB€
áòóÐ ñ  ÒGÓHÐ ð �9‰9Ø�9‰9Ø�9‰9Ø�9‰9Ø—‘Ø�9‰9ñ0€ˆQ�V‰V�C˜Ÿ™ §
¡
Ñ+Ð+Ñ,ó ÷iò ir?   