403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/jinja2/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/jinja2/__pycache__/compiler.cpython-39.opt-2.pyc
a

V�4d��
@snddlZddlmZddlmZddlmZddlm	Z	ddl
mZddl
mZddl
mZd	d
lmZd	dlmZd	dlmZd	d
lmZd	dlmZd	dlmZd	dlmZd	dlmZd	dlmZd	dlmZd	dlmZd	dl m!Z!ej"�rddl#Z$d	dl%m&Z&ej'dej(dej)fd�Z*ddddddd d!d"�Z+e*e*d#�d$d%�Z,e-ej(d&ej.d'gdfd(�d)d*�Z/e-ej(d&ej0d'gdfd(�d+d,�Z1dEej2d/ej3e-ej3e-ej3ej4e5e5ej3e-d0�d1d2�Z6ej)e5d3�d4d5�Z7ej8ej9ej8e-ej:e-d6�d7d8�Z;Gd9d:�d:�Z<Gd;d'�d'�Z=Gd<d=�d=e>�Z?Gd>d?�d?e!�Z@Gd@dA�dAe!�ZAGdBdC�dCeB�ZCGdDd&�d&e!�ZDdS)F�N)�contextmanager)�update_wrapper)�StringIO)�chain)�	iskeyword)�escape)�Markup�)�nodes)�TemplateAssertionError)�Symbols)�VAR_LOAD_ALIAS)�VAR_LOAD_PARAMETER)�VAR_LOAD_RESOLVE)�VAR_LOAD_UNDEFINED)�EvalContext)�	Optimizer)�_PassArg)�concat)�NodeVisitor)�Environment�F.)�boundz==z!=�>z>=�<z<=�inznot in)�eq�ne�gtZgteq�ltZlteqrZnotin)�f�returncs2dtjdtjtjd��fdd�}tt�t|���S)N�
CodeGenerator�Frame)�self�node�frame�kwargsr!csJ|jdur6|jjs6|j�||j�}||kr6|�||�S�|||fi|��S�N)�	optimizer�eval_ctx�volatile�visit)r$r%r&r'Znew_node�r ��3/usr/lib/python3.9/site-packages/jinja2/compiler.py�new_func,s
zoptimizeconst.<locals>.new_func)r
�Expr�t�Anyr�castr)r r0r.r-r/�
optimizeconst+s�r5r"r#)�opr!cs"tdtjtdd��fdd��}|S)Nr"�r$r%r&r!cs�|jjrN�|jjvrN|�d��d��|�|j|�|�d�|�|j|�n8|�d�|�|j|�|�d��d��|�|j|�|�d�dS)Nz environment.call_binop(context, �, �(� �))�environment�	sandboxedZintercepted_binops�writer,�left�right�r$r%r&�r6r.r/�visitor<s�
�

z_make_binop.<locals>.visitor)r5r
�BinExprr#�r6rCr.rBr/�_make_binop;srFcs"tdtjtdd��fdd��}|S)Nr"r7cs`|jjr6�|jjvr6|�d��d��|�|j|�n|�d��|�|j|�|�d�dS)Nzenvironment.call_unop(context, r8r9r;)r<r=Zintercepted_unopsr>r,r%rArBr.r/rCTs�
�z_make_unop.<locals>.visitor)r5r
�	UnaryExprr#rEr.rBr/�
_make_unopQs
rHFTr)r%r<�name�filename�stream�
defer_init�	optimizedr!cCsHt|tj�std��|�||||||�}|�|�|durD|j��SdS)Nz Can't compile non template nodes)�
isinstancer
�Template�	TypeErrorZcode_generator_classr,rK�getvalue)r%r<rIrJrKrLrM�	generatorr.r.r/�generatees
�

