Ë
    éÿæi¿�  ã                   ó>  — U d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ej                  r
ddlZdd	lmZ  ej                   d
ej"                  ej$                  «      Z ej                   dej(                  ej*                  «      Z eg d¢«      Z eg d¢«      Zej4                  ej6                  ej8                  ej:                  ej<                  ej>                  dœZ ejB                  e"ejF                  ejH                     f   e%d<    G d„ d«      Z&y)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                   ó"  — e Zd ZdZ	 	 	 dSdddedej                  e   dej                  e   dej                  e   d	dfd
„Zdefdedej                  e	   dej                  e   d	dfd„Zdej                  e   dej                  ej                  edf      dej                  e	   d	dfd„Z	 dTdedej                  e	   d	dfd„Z	 	 dUdej                  ej                  edf      dej                  e	   d	dfd„Z	 dTdej                  ej                  edf      d	efd„ZdTdej                  e	   d	ej(                  fd„Zd	ej,                  ej.                  ej                  ej.                     f   fd„Z	 dVdej                  edf   ded	ej                  ej.                     fd„Zd	ej,                  ej4                  ej6                  f   fd„Zd	ej:                  fd„Zd	ej>                  fd„Z d	ejB                  fd„Z"d	ejF                  fd „Z$d	ejJ                  fd!„Z&d	ejN                  fd"„Z(d#e)d$ed	e)fd%„Z*d	ejV                  fd&„Z,d	ejZ                  fd'„Z.d	ej^                  fd(„Z0d#e1d	dfd)„Z2d	ejf                  fd*„Z4d	ejj                  fd+„Z6d	ejn                  fd,„Z8d	ejr                  fd-„Z:e;jx                  	 dWd.ed/d0d	ejz                  fd1„«       Z>e;jx                  	 	 	 	 dXd.ed/edej                  ej                  edf      d2ed	ej,                  ej~                  ejz                  ej                  f   f
d3„«       Z>	 	 	 	 dXd.ed/edej                  ej                  edf      d2ed	ej,                  ej~                  ejz                  ej                  f   f
d4„Z>dYd5ed	ej€                  fd6„ZAd	ej€                  fd7„ZBd	ej€                  fd8„ZCd	ej€                  fd9„ZDd	ej€                  fd:„ZEd	ej€                  fd;„ZFd	ej€                  fd<„ZGd	ej€                  fd=„ZHd	ej€                  fd>„ZId	ej€                  fd?„ZJdYd@ed	ej€                  fdA„ZKdVd2ed	ej€                  fdB„ZL	 	 	 	 	 dZdCed5edej                  ej                  edf      dDed2ed	ej,                  ej                  ej€                  f   fdE„ZMd	ej                  fdF„ZNd	ejž                  fdG„ZPd#ej€                  d	ej€                  fdH„ZQd#ej€                  d	ej€                  fdI„ZRd#ej€                  d	ej,                  ej¦                  ej¨                  f   fdJ„ZUd	ej€                  fdK„ZVd	ej                  ej                  ej€                     ej                  ej®                     ej                  ej€                     ej                  ej€                     f   fdL„ZXd#ej€                  d	ej²                  fdM„ZZ	 dVd#ej                  ej€                     dNed	ej                  ej€                     fdO„Z[d#ej€                  d	ej€                  fdP„Z\	 dTdej                  ej                  edf      d	ej                  ej.                     fdQ„Z]d	ej¼                  fdR„Z_y)[ÚParserz…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                 ó$  — || _         |j                  ||||«      | _        || _        || _        d| _        i | _        |j                  «       D ],  }|j                  D ]  }|j                  | j                  |<   Œ Œ. d| _
        g | _        g | _        y )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           úb/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/jinja2/parser.pyÚ__init__zParser.__init__5   s“   € ð 'ˆÔØ!×+Ñ+¨F°D¸(ÀEÓJˆŒØˆŒ	Ø ˆŒØˆŒð ð 	Œð %×4Ñ4Ö6ˆIØ —~”~�Ø'0§¡�—‘ Ò$ñ &ð 7ð !"ˆÔØ')ˆŒØ;=ˆÕó    ÚmsgÚlinenoÚexczte.NoReturnc                 ó„   — |€ | j                   j                  j                  } |||| j                  | j                  «      ‚)z Convenience method that raises `exc` with the message, passed
        line number or last line number as well as the current name and
        filename.
        )r/   Úcurrentr?   r)   r*   )r8   r>   r?   r@   s       r;   ÚfailzParser.failL   s7   € ð ˆ>Ø—[‘[×(Ñ(×/Ñ/ˆFÙ�#�v˜tŸy™y¨$¯-©-Ó8Ð8r=   Úend_token_stack.c           
      óì  — t        «       }|D ]!  }|j                  t        t        |«      «       Œ# |r1dj	                  t        t
        t        t        |d   «      «      «      }nd }|€dg}nd|›d�g}|r1|�||v r|j                  d|› d�«       n|j                  d|› d�«       | j                  r"|j                  d| j                  d   ›d�«       | j                  d	j	                  |«      |«       y )
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Úappendr6   rC   )r8   r)   rD   r?   ÚexpectedÚexprsÚcurrently_lookingÚmessages           r;   Ú_fail_ut_eofz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¨HÑ$4Ø—‘ð2Ø2CÐ1DÀAðGõð
 —‘Ø@ÐARÐ@SÐSTÐUôð �?Š?Ø�N‰NðØ—O‘O BÑ'Ð*¨!ð-ôð
 	�	‰	�#—(‘(˜7Ó# VÕ,r=   c                 ó>   — | j                  || j                  |«       y)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)rR   r7   )r8   r)   r?   s      r;   Úfail_unknown_tagzParser.fail_unknown_tag‚   s   € ð 	×Ñ˜$ × 5Ñ 5°vÕ>r=   Ú
