+
    WBi!                       R t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RI!H"t" ]PF                  '       d   ^ RI$t%^RI&H't' ]PP                  ! R]PR                  R]PT                  3,          R7      t+RRRRRRRR R!R"R#R$R%R%R&R'/t,R( R) lt-R* R+ lt.R, R- lt/RBR. R/ llt0R0 R1 lt1R2 R3 lt2 ! R4 R54      t3 ! R6 R74      t4 ! R8 R9]54      t6 ! R: R;]"4      t7 ! R< R=]"4      t8 ! R> R?]94      t: ! R@ RA]"4      t;R# )Cz0Compiles 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.)boundeqz==nez!=gt>gteqz>=lt<lteqz<=innotinznot inc                0    V ^8  d   QhR\         R\         /# )   freturn)r   )formats   "4/usr/lib/python3.14/site-packages/jinja2/compiler.py__annotate__r)   -   s     ' 'Q '1 '    c                 .   a  R  V 3R llp\        VS 4      # )c          
          V ^8  d   QhRRR\         P                  RRR\        P                  R\        P                  /# )r$   selfCodeGeneratornodeframeFramekwargsr&   )r
   ExprtAny)r'   s   "r(   r)   #optimizeconst.<locals>.__annotate__.   s@     
. 
.
.%*ZZ
.8?
.KL55
.	

.r*   c                    < V P                   eY   VP                  P                  '       g=   V P                   P                  WP                  4      pWA8w  d   V P                  WB4      # S! WV3/ VB # N)	optimizereval_ctxvolatilevisit)r-   r/   r0   r2   new_noder%   s   &&&, r(   new_funcoptimizeconst.<locals>.new_func.   s]     >>%enn.E.E.E~~++D..AHzz(22U-f--r*   r   )r%   r>   s   f r(   optimizeconstr@   -   s    
. 
. (A&&r*   c                x    V ^8  d   QhR\         R\        P                  R\        P                  R.R3,          /# r$   opr&   r.   r1   N)strr4   Callabler
   BinExpr)r'   s   "r(   r)   r)   =   s4      C AJJ'PRV'VW r*   c                 ,   a  \         R  V 3R ll4       pV# )c                L    V ^8  d   QhRRR\         P                  R\        RR/# r$   r-   r.   r/   r0   r&   N)r
   rF   r1   )r'   s   "r(   r)   !_make_binop.<locals>.__annotate__?   s,      o U]] 5 T r*   c                   < V P                   P                  '       d|   SV P                   P                  9   da   V P                  R S: R24       V P	                  VP
                  V4       V P                  R4       V P	                  VP                  V4       M^V P                  R4       V P	                  VP
                  V4       V P                  RS R24       V P	                  VP                  V4       V P                  R4       R# )z environment.call_binop(context, , ( )N)environment	sandboxedintercepted_binopswriter<   leftrightr-   r/   r0   rC   s   &&&r(   visitor_make_binop.<locals>.visitor>   s     &&&21A1A1T1T+TJJ9"rBCJJtyy%(JJtJJtzz5)JJsOJJtyy%(JJ2$ay!JJtzz5)

3r*   r@   rC   rW   s   f r(   _make_binopr[   =   s       Nr*   c                x    V ^8  d   QhR\         R\        P                  R\        P                  R.R3,          /# rB   )rD   r4   rE   r
   	UnaryExpr)r'   s   "r(   r)   r)   R   s5      ZZ%//7;TABr*   c                 ,   a  \         R  V 3R ll4       pV# )c                L    V ^8  d   QhRRR\         P                  R\        RR/# rI   )r
   r]   r1   )r'   s   "r(   r)    _make_unop.<locals>.__annotate__V   s,     
 
o 
U__ 
U 
t 
r*   c                 f  < V P                   P                  '       dO   SV P                   P                  9   d4   V P                  R S: R24       V P	                  VP
                  V4       M4V P                  RS,           4       V P	                  VP
                  V4       V P                  R4       R# )zenvironment.call_unop(context, rL   rM   rO   N)rP   rQ   intercepted_unopsrS   r<   r/   rV   s   &&&r(   rW   _make_unop.<locals>.visitorU   s     &&&21A1A1S1S+SJJ8bABJJtyy%(JJsRx JJtyy%(

3r*   rY   rZ   s   f r(   
_make_unoprd   R   s     
 
 Nr*   c                @   V ^8  d   QhR\         P                  RRR\        P                  \        ,          R\        P                  \        ,          R\        P                  \        P
                  ,          R\        R\        R	\        P                  \        ,          /# )
r$   r/   rP   r   namefilenamestream
defer_init	optimizedr&   )r
   Templater4   OptionalrD   TextIObool)r'   s   "r(   r)   r)   e   s      
.. **S/ jjo	
 JJqxx    ZZ_r*   c                    \        V \        P                  4      '       g   \        R4      hVP	                  WW4WV4      pVP                  V 4       Vf   VP                  P                  4       # R# )z+Generate the python source for a node tree.z Can't compile non template nodesN)
isinstancer
   rk   	TypeErrorcode_generator_classr<   rh   getvalue)r/   rP   rf   rg   rh   ri   rj   	generators   &&&&&&& r(   generateru   e   sc     dENN++:;;008ZI OOD~((**r*   c                D    V ^8  d   QhR\         P                  R\        /# r$   valuer&   )r4   r5   rn   )r'   s   "r(   r)   r)   }   s       4 r*   c                   V e   V \         J g   V \        J d   R# \        V 4      \        \        \
        \        \        \        \        09   d   R# \        V 4      \        \        \        \        09   d5   \        ;QJ d    R V  4       F  '       d   K   R# 	  R# ! R V  4       4      # \        V 4      \        J dQ   \        ;QJ d*    R V P!                  4        4       F  '       d   K   R# 	  R# ! R V P!                  4        4       4      # R# )z)Does the node have a safe representation?Tc              3   8   "   T F  p\        V4      x  K  	  R # 5ir8   has_safe_repr).0vs   & r(   	<genexpr> has_safe_repr.<locals>.<genexpr>   s     3U=##U   Fc              3   b   "   T F%  w  r\        V4      ;'       d    \        V4      x  K'  	  R # 5ir8   r{   r}   kr~   s   &  r(   r   r      s'     S]TQ=#88a(88]s   //)NotImplementedEllipsistypern   intfloatcomplexrangerD   r	   tuplelistset	frozensetalldictitemsrx   s   &r(   r|   r|   }   s    }/5H3DE{tS%%fEEE{udC33s3U3ss3s3s3U333E{dsSU[[]SssSsSsSU[[]SSSr*   c                    V ^8  d   QhR\         P                  \        P                  ,          R\         P                  \        ,          R\         P
                  \        ,          /# )r$   r
   namesr&   )r4   Iterabler
   NoderD   Set)r'   s   "r(   r)   r)      sA      ::ejj!*+**S/UU3Zr*   c                    \        V4      p V  F  pVP                  V4       K  	  VP                  #   \         d     TP                  # i ; i)zCheck if the names passed are accessed undeclared.  The return value
is a set of all the undeclared names from the sequence of names found.
)UndeclaredNameVisitorr<   VisitorExit
undeclared)r
   r   rW   r/   s   &&  r(   find_undeclaredr      sW     $E*GDMM$    s   3 AAc                   2   a  ] tR t^t o V 3R lR ltRtV tR# )MacroRefc                v   < V ^8  d   QhRS[ P                  S[P                  S[P                  3,          RR/# r$   r/   r&   N)r4   Unionr
   Macro	CallBlock)r'   __classdict__s   "r(   r)   MacroRef.__annotate__   s1     & &QWWU[[%//%AB &t &r*   c                <    Wn         R V n        R V n        R V n        R# FN)r/   accesses_calleraccesses_kwargsaccesses_varargsr-   r/   s   &&r(   __init__MacroRef.__init__   s    	$$ %r*   )r   r   r   r/   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell__r   s   @r(   r   r      s     & &r*   r   c                   x   a  ] tR t^t o RtRV 3R lR lltV 3R lR ltRV 3R lR lltV 3R	 lR
 lt]t	Rt
V tR# )r1   z&Holds compile time information for us.Nc                v   < V ^8  d   QhRS[ RS[P                  R,          RS[P                  S[,          RR/# )r$   r:   parentr1   levelr&   N)r   r4   rl   r   )r'   r   s   "r(   r)   Frame.__annotate__   sD     1  1 1  

7#1  zz#	1 
 
1 r*   c                X   Wn         W n        Vf(   \        VR7      V n        RV n        R V n        R V n        MO\        VP                  VR7      V n        VP                  V n        VP
                  V n        VP                  V n        RV n        RV n        RV n	        RV n
        RV n        R # )Nr   F)r:   r   r   symbolsrequire_output_checkbufferblocktoplevel	rootlevel
loop_frameblock_frame
soft_frame)r-   r:   r   r   s   &&&&r(   r   Frame.__init__   s     ! >"/DL ).D% ,0DK +/DJ #6>>?DL(.(C(CD% --DKDJ 
    
  r*   c                   < V ^8  d   QhRR/# r$   r&   zte.Self )r'   r   s   "r(   r)   r      s      i r*   c                    \         P                  V P                  4      pVP                  P	                  V P                  4       V P
                  P                  4       Vn        V# )z!Create a copy of the current one.)object__new__	__class____dict__updater   copyr-   rvs   & r(   r   
Frame.copy   sC    ^^DNN+
4==)\\&&(
	r*   c                $   < V ^8  d   QhRS[ RR/# )r$   isolatedr&   r1   rn   )r'   r   s   "r(   r)   r      s     * *d *w *r*   c                    V'       d3   \        V P                  V P                  P                  ^,           R7      # \        V P                  V 4      # )zReturn an inner frame.r   )r1   r:   r   r   )r-   r   s   &&r(   innerFrame.inner   s6    dll.@.@1.DEET]]D))r*   c                   < V ^8  d   QhRR/# r   r   )r'   r   s   "r(   r)   r      s      i r*   c                B    V P                  4       pRVn        RVn        V# )zReturn 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   & r(   soft
Frame.soft   s"     YY[	r*   )r   r   r   r:   r   r   r   r   r   r   r   )NNF)r   r   r   r   __doc__r   r   r   r   __copy__r   r   r   s   @r(   r1   r1      s8     01  1 f * *  Hr*   r1   c                       ] tR t^tRtRtR# )r   z?Exception used by the `UndeclaredNameVisitor` to signal a stop.r   Nr   r   r   r   r   r   r   r*   r(   r   r      s    Ir*   r   c                   l   a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltR
t	V t
R# )DependencyFinderVisitorz.A visitor that collects filter and test calls.c                   < V ^8  d   QhRR/# r$   r&   Nr   )r'   r   s   "r(   r)   $DependencyFinderVisitor.__annotate__   s     ' '$ 'r*   c                B    \        4       V n        \        4       V n        R # r8   )r   filterstestsr-   s   &r(   r    DependencyFinderVisitor.__init__   s    #&5!$
r*   c                8   < V ^8  d   QhRS[ P                  RR/# r   )r
   Filter)r'   r   s   "r(   r)   r     s     $ $ $$ $r*   c                r    V P                  V4       V P                  P                  VP                  4       R # r8   )generic_visitr   addrf   r   s   &&r(   visit_Filter$DependencyFinderVisitor.visit_Filter  s&    4 #r*   c                8   < V ^8  d   QhRS[ P                  RR/# r   )r
   Test)r'   r   s   "r(   r)   r     s     " "uzz "d "r*   c                r    V P                  V4       V P                  P                  VP                  4       R # r8   )r   r   r   rf   r   s   &&r(   
visit_Test"DependencyFinderVisitor.visit_Test  s$    4 

tyy!r*   c                8   < V ^8  d   QhRS[ P                  RR/# r   r
   Block)r'   r   s   "r(   r)   r     s     ' ' ' 'r*   c                    R# )zStop visiting at blocks.Nr   r   s   &&r(   visit_Block#DependencyFinderVisitor.visit_Block      r*   )r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   s   @r(   r   r      s0     8' '$ $" "' 'r*   r   c                   Z   a  ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )r   i  zA 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.
c                H   < V ^8  d   QhRS[ P                  S[,          RR/# )r$   r   r&   N)r4   r   rD   )r'   r   s   "r(   r)   "UndeclaredNameVisitor.__annotate__  s#     , ,ajjo ,$ ,r*   c                D    \        V4      V n        \        4       V n        R # r8   )r   r   r   )r-   r   s   &&r(   r   UndeclaredNameVisitor.__init__  s    Z
&)er*   c                8   < V ^8  d   QhRS[ P                  RR/# r   )r
   Name)r'   r   s   "r(   r)   r    s     * *uzz *d *r*   c                @   VP                   R 8X  dh   VP                  V P                  9   dM   V P                  P	                  VP                  4       V P                  V P                  8X  d   \        4       hR# V P                  P                  VP                  4       R# )loadN)ctxrf   r   r   r   r   discardr   s   &&r(   
visit_Name UndeclaredNameVisitor.visit_Name  sh    88v$))tzz"9OO		*$**,!m# - JJtyy)r*   c                8   < V ^8  d   QhRS[ P                  RR/# r   r   )r'   r   s   "r(   r)   r  !  s     & & & &r*   c                    R# )zStop visiting a blocks.Nr   r   s   &&r(   r   !UndeclaredNameVisitor.visit_Block!  r   r*   )r   r   N)
r   r   r   r   r   r   r  r   r   r   r   s   @r(   r   r     s(     
, ,* *& &r*   r   c                       ] tR tRtRtRtR# )CompilerExiti%  zRaised 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.
r   Nr   r   r*   r(   r  r  %  s    r*   r  c                   B  a  ] tR tRt o RV 3R lR llt]V 3R lR l4       tV 3R lR ltV 3R	 lR
 ltV 3R lR lt	RV 3R lR llt