rS��valuer!cCs�|dus|tus|turdSt|�ttttttt	hvr:dSt|�t
ttt
hvr`tdd�|D��St|�tur�tdd�|��D��SdS)NTcss|]}t|�VqdSr(��
has_safe_repr)�.0�vr.r.r/�	<genexpr>��z has_safe_repr.<locals>.<genexpr>css"|]\}}t|�ot|�VqdSr(rV�rX�krYr.r.r/rZ�r[F)�NotImplemented�Ellipsis�type�bool�int�float�complex�range�strr�tuple�list�set�	frozenset�all�dict�items�rUr.r.r/rW}srW)r
�namesr!cCs:t|�}z|D]}|�|�qWnty2Yn0|jSr()�UndeclaredNameVisitorr,�VisitorExit�
undeclared)r
rorCr%r.r.r/�find_undeclared�srsc@s*eZdZejejejfdd�dd�ZdS)�MacroRefN�r%r!cCs||_d|_d|_d|_dS�NF)r%�accesses_caller�accesses_kwargs�accesses_varargs�r$r%r.r.r/�__init__�szMacroRef.__init__)	�__name__�
__module__�__qualname__r2�Unionr
�Macro�	CallBlockr{r.r.r.r/rt�srtc@s`eZdZdeejdejedd�dd�Zdd�dd�Zde	dd	�d
d�Z
dd�dd
�ZeZdS)r#N)r*�parent�levelr!cCs~||_||_|dur4t|d�|_d|_d|_d|_n(t|j|d�|_|j|_|j|_|j|_d|_d|_d|_	d|_
d|_dS)N�r�F)r*r�r�symbols�require_output_check�buffer�block�toplevel�	rootlevel�
loop_frame�block_frame�
soft_frame)r$r*r�r�r.r.r/r{�s zFrame.__init__�r!cCs*t�|j�}|j�|j�|j��|_|Sr()�object�__new__�	__class__�__dict__�updater��copy�r$�rvr.r.r/r��sz
Frame.copyF)�isolatedr!cCs&|rt|j|jjdd�St|j|�S)Nr	r�)r#r*r�r�)r$r�r.r.r/�inner�szFrame.innercCs|��}d|_d|_|S)NFT)r�r�r�r�r.r.r/�soft�sz
Frame.soft)NN)F)
r|r}r~rr2�Optionalrbr{r�rar�r��__copy__r.r.r.r/r#�s��3
c@seZdZdS)rqN�r|r}r~r.r.r.r/rq�srqc@sPeZdZdd�dd�Zejdd�dd�Zejdd�dd	�Zej	dd�d
d�Z
dS)�DependencyFinderVisitorNr�cCst�|_t�|_dSr()ri�filters�tests�r$r.r.r/r{�sz DependencyFinderVisitor.__init__rucCs|�|�|j�|j�dSr()�
generic_visitr��addrIrzr.r.r/�visit_Filters
z$DependencyFinderVisitor.visit_FiltercCs|�|�|j�|j�dSr()r�r�r�rIrzr.r.r/�
visit_Tests
z"DependencyFinderVisitor.visit_TestcCsdSr(r.rzr.r.r/�visit_Blocksz#DependencyFinderVisitor.visit_Block)r|r}r~r{r
�Filterr��Testr��Blockr�r.r.r.r/r��sr�c@sFeZdZejedd�dd�Zejdd�dd�Z	ej
dd�dd	�ZdS)
rpN)ror!cCst|�|_t�|_dSr()rirorr)r$ror.r.r/r{s
zUndeclaredNameVisitor.__init__rucCsJ|jdkr8|j|jvr8|j�|j�|j|jkrFt��n|j�|j�dS)N�load)�ctxrIrorrr�rq�discardrzr.r.r/�
visit_Names
z UndeclaredNameVisitor.visit_NamecCsdSr(r.rzr.r.r/r�!sz!UndeclaredNameVisitor.visit_Block)r|r}r~r2�Iterablerfr{r
�Namer�r�r�r.r.r.r/rpsrpc@seZdZdS)�CompilerExitNr�r.r.r.r/r�%sr�c	@sJeZdZUd�dejeejeejejeedd�dd�Ze	ed�d	d
��Z
eedd�d
d�Zed�dd�Z
edd�dd�Zd�eedd�dd�Zdd�dd�Zd�edd�dd�Zd�eejejdd�dd�Zedd�d d!�Zd�eeejejdd"�d#d$�Zejejedd%�d&d'�Zedd(�d)d*�Zd�eejejedd,�d-d.�Zd�ejejedd/�d0d1�Zd�ejejejej feejej!eej"fdd2�d3d4�Z#ejejdd5�d6d7�Z$edd�d8d9�Z%d�eedd:�d;d<�Z&d�eeed?�d@dA�Z'eedB�dCdD�Z(ejej)ej*feej+ee,fdE�dFdG�Z-e,eddH�dIdJ�Z.ejedK�dLdM�Z/eed�dNdO�Z0dd�dPdQ�Z1edd�dRdS�Z2dd�dTdU�Z3eddV�dWdX�Z4eddV�dYdZ�Z5dd�d[d\�Z6ed�d]d^�Z7ed�d_d`�Z8eed�dadb�Z9eedV�dcdd�Z:dd�dedf�Z;edd�dgdh�Z<d�ej=ejeddE�didj�Z>ej?eddE�dkdl�Z@ejAeddE�dmdn�ZBejCeddE�dodp�ZDejejEejFfeddE�dqdr�ZGejEeddE�dsdt�ZHejFeddE�dudv�ZIejJeddE�dwdx�ZKejLeddE�dydz�ZMej)eddE�d{d|�ZNej*eddE�d}d~�ZOejPeddE�dd��ZQejReddE�d�d��ZSejTeddE�d�d��ZUGd�d��d�ejV�ZWeXej"ej"d��d�d���ZYdZZejeWe[d�<eWd�d�d��Z\ejej"ed��d�d��Z]ej^eeWed��d�d��Z_ej^eeWdd��d�d��Z`ej^eeWdd��d�d��ZaejbeddE�d�d��ZcejdeddE�d�d��ZeejfeddE�d�d��ZgejheddE�d�d��ZiejjeddE�d�d��ZkejleddE�d�d��ZmejneddE�d�d��Zoej+eddE�d�d��ZpejqeddE�d�d��ZrejseddE�d�d��Zteud��Zveud��Zweud��Zxeud��Zyeud��Zzeud��Z{eud��Z|eud��Z}eud��Z~ed��Z�ed��Z�ed��Z�e�ej�eddE�d�d���Z�e�ej�eddE�d�d���Z�ej�eddE�d�d��Z�e�ej�eddE�d�d���Z�e�ej�eddE�d�d���Z�ej�eddE�d�d��Z�e�ejejej feeej�dd��d�dÄ�Z�e�ejeddE�d�dń�Z�e�ej eddE�d�dDŽ�Z�e�ej�eddE�d�dɄ�Z�e�d�ejeeddʜd�d̄�Z�ej�eddE�d�d΄Z�ej�eddE�d�dЄZ�ej�eddE�d�d҄Z�ej�eddE�d�dԄZ�ej�eddE�d�dքZ�ej�eddE�d�d؄Z�ej�eddE�d�dڄZ�ej�eddE�d�d܄Z�ej�eddE�d�dބZ�ej�eddE�d�d�Z�ej�eddE�d�d�Z�ej�eddE�d�d�Z�ej�eddE�d�d�Z�ej�eddE�d�d�Z�ej�eddE�d�d�Z�dS)�r"NFTr)r<rIrJrKrLrMr!cCs�|durt�}||_||_||_||_d|_||_d|_|rFt|�|_i|_	i|_
d|_d|_d|_
i|_i|_g|_d|_d|_d|_d|_d|_d|_g|_g|_dg|_dS)NFrr	T�context)rr<rIrJrKZcreated_block_contextrLr)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$r<rIrJrKrLrMr.r.r/r{-s8	
zCodeGenerator.__init__r�cCs
|jduSr()r)r�r.r.r/rMvszCodeGenerator.optimizedzte.NoReturn)�msg�linenor!cCst|||j|j��dSr()rrIrJ)r$r�r�r.r.r/�fail|szCodeGenerator.failcCs|jd7_d|j��S)Nr	Zt_)r�r�r.r.r/�temporary_identifier�sz"CodeGenerator.temporary_identifier)r&r!cCs |��|_|�|j�d��dS)Nz = [])r�r��	writeline�r$r&r.r.r/r��s
zCodeGenerator.buffer)r&�force_unescapedr!cCs�|s�|jjrl|�d�|��|�d|j�d��|��|�d�|��|�d|j�d��|��dS|jjr�|�d|j�d��dS|�d|j�d��dS)Nzif context.eval_ctx.autoescape:zreturn Markup(concat(�))�else:zreturn concat(r;)r*r+r��indentr��outdent�
autoescape)r$r&r�r.r.r/�return_buffer_contents�s