end_tokensc                 óz   — t        | j                  «      }|�|j                  |«       | j                  d||«       y)z9Like fail_unknown_tag but for end of template situations.N)Úlistr7   rM   rR   )r8   rU   r?   Ústacks       r;   Úfail_eofzParser.fail_eof‹   s8   € ô �T×*Ñ*Ó+ˆØÐ!Ø�L‰L˜Ô$Ø×Ñ˜$  vÕ.r=   Úextra_end_rulesc                 ó˜   — | j                   j                  j                  dv ry|�%| j                   j                  j                  |«      S y)zAre we at the end of a tuple?)Úvariable_endÚ	block_endÚrparenTF)r/   rB   ÚtypeÚtest_any)r8   rZ   s     r;   Úis_tuple_endzParser.is_tuple_end–   sD   € ð �;‰;×Ñ×#Ñ#Ð'NÑNØØÐ(Ø—;‘;×&Ñ&×/Ñ/°Ó@Ð@Ør=   c                 óÔ   — | xj                   dz  c_         t        j                  t        j                  «      }t        j
                  j                  |d| j                   › �|¬«       |S )zDReturn a new free identifier as :class:`~jinja2.nodes.InternalName`.r   Úfi©r?   )r5   ÚobjectÚ__new__r   ÚInternalNameÚNoder<   )r8   r?   Úrvs      r;   Úfree_identifierzParser.free_identifier    sS   € à×Ò Ñ"ÕÜ�^‰^œE×.Ñ.Ó/ˆÜ�
‰
×Ñ˜B " T×%:Ñ%:Ð$;Ð <ÀVÐÔLØˆ	r=   c                 ó&  — | j                   j                  }|j                  dk7  r| j                  d|j                  «       | j
                  j                  |j                  «       d}	 |j                  t        v rQt        | d| j                   j                  j                  › �«      } |«       |r| j
                  j                  «        S S |j                  dk(  r-| j                  «       |r| j
                  j                  «        S S |j                  dk(  r-| j                  «       |r| j
                  j                  «        S S | j                  j                  |j                  «      }|�% || «      |r| j
                  j                  «        S S | j
                  j                  «        d}| j                  |j                  |j                  «       |r| j
                  j                  «        yy# |r| j
                  j                  «        w w xY w)	zParse a single statement.r)   ztag name expectedTÚparse_ÚcallÚfilterNF)r/   rB   r_   rC   r?   r6   rM   ÚvalueÚ_statement_keywordsÚgetattrÚpopÚparse_call_blockÚparse_filter_blockr1   ÚgetrT   )r8   ÚtokenÚpop_tagÚfÚexts        r;   Úparse_statementz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G1 ÃG1 Ä	G1 Å.G1 ÆAG1 Ç1HÚdrop_needlec                 ó*  — | j                   j                  d«       | j                   j                  d«       | j                  |«      }| j                   j                  j
                  dk(  r| j                  |«       |rt        | j                   «       |S )aR  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.
        Úcolonr]   Úeof)r/   Úskip_ifÚexpectÚsubparserB   r_   rY   Únext)r8   rU   r{   Úresults       r;   Úparse_statementszParser.parse_statementsÄ   sr   € ð 	�‰×Ñ˜GÔ$ð 	�‰×Ñ˜;Ô'Ø—‘˜zÓ*ˆð �;‰;×Ñ×#Ñ# uÒ,Ø�M‰M˜*Ô%áÜ�—‘ÔØˆr=   c                 ód  — t        | j                  «      j                  }| j                  d¬«      }| j                  j	                  d«      r(| j                  «       }t        j                  |||¬«      S | j                  d«      }| j                  dd¬«      }t        j                  ||||¬«      S )zParse an assign statement.T©Úwith_namespaceÚassignrd   N)zname:endset©r{   )r‚   r/   r?   Úparse_assign_targetr   Úparse_tupler   ÚAssignÚparse_filterr„   ÚAssignBlock)r8   r?   ÚtargetÚexprÚfilter_nodeÚbodys         r;   Ú	parse_setzParser.parse_setá   s™   € ä�d—k‘kÓ"×)Ñ)ˆØ×)Ñ)¸Ð)Ó>ˆØ�;‰;×Ñ˜xÔ(Ø×#Ñ#Ó%ˆDÜ—<‘< ¨°VÔ<Ð<Ø×'Ñ'¨Ó-ˆØ×$Ñ$Ð%5À4Ð$ÓHˆÜ× Ñ  ¨°dÀ6ÔJÐJr=   c           	      ó&  — | j                   j                  d«      j                  }| j                  d¬«      }| j                   j                  d«       | j	                  dd¬«      }d}| j                   j                  d	«      r| j                  «       }| j                   j                  d
«      }| j                  d«      }t        | j                   «      j                  dk(  rg }n| j                  dd¬«      }t        j                  |||||||¬«      S )zParse a for loop.zname:for)úname:in)rZ   r•   F)úname:recursive)Úwith_condexprrZ   Núname:ifr–   )úname:endforú	name:elseÚendfor)r™   Tr‰   rd   )r/   r€   r?   rŠ   r‹   r   Úparse_expressionr„   r‚   ro   r   ÚFor)r8   r?   r�   ÚiterÚtestÚ	recursiver’   Úelse_s           r;   Ú	parse_forz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¨U°D¸)ÈFÔSÐSr=   c                 ó4  — t        j                  | j                  j                  d«      j                  ¬«      x}}	 | j                  d¬«      |_        | j                  d«      |_        g |_	        g |_
        t        | j                  «      }|j                  d«      rPt        j                  | j                  j                  j                  ¬«      }|j                  j                  |«       Œ²|j                  d«      r| j                  d	d¬
«      |_
        	 |S )zParse an if construct.r˜   rd   TF©r—   )ú	name:elifrš   ú