V 3R lR ltRV 3R lR lltRV 3R lR lltV 3R lR ltRV 3R lR lltV 3R lR ltV 3R lR ltRV 3R lR lltRV 3R lR  lltRV 3R! lR" lltV 3R# lR$ ltV 3R% lR& ltRV 3R' lR( lltRV 3R) lR* lltV 3R+ lR, ltV 3R- lR. ltV 3R/ lR0 ltV 3R1 lR2 ltV 3R3 lR4 ltV 3R5 lR6 ltV 3R7 lR8 ltV 3R9 lR: lt V 3R; lR< lt!V 3R= lR> lt"V 3R? lR@ lt#V 3RA lRB lt$V 3RC lRD lt%V 3RE lRF lt&V 3RG lRH lt'V 3RI lRJ lt(V 3RK lRL lt)RV 3RM lRN llt*V 3RO lRP lt+V 3RQ lRR lt,V 3RS lRT lt-V 3RU lRV lt.V 3RW lRX lt/V 3RY lRZ lt0V 3R[ lR\ lt1V 3R] lR^ lt2V 3R_ lR` lt3V 3Ra lRb lt4V 3Rc lRd lt5V 3Re lRf lt6V 3Rg lRh lt7 ! Ri Rj]8Pr                  4      t:];V 3Rk lRl l4       t<Rt=V 3Rm lRn lt>V 3Ro lRp lt?V 3Rq lRr lt@V 3Rs lRt ltAV 3Ru lRv ltBV 3Rw lRx ltCV 3Ry lRz ltDV 3R{ lR| ltEV 3R} lR~ ltFV 3R lR ltGV 3R lR ltHV 3R lR ltIV 3R lR ltJV 3R lR ltKV 3R lR ltL]M! R4      tN]M! R4      tO]M! R4      tP]M! R4      tQ]M! R4      tR]M! R4      tS]M! R4      tT]M! R4      tU]M! R4      tV]W! R4      tX]W! R4      tY]W! R4      tZ][V 3R lR l4       t\][V 3R lR l4       t]V 3R lR lt^][V 3R lR l4       t_][V 3R lR l4       t`V 3R lR lta]bV 3R lR l4       tc][V 3R lR l4       td][V 3R lR l4       te][V 3R lR l4       tf][RV 3R lR ll4       tgV 3R lR lthV 3R lR ltiV 3R lR ltjV 3R lR ltkV 3R lR ltlV 3R lR ltmV 3R lR ltnV 3R lR ltoV 3R lR ltpV 3R lR ltqV 3R lR ltrV 3R lR ltsV 3R lR lttV 3R lR ltuV 3R lR ltvV 3R ltwRtxV tyR# )r.   i,  Nc                   < V ^8  d   QhRRRS[ P                  S[,          RS[ P                  S[,          RS[ P                  S[ P                  ,          RS[RS[RR	/# )
r$   rP   r   rf   rg   rh   ri   rj   r&   N)r4   rl   rD   rm   rn   )r'   r   s   "r(   r)   CodeGenerator.__annotate__-  sw     G4 G4"G4 jjoG4 **S/	G4
 

188$G4 G4 G4 
G4r*   c                   Vf   \        4       pWn        W n        W0n        W@n        RV n        WPn        R V n        V'       d   \        V4      V n        / V n	        / V n
        ^ V n        RV n        ^V n        / V n        / V n        . V n        R V n        ^ V n        ^ V n        RV n        ^ V n        ^ V n        . V n        . V n        R.V n        R # )NFTcontext)r   rP   rf   rg   rh   created_block_contextri   r9   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-   rP   rf   rg   rh   ri   rj   s   &&&&&&&r(   r   CodeGenerator.__init__-  s     >ZF&	 %*"$04&{3DN 13 13  
 "'  (*
)+ 6826   ! !"  24 57 *3%r*   c                    < V ^8  d   QhRS[ /# r$   r&   r   )r'   r   s   "r(   r)   r  w  s     * *4 *r*   c                    V P                   R J# r8   )r9   r   s   &r(   rj   CodeGenerator.optimizedv  s    ~~T))r*   c                *   < V ^8  d   QhRS[ RS[RR/# )r$   msglinenor&   zte.NoReturn)rD   r   )r'   r   s   "r(   r)   r  |  s'     L L LS L] Lr*   c                D    \        WV P                  V P                  4      h)z*Fail with a :exc:`TemplateAssertionError`.)r   rf   rg   )r-   r-  r.  s   &&&r(   failCodeGenerator.fail|  s    $S$))T]]KKr*   c                    < V ^8  d   QhRS[ /# r)  rD   )r'   r   s   "r(   r)   r    s     , ,c ,r*   c                R    V ;P                   ^,          un         RV P                    2# )zGet a new unique identifier.t_)r"  r   s   &r(   temporary_identifier"CodeGenerator.temporary_identifier  s'    "D))*++r*   c                $   < V ^8  d   QhRS[ RR/# r$   r0   r&   Nr1   )r'   r   s   "r(   r)   r    s     / /E /d /r*   c                l    V P                  4       Vn        V P                  VP                   R24       R# )z7Enable buffering for the frame from that point onwards.z = []N)r6  r   	writeliner-   r0   s   &&r(   r   CodeGenerator.buffer  s)    002%,,u-.r*   c                *   < V ^8  d   QhRS[ RS[RR/# )r$   r0   force_unescapedr&   Nr1   rn   )r'   r   s   "r(   r)   r    s%     9 99-19	9r*   c                J   V'       g   VP                   P                  '       d   V P                  R4       V P                  4        V P                  RVP                   R24       V P                  4        V P                  R4       V P                  4        V P                  RVP                   R24       V P                  4        R# VP                   P                  '       d"   V P                  RVP                   R24       R# V P                  RVP                   R24       R# )z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat())else:zreturn concat(rO   N)r:   r;   r<  indentr   outdent
autoescape)r-   r0   r@  s   &&&r(   return_buffer_contents$CodeGenerator.return_buffer_contents  s     ~~&&&@A!6u||nBGHw'~Q?@***!6u||nBGH~Q78r*   c                   < V ^8  d   QhRR/# r   r   )r'   r   s   "r(   r)   r    s       r*   c                8    V ;P                   ^,          un         R# )zIndent by one.Nr#  r   s   &r(   rE  CodeGenerator.indent  s    Qr*   c                $   < V ^8  d   QhRS[ RR/# )r$   stepr&   N)r   )r'   r   s   "r(   r)   r    s     " "C " "r*   c                8    V ;P                   V,          un         R# )zOutdent by step.NrL  )r-   rO  s   &&r(   rF  CodeGenerator.outdent  s    T!r*   c                b   < V ^8  d   QhRS[ RS[P                  S[P                  ,          RR/# )r$   r0   r/   r&   N)r1   r4   rl   r
   r   )r'   r   s   "r(   r)   r    s0     < < <ajj.D <PT <r*   c                    VP                   f   V P                  RV4       R# V P                  VP                    R2V4       R# )z%Yield or write into the frame buffer.Nyield .append()r   r<  )r-   r0   r/   s   &&&r(   start_writeCodeGenerator.start_write  s3    <<NN8T*NNell^84d;r*   c                $   < V ^8  d   QhRS[ RR/# r9  r:  )r'   r   s   "r(   r)   r    s      u  r*   c                H    VP                   e   V P                  R4       R# R# )z1End the writing process started by `start_write`.NrO   )r   rS   r=  s   &&r(   	end_writeCodeGenerator.end_write  s    <<#JJsO $r*   c                h   < V ^8  d   QhRS[ RS[RS[P                  S[P
                  ,          RR/# )r$   sr0   r/   r&   N)rD   r1   r4   rl   r
   r   )r'   r   s   "r(   r)   r    s:      "*+**UZZ*@	r*   c                l    V P                  W#4       V P                  V4       V P                  V4       R# )z4Simple shortcut for start_write + write + end_write.N)rV  rS   rZ  )r-   r]  r0   r/   s   &&&&r(   simple_writeCodeGenerator.simple_write  s)     	%

1ur*   c                b   < V ^8  d   QhRS[ P                  S[P                  ,          RS[RR/# )r$   r
   r0   r&   N)r4   r   r
   r   r1   )r'   r   s   "r(   r)   r    s/     	 	

5:: 6 	u 	 	r*   c                     V P                  R4       V F  pV P                  W24       K  	  R#   \         d     R# i ; i)zVisit 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<  r<   r  )r-   r
   r0   r/   s   &&& r(   
blockvisitCodeGenerator.blockvisit  s;    	NN6"

4'  		s   +/ >>c                $   < V ^8  d   QhRS[ RR/# )r$   xr&   Nr3  )r'   r   s   "r(   r)   r    s      s t r*   c                "   V P                   '       d   V P                  '       g   V P                  P                  RV P                   ,          4       V ;P                  V P                   ,          un        V P
                  e9   V P                  P                  V P
                  V P                  34       RV n        RV n        V P                  P                  RV P                  ,          4       ^ V n         V P                  P                  V4       R# )z&Write a string into the output stream.
NFz    )	r  r!  rh   rS   r  r  r  appendr#  )r-   rg  s   &&r(   rS   CodeGenerator.write  s    ???$$$!!$"89  DOO3 ))5OO**D,B,BDDTDT+UV-1D* %DKKft'8'889DO!r*   c                h   < V ^8  d   QhRS[ RS[P                  S[P                  ,          RS[RR/# )r$   rg  r/   extrar&   N)rD   r4   rl   r
   r   r   )r'   r   s   "r(   r)   r    s:      JJuzz2BE	r*   c                J    V P                  W#4       V P                  V4       R# )z!Combination of newline and write.N)newlinerS   )r-   rg  r/   rm  s   &&&&r(   r<  CodeGenerator.writeline  s     	T!

