ó
    ùÞ juº  ã                   ó<  • S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  S	rS
S1rSS1R                  \5      rSSSSSSSSS\" 5       4
S jr " S S5      r " S S5      r " S S5      r\R"                  " S5      rS r " S S5      rg)zVprovides functionality for rendering a parsetree constructing into module
source code.é    N)Úast)Ú
exceptions)Úfilters)Ú	parsetree)Úutil)ÚPythonPrinteré
   Ú	UNDEFINEDÚSTOP_RENDERINGÚcontextÚloopTFc                 ó¢   • [         R                  " 5       n[        U5      n[        U[	        UUUUUUUUU	U
U5      U 5        UR                  5       $ )zUGenerate module source code given a parsetree node,
uri, and optional source filename)r   ÚFastEncodingBufferr   Ú_GenerateRenderMethodÚ_CompileContextÚgetvalue)ÚnodeÚuriÚfilenameÚdefault_filtersÚbuffer_filtersÚimportsÚfuture_importsÚsource_encodingÚgenerate_magic_commentÚstrict_undefinedÚenable_loopÚreserved_namesÚbufÚprinters                 ÚF/var/www/html/gaurav/venv/lib/python3.13/site-packages/mako/codegen.pyÚcompiler"      sc   € ô" ×
!Ò
!Ó
#€Cä˜CÓ €GÜØÜØØØØØØØØ"ØØØó	
ð 	ôð" �<‰<‹>Ðó    c                   ó   • \ rS rSrS rSrg)r   éF   c                 óˆ   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        X€l        X�l        X l	        X°l
        g ©N)r   r   r   r   r   r   r   r   r   r   r   )Úselfr   r   r   r   r   r   r   r   r   r   r   s               r!   Ú__init__Ú_CompileContext.__init__G   sC   € ð ŒØ ŒØ.ÔØ,ÔØŒØ,ÔØ.ÔØ&<Ô#Ø 0ÔØ&ÔØ,Õr#   )r   r   r   r   r   r   r   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r)   Ú__static_attributes__© r#   r!   r   r   F   s   † õ-r#   r   c                   óÊ   • \ rS rSrSrS rS r\S 5       rS r	S r
S rS	 rS
 rSS jrS rS r SS jr  S S jrS rS rS rS rS rS rS rS rS rS rS rS rSrg)!r   éb   zRA template visitor object which generates the
full module source for a template.