name:endifr¥   rš   )r¦   r‰   )r   ÚIfr/   r€   r?   r‹   rŸ   r„   r’   Úelif_r¡   r‚   rB   rM   )r8   Únoderƒ   rv   s       r;   Úparse_ifzParser.parse_ifÿ   sÜ   € äŸ™¨¯©×(:Ñ(:¸9Ó(E×(LÑ(LÔMÐMˆˆvØØ×(Ñ(°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                 ó`  — t        j                  t        | j                  «      j                  ¬«      }g }g }| j                  j
                  j                  dk7  r­|r| j                  j                  d«       | j                  «       }|j                  d«       |j                  |«       | j                  j                  d«       |j                  | j                  «       «       | j                  j
                  j                  dk7  rŒ­||_        ||_        | j                  dd¬«      |_        |S )	Nrd   r]   ÚcommaÚparamrˆ   )zname:endwithTr‰   )r   ÚWithr‚   r/   r?   rB   r_   r€   rŠ   Úset_ctxrM   rœ   ÚtargetsÚvaluesr„   r’   )r8   r©   r°   r±   r�   s        r;   Ú
parse_withz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                 ó  — t        j                  t        | j                  «      j                  ¬«      }t        j
                  d| j                  «       «      g|_        | j                  dd¬«      |_	        t        j                  |g«      S )Nrd   r   )zname:endautoescapeTr‰   )r   ÚScopedEvalContextModifierr‚   r/   r?   ÚKeywordrœ   Úoptionsr„   r’   ÚScope©r8   r©   s     r;   Úparse_autoescapezParser.parse_autoescape"  sh   € Ü×.Ñ.´d¸4¿;¹;Ó6G×6NÑ6NÔOˆÜŸ™ l°D×4IÑ4IÓ4KÓLÐMˆŒØ×)Ñ)Ð*AÈtÐ)ÓTˆŒ	Ü�{‰{˜D˜6Ó"Ð"r=   c                 óò  — t        j                  t        | j                  «      j                  ¬«      }| j                  j                  d«      j                  |_        | j                  j                  d«      |_	        | j                  j                  d«      |_
        | j                  j                  j                  dk(  r| j                  d«       | j                  dd¬	«      |_        |j                  rY|j                  D ]J  }t!        |t         j"                  «      rt%        d
„ |j                   D «       «      sŒ:| j                  d«       ŒL | j                  j                  d|j                  z   «       |S )Nrd   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   óŒ   K  — | ]<  }t        |t        j                  «       xs |j                  j	                  «        –— Œ> y ­w©N)Ú
isinstancer   ÚTemplateDataÚdataÚisspace)Ú.0Úoutput_nodes     r;   Ú	<genexpr>z%Parser.parse_block.<locals>.<genexpr>>  sJ   è ø€ ð 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‚   r/   r?   r€   ro   r)   r   ÚscopedÚrequiredrB   r_   rC   r„   r’   r½   ÚOutputÚany)r8   r©   Ú	body_nodes      r;   Úparse_blockz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                 ó–   — t        j                  t        | j                  «      j                  ¬«      }| j                  «       |_        |S ©Nrd   )r   ÚExtendsr‚   r/   r?   rœ   Útemplater¸   s     r;   Úparse_extendszParser.parse_extendsH  s4   € Ü�}‰}¤D¨¯©Ó$5×$<Ñ$<Ô=ˆØ×-Ñ-Ó/ˆŒØˆr=   r©   Údefaultc                 ó8  — | j                   j                  j                  dd«      rl| j                   j                  «       j	                  d«      rCt        | j                   «      j                  dk(  |_        | j                   j                  «        |S ||_        |S )Nz	name:withzname:withoutúname:contextr   )	r/   rB   r`   ÚlookrŸ   r‚   ro   Úwith_contextÚskip)r8   r©   rÐ   s      r;   Úparse_import_contextzParser.parse_import_contextM  s~   € ð �;‰;×Ñ×'Ñ'Ø˜ô
à�k‰k×ÑÓ ×%Ñ% nÔ5Ü $ T§[¡[Ó 1× 7Ñ 7¸6Ñ AˆDÔØ�K‰K×ÑÔð ˆð !(ˆDÔØˆr=   c                 ó¦  — t        j                  t        | j                  «      j                  ¬«      }| j                  «       |_        | j                  j                  j                  d«      rL| j                  j                  «       j                  d«      r#d|_
        | j                  j                  d«       nd|_
        | j                  |d«      S )Nrd   zname:ignorezname:missingTé   F)r   ÚIncluder‚   r/   r?   rœ   rÎ   rB   rŸ   rÓ   Úignore_missingrÕ   rÖ   r¸   s     r;   Úparse_includezParser.parse_includeY  s›   € Ü�}‰}¤D¨¯©Ó$5×$<Ñ$<Ô=ˆØ×-Ñ-Ó/ˆŒØ�;‰;×Ñ×#Ñ# MÔ2°t·{±{×7GÑ7GÓ7I×7NÑ7NØô8
ð #'ˆDÔØ�K‰K×Ñ˜QÕà"'ˆDÔØ×(Ñ(¨¨tÓ4Ð4r=   c                 ó.  — t        j                  t        | j                  «      j                  ¬«      }| j                  «       |_        | j                  j                  d«       | j                  d¬«      j                  |_
        | j                  |d«      S )Nrd   úname:asT©Ú	name_onlyF)r   ÚImportr‚   r/   r?   rœ   rÎ   r€   rŠ   r)   r�   rÖ   r¸   s     r;   Úparse_importzParser.parse_importe  so   € Ü�|‰|¤4¨¯©Ó#4×#;Ñ#;Ô<ˆØ×-Ñ-Ó/ˆŒØ�‰×Ñ˜9Ô%Ø×.Ñ.¸Ð.Ó>×CÑCˆŒØ×(Ñ(¨¨uÓ5Ð5r=   c                 óþ  ‡ ‡— t        j                  t        ‰ j                  «      j                  ¬«      Š‰ j                  «       ‰_        ‰ j                  j                  d«       g ‰_        dt        fˆˆ fd„}	 ‰j                  r‰ j                  j                  d«       ‰ j                  j                  j                  dk(  �r |«       r�n‰ j                  d¬«      }|j                  j                  d	«      r"‰ j                  d
|j                  t         ¬«       ‰ j                  j#                  d«      rD‰ j                  d¬«      }‰j                  j%                  |j                  |j                  f«       n%‰j                  j%                  |j                  «        |«       s#‰ j                  j                  j                  dk7  rn‰ j                  j                  d«       �Œot'        ‰d«      sd‰_        ‰S )Nrd   zname:importr,   c                  ó   •— ‰j                   j                  j                  dv rk‰j                   j                  «       j	                  d«      rBt        ‰j                   «      j                  dk(  ‰ _        ‰j                   j                  «        yy)N>   r   ÚwithoutrÒ   r   TF)r/   rB   ro   rÓ   rŸ   r‚   rÔ   rÕ   )r©   r8   s   €€r;   Úparse_contextz(Parser.parse_from.<locals>.parse_contextr  so   ø€ Ø�{‰{×"Ñ"×(Ñ(ð -ñ ð —+‘+×"Ñ"Ó$×)Ñ)¨.Ô9Ü$(¨¯©Ó$5×$;Ñ$;¸vÑ$E�Ô!Ø—‘× Ñ Ô"ØØr=   Tr¬   r)   rÞ   Ú_z4names starting with an underline can not be imported)r@   rÝ   rÔ   F)r   Ú
FromImportr‚   r/   r?   rœ   rÎ   r€   ÚnamesÚboolrB   r_   rŠ   r)   Ú
startswithrC   r   r   rM   ÚhasattrrÔ   )r8   rå   r�   Úaliasr©   s   `   @r;   Ú
parse_fromz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Ø ×4Ñ4¸tÐ4ÓD�EØ—J‘J×%Ñ% v§{¡{°E·J±JÐ&?Õ@à—J‘J×%Ñ% f§k¡kÔ2Ù ”? d§k¡k×&9Ñ&9×&>Ñ&>À'Ò&IØà—‘×"Ñ" 6Ô*ñ+ ô, �t˜^Ô,Ø %ˆDÔØˆr=   c                 ó`  — g x}|_         g x}|_        | j                  j                  d«       | j                  j                  j
                  dk7  rÃ|r| j                  j                  d«       | j                  d¬«      }|j                  d«       | j                  j                  d«      r |j                  | j                  «       «       n|r| j                  d«       |j                  |«       | j                  j                  j
                  dk7  rŒÃ| j                  j                  d«       y )	NÚlparenr^   r¬   TrÞ   r­   rˆ   z-non-default argument follows default argument)ÚargsÚdefaultsr/   r€   rB   r_   rŠ   r¯   r   rM   rœ   rC   )r8   r©   rð   rñ   Úargs        r;   Úparse_signaturezParser.parse_signature–  sé   € ØÐˆˆtŒyØ#%Ð%ˆ�4”=Ø�‰×Ñ˜8Ô$Ø�k‰k×!Ñ!×&Ñ&¨(Ò2ÙØ—‘×"Ñ" 7Ô+Ø×*Ñ*°TÐ*Ó:ˆCØ�K‰K˜Ô Ø�{‰{×"Ñ" 8Ô,Ø—‘ × 5Ñ 5Ó 7Õ8ÙØ—	‘	ÐIÔJØ�K‰K˜Ôð �k‰k×!Ñ!×&Ñ&¨(Ó2ð 	�‰×Ñ˜8Õ$r=   c                 ó¼  — t        j                  t        | j                  «      j                  ¬«      }| j                  j
                  j                  dk(  r| j                  |«       ng |_        g |_	        | j                  «       }t        |t         j                  «      s| j                  d|j                  «       ||_        | j                  dd¬«      |_        |S )Nrd   rï   zexpected call)zname:endcallTr‰   )r   Ú	CallBlockr‚   r/   r?   rB   r_   ró   rð   rñ   rœ   r½   ÚCallrC   rm   r„   r’   )r8   r©   Ú	call_nodes      r;   rs   zParser.parse_call_block¦  s¥   € Ü�‰¤d¨4¯;©;Ó&7×&>Ñ&>Ô?ˆØ�;‰;×Ñ×#Ñ# xÒ/Ø× Ñ  Õ&àˆDŒIØˆDŒMà×)Ñ)Ó+ˆ	Ü˜)¤U§Z¡ZÔ0Ø�I‰I�o t§{¡{Ô3ØˆŒ	Ø×)Ñ)Ð*;ÈÐ)ÓNˆŒ	Øˆr=   c                 óÌ   — t        j                  t        | j                  «      j                  ¬«      }| j                  d d¬«      |_        | j                  dd¬«      |_        |S )Nrd   T)Ústart_inline)zname:endfilterr‰   )	r   ÚFilterBlockr‚   r/   r?   r�   rn   r„   r’   r¸   s     r;   rt   zParser.parse_filter_blockµ  sU   € Ü× Ñ ¬¨T¯[©[Ó(9×(@Ñ(@ÔAˆØ×'Ñ'¨¸4Ð'Ó@ˆŒØ×)Ñ)Ð*=È4Ð)ÓPˆŒ	Øˆr=   c                 ó   — t        j                  t        | j                  «      j                  ¬«      }| j                  d¬«      j                  |_        | j                  |«       | j                  dd¬«      |_	        |S )Nrd   TrÞ   )zname:endmacror‰   )