1r*   c                b   < V ^8  d   QhRS[ P                  S[P                  ,          RS[RR/# )r$   r/   rm  r&   N)r4   rl   r
   r   r   )r'   r   s   "r(   r)   r    s/     * *AJJuzz2 *# *d *r*   c                    \        V P                  ^V,           4      V n        VeB   VP                  V P                  8w  d%   VP                  V n        VP                  V n        R# R# R# )z/Add one or more newlines before the next write.N)maxr  r.  r   r  )r-   r/   rm  s   &&&r(   ro  CodeGenerator.newline  sL    dooq5y9t >%)[[D""kkDO !?r*   c          	         < V ^8  d   QhRS[ P                  S[P                  S[P                  S[P
                  3,          RS[RS[ P                  S[ P                  S[	S[ P                  3,          ,          RR/# )r$   r/   r0   extra_kwargsr&   N)r4   r   r
   Callr   r   r1   rl   MappingrD   r5   )r'   r   s   "r(   r)   r    si     7/ 7/ggejj%,,

:;7/ 7/ jj3:!67	7/
 
7/r*   c                   \         ;QJ dA    R \        R VP                   4       T;'       g    R4       4       F  '       g   K   RM6	  RM2! R \        R VP                   4       T;'       g    R4       4       4      pVP                   F%  pV P	                  R4       V P                  WR4       K'  	  V'       gj   VP                   F%  pV P	                  R4       V P                  Wb4       K'  	  Ve1   VP                  4        F  w  rxV P	                  RV RV 24       K  	  VP                  '       d.   V P	                  R4       V P                  VP                  V4       V'       Ed'   VP                  e   V P	                  R	4       MV P	                  R
4       VP                   FO  pV P	                  VP                  : R24       V P                  VP                  V4       V P	                  R4       KQ  	  Ve2   VP                  4        F  w  rxV P	                  V: RV R24       K  	  VP                  eA   V P	                  R4       V P                  VP                  V4       V P	                  R4       R# V P	                  R4       R# VP                  e0   V P	                  R4       V P                  VP                  V4       R# R# )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   j   "   T F)  p\        \        P                  ! \        V4      4      x  K+  	  R # 5ir8   )is_python_keywordr4   castrD   )r}   r   s   & r(   r   *CodeGenerator.signature.<locals>.<genexpr>  s)      
L affS!n--Ls   13c              3   8   "   T F  qP                   x  K  	  R # 5ir8   )keyr}   rg  s   & r(   r   r}    s     7;aEE;r   TFrL   N=z, *z
, **dict({z, **{: z}, **rO   }z, **r   )anyr   r2   argsrS   r<   r   dyn_args
dyn_kwargsr  rx   )	r-   r/   r0   rv  kwarg_workaroundargkwargr  rx   s	   &&&&     r(   	signatureCodeGenerator.signature  s    3 
74;;79K9KL
333 
74;;79K9KL
 

 99CJJtJJs"   

4 

5( % '"."4"4"6JCJJC5%12 #7===JJuJJt}}e,*

<(

7#

eii]"-.

5;;.

4  % '"."4"4"6JCJJ#5'45 #7*

7#

4??E2

3

3__(JJvJJt. )r*   c                \   < V ^8  d   QhRS[ P                  S[P                  ,          RR/# )r$   r
   r&   N)r4   r   r
   r   )r'   r   s   "r(   r)   r    s(     , ,qzz%**'= ,$ ,r*   c           
        \        4       pV F  pVP                  V4       K  	  V P                  VP                  R3V P                  VP                  R33 EF  w  rEp\	        V4       EF  pWt9  d   V P                  4       WG&   V P                  R4       V P                  4        V P                  WG,           RV RV: R24       V P                  4        V P                  R4       V P                  4        V P                  R4       V P                  R	WG,           R
24       V P                  4        V P                  RVRR  RV: R24       V P                  4        V P                  4        EK
  	  EK!  	  R# )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   r<   r   r   sortedr6  r<  rE  rF  )r-   r
   rW   r/   id_mapr   
dependencyrf   s   &&      r(   pull_dependenciesCodeGenerator.pull_dependencies  sC    *+DMM$  \\7??I6

*
%F: u%#'#<#<#>FL v&&,zl!D8STUV12/fl^:>?5j"o5FdXY0 ) &*
r*   c                $   < V ^8  d   QhRS[ RR/# r9  r:  )r'   r   s   "r(   r)   r  H  s     > > >4 >r*   c           	        . pVP                   P                  P                  4        F  w  pw  rEV\        8X  d   K  V\        8X  d,   V P                  V R V P                  4        RV: R24       KK  V\        8X  d   V P                  V R V 24       Kn  V\        8X  d   VP                  V4       K  \        R4      h	  V'       d&   V P                  R P                  V4       R24       R# R# ) = rM   rO   zunknown load instruction
 = missingN)r   loadsr   r   r   r<  get_resolve_funcr   r   rj  NotImplementedErrorjoin)r-   r0   undefstargetactionparams   &&    r(   enter_frameCodeGenerator.enter_frameH  s    ',}}':':'@'@'B#FOV++++&T-B-B-D,EQuiqQR>)&UG45--f%)*DEE (C NNejj01<= r*   c                *   < V ^8  d   QhRS[ RS[RR/# )r$   r0   with_python_scoper&   NrA  )r'   r   s   "r(   r)   r  X  s'     B B B4 BD Br*   c                    V'       g`   . pVP                   P                   F  pVP                  V4       K  	  V'       d&   V P                  R P	                  V4       R24       R# R# R# )r  r  N)r   r  rj  r<  r  )r-   r0   r  r  r  s   &&&  r(   leave_frameCodeGenerator.leave_frameX  sT     F----f% .%**V"4!5Z@A 	 !r*   c                ,   < V ^8  d   QhRS[ RS[ RS[ /# )r$   async_value
sync_valuer&   r3  )r'   r   s   "r(   r)   r  `  s(     H H HC HQT Hr*   c                B    V P                   P                  '       d   V# T# r8   )rP   is_async)r-   r  r  s   &&&r(   choose_asyncCodeGenerator.choose_async`  s    "..777{GZGr*   c                &   < V ^8  d   QhRS[ RS[ /# )r$   rf   r&   r3  )r'   r   s   "r(   r)   r  c  s     2 2 2 2r*   c                ,    V P                  4        R V 2# )r  )r  )r-   rf   s   &&r(   funcCodeGenerator.funcc  s    ##%&d4&11r*   c                   < V ^8  d   QhRS[ P                  S[P                  S[P                  3,          RS[RS[ P                  S[S[3,          /# )r$   r/   r0   r&   )r4   r   r
   r   r   r1   Tupler   )r'   r   s   "r(   r)   r  f  sM     Q  Q GGEKK89Q BGQ 	
	!Q r*   c           
     @   VP                  4       pVP                  P                  V4       \        V4      pRp\	        4       p. p\        VP                  4       Fx  w  rxVP                  R8X  d   TpVP                  R9   d   VP                  VP                  4       VP                  VP                  P                  VP                  4      4       Kz  	  \        VP                  R4      p	RV	9   de   Ve0    VP                  V\        VP                  4      ,
          ,           M*VP                  VP                  P%                  R4      4       RVn        RV	9   d9   RV9  d2   VP                  VP                  P%                  R4      4       RVn        RV	9   d9   RV9  d2   VP                  VP                  P%                  R4      4       RVn        RVn        VP                  P                  V4       V P/                  V P1                  R4       R	R
P3                  V4       R2V4       V P5                  4        V P7                  V4       V P9                  V4       V P;                  V4       \        VP                  4       F  w  rxVP                  P                  VP                  4      p
V P/                  RV
 R24       V P5                  4         VP                  V\        VP                  4      ,
          ,          pV P/                  V
 R24       V P=                  W4       V P?                  V
4       V PA                  4        K  	  V PC                  4        V PE                  VP                  V4       V PG                  VRR7       V PI                  VRR7       V PA                  4        W#3#   \         d!    T P!                  RTP"                  4        ELi ; i  \         d4    T P/                  T
 RTP                  : RTP                  : R24        Li ; i)z/Dump the function def of a macro or call block.Ncallerr2   varargszhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.TFmacrorM   rL   ):if  is missing:r  z = undefined("parameter z was not provided", name=rO   )r@  r  )r2   r  )r  r2   r  )%r   r   analyze_noder   r   	enumerater  rf   r   rj  refr   bodydefaultslen
IndexErrorr0  r.  declare_parameterr   r   r   r   r<  r  r  rE  r   r  push_parameter_definitionsr<   mark_parameter_storedrF  pop_parameter_definitionsrd  rH  r  )r-   r/   r0   	macro_refexplicit_callerskip_special_paramsr  idxr  r   r  defaults   &&&         r(   
macro_bodyCodeGenerator.macro_bodyf  sP    ""4(TN	!e!$)),HCxx8#"%xx00#''1KK))#((34 - %TYY0OP
z! *MM/C		N"BC EMM;;HEF(,I%z!h6I&IKK77AB(,I%
"y8K'KKK77	BC)-I& &+"""4($))G,-Qtyy.?rBDIE''.!$)),HC--##CHH-CNNS\23KKM	+--c$))n(<= #c{+

7*&&s+LLN -  	&&(		5)##E4#@$7e " II1 	B  e3CHH< @ XXL+s$   8-N1 -O1'OO;PPc                *   < V ^8  d   QhRS[ RS[RR/# )r$   r  r0   r&   N)r   r1   )r'   r   s   "r(   r)   r    s"     

 

8 

E 

d 

r*   c                l   RP                  R VP                  P                   4       4      p\        VP                  RR4      p\	        VP                  P                  4      ^8X  d
   VR,          pV P                  RV: RV RVP                  : RVP                  : RVP                  : R	24       R# )