z$CodeGenerator.return_buffer_contentscCs|jd7_dS�Nr	�r�r�r.r.r/r��szCodeGenerator.indentr	)�stepr!cCs|j|8_dSr(r�)r$r�r.r.r/r��szCodeGenerator.outdent)r&r%r!cCs0|jdur|�d|�n|�|j�d�|�dS)N�yield �.append()r�r�)r$r&r%r.r.r/�start_write�s
zCodeGenerator.start_writecCs|jdur|�d�dS�Nr;)r�r>r�r.r.r/�	end_write�s
zCodeGenerator.end_write)�sr&r%r!cCs$|�||�|�|�|�|�dSr()r�r>r�)r$r�r&r%r.r.r/�simple_write�s
zCodeGenerator.simple_write)r
r&r!cCs<z$|�d�|D]}|�||�qWnty6Yn0dS)N�pass)r�r,r�)r$r
r&r%r.r.r/�
blockvisit�s
zCodeGenerator.blockvisit)�xr!cCs�|jrp|jsR|j�d|j�|j|j7_|jdurR|j�|j|jf�d|_d|_|j�d|j�d|_|j�|�dS)N�
Fz    r)	r�r�rKr>r�r�r��appendr�)r$r�r.r.r/r>�s
zCodeGenerator.writer)r�r%�extrar!cCs|�||�|�|�dSr()�newliner>)r$r�r%r�r.r.r/r��szCodeGenerator.writeline)r%r�r!cCs:t|jd|�|_|dur6|j|jkr6|j|_|j|_dSr�)�maxr�r�r�r�)r$r%r�r.r.r/r��szCodeGenerator.newline)r%r&�extra_kwargsr!c	Cs�tdd�tdd�|jD�|pd�D��}|jD]}|�d�|�||�q.|s�|jD]}|�d�|�||�qT|dur�|��D]\}}|�d|�d|���q�|jr�|�d�|�|j|�|�r�|jdur�|�d�n
|�d	�|jD].}|�|j	�d
��|�|j
|�|�d�q�|du�rN|��D] \}}|�|�d
|�d���q,|jdu�r~|�d�|�|j|�|�d�n
|�d
�n$|jdu�r�|�d�|�|j|�dS)Ncss|]}tt�t|��VqdSr()�is_python_keywordr2r4rf)rXr]r.r.r/rZ�s�z*CodeGenerator.signature.<locals>.<genexpr>css|]}|jVqdSr()�key�rXr�r.r.r/rZ�r[r.r8�=z, *z
, **dict({z, **{�: z}, **r;�}z, **)�anyrr'�argsr>r,rmZdyn_argsZ
dyn_kwargsr�rU)	r$r%r&r�Zkwarg_workaround�arg�kwargr�rUr.r.r/�	signature�sF�










zCodeGenerator.signature)r
r!c
Cst�}|D]}|�|�q
|j|jdf|j|jdffD]�\}}}t|�D]�}||vr`|��||<|�d�|��|�||�d|�d|�d��|��|�d�|��|�d�|�d	||�d
��|��|�d|dd��d
|�d��|��|��qHq6dS)Nr�r��try:z = environment.�[�]zexcept KeyError:z
@internalcode�def z
(*unused):zraise TemplateRuntimeError("No ���� named z	 found."))	r�r,r�r��sortedr�r�r�r�)r$r
rCr%Zid_maproZ
dependencyrIr.r.r/�pull_dependenciess6�
 

��zCodeGenerator.pull_dependenciesc	Cs�g}|jj��D]z\}\}}|tkr&q|tkrP|�|�d|���d|�d��q|tkrn|�|�d|���q|tkr�|�	|�qt
d��q|r�|�d�|��d��dS)N� = r9r;zunknown load instruction�
 = missing)r��loadsrmrrr��get_resolve_funcr
rr��NotImplementedError�join)r$r&�undefs�target�actionZparamr.r.r/�enter_frameEs"
zCodeGenerator.enter_frame)r&�with_python_scoper!cCs>|s:g}|jjD]}|�|�q|r:|�d�|��d��dS)Nr�r�)r�r�r�r�r�)r$r&r�r�r�r.r.r/�leave_frameUszCodeGenerator.leave_frame�async �)�async_value�
sync_valuer!cCs|jjr|S|Sr()r<�is_async)r$rrr.r.r/�choose_async]szCodeGenerator.choose_async)rIr!cCs|���d|��S)Nr�)r)r$rIr.r.r/�func`szCodeGenerator.func)r%r&r!cCs�|��}|j�|�t|�}d}t�}g}t|j�D]@\}}|jdkrJ|}|jdvr`|�|j�|�	|j�
|j��q4t|jd�}	d|	vr�|dur�z|j
|t|j�Wq�ty�|�d|j�Yq�0n|�	|j�d��d|_d|	v�rd|v�r|�	|j�d��d|_d|	v�r>d|v�r>|�	|j�d��d|_d|_|j�|�|�|�d	��d
d�|��d�|�|��|�|�|�|�|�|�t|j�D]�\}}|j�
|j�}
|�d
|
�d��|��z|j
|t|j�}Wn4t�y |�|
�d|j�d|j�d��Yn0|�|
�d��|�||�|�|
�|� ��q�|�!�|�"|j|�|j#|dd�|j$|dd�|� �||fS)N�caller)r'�varargs)rr'rzhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr'rFZmacror9r8�):�if � is missing:z = undefined("parameter z was not provided", name=r;r�)r��r�)%r�r��analyze_nodertri�	enumerater�rIr�r��refrs�body�defaults�len�
IndexErrorr�r��declare_parameterrwrxryr�r�rr�r�r�r��push_parameter_definitionsr,�mark_parameter_storedr��pop_parameter_definitionsr�r�r�)r$r%r&�	macro_refZexplicit_callerZskip_special_paramsr��idxr�rrr�defaultr.r.r/�
macro_bodycsv

�$


��

zCodeGenerator.macro_body)rr&r!c
Csrd�dd�|jjD��}t|jdd�}t|jj�dkr>|d7}|�d|�d|�d	|j�d|j�d|j�d
��dS)Nr8css|]}t|j�VqdSr()�reprrIr�r.r.r/rZ�r[z*CodeGenerator.macro_def.<locals>.<genexpr>rIr	�,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	r�r%r��getattrrr>rxryrw)r$rr&Z	arg_tuplerIr.r.r/�	macro_def�s����zCodeGenerator.macro_defrucCs*d|j��}|jdur&|�d|j��}|S)Nzline � in )r�rI)r$r%r�r.r.r/�position�s
zCodeGenerator.positioncCs*d�dd�|j����D��}d|�d�S)Nr8css |]\}}|�d|��VqdS�r�Nr.)rXrIr�r.r.r/rZ�s�z3CodeGenerator.dump_local_context.<locals>.<genexpr>�{r�)r�r�Zdump_storesrm)r$r&Zitems_kvr.r.r/�dump_local_context�s
�z CodeGenerator.dump_local_contextcCs6|�d�|�d�|�d�|�d�|�d�dS)Nz$resolve = context.resolve_or_missingz!undefined = environment.undefinedzconcat = environment.concatzcond_expr_undefined = Undefinedzif 0: yield None�r�r�r.r.r/�
write_commons�s




zCodeGenerator.write_commonscCs|j�|j���dSr()r�r�r�Zdump_param_targetsr�r.r.r/r�sz(CodeGenerator.push_parameter_definitionscCs|j��dSr()r��popr�r.r.r/r�sz'CodeGenerator.pop_parameter_definitions)r�r!cCs|jr|jd�|�dS�Nr�)r�r��r$r�r.r.r/r�sz#CodeGenerator.mark_parameter_storedcCs|j�|�dSr()r�r�r(r.r.r/�push_context_reference�sz$CodeGenerator.push_context_referencecCs|j��dSr()r�r&r�r.r.r/�pop_context_reference�sz#CodeGenerator.pop_context_referencecCs
|jdSr'�r�r�r.r.r/�get_context_ref�szCodeGenerator.get_context_refcCs |jd}|dkrdS|�d�S)Nr�r��resolvez.resolver+r(r.r.r/r��s
zCodeGenerator.get_resolve_funccCs|���d|�|��d�S)Nz	.derived(r;)r,r#r�r.r.r/�derive_contextszCodeGenerator.derive_contextcCs|js
dS||jdvS)NFr�)r�r(r.r.r/�parameter_is_undeclaredsz%CodeGenerator.parameter_is_undeclaredcCs|j�t��dSr()r�r�rir�r.r.r/�push_assign_tracking	sz"CodeGenerator.push_assign_trackingcCs�|j��}|js|js|jr |s$dSdd�|D�}t|�dkr�tt|��}|j�	|�}|jrv|�
d|�d|���dS|jr�|�
d|�d|���dS|�
d|�d|���nx|jr�|�
d�n|jr�|�
d	�n
|�
d
�t|�D]6\}}|r�|�d�|j�	|�}|�|�d|���q�|�d
�|j�s�|j�s�|�r�t|�dk�rb|�
d|d�d��n"d�
tt|��}|�
d|�d��dS)NcSs g|]}|dd�dkr|�qS)Nr	�_r.r�r.r.r/�
<listcomp>r[z5CodeGenerator.pop_assign_tracking.<locals>.<listcomp>r	z_loop_vars[�] = z_block_vars[�
context.vars[z_loop_vars.update({z_block_vars.update({�context.vars.update({r8r��})�context.exported_vars.add(rr;zcontext.exported_vars.update((r�)r�r&r�r�r�r�next�iterr�rr�r
r>r��mapr)r$r&�varsZpublic_namesrIrr�	names_strr.r.r/�pop_assign_tracking
sJ
����


z!CodeGenerator.pop_assign_trackingc	Cs�t|j|j�}ddlm}m}|jjr4t||�}nt|�}|�dd�	|��|j
rZdnd}|�tj
�du}|�tj�D]4}	|	j|jvr�|�d|	j�d�|	j�|	|j|	j<qz|�tj�D]v}
|
j|jvr�|
j}|��|j|<}d	|v�r|�d	d�\}
}|�d
|
�d|�d|���q�|�d
|�d|���q�|�d|j���|j|�d��d|�d�dd�|��|��t|�}dt|jd�v�r�|j�d�}|�|�d��|j� |�d|_!|_"|�o�|j#|_$|�r�|�d�|�%|�|�&|j�|�'|j|�|j(|dd�|�)�|�r�|j#�s>|��|�d�|��|jj�s\|�d�n$|�d�|��|�d�|�)�|�)d|j#�|j�*�D�]\}}	|�|�d|��d|�d�|	d�|��|��t|�}d|_+t|	jd�}d|v�r|j�d�}|�|�d��d|v�rL|j�d�}|�|�d |�d!|�d"��|j� |	�||_,|�d#�|�%|�|�&|	j�|�'|	j|�|j(|dd�|�)��q�d�	d$d%�|jD��}|jd&|�d'�dd�d(�	d)d%�|j-D��}|�d*|���dS)+Nr	)�exported�async_exportedzfrom jinja2.runtime import r8rz, environment=environmentzblock z defined twice�.zfrom z import z as zimport zname = �rootz(context, missing=missingr)r�r$r�z = TemplateReference(context)Tzparent_template = Noner�if parent_template is not None:z4yield from parent_template.root_render_func(context)z=async for event in parent_template.root_render_func(context):zyield eventZblock_)r$�superrCz = context.super(z, block_r;z_block_vars = {}css|]}|�d|��VqdS)z: block_Nr.r�r.r.r/rZ�r[z/CodeGenerator.visit_Template.<locals>.<genexpr>z
blocks = {r��&css |]\}}|�d|��VqdS)r�Nr.r\r.r.r/rZ�r[z
debug_info = ).rr<rIZruntimer>r?rr�r�r�rL�findr
�Extends�find_allr�r�r�r��ImportedName�
importnamer�r��rsplitrr�r%r#rsrr�rrr�r�r�r�r�r�r�r�r�rmr�r�r�)r$r%r&r*r>r?Zexported_namesZenvenvZhave_extendsr��import_Zimp�alias�module�objrrIr�rrZ
blocks_kv_strZdebug_kv_strr.r.r/�visit_Template:s�
�



�
�



zCodeGenerator.visit_TemplatecCsd}|jr8|jrdS|jdkr8|�d�|��|d7}|jrJ|�|�}n|��}|jr�|�d|j	�d�|�|��|�d|j	�d�|�|�
�|jjs�|j
dur�|�d|j	�d	|�d
�|�n@|�|���d|j	�d	|�d�|�|��|�d
|�|�
�|�
|�dS)Nr�if parent_template is None:r	zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](r;zfor event in context.blocks[r�event)r�r�r�r�r��scopedr.r,�requiredrIr�r<rr�rr�)r$r%r&r�r�r.r.r/r��sF

��
���zCodeGenerator.visit_BlockcCs�|js|�d|j�|jdkrV|js6|�d�|��|�d�|jrNt��n|��|�d|�|�	|j
|�|�d|j�d��|�d�|��|�d	�|��|j
r�d
|_|jd7_dS)Nz,cannot use extend from a non top-level scoperrBz5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(r8r;z9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)Tr	)r�r�r�r�r�r�r�r�r�r,�templater>rIr�rAr.r.r/�
visit_Extends�s(




zCodeGenerator.visit_ExtendscCsp|jr|�d�|��d}t|jtj�rVt|jjt�r>d}qnt|jjt	t
f�rnd}nt|jtjtjf�rnd}|�d|�d�|�|�
|j|�|�d|j�d��|jr�|��|�d	�|��|�d
�|��|�d�|��d}|j�r|�|���d
|�|��d��n$|jj�r,|�d�n|�d�d}|�s\|��|�d|�|��|j�rl|��dS)Nr�Zget_or_select_templateZget_templateZselect_templateztemplate = environment.r9r8r;zexcept TemplateNotFound:r�r�FzUfor event in template.root_render_func(template.new_context(context.get_all(), True, z)):zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamTrQ)Zignore_missingr�r�rNrTr
�ConstrUrfrgrh�Tuple�Listr,r>rIr��with_contextrr#r<rr�)r$r%r&�	func_nameZskip_event_yieldr.r.r/�
visit_IncludesR




��
�
zCodeGenerator.visit_IncludecCs�|�|�d��d��|�|j|�|�d|j�d��|jrld|�d���}|�|�d|�|��d��n|�d	|�d��d
��dS)N�await zenvironment.get_template(r8z).Zmake_moduleZ_asyncz(context.get_all(), True, r;Z_get_default_modulez	(context))r>rr,rTrIrYr#)r$r%r&Zf_namer.r.r/�_import_common9s�zCodeGenerator._import_commoncCsl|�|j�|j��d�|�|jr6|�d|j�d��|�||�|jrh|j�d�sh|�d|j�d��dS)Nr�r4r3r1�context.exported_vars.discard(r;)r�r�rr�r�r>r]�
startswithrAr.r.r/�visit_ImportHszCodeGenerator.visit_Importc
	s�|�|�|�d�|�|��g}g}|jD]�}t|t�rF|\}}n|}|��j�|��d|�d��|�d�j�|��d��|�	�d|�
|��d|��}|��j�|��d|�d	|�d
��|���jr.|�
|�|�d�s.|�
|�q.|�rXt|�dk�r.|d
}|�d|�d�j�|����n*d��fdd�|D��}|�d|�d��|�r�t|�dk�r�|�d|d
�d
��n"d�tt|��}	|�d|	�d��dS)Nzincluded_template = z = getattr(included_template, z
, missing)r	r
z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=r;r1r	rr4r3r8c3s$|]}|�d�j�|���VqdSr!)r�r)rXrI�r&r.r/rZxsz1CodeGenerator.visit_FromImport.<locals>.<genexpr>r5r6r^z)context.exported_vars.difference_update((r�)r�r>r]rorNrgr�r�rr�r r�r�r�r_rr�r:r)
r$r%r&Z	var_namesZdiscarded_namesrIrL�messageZnames_kvr<r.rar/�visit_FromImportSsZ




������

 �
�zCodeGenerator.visit_FromImportcCs�|��}d|_|��}|��}|jpRdt|jdd�d�vpRtdd�|�tj�D��}d}|rh|j	�
d�}|j	j|dd	�|jr�|j	j|d
d	�|j
�r�|��}|j	j|dd	�|�|�|��d�|j
�|��|�|�|�|�d
d��|�|j|�|�d�|�|�dd��|�d�|��|�d|j
�|�|j
|�|�d�|��|�d�|�|j|�|�d�|j|dd�|j�r�|�|�d��d�|�|��|�|�|j|_|�r�|�|�d��|�tj�D],}	|	jdk�r�|	jdk�r�|�d|	j��q�|j�r0|��}
|�|
�d��|�|�d
d�|�|�|j|�|�rx|�d|�d|�d��d��n
|�d�|j
�r�|�|�d��|j�r�|�d �nB|jj �r�|�s�|�d!�|�|j!|�|jj �r�|�s�|�d"�|j
�r|�d"�|j�r|�d#�n|�|�r$d$nd�|��|�|�|�d%�|�"|j#|�|j�rl|�|
�d&��|��|j||j�o�|jd�|j�r�|�d|
�d��|��|�|�|�"|j|�|�|�|��|j�r`|�$|�|��|�%||�|�|�d'��d(��|jj �r*|�d!�|�|j!|�|jj �rL|�d"�|�d)�|�&|�|j'�r||j'd*�(|j	j)�dS)+NT�loop)r)Zonly)rdcss|]}|jVqdSr()rR)rXr�r.r.r/rZ�r[z*CodeGenerator.visit_For.<locals>.<genexpr>r)Z
for_branch�else�testz(fiter):z
async for zfor rzauto_aiter(fiter)Zfiter�:r	r��rz%(reciter, loop_render_func, depth=0):r��storez8Can't assign to special loop variable in for-loop targetz = 1r8ZAsynczLoopContext(r9Zreciterzauto_aiter(r;z&, undefined, loop_render_func, depth):z
, undefined):z_loop_vars = {}z = 0r\zloop(z, loop)r�)*r�r��	recursiversZiter_child_nodesr�rGr
r�r�rr�else_rfr�r�rr�r�rr,r�r>r�r�r�r�r�rIr�r�r<rr9r�rr�r�r�r��difference_updateZstores)r$r%r&r�Z
test_frameZ
else_frameZ
extended_loopZloop_refZloop_filter_funcrIZiteration_indicatorr.r.r/�	visit_For�s����





�
� 





�








zCodeGenerator.visit_ForcCs�|��}|�d|�|�|j|�|�d�|��|�|j|�|��|j	D]F}|�d|�|�|j|�|�d�|��|�|j|�|��qP|j
r�|�d�|��|�|j
|�|��dS)Nr	rgzelif r�)r�r�r,rfr>r�r�rr��elif_rk)r$r%r&Zif_framernr.r.r/�visit_Ifs&




zCodeGenerator.visit_IfcCs||�||�\}}|��|jrR|j�d�s>|�d|j�d��|�d|j�d��|�|j�|j��d��|�	||�dS)Nr1r7r;r4r3r�)
rr�r�rIr_r>r�r�rr)r$r%r&Zmacro_framerr.r.r/�visit_Macro%szCodeGenerator.visit_MacrocCsR|�||�\}}|�d�|�||�|�||�|j|j|dd�|�|�dS)Nz	caller = T)�forward_caller)rr�rr��
visit_Call�callr�)r$r%r&Z
call_framerr.r.r/�visit_CallBlock/s
zCodeGenerator.visit_CallBlockcCsh|��}|j�|�|�|�|�|�|�|j|�|�||�|�|j	|�|�
|�|�|�dSr()r�r�rr�r�r�rr�r��filterr�r�)r$r%r&Zfilter_framer.r.r/�visit_FilterBlock7s