c                 óà  • Xl         X l        X0l        S /U l        [	        U[
        R                  [
        R                  45      U l        U R                  (       a¸  SUR                  -  nUR                  5       n[        UR                  R                  5      S:„  n[        UR                  R!                  SS5      5      n[        UR                  R!                  SS5      5      nS n	S n
UR"                  (       a  UR$                  (       d  US/-  nOåU R'                  5       n	U R                  R(                  n
SnU
b²  U
R*                  R                  5       nU
R*                  R,                  (       d  US/-  n[        U
R                  R!                  SS5      5      nU R                  R.                  =(       d%    [        U
R                  R!                  SS5      5      U R                  l        OS/nS	nS	=pvUc  S
/nOS
/U-    Vs/ sH  o»PM     nnU R1                  U
=(       d    UXEXvU5        U	b  U	 H  n[3        XU5        M     U R                  (       d  U R5                  5         g g s  snf )Nz	render_%sr   ÚbufferedÚFalseÚcachedú
**pageargsÚrender_bodyr   Fr   )r    Úcompilerr   Úidentifier_stackÚ
isinstancer   ÚDefTagÚBlockTagÚin_defÚfuncnameÚget_argument_expressionsÚlenÚfilter_argsÚargsÚevalÚ
attributesÚgetÚis_blockÚis_anonymousÚwrite_toplevelÚpagetagÚ	body_declÚkwargsr   Úwrite_render_callabler   Úwrite_metadata_struct)r(   r    r9   r   ÚnamerC   Úfilteredr4   r6   ÚdefsrJ   Úas               r!   r)   Ú_GenerateRenderMethod.__init__h   s  € ØŒØ ŒØŒ	Ø!% ˆÔÜ  ¬	×(8Ñ(8¼)×:LÑ:LÐ'MÓNˆŒà�;�;Ø §¡Ñ.ˆDØ×0Ñ0Ó2ˆDÜ˜4×+Ñ+×0Ñ0Ó1°AÑ5ˆHÜ˜DŸO™O×/Ñ/°
¸GÓDÓEˆHÜ˜$Ÿ/™/×-Ñ-¨h¸Ó@ÓAˆFØˆDØˆGØ�}�} T×%6×%6Ø˜˜Ñ&�øà×&Ñ&Ó(ˆDØ—m‘m×+Ñ+ˆGØ ˆDØÑ"Ø×(Ñ(×AÑAÓC�Ø×(Ñ(×/×/Ø˜\˜NÑ*�DÜ˜g×0Ñ0×4Ñ4°X¸wÓGÓH�Ø,0¯M©M×,EÑ,E÷ -ÌØ×&Ñ&×*Ñ*¨=¸'ÓBóJ�—‘Õ)ð %�~�Ø�Ø"'Ð'ˆHØ‰<Ø�;‰Dà )˜{¨TÒ1Ó2Ñ1˜!’AÑ1ˆDÐ2à×"Ñ"Ø�O�t˜T¨¸Vô	
ð ÑÛ�Ü% g¸Ö>ñ ð �{�{Ø×&Ñ&Õ(ð ùò 3s   È
I+c                 óª  • [        U R                  R                  5      U R                  R                  U R                  R                  '   U R                  R
                  U R                  R                  U R                  R                  U R                  R                  S.nU R                  R                  SS[        R                  " U5      S5        g )N)r   r   r   Úline_mapz"""Ú__M_BEGIN_METADATAz__M_END_METADATA
""")Úmaxr    Ú
source_mapÚlinenor9   r   r   r   Ú
writelinesÚjsonÚdumps)r(   Ústructs     r!   rN   Ú+_GenerateRenderMethod.write_metadata_struct™   s˜   € Ü7:Ø�L‰L×#Ñ#ó8
ˆ�‰×Ñ §¡× 3Ñ 3Ñ4ð Ÿ™×.Ñ.Ø—=‘=×$Ñ$Ø#Ÿ}™}×<Ñ<ØŸ™×/Ñ/ñ	
ˆð 	�‰×ÑØØ Ü�JŠJ�vÓØ&õ		
r#   c                 ó    • U R                   S   $ )Néÿÿÿÿ)r:   ©r(   s    r!   ÚidentifiersÚ!_GenerateRenderMethod.identifiersª   s   € à×$Ñ$ RÑ(Ð(r#   c                 ó”
  ^ ^^^• / m0 m/ mST R                   l         " UUUU 4S jS5      nU" 5       nT R                  R                   H  nUR	                  U5        M     TT R                   l        [        5       nT H"  nUR                  UR                  5       5      nM$     [        T R                   5      nXEl
        T R                   R                  (       aM  T R                   R                  (       a2  T R                  R                  ST R                   R                  -  5        T R                   R                  (       aB  T R                  R                  SSR!                  T R                   R                  5      < 35        T R                  R                  S5        T R                  R                  S5        T R                  R                  S	5        T R                  R                  S
5        T R                  R                  S5        T R                  R                  S["        -  5        T R                  R                  S[$        R$                  " 5       -  5        T R                  R                  ST R                   R&                  -  5        T R                  R                  ST R                   R(                  -  5        T R                  R                  ST R                   R*                  -  5        T R                  R                  ST R                   R                  -  5        T R                   R,                  (       aZ  SnT R                   R,                   H%  nXgS-   -  nT R                  R                  U5        M'     [.        R0                  " USSSSS9nOSnUR3                  T R                  5      n	UR4                  n
U
R                  U	R4                  5      Ul        UR                  R7                  [8        5        U(       a%  UR                  R7                  UR                  5        UT R                   l        T R                  R                  SU	R4                  R=                  5        Vs/ sH  o3R>                  PM     sn-  5        T R                  RA                  S5        [C        T5      (       a  T RE                  T5        [C        T5      (       a&  T RG                  T5        T RI                  TS   5        O![C        T5      (       a  T RG                  T5        [K        U	R4                  R=                  5       5      $ s  snf )zhTraverse a template structure for module-level directives and
generate the start of module-level code.

Nc                   óF   >• \ rS rSrU 4S jrU4S jrU4S jrU4S jrSrg)Ú:_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevelé¹   c                 ó(   >• TR                  U5        g r'   )Úappend)Úsr   Úinherits     €r!   ÚvisitInheritTagÚJ_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitInheritTagº   s   ø€ Ø—‘˜tÕ$r#   c                 ó$   >• UTUR                   '   g r'   ©rO   )rj   r   Ú
namespacess     €r!   ÚvisitNamespaceTagÚL_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitNamespaceTag½   s   ø€ Ø(,�
˜4Ÿ9™9Ò%r#   c                 ó(   >• UTR                   l        g r'   )r9   rJ   )rj   r   r(   s     €r!   ÚvisitPageTagÚG_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitPageTagÀ   s   ø€ Ø(,�—‘Õ%r#   c                 óL   >• UR                   (       a  TR                  U5        g g r'   )Úismoduleri   )rj   r   Úmodule_codes     €r!   Ú	visitCodeÚD_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitCodeÃ   s   ø€ Ø—=—=Ø×&Ñ& tÕ,ð !r#   r0   N)	r+   r,   r-   r.   rl   rq   rt   ry   r/   )rk   rx   rp   r(   s   €€€€r!   ÚFindTopLevelrf   ¹   s   ø† õ%õ-õ-÷-ð -r#   r{   z# -*- coding:%s -*-zfrom __future__ import ú, z(from mako import runtime, filters, cachezUNDEFINED = runtime.UNDEFINEDz'STOP_RENDERING = runtime.STOP_RENDERINGz__M_dict_builtin = dictz__M_locals_builtin = localsz_magic_number = %rz_modified_time = %rz_enable_loop = %rz_template_filename = %rz_template_uri = %rz_source_encoding = %rÚ Ú
r   ztemplate defined imports)ÚsourcerY   Úposr   z_exports = %ré   r`   )&r9   rJ   r   ÚnodesÚaccept_visitorrp   ÚsetÚunionÚdeclared_identifiersÚ_IdentifiersÚdeclaredr   r   r    Ú	writeliner   ÚjoinÚMAGIC_NUMBERÚtimer   r   r   r   r   Ú
PythonCodeÚbranchÚtopleveldefsÚupdateÚTOPLEVEL_DECLAREDrb   ÚvaluesrO   Úwrite_blanksrA   Úwrite_module_codeÚwrite_namespacesÚwrite_inheritÚlist)r(   r{   ÚfÚnÚmodule_identÚmodule_identifiersr   ÚimpÚimpcodeÚmain_identifiersÚmitrk   rx   rp   s   `          @@@r!   rI   Ú$_GenerateRenderMethod.write_toplevel®   sø  û€ ð
 ˆØˆ
Øˆà $ˆ�‰Ô÷	-÷ 	-ñ ‹NˆØ—‘—”ˆAØ×Ñ˜QÖñ !ð $.ˆ�‰Ô ä“uˆÛˆAØ'×-Ñ-¨a×.DÑ.DÓ.FÓGŠLñ ô *¨$¯-©-Ó8ÐØ&2Ô#ð �M‰M×0×0Ø—‘×-×-à�L‰L×"Ñ"Ø%¨¯©×(EÑ(EÑEôð �=‰=×'×'Ø�L‰L×"Ò"à—9‘9˜TŸ]™]×9Ñ9Õ:ð=ôð 	�‰×ÑÐIÔJØ�‰×ÑÐ>Ô?Ø�‰×ÑÐHÔIØ�‰×ÑÐ8Ô9Ø�‰×ÑÐ<Ô=Ø�‰×ÑÐ3´lÑBÔCØ�‰×ÑÐ4´t·y²y³{ÑBÔCØ�‰×ÑÐ2°T·]±]×5NÑ5NÑNÔOØ�‰×ÑØ%¨¯©×(>Ñ(>Ñ>ô	
ð 	�‰×ÑÐ3°d·m±m×6GÑ6GÑGÔHØ�‰×ÑØ# d§m¡m×&CÑ&CÑCô	
ð �=‰=× × ØˆCØ—}‘}×,Ô,�Ø˜T‘zÑ!�Ø—‘×&Ñ& sÖ+ñ -ô —n’nØØØØØ3ñ‰Gð ˆGà-×4Ñ4°T·Y±YÓ?ÐØ ×-Ñ-ˆØ*-¯)©)Ø×)Ñ)ó+
ÐÔ'ð 	×#Ñ#×*Ñ*Ô+<Ô=ÞØ×'Ñ'×.Ñ.¨w×/KÑ/KÔLà$6ˆ�‰Ô!Ø�‰×ÑØØ/×<Ñ<×CÑCÔEÓFÑE˜!�vŒvÑEÑFñGô	
ð 	�‰×!Ñ! !Ô$äˆ{×ÑØ×"Ñ" ;Ô/äˆw�<‰<Ø×!Ñ! *Ô-Ø×Ñ˜w r™{Õ+Ü��_‰_Ø×!Ñ! *Ô-äÐ$×1Ñ1×8Ñ8Ó:Ó;Ð;ùò Gs   Ñ2U
c                 óÆ  • U R                   (       a1  UR                  nU(       a  U R                  R                  SU-  5        U R                  R	                  UR
                  5        U R                  R                  SU< SSR                  U5      < S3SS5        U(       d  U(       d  U(       a  U R                  R                  S5        U R                  R                  U R                  R                  R                  U R                  5      5        U R                   (       a  U R                  R                  (       a.  S	U;   a(  U R                  S
   R                  R!                  S5        U R                   (       dž  [#        U R                  R$                  5      S:”  d#  [#        U R                  R                  5      S:”  aX  U R                  R                  SSR                  U R                  R                   Vs/ sH  nU< SU< 3PM     sn5      -  5        U R'                  U R                  SS9  U R                  R(                   H  n	U	R+                  U 5        M     U R-                  U R                  XEU5        U R                  R                  S5        U R                  R/                  S5        U(       a  U R1                  XX4U R                  SS9  ggs  snf )zfwrite a top-level render callable.

this could be the main render() method or that of a top-level def.z@runtime._decorate_toplevel(%s)údef Ú(Ú,ú):ú/__M_caller = context.caller_stack._push_frame()útry:úcontext._push_buffer()r7   r`   Úpageargsr   z!__M_locals = __M_dict_builtin(%s)Ú=T)ÚtoplevelNr�   )r>   Ú	decoratorr    r‰   Ústart_sourcerY   rZ   rŠ   r:   ri   r9   rb   rŽ   r   rG   Úargument_declaredÚaddrA   Úlocally_assignedÚwrite_variable_declaresr‚   rƒ   Úwrite_def_finishr“   Úwrite_cache_decorator)
r(   r   rO   rC   r4   rP   r6   r¬   Úxr™   s
             r!   rM   Ú+_GenerateRenderMethod.write_render_callable  s+  € ð �;�;ØŸ™ˆIÞØ—‘×&Ñ&Ø5¸	ÑAôð 	�‰×!Ñ! $§+¡+Ô.Ø�‰×ÒÛ! 3§8¡8¨D¦>Ð2à=Øô		
ö –x¦6Ø�L‰L×"Ñ"Ð#;Ô<à×Ñ×$Ñ$Ø�M‰M×%Ñ%×,Ñ,¨T¯Y©YÓ7ô	
ð ——˜tŸy™y×1×1°|ÀtÓ7KØ×!Ñ! "Ñ%×7Ñ7×;Ñ;¸JÔGà�{�{Ü�× Ñ ×1Ñ1Ó2°QÓ6Ü�4×#Ñ#×5Ñ5Ó6¸Ó:à�L‰L×"Ñ"Ø3Ø—(‘(ð "&×!1Ñ!1×!CÒ!Cóá!C˜Aó $%¢aÓ(Ù!Cñóñôð 	×$Ñ$ T×%5Ñ%5ÀÐ$ÑEà—‘—”ˆAØ×Ñ˜TÖ"ñ !ð 	×Ñ˜dŸi™i¨¸VÔDØ�‰×Ñ˜tÔ$Ø�‰×!Ñ! !Ô$ÞØ×&Ñ&Ø˜D¨D×,<Ñ,<Àtð 'ò ð ùòs   Ç?Kc                 ór   • U H1  nU R                   R                  UR                  UR                  S9  M3     g)z]write module-level template code, i.e. that which
is enclosed in <%! %> tags in the template.©Ústarting_linenoN)r    Úwrite_indented_blockÚtextrY   )r(   rx   r™   s      r!   r”   Ú'_GenerateRenderMethod.write_module_codeT  s-   € ó ˆAØ�L‰L×-Ñ-¨a¯f©fÀaÇhÁhÐ-ÓOò r#   c                 ó`   • U R                   R                  SSSUR                  S   -  S5        g)z:write the module-level inheritance-determination callable.z%def _mako_inherit(template, context):ú"_mako_generate_namespaces(context)z8return runtime._inherit_from(context, %s, _template_uri)ÚfileN)r    rZ   Úparsed_attributes©r(   r   s     r!   r–   Ú#_GenerateRenderMethod.write_inheritZ  s5   € ð 	�‰×ÑØ3Ø0ØFØ×%Ñ% fÑ-ñ/àõ	
r#   c                 ó¼  ^ ^^• T R                   R                  SSSSSSSS5        T R                   R                  S5        UR                  5        GHÁ  nSUR                  ;   a  S	T R
                  l        T R                   R                  UR                  5        [        UR                  5      (       aÕ  T R                   R                  S
5        / mT R
                  R                  R                  U5      mS	T l         " UUU 4S jS5      nU" 5       nUR                   H  nUR                  U5        M     T R                   R                  SSR                  T5      -  5        T R                   R                  S5        ST l        SnOSnSUR                   ;   aM  T R                   R                  SUR"                  < SUR                   R%                  SS5      < SU< S35        O‹SUR                   ;   aM  T R                   R                  SUR"                  < SU< SUR                   R%                  SS5      < S35        O.T R                   R                  SUR"                  < SU< S35        ['        UR                  R%                  SS5      5      (       a(  T R                   R                  S UR"                  -  5        T R                   R                  S![)        UR"                  5      -  5        T R                   R+                  S"5        GMÄ     [        U5      (       d  T R                   R                  S#5        T R                   R                  S5        g)$z5write the module-level namespace-generating callable.z'def _mako_get_namespace(context, name):r§   z+return context.namespaces[(__name__, name)]úexcept KeyError:r½   Nz'def _mako_generate_namespaces(context):ÚimportTzdef make_namespace():c                   ó2   >• \ rS rSrS rS rU UU4S jrSrg)Ú<_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitori}  c                 ó&   • U R                  U5        g r'   ©ÚvisitDefOrBase©rj   r   s     r!   ÚvisitDefTagÚH_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitor.visitDefTag~  ó   € Ø×(Ñ(¨Õ.r#   c                 ó&   • U R                  U5        g r'   rÈ   rÊ   s     r!   ÚvisitBlockTagÚJ_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitor.visitBlockTag�  rÍ   r#   c                 óÂ   >• UR                   (       a!  [        R                  "  S0 UR                  D6eTR	                  UTSS9  TR                  UR                  5        g )NF©Únested)z.Can't put anonymous blocks inside <%namespace>)rH   r   ÚCompileExceptionÚexception_kwargsÚwrite_inline_defri   r?   )rj   r   Úexportrb   r(   s     €€€r!   rÉ   ÚK_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitor.visitDefOrBase„  s[   ø€ Ø×,×,Ü",×"=Ò"=ð!/ñ#ð #'×"7Ñ"7ñ#ð ð
 ×-Ñ-¨d°KÈÐ-ÑNØŸ™ d§m¡mÕ4r#   r0   N©r+   r,   r-   r.   rË   rÏ   rÉ   r/   )r×   rb   r(   s   €€€r!   ÚNSDefVisitorrÆ   }  s   ø† ò/ò/÷5ò 5r#   rÚ   úreturn [%s]r¤   Fzmake_namespace()ÚNoner¾   zns = runtime.TemplateNamespace(z3, context._clean_inheritance_tokens(), templateuri=z, callables=z,  calling_uri=_template_uri)Úmodulezns = runtime.ModuleNamespace(z1, context._clean_inheritance_tokens(), callables=z$, calling_uri=_template_uri, module=Ú)zns = runtime.Namespace(z, calling_uri=_template_uri)Úinheritabler5   zcontext['self'].%s = nsz'context.namespaces[(__name__, %s)] = nsé   Úpass)r    rZ   r‰   r’   rE   r9   Úhas_ns_importsr­   rY   rA   r‚   rb   rŽ   r>   rƒ   rŠ   r¿   rO   rF   rD   Úreprr“   )	r(   rp   r   rÚ   Úvisr™   Úcallable_namer×   rb   s	   `      @@r!   r•   Ú&_GenerateRenderMethod.write_namespacese  s�  ú€ à�‰×ÑØ5ØØ9ØØ0Ø9ØØô		
ð 	�‰×ÑÐHÔIà×%Ñ%×'ˆDØ˜4Ÿ?™?Ó*Ø/3�—‘Ô,Ø�L‰L×%Ñ% d§k¡kÔ2Ü�4—:‘:�‰Ø—‘×&Ñ&Ð'>Ô?Ø�Ø"Ÿm™m×7Ñ7×>Ñ>¸tÓD�Ø"�”÷5ö 5ñ" #“n�ØŸœ�AØ×$Ñ$ SÖ)ñ $à—‘×&Ñ& }¸¿¹ÀÓ8HÑ'IÔJØ—‘×&Ñ& tÔ,Ø#�”Ø 2‘à &�à˜×/Ñ/Ó/Ø—‘×&Ò&ð Ÿ	œ	Ø×.Ñ.×2Ñ2°6¸6ÖBÛ%ðõ
ð ˜T×3Ñ3Ó3Ø—‘×&Ò&ð Ÿ	œ	Û%Ø×.Ñ.×2Ñ2°8¸VÖDðõ
ð —‘×&Ò&ð —y”y£-ð1ôô �D—O‘O×'Ñ'¨°wÓ?×@Ñ@Ø—‘×&Ñ&Ð'@ÀDÇIÁIÑ'NÔOà�L‰L×"Ñ"Ø9¼DÀÇÁ»OÑKôð �L‰L×%Ñ% a×(ñU (ôV �:�‰Ø�L‰L×"Ñ" 6Ô*Ø�‰×Ñ˜tÕ$r#   Nc                 ó  • UR                    Vs0 sH  oDR                  U_M     nn[        5       nUR                  UR                  5      nUR                  UR
                  R                  5        Vs/ sH  oDR                  PM     sn5      nUR                  UR                  5      nUR                  UR                  5      nU R                  R                  (       a  SU;   nUR                  S5        OSnUb  UR                  U5      nU(       aÍ  [        U R                  SS5      (       a±  U R                  R!                  S5        SU R                  l        U R                  R$                  R'                  5        H]  u  p‰SU	R(                  ;   d  M  U R                  R!                  SU< S	[*        R,                  " S
U	R(                  S   5      < S35        M_     U(       a  U R                  R!                  S5        U GHÓ  nX…;   a…  XX   n
U
R.                  (       a6  U
R0                  (       d  U R3                  X¡5        MB  U R5                  X¡SS9  MT  U
R7                  5       (       a  U R3                  X¡5        M|  U R5                  X¡SS9  MŽ  X€R                  R$                  ;   a%  U R                  R!                  U< SU< S35        MÌ  [        U R                  SS5      (       a€  U R                  R8                  (       a;  U R                  R;                  U< SU< S3SU-  SU< SU< S3SSU-  SS5        GM>  U R                  R!                  U< SU< SU< S35        GMh  U R                  R8                  (       a-  U R                  R;                  SU< SU< S3SSU-  S5        GM°  U R                  R!                  U< SU< S35        GMÖ     U R                  R!                  S5        gs  snf s  snf )a   write variable declarations at the top of a function.

the variable declarations are in the form of callable
definitions for defs and/or name lookup within the
function's context argument. the names declared are based
on the names that are referenced in the function body,
which don't otherwise have any explicit assignment
operation. names that are assigned within the body are
assumed to be locally-scoped variables and are not
separately declared.

for def callable definitions, if the def is a top-level
callable then a 'stub' callable is generated which wraps
the current Context into a closure. if the def is not
top-level, it is fully rendered as a local closure.

r   FNrâ   z_import_ns = {}TrÄ   z_mako_get_namespace(context, z)._populate(_import_ns, z\s*,\s*rÞ   z%loop = __M_loop = runtime.LoopStack()rÒ   z  = _mako_get_namespace(context, z = _import_ns.get(z, UNDEFINED)zif %s is UNDEFINED:r§   z = context[Ú]rÃ   z&raise NameError("'%s' is not defined")z, context.get(z, UNDEFINED))z = context.get(z__M_writer = context.writer())rQ   r?   r„   r…   Ú
undeclaredÚclosuredefsr’   Ú
differencer®   Úlocally_declaredr9   r   ÚdiscardÚintersectionÚgetattrr    r‰   Úhas_importsrp   ÚitemsrE   ÚreÚsplitrG   rH   Úwrite_def_declrÖ   Úis_rootr   rZ   )r(   rb   r«   ÚlimitÚcÚcomp_identsÚto_writeÚhas_loopÚidentÚnsÚcomps              r!   r±   Ú-_GenerateRenderMethod.write_variable_declaresÂ  s3  € ð( /:×.>Ò.>Ó?Ñ.>¨—z‘z 1’}Ñ.>ˆÐ?Ü“5ˆð —>‘> +×"8Ñ"8Ó9ˆð —>‘>Ø!,×!8Ñ!8×!?Ñ!?Ô!AÓBÑ!A˜A�ZŒZÑ!AÑBó
ˆð ×&Ñ& {×'DÑ'DÓEˆð ×&Ñ& {×'CÑ'CÓDˆà�=‰=×$×$Ø Ñ)ˆHØ×Ñ˜VÕ$àˆHð ÑØ×,Ñ,¨UÓ3ˆHæœ §¡Ð/?À×GÑGØ�L‰L×"Ñ"Ð#4Ô5Ø(,ˆD�M‰MÔ%Ø!Ÿ]™]×5Ñ5×;Ñ;Ö=‘	�Ø˜rŸ}™}Õ,Ø—L‘L×*Ò*ó "ÜŸHšH Z°·±¸xÑ1HÖIð	öñ >ö Ø�L‰L×"Ñ"Ð#JÔKäˆEØÓ#Ø"Ñ)�Ø—=—=Ø×,×,Ø×+Ñ+¨DÖ>à×-Ñ-¨dÈÐ-ÓMà—|‘|—~‘~Ø×+Ñ+¨DÖ>à×-Ñ-¨dÈÐ-ÓMàŸ-™-×2Ñ2Ó2Ø—‘×&Ñ&Û?DÃeÐLöô ˜4Ÿ=™=Ð*:¸E×BÑBØ—}‘}×5×5ØŸ™×/Ñ/ã$£eð-à1°EÑ9Ø"Û27»Ð?Ø.ØFÈÑNØ Ø ÷
ð Ÿ™×.Ñ.ó  %£e«Uð4÷ð —}‘}×5×5ØŸ™×/Ñ/Ø"Û27»Ð?Ø.ØFÈÑNØ ÷ð Ÿ™×.Ñ.ÛAFËÐN÷ña ðh 	�‰×ÑÐ>Õ?ùòQ @ùò Cs   �O7Á2O<c                 óT  • UR                   nUR                  5       nUR                  SS9nU R                  (       dY  [        U R                  R
                  5      S:”  d#  [        U R                  R                  5      S:”  a  UR                  SS5        OUR                  SS5        U R                  R                  SU< SSR                  U5      < S	35        U R                  R                  S
U< SSR                  U5      < S35        U R                  R                  S5        g)z>write a locally-available callable referencing a top-level defT©Úas_callr   zcontext._locals(__M_locals)r   r¢   r£   r¤   r¥   zreturn render_rÞ   N)r?   r@   r>   rA   rb   r°   r®   Úinsertr    r‰   rŠ   )r(   r   rb   r?   Ú	namedeclsÚnameargss         r!   rô   Ú$_GenerateRenderMethod.write_def_decl@  sÙ   € à—=‘=ˆØ×1Ñ1Ó3ˆ	Ø×0Ñ0¸Ð0Ð>ˆà�{�{Ü�× Ñ ×1Ñ1Ó2°QÓ6Ü�4×#Ñ#×5Ñ5Ó6¸Ó:à�O‰O˜AÐ<Õ=à�O‰O˜A˜yÔ)Ø�‰×Ò³¸#¿(¹(À9Ö:MÐNÔOØ�‰×ÒÛ&.°·±¸Ö0BÐCô	
ð 	�‰×Ñ˜tÕ$r#   c           
      ó
  • UR                  5       nUR                  nU(       a  U R                  R                  SU-  5        U R                  R                  SUR                  < SSR                  U5      < S35        [        UR                  R                  5      S:„  n[        UR                  R                  SS5      5      n[        UR                  R                  S	S5      5      nU R                  R                  S
S5        U(       d  U(       d  U(       a  U R                  R                  S5        UR                  XS9nU R                  U5        U R                  R!                  U5        UR"                   H  n	U	R%                  U 5        M     U R                  R'                  5         U R)                  XXh5        U R                  R                  S5        U(       a   U R+                  UUR                  USUSSS9  gg)z?write a locally-available def callable inside an enclosing def.z&@runtime._decorate_inline(context, %s)r¢   r£   r¤   r¥   r   r4   r5   r6   r¦   r§   r¨   rÒ   NFT)Úinliner«   )r@   r¬   r    r‰   r?   rŠ   rA   rB   rC   rD   rE   rF   rZ   rŽ   r±   r:   ri   r‚   rƒ   Úpopr²   r³   )
r(   r   rb   rÓ   r  r¬   rP   r4   r6   r™   s
             r!   rÖ   Ú&_GenerateRenderMethod.write_inline_defS  s¡  € ð ×1Ñ1Ó3ˆ	à—N‘Nˆ	ÞØ�L‰L×"Ñ"Ø8¸9ÑDôð 	�‰×ÒØ!Ÿ]œ]¨C¯H©H°YÖ,?Ð@ô	
ô �t×'Ñ'×,Ñ,Ó-°Ñ1ˆÜ˜Ÿ™×+Ñ+¨J¸Ó@ÓAˆÜ�d—o‘o×)Ñ)¨(°GÓ<Ó=ˆØ�‰×Ñà=Øô	
ö
 –x¦6Ø�L‰L×#Ñ#Ð$<Ô=à!×(Ñ(¨Ð(Ð=ˆà×$Ñ$ [Ô1à×Ñ×$Ñ$ [Ô1Ø—”ˆAØ×Ñ˜TÖ"ñ à×Ñ×!Ñ!Ô#à×Ñ˜d¨hÔ?Ø�‰×Ñ˜tÔ$ÞØ×&Ñ&ØØ—‘ØØØØØð 'ò ð r#   c                 óD  • U(       dM  U(       dF  U(       d?  U R                   R                  S5        U(       a  U R                   R                  SSS5        U(       d  U(       d  U(       Ga6  U(       d  U(       a  U R                   R                  SS5        OU R                   R                  SS5        U(       a  U R                   R                  S5        SnU(       a'  U R                  UR                  R
                  US5      nU R                   R                  S5        U(       a.  U(       d'  U R                  U R                  R                  US5      nU(       d  U(       a  U R                   R                  S	U-  5        gU R                   R                  S
U-  S5        gg)a"  write the end section of a rendering function, either outermost or
inline.

this takes into account if the rendering function was filtered,
buffered, etc.  and closes the corresponding try: block if any, and
writes code to retrieve captured content, apply filters, send proper
return value.ú	return ''úfinally:z!context.caller_stack._pop_frame()Nz__M_buf = context._pop_buffer()ú6__M_buf, __M_writer = context._pop_buffer_and_writer()ú__M_buf.getvalue()Fz	return %sú__M_writer(%s))r    r‰   rZ   Úcreate_filter_callablerB   rC   r9   r   )r(   r   r4   rP   r6   Ú	callstackrj   s          r!   r²   Ú&_GenerateRenderMethod.write_def_finish�  s5  € ö ¦®xØ�L‰L×"Ñ" ;Ô/ÞØ—‘×'Ñ'ØÐ CÀTôö –x§6Þž6ð
 —‘×'Ñ'ØÐ Aõð —‘×'Ñ'ØØLôö
 Ø—‘×&Ñ&Ð'JÔKà$ˆAÞØ×/Ñ/Ø×$Ñ$×)Ñ)¨1¨eó�ð �L‰L×"Ñ" 4Ô(Þ¦Ø×/Ñ/Ø—M‘M×0Ñ0°!°Uó�ö ž6Ø—‘×&Ñ& {°Q¡Õ7à—‘×'Ñ'Ð(8¸1Ñ(<¸kÕJð? $*r#   c                 ó>  ^ ^• T R                   R                  SU< SU< 35        TR                  R                  S[	        U5      5      n0 n	T R
                  R                  b9  U	R                  U 4S jT R
                  R                  R                   5       5        U	R                  U4S jTR                   5       5        SU	;   a  [        [        U	S   5      5      U	S'   T R                   R                  SU< S	S
R                  U5      < S35        U V
s/ sH&  n
SU
;   a  SU
R                  S5      S   4S-  -  OU
PM(     nn
T R                  UUTR                  5       S9  U(       a¦  SU< SU< S	S
R                  U5      < SSR                  U	R                  5        VVs/ sH  u  pÍU< SU< S3PM     snn5      < SU< S3nT R                  T R
                  R                   US5      nT R                   R#                  SU-   S5        gT R                   R#                  SU< SU< S	S
R                  U5      < SSR                  U	R                  5        VVs/ sH  u  pÍU< SU< S3PM     snn5      < SU< S3SS5        gs  sn
f s  snnf s  snnf )z`write a post-function decorator to replace a rendering
callable with a cached version of itself.Ú__M_z = Ú	cache_keyNc              3   ó²   >#   • U HM  nUR                  S 5      (       d  M  US:w  d  M#  USS TR                  R                  R                  U   4v •  MO     g7f©Úcache_r  é   N)Ú
startswithr9   rJ   r¿   )Ú.0Úpar(   s     €r!   Ú	<genexpr>Ú>_GenerateRenderMethod.write_cache_decorator.<locals>.<genexpr>È  sU   øé € ð áA�BØ—=‘= ×*ó Fà/1°[Ñ/@ó F��A�B�˜Ÿ™×.Ñ.×@Ñ@ÀÑDÕEÚAùs   ƒA A¨/Ac              3   óŠ   >#   • U H9  nUR                  S 5      (       d  M  US:w  d  M#  USS TR                  U   4v •  M;     g7fr  )r  r¿   )r  r  Únode_or_pagetags     €r!   r  r  Í  sI   øé € ð 
á7�Ø�}‰}˜X×&ó <à+-°Ñ+<ó <ˆR��ˆV�_×6Ñ6°rÑ:Õ;Ú7ùs   ƒA A¨AÚtimeoutr¢   r£   r¤   r¥   rª   z%s=%sr   r�   )r«   rö   z.context.get('local').cache._ctx_get_or_create(z, lambda:__M_z),  context, r}   r|   z__M_defname=rÞ   Fzreturn z9__M_writer(context.get('local').cache._ctx_get_or_create(z), context, z))r  )r    r‰   r¿   rF   rã   r9   rJ   r�   ÚintrD   rŠ   ró   r±   Úundeclared_identifiersrñ   r  r   rZ   )r(   r   rO   rC   r4   rb   r  r«   ÚcachekeyÚ
cache_argsrR   Ú	pass_argsÚkÚvrj   s   ``             r!   r³   Ú+_GenerateRenderMethod.write_cache_decorator´  s[  ù€ ð 	�‰×Ò³²dÐ;Ô<Ø"×4Ñ4×8Ñ8Øœ˜d›ó
ˆð ˆ
Ø�=‰=× Ñ Ñ,Ø×Ñô àŸ-™-×/Ñ/×AÒAóô ð
 	×Ñô 
à%×7Ò7ó
ô 	
ð
 ˜
Ó"Ü$'¬¨Z¸	Ñ-BÓ(CÓ$DˆJ�yÑ!à�‰×Ò³°c·h±h¸t¶nÐEÔFñ LPó
ÙKOÀa°#¸³(ˆG˜Ÿ™ › Q™Ð)¨AÑ-Ò.ÀÒAÉ4ð 	ð 
ð 	×$Ñ$ØØØ!×8Ñ8Ó:ð 	%ñ 	
÷
 ó ÛØ—H‘H˜YÖ'Ø—G‘GØ8B×8HÑ8HÔ8JÔKÑ8J±°£a«Ó+Ñ8JÒKöó ðð ð ×+Ñ+Ø—‘×,Ñ,¨a°óˆAð �L‰L×#Ñ# I°¡M°4Õ8à�L‰L×#Ò#ó
 ÛØ—H‘H˜YÖ'Ø—G‘GØ8B×8HÑ8HÔ8JÔKÑ8J±°£a«Ó+Ñ8JÒKöó ðð Øõùò=
ùó& Lùó( Ls   Ä,JÆ'JÉ"Jc                 óø  • S nSU;  a‰  U(       a‚  U R                   R                  (       a-  U R                   R                  R                  R                  U-   nU R                   R                  (       a  SU;  a  U R                   R                  U-   nU Ha  nUS:X  a  M  [
        R                  " SU5      nU(       a!  UR                  SS5      u  pxU" U5      n	X˜-   nOU" U5      nUc   eU< SU< S3nMc     U$ )z—write a filter-applying expression based on the filters
present in the given filter names, adjusting for the global
'default' filter aliases as needed.c                 ó‚   • [         R                  " SU 5      (       a  SU -   $ [        R                  R	                  X 5      $ )Nz
decode\..+zfilters.)rò   Úmatchr   ÚDEFAULT_ESCAPESrF   ro   s    r!   Úlocate_encodeÚC_GenerateRenderMethod.create_filter_callable.<locals>.locate_encode  s5   € Ü�xŠx˜ t×,Ñ,Ø! DÑ(Ð(ä×.Ñ.×2Ñ2°4Ó>Ð>r#   r™   z(.+?)(\(.*\))rà   r�   r£   rÞ   )r9   rJ   rB   rC   r   rò   r,  Úgroup)
r(   rC   ÚtargetÚis_expressionr.  ÚeÚmrû   Úfargsr˜   s
             r!   r  Ú,_GenerateRenderMethod.create_filter_callable  sÖ   € ò
	?ð �d‹?ÞØ—=‘=×(×(ØŸ=™=×0Ñ0×<Ñ<×AÑAÀDÑH�DØ—=‘=×0×0°SÀ³_ØŸ=™=×8Ñ8¸4Ñ?�DÛˆAà�C‹xÙÜ—’Ð)¨1Ó-ˆAÞØ Ÿw™w q¨!›}‘�Ù! %Ó(�Ø‘I‘á! !Ó$�Ø‘}Ð$�}Û!"£FÐ+ŠFñ ð ˆr#   c                 ó^  • U R                   R                  UR                  5        [        UR                  5      (       ds  U R
                  R                  b8  [        U R
                  R                  R                  R                  5      (       d$  [        U R
                  R                  5      (       aS  U R                  UR                  R                  SUR                  -  S5      nU R                   R                  SU-  5        g U R                   R                  SUR                  -  5        g )Nz%sTr  )r    r­   rY   rA   Úescapesr9   rJ   rB   rC   r   r  Úescapes_coderº   r‰   )r(   r   rj   s      r!   ÚvisitExpressionÚ%_GenerateRenderMethod.visitExpression'  sÏ   € Ø�‰×!Ñ! $§+¡+Ô.ä�—‘×Ñà—‘×%Ñ%Ñ1Ü˜Ÿ™×-Ñ-×9Ñ9×>Ñ>×?Ñ?ä�4—=‘=×0Ñ0×1Ñ1à×+Ñ+Ø×!Ñ!×&Ñ&¨¨t¯y©yÑ(8¸$óˆAð �L‰L×"Ñ"Ð#3°aÑ#7Õ8à�L‰L×"Ñ"Ð#3°d·i±iÑ#?Õ@r#   c                 ó0  ^^• TR                   (       a  U R                  R                  S 5        TR                  (       aR  U R                  R                  S5        U R                  R                  S5        U R                  R                  S 5        g g U R                  R	                  TR
                  5        U R                  R                  (       a'  TR                  S:X  a  [        TU R                  5      nOTR                  nU R                  R                  U5        TR                  5       mU4S jnT(       a=  [        S T 5       5      (       a  [        U4S jT 5       5      (       d  U" 5       (       a  U R                  R                  S5        g g )Nr  zloop = __M_loop._exit()Úforc                  óœ   >• T HE  n [        U [        R                  5      (       a  M$  [        U [        R                  5      (       a    g  g   g )NTF©r;   r   ÚCommentÚControlLine)r÷   Úchildrens    €r!   Ú_search_for_control_lineÚH_GenerateRenderMethod.visitControlLine.<locals>._search_for_control_lineN  s<   ø€ Û!�AÜ! !¤Y×%6Ñ%6×7Ñ7Ù Ü# A¤y×'<Ñ'<×=Ñ=Ù#Ù ò "r#   c              3   ót   #   • U H/  n[        U[        R                  [        R                  45      v •  M1     g 7fr'   r?  )r  r÷   s     r!   r  Ú9_GenerateRenderMethod.visitControlLine.<locals>.<genexpr>X  s2   é € ð á%˜ô ˜q¤9×#4Ñ#4´i×6KÑ6KÐ"L×MÐMÚ%ùs   ‚68c              3   óÀ   >#   • U HT  n[        U[        R                  5      (       d  M$  TR                  UR                  5      =(       d    UR
                  v •  MV     g 7fr'   )r;   r   rA  Ú
is_ternaryÚkeywordÚisend)r  r÷   r   s     €r!   r  rF  \  sC   øé € ð á%˜Ü! !¤Y×%:Ñ%:×;ó ;�T—_‘_ Q§Y¡YÓ/×:°1·7±7Ô:Ú%ùs
   ƒ"A©5Ará   )rJ  r    r‰   Úhas_loop_contextr­   rY   r9   r   rI  Úmangle_mako_looprº   Úget_childrenÚall)r(   r   rº   rC  rB  s    `  @r!   ÚvisitControlLineÚ&_GenerateRenderMethod.visitControlLine8  s,  ù€ Ø�:�:Ø�L‰L×"Ñ" 4Ô(Ø×$×$Ø—‘×&Ñ& zÔ2Ø—‘×&Ñ&Ð'@ÔAØ—‘×&Ñ& tÕ,ð %ð
 �L‰L×%Ñ% d§k¡kÔ2Ø�}‰}×(×(¨T¯\©\¸UÓ-BÜ'¨¨d¯l©lÓ;‘à—y‘y�Ø�L‰L×"Ñ" 4Ô(Ø×(Ñ(Ó*ˆHõ!ö Üñ á%ó÷ ñ ô ô á%ó÷ ñ ñ
 ,×-Ñ-à—‘×&Ñ& vÕ.ð .r#   c                 ó°   • U R                   R                  UR                  5        U R                   R                  S[	        UR
                  5      -  5        g )Nr  )r    r­   rY   r‰   rã   ÚcontentrÀ   s     r!   Ú	visitTextÚ_GenerateRenderMethod.visitTexte  s9   € Ø�‰×!Ñ! $§+¡+Ô.Ø�‰×ÑÐ/´$°t·|±|Ó2DÑDÕEr#   c           
      ór  • [        UR                  R                  5      S:„  nU(       a  U R                  R	                  SS5        UR
                   H  nUR                  U 5        M     U(       aG  U R                  R	                  SSSU R                  UR                  R                  SS5      -  S 5        g g )	Nr   z#__M_writer = context._push_writer()r§   r  r  r  r  F)rA   rB   rC   r    rZ   r‚   rƒ   r  )r(   r   rP   r™   s       r!   ÚvisitTextTagÚ"_GenerateRenderMethod.visitTextTagi  s¤   € Ü�t×'Ñ'×,Ñ,Ó-°Ñ1ˆÞØ�L‰L×#Ñ#Ø5°vôð —”ˆAØ×Ñ˜TÖ"ñ æØ�L‰L×#Ñ#ØØHØ Ø×-Ñ-Ø×$Ñ$×)Ñ)Ð+?Àóñð õð r#   c                 óØ  • UR                   (       dÔ  U R                  R                  UR                  UR                  S9  U R
                  (       d”  [        U R                  R                  5      S:”  ap  U R                  R                  S5        U R                  R                  SSR                  UR                  5        Vs/ sH  n[        U5      PM     sn5      -  5        g g g g s  snf )Nr·   r   z0__M_locals_builtin_stored = __M_locals_builtin()z�__M_locals.update(__M_dict_builtin([(__M_key, __M_locals_builtin_stored[__M_key]) for __M_key in [%s] if __M_key in __M_locals_builtin_stored]))r¤   )rw   r    r¹   rº   rY   r>   rA   rb   r°   r‰   rŠ   r†   rã   )r(   r   r´   s      r!   ry   Ú_GenerateRenderMethod.visitCode|  sÄ   € Ø�}�}Ø�L‰L×-Ñ-Ø—	‘	¨4¯;©;ð .ñ ð —;—;¤3 t×'7Ñ'7×'HÑ'HÓ#IÈAÓ#Mð
 —‘×&Ñ&ØFôð —‘×&Ñ&ðGð —h‘h°×1JÑ1JÔ1LÓMÑ1L¨A¤ Q¦Ñ1LÑMÓNñOõð $N�;ð ùò"  Ns   ÃC'c                 óL  • U R                   R                  UR                  5        UR                  R	                  S5      nU(       a2  U R                   R                  SUR                  S   < SU< S35        g U R                   R                  SUR                  S   -  5        g )NrC   zruntime._include_file(context, r¾   z, _template_uri, rÞ   z1runtime._include_file(context, %s, _template_uri))r    r­   rY   rE   rF   r‰   r¿   )r(   r   rC   s      r!   ÚvisitIncludeTagÚ%_GenerateRenderMethod.visitIncludeTag‘  s€   € Ø�‰×!Ñ! $§+¡+Ô.Ø�‰×"Ñ" 6Ó*ˆÞØ�L‰L×"Ò"à×)Ñ)¨&Ô1³4ð9õð
 �L‰L×"Ñ"ØCØ×)Ñ)¨&Ñ1ñ3õr#   c                 ó   • g r'   r0   rÀ   s     r!   rq   Ú'_GenerateRenderMethod.visitNamespaceTagŸ  ó   € Ør#   c                 ó   • g r'   r0   rÀ   s     r!   rË   Ú!_GenerateRenderMethod.visitDefTag¢  r_  r#   c                 ó¢  • UR                   (       a)  U R                  R                  SUR                  -  5        g UR	                  SS9nUS/-  nU R                  R                  SUR                  -  5        U R                  R                  SUR                  < SSR                  U5      < S	35        U R                  R                  S
5        g )Nz%s()Tr   r7   zOif 'parent' not in context._data or not hasattr(context._data['parent'], '%s'):zcontext['self'].r£   r¤   rÞ   r~   )rH   r    r‰   r?   r@   rŠ   )r(   r   r  s      r!   rÏ   Ú#_GenerateRenderMethod.visitBlockTag¥  s¦   € Ø××Ø�L‰L×"Ñ" 6¨D¯M©MÑ#9Õ:à×4Ñ4¸TÐ4ÐBˆHØ˜˜Ñ&ˆHØ�L‰L×"Ñ"ð>Ø@DÇÁñNôð �L‰L×"Ò"Ø,0¯M¬M¸3¿8¹8ÀHÖ;MÐNôð �L‰L×"Ñ" 4Õ(r#   c                 ó&   • U R                  U5        g r'   ©ÚvisitCallTagrÀ   s     r!   ÚvisitCallNamespaceTagÚ+_GenerateRenderMethod.visitCallNamespaceTag´  s   € ð 	×Ñ˜$Õr#   c                 óÆ  ^ ^^^	• T R                   R                  S5        S/m	T R                  R                  USS9mTR                  USS9mTR	                  S5        T R
                  R                  T5         " UUU	U 4S jS5      nU" 5       nUR                   H  nUR                  U5        M     T R
                  R                  5         UR                  R                  5       nT R                   R                  S	S
R                  U5      -  5        SnU(       a  T R                   R                  SS5        T R                  T5        T R
                  R                  T5        UR                   H  nUR                  T 5        M     T R
                  R                  5         T R                  XSSSS9  T R                   R                  S SS
R                  T	5      -  S 5        T R                   R                  SS5        T R                   R!                  UR"                  5        T R                   R                  ST R%                  / UR&                  S5      -  SSS 5        g )Nzdef ccall(caller):ÚbodyTrÒ   FÚcallerc                   ó4   >• \ rS rSrS rS rU UUU4S jrSrg)Ú6_GenerateRenderMethod.visitCallTag.<locals>.DefVisitoriÇ  c                 ó&   • U R                  U5        g r'   rÈ   rÊ   s     r!   rË   ÚB_GenerateRenderMethod.visitCallTag.<locals>.DefVisitor.visitDefTagÈ  ó   € Ø× Ñ  Õ&r#   c                 ó&   • U R                  U5        g r'   rÈ   rÊ   s     r!   rÏ   ÚD_GenerateRenderMethod.visitCallTag.<locals>.DefVisitor.visitBlockTagË  rp  r#   c                 óä   >• TR                  UTSS9  UR                  (       d  TR                  UR                  5        UR                  TR                  ;   a  TR                  UR                  	 g g )NFrÒ   )rÖ   rH   ri   r?   rê   )rj   r   Úbody_identifiersÚcallable_identifiersr×   r(   s     €€€€r!   rÉ   ÚE_GenerateRenderMethod.visitCallTag.<locals>.DefVisitor.visitDefOrBaseÎ  s_   ø€ Ø×%Ñ% dÐ,@ÈÐ%ÑOØ×(×(Ø—M‘M $§-¡-Ô0ð —=‘=Ð$4×$@Ñ$@Ó@Ø(×4Ñ4°T·]±]ÑCð Ar#   r0   NrÙ   )rt  ru  r×   r(   s   €€€€r!   Ú
DefVisitorrm  Ç  s   ø† ò'ò'÷Dó Dr#   rw  zdef body(%s):r¤   r¨   r§   )r  rÛ   zccontext.caller_stack.nextcaller = runtime.Namespace('caller', context, callables=ccall(__M_caller))r  r  z&context.caller_stack.nextcaller = None)r    r‰   rb   rŽ   Úadd_declaredr:   ri   r‚   rƒ   r  rK   r@   rŠ   rZ   r±   r²   r­   rY   r  Ú
expression)
r(   r   rw  rä   r™   Úbodyargsr4   rt  ru  r×   s
   `      @@@r!   rf  Ú"_GenerateRenderMethod.visitCallTagº  s  û€ Ø�‰×ÑÐ3Ô4Ø�ˆØ#×/Ñ/×6Ñ6°tÀDÐ6ÐIÐØ/×6Ñ6°tÀEÐ6ÐJÐð
 	×%Ñ% hÔ/à×Ñ×$Ñ$Ð%5Ô6÷	D÷ 	Dñ  ‹lˆØ—”ˆAØ×Ñ˜SÖ!ñ à×Ñ×!Ñ!Ô#à—>‘>×:Ñ:Ó<ˆØ�‰×Ñ˜°·±¸(Ó1CÑCÔDð ˆÞØ�L‰L×#Ñ#Ð$<¸fÔEØ×$Ñ$Ð%5Ô6Ø×Ñ×$Ñ$Ð%5Ô6à—”ˆAØ×Ñ˜TÖ"ñ à×Ñ×!Ñ!Ô#à×Ñ˜d¨e°UÀeÐÑLØ�‰×Ñ  m°s·x±xÀÓ7GÑ&HÈ$ÔOà�‰×Ñð+ð ô	
ð 	�‰×!Ñ! $§+¡+Ô.Ø�‰×ÑØØ×)Ñ)¨"¨d¯o©o¸tÓDñEàØ4Øõ	
r#   )r9   r:   r>   r   r    )FN)T)FF) r+   r,   r-   r.   Ú__doc__r)   rN   Úpropertyrb   rI   rM   r”   r–   r•   r±   rô   rÖ   r²   r³   r  r:  rO  rS  rV  ry   r[  rq   rË   rÏ   rg  rf  r/   r0   r#   r!   r   r   b   s´   † ñò
/)òb
ð" ñ)ó ð)òk<òZ7òrPò	
ò[%ôz|@ò|%ò&,ð^ ;?ô1Kðt ØôQòfò@Aò"+/òZFòò&ò*òòò)ò õB
r#   r   c                   ó’   • \ rS rSrSrSS jrS r\S 5       rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)r‡   iÿ  zCtracks the status of identifier names as template code is rendered.Nc                 ój  • UGb-  [        U[        R                  5      (       a+  [        5       U l        [
        R                  " 5       U l        GO[        UR                  5      R                  UR                  R                  5        Vs/ sH  oUR                  PM     sn5      R                  UR                  5      R                  UR                  5      U l        U(       a*  U R                  R                  UR                  5      U l        [
        R                  " S0 UR                  D6U l        O)[        5       U l        [
        R                  " 5       U l        Xl        [        5       U l        [        5       U l        [        5       U l        [        5       U l        [
        R                  " 5       U l	        X l        Ub  UR%                  U 5        U R                  R&                  R)                  U R                  5      nU(       a(  [*        R,                  " SSR/                  U5      -  5      eg s  snf )Nz'Reserved words declared in template: %sr|   r0   )r;   r   ÚNamespaceTagr„   rˆ   r   ÚSetLikeDictr�   r…   rê   r’   rO   rì   r®   ré   r9   r°   r   rƒ   r   rî   r   ÚNameConflictErrorrŠ   )r(   r9   r   ÚparentrÓ   r÷   Úillegal_namess          r!   r)   Ú_Identifiers.__init__  s¬  € ØÒô ˜$¤	× 6Ñ 6×7Ñ7Ü #£�”Ü$(×$4Ò$4Ó$6�Ö!ô
 ˜Ÿ™Ó(ß‘U¨F×,>Ñ,>×,EÑ,EÔ,GÓHÑ,G qŸFœFÑ,GÑHÓIß‘U˜6×2Ñ2Ó3ß‘U˜6×3Ñ3Ó4ð	 ”ö Ø$(§M¡M×$7Ñ$7¸×8IÑ8IÓ$J�D”Mô %)×$4Ò$4Ñ$K°v×7JÑ7JÑ$K�Õ!ä›EˆDŒMÜ $× 0Ò 0Ó 2ˆDÔà Œô ›%ˆŒô
 !$£ˆÔô
 !$£ˆÔô "%£ˆÔô  ×+Ò+Ó-ˆÔàŒ	àÑØ×Ñ Ô%àŸ™×4Ñ4×AÑAØ×!Ñ!ó
ˆö Ü×.Ò.Ø9Ø—)‘)˜MÓ*ñ+óð ð ùòc Is   Â	H0c                 ó0   • [        U R                  X40 UD6$ )zMcreate a new Identifiers for a new Node, with
this Identifiers as the parent.)r‡   r9   )r(   r   rL   s      r!   rŽ   Ú_Identifiers.branchE  s   € ô ˜DŸM™M¨4Ñ@¸Ñ@Ð@r#   c                 óz   • [        U R                  R                  U R                  5      R	                  5       5      $ r'   )r„   r�   r…   rê   r’   ra   s    r!   rQ   Ú_Identifiers.defsK  s-   € ä�4×$Ñ$×*Ñ*¨4×+;Ñ+;Ó<×CÑCÓEÓFÐFr#   c                 ó–  • S[        U R                  5      < S[        U R                  5      < S[        U R                  5      < SU R                  R                  5        Vs/ sH  oR                  PM     sn< SU R                  R                  5        Vs/ sH  oR                  PM     sn< SU R                  < S3$ s  snf s  snf )NzIdentifiers(declared=z, locally_declared=z, undeclared=z, topleveldefs=z, closuredefs=z, argumentdeclared=rÞ   )	r—   rˆ   rì   ré   r�   r’   rO   rê   r®   )r(   r÷   s     r!   Ú__repr__Ú_Identifiers.__repr__O  s�   � ô �T—]‘]Ö#Ü�T×*Ñ*Ö+Ü�T—_‘_Ö%Ø!%×!2Ñ!2×!9Ñ!9Ô!;Ó<Ñ!;˜A—”Ñ!;Ô<Ø!%×!1Ñ!1×!8Ñ!8Ô!:Ó;Ñ!:˜A—”Ñ!:Ô;Ø×&Ô&ð
ð	
ùò =ùÚ;s   Á#CÂCc                 ó0  • UR                  5        HP  nUS:w  d  M  X R                  R                  U R                  5      ;  d  M5  U R                  R                  U5        MR     UR                  5        H  nU R                  R                  U5        M      g)zdupdate the state of this Identifiers with the undeclared
and declared identifiers of the given node.r   N)r#  rˆ   r…   rì   ré   r¯   r†   ©r(   r   rû   s      r!   Úcheck_declaredÚ_Identifiers.check_declared^  s{   € ð ×0Ñ0Ö2ˆEØ˜	Õ! e·=±=×3FÑ3FØ×%Ñ%ó4õ 'ð —‘×#Ñ# EÖ*ñ	 3ð
 ×.Ñ.Ö0ˆEØ×!Ñ!×%Ñ% eÖ,ò 1r#   c                 ó�   • U R                   R                  U5        XR                  ;   a  U R                  R                  U5        g g r'   )rˆ   r¯   ré   Úremove)r(   rû   s     r!   rx  Ú_Identifiers.add_declaredj  s5   € Ø�‰×Ñ˜%Ô Ø—O‘OÓ#Ø�O‰O×"Ñ" 5Õ)ð $r#   c                 ó&   • U R                  U5        g r'   ©r�  rÀ   s     r!   r:  Ú_Identifiers.visitExpressiono  ó   € Ø×Ñ˜DÕ!r#   c                 ó&   • U R                  U5        g r'   r•  rÀ   s     r!   rO  Ú_Identifiers.visitControlLiner  r—  r#   c                 ó¦   • UR                   (       d@  U R                  U5        U R                  R                  UR	                  5       5      U l        g g r'   )rw   r�  r°   r…   r†   rÀ   s     r!   ry   Ú_Identifiers.visitCodeu  sA   € Ø�}�}Ø×Ñ Ô%Ø$(×$9Ñ$9×$?Ñ$?Ø×)Ñ)Ó+ó%ˆDÕ!ð r#   c                 ól   • U R                   UL a%  UR                   H  nUR                  U 5        M     g g r'   )r   r‚   rƒ   ©r(   r   r™   s      r!   rq   Ú_Identifiers.visitNamespaceTag|  s1   € ð �9‰9˜ÒØ—Z”Z�Ø× Ñ  Ö&ò  ð r#   c                 ó  • UR                  UR                  5      nX!UR                  '   UbV  X2LaQ  UR                  (       d  UR                  (       a.  [        R                  " SUR                  -  40 UR
                  D6eg g g )Nz<%%def or %%block named '%s' already exists in this template.)rF   r?   rG   r   rÔ   rÕ   )r(   Ú
collectionr   Úexistings       r!   Ú_check_name_existsÚ_Identifiers._check_name_exists„  s~   € Ø—>‘> $§-¡-Ó0ˆØ$(�4—=‘=Ñ!àÑ ØÒ$Ø—— (×"3×"3ä×-Ò-ð+Ø-1¯]©]ñ;ñð ×'Ñ'ñð ð #4ð %ð !r#   c                 óp  • UR                  5       (       a.  UR                  (       d  U R                  U R                  U5        O*XR                  La  U R                  U R
                  U5        UR                  5        HP  nUS:w  d  M  X R                  R                  U R                  5      ;  d  M5  U R                  R                  U5        MR     XR                  L aW  UR                  5        H  nU R                  R                  U5        M      UR                   H  nUR                  U 5        M     g g ©Nr   )rõ   rH   r¢  r�   r   rê   r#  rˆ   r…   rì   ré   r¯   r†   r®   r‚   rƒ   ©r(   r   rû   r™   s       r!   rË   Ú_Identifiers.visitDefTag’  sï   € Ø�<‰<�>‰> $×"3×"3Ø×#Ñ# D×$5Ñ$5°tÕ<ØŸ™Ò"Ø×#Ñ# D×$4Ñ$4°dÔ;à×0Ñ0Ö2ˆEØ˜	Õ! e·=±=×3FÑ3FØ×%Ñ%ó4õ 'ð —‘×#Ñ# EÖ*ñ	 3ð —9‘9ÒØ×2Ñ2Ö4�Ø×&Ñ&×*Ñ*¨5Ö1ñ 5ð —Z”Z�Ø× Ñ  Ö&ò  ð	 r#   c                 ód  • XR                   Laë  UR                  (       dÚ  [        U R                   [        R                  5      (       aH  [
        R                  " SUR                  < SU R                   R                  < S340 UR                  D6e[        U R                   [        R                  [        R                  45      (       a0  [
        R                  " SUR                  < S340 UR                  D6eUR                  5        HP  nUS:w  d  M  X R                  R                  U R                  5      ;  d  M5  U R                  R!                  U5        MR     UR                  (       dB  U R#                  U R$                  U5        U R                  R!                  UR&                  5        O*XR                   La  U R#                  U R(                  U5        UR+                  5        H  nU R,                  R!                  U5        M      UR.                   H  nUR1                  U 5        M     g )NzNamed block 'z' not allowed inside of def 'Ú'z#' not allowed inside of <%call> tagr   )r   rH   r;   r   r<   r   rÔ   rO   rÕ   ÚCallTagÚCallNamespaceTagr#  rˆ   r…   rì   ré   r¯   r¢  r�   r?   rê   r†   r®   r‚   rƒ   r¦  s       r!   rÏ   Ú_Identifiers.visitBlockTag¦  s¨  € Ø—y‘yÒ ¨×):×):Ü˜$Ÿ)™)¤Y×%5Ñ%5×6Ñ6Ü ×1Ó1à—y”y $§)¡)§.¤.ð2ñð ×+Ñ+ñð ô
 Ø—	‘	œI×-Ñ-¬y×/IÑ/IÐJ÷ñ ô !×1Ó1à—y”yð#ñð ×+Ñ+ñð ð ×0Ñ0Ö2ˆEØ˜	Õ! e·=±=×3FÑ3FØ×%Ñ%ó4õ 'ð —‘×#Ñ# EÖ*ñ	 3ð × × Ø×#Ñ# D×$5Ñ$5°tÔ<Ø�O‰O×Ñ §¡Õ.ØŸ™Ò"Ø×#Ñ# D×$4Ñ$4°dÔ;Ø×.Ñ.Ö0ˆEØ×"Ñ"×&Ñ& uÖ-ñ 1à—”ˆAØ×Ñ˜TÖ"ò r#   c                 óÌ   • UR                  5        HP  nUS:w  d  M  X R                  R                  U R                  5      ;  d  M5  U R                  R                  U5        MR     g r¥  )r#  rˆ   r…   rì   ré   r¯   rŽ  s      r!   rV  Ú_Identifiers.visitTextTagÇ  sP   € Ø×0Ñ0Ö2ˆEØ˜	Õ! e·=±=×3FÑ3FØ×%Ñ%ó4õ 'ð —‘×#Ñ# EÖ*ò	 3r#   c                 ó&   • U R                  U5        g r'   r•  rÀ   s     r!   r[  Ú_Identifiers.visitIncludeTagÎ  r—  r#   c                 óŠ   • UR                  5        H  nU R                  R                  U5        M      U R                  U5        g r'   )r†   r®   r¯   r�  rŽ  s      r!   rt   Ú_Identifiers.visitPageTagÑ  s7   € Ø×.Ñ.Ö0ˆEØ×"Ñ"×&Ñ& uÖ-ñ 1à×Ñ˜DÕ!r#   c                 ó&   • U R                  U5        g r'   re  rÀ   s     r!   rg  Ú"_Identifiers.visitCallNamespaceTagÖ  s   € Ø×Ñ˜$Õr#   c                 ó^  • XR                   L a»  UR                  5        HP  nUS:w  d  M  X R                  R                  U R                  5      ;  d  M5  U R
                  R                  U5        MR     UR                  5        H  nU R                  R                  U5        M      UR                   H  nUR                  U 5        M     g UR                  5        HP  nUS:w  d  M  X R                  R                  U R                  5      ;  d  M5  U R
                  R                  U5        MR     g r¥  )r   r#  rˆ   r…   rì   ré   r¯   r†   r®   r‚   rƒ   r¦  s       r!   rf  Ú_Identifiers.visitCallTagÙ  sï   € Ø—9‘9ÒØ×4Ñ4Ö6�Ø˜IÕ%¨%·}±}×7JÑ7JØ×)Ñ)ó8õ +ð —O‘O×'Ñ'¨Ö.ñ	 7ð
 ×2Ñ2Ö4�Ø×&Ñ&×*Ñ*¨5Ö1ñ 5à—Z”Z�Ø× Ñ  Ö&ò  ð ×4Ñ4Ö6�Ø˜IÕ%¨%·}±}×7JÑ7JØ×)Ñ)ó8õ +ð —O‘O×'Ñ'¨Ö.ò	 7r#   )	r®   rê   r9   rˆ   r°   rì   r   r�   ré   )NNF)r+   r,   r-   r.   r|  r)   rŽ   r}  rQ   r‹  r�  rx  r:  rO  ry   rq   r¢  rË   rÏ   rV  r[  rt   rg  rf  r/   r0   r#   r!   r‡   r‡   ÿ  st   † ÙMôAòFAð ñGó ðGò
ò
-ò*ò
"ò"òò'òò'ò(#òB+ò"ò"ò
 õ/r#   r‡   zã^for\s+((?:\(?)\s*(?:\(?)\s*[A-Za-z_][A-Za-z_0-9]*(?:\s*,\s*(?:[A-Za-z_][A-Za-z_0-9]*),??)*\s*(?:\)?)(?:\s*,\s*(?:(?:\(?)\s*[A-Za-z_][A-Za-z_0-9]*(?:\s*,\s*(?:[A-Za-z_][A-Za-z_0-9]*),??)*\s*(?:\)?)),??)*\s*(?:\)?))\s+in\s+(.*):c                 óŽ  • [        5       nU R                  U5        UR                  (       aŒ  SU R                  S   l        [
        R                  U R                  5      nU(       a:  UR                  SUR                  S5      -  S5        SUR                  S5      -  nU$ [        SU R                  -  5      eU R                  nU$ )	z�converts a for loop into a context manager wrapped around a for loop
when access to the `loop` variable has been detected in the for loop body
Tr`   zloop = __M_loop._enter(%s)r�   r§   zfor %s in loop:rà   zCouldn't apply loop context: %s)ÚLoopVariablerƒ   Údetectedr‚   rK  Ú	_FOR_LOOPr,  rº   rZ   r0  ÚSyntaxError)r   r    Úloop_variabler,  rº   s        r!   rL  rL  ÷  s¨   € ô !“N€MØ×Ñ˜Ô&Ø××Ø*.ˆ�
‰
�2‰Ô'Ü—‘ §	¡	Ó*ˆÞØ×ÑØ,¨u¯{©{¸1«~Ñ=Øôð
 % u§{¡{°1£~Ñ5ˆDð
 €Kô Ð?À$Ç)Á)ÑKÓLÐLà�y‰yˆØ€Kr#   c                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
r¸  i  zMA node visitor which looks for the name 'loop' within undeclared
identifiers.c                 ó   • SU l         g )NF©r¹  ra   s    r!   r)   ÚLoopVariable.__init__  s	   € Øˆ�r#   c                 óŒ   • SUR                  5       ;   a  SU l        g UR                  5        H  nUR                  U 5        M     g )Nr   T)r#  r¹  rM  rƒ   r�  s      r!   Ú_loop_reference_detectedÚ%LoopVariable._loop_reference_detected  s;   € Ø�T×0Ñ0Ó2Ó2Ø ˆD�Mà×&Ñ&Ö(�Ø× Ñ  Ö&ò )r#   c                 ó&   • U R                  U5        g r'   ©rÂ  rÀ   s     r!   rO  ÚLoopVariable.visitControlLine  ó   € Ø×%Ñ% dÕ+r#   c                 ó&   • U R                  U5        g r'   rÅ  rÀ   s     r!   ry   ÚLoopVariable.visitCode  rÇ  r#   c                 ó&   • U R                  U5        g r'   rÅ  rÀ   s     r!   r:  ÚLoopVariable.visitExpression"  rÇ  r#   r¿  N)r+   r,   r-   r.   r|  r)   rÂ  rO  ry   r:  r/   r0   r#   r!   r¸  r¸    s    † ñòò'ò,ò,õ,r#   r¸  )r|  r[   rò   rŒ   Úmakor   r   r   r   r   Ú
mako.pygenr   r‹   r‘   r…   ÚRESERVED_NAMESÚ	frozensetr"   r   r   r‡   rº  rL  r¸  r0   r#   r!   Ú<module>rÐ     sÀ   ðñó Û 	Û å Ý Ý Ý Ý Ý $à€ð
 !Ð"2Ð3Ð Ø˜VÐ$×*Ñ*Ð+<Ó=€ð ØØØØØØØØÙ“;ô%÷P-ñ -÷8Z
ñ Z
÷zj/ñ j/ðZ �JŠJð&ó€	ò÷.,ò ,r#   