§
    qŠtj“! ã                   óÐ  — d 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 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 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 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)        dej*        f         ¬¦  «        Z+dddddd d!d"d#œZ,d$e+d%e+fd&„Z-d'e.d%ej)        d(ej/        d)gdf         fd*„Z0d'e.d%ej)        d(ej1        d)gdf         fd+„Z2	 	 	 dHd.ej3        d/d0d1ej4        e.         d2ej4        e.         d3ej4        ej5                 d4e6d5e6d%ej4        e.         fd6„Z7d7ej*        d%e6fd8„Z8d9ej9        ej:                 d:ej9        e.         d%ej;        e.         fd;„Z< G d<„ d=¦  «        Z= G d>„ d)¦  «        Z> G d?„ d@e?¦  «        Z@ G dA„ dBe"¦  «        ZA G dC„ dDe"¦  «        ZB G dE„ dFeC¦  «        ZD G dG„ d(e"¦  «        ZEdS )Iz0Compiles nodes from the parser into Python code.é    N)Úcontextmanager)Úupdate_wrapper)ÚStringIO)Úchain)Ú	iskeyword)Úescape)ÚMarkupé   )Únodes)ÚTemplateAssertionError)ÚSymbols)ÚVAR_LOAD_ALIAS)ÚVAR_LOAD_PARAMETER)ÚVAR_LOAD_RESOLVE)ÚVAR_LOAD_UNDEFINED)ÚEvalContext)Ú	Optimizer)Ú_PassArg)Úconcat)ÚNodeVisitor)ÚEnvironmentÚF.)Úboundz==z!=ú>z>=ú<z<=Úinznot in)ÚeqÚneÚgtÚgteqÚltÚlteqr   ÚnotinÚfÚreturnc           
      ó€   ‡ — dddt           j        dddt          j        dt          j        f
ˆ fd„}t	          |‰ ¦  «        S )	NÚselfÚCodeGeneratorÚnodeÚframeÚFrameÚkwargsr%   c                 ó¸   •— | j         �H|j        j        s<| j                              ||j        ¦  «        }||k    r|                      ||¦  «        S  ‰| ||fi |¤ŽS ©N)Ú	optimizerÚeval_ctxÚvolatileÚvisit)r'   r)   r*   r,   Únew_noder$   s        €úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/jinja2/compiler.pyÚnew_funczoptimizeconst.<locals>.new_func.   sk   ø€ ð Œ>Ð%¨e¬nÔ.EÐ%Ø”~×+Ò+¨D°%´.ÑAÔAˆHà˜4ÒÐØ—z’z (¨EÑ2Ô2Ð2àˆq��t˜UÐ-Ð- fÐ-Ð-Ð-ó    )r   ÚExprÚtÚAnyr   )r$   r5   s   ` r4   Úoptimizeconstr:   -   sa   ø€ ð
.Øð
.Ý%*¤Zð
.Ø8?ð
.ÝKLÌ5ð
.å	
Œð
.ð 
.ð 
.ð 
.ð 
.ð 
.õ ˜( AÑ&Ô&Ð&r6   Úopr(   r+   c           	      ó\   ‡ — t           dddt          j        dt          dd fˆ fd„¦   «         }|S )Nr'   r(   r)   r*   r%   c                 óø  •— | j         j        rs‰| j         j        v re|                      d‰›d�¦  «         |                      |j        |¦  «         |                      d¦  «         |                      |j        |¦  «         nd|                      d¦  «         |                      |j        |¦  «         |                      d‰› d�¦  «         |                      |j        |¦  «         |                      d¦  «         d S )Nz environment.call_binop(context, ú, ú(ú ú))ÚenvironmentÚ	sandboxedÚintercepted_binopsÚwriter2   ÚleftÚright©r'   r)   r*   r;   s      €r4   Úvisitorz_make_binop.<locals>.visitor>   së   ø€ ð ÔÔ&ð	*Ø+-°Ô1AÔ1TÐ+TÐ+Tà�JŠJÐB¸"ÐBÐBÐBÑCÔCÐCØ�JŠJ�t”y %Ñ(Ô(Ð(Ø�JŠJ�tÑÔÐØ�JŠJ�t”z 5Ñ)Ô)Ð)Ð)à�JŠJ�s‰OŒOˆOØ�JŠJ�t”y %Ñ(Ô(Ð(Ø�JŠJ�y˜2�y�y�yÑ!Ô!Ð!Ø�JŠJ�t”z 5Ñ)Ô)Ð)à�
Š
�3‰Œˆˆˆr6   )r:   r   ÚBinExprr+   ©r;   rI   s   ` r4   Ú_make_binoprL   =   sP   ø€ Ýð�oð ­U¬]ð Å5ð ÈTð ð ð ð ð ñ „]ðð  €Nr6   c           	      ó\   ‡ — t           dddt          j        dt          dd fˆ fd„¦   «         }|S )Nr'   r(   r)   r*   r%   c                 ó6  •— | j         j        rC‰| j         j        v r5|                      d‰›d�¦  «         |                      |j        |¦  «         n3|                      d‰z   ¦  «         |                      |j        |¦  «         |                      d¦  «         d S )Nzenvironment.call_unop(context, r>   r?   rA   )rB   rC   Úintercepted_unopsrE   r2   r)   rH   s      €r4   rI   z_make_unop.<locals>.visitorU   sš   ø€ ð ÔÔ&ð	)Ø+-°Ô1AÔ1SÐ+SÐ+Sà�JŠJÐA¸ÐAÐAÐAÑBÔBÐBØ�JŠJ�t”y %Ñ(Ô(Ð(Ð(à�JŠJ�s˜R‘xÑ Ô Ð Ø�JŠJ�t”y %Ñ(Ô(Ð(à�
Š
�3‰Œˆˆˆr6   )r:   r   Ú	UnaryExprr+   rK   s   ` r4   Ú
_make_unoprQ   R   sR   ø€ õ ð
�oð 
­U¬_ð 
ÅUð 
Ètð 
ð 
ð 
ð 
ð 
ñ „]ð
ð €Nr6   FTr)   rB   r   ÚnameÚfilenameÚstreamÚ
defer_initÚ	optimizedc                 óì   — t          | t          j        ¦  «        st          d¦  «        ‚|                     ||||||¦  «        }|                     | ¦  «         |€|j                             ¦   «         S dS )z+Generate the python source for a node tree.z Can't compile non template nodesN)Ú
isinstancer   ÚTemplateÚ	TypeErrorÚcode_generator_classr2   rT   Úgetvalue)r)   rB   rR   rS   rT   rU   rV   Ú	generators           r4   Úgenerater^   e   s|   € õ �d�EœNÑ+Ô+ð <ÝÐ:Ñ;Ô;Ð;à×0Ò0Ø�T˜8 V¨Z¸ñô €Ið ‡O‚O�DÑÔÐà€~ØÔ×(Ò(Ñ*Ô*Ð*àˆ4r6   Úvaluec                 ó²  — | �| t           u s	| t          u rdS t          | ¦  «        t          t          t
          t          t          t          t          hv rdS t          | ¦  «        t          t          t          t          hv rt          d„ | D ¦   «         ¦  «        S t          | ¦  «        t          u r+t          d„ |                      ¦   «         D ¦   «         ¦  «        S dS )z)Does the node have a safe representation?NTc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r.   ©Úhas_safe_repr)Ú.0Úvs     r4   ú	<genexpr>z has_safe_repr.<locals>.<genexpr>†   s*   è è € Ð3Ð3¨•= Ñ#Ô#Ð3Ð3Ð3Ð3Ð3Ð3r6   c              3   óX   K  — | ]%\  }}t          |¦  «        ot          |¦  «        V — Œ&d S r.   rb   ©rd   Úkre   s      r4   rf   z has_safe_repr.<locals>.<genexpr>‰   s;   è è € ÐSÐS¹T¸QÀ•= Ñ#Ô#Ð8­°aÑ(8Ô(8ÐSÐSÐSÐSÐSÐSr6   F)ÚNotImplementedÚEllipsisÚtypeÚboolÚintÚfloatÚcomplexÚrangeÚstrr	   ÚtupleÚlistÚsetÚ	frozensetÚallÚdictÚitems©r_   s    r4   rc   rc   }   s·   € à€}˜¥Ð/Ð/°5½HÐ3DÐ3DØˆtåˆE�{„{•t�S¥%­µ%½½fÐEÐEÐEØˆtåˆE�{„{•u�d¥C­Ð3Ð3Ð3ÝÐ3Ð3¨UÐ3Ñ3Ô3Ñ3Ô3Ð3åˆE�{„{•dÐÐÝÐSÐSÀUÇ[Â[Á]Ä]ÐSÑSÔSÑSÔSÐSàˆ5r6   r   Únamesc                 ó†   — t          |¦  «        }	 | D ]}|                     |¦  «         Œn# t          $ r Y nw xY w|j        S )z”Check if the names passed are accessed undeclared.  The return value
    is a set of all the undeclared names from the sequence of names found.
    )ÚUndeclaredNameVisitorr2   ÚVisitorExitÚ
undeclared)r   r{   rI   r)   s       r4   Úfind_undeclaredr€   Ž   sh   € õ $ EÑ*Ô*€GðØð 	 ð 	 ˆDØ�MŠM˜$ÑÔÐÐð	 øåð ð ð ØˆðøøøàÔÐs   ‘, ¬
9¸9c                   óL   — e Zd Zdej        ej        ej        f         ddfd„ZdS )ÚMacroRefr)   r%   Nc                 ó>   — || _         d| _        d| _        d| _        d S ©NF)r)   Úaccesses_callerÚaccesses_kwargsÚaccesses_varargs©r'   r)   s     r4   Ú__init__zMacroRef.__init__ž   s'   € ØˆŒ	Ø$ˆÔØ$ˆÔØ %ˆÔÐÐr6   )	Ú__name__Ú
__module__Ú__qualname__r8   ÚUnionr   ÚMacroÚ	CallBlockr‰   © r6   r4   r‚   r‚   �   sF   € € € € € ð&˜QœW U¤[°%´/Ð%AÔBð &Àtð &ð &ð &ð &ð &ð &r6   r‚   c            	       ó‚   — e Zd ZdZ	 	 ddedej        d          dej        e         ddfd„Zdd	„Z	dde
dd fd„Zdd„Ze	ZdS )r+   z&Holds compile time information for us.Nr0   ÚparentÚlevelr%   c                 ó@  — || _         || _        |€+t          |¬¦  «        | _        d| _        d | _        d | _        n?t          |j        |¬¦  «        | _        |j        | _        |j        | _        |j        | _        d| _        d| _        d| _	        d| _
        d| _        d S )N©r“   F)r0   r’   r   ÚsymbolsÚrequire_output_checkÚbufferÚblockÚtoplevelÚ	rootlevelÚ
loop_frameÚblock_frameÚ
soft_frame)r'   r0   r’   r“   s       r4   r‰   zFrame.__init__¨   s®   € ð !ˆŒð ˆŒàˆ>Ý"¨Ð/Ñ/Ô/ˆDŒLð ).ˆDÔ%ð ,0ˆDŒKð +/ˆDŒJˆJõ # 6¤>¸Ð?Ñ?Ô?ˆDŒLØ(.Ô(CˆDÔ%Ø œ-ˆDŒKØœˆDŒJð ˆŒð
 ˆŒð  ˆŒØ ˆÔð
  ˆŒˆˆr6   úte.Selfc                 ó¾   — t                                | j        ¦  «        }|j                             | j        ¦  «         | j                             ¦   «         |_        |S )z!Create a copy of the current one.)ÚobjectÚ__new__Ú	__class__Ú__dict__Úupdater–   Úcopy©r'   Úrvs     r4   r¦   z
Frame.copyÛ   sG   € å�^Š^˜DœNÑ+Ô+ˆØ
Œ×Ò˜4œ=Ñ)Ô)Ð)Ø”\×&Ò&Ñ(Ô(ˆŒ
Øˆ	r6   FÚisolatedc                 óv   — |r#t          | j        | j        j        dz   ¬¦  «        S t          | j        | ¦  «        S )zReturn an inner frame.r
   r•   )r+   r0   r–   r“   )r'   r©   s     r4   ÚinnerzFrame.innerâ   s<   € àð 	FÝ˜œ¨d¬lÔ.@À1Ñ.DÐEÑEÔEÐEÝ�T”] DÑ)Ô)Ð)r6   c                 óJ   — |                       ¦   «         }d|_        d|_        |S )a&  Return a soft frame.  A soft frame may not be modified as
        standalone thing as it shares the resources with the frame it
        was created of, but it's not a rootlevel frame any longer.

        This is only used to implement if-statements and conditional
        expressions.
        FT)r¦   r›   rž   r§   s     r4   Úsoftz
Frame.softè   s$   € ð �YŠY‰[Œ[ˆØˆŒØˆŒØˆ	r6   )NN)r%   rŸ   ©F)rŠ   r‹   rŒ   Ú__doc__r   r8   ÚOptionalrn   r‰   r¦   rm   r«   r­   Ú__copy__r�   r6   r4   r+   r+   ¥   s¿   € € € € € Ø0Ð0ð
 '+Ø!%ð	1 ð 1 àð1 ð ”
˜7Ô#ð1 ð Œz˜#Œð	1 ð
 
ð1 ð 1 ð 1 ð 1 ðfð ð ð ð*ð *˜dð *¨wð *ð *ð *ð *ðð ð ð ð €H€H€Hr6   c                   ó   — e Zd ZdZdS )r~   z?Exception used by the `UndeclaredNameVisitor` to signal a stop.N©rŠ   r‹   rŒ   r¯   r�   r6   r4   r~   r~   ø   s   € € € € € ØIÐIÐIÐIr6   r~   c                   óh   — e Zd ZdZd	d„Zdej        ddfd„Zdej        ddfd„Z	dej
        ddfd„ZdS )
ÚDependencyFinderVisitorz.A visitor that collects filter and test calls.r%   Nc                 óR   — t          ¦   «         | _        t          ¦   «         | _        d S r.   )ru   ÚfiltersÚtests©r'   s    r4   r‰   z DependencyFinderVisitor.__init__ÿ   s   € Ý#&¡5¤5ˆŒÝ!$¡¤ˆŒ
ˆ
ˆ
r6   r)   c                 ón   — |                       |¦  «         | j                             |j        ¦  «         d S r.   )Úgeneric_visitr·   ÚaddrR   rˆ   s     r4   Úvisit_Filterz$DependencyFinderVisitor.visit_Filter  s4   € Ø×Ò˜4Ñ Ô Ð ØŒ×Ò˜œÑ#Ô#Ð#Ð#Ð#r6   c                 ón   — |                       |¦  «         | j                             |j        ¦  «         d S r.   )r»   r¸   r¼   rR   rˆ   s     r4   Ú
visit_Testz"DependencyFinderVisitor.visit_Test  s2   € Ø×Ò˜4Ñ Ô Ð ØŒ
�Š�t”yÑ!Ô!Ð!Ð!Ð!r6   c                 ó   — dS )zStop visiting at blocks.Nr�   rˆ   s     r4   Úvisit_Blockz#DependencyFinderVisitor.visit_Block  ó   € € € r6   ©r%   N)rŠ   r‹   rŒ   r¯   r‰   r   ÚFilterr½   ÚTestr¿   ÚBlockrÁ   r�   r6   r4   rµ   rµ   ü   sš   € € € € € Ø8Ð8ð'ð 'ð 'ð 'ð$ ¤ð $°$ð $ð $ð $ð $ð"˜uœzð "¨dð "ð "ð "ð "ð' ¤ð '°ð 'ð 'ð 'ð 'ð 'ð 'r6   rµ   c                   ól   — e Zd ZdZdej        e         ddfd„Zdej	        ddfd„Z
dej        ddfd„ZdS )	r}   z¡A visitor that checks if a name is accessed without being
    declared.  This is different from the frame visitor as it will
    not stop at closure frames.
    r{   r%   Nc                 óT   — t          |¦  «        | _        t          ¦   «         | _        d S r.   )ru   r{   r   )r'   r{   s     r4   r‰   zUndeclaredNameVisitor.__init__  s   € Ý˜‘Z”ZˆŒ
Ý&)¡e¤eˆŒˆˆr6   r)   c                 óô   — |j         dk    rM|j        | j        v r?| j                             |j        ¦  «         | j        | j        k    rt          ¦   «         ‚d S | j                             |j        ¦  «         d S )NÚload)ÚctxrR   r{   r   r¼   r~   Údiscardrˆ   s     r4   Ú
visit_Namez UndeclaredNameVisitor.visit_Name  sv   € ØŒ8�vÒÐ $¤)¨t¬zÐ"9Ð"9ØŒO×Ò ¤	Ñ*Ô*Ð*ØŒ $¤*Ò,Ð,Ý!‘m”mÐ#ð -Ð,ð ŒJ×Ò˜tœyÑ)Ô)Ð)Ð)Ð)r6   c                 ó   — dS )zStop visiting a blocks.Nr�   rˆ   s     r4   rÁ   z!UndeclaredNameVisitor.visit_Block!  rÂ   r6   )rŠ   r‹   rŒ   r¯   r8   ÚIterablerr   r‰   r   ÚNamerÍ   rÆ   rÁ   r�   r6   r4   r}   r}     sŽ   € € € € € ðð ð
,˜aœj¨œoð ,°$ð ,ð ,ð ,ð ,ð*˜uœzð *¨dð *ð *ð *ð *ð& ¤ð &°ð &ð &ð &ð &ð &ð &r6   r}   c                   ó   — e Zd ZdZdS )ÚCompilerExitz¼Raised if the compiler encountered a situation where it just
    doesn't make sense to further process the code.  Any block that
    raises such an exception is not further processed.
    Nr³   r�   r6   r4   rÒ   rÒ   %  s   € € € € € ðð ð ð r6   rÒ   c                   ó”  — e Zd ZU 	 	 	 d�dddej        e         dej        e         dej        ej                 d	ed