zCodeGenerator.visit_FilterBlockcCs||��}|j�|�|�|�t|j|j�D]2\}}|��|�||�|�	d�|�||�q,|�
|j|�|�|�dS�Nr�)
r�r�rr��zip�targets�valuesr�r,r>r�rr�)r$r%r&Z
with_framer��exprr.r.r/�
visit_WithBs

zCodeGenerator.visit_WithcCs|�|�|�|j|�dSr()r�r,r%rAr.r.r/�visit_ExprStmtNs
zCodeGenerator.visit_ExprStmtc@s4eZdZUejejdefed<ejeed<dS)zCodeGenerator._FinalizeInfo.�const�srcN)r|r}r~r2r��Callablerf�__annotations__r.r.r.r/�
_FinalizeInfoRs
r�rTcCst|�Sr()rfrnr.r.r/�_default_finalizeVszCodeGenerator._default_finalize�	_finalizecs��jdur�jS�j}�d}�jjr�d}�jj�tjdtjdtjdi�t����}d}|dur|t	j
t	j
d���fdd�}n2|�|�d�}|dkr�t	j
t	j
d����fd	d�}��||��_�jS)
Nzenvironment.finalize(r��context.eval_ctxr<rTcs��|��Sr(r.rn)r�env_finalizer.r/�finalize�sz.CodeGenerator._make_finalize.<locals>.finalizer8cs���j|��Sr()r<rn�rr�r$r.r/r��s)r�r�r<r�rr��eval_context�get�from_objr2r3r�)r$r�r�pass_argr.r�r/�_make_finalize`s*

��zCodeGenerator._make_finalize)�groupr!cCstt|��Sr()rr)r$r�r.r.r/�_output_const_repr�sz CodeGenerator._output_const_repr)r%r&r�r!cCs:|�|j�}|jjrt|�}t|tj�r0t|�S|�|�Sr()	�as_constr*r�rrNr
�TemplateDatarfr~)r$r%r&r�r~r.r.r/�_output_child_to_const�s
z$CodeGenerator._output_child_to_constcCsL|jjr|�d�n|jjr(|�d�n
|�d�|jdurH|�|j�dS)Nz1(escape if context.eval_ctx.autoescape else str)(zescape(zstr()r*r+r>r�r�r$r%r&r�r.r.r/�_output_child_pre�s

zCodeGenerator._output_child_precCs"|�d�|jdur|�d�dSr�)r>rr�r.r.r/�_output_child_post�s

z CodeGenerator._output_child_postc	
Cs�|jr"|jrdS|�d�|��|��}g}|jD]�}z,|jsTt|tj�sTt�	��|�
|||�}Wn&tj	tfy�|�|�Yq4Yn0|r�t|dt
�r�|d�|�q4|�|g�q4|jdu�rt|�dkr�|�|j�d��n|�|j�d��|��|D]�}t|t
��rL|�|�}|jdu�r<|�d|�n|�|d�nb|jdu�rf|�d|�n
|�|�|�|||�|�||�|�|||�|jdu�r|�d��q|jdu�r�|��|�t|�dk�r�dnd	�|j�r�|��dS)
NrPr�r	r�z	.extend((r�rr;r�)r�r�r�r�r�r
r~rNr��
Impossibler��	Exceptionr�rhr�rr�r�r�r,r�r>r�)	r$r%r&r�r�childr~�item�valr.r.r/�visit_Output�sZ

�
�



zCodeGenerator.visit_OutputcCsF|��|�|�|�|j|�|�d�|�|j|�|�|�dSrw)r0r�r,r�r>r%r=rAr.r.r/�visit_Assigns

zCodeGenerator.visit_AssigncCs�|��|��}d|_|j�|�|�|�|�|�|�|j|�|�	|�|�
|j|�|�d�|j
dur�|�|j
|�n|�d|j�d��|�d�|�|�|�|�dS)NFz9 = (Markup if context.eval_ctx.autoescape else identity)(�concat(r;)r0r�r�r�rr�r�r�rr�r,r�r>rur�r=r�)r$r%r&r�r.r.r/�visit_AssignBlocks 






zCodeGenerator.visit_AssignBlockc	Cs�|jdkr4|js|js|jr4|jr4|jd�|j�|j�|j�}|jdkr�|j�	|�}|durv|dt
krv|�|�r�|�d|j�d|�d|�d��dS|�|�dS)	Nrir�r�rz(undefined(name=z) if z is missing else r;)
r�r�r�r�r�r�rIr�rZ	find_loadrr/r>)r$r%r&rr�r.r.r/r�6s.
���
�
���zCodeGenerator.visit_NamecCsV|j�|j�}|�d|�d��|��|�d�|��|�|�d|j�d��dS)Nzif not isinstance(z
, Namespace):zMraise TemplateRuntimeError("cannot assign attribute on non-namespace object")r�r�)r�rrIr�r�r��attr)r$r%r&rr.r.r/�visit_NSRefOs�zCodeGenerator.visit_NSRefcCs8|�|j�}t|t�r&|�t|��n|�t|��dSr()r�r*rNrcr>rfr)r$r%r&r�r.r.r/�visit_Const]s
zCodeGenerator.visit_ConstcCsHz|�t|�|j���Wn(tjyB|�d|j�d��Yn0dS�Nz6(Markup if context.eval_ctx.autoescape else identity)(r;)r>rr�r*r
r��datarAr.r.r/�visit_TemplateDatads�z CodeGenerator.visit_TemplateDatacCsV|�d�d}t|j�D]"\}}|r.|�d�|�||�q|�|dkrLdnd�dS)Nr9r�r8rz,)r;�r>r
rmr,�r$r%r&rr�r.r.r/�visit_Tuplels

zCodeGenerator.visit_TuplecCsF|�d�t|j�D]"\}}|r*|�d�|�||�q|�d�dS)Nr�r8r�r�r�r.r.r/�
visit_Listus

zCodeGenerator.visit_ListcCs`|�d�t|j�D]<\}}|r*|�d�|�|j|�|�d�|�|j|�q|�d�dS)Nr"r8r�r�)r>r
rmr,r�rUr�r.r.r/�
visit_Dict}s