r   ÚMacror‚   r/   r?   rŠ   r)   ró   r„   r’   r¸   s     r;   Úparse_macrozParser.parse_macro»  se   € Ü�{‰{¤$ t§{¡{Ó"3×":Ñ":Ô;ˆØ×,Ñ,°tÐ,Ó<×AÑAˆŒ	Ø×Ñ˜TÔ"Ø×)Ñ)Ð*<È$Ð)ÓOˆŒ	Øˆr=   c                 ó¨  — t        j                  t        | j                  «      j                  ¬«      }g |_         | j                  j
                  j                  dk7  rt|j                   r| j                  j                  d«       |j                   j                  | j                  «       «       | j                  j
                  j                  dk7  rŒt|S )Nrd   r]   r¬   )
r   rÇ   r‚   r/   r?   rB   r_   r€   rM   rœ   r¸   s     r;   Úparse_printz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                  ó   — y r¼   © )r8   r   rß   s      r;   rŠ   zParser.parse_assign_targetË  s   € ð r=   r‡   c                  ó   — y r¼   r  )r8   r   rß   rZ   r‡   s        r;   rŠ   zParser.parse_assign_targetÐ  s   € ð 9<r=   c                 ó®  — |rH| j                   j                  d«      }t        j                  |j                  d|j
                  ¬«      }n:|r| j                  d||¬«      }n| j                  |¬«      }|j                  d«       |j                  «       s@| j                  dt        |«      j                  j                  «       ›�|j
                  «       |S )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)   Ústorerd   T)Ú