eddfd„Ze	defd„¦   «         Z
dededdfd„Zdefd„Zdeddfd„Z	 d‘dededdfd„Zd’d„Zd“deddfd„Zd”dedej        ej                 ddfd„Zdeddfd„Z	 d”dededej        ej                 ddfd„Zd ej        ej                 deddfd!„Zd"eddfd#„Z	 d•d"edej        ej                 d%eddfd&„Zd•dej        ej                 d%eddfd'„Z	 d”dej        ej        ej        ej         f         ded(ej        ej!        eej"        f                  ddfd)„Z#d ej        ej                 ddfd*„Z$deddfd+„Z%d‘ded,eddfd-„Z&d–d0ed1edefd2„Z'dedefd3„Z(dej        ej)        ej*        f         dedej+        ee,f         fd4„Z-d5e,deddfd6„Z.dej        defd7„Z/dedefd8„Z0d’d9„Z1deddfd:„Z2d’d;„Z3d<eddfd=„Z4d<eddfd>„Z5d’d?„Z6defd@„Z7defdA„Z8dedefdB„Z9d<edefdC„Z:d’dD„Z;deddfdE„Z<	 d”dej=        dej        e         ddfdF„Z>dej?        deddfdG„Z@dejA        deddfdH„ZBdejC        deddfdI„ZDdej        ejE        ejF        f         deddfdJ„ZGdejE        deddfdK„ZHdejF        deddfdL„ZIdejJ        deddfdM„ZKdejL        deddfdN„ZMdej)        deddfdO„ZNdej*        deddfdP„ZOdejP        deddfdQ„ZQdejR        deddfdR„ZSdejT        deddfdS„ZU G dT„ dUejV        ¦  «        ZWeXdVej"        dej"        fdW„¦   «         ZYdZZej        eW         e[dX<   deWfdY„Z\dZej        ej"                 defd[„Z]dej^        ded\eWdefd]„Z_dej^        ded\eWddfd^„Z`dej^        ded\eWddfd_„Zadejb        deddfd`„Zcdejd        deddfda„Zedejf        deddfdb„Zgdejh        deddfdc„Zidejj        deddfdd„Zkdejl        deddfde„Zmdejn        deddfdf„Zodej+        deddfdg„Zpdejq        deddfdh„Zrdejs        deddfdi„Zt eudj¦  «        Zv eudk¦  «        Zw eudl¦  «        Zx eudm¦  «        Zy eudn¦  «        Zz eudo¦  «        Z{ eudp¦  «        Z| eudq¦  «        Z} eudr¦  «        Z~ edj¦  «        Z€ edk¦  «        Z� eds¦  «        Z‚eƒdej„        deddfdt„¦   «         Z…eƒdej†        deddfdu„¦   «         Z‡dejˆ        deddfdv„Z‰eƒdejŠ        deddfdw„¦   «         Z‹eƒdejŒ        deddfdx„¦   «         Z�dejŽ        deddfdy„Z�e�dej        ej        ej         f         dedzedej‘        d         fd{„¦   «         Z’eƒdej        deddfd|„¦   «         Z“eƒdej         deddfd}„¦   «         Z”eƒdej•        deddfd~„¦   «         Z–eƒ	 d‘dej        dededdfd€„¦   «         Z—dej˜        deddfd�„Z™dejš        deddfd‚„Z›dejœ        deddfdƒ„Z�dejž        deddfd„„ZŸdej         deddfd…„Z¡dej¢        deddfd†„Z£dej¤        deddfd‡„Z¥dej¦        deddfdˆ„Z§dej¨        deddfd‰„Z©dejª        deddfdŠ„Z«dej¬        deddfd‹„Z­dej®        deddfdŒ„Z¯dej°        deddfd�„Z±dej²        deddfdŽ„Z³dej´        deddfd�„ZµdS )—r(   NFTrB   r   rR   rS   rT   rU   rV   r%   c                 ó¤  — |€t          ¦   «         }|| _        || _        || _        || _        d| _        || _        d | _        |rt          |¦  «        | _        i | _	        i | _
        d| _        d| _        d| _        i | _        i | _        g | _        d | _        d| _        d| _        d| _        d| _        d| _        g | _        g | _        dg| _        d S )NFr   r
   TÚcontext)r   rB   rR   rS   rT   Úcreated_block_contextrU   r/   r   Úimport_aliasesÚblocksÚextends_so_farÚhas_known_extendsÚcode_linenor¸   r·   Ú
debug_infoÚ_write_debug_infoÚ
_new_linesÚ
_last_lineÚ_first_writeÚ_last_identifierÚ_indentationÚ_assign_stackÚ_param_def_blockÚ_context_reference_stack)r'   rB   rR   rS   rT   rU   rV   s          r4   r‰   zCodeGenerator.__init__-  s  € ð ˆ>Ý‘Z”ZˆFØ&ˆÔØˆŒ	Ø ˆŒØˆŒØ%*ˆÔ"Ø$ˆŒØ04ˆŒàð 	4Ý& {Ñ3Ô3ˆDŒNð 13ˆÔð 13ˆŒð  ˆÔð
 "'ˆÔð ˆÔð (*ˆŒ
Ø)+ˆŒð 68ˆŒØ26ˆÔð ˆŒð ˆŒð !ˆÔð !"ˆÔð ˆÔð 24ˆÔð 57ˆÔð *3¨ˆÔ%Ð%Ð%r6   c                 ó   — | j         d uS r.   )r/   r¹   s    r4   rV   zCodeGenerator.optimizedv  s   € àŒ~ TÐ)Ð)r6   ÚmsgÚlinenozte.NoReturnc                 ó:   — t          ||| j        | j        ¦  «        ‚)z*Fail with a :exc:`TemplateAssertionError`.)r   rR   rS   )r'   rç   rè   s      r4   ÚfailzCodeGenerator.fail|  s   € å$ S¨&°$´)¸T¼]ÑKÔKÐKr6   c                 ó6   — | xj         dz  c_         d| j         › �S )zGet a new unique identifier.r
   Út_)rá   r¹   s    r4   Útemporary_identifierz"CodeGenerator.temporary_identifier€  s'   € àÐÔ Ñ"ÐÔØ+�DÔ)Ð+Ð+Ð+r6   r*   c                 ór   — |                       ¦   «         |_        |                      |j        › d�¦  «         dS )z7Enable buffering for the frame from that point onwards.z = []N)rí   r˜   Ú	writeline©r'   r*   s     r4   r˜   zCodeGenerator.buffer…  s8   € à×0Ò0Ñ2Ô2ˆŒØ�Š˜%œ,Ð-Ð-Ð-Ñ.Ô.Ð.Ð.Ð.r6   Úforce_unescapedc                 ó&  — |sð|j         j        r¸|                      d¦  «         |                      ¦   «          |                      d|j        › d�¦  «         |                      ¦   «          |                      d¦  «         |                      ¦   «          |                      d|j        › d�¦  «         |                      ¦   «          dS |j         j        r |                      d|j        › d�¦  «         dS |                      d|j        › d�¦  «         dS )z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat(ú))úelse:zreturn concat(rA   N)r0   r1   rï   Úindentr˜   ÚoutdentÚ
autoescape)r'   r*   rñ   s      r4   Úreturn_buffer_contentsz$CodeGenerator.return_buffer_contentsŠ  s  € ð ð 	ØŒ~Ô&ð Ø—’Ð@ÑAÔAÐAØ—’‘”�Ø—’ÐG°u´|ÐGÐGÐGÑHÔHÐHØ—’‘”�Ø—’˜wÑ'Ô'Ð'Ø—’‘”�Ø—’Ð?°´Ð?Ð?Ð?Ñ@Ô@Ð@Ø—’‘”�Ø�Ø”Ô*ð Ø—’ÐG°u´|ÐGÐGÐGÑHÔHÐHØ�Ø�ŠÐ7¨¬Ð7Ð7Ð7Ñ8Ô8Ð8Ð8Ð8r6   c                 ó&   — | xj         dz  c_         dS )zIndent by one.r
   N©râ   r¹   s    r4   rõ   zCodeGenerator.indentž  s   € àÐÔ˜QÑÐÔÐÐr6   r
   Ústepc                 ó&   — | xj         |z  c_         dS )zOutdent by step.Nrú   )r'   rû   s     r4   rö   zCodeGenerator.outdent¢  s   € àÐÔ˜TÑ!ÐÔÐÐr6   r)   c                 ó€   — |j         €|                      d|¦  «         dS |                      |j         › d�|¦  «         dS )z%Yield or write into the frame buffer.Núyield ú.append()r˜   rï   )r'   r*   r)   s      r4   Ústart_writezCodeGenerator.start_write¦  sI   € àŒ<ÐØ�NŠN˜8 TÑ*Ô*Ð*Ð*Ð*à�NŠN˜eœlÐ4Ð4Ð4°dÑ;Ô;Ð;Ð;Ð;r6   c                 óB   — |j         �|                      d¦  «         dS dS )z1End the writing process started by `start_write`.NrA   )r˜   rE   rð   s     r4   Ú	end_writezCodeGenerator.end_write­  s%   € àŒ<Ð#Ø�JŠJ�s‰OŒOˆOˆOˆOð $Ð#r6   Úsc                 ó†   — |                       ||¦  «         |                      |¦  «         |                      |¦  «         dS )z4Simple shortcut for start_write + write + end_write.N)r   rE   r  )r'   r  r*   r)   s       r4   Úsimple_writezCodeGenerator.simple_write²  sA   € ð 	×Ò˜ Ñ%Ô%Ð%Ø�
Š
�1‰ŒˆØ�Š�uÑÔÐÐÐr6   r   c                 óŠ   — 	 |                       d¦  «         |D ]}|                      ||¦  «         ŒdS # t          $ r Y dS w xY w)z•Visit a list of nodes as block in a frame.  If the current frame
        is no buffer a dummy ``if 0: yield None`` is written automatically.
        ÚpassN)rï   r2   rÒ   )r'   r   r*   r)   s       r4   Ú
blockvisitzCodeGenerator.blockvisitº  sk   € ð	Ø�NŠN˜6Ñ"Ô"Ð"Øð (ð (�Ø—
’
˜4 Ñ'Ô'Ð'Ð'ð(ð (øåð 	ð 	ð 	ØˆDˆDð	øøøs   ‚04 ´
AÁAÚxc                 óŒ  — | j         r¢| j        sk| j                             d| j         z  ¦  «         | xj        | j         z  c_        | j        �-| j                             | j        | j        f¦  «         d| _        d| _        | j                             d| j        z  ¦  «         d| _         | j                             |¦  «         dS )z&Write a string into the output stream.ú
NFz    r   )	rÞ   rà   rT   rE   rÛ   rÝ   rÜ   Úappendrâ   )r'   r	  s     r4   rE   zCodeGenerator.writeÅ  sÅ   € àŒ?ð 		 ØÔ$ð 2Ø”×!Ò! $¨¬Ñ"8Ñ9Ô9Ð9ØÐ Ô  D¤OÑ3Ð Ô ØÔ)Ð5Ø”O×*Ò*¨DÔ,BÀDÔDTÐ+UÑVÔVÐVØ-1�DÔ*Ø %ˆDÔØŒK×Ò˜f tÔ'8Ñ8Ñ9Ô9Ð9ØˆDŒOØŒ×Ò˜!ÑÔÐÐÐr6   r   Úextrac                 ó\   — |                       ||¦  «         |                      |¦  «         dS )z!Combination of newline and write.N)ÚnewlinerE   )r'   r	  r)   r  s       r4   rï   zCodeGenerator.writelineÓ  s+   € ð 	�Š�T˜5Ñ!Ô!Ð!Ø�
Š
�1‰Œˆˆˆr6   c                 óœ   — t          | j        d|z   ¦  «        | _        |�*|j        | j        k    r|j        | _        |j        | _        dS dS dS )z/Add one or more newlines before the next write.r
   N)ÚmaxrÞ   rè   rß   rÝ   )r'   r)   r  s      r4   r  zCodeGenerator.newlineÚ  sR   € å˜dœo¨q°5©yÑ9Ô9ˆŒØÐ ¤¨t¬Ò >Ð >Ø%)¤[ˆDÔ"Ø"œkˆDŒOˆOˆOð ÐÐ >Ð >r6   Úextra_kwargsc                 óì  — t          d„ t          d„ |j        D ¦   «         |pd¦  «        D ¦   «         ¦  «        }|j        D ]-}|                      d¦  «         |                      ||¦  «         Œ.|sl|j        D ]-}|                      d¦  «         |                      ||¦  «         Œ.|�5|                     ¦   «         D ] \  }}|                      d|› d|› �¦  «         Œ!|j        r0|                      d¦  «         |                      |j        |¦  «         |�r%|j        �|                      d¦  «         n|                      d	¦  «         |j        D ]O}|                      |j	        ›d
�¦  «         |                      |j
        |¦  «         |                      d¦  «         ŒP|�5|                     ¦   «         D ] \  }}|                      |›d
|› d�¦  «         Œ!|j        �G|                      d¦  «         |                      |j        |¦  «         |                      d¦  «         dS |                      d¦  «         dS |j        �2|                      d¦  «         |                      |j        |¦  «         dS dS )a+  Writes a function call to the stream for the current node.
        A leading comma is added automatically.  The extra keyword
        arguments may not include python keywords otherwise a syntax
        error could occur.  The extra keyword arguments should be given
        as python dict.
        c              3   ód   K  — | ]+}t          t          j        t          |¦  «        ¦  «        V — Œ,d S r.   )Úis_python_keywordr8   Úcastrr   )rd   ri   s     r4   rf   z*CodeGenerator.signature.<locals>.<genexpr>ï  sH   è è € ð 
ð 
àõ �aœf¥S¨!™nœnÑ-Ô-ð
ð 
ð 
ð 
ð 
ð 
r6   c              3   ó$   K  — | ]}|j         V — Œd S r.   )Úkey©rd   r	  s     r4   rf   z*CodeGenerator.signature.<locals>.<genexpr>ñ  s$   è è € Ð7Ð7 a˜AœEÐ7Ð7Ð7Ð7Ð7Ð7r6   r�   r>   Nú=z, *z
, **dict({z, **{ú: z}, **rA   Ú}z, **)Úanyr   r,   ÚargsrE   r2   ry   Údyn_argsÚ
dyn_kwargsr  r_   )	r'   r)   r*   r  Úkwarg_workaroundÚargÚkwargr  r_   s	            r4   Ú	signaturezCodeGenerator.signatureá  sº  € õ ð 
ð 
åÐ7Ð7¨4¬;Ð7Ñ7Ô7¸Ð9KÈÑLÔLð
ñ 
ô 
ñ 
ô 
Ðð
 ”9ð 	#ð 	#ˆCØ�JŠJ�tÑÔÐØ�JŠJ�s˜EÑ"Ô"Ð"Ð"àð 	3Øœð )ð )�Ø—
’
˜4Ñ Ô Ð Ø—
’
˜5 %Ñ(Ô(Ð(Ð(ØÐ'Ø".×"4Ò"4Ñ"6Ô"6ð 3ð 3‘J�C˜Ø—J’JÐ1 CÐ1Ð1¨%Ð1Ð1Ñ2Ô2Ð2Ð2ØŒ=ð 	-Ø�JŠJ�uÑÔÐØ�JŠJ�t”} eÑ,Ô,Ð,àñ 	/ØŒÐ*Ø—
’
˜<Ñ(Ô(Ð(Ð(à—
’
˜7Ñ#Ô#Ð#Øœð !ð !�Ø—
’
˜eœiÐ-Ð-Ð-Ñ.Ô.Ð.Ø—
’
˜5œ;¨Ñ.Ô.Ð.Ø—
’
˜4Ñ Ô Ð Ð ØÐ'Ø".×"4Ò"4Ñ"6Ô"6ð 6ð 6‘J�C˜Ø—J’J #Ð4Ð4¨5Ð4Ð4Ð4Ñ5Ô5Ð5Ð5ØŒÐ*Ø—
’
˜7Ñ#Ô#Ð#Ø—
’
˜4œ?¨EÑ2Ô2Ð2Ø—
’
˜3‘”���à—
’
˜3‘”���àŒ_Ð(Ø�JŠJ�vÑÔÐØ�JŠJ�t”¨Ñ.Ô.Ð.Ð.Ð.ð )Ð(r6   c           
      ó>  — t          ¦   «         }|D ]}|                     |¦  «         Œ| j        |j        df| j        |j        dffD �]T\  }}}t	          |¦  «        D �]<}||vr|                      ¦   «         ||<   |                      d¦  «         |                      ¦   «          |                      ||         › d|› d|›d�¦  «         |                      ¦   «          |                      d¦  «         |                      ¦   «          |                      d¦  «         |                      d	||         › d
�¦  «         |                      ¦   «          |                      d|dd…         › d|›d�¦  «         |                      ¦   «          |                      ¦   «          �Œ>�ŒVdS )aæ  Find all filter and test names used in the template and
        assign them to variables in the compiled namespace. Checking
        that the names are registered with the environment is done when
        compiling the Filter and Test nodes. If the node is in an If or
        CondExpr node, the check is done at runtime instead.

        .. versionchanged:: 3.0
            Filters and tests in If and CondExpr nodes are checked at
            runtime instead of compile time.
        r·   r¸   útry:z = environment.ú[ú]zexcept KeyError:z@internalcodeúdef z