z<Dump the macro definition for the def created by macro_body.rL   c              3   L   "   T F  p\        VP                  4      x  K  	  R # 5ir8   )reprrf   r  s   & r(   r   *CodeGenerator.macro_def.<locals>.<genexpr>  s     H4Gqd166ll4Gs   "$rf   N,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	r  r/   r  getattrr  rS   r   r   r   )r-   r  r0   	arg_tuplerf   s   &&&  r(   	macro_defCodeGenerator.macro_def  s    IIHINN4G4GHH	y~~vt4y~~""#q(I

(I; ?)),By/I/I.L M)),,JL	
r*   c                :   < V ^8  d   QhRS[ P                  RS[/# )r$   r/   r&   )r
   r   rD   )r'   r   s   "r(   r)   r    s      UZZ C r*   c                d    RVP                    2pV P                  e   V RV P                  : 2pV# )z.Return a human readable position for the node.zline  in )r.  rf   )r-   r/   r   s   && r(   positionCodeGenerator.position  s5    T[[M"99 4tDII=)B	r*   c                &   < V ^8  d   QhRS[ RS[/# r$   r0   r&   r1   rD   )r'   r   s   "r(   r)   r    s     ! ! !# !r*   c                    R P                  R VP                  P                  4       P                  4        4       4      pRV R2# )rL   c              3   6   "   T F  w  rV: R V 2x  K  	  R# 5ir  Nr   )r}   rf   r  s   &  r(   r   3CodeGenerator.dump_local_context.<locals>.<genexpr>  s$      
 C hb! Cs   {r  )r  r   dump_storesr   )r-   r0   items_kvs   && r(   dump_local_context CodeGenerator.dump_local_context  sD    99 
 % 9 9 ; A A C
 
 H:R  r*   c                   < V ^8  d   QhRR/# r   r   )r'   r   s   "r(   r)   r    s     + +t +r*   c                    V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       R# )zWrites 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   &r(   write_commonsCodeGenerator.write_commons  sG    
 	=>:;45 	89)*r*   c                $   < V ^8  d   QhRS[ RR/# r9  r:  )r'   r   s   "r(   r)   r    s     I I I$ Ir*   c                l    V P                   P                  VP                  P                  4       4       R# )a)  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%  rj  r   dump_param_targetsr=  s   &&r(   r  (CodeGenerator.push_parameter_definitions  s%     	$$U]]%E%E%GHr*   c                   < V ^8  d   QhRR/# r   r   )r'   r   s   "r(   r)   r    s     $ $4 $r*   c                :    V P                   P                  4        R# )z+Pops the current parameter definitions set.N)r%  popr   s   &r(   r  'CodeGenerator.pop_parameter_definitions  s    !!#r*   c                $   < V ^8  d   QhRS[ RR/# r$   r  r&   Nr3  )r'   r   s   "r(   r)   r    s     6 6C 6D 6r*   c                r    V P                   '       d%   V P                   R,          P                  V4       R# R# )zpMarks a parameter in the current parameter definitions as stored.
This will skip the enforced undefined checks.
Nr  )r%  r
  r-   r  s   &&r(   r  #CodeGenerator.mark_parameter_stored  s.        !!"%--f5 !r*   c                $   < V ^8  d   QhRS[ RR/# r  r3  )r'   r   s   "r(   r)   r    s     5 5S 5T 5r*   c                <    V P                   P                  V4       R # r8   )r&  rj  r  s   &&r(   push_context_reference$CodeGenerator.push_context_reference  s    %%,,V4r*   c                   < V ^8  d   QhRR/# r   r   )r'   r   s   "r(   r)   r    s     , ,t ,r*   c                :    V P                   P                  4        R # r8   )r&  r  r   s   &r(   pop_context_reference#CodeGenerator.pop_context_reference  s    %%))+r*   c                    < V ^8  d   QhRS[ /# r)  r3  )r'   r   s   "r(   r)   r    s     1 1 1r*   c                (    V P                   R,          # )   r  r&  r   s   &r(   get_context_refCodeGenerator.get_context_ref  s    ,,R00r*   c                    < V ^8  d   QhRS[ /# r)  r3  )r'   r   s   "r(   r)   r    s     # ## #r*   c                D    V P                   R,          pVR8X  d   R# V R2# )r  r  resolvez.resolver  r  r  s   & r(   r  CodeGenerator.get_resolve_func  s*    ..r2Y""r*   c                &   < V ^8  d   QhRS[ RS[/# r  r  )r'   r   s   "r(   r)   r    s     U UE Uc Ur*   c                L    V P                  4        R V P                  V4       R2# )z	.derived(rO   )r  r  r=  s   &&r(   derive_contextCodeGenerator.derive_context  s,    &&()43J3J53Q2RRSTTr*   c                &   < V ^8  d   QhRS[ RS[/# )r$   r  r&   )rD   rn   )r'   r   s   "r(   r)   r    s     3 3c 3d 3r*   c                T    V P                   '       g   R# WP                   R,          9   # )z4Checks if a given target is an undeclared parameter.Fr  )r%  r  s   &&r(   parameter_is_undeclared%CodeGenerator.parameter_is_undeclared  s%    $$$..r222r*   c                   < V ^8  d   QhRR/# r   r   )r'   r   s   "r(   r)   r    s     ) )d )r*   c                L    V P                   P                  \        4       4       R# )z+Pushes a new layer for assignment tracking.N)r$  rj  r   r   s   &r(   push_assign_tracking"CodeGenerator.push_assign_tracking  s    !!#%(r*   c                $   < V ^8  d   QhRS[ RR/# r9  r:  )r'   r   s   "r(   r)   r    s     )O )O )O4 )Or*   c                D   V P                   P                  4       pVP                  '       g%   VP                  '       g   VP                  '       d	   V'       g   R# V Uu. uF  q3R,          R8w  g   K  VNK  	  pp\        V4      ^8X  d   \        \        V4      4      pVP                  P                  V4      pVP                  '       d   V P                  RV: RV 24       R# VP                  '       d   V P                  RV: RV 24       R# V P                  RV: RV 24       MVP                  '       d   V P                  R4       M5VP                  '       d   V P                  R	4       MV P                  R
4       \        \        V4      4       FP  w  ruV'       d   V P                  R4       VP                  P                  V4      pV P                  V: RV 24       KR  	  V P                  R4       VP                  '       g   VP                  '       gy   V'       do   \        V4      ^8X  d    V P                  RV^ ,          : R24       R# RP                  \        \         \        V4      4      4      pV P                  RV R24       R# R# R# R# u upi )z_Pops the topmost level for assignment tracking and updates the
context variables if necessary.
N:Nr  N_z_loop_vars[] = z_block_vars[context.vars[z_loop_vars.update({z_block_vars.update({context.vars.update({rL   r  })context.exported_vars.add(rO   zcontext.exported_vars.update((rC  )r$  r  r   r   r   r  nextiterr   r  r<  r  r  rS   r  mapr  )	r-   r0   varsrg  public_namesrf   r  r  	names_strs	   &&       r(   pop_assign_tracking!CodeGenerator.pop_assign_tracking  s    !!%%'!!!$$$NNN#'84aR5C<48t9>T
#D--##D)CTHD>?   dXT#?@NN]4($se<=45"""5667&vd|4	JJt$mm''-

dXRu-.	 5
 JJt   )9)9)9l< A%!;LO;NaPQ IIc$|0D&EF	!?	{"MN ?K)9 1 9s   J3Jc                b   < V ^8  d   QhRS[ P                  RS[P                  S[,          RR/# r$   r/   r0   r&   N)r
   rk   r4   rl   r1   )r'   r   s   "r(   r)   r  =  s7     x9 x9NNx9+,::e+<x9	x9r*   c           	        Ve   Q R4       h\        V P                  V P                  4      p^RIHp ^RIHp V P                  P                  '       d   \        WT,           4      pM\        V4      pV P                  RRP                  V4      ,           4       V P                  '       d   RMRpVP                  \        P                  4      R JpVP                  \        P                  4       Fa  p	V	P                  V P                   9   d,   V P#                  RV	P                  : R	2V	P$                  4       WP                   V	P                  &   Kc  	  VP                  \        P&                  4       F  p
V
P(                  V P*                  9  g   K   V
P(                  pV P-                  4       ;V P*                  V&   pR
V9   d1   VP/                  R
^4      w  rV P                  RV RV RV 24       K  V P                  RV RV 24       K  	  V P                  RV P                  : 24       V P                  V P1                  R4       RV R2^R7       V P3                  4        V P5                  4        \7        V4      pR\9        VP:                  R,4      9   d0   VP<                  P?                  R4      pV P                  V R24       VP<                  PA                  V4       R;Vn!        Vn"        T;'       d    V PF                  '       * Vn$        V'       d   V P                  R4       V PK                  V4       V PM                  VP:                  4       V PO                  VP:                  V4       V PQ                  VRR7       V PS                  4        V'       Ed.   V PF                  '       g"   V P3                  4        V P                  R4       V P3                  4        V P                  P                  '       g   V P                  R4       MV P                  R4       V P                  R4       V P3                  4        V P                  R4       V P3                  4        V P                  R4       V PS                  4        V PS                  4        V P                  R4       V PS                  ^V PF                  '       * ,           4       V P                   PU                  4        EF  w  pp	V P                  V P1                  R V,           4       RV R2V	^4       V P3                  4        V P5                  4        \7        V4      pRVn+        \9        V	P:                  R-4      pRV9   d0   VP<                  P?                  R4      pV P                  V R24       R!V9   d7   VP<                  P?                  R!4      pV P                  V R"V: R#V R$24       VP<                  PA                  V	4       VVn,        V P                  R%4       V PK                  V4       V PM                  V	P:                  4       V PO                  V	P:                  V4       V PQ                  VRR7       V PS                  4        EK  	  RP                  R& V P                    4       4      pV P                  R'V R(2^R7       R)P                  R* V PZ                   4       4      pV P                  R+V: 24       R # ).Nzno root frame allowed)async_exported)exportedzfrom jinja2.runtime import rL    z, environment=environmentzblock z defined twice.zfrom z import z as zimport zname = rootz(context, missing=missingr  )rm  r-   z = TemplateReference(context)Tzparent_template = Noner  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_superz = context.super(z, block_rO   z_block_vars = {}c              3   0   "   T F  q: R V 2x  K  	  R# 5i)z: block_Nr   r  s   & r(   r   /CodeGenerator.visit_Template.<locals>.<genexpr>  s     !K{!E!"5{s   z
blocks = {r  &c              3   4   "   T F  w  rV R V 2x  K  	  R# 5ir  Nr   r   s   &  r(   r   r;    s     Gtq1#Qqc
s   zdebug_info = r   )r-   r9  ).r   rP   rf   runtimer2  r3  r  r  r<  r  ri   findr
   Extendsfind_allr   r  r0  r.  ImportedName
importnamer  r6  rsplitr  rE  r  r1   r   r  r   r  r  r   r   r  r   r  r  rd  r  rF  r   r   r   r  )r-   r/   r0   r:   r2  r3  exported_namesenvenvhave_extendsr   import_impaliasmoduleobjr  rf   r   r   blocks_kv_strdebug_kv_strs   &&&                  r(   visit_TemplateCodeGenerator.visit_Template=  sz    }555}t//;+%$$$#H$=>N#H-N4tyy7PPQ ,G yy/t; ]]5;;/EzzT[[(		F5::.?N&+KK

# 0 }}U%7%78G!!)<)<<((373L3L3NN##C(5#:"%**S!"4KFNNU6((3%tE7#KLNNWSEeW#=> 9 	./ 	yy !!:6("EQ 	 	
 	 h_TYY	::--11&9CNNcU"?@A""4(+//%1%P%P$:P:P6P"NN34tyy)		5)$7 <)))@AKKM##,,,UVQRv&9:}-=>LL$"8"889:  ;;,,.KD%NN99X_-..GxrR
 KKM   /K&*K#(5FGJ#!));;FC#&CDE*$!));;GD#&7xxvQOP,,U3 $KNN-.[)""5::.OOEJJ4[DALLN7 /: 		!Kt{{!KK]O26a@xxGtGG|&678r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r   r1   )r'   r   s   "r(   r)   r    s&     / / /E /d /r*   c                v   ^ pVP                   '       dP   V P                  '       d   R# V P                  ^ 8  d+   V P                  R4       V P	                  4        V^,          pVP
                  '       d   V P                  V4      pMV P                  4       pVP                  '       dc   V P                  RVP                  : R2V4       V P	                  4        V P                  RVP                  : R2V4       V P                  4        V P                  P                  '       g4   VP                  f&   V P                  RVP                  : RV R	2V4       MV P                  R