simplifiedrZ   r‡   r†   zcan't assign to )r/   r€   r   ÚNamero   r?   r‹   Úparse_primaryr¯   Ú
can_assignrC   r_   Ú__name__Úlower)r8   r   rß   rZ   r‡   rv   r�   s          r;   rŠ   zParser.parse_assign_targetÙ  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                 óF   — |r| j                  «       S | j                  «       S )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©r8   r—   s     r;   rœ   zParser.parse_expression   s"   € ñ
 Ø×&Ñ&Ó(Ð(Ø�}‰}‹Ðr=   c                 óÂ  — | j                   j                  j                  }| j                  «       }| j                   j	                  d«      r“| j                  «       }| j                   j	                  d«      r| j                  «       }nd }t        j                  ||||¬«      }| j                   j                  j                  }| j                   j	                  d«      rŒ“|S )Nr˜   rš   rd   )r/   rB   r?   r  r   r  r   ÚCondExpr)r8   r?   Úexpr1Úexpr2Úexpr3s        r;   r  zParser.parse_condexpr	  sª   € Ø—‘×$Ñ$×+Ñ+ˆØ—‘“ˆð �k‰k×!Ñ! )Ô,Ø—M‘M“OˆEØ�{‰{×"Ñ" ;Ô/Ø×+Ñ+Ó-‘à�Ü—N‘N 5¨%°¸vÔFˆEØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ! )Õ,ð ˆr=   c                 ód  — | j                   j                  j                  }| j                  «       }| j                   j	                  d«      rd| j                  «       }t        j                  |||¬«      }| j                   j                  j                  }| j                   j	                  d«      rŒd|S )Núname:orrd   )r/   rB   r?   Ú	parse_andr   r   ÚOr©r8   r?   ÚleftÚrights       r;   r  zParser.parse_or  sƒ   € Ø—‘×$Ñ$×+Ñ+ˆØ�~‰~ÓˆØ�k‰k×!Ñ! )Ô,Ø—N‘NÓ$ˆEÜ—8‘8˜D %°Ô7ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ! )Õ,ð ˆr=   c                 ód  — | j                   j                  j                  }| j                  «       }| j                   j	                  d«      rd| j                  «       }t        j                  |||¬«      }| j                   j                  j                  }| j                   j	                  d«      rŒd|S )Núname:andrd   )r/   rB   r?   Ú	parse_notr   r   ÚAndr  s       r;   r  zParser.parse_and!  sƒ   € Ø—‘×$Ñ$×+Ñ+ˆØ�~‰~ÓˆØ�k‰k×!Ñ! *Ô-Ø—N‘NÓ$ˆEÜ—9‘9˜T 5°Ô8ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ! *Õ-ð ˆr=   c                 óô   — | j                   j                  j                  d«      rDt        | j                   «      j                  }t        j                  | j                  «       |¬«      S | j                  «       S )Núname:notrd   )	r/   rB   rŸ   r‚   r?   r   ÚNotr  Úparse_compare)r8   r?   s     r;   r  zParser.parse_not*  sU   € Ø�;‰;×Ñ×#Ñ# JÔ/Ü˜$Ÿ+™+Ó&×-Ñ-ˆFÜ—9‘9˜TŸ^™^Ó-°fÔ=Ð=Ø×!Ñ!Ó#Ð#r=   c                 ó   — | j                   j                  j                  }| j                  «       }g }	 | j                   j                  j                  }|t
        v rIt        | j                   «       |j                  t        j                  || j                  «       «      «       ní| j                   j                  d«      r4|j                  t        j                  d| j                  «       «      «       nž| j                   j                  j                  d«      rx| j                   j                  «       j                  d«      rO| j                   j                  d«       |j                  t        j                  d| j                  «       «      «       nn"| j                   j                  j                  }�Œ€|s|S t        j                  |||¬«      S )Nr•   Úinr!  rØ   Únotinrd   )r/   rB   r?   Úparse_math1r_   Ú_compare_operatorsr‚   rM   r   ÚOperandr   rŸ   rÓ   rÕ   ÚCompare)r8   r?   r�   ÚopsÚ
token_types        r;   r#  zParser.parse_compare0  sL  € Ø—‘×$Ñ$×+Ñ+ˆØ×ÑÓ!ˆØˆØØŸ™×,Ñ,×1Ñ1ˆJØÔ/Ñ/Ü�T—[‘[Ô!Ø—
‘
œ5Ÿ=™=¨°T×5EÑ5EÓ5GÓHÕIØ—‘×$Ñ$ YÔ/Ø—
‘
œ5Ÿ=™=¨¨t×/?Ñ/?Ó/AÓBÕCØ—‘×$Ñ$×)Ñ)¨*Ô5¸$¿+¹+×:JÑ:JÓ:L×:QÑ:QØô;ð —‘× Ñ  Ô#Ø—
‘
œ5Ÿ=™=¨°$×2BÑ2BÓ2DÓEÕFàØ—[‘[×(Ñ(×/Ñ/ˆFñ ñ ØˆKÜ�}‰}˜T 3¨vÔ6Ð6r=   c                 óÞ  — | j                   j                  j                  }| j                  «       }| j                   j                  j                  dv ršt
        | j                   j                  j                     }t        | j                   «       | j                  «       } ||||¬«      }| j                   j                  j                  }| j                   j                  j                  dv rŒš|S )N)r   r   rd   )r/   rB   r?   Úparse_concatr_   r$   r‚   ©r8   r?   r  Úclsr  s        r;   r'  zParser.parse_math1G  sµ   € Ø—‘×$Ñ$×+Ñ+ˆØ× Ñ Ó"ˆØ�k‰k×!Ñ!×&Ñ&¨.Ñ8Ü˜dŸk™k×1Ñ1×6Ñ6Ñ7ˆCÜ�—‘ÔØ×%Ñ%Ó'ˆEÙ�t˜U¨6Ô2ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ!×&Ñ&¨.Ò8ð ˆr=   c                 ó®  — | j                   j                  j                  }| j                  «       g}| j                   j                  j                  dk(  rXt        | j                   «       |j                  | j                  «       «       | j                   j                  j                  dk(  rŒXt        |«      dk(  r|d   S t        j                  ||¬«      S )NÚtilder   r   rd   )
r/   rB   r?   Úparse_math2r_   r‚   rM   Úlenr   ÚConcat)r8   r?   rð   s      r;   r.  zParser.parse_concatR  s¢   € Ø—‘×$Ñ$×+Ñ+ˆØ× Ñ Ó"Ð#ˆØ�k‰k×!Ñ!×&Ñ&¨'Ò1Ü�—‘ÔØ�K‰K˜×(Ñ(Ó*Ô+ð �k‰k×!Ñ!×&Ñ&¨'Ó1ô ˆt‹9˜Š>Ø˜‘7ˆNÜ�|‰|˜D¨Ô0Ð0r=   c                 óÞ  — | j                   j                  j                  }| j                  «       }| j                   j                  j                  dv ršt
        | j                   j                  j                     }t        | j                   «       | j                  «       } ||||¬«      }| j                   j                  j                  }| j                   j                  j                  dv rŒš|S )N)r    r!   r"   r#   rd   )r/   rB   r?   Ú	parse_powr_   r$   r‚   r/  s        r;   r3  zParser.parse_math2\  s³   € Ø—‘×$Ñ$×+Ñ+ˆØ�~‰~ÓˆØ�k‰k×!Ñ!×&Ñ&Ð*KÑKÜ˜dŸk™k×1Ñ1×6Ñ6Ñ7ˆCÜ�—‘ÔØ—N‘NÓ$ˆEÙ�t˜U¨6Ô2ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð �k‰k×!Ñ!×&Ñ&Ð*KÒKð ˆr=   c                 ó®  — | j                   j                  j                  }| j                  «       }| j                   j                  j                  dk(  r�t        | j                   «       | j                  «       }t        j                  |||¬«      }| j                   j                  j                  }| j                   j                  j                  dk(  rŒ�|S )NÚpowrd   )r/   rB   r?   Úparse_unaryr_   r‚   r   ÚPowr  s       r;   r7  zParser.parse_powg  sŸ   € Ø—‘×$Ñ$×+Ñ+ˆØ×ÑÓ!ˆØ�k‰k×!Ñ!×&Ñ&¨%Ò/Ü�—‘ÔØ×$Ñ$Ó&ˆEÜ—9‘9˜T 5°Ô8ˆDØ—[‘[×(Ñ(×/Ñ/ˆFð	 �k‰k×!Ñ!×&Ñ&¨%Ó/ð
 ˆr=   Úwith_filterc                 óò  — | j                   j                  j                  }| j                   j                  j                  }|dk(  r<t	        | j                   «       t        j                  | j                  d«      |¬«      }nQ|dk(  r<t	        | j                   «       t        j                  | j                  d«      |¬«      }n| j                  «       }| j                  |«      }|r| j                  |«      }|S )Nr   Frd   r   )r/   rB   r_   r?   r‚   r   ÚNegr:  ÚPosr  Úparse_postfixÚparse_filter_expr)r8   r<  r,  r?   r©   s        r;   r:  z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                 óÈ  — | j                   j                  }|j                  dk(  �r>t        | j                   «       |j                  dv r/t        j                  |j                  dv |j                  ¬«      }|S |j                  dv r#t        j                  d|j                  ¬«      }|S |r‹| j                   j                  j                  dk(  rht        | j                   «       | j                   j                  d«      }t        j                  |j                  |j                  |j                  ¬«      }|S t        j                  |j                  d|j                  ¬«      }|S |j                  d	k(  rát        | j                   «       |j                  g}|j                  }| j                   j                  j                  d	k(  rh|j                  | j                   j                  j                  «       t        | j                   «       | j                   j                  j                  d	k(  rŒht        j                  d