(*unused):zraise TemplateRuntimeError("No Néÿÿÿÿú named z	 found."))	rµ   r2   r·   r¸   Úsortedrí   rï   rõ   rö   )r'   r   rI   r)   Úid_mapr{   Ú
dependencyrR   s           r4   Úpull_dependencieszCodeGenerator.pull_dependencies  sÐ  € õ *Ñ+Ô+ˆàð 	 ð 	 ˆDØ�MŠM˜$ÑÔÐÐð Œ\˜7œ?¨IÐ6à”
Ø”Øðð*
ð 	ñ 	Ñ%ˆF�E˜:õ ˜u™œð ñ �Ø˜vÐ%Ð%Ø#'×#<Ò#<Ñ#>Ô#>�F˜4‘Lð —’˜vÑ&Ô&Ð&Ø—’‘”�Ø—’ &¨¤,ÐUÐU¸zÐUÐUÈDÐUÐUÐUÑVÔVÐVØ—’‘”�Ø—’Ð1Ñ2Ô2Ð2Ø—’‘”�Ø—’˜Ñ/Ô/Ð/Ø—’Ð> f¨T¤lÐ>Ð>Ð>Ñ?Ô?Ð?Ø—’‘”�Ø—’ð0°jÀÀ"À´oð 0ð 0Ø"ð0ð 0ð 0ñô ð ð —’‘”�Ø—’‘”�‘ñ)ð	ð 	r6   c           	      óð  — g }|j         j                             ¦   «         D ]¥\  }\  }}|t          k    rŒ|t          k    r1|                      |› d|                      ¦   «         › d|›d�¦  «         ŒP|t          k    r|                      |› d|› �¦  «         Œv|t          k    r| 	                    |¦  «         Œ—t          d¦  «        ‚|r-|                      d                     |¦  «        › d�¦  «         d S d S )Nú = r?   rA   zunknown load instructionú
 = missing)r–   Úloadsry   r   r   rï   Úget_resolve_funcr   r   r  ÚNotImplementedErrorÚjoin)r'   r*   ÚundefsÚtargetÚactionÚparams         r4   Úenter_framezCodeGenerator.enter_frameH  s$  € ØˆØ',¤}Ô':×'@Ò'@Ñ'BÔ'Bð 
	Fð 
	FÑ#ˆF‘O�V˜UØÕ+Ò+Ð+ØØÕ+Ò+Ð+Ø—’ &ÐQÐQ¨T×-BÒ-BÑ-DÔ-DÐQÐQÀuÐQÐQÐQÑRÔRÐRÐRØ�>Ò)Ð)Ø—’ &Ð4Ð4¨UÐ4Ð4Ñ5Ô5Ð5Ð5ØÕ-Ò-Ð-Ø—’˜fÑ%Ô%Ð%Ð%å)Ð*DÑEÔEÐEØð 	>Ø�NŠN˜eŸjšj¨Ñ0Ô0Ð<Ð<Ð<Ñ=Ô=Ð=Ð=Ð=ð	>ð 	>r6   Úwith_python_scopec                 ó¸   — |sUg }|j         j        D ]}|                     |¦  «         Œ|r/|                      d                     |¦  «        › d�¦  «         d S d S d S )Nr1  r2  )r–   r3  r  rï   r6  )r'   r*   r<  r7  r8  s        r4   Úleave_framezCodeGenerator.leave_frameX  s‡   € Ø ð 	BØˆFØœ-Ô-ð &ð &�Ø—’˜fÑ%Ô%Ð%Ð%Øð BØ—’ %§*¢*¨VÑ"4Ô"4Ð@Ð@Ð@ÑAÔAÐAÐAÐAð	Bð 	BðBð Br6   úasync Ú Úasync_valueÚ
sync_valuec                 ó"   — | j         j        r|n|S r.   )rB   Úis_async)r'   rA  rB  s      r4   Úchoose_asynczCodeGenerator.choose_async`  s   € Ø"Ô.Ô7ÐGˆ{ˆ{¸ZÐGr6   c                 ó4   — |                       ¦   «         › d|› �S )Nr)  )rE  )r'   rR   s     r4   ÚfunczCodeGenerator.funcc  s"   € Ø×#Ò#Ñ%Ô%Ð1Ð1¨4Ð1Ð1Ð1r6   c           
      óP  — |                      ¦   «         }|j                             |¦  «         t          |¦  «        }d}t	          ¦   «         }g }t          |j        ¦  «        D ]g\  }}|j        dk    r|}|j        dv r|                     |j        ¦  «         | 	                    |j         
                    |j        ¦  «        ¦  «         Œht          |j        d¦  «        }	d|	v r…|�O	 |j        |t          |j        ¦  «        z
            nX# t          $ r |                      d|j        ¦  «         Y n1w xY w| 	                    |j                             d¦  «        ¦  «         d|_        d|	v r8d|vr4| 	                    |j                             d¦  «        ¦  «         d|_        d|	v r8d|vr4| 	                    |j                             d¦  «        ¦  «         d|_        d	|_        |j                             |¦  «         |                      |                      d
¦  «        › dd                     |¦  «        › d�|¦  «         |                      ¦   «          |                      |¦  «         |                      |¦  «         |                      |¦  «         t          |j        ¦  «        D �]\  }}|j         
                    |j        ¦  «        }
|                      d|
› d�¦  «         |                      ¦   «          	 |j        |t          |j        ¦  «        z
           }|                      |
› d�¦  «         |                      ||¦  «         n8# t          $ r+ |                      |
› d|j        ›d|j        ›d�¦  «         Y nw xY w|                      |
¦  «         |                       ¦   «          �Œ|  !                    ¦   «          |  "                    |j        |¦  «         |  #                    |d¬¦  «         |  $                    |d¬¦  «         |                       ¦   «          ||fS )z/Dump the function def of a macro or call block.NÚcaller)r,   Úvarargs)rI  r,   rJ  zhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr,   rJ  FÚmacror?   r>   ú):úif ú is missing:r1  z = undefined("parameter z was not provided", name=rA   )rñ   ©r<  )%r«   r–   Úanalyze_noder‚   ru   Ú	enumerater  rR   r¼   r  Úrefr€   ÚbodyÚdefaultsÚlenÚ
IndexErrorrê   rè   Údeclare_parameterr…   r†   r‡   r—   rï   rG  r6  rõ   r˜   r;  Úpush_parameter_definitionsr2   Úmark_parameter_storedrö   Úpop_parameter_definitionsr  rø   r>  )r'   r)   r*   Ú	macro_refÚexplicit_callerÚskip_special_paramsr  Úidxr"  r   rR  Údefaults               r4   Ú
macro_bodyzCodeGenerator.macro_bodyf  sM  € ð —’‘”ˆØŒ×"Ò" 4Ñ(Ô(Ð(Ý˜T‘N”Nˆ	àˆÝ!™eœeÐØˆå! $¤)Ñ,Ô,ð 	5ð 	5‰HˆC�ØŒx˜8Ò#Ð#Ø"%�ØŒxÐ0Ð0Ð0Ø#×'Ò'¨¬Ñ1Ô1Ð1Ø�KŠK˜œ×)Ò)¨#¬(Ñ3Ô3Ñ4Ô4Ð4Ð4å$ T¤YÐ0OÑPÔPˆ
à�zÐ!Ð!ð Ð*ðØ”M /µC¸¼	±N´NÑ"BÔCÐCÐCøÝ!ð ð ð Ø—I’Ið1ð œñ	ô ð ð ð ðøøøð —’˜EœM×;Ò;¸HÑEÔEÑFÔFÐFØ(,ˆIÔ%Ø�zÐ!Ð! hÐ6IÐ&IÐ&IØ�KŠK˜œ×7Ò7¸ÑAÔAÑBÔBÐBØ(,ˆIÔ%Ø˜
Ð"Ð" yÐ8KÐ'KÐ'KØ�KŠK˜œ×7Ò7¸	ÑBÔBÑCÔCÐCØ)-ˆIÔ&ð &+ˆÔ"ØŒ×"Ò" 4Ñ(Ô(Ð(Ø�Š˜$Ÿ)š) GÑ,Ô,ÐBÐB¨t¯yªy¸©¬ÐBÐBÐBÀDÑIÔIÐIØ�Š‰Œˆà�Š�EÑÔÐØ×Ò˜ÑÔÐà×'Ò'¨Ñ.Ô.Ð.Ý! $¤)Ñ,Ô,ð 	ñ 	‰HˆC�Ø”-×#Ò# C¤HÑ-Ô-ˆCØ�NŠNÐ2 Ð2Ð2Ð2Ñ3Ô3Ð3Ø�KŠK‰MŒMˆMð	+Øœ-¨­c°$´)©n¬nÑ(<Ô=�ð —’ #˜{˜{˜{Ñ+Ô+Ð+Ø—
’
˜7 EÑ*Ô*Ð*Ð*øõ ð ð ð Ø—’Øð +ð +°C´Hð +ð +Ø œXð+ð +ð +ñô ð ð ð ðøøøð ×&Ò& sÑ+Ô+Ð+Ø�LŠL‰NŒNˆN‰NØ×&Ò&Ñ(Ô(Ð(à�Š˜œ	 5Ñ)Ô)Ð)Ø×#Ò# E¸4Ð#Ñ@Ô@Ð@Ø×Ò˜°$ÐÑ7Ô7Ð7Ø�Š‰Œˆà�iÐÐs$   Ã("D Ä%D3Ä2D3Ë?"MÍ2NÎNr[  c                 ó0  — d                      d„ |j        j        D ¦   «         ¦  «        }t          |j        dd¦  «        }t	          |j        j        ¦  «        dk    r|dz  }|                      d|›d|› d	|j        ›d|j        ›d|j        ›d
�¦  «         dS )z<Dump the macro definition for the def created by macro_body.r>   c              3   ó>   K  — | ]}t          |j        ¦  «        V — Œd S r.   )ÚreprrR   r  s     r4   rf   z*CodeGenerator.macro_def.<locals>.<genexpr>»  s*   è è € ÐHÐH¨q�d 1¤6™lœlÐHÐHÐHÐHÐHÐHr6   rR   Nr
   ú,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	r6  r)   r  ÚgetattrrU  rE   r†   r‡   r…   )r'   r[  r*   Ú	arg_tuplerR   s        r4   Ú	macro_defzCodeGenerator.macro_def¹  sÚ   € à—I’IÐHÐH°I´NÔ4GÐHÑHÔHÑHÔHˆ	Ý�y”~ v¨tÑ4Ô4ˆÝˆyŒ~Ô"Ñ#Ô# qÒ(Ð(Ø˜ÑˆIØ�
Š
ðL¨ð Lð L°Ið Lð LØÔ)ðLð LØ/8Ô/IðLð LàÔ)ðLð Lð Lñ	
ô 	
ð 	
ð 	
ð 	
r6   c                 ó@   — d|j         › �}| j        �|› d| j        ›�}|S )z.Return a human readable position for the node.zline Nú in )rè   rR   )r'   r)   r¨   s      r4   ÚpositionzCodeGenerator.positionÅ  s3   € à"�T”[Ð"Ð"ˆØŒ9Ð ØÐ)Ð)˜DœIÐ)Ð)ˆBØˆ	r6   c                 óž   — d                      d„ |j                             ¦   «                              ¦   «         D ¦   «         ¦  «        }d|› d�S )Nr>   c              3   ó*   K  — | ]\  }}|›d |› �V — ŒdS ©r  Nr�   )rd   rR   r8  s      r4   rf   z3CodeGenerator.dump_local_context.<locals>.<genexpr>Í  sH   è è € ð 
ð 
á��fð Ð!Ð!˜Ð!Ð!ð
ð 
ð 
ð 
ð 
ð 
r6   Ú{r  )r6  r–   Údump_storesry   )r'   r*   Úitems_kvs      r4   Údump_local_contextz CodeGenerator.dump_local_contextÌ  s^   € Ø—9’9ð 
ð 
à %¤× 9Ò 9Ñ ;Ô ;× AÒ AÑ CÔ Cð
ñ 
ô 
ñ 
ô 
ˆð !�HÐ Ð Ð Ð r6   c                 óØ   — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         dS )z·Writes a common preamble that is used by root and block functions.
        Primarily this sets up common local helpers and enforces a generator
        through a dead branch.
        z$resolve = context.resolve_or_missingz!undefined = environment.undefinedzconcat = environment.concatzcond_expr_undefined = Undefinedzif 0: yield NoneN©rï   r¹   s    r4   Úwrite_commonszCodeGenerator.write_commonsÓ  sk   € ð
 	�ŠÐ=Ñ>Ô>Ð>Ø�ŠÐ:Ñ;Ô;Ð;Ø�ŠÐ4Ñ5Ô5Ð5ð 	�ŠÐ8Ñ9Ô9Ð9Ø�ŠÐ)Ñ*Ô*Ð*Ð*Ð*r6   c                 óh   — | j                              |j                             ¦   «         ¦  «         dS )aQ  Pushes all parameter targets from the given frame into a local
        stack that permits tracking of yet to be assigned parameters.  In
        particular this enables the optimization from `visit_Name` to skip
        undefined expressions for parameters in macros as macros can reference
        otherwise unbound parameters.
        N)rä   r  r–   Údump_param_targetsrð   s     r4   rX  z(CodeGenerator.push_parameter_definitionsà  s/   € ð 	Ô×$Ò$ U¤]×%EÒ%EÑ%GÔ%GÑHÔHÐHÐHÐHr6   c                 ó8   — | j                              ¦   «          dS )z+Pops the current parameter definitions set.N)rä   Úpopr¹   s    r4   rZ  z'CodeGenerator.pop_parameter_definitionsé  s   € àÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#r6   r8  c                 óX   — | j         r"| j         d                              |¦  «         dS dS )z€Marks a parameter in the current parameter definitions as stored.
        This will skip the enforced undefined checks.
        r*  N)rä   rÌ   ©r'   r8  s     r4   rY  z#CodeGenerator.mark_parameter_storedí  s;   € ð Ô ð 	6ØÔ! "Ô%×-Ò-¨fÑ5Ô5Ð5Ð5Ð5ð	6ð 	6r6   c                 ó:   — | j                              |¦  «         d S r.   )rå   r  rz  s     r4   Úpush_context_referencez$CodeGenerator.push_context_referenceô  s   € ØÔ%×,Ò,¨VÑ4Ô4Ð4Ð4Ð4r6   c                 ó8   — | j                              ¦   «          d S r.   )rå   rx  r¹   s    r4   Úpop_context_referencez#CodeGenerator.pop_context_reference÷  s   € ØÔ%×)Ò)Ñ+Ô+Ð+Ð+Ð+r6   c                 ó   — | j         d         S )Nr*  ©rå   r¹   s    r4   Úget_context_refzCodeGenerator.get_context_refú  s   € ØÔ,¨RÔ0Ð0r6   c                 ó6   — | j         d         }|dk    rdS |› d�S )Nr*  rÕ   Úresolvez.resolver€  rz  s     r4   r4  zCodeGenerator.get_resolve_funcý  s.   € ØÔ.¨rÔ2ˆØ�YÒÐØ�9ØÐ"Ð"Ð"Ð"r6   c                 ó\   — |                       ¦   «         › d|                      |¦  «        › d�S )Nz	.derived(rA   )r�  rq  rð   s     r4   Úderive_contextzCodeGenerator.derive_context  s3   € Ø×&Ò&Ñ(Ô(ÐTÐT°4×3JÒ3JÈ5Ñ3QÔ3QÐTÐTÐTÐTr6   c                 ó2   — | j         sdS || j         d         v S )z4Checks if a given target is an undeclared parameter.Fr*  )rä   rz  s     r4   Úparameter_is_undeclaredz%CodeGenerator.parameter_is_undeclared  s%   € àÔ$ð 	Ø�5Ø˜Ô.¨rÔ2Ð2Ð2r6   c                 óR   — | j                              t          ¦   «         ¦  «         dS )z+Pushes a new layer for assignment tracking.N)rã   r  ru   r¹   s    r4   Úpush_assign_trackingz"CodeGenerator.push_assign_tracking  s#   € àÔ×!Ò!¥#¡%¤%Ñ(Ô(Ð(Ð(Ð(r6   c                 ó®  — | j                              ¦   «         }|j        s|j        s|j        r|sdS d„ |D ¦   «         }t          |¦  «        dk    ršt          t          |¦  «        ¦  «        }|j         	                    |¦  «        }|j        r|  
                    d|›d|› �¦  «         dS |j        r|  
                    d|›d|› �¦  «         dS |  
                    d|›d|› �¦  «         nÑ|j        r|  
                    d¦  «         n2|j        r|  
                    d	¦  «         n|  
                    d
¦  «         t          t          |¦  «        ¦  «        D ]P\  }}|r|                      d¦  «         |j         	                    |¦  «        }|                      |›d|› �¦  «         ŒQ|                      d¦  «         |j        s�|j        sˆ|rˆt          |¦  «        dk    r!|  
                    d|d         ›d�¦  «         dS d                     t          t           t          |¦  «        ¦  «        ¦  «        }|  
                    d|› d�¦  «         dS dS dS dS )zoPops the topmost level for assignment tracking and updates the
        context variables if necessary.
        Nc                 ó.   — g | ]}|d d…         dk    ¯|‘ŒS )Nr
   Ú_r�   r  s     r4   ú
<listcomp>z5CodeGenerator.pop_assign_tracking.<locals>.<listcomp>  s%   € Ð8Ð8Ð8˜a¨1¨R¨a¨R¬5°Cª<¨<˜¨<¨<¨<r6   r
   z_loop_vars[ú] = z_block_vars[úcontext.vars[z_loop_vars.update({z_block_vars.update({úcontext.vars.update({r>   r  ú})úcontext.exported_vars.add(r   rA   zcontext.exported_vars.update((ró   )rã   rx  r�   rœ   rš   rU  ÚnextÚiterr–   rR  rï   rQ  r,  rE   r6  Úmaprc  )r'   r*   ÚvarsÚpublic_namesrR   rR  r^  Ú	names_strs           r4   Úpop_assign_trackingz!CodeGenerator.pop_assign_tracking  sÀ  € ð Ô!×%Ò%Ñ'Ô'ˆàÔ!ð	àÔ$ð	ð ”Nð	ð ð		ð ˆFØ8Ð8 4Ð8Ñ8Ô8ˆÝˆt‰9Œ9˜Š>ˆ>Ý�˜T™
œ
Ñ#Ô#ˆDØ”-×#Ò# DÑ)Ô)ˆCØÔð Ø—’Ð>¨TÐ>Ð>¸Ð>Ð>Ñ?Ô?Ð?Ø�ØÔ ð Ø—’Ð?¨dÐ?Ð?¸#Ð?Ð?Ñ@Ô@Ð@Ø�Ø�NŠNÐ<¨4Ð<Ð<°sÐ<Ð<Ñ=Ô=Ð=Ð=àÔð 8Ø—’Ð4Ñ5Ô5Ð5Ð5ØÔ"ð 8Ø—’Ð5Ñ6Ô6Ð6Ð6à—’Ð6Ñ7Ô7Ð7Ý&¥v¨d¡|¤|Ñ4Ô4ð /ð /‘	��TØð %Ø—J’J˜tÑ$Ô$Ð$Ø”m×'Ò'¨Ñ-Ô-�Ø—
’
˜dÐ-Ð-¨Ð-Ð-Ñ.Ô.Ð.Ð.Ø�JŠJ�tÑÔÐØÔ ð 	O¨Ô)9ð 	O¸lð 	OÝ�<Ñ Ô  AÒ%Ð%Ø—’ÐP¸LÈ¼OÐPÐPÐPÑQÔQÐQÐQÐQà ŸIšI¥c­$µ°|Ñ0DÔ0DÑ&EÔ&EÑFÔF�	Ø—’ÐMÀ	ÐMÐMÐMÑNÔNÐNÐNÐNð	Oð 	Oð 	Oð 	Oð 	Oð 	Or6   c           	      ó°  — |�
J d¦   «         ‚t          | j        | j        ¦  «        }ddlm} ddlm} | j        j        rt          ||z   ¦  «        }nt          |¦  «        }|                      dd 	                    |¦  «        z   ¦  «         | j
        rdnd}|                     t          j        ¦  «        d u}|                     t          j        ¦  «        D ]C}	|	j        | j        v r$|                      d	|	j        ›d