zCodeGenerator.visit_Dict�+�-�*�/z//z**�%�and�orznot cCs`|jjrd}n|jjrd}nd}|�|�d��|jD]}|�||�|�d�q6|�d�dS)Nz8(markup_join if context.eval_ctx.volatile else str_join)Zmarkup_joinZstr_joinz((r8r�)r*r+r�r>r
r,)r$r%r&rZr�r.r.r/�visit_Concat�s
zCodeGenerator.visit_ConcatcCs>|�d�|�|j|�|jD]}|�||�q|�d�dS)Nr9r;)r>r,r{�ops)r$r%r&r6r.r.r/�
visit_Compare�s


zCodeGenerator.visit_ComparecCs*|�dt|j�d��|�|j|�dS)Nr:)r>�	operatorsr6r,r{rAr.r.r/�
visit_Operand�szCodeGenerator.visit_OperandcCsT|jjr|�d�|�d�|�|j|�|�d|j�d��|jjrP|�d�dS)N�(await auto_await(zenvironment.getattr(r8r;r�)r<rr>r,r%r�rAr.r.r/�
visit_Getattr�s

zCodeGenerator.visit_GetattrcCs�t|jtj�r@|�|j|�|�d�|�|j|�|�d�n^|jjrR|�d�|�d�|�|j|�|�d�|�|j|�|�d�|jjr�|�d�dS)Nr�r�r�zenvironment.getitem(r8r;r�)	rNr�r
�Slicer,r%r>r<rrAr.r.r/�
visit_Getitem�s




zCodeGenerator.visit_GetitemcCs`|jdur|�|j|�|�d�|jdur:|�|j|�|jdur\|�d�|�|j|�dS)Nrg)�startr,r>�stopr�rAr.r.r/�visit_Slice�s




zCodeGenerator.visit_Slice)r%r&�	is_filterr!ccs|jjr|�d�|r@|�|j|j�d��|jj�|j�}n(|�|j|j�d��|jj�|j�}|dur�|js�|r~dnd}|�d|�d|j�d�|j	�t
jdt
jd	t
jd
i�t
�
|��}|dur�|�|�d��dV|�||�|�d�|jj�r
|�d
�dS)Nr�r9rurfzNo r�r@r�r�r<r8r;r�)r<rr>r�rIr�r�r�r�r�rr�r�r�r�)r$r%r&r�r�	type_namer�r.r.r/�_filter_test_common�s.
��

z!CodeGenerator._filter_test_commoncCs�|�||d���|jdur*|�|j|�nX|jjrP|�d|j�d|j�d��n2|jjrn|�d|j�d��n|�d|j�d��Wd�n1s�0YdS)NTz(Markup(concat(z.)) if context.eval_ctx.autoescape else concat(r�zMarkup(concat(r�r;)r�r%r,r*r+r>r�r�rAr.r.r/r�s

��zCodeGenerator.visit_FiltercCs@|�||d��|�|j|�Wd�n1s20YdSrv)r�r,r%rAr.r.r/r�szCodeGenerator.visit_Testcsl����dd����fdd�}��d����j����d����j����d�|���d�dS)Nr�cs8�jdur���j��dS��d�����d��dS)Nz1cond_expr_undefined("the inline if-expression on z6 evaluated to false and no else section was defined."))Zexpr2r,r>r r.�r&r%r$r.r/�write_expr2s
��z1CodeGenerator.visit_CondExpr.<locals>.write_expr2r9z if z else r;)r�r>r,Zexpr1rf)r$r%r&r�r.r�r/�visit_CondExprs


zCodeGenerator.visit_CondExpr)r%r&rqr!cCs�|jjr|�d�|jjr&|�d�n
|�d�|�|j|�|rJddind}|jr\ddini}|jrnddini}|r�|j|fi|��n|s�|r�t	|fi|��}|�
|||�|�d�|jjr�|�d�dS)	Nr�zenvironment.call(context, z
context.call(rZ
_loop_varsZ_block_varsr;r�)r<rr>r=r,r%r�r�r�rlr�)r$r%r&rqr�Zloop_kwargsZblock_kwargsr.r.r/rr0s"


zCodeGenerator.visit_CallcCs"|�|jd�|�|j|�dS)Nr�)r>r�r,rUrAr.r.r/�
visit_KeywordGszCodeGenerator.visit_KeywordcCs&|�d�|�|j|�|�d�dS)NzMarkup(r;�r>r,r{rAr.r.r/�visit_MarkSafeMs
zCodeGenerator.visit_MarkSafecCs&|�d�|�|j|�|�d�dSr�r�rAr.r.r/�visit_MarkSafeIfAutoescapeRs
z(CodeGenerator.visit_MarkSafeIfAutoescapecCs|�d|j�dS)Nzenvironment.�r>rIrAr.r.r/�visit_EnvironmentAttributeYsz(CodeGenerator.visit_EnvironmentAttributecCs|�d|j�d|j���dS)Nzenvironment.extensions[z].)r>Z
identifierrIrAr.r.r/�visit_ExtensionAttribute^sz&CodeGenerator.visit_ExtensionAttributecCs|�|j|j�dSr()r>r�rIrAr.r.r/�visit_ImportedNamecsz CodeGenerator.visit_ImportedNamecCs|�|j�dSr(r�rAr.r.r/�visit_InternalNamefsz CodeGenerator.visit_InternalNamecCs|�d�dS)Nr�)r>rAr.r.r/�visit_ContextReferenceisz$CodeGenerator.visit_ContextReferencecCs|�|�|��dSr()r>r.rAr.r.r/�visit_DerivedContextReferencensz+CodeGenerator.visit_DerivedContextReferencecCs|�d|�dS)N�continuer$rAr.r.r/�visit_ContinuesszCodeGenerator.visit_ContinuecCs|�d|�dS)N�breakr$rAr.r.r/�visit_BreakvszCodeGenerator.visit_BreakcCs:|��}|j�|�|�|�|�|j|�|�|�dSr()r�r�rr�r�rr�)r$r%r&�scope_framer.r.r/�visit_Scopeys

zCodeGenerator.visit_ScopecCs�|��}|�|�d|�|����|�|�d��|�|j|�|�|�|jdd�}|j�|�|�	|�|�
|j|�|�|�|�
�dS)Nr�z.vars = T)r�)r�r�r.r,r�r)r�r�rr�r�rr�r*)r$r%r&r�r�r.r.r/�visit_OverlayScope�s


z CodeGenerator.visit_OverlayScopec	Csr|jD]f}|�d|j�d��|�|j|�z|j�|j�}WntjyZd|j_	Yq0t
|j|j|�qdS)Nzcontext.eval_ctx.r�T)�optionsr�r�r,rUr�r*r
r�r+�setattr)r$r%r&�keywordr�r.r.r/�visit_EvalContextModifier�s
z'CodeGenerator.visit_EvalContextModifiercCsh|��}|j��}|�|�d��|�||�|jD]}|�||�q4|j�|�|�d|�d��dS)Nz = context.eval_ctx.save()zcontext.eval_ctx.revert(r;)r�r*Zsaver�r�rr,Zrevert)r$r%r&Zold_ctx_nameZ	saved_ctxr�r.r.r/�visit_ScopedEvalContextModifier�s

z-CodeGenerator.visit_ScopedEvalContextModifier)NFT)F)r	)N)N)Nr)Nr)N)F)r�r)N)F)�r|r}r~r2r�rf�TextIOrar{�propertyrMrbr�r�r#r�r�r�r�r
�Noder�r�r�r�r�r>r�r�rZCallr�r��Mappingr3r�r�r�r�rrr�r�rWrtrrr r#r%rrrr)r*r,r�r.r/r0r=rOrOr�r�rFrUZIncluder[ZImportZ
FromImportr]r`rcZForrmZIfrorprtZFilterBlockrvZWithr|ZExprStmtr}�
NamedTupler��staticmethodr�r�r�r�r�r1r�r�r�ZOutputr�ZAssignr�ZAssignBlockr�r�r�ZNSRefr�rVr�r�r�r�rXr��Dictr�rFZ	visit_AddZ	visit_SubZ	visit_MulZ	visit_DivZvisit_FloorDivZ	visit_PowZ	visit_ModZ	visit_AndZvisit_OrrHZ	visit_PosZ	visit_NegZ	visit_Notr5ZConcatr�ZComparer�ZOperandr�ZGetattrr�ZGetitemr�r�r�r�Iteratorr�r�r�ZCondExprr�rrZKeywordr�ZMarkSafer�ZMarkSafeIfAutoescaper�ZEnvironmentAttributer�ZExtensionAttributer�rHr�ZInternalNamer�ZContextReferencer�ZDerivedContextReferencer�ZContinuer�ZBreakr�ZScoper�ZOverlayScoper�ZEvalContextModifierr�ZScopedEvalContextModifierr�r.r.r.r/r",sl
�
�I��������9+�S
	.��v++4�2
0���O	


�)���������)NFT)E�typingr2�
contextlibr�	functoolsr�ior�	itertoolsrr�rr�Z
markupsaferrrr
�
exceptionsrZ
idtrackingrr
rrrrr)rZutilsrrrCr�
TYPE_CHECKINGZtyping_extensions�ter<r�TypeVarr�r3rr�r5rfrDrFrGrHrOr�r�rarSrWr�r��Setrsrtr#�RuntimeErrorrqr�rpr�r�r"r.r.r.r/�<module>sz�"��
��S

Youez - 2016 - github.com/yon3zu
LinuXploit