j                  |«      |¬«      }|S |j                  dv rBt        | j                   «       t        j                  |j                  |j                  ¬«      }|S |j                  dk(  rDt        | j                   «       | j                  d¬«      }| j                   j                  d«       |S |j                  dk(  r| j                  «       }|S |j                  dk(  r| j                  «       }|S | j!                  dt#        |«      ›�|j                  «       S )z€Parse a name or literal value. If ``with_namespace`` is enabled, also
        parse namespace attr refs, for use in assignments.r)   )ÚtrueÚfalseÚTrueÚFalse)rC  rE  rd   )ÚnoneÚNoneNÚdotÚloadÚstringÚ )ÚintegerÚfloatrï   T)Úexplicit_parenthesesr^   ÚlbracketÚlbracezunexpected )r/   rB   r_   r‚   ro   r   ÚConstr?   r€   ÚNSRefr  rM   rK   r‹   Ú
parse_listÚ
parse_dictrC   r   )r8   r‡   rv   r©   ÚattrÚbufr?   s          r;   r  z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  rO  c                 óv  ‡ ‡‡— ‰ j                   j                  j                  }|rdt        j                  fˆ ˆfd„}ndt        j                  fˆ ˆfd„}g }d}		 |r‰ j                   j                  d«       ‰ j                  |«      rn^|j                   |«       «       ‰ j                   j                  j                  dk(  rd}	nn!‰ j                   j                  j                  }Œ�|	s:|r|d   S |s1‰ j                  dt        ‰ j                   j                  «      ›�«       t        j                  |d	|¬
«      S )aç  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                  ó(   •— ‰ j                  ‰¬«      S )Nr†   )r  )r8   r‡   s   €€r;   r4   z!Parser.parse_tuple.<locals>.parseË  s   ø€ Ø×)Ñ)¸Ð)ÓHÐHr=   c                  ó(   •— ‰ j                  ‰¬«      S )Nr¤   )rœ   r  s   €€r;   r4   z!Parser.parse_tuple.<locals>.parseÐ  s   ø€ Ø×,Ñ,¸=Ð,ÓIÐIr=   FTr¬   r   zExpected an expression, got rJ  rd   )r/   rB   r?   r   ÚExprr€   ra   rM   r_   rC   r   ÚTuple)
r8   r  r—   rZ   rO  r‡   r?   r4   rð   Úis_tuples
   ` `  `    r;   r‹   zParser.parse_tuple­  s  ú€ ð6 —‘×$Ñ$×+Ñ+ˆÙðIœ5Ÿ:™:÷ Ið
Jœ5Ÿ:™:ö Jð $&ˆØˆàÙØ—‘×"Ñ" 7Ô+Ø× Ñ  Ô1ØØ�K‰K™›Ô Ø�{‰{×"Ñ"×'Ñ'¨7Ò2Ø‘àØ—[‘[×(Ñ(×/Ñ/ˆFð ñ ÙØ˜A‘w�ñ (Ø—	‘	ðÜ*¨4¯;©;×+>Ñ+>Ó?ÐBðDôô
 �{‰{˜4 °Ô7Ð7r=   c                 ó  — | j                   j                  d«      }g }| j                   j                  j                  dk7  r„|r| j                   j                  d«       | j                   j                  j                  dk(  rnC|j	                  | j                  «       «       | j                   j                  j                  dk7  rŒ„| j                   j                  d«       t        j                  ||j                  ¬«      S )NrP  Úrbracketr¬   rd   )	r/   r€   rB   r_   rM   rœ   r   ÚListr?   )r8   rv   Úitemss      r;   rT  zParser.parse_listò  s»   € Ø—‘×"Ñ" :Ó.ˆØ$&ˆØ�k‰k×!Ñ!×&Ñ&¨*Ò4ÙØ—‘×"Ñ" 7Ô+Ø�{‰{×"Ñ"×'Ñ'¨:Ò5ØØ�L‰L˜×.Ñ.Ó0Ô1ð �k‰k×!Ñ!×&Ñ&¨*Ó4ð 	�‰×Ñ˜:Ô&Ü�z‰z˜%¨¯©Ô5Ð5r=   c                 óœ  — | j                   j                  d«      }g }| j                   j                  j                  dk7  rÑ|r| j                   j                  d«       | j                   j                  j                  dk(  rn�| j	                  «       }| j                   j                  d«       | j	                  «       }|j                  t        j                  |||j                  ¬«      «       | j                   j                  j                  dk7  rŒÑ| j                   j                  d«       t        j                  ||j                  ¬«      S )NrQ  Úrbracer¬   r}   rd   )
r/   r€   rB   r_   rœ   rM   r   ÚPairr?   ÚDict)r8   rv   ra  Úkeyro   s        r;   rU  z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                 ó²   — 	 | j                   j                  j                  }|dk(  s|dk(  r| j                  |«      }n|dk(  r| j	                  |«      }n	 |S ŒW)NrI  rP  rï   )r/   rB   r_   Úparse_subscriptÚ
parse_call©r8   r©   r,  s      r;   r@  zParser.parse_postfix  s^   € ØØŸ™×,Ñ,×1Ñ1ˆJØ˜UÒ" j°JÒ&>Ø×+Ñ+¨DÓ1‘ð ˜xÒ'Ø—‘ tÓ,‘àØˆð r=   c                 ó  — 	 | j                   j                  j                  }|dk(  r| j                  |«      }nT|dk(  r5| j                   j                  j                  dk(  r| j                  |«      }n|dk(  r| j                  |«      }n	 |S ŒŒ)NÚpiper)   Úisrï   )r/   rB   r_   r�   ro   Ú
parse_testri  rj  s      r;   rA  zParser.parse_filter_expr  s„   € ØØŸ™×,Ñ,×1Ñ1ˆJØ˜VÒ#Ø×(Ñ(¨Ó.‘Ø˜vÒ%¨$¯+©+×*=Ñ*=×*CÑ*CÀtÒ*KØ—‘ tÓ,‘ð ˜xÒ'Ø—‘ tÓ,‘àØˆð r=   c                 óT  — t        | j                  «      }|j                  dk(  rà| j                  j                  }t        | j                  «       |j                  dk(  r-t	        j
                  ||j                  d|j                  ¬«      S |j                  dk7  r| j                  d|j                  «       t	        j                  |j                  |j                  ¬«      }t	        j                  ||d|j                  ¬«      S |j                  dk(  rùg }| j                  j                  j                  dk7  r`|r| j                  j                  d	«       |j                  | j                  «       «       | j                  j                  j                  dk7  rŒ`| j                  j                  d«       t        |«      d
k(  r|d   }n"t	        j                  |d|j                  ¬«      }t	        j                  ||d|j                  ¬«      S | j                  d|j                  «       y )NrI  r)   rJ  rd   rM  zexpected name or numberrP  r_  r¬   r   r   zexpected subscript expression)r‚   r/   r_   rB   r   ÚGetattrro   r?   rC   rR  ÚGetitemr€   rM   Úparse_subscribedr4  r\  )r8   r©   rv   Ú
attr_tokenrò   rð   s         r;   rh  zParser.parse_subscript)  sš  € ô �T—[‘[Ó!ˆð �:‰:˜ÒØŸ™×,Ñ,ˆJÜ�—‘ÔØ�‰ &Ò(Ü—}‘}Ø˜*×*Ñ*¨F¸5¿<¹<ôð ð —‘ IÒ-Ø—	‘	Ð3°Z×5FÑ5FÔGÜ—+‘+˜j×.Ñ.°z×7HÑ7HÔIˆCÜ—=‘=  s¨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�Ü—=‘=  s¨F¸5¿<¹<ÔHÐHØ�	‰	Ð1°5·<±<Õ@r=   c                 óÈ  — | j                   j                  j                  }| j                   j                  j                  dk(  rt	        | j                   «       d g}nM| j                  «       }| j                   j                  j                  dk7  r|S t	        | j                   «       |g}| j                   j                  j                  dk(  r|j                  d «       nS| j                   j                  j                  dvr |j                  | j                  «       «       n|j                  d «       | j                   j                  j                  dk(  rit	        | j                   «       | j                   j                  j                  dvr |j                  | j                  «       «       n#|j                  d «       n|j                  d «       t        j                  |d|iŽS )Nr}   )r_  r¬   r?   )	r/   rB   r?   r_   r‚   rœ   rM   r   ÚSlice)r8   r?   rð   r©   s       r;   rr  z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                 ó0  ‡ ‡	— ‰ j                   j                  d«      Š	g }g }d }d }d}dt        dd fˆ ˆ	fd„}‰ j                   j                  j                  dk7  �r|r@‰ j                   j                  d«       ‰ j                   j                  j                  dk(  r�nÚ‰ j                   j                  j                  dk(  r7 ||d u xr |d u «       t        ‰ j                   «       ‰ j                  «       }�nY‰ j                   j                  j                  d	k(  r1 ||d u «       t        ‰ j                   «       ‰ j                  «       }�n‰ j                   j                  j                  d
k(  r®‰ j                   j                  «       j                  dk(  r‡ ||d u «       ‰ j                   j                  j                  }‰ j                   j                  d«       ‰ j                  «       }|j                  t        j                  |||j                  ¬«      «       n4 ||d u xr	 |d u xr | «       |j                  ‰ j                  «       «       d}‰ j                   j                  j                  dk7  r�Œ‰ j                   j                  d«       ||||fS )Nrï   Fr�   r,   c                 óD   •— | s‰j                  d‰j                  «       y y )Nz+invalid syntax for function call expression)rC   r?   )r�   r8   rv   s    €€r;   Úensurez&Parser.parse_call_args.<locals>.ensurew  s   ø€ ÙØ—	‘	ÐGÈÏÉÕVð r=   r^   r¬   r    r9  r)   rˆ   rØ   rd   T)r/   r€   ré   rB   r_   r‚   rœ   rÓ   ro   rÕ   rM   r   rµ   r?   )
r8   rð   ÚkwargsÚdyn_argsÚ
dyn_kwargsÚrequire_commarx  rf  ro   rv   s
   `        @r;   Úparse_call_argszParser.parse_call_argsh  s+  ù€ ð —‘×"Ñ" 8Ó,ˆØˆØˆØˆØˆ