�|	j        ¦  «         |	| j        |	j        <   ŒD|                     t          j        ¦  «        D ]Œ}
|
j        | j        vr||
j        }|                      ¦   «         x| j        |<   }d|v r8|                     dd¦  «        \  }}|                      d|› d|› d|› �¦  «         Œq|                      d|› d|› �¦  «         Œ�|                      d| j        ›�¦  «         |                      |                      d¦  «        › d|› d�d¬¦  «         |                      ¦   «          |                      ¦   «          t7          |¦  «        }dt9          |j        d¦  «        v r2|j                             d¦  «        }|                      |› d�¦  «         |j                              |¦  «         dx|_!        |_"        |o| j#         |_$        |r|                      d¦  «         |  %                    |¦  «         |  &                    |j        ¦  «         |  '                    |j        |¦  «         |  (                    |d¬¦  «         |  )                    ¦   «          |�r=| j#        s)|                      ¦   «          |                      d¦  «         |                      ¦   «          | j        j        s|                      d¦  «         n¹|                      d¦  «         |                      d¦  «         |                      ¦   «          |                      d¦  «         |                      ¦   «          |                      d ¦  «         |  )                    ¦   «          |  )                    ¦   «          |                      d!¦  «         |  )                    d| j#         z   ¦  «         | j         *                    ¦   «         D �]©\  }}	|                      |                      d"|z   ¦  «        › d|› d�|	d¦  «         |                      ¦   «          |                      ¦   «          t7          |¦  «        }d|_+        t9          |	j        d#¦  «        }d|v r2|j                             d¦  «        }|                      |› d�¦  «         d$|v r8|j                             d$¦  «        }|                      |› d%|›d&|› d'�¦  «         |j                              |	¦  «         ||_,        |                      d(¦  «         |  %                    |¦  «         |  &                    |	j        ¦  «         |  '                    |	j        |¦  «         |  (                    |d¬¦  «         |  )                    ¦   «          �Œ«d 	                    d)„ | j        D ¦   «         ¦  «        }|                      d*|› d+�d¬¦  «         d, 	                    d-„ | j-        D ¦   «         ¦  «        }|                      d.|›�¦  «         d S )/Nzno root frame allowedr
   )Úasync_exported)Úexportedzfrom jinja2.runtime import r>   r@  z, environment=environmentzblock z defined twiceú.zfrom z import z as zimport zname = Úrootz(context, missing=missingrL  )r  r'   r¹   z = TemplateReference(context)Tzparent_template = NonerO  úif parent_template is not None:z4yield from parent_template.root_render_func(context)z0agen = parent_template.root_render_func(context)r&  zasync for event in agen:zyield eventzfinally: await agen.aclose()Úblock_)r'   Úsuperr¡  z = context.super(z, block_rA   z_block_vars = {}c              3   ó$   K  — | ]}|›d |› �V — ŒdS )z: block_Nr�   r  s     r4   rf   z/CodeGenerator.visit_Template.<locals>.<genexpr>²  s0   è è € Ð!KÐ!K¸! QÐ"5Ð"5°!Ð"5Ð"5Ð!KÐ!KÐ!KÐ!KÐ!KÐ!Kr6   z
blocks = {r  ú&c              3   ó*   K  — | ]\  }}|› d |› �V — ŒdS )r  Nr�   rh   s      r4   rf   z/CodeGenerator.visit_Template.<locals>.<genexpr>´  s0   è è € ÐGÐG©t¨q°! 1 
 
 q 
 
ÐGÐGÐGÐGÐGÐGr6   zdebug_info = ).r   rB   rR   Úruntimer›  rœ  rD  r,  rï   r6  rU   Úfindr   ÚExtendsÚfind_allrÆ   rØ   rê   rè   ÚImportedNameÚ
importnamer×   rí   ÚrsplitrG  rõ   rt  r+   r€   rS  r–   rW  rP  rš   r›   rÚ   r—   r;  r/  r  r>  rö   ry   r�   r™   rÜ   )r'   r)   r*   r0   r›  rœ  Úexported_namesÚenvenvÚhave_extendsr™   Úimport_ÚimpÚaliasÚmoduleÚobjrR  rR   r�   r   Úblocks_kv_strÚdebug_kv_strs                        r4   Úvisit_TemplatezCodeGenerator.visit_Template=  sì  € ð ˆ}ˆ}Ð5‰}Œ}ˆ}Ý˜tÔ/°´Ñ;Ô;ˆà+Ð+Ð+Ð+Ð+Ð+Ø%Ð%Ð%Ð%Ð%Ð%àÔÔ$ð 	.Ý# H¨~Ñ$=Ñ>Ô>ˆNˆNå# HÑ-Ô-ˆNà�ŠÐ4°t·y²yÀÑ7PÔ7PÑPÑQÔQÐQð ”ÐG��Ð,Gˆð —y’y¥¤Ñ/Ô/°tÐ;ˆð —]’]¥5¤;Ñ/Ô/ð 	,ð 	,ˆEØŒz˜Tœ[Ð(Ð(Ø—	’	Ð? 5¤:Ð?Ð?Ð?ÀÄÑNÔNÐNØ&+ˆDŒK˜œ
Ñ#Ð#ð —}’}¥UÔ%7Ñ8Ô8ð 	?ð 	?ˆGØÔ!¨Ô)<Ð<Ð<ØÔ(�Ø37×3LÒ3LÑ3NÔ3NÐN�Ô# CÑ(¨5Ø˜#�:�:Ø"%§*¢*¨S°!Ñ"4Ô"4‘K�F˜CØ—N’NÐ#K¨6Ð#KÐ#K¸3Ð#KÐ#KÀEÐ#KÐ#KÑLÔLÐLÐLà—N’NÐ#=¨SÐ#=Ð#=°eÐ#=Ð#=Ñ>Ô>Ð>øð 	�ŠÐ. ¤Ð.Ð.Ñ/Ô/Ð/ð 	�ŠØ�yŠy˜Ñ Ô ÐEÐE¸6ÐEÐEÐEÈQð 	ñ 	
ô 	
ð 	
ð 	�Š‰ŒˆØ×ÒÑÔÐõ �h‘”ˆØ•_ T¤Y°	Ñ:Ô:Ð:Ð:Ø”-×1Ò1°&Ñ9Ô9ˆCØ�NŠN˜cÐ@Ð@Ð@ÑAÔAÐAØŒ×"Ò" 4Ñ(Ô(Ð(Ø+/Ð/ˆŒ˜œØ%1Ð%P¸$Ô:PÐ6PˆÔ"Øð 	5Ø�NŠNÐ3Ñ4Ô4Ð4Ø×Ò˜ÑÔÐØ×Ò˜tœyÑ)Ô)Ð)Ø�Š˜œ	 5Ñ)Ô)Ð)Ø×Ò˜°$ÐÑ7Ô7Ð7Ø�Š‰Œˆð ñ 	;ØÔ)ð BØ—’‘”�Ø—’Ð@ÑAÔAÐAØ�KŠK‰MŒMˆMØÔ#Ô,ð ?Ø—’ÐUÑVÔVÐVÐVà—’ÐQÑRÔRÐRØ—’˜vÑ&Ô&Ð&Ø—’‘”�Ø—’Ð9Ñ:Ô:Ð:Ø—’‘”�Ø—’˜}Ñ-Ô-Ð-Ø—’‘”�Ø—’‘”�Ø—’Ð=Ñ>Ô>Ð>Ø�LŠL˜ $Ô"8Ð8Ñ9Ñ:Ô:Ð:ð  œ;×,Ò,Ñ.Ô.ð 	ñ 	‰KˆD�%Ø�NŠNØ—9’9˜X¨™_Ñ-Ô-ÐRÐRÈÐRÐRÐRØØñô ð ð
 �KŠK‰MŒMˆMØ×ÒÑ Ô Ð õ   ™/œ/ˆKØ&*ˆKÔ#Ý(¨¬Ð5FÑGÔGˆJØ˜Ð#Ð#Ø!Ô)×;Ò;¸FÑCÔC�Ø—’ #ÐDÐDÐDÑEÔEÐEØ˜*Ð$Ð$Ø!Ô)×;Ò;¸GÑDÔD�Ø—’ #ÐOÐO¸ÐOÐOÈÐOÐOÐOÑPÔPÐPØÔ×,Ò,¨UÑ3Ô3Ð3Ø $ˆKÔØ�NŠNÐ-Ñ.Ô.Ð.Ø×Ò˜[Ñ)Ô)Ð)Ø×"Ò" 5¤:Ñ.Ô.Ð.Ø�OŠO˜EœJ¨Ñ4Ô4Ð4Ø×Ò˜[¸DÐÑAÔAÐAØ�LŠL‰NŒNˆN‰NàŸ	š	Ð!KÐ!K¸t¼{Ð!KÑ!KÔ!KÑKÔKˆØ�ŠÐ6 ]Ð6Ð6Ð6¸aˆÑ@Ô@Ð@Ø—x’xÐGÐG°t´ÐGÑGÔGÑGÔGˆØ�ŠÐ7 |Ð7Ð7Ñ8Ô8Ð8Ð8Ð8r6   c                 óT  — d}|j         rB| j        rdS | j        dk    r.|                      d¦  «         |                      ¦   «          |dz  }|j        r|                      |¦  «        }n|                      ¦   «         }|j        rf|                      d|j	        ›d�|¦  «         |                      ¦   «          |                      d|j	        ›d�|¦  «         |  
                    ¦   «          | j        j        s*|j        €#|                      d	|j	        ›d
|› d�|¦  «         nó|                      d|j	        ›d
|› d�¦  «         |                      d¦  «         |                      ¦   «          |                      |                      ¦   «         › d�|¦  «         |                      ¦   «          |                      d|¦  «         |  
                    ¦   «          |  
                    ¦   «          |                      d|                      dd¦  «        › �¦  «         |  
                    |¦  «         dS )z.Call a block and register it for the template.r   Núif parent_template is None:r
   zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](rA   zgen = context.blocks[r&  úfor event in gen:Úeventú	finally: úawait gen.aclose()úgen.close())rš   rÚ   rÙ   rï   rõ   Úscopedr…  r�  ÚrequiredrR   rö   rB   rD  r˜   rE  r  )r'   r)   r*   r“   rÕ   s        r4   rÁ   zCodeGenerator.visit_Block·  sJ  € àˆØŒ>ð 	ð Ô%ð Ø�ØÔ" QÒ&Ð&Ø—’Ð<Ñ=Ô=Ð=Ø—’‘”�Ø˜‘
�àŒ;ð 	-Ø×)Ò)¨%Ñ0Ô0ˆGˆGà×*Ò*Ñ,Ô,ˆGàŒ=ð 	Ø�NŠNÐI°D´IÐIÐIÐIÈ4ÑPÔPÐPØ�KŠK‰MŒMˆMØ�NŠNØW¸d¼iÐWÐWÐWØñô ð ð �LŠL‰NŒNˆNàÔÔ(ð 	¨U¬\Ð-AØ�NŠNØI¨T¬YÐIÐI¸wÐIÐIÐIÈ4ñô ð ð ð �NŠNÐO°4´9ÐOÐOÀWÐOÐOÐOÑPÔPÐPØ�NŠN˜6Ñ"Ô"Ð"Ø�KŠK‰MŒMˆMØ�NŠNØ×$Ò$Ñ&Ô&Ð9Ð9Ð9Øñô ð ð �KŠK‰MŒMˆMØ×Ò˜g uÑ-Ô-Ð-Ø�LŠL‰NŒNˆNØ�LŠL‰NŒNˆNØ�NŠNØT˜D×-Ò-Ð.BÀMÑRÔRÐTÐTñô ð ð 	�Š�UÑÔÐÐÐr6   c                 óº  — |j         s|                      d|j        ¦  «         | j        dk    rn| j        s)|                      d¦  «         |                      ¦   «          |                      d¦  «         | j        rt          ¦   «         ‚|                      ¦   «          |                      d|¦  «         |  	                    |j
        |¦  «         |                      d| j        ›d�¦  «         |                      d¦  «         |                      ¦   «          |                      d	¦  «         |                      ¦   «          |j        rd
| _        | xj        dz  c_        dS )zCalls the extender.z,cannot use extend from a non top-level scoper   rŸ  z5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(r>   rA   z9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)Tr
   N)rš   rê   rè   rÙ   rÚ   rï   rõ   rÒ   rö   r2   ÚtemplaterE   rR   r›   ©r'   r)   r*   s      r4   Úvisit_ExtendszCodeGenerator.visit_Extendsè  sS  € àŒ~ð 	SØ�IŠIÐDÀdÄkÑRÔRÐRð
 Ô Ò"Ð"ð
 Ô)ð Ø—’Ð@ÑAÔAÐAØ—’‘”�Ø�NŠNÐRÑSÔSÐSð Ô%ð Ý"‘n”nÐ$à—’‘”�à�ŠÐDÀdÑKÔKÐKØ�
Š
�4”= %Ñ(Ô(Ð(Ø�
Š
Ð&˜œ	Ð&Ð&Ð&Ñ'Ô'Ð'Ø�ŠÐRÑSÔSÐSØ�Š‰ŒˆØ�ŠÐQÑRÔRÐRØ�Š‰Œˆð
 Œ?ð 	*Ø%)ˆDÔ"ð 	ÐÔ˜qÑ ÐÔÐÐr6   c                 óÚ  ‡ ‡— |j         r)‰                      d¦  «         ‰                      ¦   «          d}t          |j        t
          j        ¦  «        rKt          |j        j        t          ¦  «        rd}nVt          |j        j        t          t          f¦  «        rd}n-t          |j        t
          j        t
          j        f¦  «        rd}‰                      d|› d�|¦  «         ‰                      |j        ‰¦  «         ‰                      d‰ j        ›d�¦  «         |j         r�‰                      ¦   «          ‰                      d	¦  «         ‰                      ¦   «          ‰                      d