VP                  : RV R	24       V P                  R4       V P	                  4        V P                  V P                  4        R2V4       V P	                  4        V P                  RV4       V P                  4        V P                  4        V P                  RV P                  RR4       24       V P                  V4       R# )z.Call a block and register it for the template.Nif parent_template is None:zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](rO   zgen = context.blocks[r  for event in gen:event	finally: await gen.aclose()gen.close())r   r  r  r<  rE  scopedr  r  requiredrf   rF  rP   r  r   r  r_  )r-   r/   r0   r   r  s   &&&  r(   r   CodeGenerator.visit_Block  s   >>> %%%""Q&<=
;;;))%0G**,G===NN3DII=I4PKKMNN=dii],W LLN(((U\\-ANN,TYYMwiqI4 NN2499-uWIQOPNN6"KKMNN$$&''89 KKMgu-LLNLLNNND--.BMRST 	Ur*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   rA  r1   )r'   r   s   "r(   r)   r    s&     (! (!%-- (! (!$ (!r*   c                   VP                   '       g   V P                  RVP                  4       V P                  ^ 8  dq   V P                  '       g"   V P                  R4       V P                  4        V P                  R4       V P                  '       d   \        4       hV P                  4        V P                  RV4       V P                  VP                  V4       V P                  RV P                  : R24       V P                  R4       V P                  4        V P                  R4       V P                  4        VP                  '       d   R	V n        V ;P                  ^,          un        R
# )zCalls the extender.z,cannot use extend from a non top-level scoper7  z5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(rL   rO   z9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)TN)r   r0  r.  r  r  r<  rE  r  rF  r<   templaterS   rf   r   r-   r/   r0   s   &&&r(   visit_ExtendsCodeGenerator.visit_Extends  s
   ~~~IIDdkkR
 "
 )))@ANNRS %%%"n$DdK

4==%(

R		}A&'RSQR
 ???%)D" 	q r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Includer1   )r'   r   s   "r(   r)   r    s&     8 8%-- 8 8$ 8r*   c                   a a VP                   '       d"   S P                  R4       S P                  4        Rp\        VP                  \
        P                  4      '       da   \        VP                  P                  \        4      '       d   RpMo\        VP                  P                  \        \        34      '       d   RpM<\        VP                  \
        P                  \
        P                  34      '       d   RpS P                  RV R2V4       S P                  VP                  S4       S P                  RS P                  : R24       VP                   '       dt   S P!                  4        S P                  R	4       S P                  4        S P                  R
4       S P!                  4        S P                  R4       S P                  4        R VV 3R llpVP"                  '       d   S P                  RS P%                  S4       R24       S P                  R4       S P                  4        S P                  S P'                  4        R24       V! 4        S P!                  4        S P                  RS P'                  RR4       24       MFS P(                  P*                  '       d   S P                  R4       V! 4        MS P                  R4       VP                   '       d   S P!                  4        R# R# )zHandles includes.r  get_or_select_templateget_templateselect_templateztemplate = environment.rM   rL   rO   zexcept TemplateNotFound:rc  rD  c                    V ^8  d   QhRR/# r   r   )r'   s   "r(   r)   1CodeGenerator.visit_Include.<locals>.__annotate__-  s     	 	4 	r*   c                  l   < SP                  4        SP                  R S 4       SP                  4        R# )rV  N)rE  r_  rF  )r0   r-   s   r(   	loop_body.CodeGenerator.visit_Include.<locals>.loop_body-  s%    KKMgu-LLNr*   zNgen = template.root_render_func(template.new_context(context.get_all(), True, rC  rU  rW  rX  rY  zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamN)ignore_missingr<  rE  rp   r_  r
   Constrx   rD   r   r   r  Listr<   rS   rf   rF  with_contextr  r  rP   r  )r-   r/   r0   	func_namerl  s   f&f  r(   visit_IncludeCodeGenerator.visit_Include  s2   NN6"KKM,	dmmU[[11$----s33*	DMM//%??-	UZZ'@AA)I01=tD

4==%(

R		}A&'LLNNN56KKMNN6"LLNNN7#KKM	 	
 NN++E2327
 NN6"KKMNNd//122CDEKLLNNND--.BMRST &&&NN! KNNSTLLN r*   c                |   < V ^8  d   QhRS[ P                  S[P                  S[P                  3,          RS[RR/# r0  )r4   r   r
   Import
FromImportr1   )r'   r   s   "r(   r)   r  L  sB     U UGGELL%*:*::;UDIU	Ur*   c                   V P                  V P                  R 4       R24       V P                  VP                  V4       V P                  RV P                  : R24       VP
                  '       d=   RV P                  R4       2pV P                  V RV P                  V4       R24       R
# V P                  RV P                  R4       R	24       R
# )await zenvironment.get_template(rL   z).make_module_asyncz(context.get_all(), True, rO   _get_default_modulez	(context)N)rS   r  r<   r_  rf   rq  r  )r-   r/   r0   f_names   &&& r(   _import_commonCodeGenerator._import_commonL  s     	

d''122KLM

4==%(

R		}B'("4#4#4X#>"?@FJJ(4T5L5LU5S4TTUV JJ,T->->x-H,ISTr*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   rv  r1   )r'   r   s   "r(   r)   r  [  s+     	N 	N 	Ne 	N 	Nr*   c                   V P                  VP                  P                  VP                  4       R2V4       VP                  '       d!   V P                  RVP                  : R24       V P                  W4       VP                  '       dF   VP                  P                  R4      '       g#   V P                  RVP                  : R24       R# R# R# )zVisit regular imports.r  r#  r"  r!  context.exported_vars.discard(rO   N)r<  r   r  r  r   rS   r~  
startswithr`  s   &&&r(   visit_ImportCodeGenerator.visit_Import[  s    %--++DKK89=tD>>>JJt{{oT:;D(>>>$++"8"8"="=NN;DKK?!LM #>>r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   rw  r1   )r'   r   s   "r(   r)   r  f  s(     5 5U%5%5 5e 5 5r*   c           	     :  a V P                  V4       V P                  R4       V P                  VS4       . p. pVP                   EF`  p\	        V\
        4      '       d   Vw  rVMTpV P                  SP                  P                  V4       RV: R24       V P                  RSP                  P                  V4       R24       V P                  4        V P                  V4      P                  RR4      P                  RR	4      pR
V RV: 2pV P                  SP                  P                  V4       RV: RV: R24       V P                  4        SP                  '       g   EK$  VP                  V4       VP                  R4      '       d   EKO  VP                  V4       EKc  	  V'       d|   \!        V4      ^8X  d<   V^ ,          pV P                  RV: RSP                  P                  V4       24       M0RP#                  V3R lV 4       4      p	V P                  RV	 R24       V'       df   \!        V4      ^8X  d    V P                  RV^ ,          : R24       R# RP#                  \%        \&        V4      4      p
V P                  RV
 R24       R# R# )zVisit named imports.zincluded_template = z = getattr(included_template, z
, missing)r  r  r  z{{r  z}}z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=rO   r!  r#  r"  rL   c              3   d   <"   T F%  q: R SP                   P                  V4       2x  K'  	  R# 5ir  )r   r  )r}   rf   r0   s   & r(   r   1CodeGenerator.visit_FromImport.<locals>.<genexpr>  s-      %GPthb!2!24!8 9:ys   -0r$  r%  r  z)context.exported_vars.difference_update((rC  N)ro  rS   r~  r   rp   r   r<  r   r  rE  r  replacerF  r   rj  r  r  r  r)  r  )r-   r/   r0   	var_namesdiscarded_namesrf   rK  r  messagenames_kvr,  s   &&f        r(   visit_FromImportCodeGenerator.visit_FromImportf  sW   T

)*D%(	JJD$&&"eNN==$$U+, -//3hjB NNS!2!25!9 :,GHKKM
 }}T*223=EEc4PH!!)
 +77;h@ 
 NN==$$U+,N7+WTHTUV LLN~~~  ''',,#**519 < 9~" |thd5==;L;LT;R:STU99 %GP%  !7zEF?#q(!?PQ@R?UUVWX IIc$&@A	?	{"M r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Forr1   )r'   r   s   "r(   r)   r    s0     IP IPeii IP IP$ IPr*   c                   VP                  4       pR Vn        VP                  4       pVP                  4       pVP                  ;'       g    R\        VP	                  R'R7      R(4      9   ;'       go    \
        ;QJ d9    R VP                  \        P                  4       4       F  '       g   K   R M.	  RM*! R VP                  \        P                  4       4       4      pRpV'       d   VP                  P                  R4      pVP                  P                  VRR7       VP                  '       d   VP                  P                  VRR7       VP                  '       Ed   V P                  4       pVP                  P                  VR	R7       V P                  V P!                  V4       R
2VP                  4       V P#                  4        V P%                  V4       V P                  V P'                  RR4      4       V P)                  VP*                  V4       V P-                  R4       V P-                  V P'                  RR4      4       V P-                  R4       V P#                  4        V P                  RVP                  4       V P)                  VP                  V4       V P-                  R4       V P#                  4        V P                  R4       V P)                  VP*                  V4       V P/                  ^4       V P1                  VR R7       VP                  '       dW   V P                  V P!                  R4       R2V4       V P#                  4        V P3                  V4       VP2                  Vn        V'       d   V P                  V R24       VP                  \        P4                  4       FE  p	V	P6                  R8X  g   K  V	P8                  R8X  g   K)  V P;                  RV	P<                  4       KG  	  VP                  '       d%   V P                  4       p
V P                  V
 R24       V P                  V P'                  RR4      V4       V P)                  VP*                  V4       V'       d)   V P-                  RV RV P'                  R4       R24       MV P-                  R4       VP                  '       d   V P-                  X R24       VP                  '       d   V P-                  R4       MV P>                  P@                  '       d   V'       g   V P-                  R4       V P)                  VPB                  V4       V P>                  P@                  '       d   V'       g   V P-                  R4       VP                  '       d   V P-                  R4       VP                  '       d   V P-                  R 4       MT P-                  V'       d   R!MR4       V P#                  4        V P%                  V4       V P                  R"4       V PE                  VPF                  V4       VP                  '       d   V P                  X
 R#24       V P/                  4        T P1                  Y1P                  ;'       d    VP                  '       * R7       VP                  '       dt   V P                  RX
 R24       V P#                  4        V P%                  V4       V PE                  VP                  V4       V P1                  V4       V P/                  4        VP                  '       d   V PI                  V4       V P/                  4        V PK                  W!4       V P-                  V P'                  R$4       R%24       V P>                  P@                  '       d   V P-                  R4       V P)                  VPB                  V4       V P>                  P@                  '       d   V P-                  R4       V P-                  R&4       V PM                  V4       V PN                  '       d9   V PN                  R),          PQ                  VP                  PR                  4       R# R# )*Tloopr  )onlyc              3   8   "   T F  qP                   x  K  	  R # 5ir8   )rZ  )r}   r   s   & r(   r   *CodeGenerator.visit_For.<locals>.<genexpr>  s     H-GE<<-Gr   FN)
for_branchelsetestz(fiter):z
async for zfor r  zauto_aiter(fiter)fiter:r  rT  r  z%(reciter, loop_render_func, depth=0):r  storez8Can't assign to special loop variable in for-loop targetz = 1rL   AsynczLoopContext(rM   reciterzauto_aiter(rO   z&, undefined, loop_render_func, depth):z, undefined):z_loop_vars = {}z = 0ry  zloop(z, loop))r  )r  r  )*r   r   	recursiver   iter_child_nodesr  rB  r
   r   r   r  r  else_r  r6  r<  r  rE  r  r  r<   r  rS   rF  r  r   r  r	  rf   r0  r.  rP   r  r(  rd  r  rH  rV  rZ  r$  difference_updatestores)r-   r/   r0   r   
test_frame
else_frameextended_looploop_refloop_filter_funcrf   iteration_indicators   &&&        r(   	visit_ForCodeGenerator.visit_For  s    [[]
 $
[[]
[[]
 NN I It44)4DiPQI I sHT]]5;;-GHsssHT]]5;;-GHH	 	 !));;FCH'''@:::++DV+D999#88:++DV+DNNdii(89:(CTYYOKKMZ(NN4,,\6BCJJt{{J/JJvJJt(()<gFGJJsOKKMNN5$)),JJtyy*-JJsOKKMNN8$JJt{{J/LLOZ4@
 >>>NN99V$%%JKT KKMKK