Øˆð	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¤%§-¡-°°UÀ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Ô$Ø�V˜X zÐ1Ð1r=   c                 ó¢   — | j                   j                  }| j                  «       \  }}}}t        j                  ||||||j
                  ¬«      S rÌ   )r/   rB   r}  r   rö   r?   )r8   r©   rv   rð   ry  rz  r{  s          r;   ri  zParser.parse_call   sG   € ð —‘×#Ñ#ˆØ-1×-AÑ-AÓ-CÑ*ˆˆf�h 
Ü�z‰z˜$  f¨h¸
È5Ï<É<ÔXÐXr=   rù   c           	      ó   — | j                   j                  j                  dk(  s|�rW|st        | j                   «       | j                   j	                  d«      }|j
                  }| j                   j                  j                  dk(  rdt        | j                   «       |d| j                   j	                  d«      j
                  z   z  }| j                   j                  j                  dk(  rŒd| j                   j                  j                  dk(  r| j                  «       \  }}}}ng }g }d x}}t        j                  |||||||j                  ¬«      }d}| j                   j                  j                  dk(  r�ŒS|r�ŒW|S )Nrl  r)   rI  rG   rï   rd   F)
r/   rB   r_   r‚   r€   ro   r}  r   ÚFilterr?   )	r8   r©   rù   rv   r)   rð   ry  rz  r{  s	            r;   r�   zParser.parse_filter§  s<  € ð �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��f˜h©
à�Ø�Ø(,Ð,�˜:Ü—<‘<Ø�d˜D &¨(°JÀuÇ|Á|ôˆDð !ˆLð# �k‰k×!Ñ!×&Ñ&¨&Ô0³Lð$ ˆr=   c           	      ób  — t        | j                  «      }| j                  j                  j                  d«      rt        | j                  «       d}nd}| j                  j	                  d«      j
                  }| j                  j                  j                  dk(  rdt        | j                  «       |d| j                  j	                  d«      j
                  z   z  }| j                  j                  j                  dk(  rŒdd x}}g }| j                  j                  j                  dk(  r| j                  «       \  }}}}n¦| j                  j                  j                  dv r‚| j                  j                  j                  d	d