¦  «         ‰                      ¦   «          ‰                      d¦  «         ‰                      ¦   «          dˆˆ fd„}|j        rÊ‰                      d‰                      ‰¦  «        › d�¦  «         ‰                      d¦  «         ‰                      ¦   «          ‰                      ‰                      ¦   «         › d�¦  «          |¦   «          ‰                      ¦   «          ‰                      d‰                      dd¦  «        › �¦  «         nA‰ j        j        r ‰                      d¦  «          |¦   «          n‰                      d¦  «         |j         r‰                      ¦   «          dS dS )zHandles includes.r&  Úget_or_select_templateÚget_templateÚselect_templateztemplate = environment.r?   r>   rA   zexcept TemplateNotFound:r  rô   r%   Nc                  ó„   •— ‰                      ¦   «          ‰                     d‰ ¦  «         ‰                     ¦   «          d S )Nrº  )rõ   r  rö   )r*   r'   s   €€r4   Ú	loop_bodyz.CodeGenerator.visit_Include.<locals>.loop_body-  s7   ø€ Ø�KŠK‰MŒMˆMØ×Ò˜g uÑ-Ô-Ð-Ø�LŠL‰NŒNˆNˆNˆNr6   zNgen = template.root_render_func(template.new_context(context.get_all(), True, ró   r¹  r»  r¼  r½  zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamrÃ   )Úignore_missingrï   rõ   rX   rÁ  r   ÚConstr_   rr   rs   rt   ÚTupleÚListr2   rE   rR   rö   Úwith_contextrq  rE  rB   rD  )r'   r)   r*   Ú	func_namerÉ  s   ` `  r4   Úvisit_IncludezCodeGenerator.visit_Include  sí  øø€ àÔð 	Ø�NŠN˜6Ñ"Ô"Ð"Ø�KŠK‰MŒMˆMà,ˆ	Ý�d”m¥U¤[Ñ1Ô1ð 	*Ý˜$œ-Ô-­sÑ3Ô3ð .Ø*�	�	Ý˜DœMÔ/µ%½°Ñ?Ô?ð .Ø-�	øÝ˜œ­¬µU´ZÐ'@ÑAÔAð 	*Ø)ˆIà�ŠÐ=°Ð=Ð=Ð=¸tÑDÔDÐDØ�
Š
�4”= %Ñ(Ô(Ð(Ø�
Š
Ð&˜œ	Ð&Ð&Ð&Ñ'Ô'Ð'ØÔð 	Ø�LŠL‰NŒNˆNØ�NŠNÐ5Ñ6Ô6Ð6Ø�KŠK‰MŒMˆMØ�NŠN˜6Ñ"Ô"Ð"Ø�LŠL‰NŒNˆNØ�NŠN˜7Ñ#Ô#Ð#Ø�KŠK‰MŒMˆMð	ð 	ð 	ð 	ð 	ð 	ð 	ð
 Ôð 	UØ�NŠNð7à×+Ò+¨EÑ2Ô2ð7ð 7ð 7ñô ð ð
 �NŠN˜6Ñ"Ô"Ð"Ø�KŠK‰MŒMˆMØ�NŠN˜d×/Ò/Ñ1Ô1ÐDÐDÐDÑEÔEÐEØˆI‰KŒKˆKØ�LŠL‰NŒNˆNØ�NŠNØT˜D×-Ò-Ð.BÀMÑRÔRÐTÐTñô ð ð ð ÔÔ&ð 	UØ�NŠNð!ñô ð ð ˆI‰KŒKˆKˆKà�NŠNÐSÑTÔTÐTàÔð 	Ø�LŠL‰NŒNˆNˆNˆNð	ð 	r6   c                 óÄ  — |                       |                      d¦  «        › d�¦  «         |                      |j        |¦  «         |                       d| j        ›d�¦  «         |j        rHd|                      d¦  «        › �}|                       |› d|                      |¦  «        › d�¦  «         d S |                       d	|                      d¦  «        › d
�¦  «         d S )Núawait zenvironment.get_template(r>   z).Úmake_moduleÚ_asyncz(context.get_all(), True, rA   Ú_get_default_modulez	(context))rE   rE  r2   rÁ  rR   rÎ  rq  )r'   r)   r*   Úf_names       r4   Ú_import_commonzCodeGenerator._import_commonL  s   € ð 	�
Š
�d×'Ò'¨Ñ1Ô1ÐLÐLÐLÑMÔMÐMØ�
Š
�4”= %Ñ(Ô(Ð(Ø�
Š
Ð'˜œ	Ð'Ð'Ð'Ñ(Ô(Ð(àÔð 	UØ@ 4×#4Ò#4°XÑ#>Ô#>Ð@Ð@ˆFØ�JŠJØÐVÐV°T×5LÒ5LÈUÑ5SÔ5SÐVÐVÐVñô ð ð ð ð �JŠJÐS¨T×->Ò->¸xÑ-HÔ-HÐSÐSÐSÑTÔTÐTÐTÐTr6   c                 ón  — |                       |j                             |j        ¦  «        › d�|¦  «         |j        r|                      d|j        ›d�¦  «         |                      ||¦  «         |j        r:|j                             d¦  «        s"|                       d|j        ›d�¦  «         dS dS dS )zVisit regular imports.r1  r�  rŽ  rŒ  úcontext.exported_vars.discard(rA   N)rï   r–   rR  r8  rš   rE   r×  Ú
startswithrÂ  s      r4   Úvisit_ImportzCodeGenerator.visit_Import[  sÒ   € à�Š˜%œ-×+Ò+¨D¬KÑ8Ô8Ð=Ð=Ð=¸tÑDÔDÐDØŒ>ð 	<Ø�JŠJÐ: t¤{Ð:Ð:Ð:Ñ;Ô;Ð;à×Ò˜D %Ñ(Ô(Ð(àŒ>ð 	N $¤+×"8Ò"8¸Ñ"=Ô"=ð 	NØ�NŠNÐL¸D¼KÐLÐLÐLÑMÔMÐMÐMÐMð	Nð 	Nð 	Nð 	Nr6   c           	      ó„  ‡— |                       |¦  «         |                      d¦  «         |                      |‰¦  «         g }g }|j        D �]m}t	          |t
          ¦  «        r|\  }}n|}|                      ‰j                             |¦  «        › d|›d�¦  «         |                      d‰j                             |¦  «        › d�¦  «         |  	                    ¦   «          |  
                    |¦  «                             dd¦  «                             dd	¦  «        }d
|› d|›�}|                      ‰j                             |¦  «        › d|›d|›d�¦  «         |                      ¦   «          ‰j        r?|                     |¦  «         |                     d¦  «        s|                     |¦  «         �Œo|r‰t!          |¦  «        dk    r<|d         }|                      d|›d‰j                             |¦  «        › �¦  «         n:d                     ˆfd„|D ¦   «         ¦  «        }	|                      d|	› d�¦  «         |rwt!          |¦  «        dk    r!|                      d|d         ›d�¦  «         dS d                     t%          t&          |¦  «        ¦  «        }
|                      d|
› d�¦  «         dS dS )zVisit named imports.zincluded_template = z = getattr(included_template, z
, missing)rM  rN  rn  z{{r  z}}z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=rA   rŒ  r
   r   r�  rŽ  r>   c              3   óV   •K  — | ]#}|›d ‰j                              |¦  «        › �V — Œ$dS rm  )r–   rR  )rd   rR   r*   s     €r4   rf   z1CodeGenerator.visit_FromImport.<locals>.<genexpr>�  sR   øè è € ð %ð %Ø?C�tÐ:Ð: ¤×!2Ò!2°4Ñ!8Ô!8Ð:Ð:ð%ð %ð %ð %ð %ð %r6   r�  r‘  rÙ  z)context.exported_vars.difference_update((ró   N)r  rE   r×  r{   rX   rs   rï   r–   rR  rõ   rj  Úreplacerö   rš   r  rÚ  rU  r6  r•  rc  )r'   r)   r*   Ú	var_namesÚdiscarded_namesrR   r±  rj  ÚmessageÚnames_kvr˜  s     `        r4   Úvisit_FromImportzCodeGenerator.visit_FromImportf  sD  ø€ à�Š�TÑÔÐØ�
Š
Ð)Ñ*Ô*Ð*Ø×Ò˜D %Ñ(Ô(Ð(Øˆ	ØˆØ”Jð 	2ñ 	2ˆDÝ˜$¥Ñ&Ô&ð Ø"‘��e�eà�Ø�NŠNØ”=×$Ò$ UÑ+Ô+ð Bð BØ/3ðBð Bð Bñô ð ð �NŠNÐG ¤×!2Ò!2°5Ñ!9Ô!9ÐGÐGÐGÑHÔHÐHØ�KŠK‰MŒMˆMð
 —}’} TÑ*Ô*×2Ò2°3¸Ñ=Ô=×EÒEÀcÈ4ÑPÔPˆHð@Ø!)ð@ð @à7;ð@ð @ð ð
 �NŠNØ”=×$Ò$ UÑ+Ô+ÐVÐV¸7ÐVÐVÈTÐVÐVÐVñô ð ð �LŠL‰NŒNˆNØŒ~ð 2Ø× Ò  Ñ'Ô'Ð'Ø×'Ò'¨Ñ,Ô,ð 2Ø#×*Ò*¨5Ñ1Ô1Ð1ùàð 	GÝ�9‰~Œ~ Ò"Ð"Ø  ”|�Ø—’ÐT¨tÐTÐT¸5¼=×;LÒ;LÈTÑ;RÔ;RÐTÐTÑUÔUÐUÐUàŸ9š9ð %ð %ð %ð %ØGPð%ñ %ô %ñ ô �ð —’ÐE¸ÐEÐEÐEÑFÔFÐFØð 	Ý�?Ñ#Ô# qÒ(Ð(Ø—’ÐWÀÐPQÔ@RÐWÐWÐWÑXÔXÐXÐXÐXà ŸIšI¥c­$°Ñ&@Ô&@ÑAÔA�	Ø—’ØMÀ	ÐMÐMÐMñô ð ð ð ð	ð 	r6   c                 óÒ  — |                      ¦   «         }d|_        |                      ¦   «         }|                      ¦   «         }|j        p[dt          |                     d¬¦  «        d¦  «        v p5t          d„ |                     t          j        ¦  «        D ¦   «         ¦  «        }d }|r|j	         
                    d¦  «        }|j	                             |d¬¦  «         |j        r|j	                             |d	¬¦  «         |j        �rð|                      ¦   «         }|j	                             |d
¬¦  «         |                      |                      |¦  «        › d�|j        ¦  «         |                      ¦   «          |                      |¦  «         |                      |                      dd¦  «        ¦  «         |                      |j        |¦  «         |                      d¦  «         |                      |                      dd¦  «        ¦  «         |                      d¦  «         |                      ¦   «          |                      d|j        ¦  «         |                      |j        |¦  «         |                      d¦  «         |                      ¦   «          |                      d¦  «         |                      |j        |¦  «         |                      d¦  «         |                      |d¬¦  «         |j        ra|                      |                      d¦  «        › d�|¦  «         |                      ¦   «          |                      |¦  «         |j        |_        |r|                      |› d�¦  «         |                     t          j        ¦  «        D ]3}	|	j        dk    r&|	j        dk    r|                      d|	j        ¦  «         Œ4|j        r,|                      ¦   «         }
|                      |
› d�¦  «         |                      |                      dd¦  «        |¦  «         |                      |j        |¦  «         |r0|                      d|› d|                      d¦  «        › d�¦  «         n|                      d¦  «         |j        r|                      |› d�¦  «         |j        r|                      d¦  «         na| j        j         r|s|                      d ¦  «         |                      |j!        |¦  «         | j        j         r|s|                      d!¦  «         |j        r|                      d!¦  «         |j        r|                      d"¦  «         n|                      |rd#nd¦  «         |                      ¦   «          |                      |¦  «         |                      d$¦  «         |  "                    |j#        |¦  «         |j        r|                      |
› d%�¦  «         |                      ¦   «          |                      ||j        o|j         ¬¦  «         |j        r†|                      d|
› d�¦  «         |                      ¦   «          |                      |¦  «         |  "                    |j        |¦  «         |                      |¦  «         |                      ¦   «          |j        rñ|  $                    |¦  «         |                      ¦   «          |  %                    ||¦  «         |                      |                      d&¦  «        › d'�¦  «         | j        j         r|                      d ¦  «         |                      |j!        |¦  «         | j        j         r|                      d!¦  «         |                      d(¦  «         |  &                    |¦  «         | j'        r,| j'        d)          (                    |j	        j)        ¦  «         d S d S )*NTÚloop)rS  )Úonly)rå  c              3   ó$   K  — | ]}|j         V — Œd S r.   )r¾  )rd   r™   s     r4   rf   z*CodeGenerator.visit_For.<locals>.<genexpr>ª  s$   è è € ÐHÐH E�5”<ÐHÐHÐHÐHÐHÐHr6   rS  )Ú
for_branchÚelseÚtestz(fiter):z
async for zfor ri  zauto_aiter(fiter)Úfiterú:rM  rþ   é   rO  z%(reciter, loop_render_func, depth=0):r2  Ústorez8Can't assign to special loop variable in for-loop targetz = 1r>   ÚAsynczLoopContext(r?   Úreciterzauto_aiter(rA   z&, undefined, loop_render_func, depth):z, undefined):z_loop_vars = {}z = 0rÒ  zloop(z, loop)r*  )*r«   rœ   Ú	recursiver€   Úiter_child_nodesr  r¨  r   rÆ   r–   rW  rP  Úelse_rê  rí   rï   rG  rõ   r;  rE  r2   r8  rE   rö   r>  r˜   rÐ   rË   rR   rê   rè   rB   rD  r”  r  rS  rø   r   r  rã   Údifference_updateÚstores)r'   r)   r*   rœ   Ú
test_frameÚ
else_frameÚextended_loopÚloop_refÚloop_filter_funcrR   Úiteration_indicators              r4   Ú	visit_ForzCodeGenerator.visit_For�  s   € Ø—[’[‘]”]ˆ
Ø $ˆ
ÔØ—[’[‘]”]ˆ
Ø—[’[‘]”]ˆ
ð ŒNð IØÝ˜t×4Ò4¸)Ð4ÑDÔDÀiÑPÔPðQðIõ ÐHÐH¨T¯]ª]½5¼;Ñ-GÔ-GÐHÑHÔHÑHÔHð	 	ð ˆØð 	DØ!Ô)×;Ò;¸FÑCÔCˆHàÔ×'Ò'¨¸Ð'Ñ@Ô@Ð@ØŒ:ð 	EØÔ×+Ò+¨D¸VÐ+ÑDÔDÐDàŒ9ñ 	AØ#×8Ò8Ñ:Ô:ÐØÔ×+Ò+¨D¸VÐ+ÑDÔDÐDØ�NŠN˜dŸišiÐ(8Ñ9Ô9ÐCÐCÐCÀTÄYÑOÔOÐOØ�KŠK‰MŒMˆMØ×Ò˜ZÑ(Ô(Ð(Ø�NŠN˜4×,Ò,¨\¸6ÑBÔBÑCÔCÐCØ�JŠJ�t”{ JÑ/Ô/Ð/Ø�JŠJ�vÑÔÐØ�JŠJ�t×(Ò(Ð)<¸gÑFÔFÑGÔGÐGØ�JŠJ�s‰OŒOˆOØ�KŠK‰MŒMˆMØ�NŠN˜5 $¤)Ñ,Ô,Ð,Ø�JŠJ�t”y *Ñ-Ô-Ð-Ø�JŠJ�s‰OŒOˆOØ�KŠK‰MŒMˆMØ�NŠN˜8Ñ$Ô$Ð$Ø�JŠJ�t”{ JÑ/Ô/Ð/Ø�LŠL˜‰OŒOˆOØ×Ò˜Z¸4ÐÑ@Ô@Ð@ð
 Œ>ð 	2Ø�NŠNØ—9’9˜VÑ$Ô$ÐKÐKÐKÈTñô ð ð �KŠK‰MŒMˆMØ�KŠK˜
Ñ#Ô#Ð#ð !+Ô 1ˆJÔð ð 	4Ø�NŠN˜hÐ2Ð2Ð2Ñ3Ô3Ð3à—M’M¥%¤*Ñ-Ô-ð 	ð 	ˆDØŒx˜7Ò"Ð" t¤y°FÒ':Ð':Ø—	’	ØNØ”Kñô ð øð
 Œ:ð 	9Ø"&×";Ò";Ñ"=Ô"=ÐØ�NŠNÐ1Ð7Ð7Ð7Ñ8Ô8Ð8à�Š�t×(Ò(¨°vÑ>Ô>ÀÑEÔEÐEØ�
Š
�4”; 
Ñ+Ô+Ð+Øð 	Ø�JŠJÐR˜HÐRÐR¨$×*;Ò*;¸GÑ*DÔ*DÐRÐRÐRÑSÔSÐSÐSà�JŠJ�vÑÔÐàŒ9ð 	/Ø�JŠJÐ*Ð-Ð-Ð-Ñ.Ô.Ð.ØŒ>ð 	 Ø�JŠJ�yÑ!Ô!Ð!Ð!àÔÔ(ð *°ð *Ø—
’
˜=Ñ)Ô)Ð)Ø�JŠJ�t”y %Ñ(Ô(Ð(ØÔÔ(ð  °ð  Ø—
’
˜3‘”�ØŒ9ð 	Ø�JŠJ�s‰OŒOˆOàŒ>ð 	BØ�JŠJÐ?Ñ@Ô@Ð@Ð@à�JŠJ¨-Ð@��¸SÑAÔAÐAà�Š‰ŒˆØ×Ò˜Ñ$Ô$Ð$à�ŠÐ(Ñ)Ô)Ð)Ø�Š˜œ	 :Ñ.Ô.Ð.ØŒ:ð 	9Ø�NŠNÐ1Ð7Ð7Ð7Ñ8Ô8Ð8Ø�Š‰ŒˆØ×ÒØ¨$¬.Ð*KÀÄ¸^ð 	ñ 	
ô 	
ð 	
ð Œ:ð 	Ø�NŠNÐ7Ð!4Ð7Ð7Ð7Ñ8Ô8Ð8Ø�KŠK‰MŒMˆMØ×Ò˜ZÑ(Ô(Ð(Ø�OŠO˜DœJ¨
Ñ3Ô3Ð3Ø×Ò˜ZÑ(Ô(Ð(Ø�LŠL‰NŒNˆNð Œ>ð 	"Ø×'Ò'¨
Ñ3Ô3Ð3Ø�LŠL‰NŒNˆNØ×Ò˜U DÑ)Ô)Ð)Ø�JŠJ˜$×+Ò+¨HÑ5Ô5Ð<Ð<Ð<Ñ=Ô=Ð=ØÔÔ(ð *Ø—
’
˜=Ñ)Ô)Ð)Ø�JŠJ�t”y %Ñ(Ô(Ð(ØÔÔ(ð  Ø—
’
˜3‘”�Ø�JŠJ�yÑ!Ô!Ð!Ø�NŠN˜5Ñ!Ô!Ð!ð Ôð 	PØÔ˜rÔ"×4Ò4°ZÔ5GÔ5NÑOÔOÐOÐOÐOð	Pð 	Pr6   c                 ó(  — |                      ¦   «         }|                      d|¦  «         |                      |j        |¦  «         |                      d¦  «         |                      ¦   «          |                      |j        |¦  «         |                      ¦   «          |j	        D ]‹}|                      d|¦  «         |                      |j        |¦  «         |                      d¦  «         |                      ¦   «          |                      |j        |¦  «         |                      ¦   «          ŒŒ|j
        rZ|                      d¦  «         |                      ¦   «          |                      |j
        |¦  «         |                      ¦   «          d S d S )NrM  rì  zelif rô   )r­   rï   r2   rê  rE   rõ   r  rS  rö   Úelif_ró  )r'   r)   r*   Úif_framerþ  s        r4   Úvisit_IfzCodeGenerator.visit_If(  sN  € Ø—:’:‘<”<ˆØ�Š�u˜dÑ#Ô#Ð#Ø�
Š
�4”9˜hÑ'Ô'Ð'Ø�
Š
�3‰ŒˆØ�Š‰ŒˆØ�Š˜œ	 8Ñ,Ô,Ð,Ø�Š‰ŒˆØ”Zð 	ð 	ˆEØ�NŠN˜7 EÑ*Ô*Ð*Ø�JŠJ�u”z 8Ñ,Ô,Ð,Ø�JŠJ�s‰OŒOˆOØ�KŠK‰MŒMˆMØ�OŠO˜EœJ¨Ñ1Ô1Ð1Ø�LŠL‰NŒNˆNˆNØŒ:ð 	Ø�NŠN˜7Ñ#Ô#Ð#Ø�KŠK‰MŒMˆMØ�OŠO˜DœJ¨Ñ1Ô1Ð1Ø�LŠL‰NŒNˆNˆNˆNð		ð 	r6   c                 ó°  — |                       ||¦  «        \  }}|                      ¦   «          |j        rV|j                             d¦  «        s|                      d|j        ›d�¦  «         |                      d|j        ›d�¦  «         |                      |j                             |j        ¦  «        › d�¦  «         |  	                    ||¦  «         d S )NrŒ  r’  rA   r�  rŽ  r1  )
r`  r  rš   rR   rÚ  rE   rï   r–   rR  rg  )r'   r)   r*   Úmacro_framer[  s        r4   Úvisit_MacrozCodeGenerator.visit_Macro=  sÑ   € Ø!%§¢°°uÑ!=Ô!=Ñˆ�YØ�Š‰ŒˆØŒ>ð 	>Ø”9×'Ò'¨Ñ,Ô,ð HØ—
’
ÐF¸¼	ÐFÐFÐFÑGÔGÐGØ�NŠNÐ<¨4¬9Ð<Ð<Ð<Ñ=Ô=Ð=Ø�
Š
�e”m×'Ò'¨¬	Ñ2Ô2Ð7Ð7Ð7Ñ8Ô8Ð8Ø�Š�y +Ñ.Ô.Ð.Ð.Ð.r6   c                 ó  — |                       ||¦  «        \  }}|                      d¦  «         |                      ||¦  «         |                      ||¦  «         |                      |j        |d¬¦  «         |                      |¦  «         d S )Nz	caller = T)Úforward_caller)r`  rï   rg  r   Ú
visit_CallÚcallr  )r'   r)   r*   Ú
call_framer[  s        r4   Úvisit_CallBlockzCodeGenerator.visit_CallBlockG  sˆ   € Ø $§¢°°eÑ <Ô <Ñˆ
�IØ�Š�{Ñ#Ô#Ð#Ø�Š�y *Ñ-Ô-Ð-Ø×Ò˜ Ñ%Ô%Ð%Ø�Š˜œ	 5¸ˆÑ>Ô>Ð>Ø�Š�uÑÔÐÐÐr6   c                 ó¢  — |                      ¦   «         }|j                             |¦  «         |                      |¦  «         |                      |¦  «         |                      |j        |¦  «         |                      ||¦  «         |                      |j	        |¦  «         |  
                    |¦  «         |                      |¦  «         d S r.   )r«   r–   rP  r;  r˜   r  rS  r   r½   Úfilterr  r>  )r'   r)   r*   Úfilter_frames       r4   Úvisit_FilterBlockzCodeGenerator.visit_FilterBlockO  s¼   € Ø—{’{‘}”}ˆØÔ×)Ò)¨$Ñ/Ô/Ð/Ø×Ò˜Ñ&Ô&Ð&Ø�Š�LÑ!Ô!Ð!Ø�Š˜œ	 <Ñ0Ô0Ð0Ø×Ò˜ Ñ%Ô%Ð%Ø×Ò˜$œ+ |Ñ4Ô4Ð4Ø�Š�uÑÔÐØ×Ò˜Ñ&Ô&Ð&Ð&Ð&r6   c                 óÖ  — |                      ¦   «         }|j                             |¦  «         |                      |¦  «         t	          |j        |j        ¦  «        D ]Z\  }}|                      ¦   «          |                      ||¦  «         |  	                    d¦  «         |                      ||¦  «         Œ[|  
                    |j        |¦  «         |                      |¦  «         d S )Nr1  )r«   r–   rP  r;  ÚzipÚtargetsÚvaluesr  r2   rE   r  rS  r>  )r'   r)   r*   Ú