# !+ 1 1J NNhZz23MM%**-Dxx7"tyyF':		NKK . :::"&";";"=NN12$78t((v>E

4;;
+JJH:T$*;*;G*D)E\RSJJv999JJ*+1-.>>>JJy!(((

=)JJtyy%((((

3999JJsO>>>JJ?@JJ-SA$()		:.:::NN12$78..*K*K^ 	 	
 :::NNS!4 5Q78KKMZ(OODJJ
3Z(LLN >>>''
3LLNU)JJ$++H56e<=(((

=)JJtyy%((((

3JJy!NN5! r"44Z5G5G5N5NO r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Ifr1   )r'   r   s   "r(   r)   r  (  s&      UXX e  r*   c                   VP                  4       pV P                  R V4       V P                  VP                  V4       V P	                  R4       V P                  4        V P                  VP                  V4       V P                  4        VP                   F~  pV P                  RV4       V P                  VP                  V4       V P	                  R4       V P                  4        V P                  VP                  V4       V P                  4        K  	  VP                  '       dP   V P                  R4       V P                  4        V P                  VP                  V4       V P                  4        R# R# )r  r  zelif rD  N)r   r<  r<   r  rS   rE  rd  r  rF  elif_r  )r-   r/   r0   if_framer  s   &&&  r(   visit_IfCodeGenerator.visit_If(  s    ::<ud#

499h'

3		8,ZZENN7E*JJuzz8,JJsOKKMOOEJJ1LLN   :::NN7#KKMOODJJ1LLN	 r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r   r1   )r'   r   s   "r(   r)   r  =  s&     / / /E /d /r*   c                   V P                  W4      w  r4V P                  4        VP                  '       db   VP                  P	                  R 4      '       g!   V P                  RVP                  : R24       V P                  RVP                  : R24       V P                  VP                  P                  VP                  4       R24       V P                  WC4       R# )r!  r&  rO   r#  r"  r  N)
r  ro  r   rf   r  rS   r<  r   r  r  )r-   r/   r0   macro_framer  s   &&&  r(   visit_MacroCodeGenerator.visit_Macro=  s    !%!=>>>99'',,

7		}AFGNN]499-t<=

emm''		23378y.r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r   r1   )r'   r   s   "r(   r)   r  G  s&      EOO E d r*   c                    V P                  W4      w  r4V P                  R 4       V P                  WC4       V P                  W!4       V P	                  VP
                  VRR7       V P                  V4       R# )z	caller = T)forward_callerN)r  r<  r  rV  
visit_CallcallrZ  )r-   r/   r0   
call_framer  s   &&&  r(   visit_CallBlockCodeGenerator.visit_CallBlockG  s[     $ <
{#y-%		5>ur*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   FilterBlockr1   )r'   r   s   "r(   r)   r  O  s(     	' 	'e&7&7 	' 	'$ 	'r*   c                v   VP                  4       pVP                  P                  V4       V P                  V4       V P	                  V4       V P                  VP                  V4       V P                  W!4       V P                  VP                  V4       V P                  V4       V P                  V4       R # r8   )r   r   r  r  r   rd  r  rV  r   filterrZ  r  )r-   r/   r0   filter_frames   &&& r(   visit_FilterBlockCodeGenerator.visit_FilterBlockO  s    {{}))$/&L!		<0%$++|4u&r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Withr1   )r'   r   s   "r(   r)   r  Z  s&     
% 
%uzz 
%% 
%D 
%r*   c                   VP                  4       pVP                  P                  V4       V P                  V4       \	        VP
                  VP                  4       FH  w  rEV P                  4        V P                  WC4       V P                  R 4       V P                  WR4       KJ  	  V P                  VP                  V4       V P                  V4       R# )r  N)r   r   r  r  ziptargetsvaluesro  r<   rS   rd  r  r  )r-   r/   r0   
with_framer  exprs   &&&   r(   
visit_WithCodeGenerator.visit_WithZ  s    [[]
''-$dkk:LFLLNJJv*JJuJJt#	 ;
 			:.$r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   ExprStmtr1   )r'   r   s   "r(   r)   r  f  s&     % %5>> %% %D %r*   c                `    V P                  V4       V P                  VP                  V4       R # r8   )ro  r<   r/   r`  s   &&&r(   visit_ExprStmtCodeGenerator.visit_ExprStmtf  s     T

499e$r*   c                   ,   a  ] tR tRt o V 3R ltRtV tR# )CodeGenerator._FinalizeInfoij  c                   < V ^8  d   Qh/ S[ P                  S[ P                  RS[3,          ,          ;R&   S[ P                  S[,          ;R&   # )r$   .constsrc)r4   rl   rE   rD   )r'   r   s   "r(   r)   (CodeGenerator._FinalizeInfo.__annotate__j  s9     zz!**S#X.// ZZ_ r*   r   N)r   r   r   r   __annotate_func__r   r   r   s   @r(   _FinalizeInfor  j  s      r*   r  c                N   < V ^8  d   QhRS[ P                  RS[ P                  /# rw   r4   r5   )r'   r   s   "r(   r)   r  o  s#       155 r*   c                    \        V 4      # )zThe 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.
r3  r   s   &r(   _default_finalizeCodeGenerator._default_finalizen  s     5zr*   c                    < V ^8  d   QhRS[ /# r)  )r  )r'   r   s   "r(   r)   r  x  s     . . .r*   c                  a aa S P                   e   S P                   # S P                  ;poRpS P                  P                  '       d   RpS P                  P                  o\        P
                  R\        P                  R\        P                  R/P                  \        P                  ! S4      4      pRpVf   R VV3R llpMV V R2pVR8X  d   R	 VVV 3R
 llpS P                  W4      S n         S P                   # )aI  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_ctxrP   c                X    V ^8  d   QhR\         P                  R\         P                  /# rw   r  )r'   s   "r(   r)   2CodeGenerator._make_finalize.<locals>.__annotate__  s"     8 8AEE 8aee 8r*   c                     < S! S! V 4      4      # r8   r   )rx   r  env_finalizes   &r(   finalize.CodeGenerator._make_finalize.<locals>.finalize  s    "<#677r*   rL   c                X    V ^8  d   QhR\         P                  R\         P                  /# rw   r  )r'   s   "r(   r)   r    s&     N N N!%% Nr*   c                 6   < S! S! SP                   V 4      4      # r8   )rP   )rx   r  r  r-   s   &r(   r  r    s    &|D4D4De'LMMr*   )
	_finalizer  rP   r  r   r  eval_contextgetfrom_objr  )r-   r  r  pass_argr  r  s   f   @@r(   _make_finalizeCodeGenerator._make_finalizex  s     >>%>>! "3337$$$)C++44L  )%%'9$$m c!!,/	  H8 8 hZr*},N N ++H:~~r*   c                ^   < V ^8  d   QhRS[ P                  S[ P                  ,          RS[/# )r$   groupr&   )r4   r   r5   rD   )r'   r   s   "r(   r)   r    s(     # #

155(9 #c #r*   c                *    \        \        V4      4      # )zGiven a group of constant values converted from ``Output``
child nodes, produce a string to write to the template module
source.
)r  r   )r-   r  s   &&r(   _output_const_repr CodeGenerator._output_const_repr  s    
 F5M""r*   c                F   < V ^8  d   QhRS[ P                  RS[RS[RS[/# )r$   r/   r0   r  r&   )r
   r3   r1   r  rD   )r'   r   s   "r(   r)   r    s1     % %JJ%',%8E%	%r*   c                    VP                  VP                  4      pVP                  P                  '       d   \        V4      p\	        V\
        P                  4      '       d   \        V4      # VP                  V4      # )a  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_constr:   rG  r   rp   r
   TemplateDatarD   r  )r-   r/   r0   r  r  s   &&&& r(   _output_child_to_const$CodeGenerator._output_child_to_const  s]     enn->>$$$5ME dE..//u:~~e$$r*   c                D   < V ^8  d   QhRS[ P                  RS[RS[RR/# r$   r/   r0   r  r&   Nr
   r3   r1   r  )r'   r   s   "r(   r)   r    s1     % %JJ%',%8E%	%r*   c                6   VP                   P                  '       d   V P                  R4       M?VP                   P                  '       d   V P                  R4       MV P                  R4       VP                  e   V P                  VP                  4       R# R# )zHOutput 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)r:   r;   rS   rG  r  r-   r/   r0   r  s   &&&&r(   _output_child_preCodeGenerator._output_child_pre  sh     >>"""JJJK^^&&&JJy!JJv<<#JJx||$ $r*   c                D   < V ^8  d   QhRS[ P                  RS[RS[RR/# r  r  )r'   r   s   "r(   r)   r    s1     	 	JJ	',	8E			r*   c                j    V P                  R4       VP                  e   V P                  R4       R# R# )zGOutput extra source code after visiting a child of an
``Output`` node.
rO   N)rS   r  r  s   &&&&r(   _output_child_post CodeGenerator._output_child_post  s)     	

3<<#JJsO $r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Outputr1   )r'   r   s   "r(   r)   r    s+     M M Me M Mr*   c                0   VP                   '       d6   V P                  '       d   R # V P                  R4       V P                  4        V P	                  4       p. pVP
                   F  p VP                  '       g6   \        V\
        P                  4      '       g   \
        P                  ! 4       hV P                  WRV4      pT'       d8   \        TR,          \        4      '       d   TR,          P                  T4       K  TP                  T.4       K  	  VP                  e^   \        V4      ^8X  d    V P                  VP                   R24       MV P                  VP                   R24       V P                  4        V F  p\        V\        4      '       dT   V P!                  V4      pVP                  f   V P                  RV,           4       KR  V P                  VR,           4       Kl  VP                  f   V P                  RV4       MV P#                  V4       V P%                  WrV4       V P'                  Wr4       V P)                  WrV4       VP                  f   K  V P+                  R4       K  	  VP                  e4   V P-                  4        T P                  \        V4      ^8X  d   RMR4       VP                   '       d   V P-                  4        R # R #   \
        P                  \        3 d    TP                  T4        EK  i ; i)	NrT  rU  z	.extend((rT  r  rO   rC  r  )r   r  r<  rE  r  r
   r  rp   r  
Impossibler  	Exceptionrj  r   r   r  r  ro  r  r<   r
  rS   rF  )	r-   r/   r0   r  r  childr  itemvals	   &&&      r(   visit_OutputCodeGenerator.visit_Output  sJ   %%%%%%NN89KKM&&(;=
 ZZE NNN "%););<<**,,33E(K 
48T22R&UG$/  2 <<#4yA~%,,x89%,,y9:KKMD$%%--d3<<'NN8c>2NN39-<<'NN8T2LL& &&tH=

4'''X><<+JJsO+ . <<#LLNNN#d)q.3d;%%%LLN &_ $$i0  E"s   *AK$$,LLc                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Assignr1   )r'   r   s   "r(   r)   r  .  s&     ( ( (e ( (r*   c                   V P                  4        \        4       pVP                  \        P                  4       F  pVP
                  V9   d   K  VP                  VP
                  4       VP                  P                  VP
                  4      pV P                  R V R24       V P                  4        V P                  R4       V P                  4        K  	  V P                  V4       V P                  VP                  V4       V P                  R4       V P                  VP                   V4       V P#                  V4       R# )zif not isinstance(z, Namespace):zMraise TemplateRuntimeError("cannot assign attribute on non-namespace object")r  N)r  r   rB  r
   NSRefrf   r   r   r  r<  rE  rF  ro  r<   r  rS   r/   r-  )r-   r/   r0   	seen_refsnsrefr  s   &&&   r(   visit_AssignCodeGenerator.visit_Assign.  s    !!# !$	]]5;;/EzzY& MM%**%--##EJJ/CNN/uMBCKKMNNF LLN 0  	T

4;;&

5

499e$  'r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   AssignBlockr1   )r'   r   s   "r(   r)   r  M  s(     & &e&7&7 & &$ &r*   c                |   V P                  4        VP                  4       pR Vn        VP                  P	                  V4       V P                  V4       V P                  V4       V P                  VP                  V4       V P                  V4       V P                  VP                  V4       V P                  R4       VP                  e   V P                  VP                  V4       MV P                  RVP                   R24       V P                  R4       V P                  V4       V P!                  V4       R# )Fz9 = (Markup if context.eval_ctx.autoescape else identity)(Nconcat(rO   )r  r   r   r   r  r  r   rd  r  ro  r<   r  rS   r  r   r-  r  )r-   r/   r0   r   s   &&& r(   visit_AssignBlockCodeGenerator.visit_AssignBlockM  s    !!#kkm ,1(((.%K 		;/T

4;;&

NO;;"dkk;7JJ!3!3 4A67

3  '%r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r  r1   )r'   r   s   "r(   r)   r  e  s&      uzz % D r*   c           	     ~   VP                   R 8X  du   VP                  '       g%   VP                  '       g   VP                  '       d?   V P                  '       d-   V P                  R,          P                  VP                  4       VP                  P                  VP                  4      pVP                   R8X  dq   VP                  P                  V4      pVe*   V^ ,          \        8X  d   V P                  V4      '       d)   V P                  RVP                  : RV RV R24       R# V P                  V4       R# )r  r  Nz(undefined(name=z) if z is missing else rO   r  )r	  r   r   r   r$  r   rf   r   r  	find_loadr   r  rS   )r-   r/   r0   r  r  s   &&&  r(   r  CodeGenerator.visit_Namee  s    88wNNNe...%2C2C2C!!!""2&**4995mm		*
 88v==**3/D G1144S99

&tyym5=NseSTU 

3r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r  r1   )r'   r   s   "r(   r)   r  ~  s&     0 0 0E 0d 0r*   c                    VP                   P                  VP                  4      pV P                  V R VP                  : R24       R# )r  r  N)r   r  rf   r<  attr)r-   r/   r0   r  s   &&& r(   visit_NSRefCodeGenerator.visit_NSRef~  s9    
 mm		*#a		}A./r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   ro  r1   )r'   r   s   "r(   r)   r    s&     " " "E "d "r*   c                    VP                  VP                  4      p\        V\        4      '       d   V P	                  \        V4      4       R # V P	                  \        V4      4       R # r8   )r  r:   rp   r   rS   rD   r  )r-   r/   r0   r  s   &&& r(   visit_ConstCodeGenerator.visit_Const  sA    mmENN+c5!!JJs3x JJtCy!r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r  r1   )r'   r   s   "r(   r)   r    s(      u'9'9 % D r*   c                     V P                  \        VP                  VP                  4      4      4       R#   \        P
                   d%    T P                  R TP                  : R24        R# i ; iz6(Markup if context.eval_ctx.autoescape else identity)(rO   N)rS   r  r  r:   r
   r  datar`  s   &&&r(   visit_TemplateData CodeGenerator.visit_TemplateData  sW    	JJtDMM%..9:; 	JJHUVW	s   37 5A0/A0c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r  r1   )r'   r   s   "r(   r)   r    s&     . . .E .d .r*   c                    V P                  R 4       Rp\        VP                  4       F/  w  r4V'       d   V P                  R4       V P                  WB4       K1  	  T P                  V^ 8X  d	   R4       R# R4       R# )rM   rL   z,)rO   Nr  rS   r  r   r<   r-   r/   r0   r  r  s   &&&  r(   visit_TupleCodeGenerator.visit_Tuple  s[    

3"4::.IC

4 JJt# / 	

3!84--r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   rp  r1   )r'   r   s   "r(   r)   r    s&      uzz % D r*   c                    V P                  R 4       \        VP                  4       F/  w  r4V'       d   V P                  R4       V P                  WB4       K1  	  V P                  R4       R# )r  rL   r  Nr9  r:  s   &&&  r(   
visit_ListCodeGenerator.visit_List  sJ    

3"4::.IC

4 JJt# / 	

3r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Dictr1   )r'   r   s   "r(   r)   r    s&      uzz % D r*   c                J   V P                  R 4       \        VP                  4       Fg  w  r4V'       d   V P                  R4       V P                  VP                  V4       V P                  R4       V P                  VP
                  V4       Ki  	  V P                  R4       R# )r  rL   r  r  N)rS   r  r   r<   r  rx   r:  s   &&&  r(   
visit_DictCodeGenerator.visit_Dict  sn    

3"4::.IC

4 JJtxx'JJtJJtzz5) / 	

3r*   +-*/z//z**%andorznot c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Concatr1   )r'   r   s   "r(   r)   r    s&       e  r*   c                :   VP                   P                  '       d   R pM!VP                   P                  '       d   RpMRpV P                  V R24       VP                   F%  pV P                  WB4       V P                  R4       K'  	  V P                  R4       R# )z8(markup_join if context.eval_ctx.volatile else str_join)markup_joinstr_joinz((rL   rC  N)r:   r;   rG  rS   r
   r<   )r-   r/   r0   rr  r  s   &&&  r(   visit_ConcatCodeGenerator.visit_Concat  sx    >>"""RI^^&&&%I"I

i[#$::CJJs"JJt  	

4r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Comparer1   )r'   r   s   "r(   r)   r    s&      %--  $ r*   c                    V P                  R 4       V P                  VP                  V4       VP                   F  pV P                  W24       K  	  V P                  R4       R# )rM   rO   N)rS   r<   r  opsrV   s   &&& r(   visit_CompareCodeGenerator.visit_Compare  sD    

3

499e$((BJJr! 

3r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Operandr1   )r'   r   s   "r(   r)   r    s&     % %%-- % %$ %r*   c                    V P                  R \        VP                  ,           R 24       V P                  VP                  V4       R# )rN   N)rS   	operatorsrC   r<   r  r`  s   &&&r(   visit_OperandCodeGenerator.visit_Operand  s3    

Qy)*!,-

499e$r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Getattrr1   )r'   r   s   "r(   r)   r    s&     	 	%-- 	 	$ 	r*   c                X   V P                   P                  '       d   V P                  R 4       V P                  R4       V P                  VP                  V4       V P                  RVP
                  : R24       V P                   P                  '       d   V P                  R4       R# R# )(await auto_await(zenvironment.getattr(rL   rO   rC  N)rP   r  rS   r<   r/   r*  r`  s   &&&r(   visit_GetattrCodeGenerator.visit_Getattr  s|    $$$JJ+,

)*

499e$

R		}A&'$$$JJt %r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Getitemr1   )r'   r   s   "r(   r)   r    s&     ! !%-- ! !$ !r*   c                   \        VP                  \        P                  4      '       d]   V P	                  VP
                  V4       V P                  R 4       V P	                  VP                  V4       V P                  R4       R# V P                  P                  '       d   V P                  R4       V P                  R4       V P	                  VP
                  V4       V P                  R4       V P	                  VP                  V4       V P                  R4       V P                  P                  '       d   V P                  R4       R# R# )r  r  rc  zenvironment.getitem(rL   rO   rC  N)	rp   r  r
   Slicer<   r/   rS   rP   r  r`  s   &&&r(   visit_GetitemCodeGenerator.visit_Getitem  s     dhh,,JJtyy%(JJsOJJtxx'JJsO(((

/0JJ-.JJtyy%(JJtJJtxx'JJsO(((

4  )r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   ri  r1   )r'   r   s   "r(   r)   r    s&     ) ) )E )d )r*   c                J   VP                   e   V P                  VP                   V4       V P                  R4       VP                  e   V P                  VP                  V4       VP                  e0   V P                  R4       V P                  VP                  V4       R # R # )Nr  )startr<   rS   stoprO  r`  s   &&&r(   visit_SliceCodeGenerator.visit_Slice  sq    ::!JJtzz5)

399 JJtyy%(99 JJsOJJtyy%( !r*   c          	         < V ^8  d   QhRS[ P                  S[P                  S[P                  3,          RS[RS[RS[ P                  R,          /# )r$   r/   r0   	is_filterr&   N)r4   r   r
   r   r   r1   rn   Iterator)r'   r   s   "r(   r)   r    sL     ' 'GGELL%**45'>C'PT'	
D	'r*   c              #    "   V P                   P                  '       d   V P                  R 4       V'       d`   V P                  V P                  VP                  ,           R24       V P                   P                  P                  VP                  4      pM^V P                  V P                  VP                  ,           R24       V P                   P                  P                  VP                  4      pVfM   VP                  '       g;   V'       d   RMRpV P                  RV RVP                  : R2VP                  4       \        P                  R\        P                  R	\        P                   R
/P                  \        P                  ! V4      4      pVe   V P                  V R24       Rx  V P                  W4       V P                  R4       V P                   P                  '       d   V P                  R4       R# R# 5i)rc  rM   Nr  r  zNo r  r5  r  r  rP   rL   rO   rC  )rP   r  rS   r   rf   r  r   r   r0  r.  r   r  r  r  r  )r-   r/   r0   rs  r  	type_namer  s   &&&&   r(   _filter_test_common!CodeGenerator._filter_test_common  s     $$$JJ+,JJ$,,tyy12!45##++//		:DJJ$**TYY/023##))--dii8D
 < 0 0 0$-6IIII;gdii]!<dkkJ i!!#5  -
 #d#
	 	 JJ(2' 	t#

3$$$JJt %s   5H	CH	H	C6H	c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r   r1   )r'   r   s   "r(   r)   r  -  s&     6 6 6e 6 6r*   c           	        V P                  WR 4      ;_uu_ 4        VP                  e   V P                  VP                  V4       MVP                  P                  '       d.   V P                  RVP                   RVP                   R24       M[VP                  P                  '       d!   V P                  RVP                   R24       MV P                  RVP                   R24       RRR4       R#   + '       g   i     R# ; i)TNz(Markup(concat(z.)) if context.eval_ctx.autoescape else concat(rC  zMarkup(concat(r!  rO   )rw  r/   r<   r:   r;   rS   r   rG  r`  s   &&&r(   r   CodeGenerator.visit_Filter,  s    %%d488 yy$

499e,(((

%ell^ 4CCH<<.PRT ***

^ELL><=

WU\\N!45 9888s   AC5#AC5,?C55D	c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   r   r1   )r'   r   s   "r(   r)   r  >  s&     ) )uzz )% )D )r*   c                    V P                  WR 4      ;_uu_ 4        V P                  VP                  V4       RRR4       R#   + '       g   i     R# ; ir   )rw  r<   r/   r`  s   &&&r(   r   CodeGenerator.visit_Test=  s6    %%d599JJtyy%( :999s   AA	c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   CondExprr1   )r'   r   s   "r(   r)   r  C  s&      5>> % D r*   c                H  a aa SP                  4       oR  VVV 3R llpS P                  R4       S P                  SP                  S4       S P                  R4       S P                  SP                  S4       S P                  R4       V! 4        S P                  R4       R# )c                    V ^8  d   QhRR/# r   r   )r'   s   "r(   r)   2CodeGenerator.visit_CondExpr.<locals>.__annotate__F  s     		 		T 		r*   c                     < SP                   e   SP                  SP                   S 4       R # SP                  RSP                  S4       R24       R # )Nz1cond_expr_undefined("the inline if-expression on z6 evaluated to false and no else section was defined."))expr2r<   rS   r  )r0   r/   r-   s   r(   write_expr21CodeGenerator.visit_CondExpr.<locals>.write_expr2F  sL    zz%

4::u-JJMM$'( )*+r*   rM   z if z else rO   N)r   rS   r<   expr1r  )r-   r/   r0   r  s   fff r(   visit_CondExprCodeGenerator.visit_CondExprB  sq    

		 		 	

3

4::u%

6

499e$

8

3r*   c                D   < V ^8  d   QhRS[ P                  RS[RS[RR/# )r$   r/   r0   r  r&   N)r
   rw  r1   rn   )r'   r   s   "r(   r)   r  Z  s1      JJ',>B	r*   c                   V P                   P                  '       d   V P                  R 4       V P                   P                  '       d   V P                  R4       MV P                  R4       V P	                  VP
                  V4       V'       d   RR/MRpVP                  '       d   RR/M/ pVP                  '       d   RR/M/ pV'       d   VP                  ! V3/ VB  MV'       g	   V'       d   \        V3/ VB pV P                  WV4       V P                  R4       V P                   P                  '       d   V P                  R4       R# R# )	rc  zenvironment.call(context, zcontext.call(r  N
_loop_vars_block_varsrO   rC  )rP   r  rS   rQ   r<   r/   r   r   r   r   r  )r-   r/   r0   r  rv  loop_kwargsblock_kwargss   &&&&   r(   r  CodeGenerator.visit_CallY  s    $$$JJ+,%%%JJ34JJ'

499e$/=(+46;6F6F6F|\2B9>9J9J9J}5PR<|<L<|<LtL1

3$$$JJt %r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Keywordr1   )r'   r   s   "r(   r)   r  p  s&     & &%-- & &$ &r*   c                    V P                  VP                  R ,           4       V P                  VP                  V4       R# r>  )rS   r  r<   rx   r`  s   &&&r(   visit_KeywordCodeGenerator.visit_Keywordp  s(    

488c>"

4::u%r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   MarkSafer1   )r'   r   s   "r(   r)   r  v  s&      5>> % D r*   c                    V P                  R 4       V P                  VP                  V4       V P                  R4       R# )zMarkup(rO   NrS   r<   r  r`  s   &&&r(   visit_MarkSafeCodeGenerator.visit_MarkSafev  s+    

9

499e$

3r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   MarkSafeIfAutoescaper1   )r'   r   s   "r(   r)   r  {  s+      ..7<	r*   c                    V P                  R 4       V P                  VP                  V4       V P                  R4       R# r3  r  r`  s   &&&r(   visit_MarkSafeIfAutoescape(CodeGenerator.visit_MarkSafeIfAutoescape{  s.     	

KL

499e$

3r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   EnvironmentAttributer1   )r'   r   s   "r(   r)   r    s+     / /../7</	/r*   c                J    V P                  R VP                  ,           4       R# )zenvironment.NrS   rf   r`  s   &&&r(   visit_EnvironmentAttribute(CodeGenerator.visit_EnvironmentAttribute  s     	

>DII-.r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   ExtensionAttributer1   )r'   r   s   "r(   r)   r    s0     O O,,O5:O	Or*   c                ^    V P                  R VP                  : RVP                   24       R# )zenvironment.extensions[z].N)rS   
identifierrf   r`  s   &&&r(   visit_ExtensionAttribute&CodeGenerator.visit_ExtensionAttribute  s'     	

,T__,?r$))MNr*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   rC  r1   )r'   r   s   "r(   r)   r    s(     9 9u'9'9 9% 9D 9r*   c                ^    V P                  V P                  VP                  ,          4       R # r8   )rS   r  rD  r`  s   &&&r(   visit_ImportedName CodeGenerator.visit_ImportedName  s    

4&&t78r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   InternalNamer1   )r'   r   s   "r(   r)   r    s(      u'9'9 % D r*   c                <    V P                  VP                  4       R # r8   r  r`  s   &&&r(   visit_InternalName CodeGenerator.visit_InternalName  s    

499r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   ContextReferencer1   )r'   r   s   "r(   r)   r    s+      **38	r*   c                (    V P                  R 4       R# )r  N)rS   r`  s   &&&r(   visit_ContextReference$CodeGenerator.visit_ContextReference  s     	

9r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   DerivedContextReferencer1   )r'   r   s   "r(   r)   r    s+     / /11/:?/	/r*   c                F    V P                  V P                  V4      4       R # r8   )rS   r  r`  s   &&&r(   visit_DerivedContextReference+CodeGenerator.visit_DerivedContextReference  s     	

4&&u-.r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Continuer1   )r'   r   s   "r(   r)   r    s&     ) )5>> )% )D )r*   c                *    V P                  R V4       R# )continueNr  r`  s   &&&r(   visit_ContinueCodeGenerator.visit_Continue  s    z4(r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Breakr1   )r'   r   s   "r(   r)   r    s&     & & &E &d &r*   c                *    V P                  R V4       R# )breakNr  r`  s   &&&r(   visit_BreakCodeGenerator.visit_Break  s    w%r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   Scoper1   )r'   r   s   "r(   r)   r    s&     & & &E &d &r*   c                    VP                  4       pVP                  P                  V4       V P                  V4       V P	                  VP
                  V4       V P                  V4       R # r8   )r   r   r  r  rd  r  r  )r-   r/   r0   scope_frames   &&& r(   visit_ScopeCodeGenerator.visit_Scope  sO    kkm((.%		;/%r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   OverlayScoper1   )r'   r   s   "r(   r)   r    s(     % %u'9'9 %% %D %r*   c                   V P                  4       pV P                  V R V P                  V4       24       V P                  V R24       V P                  VP                  V4       V P                  V4       VP                  RR7      pVP                  P                  V4       V P                  V4       V P                  VP                  V4       V P                  V4       V P                  4        R# )r  z.vars = T)r   N)r6  r<  r  r<   r  r  r   r   r  r  rd  r  r  r  )r-   r/   r0   r	  r  s   &&&  r(   visit_OverlayScope CodeGenerator.visit_OverlayScope  s    '')#c$"5"5e"<!=>?#h'(

4<<'##C(kk4k0((.%		;/%""$r*   c                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   EvalContextModifierr1   )r'   r   s   "r(   r)   r    s+     : :--:6;:	:r*   c                   VP                    F  pV P                  R VP                   R24       V P                  VP                  V4        VP                  P                  VP                  4      p\        VP                  VP                  V4       K  	  R#   \        P                   d    RTP                  n
         K  i ; i)zcontext.eval_ctx.r  TN)optionsr<  r  r<   rx   r  r:   setattrr
   r  r;   )r-   r/   r0   keywordr  s   &&&  r(   visit_EvalContextModifier'CodeGenerator.visit_EvalContextModifier  s     ||GNN.w{{m3?@JJw}}e,:mm,,U^^< S9 $
 ## /*.'/s   %B&CCc                >   < V ^8  d   QhRS[ P                  RS[RR/# r0  )r
   ScopedEvalContextModifierr1   )r'   r   s   "r(   r)   r    s0     
C 
C33
C<A
C	
Cr*   c                L   V P                  4       pVP                  P                  4       pV P                  V R 24       V P	                  W4       VP
                   F  pV P                  WR4       K  	  VP                  P                  V4       V P                  RV R24       R# )z = context.eval_ctx.save()zcontext.eval_ctx.revert(rO   N)r6  r:   saver<  r  r  r<   revert)r-   r/   r0   old_ctx_name	saved_ctxr  s   &&&   r(   visit_ScopedEvalContextModifier-CodeGenerator.visit_ScopedEvalContextModifier  s     002NN'')	,'ABC&&t3YYEJJu$ i(1,qABr*   c                J   < V ^8  d   Qh/ S[ P                  S[,          ;R&   # )r$   r  )r4   rl   r  )r'   r   s   "r(   r)   r  ,  s     T" zz-(/U" r*   )r$  r&  r  r!  r#  r"  r   r  r%  r  r  r  r  r  ri   rP   r  rg   r   r  r  rf   r9   rh   r   NFTr   )r  r8   )N    )zasync r4  )zr   r   r   r   r   propertyrj   r0  r6  r   rH  rE  rF  rV  rZ  r_  rd  rS   r<  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-  rP  r   ra  rs  r~  r  r  r  r  r  r  r  r  r  r4   
NamedTupler  staticmethodr  r  r  r  r  r  r
  r  r  r"  r  r+  r/  r5  r;  r?  rD  r[   	visit_Add	visit_Sub	visit_Mul	visit_Divvisit_FloorDiv	visit_Pow	visit_Mod	visit_Andvisit_Orrd   	visit_Pos	visit_Neg	visit_Notr@   rR  rX  r^  rd  rj  rp  r   rw  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   s   @r(   r.   r.   ,  s    G4 G4R * *
L L, ,
/ /
9 9( " "< < 
 	 	  * *7/ 7/r, ,\> > B BH H2 2Q  Q f

 

 ! !+ +I I$ $6 65 5, ,1 1# #U U3 3) ))O )OZx9 x9t/ /b(! (!T8 8tU U	N 	N5 5nIP IPV */ / 	' 	'
% 
%% %    ,0I. .`# #% %*% % 	 	M M^( (>& &0 20 0" " . .   C IC IC IC I &ND!IC IE"I4 H3I3I6"I   % % 	 	 ! !() ) ' 'R 6 6  ) )  ,   ,& & 
 / /
O O
9 9  
/ /
) )& && &% %: :
C 
Cq4  r*   r.   r  )<r   typingr4   
contextlibr   	functoolsr   ior   	itertoolsr   r  r   r{  
markupsafer   r	   r4  r
   
exceptionsr   
idtrackingr   r   r   r   r   r   r9   r   utilsr   r   rW   r   TYPE_CHECKINGtyping_extensionsterP   r   TypeVarrE   r5   r   r]  r@   r[   rd   ru   r|   r   r   r1   RuntimeErrorr   r   r   r  r  r.   r   r*   r(   <module>r	     s   6  % $   2    .  & * ( *       ???"(IIcCJ/0 	$$#
D#
D$X		' *&0"& &P PfJ, J'k '&&K &,9 bCK bCr*   