d«      s[| j                  j                  j                  d«      r| j                  d«       | j                  «       }	| j                  |	«      }	|	g}ng }t        j                  |||||||j                  ¬«      }|r!t        j                  ||j                  ¬«      }|S )Nr!  TFr)   rI  rG   rï   >   r)   rN  rQ  rï   rK  rM  rP  rš   r  r  zname:isz'You cannot chain multiple tests with isrd   )r‚   r/   rB   rŸ   r€   ro   r_   r}  r`   rC   r  r@  r   ÚTestr?   r"  )
r8   r©   rv   Únegatedr)   rz  r{  ry  rð   Úarg_nodes
             r;   rn  z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Ø�{‰{×"Ñ"×'Ñ'¨	Ô2Ø—	‘	ÐCÔDØ×)Ñ)Ó+ˆHØ×)Ñ)¨(Ó3ˆHØ�:‰DàˆDÜ�z‰zØ�$˜˜f h°
À5Ç<Á<ô
ˆñ Ü—9‘9˜T¨%¯,©,Ô7ˆDØˆr=   c                 óˆ  ‡‡— g Šg Š‰j                   }|�| j                  j                  |«       dˆˆfd„}	 | j                  �r¸| j                  j                  }|j                  dk(  rT|j
                  r1 |t        j                  |j
                  |j                  ¬«      «       t        | j                  «       �n1|j                  dk(  rIt        | j                  «        || j                  d¬«      «       | j                  j                  d«       nÙ|j                  dk(  r¿ |«        t        | j                  «       |�B | j                  j                  j                  |Ž r‰|�| j                  j                  «        S S | j                  «       }t        |t         «      r‰j#                  |«       n‰j                  |«       | j                  j                  d	«       nt%        d
«      ‚| j                  r�Œ¸ |«        |�| j                  j                  «        ‰S # |�| j                  j                  «        w w xY w)Nc                  ó†   •— ‰r>‰d   j                   } ‰j                  t        j                  ‰d d  | ¬«      «       ‰d d …= y y )Nr   rd   )r?   rM   r   rÇ   )r?   r’   Údata_buffers    €€r;   Ú
flush_dataz#Parser.subparse.<locals>.flush_dataî  s<   ø€ ÙØ$ Q™×.Ñ.�Ø—‘œEŸL™L¨±Q¨ÀÔGÔHØ¢‘Nð r=   r¿   rd   Úvariable_beginTr¤   r\   Úblock_beginr]   zinternal parsing error)r,   N)rM   r7   r/   rB   r_   ro   r   r¾   r?   r‚   r‹   r€   r`   rr   rz   r½   rW   ÚextendÚAssertionError)r8   rU   Úadd_datarˆ  rv   ri   r’   r‡  s         @@r;   r�   z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Ü˜Ÿ™Ô%Ø!Ð-Ð2N°$·+±+×2EÑ2E×2NÑ2NØ#ñ3ð  $ð Ð%Ø×%Ñ%×)Ñ)Õ+ð &ð ×-Ñ-Ó/�BÜ! "¤dÔ+ØŸ™ B�àŸ™ BœØ—K‘K×&Ñ& {Õ3ä(Ð)AÓBÐBð1 —+”+ñ4 ŒLàÐ%Ø×%Ñ%×)Ñ)Ô+Øˆøð Ð%Ø×%Ñ%×)Ñ)Õ+ð &ús   ¸D/H" ÆA6H" Ç=H" È"Ic                 ó†   — t        j                  | j                  «       d¬«      }|j                  | j                  «       |S )z0Parse the whole template into a `Template` node.r   rd   )r   ÚTemplater�   Úset_environmentr'   )r8   rƒ   s     r;   r4   zParser.parse  s1   € ä—‘ §¡£¸Ô:ˆØ×Ñ˜t×/Ñ/Ô0Øˆr=   )NNNr¼   )NN)F)..)TFNF)T)FTNFF)`r
  Ú
__module__Ú__qualname__Ú__doc__ÚstrÚtÚOptionalr<   r   ÚintÚTyperC   r`  r\  rR   rT   rY   ré   ra   r   rg   rj   ÚUnionrh   rz   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õ   rs   rú   rt   rü   rý   rÇ   rÿ   ÚtypingÚoverloadr  rŠ   rS  r[  rœ   r  r  r  r  r#  r'  r.  r3  r7  r:  r  r‹   rT  re  rU  r@  rA  rp  rq  rh  rr  rµ   r}  rö   ri  r�   rn  r�   r�  r4   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•  rL  r   Ú
exceptionsr   r   Úlexerr   r   ÚTYPE_CHECKINGÚtyping_extensionsÚter'   r	   ÚTypeVarrà   rÙ   r
   rü   rõ   r   Ú	frozensetrp   r(  ÚAddÚSubÚMulÚDivÚFloorDivÚModr$   re  r”  r˜  r[  Ú__annotations__r&   r  r=   r;   Ú<module>rª     sâ   ðÚ >ã Û å Ý .Ý +Ý !Ý &à‡?‚?Û"å(à�—‘Ð+¨U¯\©\¸5¿=¹=ÓI€ØˆQ�Y‰Y�| U§[¡[°%·/±/ÓB€
áòóÐ ñ  ÒGÓHÐ ð �9‰9Ø�9‰9Ø�9‰9Ø�9‰9Ø—‘Ø�9‰9ñ0€ˆQ�V‰V�C˜Ÿ™ §
¡
Ñ+Ð+Ñ,ó ÷iò ir=   