with_framer8  Úexprs         r4   Ú
visit_WithzCodeGenerator.visit_WithZ  sÕ   € Ø—[’[‘]”]ˆ
ØÔ×'Ò'¨Ñ-Ô-Ð-Ø×Ò˜Ñ$Ô$Ð$Ý ¤¨d¬kÑ:Ô:ð 	$ð 	$‰LˆF�DØ�LŠL‰NŒNˆNØ�JŠJ�v˜zÑ*Ô*Ð*Ø�JŠJ�uÑÔÐØ�JŠJ�t˜UÑ#Ô#Ð#Ð#Ø�Š˜œ	 :Ñ.Ô.Ð.Ø×Ò˜Ñ$Ô$Ð$Ð$Ð$r6   c                 óf   — |                       |¦  «         |                      |j        |¦  «         d S r.   )r  r2   r)   rÂ  s      r4   Úvisit_ExprStmtzCodeGenerator.visit_ExprStmtf  s0   € Ø�Š�TÑÔÐØ�
Š
�4”9˜eÑ$Ô$Ð$Ð$Ð$r6   c                   ój   — e Zd ZU ej        ej        def                  ed<   ej        e         ed<   dS )úCodeGenerator._FinalizeInfo.ÚconstÚsrcN)rŠ   r‹   rŒ   r8   r°   ÚCallablerr   Ú__annotations__r�   r6   r4   Ú_FinalizeInfor  j  sB   € € € € € € ØŒz˜!œ* S¨# XÔ.Ô/Ð/Ð/Ñ/ØŒZ˜Œ_ÐÐÑÐÐr6   r  r_   c                 ó    — t          | ¦  «        S )z¼The default finalize function if the environment isn't
        configured with one. Or, if the environment has one, this is
        called on that function's output for constants.
        )rr   rz   s    r4   Ú_default_finalizezCodeGenerator._default_finalizen  s   € õ �5‰zŒzÐr6   Ú	_finalizec                 óê  ‡ ‡‡— ‰ j         �‰ j         S ‰ j        x}Šd}‰ j        j        rªd}‰ j        j        Št          j        dt          j        dt          j        di                     t	          j        ‰¦  «        ¦  «        }d}|€ dt          j
        dt          j
        fˆˆfd„}n-|› |› d	�}|dk    r dt          j
        dt          j
        fˆˆˆ fd
„}‰                      ||¦  «        ‰ _         ‰ j         S )a‰  Build the finalize function to be used on constants and at
        runtime. Cached so it's only created once for all output nodes.

        Returns a ``namedtuple`` with the following attributes:

        ``const``
            A function to finalize constant data at compile time.

        ``src``
            Source code to output around nodes to be evaluated at
            runtime.
        Nzenvironment.finalize(rÕ   úcontext.eval_ctxrB   r_   r%   c                 ó,   •—  ‰ ‰| ¦  «        ¦  «        S r.   r�   )r_   r_  Úenv_finalizes    €€r4   Úfinalizez.CodeGenerator._make_finalize.<locals>.finalizeš  s   ø€ Ø"˜7 < <°Ñ#6Ô#6Ñ7Ô7Ð7r6   r>   c                 ó8   •—  ‰ ‰‰j         | ¦  «        ¦  «        S r.   )rB   )r_   r_  r$  r'   s    €€€r4   r%  z.CodeGenerator._make_finalize.<locals>.finalize¢  s"   ø€ Ø&˜w | |°DÔ4DÀeÑ'LÔ'LÑMÔMÐMr6   )r   r  rB   r%  r   rÕ   Úeval_contextÚgetÚfrom_objr8   r9   r  )r'   r%  r  Úpass_argr_  r$  s   `   @@r4   Ú_make_finalizezCodeGenerator._make_finalizex  sX  øøø€ ð Œ>Ð%Ø”>Ð!ð "Ô3Ð3ˆ�7ØˆàÔÔ$ð 	NØ)ˆCØÔ+Ô4ˆLåÔ  )ÝÔ%Ð'9ÝÔ$ mð÷ ŠcÝÔ! ,Ñ/Ô/ñô ð	 ð ˆHàÐð8¥A¤Eð 8­a¬eð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð Ð*˜hÐ*Ð*Ð*�à˜}Ò,Ð,ðN­¬ð Nµ!´%ð Nð Nð Nð Nð Nð Nð Nð Nð ×+Ò+¨H°cÑ:Ô:ˆŒØŒ~Ðr6   Úgroupc                 ó:   — t          t          |¦  «        ¦  «        S )z™Given a group of constant values converted from ``Output``
        child nodes, produce a string to write to the template module
        source.
        )rc  r   )r'   r,  s     r4   Ú_output_const_reprz CodeGenerator._output_const_repr¨  s   € õ
 •F˜5‘M”MÑ"Ô"Ð"r6   r%  c                 óè   — |                      |j        ¦  «        }|j        j        rt          |¦  «        }t	          |t
          j        ¦  «        rt          |¦  «        S |                     |¦  «        S )aC  Try to optimize a child of an ``Output`` node by trying to
        convert it to constant, finalized data at compile time.

        If :exc:`Impossible` is raised, the node is not constant and
        will be evaluated at runtime. Any other exception will also be
        evaluated at runtime for easier debugging.
        )	Úas_constr0   r÷   r   rX   r   ÚTemplateDatarr   r  )r'   r)   r*   r%  r  s        r4   Ú_output_child_to_constz$CodeGenerator._output_child_to_const¯  sd   € ð —’˜eœnÑ-Ô-ˆàŒ>Ô$ð 	"Ý˜5‘M”MˆEõ �d�EÔ.Ñ/Ô/ð 	Ý�u‘:”:Ðà�~Š~˜eÑ$Ô$Ð$r6   c                 óþ   — |j         j        r|                      d¦  «         n7|j         j        r|                      d¦  «         n|                      d¦  «         |j        �|                      |j        ¦  «         dS dS )zXOutput extra source code before visiting a child of an
        ``Output`` node.
        z1(escape if context.eval_ctx.autoescape else str)(zescape(zstr(N)r0   r1   rE   r÷   r  ©r'   r)   r*   r%  s       r4   Ú_output_child_prezCodeGenerator._output_child_preÄ  s…   € ð Œ>Ô"ð 	Ø�JŠJÐJÑKÔKÐKÐKØŒ^Ô&ð 	Ø�JŠJ�yÑ!Ô!Ð!Ð!à�JŠJ�vÑÔÐàŒ<Ð#Ø�JŠJ�x”|Ñ$Ô$Ð$Ð$Ð$ð $Ð#r6   c                 ól   — |                       d¦  «         |j        �|                       d¦  «         dS dS )zWOutput extra source code after visiting a child of an
        ``Output`` node.
        rA   N)rE   r  r4  s       r4   Ú_output_child_postz CodeGenerator._output_child_postÔ  s6   € ð 	�
Š
�3‰ŒˆàŒ<Ð#Ø�JŠJ�s‰OŒOˆOˆOˆOð $Ð#r6   c                 óÞ  — |j         r2| j        rd S |                      d¦  «         |                      ¦   «          |                      ¦   «         }g }|j        D ]Ï}	 |j        s-t          |t
          j        ¦  «        st          j	        ¦   «         ‚|  
                    |||¦  «        }n1# t
          j	        t          f$ r |                     |¦  «         Y Œ|w xY w|r7t          |d         t          ¦  «        r|d                              |¦  «         Œ¹|                     |g¦  «         ŒÐ|j        �bt          |¦  «        dk    r|                      |j        › d�¦  «         n|                      |j        › d�¦  «         |                      ¦   «          |D ]ø}t          |t          ¦  «        rN|                      |¦  «        }|j        €|                      d|z   ¦  «         ŒL|                      |dz   ¦  «         Œe|j        €|                      d|¦  «         n|                      |¦  «         |                      |||¦  «         |                      ||¦  «         |                      |||¦  «         |j        �|                      d¦  «         Œù|j        �>|                      ¦   «          |                      t          |¦  «        dk    rdnd	¦  «         |j         r|                      ¦   «          d S d S )
Nr¸  r*  r
   rÿ   z	.extend((rþ   rd  rA   ró   )r—   rÚ   rï   rõ   r+  r   r  rX   r1  Ú
Impossibler2  Ú	Exceptionr  rt   r˜   rU  r.  r  r5  r2   r7  rE   rö   )	r'   r)   r*   r%  rS  Úchildr  ÚitemÚvals	            r4   Úvisit_OutputzCodeGenerator.visit_Outputß  s   € àÔ%ð 	àÔ%ð Ø�à�NŠNÐ8Ñ9Ô9Ð9Ø�KŠK‰MŒMˆMà×&Ò&Ñ(Ô(ˆØ;=ˆð
 ”Zð 	%ð 	%ˆEðð ”Nð-õ " %­Ô);Ñ<Ô<ð-õ  Ô*Ñ,Ô,Ð,à×3Ò3°E¸5À(ÑKÔK��øÝÔ$¥iÐ0ð ð ð ð —’˜EÑ"Ô"Ð"Ø�ðøøøð ð %�
 4¨¤8­TÑ2Ô2ð %Ø�R”—’ Ñ&Ô&Ð&Ð&à—’˜U˜GÑ$Ô$Ð$Ð$àŒ<Ð#Ý�4‰yŒy˜AŠ~ˆ~Ø—’ %¤,Ð8Ð8Ð8Ñ9Ô9Ð9Ð9à—’ %¤,Ð9Ð9Ð9Ñ:Ô:Ð:à�KŠK‰MŒMˆMàð 	$ð 	$ˆDÝ˜$¥Ñ%Ô%ð $à×-Ò-¨dÑ3Ô3�à”<Ð'Ø—N’N 8¨c¡>Ñ2Ô2Ð2Ð2à—N’N 3¨¡9Ñ-Ô-Ð-Ð-à”<Ð'Ø—N’N 8¨TÑ2Ô2Ð2Ð2à—L’L Ñ&Ô&Ð&ð ×&Ò& t¨U°HÑ=Ô=Ð=Ø—
’
˜4 Ñ'Ô'Ð'Ø×'Ò'¨¨e°XÑ>Ô>Ð>à”<Ð+Ø—J’J˜s‘O”O�OøàŒ<Ð#Ø�LŠL‰NŒNˆNØ�NŠN¥# d¡)¤)¨q¢. .˜3˜3°dÑ;Ô;Ð;àÔ%ð 	Ø�LŠL‰NŒNˆNˆNˆNð	ð 	s   ÁAB&Â&+CÃCc                 óª  — |                       ¦   «          t          ¦   «         }|                     t          j        ¦  «        D ]›}|j        |v rŒ|                     |j        ¦  «         |j                             |j        ¦  «        }|  	                    d|› d�¦  «         |  
                    ¦   «          |  	                    d¦  «         |                      ¦   «          Œœ|                      |¦  «         |                      |j        |¦  «         |                      d¦  «         |                      |j        |¦  «         |                      |¦  «         d S )Nzif not isinstance(z, Namespace):zMraise TemplateRuntimeError("cannot assign attribute on non-namespace object")r1  )r‰  ru   r¨  r   ÚNSRefrR   r¼   r–   rR  rï   rõ   rö   r  r2   r8  rE   r)   r™  )r'   r)   r*   Ú	seen_refsÚnsrefrR  s         r4   Úvisit_AssignzCodeGenerator.visit_Assign.  s;  € Ø×!Ò!Ñ#Ô#Ð#õ !$¡¤ˆ	à—]’]¥5¤;Ñ/Ô/ð 	ð 	ˆEØŒz˜YÐ&Ð&ð à�MŠM˜%œ*Ñ%Ô%Ð%Ø”-×#Ò# E¤JÑ/Ô/ˆCØ�NŠNÐB°ÐBÐBÐBÑCÔCÐCØ�KŠK‰MŒMˆMØ�NŠNðFñô ð ð �LŠL‰NŒNˆNˆNà�Š�TÑÔÐØ�
Š
�4”; Ñ&Ô&Ð&Ø�
Š
�5ÑÔÐØ�
Š
�4”9˜eÑ$Ô$Ð$Ø× Ò  Ñ'Ô'Ð'Ð'Ð'r6   c                 ó¬  — |                       ¦   «          |                     ¦   «         }d|_        |j                             |¦  «         |                      |¦  «         |                      |¦  «         |                      |j        |¦  «         |  	                    |¦  «         |  
                    |j        |¦  «         |                      d¦  «         |j        �|                      |j        |¦  «         n|                      d|j        › d�¦  «         |                      d¦  «         |                      |¦  «         |                      |¦  «         d S )NFz9 = (Markup if context.eval_ctx.autoescape else identity)(úconcat(rA   )r‰  r«   r—   r–   rP  r;  r˜   r  rS  r  r2   r8  rE   r  r½   r™  r>  )r'   r)   r*   r�   s       r4   Úvisit_AssignBlockzCodeGenerator.visit_AssignBlockM  s:  € Ø×!Ò!Ñ#Ô#Ð#Ø—k’k‘m”mˆð ,1ˆÔ(ØÔ×(Ò(¨Ñ.Ô.Ð.Ø×Ò˜Ñ%Ô%Ð%Ø�Š�KÑ Ô Ð Ø�Š˜œ	 ;Ñ/Ô/Ð/Ø�Š�TÑÔÐØ�
Š
�4”; Ñ&Ô&Ð&Ø�
Š
ÐNÑOÔOÐOØŒ;Ð"Ø×Ò˜dœk¨;Ñ7Ô7Ð7Ð7à�JŠJÐ6 Ô!3Ð6Ð6Ð6Ñ7Ô7Ð7Ø�
Š
�3‰ŒˆØ× Ò  Ñ'Ô'Ð'Ø×Ò˜Ñ%Ô%Ð%Ð%Ð%r6   c           	      óì  — |j         dk    rA|j        s|j        s|j        r,| j        r%| j        d                              |j        ¦  «         |j                             |j        ¦  «        }|j         dk    rh|j         	                    |¦  «        }|�&|d         t          k    r|                      |¦  «        r&|                      d|j        ›d|› d|› d�¦  «         d S |                      |¦  «         d S )	Nrî  r*  rÊ   r   z(undefined(name=z) if z is missing else rA   )rË   rš   rœ   r�   rã   r¼   rR   r–   rR  Ú	find_loadr   r‡  rE   )r'   r)   r*   rR  rÊ   s        r4   rÍ   zCodeGenerator.visit_Namee  s  € ØŒ8�wÒÐØŒNð Ø#Ô.ð Ø27Ô2Cð ð Ô!ð 6ØÔ" 2Ô&×*Ò*¨4¬9Ñ5Ô5Ð5ØŒm×Ò ¤	Ñ*Ô*ˆð
 Œ8�vÒÐØ”=×*Ò*¨3Ñ/Ô/ˆDàÐ Ø˜”GÕ1Ò1Ð1Ø×4Ò4°SÑ9Ô9ð 2ð —
’
ØU t¤yÐUÐU¸ÐUÐUÈsÐUÐUÐUñô ð ð �à�
Š
�3‰Œˆˆˆr6   c                 ó„   — |j                              |j        ¦  «        }|                      |› d|j        ›d�¦  «         d S )Nr'  r(  )r–   rR  rR   rï   Úattr)r'   r)   r*   rR  s       r4   Úvisit_NSRefzCodeGenerator.visit_NSRef~  sF   € ð
 Œm×Ò ¤	Ñ*Ô*ˆØ�Š˜#Ð.Ð. ¤	Ð.Ð.Ð.Ñ/Ô/Ð/Ð/Ð/r6   c                 óð   — |                      |j        ¦  «        }t          |t          ¦  «        r$|                      t          |¦  «        ¦  «         d S |                      t          |¦  «        ¦  «         d S r.   )r0  r0   rX   ro   rE   rr   rc  )r'   r)   r*   r=  s       r4   Úvisit_ConstzCodeGenerator.visit_Const†  sc   € Ø�mŠm˜EœNÑ+Ô+ˆÝ�c�5Ñ!Ô!ð 	"Ø�JŠJ•s˜3‘x”xÑ Ô Ð Ð Ð à�JŠJ•t˜C‘y”yÑ!Ô!Ð!Ð!Ð!r6   c                 óä   — 	 |                       t          |                     |j        ¦  «        ¦  «        ¦  «         d S # t          j        $ r" |                       d|j        ›d�¦  «         Y d S w xY w©Nz6(Markup if context.eval_ctx.autoescape else identity)(rA   )rE   rc  r0  r0   r   r9  ÚdatarÂ  s      r4   Úvisit_TemplateDataz CodeGenerator.visit_TemplateData�  sˆ   € ð	Ø�JŠJ•t˜DŸMšM¨%¬.Ñ9Ô9Ñ:Ô:Ñ;Ô;Ð;Ð;Ð;øÝÔð 	ð 	ð 	Ø�JŠJØWÈÌÐWÐWÐWñô ð ð ð ð ð	øøøs   ‚:> ¾-A/Á.A/c                 óü   — |                       d¦  «         d}t          |j        ¦  «        D ]2\  }}|r|                       d¦  «         |                      ||¦  «         Œ3|                       |dk    rdnd¦  «         d S )Nr?   r*  r>   r   z,)rA   ©rE   rQ  ry   r2   ©r'   r)   r*   r^  r<  s        r4   Úvisit_TuplezCodeGenerator.visit_Tuple•  sˆ   € Ø�
Š
�3‰ŒˆØˆÝ" 4¤:Ñ.Ô.ð 	$ð 	$‰IˆC�Øð !Ø—
’
˜4Ñ Ô Ð Ø�JŠJ�t˜UÑ#Ô#Ð#Ð#Ø�
Š
˜3 !š8˜8�4�4¨Ñ-Ô-Ð-Ð-Ð-r6   c                 óè   — |                       d¦  «         t          |j        ¦  «        D ]2\  }}|r|                       d¦  «         |                      ||¦  «         Œ3|                       d¦  «         d S )Nr'  r>   r(  rS  rT  s        r4   Ú
visit_ListzCodeGenerator.visit_Listž  sr   € Ø�
Š
�3‰ŒˆÝ" 4¤:Ñ.Ô.ð 	$ð 	$‰IˆC�Øð !Ø—
’
˜4Ñ Ô Ð Ø�JŠJ�t˜UÑ#Ô#Ð#Ð#Ø�
Š
�3‰Œˆˆˆr6   c                 óR  — |                       d¦  «         t          |j        ¦  «        D ]g\  }}|r|                       d¦  «         |                      |j        |¦  «         |                       d¦  «         |                      |j        |¦  «         Œh|                       d¦  «         d S )Nrn  r>   r  r  )rE   rQ  ry   r2   r  r_   rT  s        r4   Ú
visit_DictzCodeGenerator.visit_Dict¦  sœ   € Ø�
Š
�3‰ŒˆÝ" 4¤:Ñ.Ô.ð 	*ð 	*‰IˆC�Øð !Ø—
’
˜4Ñ Ô Ð Ø�JŠJ�t”x Ñ'Ô'Ð'Ø�JŠJ�tÑÔÐØ�JŠJ�t”z 5Ñ)Ô)Ð)Ð)Ø�
Š
�3‰Œˆˆˆr6   ú+ú-Ú*ú/z//z**ú%ÚandÚorznot c                 ó
  — |j         j        rd}n|j         j        rd}nd}|                      |› d�¦  «         |j        D ]-}|                      ||¦  «         |                      d¦  «         Œ.|                      d¦  «         d S )Nz8(markup_join if context.eval_ctx.volatile else str_join)Úmarkup_joinÚstr_joinz((r>   ró   )r0   r1   r÷   rE   r   r2   )r'   r)   r*   rÏ  r"  s        r4   Úvisit_ConcatzCodeGenerator.visit_Concat½  sœ   € àŒ>Ô"ð 	#ØRˆIˆIØŒ^Ô&ð 	#Ø%ˆIˆIà"ˆIØ�
Š
�iÐ#Ð#Ð#Ñ$Ô$Ð$Ø”:ð 	ð 	ˆCØ�JŠJ�s˜EÑ"Ô"Ð"Ø�JŠJ�tÑÔÐÐØ�
Š
�4ÑÔÐÐÐr6   c                 óÐ   — |                       d¦  «         |                      |j        |¦  «         |j        D ]}|                      ||¦  «         Œ|                       d¦  «         d S )Nr?   rA   )rE   r2   r  ÚopsrH   s       r4   Úvisit_ComparezCodeGenerator.visit_CompareË  sb   € à�
Š
�3‰ŒˆØ�
Š
�4”9˜eÑ$Ô$Ð$Ø”(ð 	"ð 	"ˆBØ�JŠJ�r˜5Ñ!Ô!Ð!Ð!Ø�
Š
�3‰Œˆˆˆr6   c                 óŽ   — |                       dt          |j                 › d�¦  «         |                      |j        |¦  «         d S )Nr@   )rE   Ú	operatorsr;   r2   r  rÂ  s      r4   Úvisit_OperandzCodeGenerator.visit_OperandÓ  sC   € Ø�
Š
Ð,•y ¤Ô)Ð,Ð,Ð,Ñ-Ô-Ð-Ø�
Š
�4”9˜eÑ$Ô$Ð$Ð$Ð$r6   c                 ó*  — | j         j        r|                      d¦  «         |                      d¦  «         |                      |j        |¦  «         |                      d|j        ›d�¦  «         | j         j        r|                      d¦  «         d S d S )Nú(await auto_await(zenvironment.getattr(r>   rA   ró   )rB   rD  rE   r2   r)   rJ  rÂ  s      r4   Úvisit_GetattrzCodeGenerator.visit_Getattr×  sœ   € àÔÔ$ð 	-Ø�JŠJÐ+Ñ,Ô,Ð,à�
Š
Ð)Ñ*Ô*Ð*Ø�
Š
�4”9˜eÑ$Ô$Ð$Ø�
Š
Ð&˜œ	Ð&Ð&Ð&Ñ'Ô'Ð'àÔÔ$ð 	Ø�JŠJ�tÑÔÐÐÐð	ð 	r6   c                 óz  — t          |j        t          j        ¦  «        rb|                      |j        |¦  «         |                      d¦  «         |                      |j        |¦  «         |                      d¦  «         d S | j        j        r|                      d¦  «         |                      d¦  «         |                      |j        |¦  «         |                      d¦  «         |                      |j        |¦  «         |                      d¦  «         | j        j        r|                      d¦  «         d S d S )Nr'  r(  rl  zenvironment.getitem(r>   rA   ró   )	rX   r"  r   ÚSlicer2   r)   rE   rB   rD  rÂ  s      r4   Úvisit_GetitemzCodeGenerator.visit_Getitemã  s  € õ �d”h¥¤Ñ,Ô,ð 	!Ø�JŠJ�t”y %Ñ(Ô(Ð(Ø�JŠJ�s‰OŒOˆOØ�JŠJ�t”x Ñ'Ô'Ð'Ø�JŠJ�s‰OŒOˆOˆOˆOàÔÔ(ð 1Ø—
’
Ð/Ñ0Ô0Ð0à�JŠJÐ-Ñ.Ô.Ð.Ø�JŠJ�t”y %Ñ(Ô(Ð(Ø�JŠJ�tÑÔÐØ�JŠJ�t”x Ñ'Ô'Ð'Ø�JŠJ�s‰OŒOˆOàÔÔ(ð !Ø—
’
˜4Ñ Ô Ð Ð Ð ð!ð !r6   c                 ó*  — |j         �|                      |j         |¦  «         |                      d¦  «         |j        �|                      |j        |¦  «         |j        �2|                      d¦  «         |                      |j        |¦  «         d S d S )Nrì  )Ústartr2   rE   Ústoprû   rÂ  s      r4   Úvisit_SlicezCodeGenerator.visit_Sliceø  sˆ   € ØŒ:Ð!Ø�JŠJ�t”z 5Ñ)Ô)Ð)Ø�
Š
�3‰ŒˆØŒ9Ð Ø�JŠJ�t”y %Ñ(Ô(Ð(ØŒ9Ð Ø�JŠJ�s‰OŒOˆOØ�JŠJ�t”y %Ñ(Ô(Ð(Ð(Ð(ð !Ð r6   Ú	is_filterc              #   ó\  K  — | j         j        r|                      d¦  «         |rM|                      | j        |j                 › d�¦  «         | j         j                             |j        ¦  «        }nL|                      | j        |j                 › d�¦  «         | j         j                             |j        ¦  «        }|€4|j        s-|rdnd}|                      d|› d|j        ›d�|j	        ¦  «         t          j        dt          j        d	t          j         d
i                     t          j        |¦  «        ¦  «        }|�|                      |› d�¦  «         d V — |                      ||¦  «         |                      d¦  «         | j         j        r|                      d¦  «         d S d S )Nrl  r?   r  rê  zNo r+  r�  rÕ   r"  rB   r>   rA   ró   )rB   rD  rE   r·   rR   r(  r¸   rž   rê   rè   r   rÕ   r'  r)  r$  )r'   r)   r*   ru  rG  Ú	type_namer*  s          r4   Ú_filter_test_commonz!CodeGenerator._filter_test_common  s»  è è € ð ÔÔ$ð 	-Ø�JŠJÐ+Ñ,Ô,Ð,àð 	9Ø�JŠJ˜$œ, t¤yÔ1Ð4Ð4Ð4Ñ5Ô5Ð5ØÔ#Ô+×/Ò/°´	Ñ:Ô:ˆDˆDà�JŠJ˜$œ* T¤YÔ/Ð2Ð2Ð2Ñ3Ô3Ð3ØÔ#Ô)×-Ò-¨d¬iÑ8Ô8ˆDð
 ˆ< Ô 0ˆ<Ø$-Ð9˜˜°6ˆIØ�IŠIÐ<˜IÐ<Ð<¨d¬iÐ<Ð<Ð<¸d¼kÑJÔJÐJõ Ô˜iÝÔ!Ð#5ÝÔ  -ð
÷ Š#ÝÔ˜dÑ#Ô#ñ
ô 
ð	 	ð ÐØ�JŠJ˜(���Ñ'Ô'Ð'ð 	ˆˆˆà�Š�t˜UÑ#Ô#Ð#Ø�
Š
�3‰ŒˆàÔÔ$ð 	Ø�JŠJ�tÑÔÐÐÐð	ð 	r6   c                 ó¤  — |                       ||d¦  «        5  |j        �|                      |j        |¦  «         n||j        j        r'|                      d|j        › d|j        › d�¦  «         nI|j        j        r|                      d|j        › d�¦  «         n|                      d|j        › d�¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTz(Markup(concat(z.)) if context.eval_ctx.autoescape else concat(ró   zMarkup(concat(rE  rA   )rx  r)   r2   r0   r1   rE   r˜   r÷   rÂ  s      r4   r½   zCodeGenerator.visit_Filter,  sH  € à×%Ò% d¨E°4Ñ8Ô8ð 	6ð 	6ð ŒyÐ$Ø—
’
˜4œ9 eÑ,Ô,Ð,Ð,Ø”Ô(ð 6Ø—
’
ðT e¤lð Tð TØCHÄ<ðTð Tð Tñô ð ð ð ”Ô*ð 6Ø—
’
Ð<¨E¬LÐ<Ð<Ð<Ñ=Ô=Ð=Ð=à—
’
Ð4 U¤\Ð4Ð4Ð4Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s   ˜B CÃC	ÃC	c                 óœ   — |                       ||d¦  «        5  |                      |j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r„   )rx  r2   r)   rÂ  s      r4   r¿   zCodeGenerator.visit_Test=  s”   € à×%Ò% d¨E°5Ñ9Ô9ð 	)ð 	)Ø�JŠJ�t”y %Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   ˜AÁAÁAc                 ól  ‡ ‡‡— ‰                      ¦   «         Šdˆˆˆ fd„}‰                      d¦  «         ‰                      ‰j        ‰¦  «         ‰                      d¦  «         ‰                      ‰j        ‰¦  «         ‰                      d¦  «          |¦   «          ‰                      d¦  «         d S )Nr%   c                  ó¨   •— ‰j         �‰                     ‰j         ‰ ¦  «         d S ‰                     d‰                     ‰¦  «        › d�¦  «         d S )Nz1cond_expr_undefined("the inline if-expression on z6 evaluated to false and no else section was defined."))Úexpr2r2   rE   rj  )r*   r)   r'   s   €€€r4   Úwrite_expr2z1CodeGenerator.visit_CondExpr.<locals>.write_expr2F  si   ø€ ØŒzÐ%Ø—
’
˜4œ: uÑ-Ô-Ð-Ø�à�JŠJð+Ø—M’M $Ñ'Ô'ð+ð +ð +ñô ð ð ð r6   r?   z if z else rA   rÃ   )r­   rE   r2   Úexpr1rê  )r'   r)   r*   r~  s   ``` r4   Úvisit_CondExprzCodeGenerator.visit_CondExprB  s¹   øøø€ à—
’
‘”ˆð		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 	�
Š
�3‰ŒˆØ�
Š
�4”:˜uÑ%Ô%Ð%Ø�
Š
�6ÑÔÐØ�
Š
�4”9˜eÑ$Ô$Ð$Ø�
Š
�8ÑÔÐØˆ‰ŒˆØ�
Š
�3‰Œˆˆˆr6   r  c                 ó  — | j         j        r|                      d¦  «         | j         j        r|                      d¦  «         n|                      d¦  «         |                      |j        |¦  «         |rddind }|j        rddini }|j        rddini }|r |j        |fi |¤Ž n|s|rt          |fi |¤Ž}|  
                    |||¦  «         |                      d¦  «         | j         j        r|                      d¦  «         d S d S )	Nrl  zenvironment.call(context, zcontext.call(rI  Ú
_loop_varsÚ_block_varsrA   ró   )rB   rD  rE   rC   r2   r)   rœ   r�   r¥   rx   r$  )r'   r)   r*   r  r  Úloop_kwargsÚblock_kwargss          r4   r  zCodeGenerator.visit_CallY  sS  € ð ÔÔ$ð 	-Ø�JŠJÐ+Ñ,Ô,Ð,ØÔÔ%ð 	(Ø�JŠJÐ3Ñ4Ô4Ð4Ð4à�JŠJ�Ñ'Ô'Ð'Ø�
Š
�4”9˜eÑ$Ô$Ð$Ø/=ÐG˜ (Ð+Ð+À4ˆØ6;Ô6FÐN�| \Ð2Ð2ÈBˆØ9>Ô9JÐR˜ }Ð5Ð5ÐPRˆØð 	=ØˆLÔ Ð<Ð<¨|Ð<Ð<Ð<Ð<Øð 	=˜Lð 	=Ý Ð<Ð<¨|Ð<Ð<ˆLØ�Š�t˜U LÑ1Ô1Ð1Ø�
Š
�3‰ŒˆØÔÔ$ð 	Ø�JŠJ�tÑÔÐÐÐð	ð 	r6   c                 óv   — |                       |j        dz   ¦  «         |                      |j        |¦  «         d S )Nr  )rE   r  r2   r_   rÂ  s      r4   Úvisit_KeywordzCodeGenerator.visit_Keywordp  s6   € Ø�
Š
�4”8˜c‘>Ñ"Ô"Ð"Ø�
Š
�4”:˜uÑ%Ô%Ð%Ð%Ð%r6   c                 ó�   — |                       d¦  «         |                      |j        |¦  «         |                       d¦  «         d S )NzMarkup(rA   ©rE   r2   r  rÂ  s      r4   Úvisit_MarkSafezCodeGenerator.visit_MarkSafev  s=   € Ø�
Š
�9ÑÔÐØ�
Š
�4”9˜eÑ$Ô$Ð$Ø�
Š
�3‰Œˆˆˆr6   c                 ó�   — |                       d¦  «         |                      |j        |¦  «         |                       d¦  «         d S rO  r‰  rÂ  s      r4   Úvisit_MarkSafeIfAutoescapez(CodeGenerator.visit_MarkSafeIfAutoescape{  s@   € ð 	�
Š
ÐKÑLÔLÐLØ�
Š
�4”9˜eÑ$Ô$Ð$Ø�
Š
�3‰Œˆˆˆr6   c                 ó@   — |                       d|j        z   ¦  «         d S )Nzenvironment.©rE   rR   rÂ  s      r4   Úvisit_EnvironmentAttributez(CodeGenerator.visit_EnvironmentAttribute‚  s#   € ð 	�
Š
�> D¤IÑ-Ñ.Ô.Ð.Ð.Ð.r6   c                 óP   — |                       d|j        ›d|j        › �¦  «         d S )Nzenvironment.extensions[z].)rE   Ú
identifierrR   rÂ  s      r4   Úvisit_ExtensionAttributez&CodeGenerator.visit_ExtensionAttribute‡  s1   € ð 	�
Š
ÐM¨T¬_ÐMÐMÀ$Ä)ÐMÐMÑNÔNÐNÐNÐNr6   c                 óP   — |                       | j        |j                 ¦  «         d S r.   )rE   r×   rª  rÂ  s      r4   Úvisit_ImportedNamez CodeGenerator.visit_ImportedNameŒ  s$   € Ø�
Š
�4Ô& t¤Ô7Ñ8Ô8Ð8Ð8Ð8r6   c                 ó:   — |                       |j        ¦  «         d S r.   rŽ  rÂ  s      r4   Úvisit_InternalNamez CodeGenerator.visit_InternalName�  s   € Ø�
Š
�4”9ÑÔÐÐÐr6   c                 ó0   — |                       d¦  «         d S )NrÕ   )rE   rÂ  s      r4   Úvisit_ContextReferencez$CodeGenerator.visit_ContextReference’  s   € ð 	�
Š
�9ÑÔÐÐÐr6   c                 óV   — |                       |                      |¦  «        ¦  «         d S r.   )rE   r…  rÂ  s      r4   Úvisit_DerivedContextReferencez+CodeGenerator.visit_DerivedContextReference—  s*   € ð 	�
Š
�4×&Ò& uÑ-Ô-Ñ.Ô.Ð.Ð.Ð.r6   c                 ó2   — |                       d|¦  «         d S )NÚcontinuers  rÂ  s      r4   Úvisit_ContinuezCodeGenerator.visit_Continueœ  s   € Ø�Š�z 4Ñ(Ô(Ð(Ð(Ð(r6   c                 ó2   — |                       d|¦  «         d S )NÚbreakrs  rÂ  s      r4   Úvisit_BreakzCodeGenerator.visit_BreakŸ  s   € Ø�Š�w Ñ%Ô%Ð%Ð%Ð%r6   c                 óì   — |                      ¦   «         }|j                             |¦  «         |                      |¦  «         |                      |j        |¦  «         |                      |¦  «         d S r.   )r«   r–   rP  r;  r  rS  r>  )r'   r)   r*   Úscope_frames       r4   Úvisit_ScopezCodeGenerator.visit_Scope¢  sj   € Ø—k’k‘m”mˆØÔ×(Ò(¨Ñ.Ô.Ð.Ø×Ò˜Ñ%Ô%Ð%Ø�Š˜œ	 ;Ñ/Ô/Ð/Ø×Ò˜Ñ%Ô%Ð%Ð%Ð%r6   c                 ó*  — |                       ¦   «         }|                      |› d|                      |¦  «        › �¦  «         |                      |› d�¦  «         |                      |j        |¦  «         |                      |¦  «         |                     d¬¦  «        }|j                             |¦  «         |  	                    |¦  «         |  
                    |j        |¦  «         |                      |¦  «         |                      ¦   «          d S )Nr1  z.vars = T)r©   )rí   rï   r…  r2   rÕ   r|  r«   r–   rP  r;  r  rS  r>  r~  )r'   r)   r*   rË   r¢  s        r4   Úvisit_OverlayScopez CodeGenerator.visit_OverlayScope©  s  € Ø×'Ò'Ñ)Ô)ˆØ�Š˜#Ð>Ð> $×"5Ò"5°eÑ"<Ô"<Ð>Ð>Ñ?Ô?Ð?Ø�Š˜#Ð'Ð'Ð'Ñ(Ô(Ð(Ø�
Š
�4”< Ñ'Ô'Ð'Ø×#Ò# CÑ(Ô(Ð(à—k’k¨4�kÑ0Ô0ˆØÔ×(Ò(¨Ñ.Ô.Ð.Ø×Ò˜Ñ%Ô%Ð%Ø�Š˜œ	 ;Ñ/Ô/Ð/Ø×Ò˜Ñ%Ô%Ð%Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$r6   c                 óD  — |j         D ]—}|                      d|j        › d�¦  «         |                      |j        |¦  «         	 |j                             |j        ¦  «        }t          |j        |j        |¦  «         Œw# t          j	        $ r d|j        _
        Y Œ”w xY wd S )Nzcontext.eval_ctx.r1  T)Úoptionsrï   r  r2   r_   r0  r0   Úsetattrr   r9  r1   )r'   r)   r*   Úkeywordr=  s        r4   Úvisit_EvalContextModifierz'CodeGenerator.visit_EvalContextModifier·  s¼   € ð ”|ð 	:ð 	:ˆGØ�NŠNÐ?¨w¬{Ð?Ð?Ð?Ñ@Ô@Ð@Ø�JŠJ�w”} eÑ,Ô,Ð,ð:Ø”m×,Ò,¨U¬^Ñ<Ô<�õ ˜œ¨¬°SÑ9Ô9Ð9Ð9øõ Ô#ð /ð /ð /Ø*.�”Ô'Ð'Ð'ð/øøøð	:ð 	:s   ÁA?Á?BÂBc                 ób  — |                       ¦   «         }|j                             ¦   «         }|                      |› d�¦  «         |                      ||¦  «         |j        D ]}|                      ||¦  «         Œ|j                             |¦  «         |                      d|› d�¦  «         d S )Nz = context.eval_ctx.save()zcontext.eval_ctx.revert(rA   )rí   r0   Úsaverï   rª  rS  r2   Úrevert)r'   r)   r*   Úold_ctx_nameÚ	saved_ctxr;  s         r4   Úvisit_ScopedEvalContextModifierz-CodeGenerator.visit_ScopedEvalContextModifierÄ  s»   € ð ×0Ò0Ñ2Ô2ˆØ”N×'Ò'Ñ)Ô)ˆ	Ø�Š˜,ÐBÐBÐBÑCÔCÐCØ×&Ò& t¨UÑ3Ô3Ð3Ø”Yð 	%ð 	%ˆEØ�JŠJ�u˜eÑ$Ô$Ð$Ð$ØŒ×Ò˜iÑ(Ô(Ð(Ø�ŠÐA°,ÐAÐAÐAÑBÔBÐBÐBÐBr6   ©NFTr®   rÃ   )r
   r.   )Nr   )r?  r@  )¶rŠ   r‹   rŒ   r8   r°   rr   ÚTextIOrm   r‰   ÚpropertyrV   rn   rê   rí   r+   r˜   rø   rõ   rö   r   ÚNoder   r  r  rÏ   r  rE   rï   r  r�   ÚCallrÄ   rÅ   ÚMappingr9   r$  r/  r;  r>  rE  rG  rŽ   r�   rÌ  r‚   r`  rg  rj  rq  rt  rX  rZ  rY  r|  r~  r�  r4  r…  r‡  r‰  r™  rY   r¶  rÆ   rÁ   r§  rÃ  ÚIncluderÐ  ÚImportÚ
FromImportr×  rÛ  rã  ÚForrü  ÚIfr   r  r	  ÚFilterBlockr  ÚWithr  ÚExprStmtr  Ú
NamedTupler  Ústaticmethodr  r   r  r+  r.  r7   r2  r5  r7  ÚOutputr>  ÚAssignrC  ÚAssignBlockrF  rÐ   rÍ   r@  rK  rË  rM  r1  rQ  rU  rÍ  rW  ÚDictrY  rL   Ú	visit_AddÚ	visit_SubÚ	visit_MulÚ	visit_DivÚvisit_FloorDivÚ	visit_PowÚ	visit_ModÚ	visit_AndÚvisit_OrrQ   Ú	visit_PosÚ	visit_NegÚ	visit_Notr:   ÚConcatrd  ÚComparerg  ÚOperandrj  ÚGetattrrm  ÚGetitemrp  ro  rt  r   ÚIteratorrx  r½   r¿   ÚCondExprr€  r  ÚKeywordr‡  ÚMarkSaferŠ  ÚMarkSafeIfAutoescaperŒ  ÚEnvironmentAttributer�  ÚExtensionAttributer’  r©  r”  ÚInternalNamer–  ÚContextReferencer˜  ÚDerivedContextReferencerš  ÚContinuer�  ÚBreakr   ÚScoper£  ÚOverlayScoper¥  ÚEvalContextModifierrª  ÚScopedEvalContextModifierr°  r�   r6   r4   r(   r(   ,  s,  € € € € € € ð (,Ø ØðG4ð G4à"ðG4ð Œj˜ŒoðG4ð ”*˜S”/ð	G4ð
 ”
˜1œ8Ô$ðG4ð ðG4ð ðG4ð 
ðG4ð G4ð G4ð G4ðR ð*˜4ð *ð *ð *ñ „Xð*ð
L˜ð L Sð L¨]ð Lð Lð Lð Lð, cð ,ð ,ð ,ð ,ð
/˜Eð / dð /ð /ð /ð /ð 5:ð9ð 9Øð9Ø-1ð9à	ð9ð 9ð 9ð 9ð(ð ð ð ð"ð "˜Cð "¨ð "ð "ð "ð "ð<ð < ð <¨a¬j¸¼Ô.Dð <ÐPTð <ð <ð <ð <ð˜uð ¨ð ð ð ð ð DHðð ØðØ"ðØ*+¬*°U´ZÔ*@ðà	ðð ð ð ð	 ¤
¨5¬:Ô 6ð 	¸uð 	Èð 	ð 	ð 	ð 	ð�sð ˜tð ð ð ð ð IJðð ØðØœJ u¤zÔ2ðØBEðà	ðð ð ð ð*ð *˜AœJ u¤zÔ2ð *À#ð *Èdð *ð *ð *ð *ð ;?ð	7/ð 7/àŒg�e”j %¤,°´
Ð:Ô;ð7/ð ð7/ð ”j ¤¨3°´¨:Ô!6Ô7ð	7/ð
 
ð7/ð 7/ð 7/ð 7/ðr, q¤z°%´*Ô'=ð ,À$ð ,ð ,ð ,ð ,ð\> ð >¨4ð >ð >ð >ð >ð Bð B ð B¸4ð BÈDð Bð Bð Bð BðHð H¨ð HÀCð HÐQTð Hð Hð Hð Hð2˜ð 2 ð 2ð 2ð 2ð 2ðQ Ø”G˜EœK¨¬Ð8Ô9ðQ ØBGðQ à	
Œ�˜�Ô	!ðQ ð Q ð Q ð Q ðf

 8ð 

°Eð 

¸dð 

ð 

ð 

ð 

ð˜UœZð ¨Cð ð ð ð ð!¨ð !°#ð !ð !ð !ð !ð+ð +ð +ð +ðI°ð I¸$ð Ið Ið Ið Ið$ð $ð $ð $ð6¨Cð 6°Dð 6ð 6ð 6ð 6ð5¨Sð 5°Tð 5ð 5ð 5ð 5ð,ð ,ð ,ð ,ð1 ð 1ð 1ð 1ð 1ð# #ð #ð #ð #ð #ðU Eð U¨cð Uð Uð Uð Uð3¨cð 3°dð 3ð 3ð 3ð 3ð)ð )ð )ð )ð)O¨ð )O°4ð )Oð )Oð )Oð )Oð\ @Dðx9ð x9Ø”Nðx9Ø+,¬:°eÔ+<ðx9à	ðx9ð x9ð x9ð x9ðt/ ¤ð /°Eð /¸dð /ð /ð /ð /ðb(! %¤-ð (!¸ð (!À$ð (!ð (!ð (!ð (!ðT8 %¤-ð 8¸ð 8À$ð 8ð 8ð 8ð 8ðtUØ”G˜EœL¨%Ô*:Ð:Ô;ðUØDIðUà	ðUð Uð Uð Uð	N ¤ð 	N°eð 	NÀð 	Nð 	Nð 	Nð 	Nð5 UÔ%5ð 5¸eð 5Èð 5ð 5ð 5ð 5ðnIP˜eœið IP°ð IP¸$ð IPð IPð IPð IPðV˜UœXð ¨eð ¸ð ð ð ð ð*/ ¤ð /°Eð /¸dð /ð /ð /ð /ð E¤Oð ¸Eð Àdð ð ð ð ð	' eÔ&7ð 	'Àð 	'È$ð 	'ð 	'ð 	'ð 	'ð
%˜uœzð 
%°%ð 
%¸Dð 
%ð 
%ð 
%ð 
%ð% 5¤>ð %¸%ð %ÀDð %ð %ð %ð %ðð ð ð ð ˜œñ ô ð ð ð ¤ð ¨1¬5ð ð ð ñ „\ðð ,0€IˆqŒz˜-Ô(Ð/Ð/Ñ/ð. ð .ð .ð .ð .ð`#¨¬
°1´5Ô(9ð #¸cð #ð #ð #ð #ð%Ø”Jð%Ø',ð%Ø8Eð%à	ð%ð %ð %ð %ð*%Ø”Jð%Ø',ð%Ø8Eð%à	ð%ð %ð %ð %ð 	Ø”Jð	Ø',ð	Ø8Eð	à	ð	ð 	ð 	ð 	ðM ¤ð M°eð MÀð Mð Mð Mð Mð^( ¤ð (°eð (Àð (ð (ð (ð (ð>& eÔ&7ð &Àð &È$ð &ð &ð &ð &ð0˜uœzð °%ð ¸Dð ð ð ð ð20 ¤ð 0°Eð 0¸dð 0ð 0ð 0ð 0ð" ¤ð "°Eð "¸dð "ð "ð "ð "ð uÔ'9ð À%ð ÈDð ð ð ð ð. ¤ð .°Eð .¸dð .ð .ð .ð .ð˜uœzð °%ð ¸Dð ð ð ð ð˜uœzð °%ð ¸Dð ð ð ð ð �˜CÑ Ô €IØ�˜CÑ Ô €IØ�˜CÑ Ô €IØ�˜CÑ Ô €IØ �[ Ñ&Ô&€NØ�˜DÑ!Ô!€IØ�˜CÑ Ô €IØ�˜EÑ"Ô"€IØˆ{˜4Ñ Ô €HØ�
˜3‘”€IØ�
˜3‘”€IØ�
˜6Ñ"Ô"€Iàð ¤ð °eð Àð ð ð ñ „]ðð ð %¤-ð ¸ð À$ð ð ð ñ „]ðð% %¤-ð %¸ð %À$ð %ð %ð %ð %ð ð	 %¤-ð 	¸ð 	À$ð 	ð 	ð 	ñ „]ð	ð ð! %¤-ð !¸ð !À$ð !ð !ð !ñ „]ð!ð() ¤ð )°Eð )¸dð )ð )ð )ð )ð ð'Ø”G˜EœL¨%¬*Ð4Ô5ð'Ø>Cð'ØPTð'à	
Œ�DÔ	ð'ð 'ð 'ñ „^ð'ðR ð6 ¤ð 6°eð 6Àð 6ð 6ð 6ñ „]ð6ð  ð)˜uœzð )°%ð )¸Dð )ð )ð )ñ „]ð)ð ð 5¤>ð ¸%ð ÀDð ð ð ñ „]ðð, àEJðð Ø”JðØ',ðØ>Bðà	ðð ð ñ „]ðð,& %¤-ð &¸ð &À$ð &ð &ð &ð &ð 5¤>ð ¸%ð ÀDð ð ð ð ð
ØÔ.ðØ7<ðà	ðð ð ð ð/ØÔ.ð/Ø7<ð/à	ð/ð /ð /ð /ð
OØÔ,ðOØ5:ðOà	ðOð Oð Oð Oð
9 uÔ'9ð 9À%ð 9ÈDð 9ð 9ð 9ð 9ð uÔ'9ð À%ð ÈDð ð ð ð ðØÔ*ðØ38ðà	ðð ð ð ð
/ØÔ1ð/Ø:?ð/à	ð/ð /ð /ð /ð
) 5¤>ð )¸%ð )ÀDð )ð )ð )ð )ð& ¤ð &°Eð &¸dð &ð &ð &ð &ð& ¤ð &°Eð &¸dð &ð &ð &ð &ð% uÔ'9ð %À%ð %ÈDð %ð %ð %ð %ð:ØÔ-ð:Ø6;ð:à	ð:ð :ð :ð :ð
CØÔ3ð
CØ<Að
Cà	ð
Cð 
Cð 
Cð 
Cð 
Cð 
Cr6   r±  )Fr¯   Útypingr8   Ú
contextlibr   Ú	functoolsr   Úior   Ú	itertoolsr   r©  r   r  Ú
markupsafer   r	   r@  r   Ú
exceptionsr   Ú
idtrackingr   r   r   r   r   r   r/   r   Úutilsr   r   rI   r   ÚTYPE_CHECKINGÚtyping_extensionsÚterB   r   ÚTypeVarr  r9   r   ri  r:   rr   rJ   rL   rP   rQ   rY   r°   r²  rm   r^   rc   rÏ   r´  ÚSetr€   r‚   r+   ÚRuntimeErrorr~   rµ   r}   r:  rÒ   r(   r�   r6   r4   ú<module>rõ     s´  ðØ 6Ð 6à Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à„?ð )Ø"Ð"Ð"Ð"à(Ð(Ð(Ð(Ð(Ð(à€A„Iˆc˜œ C¨¬ JÔ/Ð0Ñ0Ô0€ð Ø
Ø
ØØ
ØØ
Øð	ð 	€	ð'�Qð '˜1ð 'ð 'ð 'ð 'ð �Cð ˜AœJ¨¸¼ÈÐ'PÐRVÐ'VÔWð ð ð ð ð*Øðà„Z� %¤/°7Ð;¸TÐAÔBðð ð ð ð0 $(ØØðð Ø
Œ.ðàðð Œ*�SŒ/ðð Œj˜Œoð	ð
 ŒJ�q”xÔ ðð ðð ðð „Z�„_ðð ð ð ð0˜œð  4ð ð ð ð ð"ØŒ:�e”jÔ!ðØ*+¬*°S¬/ðà„Uˆ3„Zðð ð ð ð&ð &ð &ð &ð &ñ &ô &ð &ðPð Pð Pð Pð Pñ Pô Pð PðfJð Jð Jð Jð J�,ñ Jô Jð Jð'ð 'ð 'ð 'ð '˜kñ 'ô 'ð 'ð&&ð &ð &ð &ð &˜Kñ &ô &ð &ð,ð ð ð ð �9ñ ô ð ðbCð bCð bCð bCð bC�Kñ bCô bCð bCð bCð bCr6   