ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ eYc@sdZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZdd lmZdd lmZdd lmZmZmZdd lmZmZmZmZmZmZmZdd l m!Z!m"Z"m#Z#m$Z$m%Z%idd6dd6dd6dd6dd6dd6dd6dd6Z&e'e(drddZ)ndZ)dgZ*yd d!Ue*j+d"Wne,k rnXy d#d!UWne,k re-Z.nXe/Z.d$Z0d!e-e/d%Z2d&Z3d'Z4d(e5fd)YZ6d*e5fd+YZ7d,e8fd-YZ9d.efd/YZ:d0efd1YZ;d2e<fd3YZ=d4efd5YZ>d!S(6s jinja2.compiler ~~~~~~~~~~~~~~~ Compiles nodes into python code. :copyright: (c) 2017 by the Jinja Team. :license: BSD, see LICENSE for more details. i(tchain(tdeepcopy(t iskeyword(tupdate_wrapper(tnodes(t EvalContext(t NodeVisitor(t Optimizer(tTemplateAssertionError(tMarkuptconcattescape(t range_typet text_typet string_typest iteritemstNativeStringIOtimaptizip(tSymbolstVAR_LOAD_PARAMETERtVAR_LOAD_RESOLVEtVAR_LOAD_ALIAStVAR_LOAD_UNDEFINEDs==teqs!=tnet>tgts>=tgteqted<Z?ed=Z@e?d>ZAe?d?ZBe?d@ZCe?dAZDe?dBZEe?dCZFe?dDZGe?dEdFeZHe?dGdFeZIe@d>ZJe@d?ZKe@dHdFeZL[?[@eMdIZNeMdJZOdKZPeMdLZQeMdMZRdNZSeMdOZTeMdPZUeMdQZVeMedRZWdSZXdTZYdUZZdVZ[dWZ\dXZ]dYZ^dZZ_d[Z`d\Zad]Zbd^Zcd_Zdd`ZeRS(bcCs|dkrt}n||_||_||_||_t|_||_||_ |rot ||_ ni|_ i|_ d|_t|_d|_i|_i|_g|_d|_d|_d|_t|_d|_d|_g|_g|_dg|_dS(Niitcontext(R6RR9R:R;R7RLtcreated_block_contextR<R%RR(timport_aliasestblockstextends_so_farthas_known_extendst code_linenoRuRtt debug_infot_write_debug_infot _new_linest _last_lineRAt _first_writet_last_identifiert _indentationt _assign_stackt_param_def_blockt_context_reference_stack(R*R9R:R;R7R<R%((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyR[s8                         cCst|||j|jdS(s*Fail with a :exc:`TemplateAssertionError`.N(RR:R;(R*tmsgtlineno((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytfail9scCs|jd7_d|jS(sGet a new unique identifier.ist_%d(R(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyttemporary_identifier=scCs'|j|_|jd|jdS(s7Enable buffering for the frame from that point onwards.s%s = []N(RRdt writeline(R*R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRdBscCs|s|jjr|jd|j|jd|j|j|jd|j|jd|j|jdS|jjr|jd|jdSn|jd|jdS(s(Return the buffer contents of the frame.sif context.eval_ctx.autoescape:sreturn Markup(concat(%s))selse:sreturn concat(%s)N(R&R'RtindentRdtoutdentt autoescape(R*R,tforce_unescaped((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytreturn_buffer_contentsGs        cCs|jd7_dS(sIndent by one.iN(R(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRYsicCs|j|8_dS(sOutdent by step.N(R(R*tstep((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyR]scCs=|jdkr"|jd|n|jd|j|dS(s%Yield or write into the frame buffer.syield s %s.append(N(RdR6R(R*R,R+((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt start_writeascCs#|jdk r|jdndS(s1End the writing process started by `start_write`.t)N(RdR6twrite(R*R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt end_writehscCs.|j|||j||j|dS(s4Simple shortcut for start_write + write + end_write.N(RRR(R*tsR,R+((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt simple_writems cCsJy2|jdx|D]}|j||qWWntk rEnXdS(sVisit 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. tpassN(RR)R(R*RR,R+((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt blockvisitss    cCs|jr|jsu|jjd|j|j|j7_|jdk ru|jj|j|jfd|_qunt |_|jjd|j d|_n|jj|dS(s&Write a string into the output stream.s s iN( RRR7RRRR6RtappendRLR(R*tx((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyR~s     icCs!|j|||j|dS(s!Combination of newline and write.N(tnewlineR(R*RR+textra((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRscCsVt|jd||_|dk rR|j|jkrR|j|_|j|_ndS(s/Add one or more newlines before the next write.iN(tmaxRR6RRR(R*R+R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRs c Cset}x@td|jD|p%dD]}t|r)t}Pq)q)Wx.|jD]#}|jd|j||qSW|sx.|jD]#}|jd|j||qW|d k rx4t |D]#\}}|jd||fqWqn|j r#|jd|j|j |n|r/|j d k rH|jdn |jdxE|jD]:}|jd|j |j|j ||jdq_W|d k rx4t |D]#\}}|jd||fqWn|j d k r|jd |j|j ||jd qa|jd n2|j d k ra|jd |j|j |nd S(s,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 occour. The extra keyword arguments should be given as python dict. css|]}|jVqdS(N(RP(t.0R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pys ss, s, %s=%ss, *s , **dict({s, **{s%r: s%r: %s, s}, **Rt}s, **N((RLRR-tis_python_keywordRAtargsRR)R6Rtdyn_argst dyn_kwargsRPRN( R*R+R,t extra_kwargstkwarg_workaroundtkwargtargRPRN((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt signaturesJ )    !      cCst}x|D]}|j|qWxtdD]l}t||}xTt||D]C}||krx|j||HsR:it,sLMacro(environment, macro, %r, (%s), %r, %r, %r, context.eval_ctx.autoescape)N( RR+RRR6RRRYRZRX(R*RR,t arg_tupleR:((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt macro_defFs   cCs:d|j}|jdk r6|dt|j7}n|S(s.Return a human readable position for the node.sline %ds in N(RR:R6R(R*R+Rm((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytpositionQs cCs*ddjdt|jjDS(Ns{%s}s, css%|]\}}d||fVqdS(s%r: %sN((RR:R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pys Zs(RRR`t dump_stores(R*R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytdump_local_contextXs cCs+|jd|jd|jddS(sWrites 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. s$resolve = context.resolve_or_missings!undefined = environment.undefinedsif 0: yield NoneN(R(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt write_commons]s  cCs|jj|jjdS(sQPushes 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(RRR`tdump_param_targets(R*R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRfscCs|jjdS(s+Pops the current parameter definitions set.N(Rtpop(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRoscCs$|jr |jdj|ndS(sMarks a parameter in the current parameter definitions as stored. This will skip the enforced undefined checks. iN(RR~(R*R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRss cCs|jj|dS(N(RR(R*R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytpush_context_referencezscCs|jjdS(N(RR(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytpop_context_reference}scCs |jdS(Ni(R(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytget_context_refscCs%|jd}|dkrdSd|S(NiRtresolves %s.resolve(R(R*R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRs  cCsd|j|j|fS(Ns%s.derived(%s)(RR(R*R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytderive_contexts cCs|js tS||jdkS(s4Checks if a given target is an undeclared parameter.i(RRL(R*R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytparameter_is_undeclareds cCs|jjtdS(s+Pushes a new layer for assignment tracking.N(RRRI(R*((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytpush_assign_trackingscCsm|jj}|j s | r$dSg|D]}|d dkr+|^q+}t|dkrtt|}|jj|}|jd||fnv|jdxYt |D]K\}}|r|j dn|jj|}|j d||fqW|j d|rit|dkrC|jd |d qi|jd dj t t |ndS( soPops the topmost level for assignment tracking and updates the context variables if necessary. NiRscontext.vars[%r] = %sscontext.vars.update({s, s%r: %ss})scontext.exported_vars.add(%r)is"context.exported_vars.update((%s))(RRRaRtnexttiterR`RRRRRRR(R*R,tvarsRt public_namesR:RR((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytpop_assign_trackings*)    cCs0t|j|j}ddlm}|jddjt|jddj||jjru|jdn|j rdpd}|j t j dk }xY|jt jD]E}|j|jkr|jd |j|jn||j|j#ssdebug_info = %rt&css|]}d|VqdS(s%s=%sN((RR((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pys (s(R*(R*R(/RR9R:tjinja2.runtimeRRRt code_featuresRR<tfindRtExtendsR6tfind_alltBlockRRRt ImportedNamet importnameRRtrsplitRRRR^RVRR`RRRARaRbRRcRRRRRtsupports_yield_fromRReR(R*R+R,R&texportedtenvenvt have_extendsRetimport_timptaliastmoduletobjRR:t block_frameRS((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_Templates                           cCs(d}|jrR|jrdS|jdkrR|jd|j|d7}qRn|jrm|j|}n |j}tr|j j r|j dkr|jd|j |f|n\|j j rdpd}|jd||j |f||j|jd ||j|j|dS( s.Call a block and register it for the template.iNsif parent_template is None:is$yield from context.blocks[%r][0](%s)s async fortfors&%s event in context.blocks[%r][0](%s):tevent(RaRRRRtscopedRRRR9RRdR6R:RR(R*R+R,R_Rtloop((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRz+s,          cCs|js|jd|jn|jdkr|jsQ|jd|jn|jdd|jrwtq|jn|jd||j |j ||j d|j |jdt |j|jd |j|jrt|_n|jd 7_d S( sCalls the extender.s,cannot use extend from a non top-level scopeisif parent_template is not None:sraise TemplateRuntimeError(%r)sextended multiple timess+parent_template = environment.get_template(s, %r)s6for name, parent_block in parent_template.blocks.%s():s8context.blocks.setdefault(name, []).append(parent_block)iN(RaRRRRRRRRR)ttemplateRR:tdict_item_iterRbRA(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_ExtendsKs.                cCs|jr#|jd|jnd}t|jtjrt|jjtr\d}qt|jjt t frd}qn't|jtj tj frd}n|jd|||j |j||jd|j|jr@|j|jd|j|jd|j|jd |jnt}|jr|jjrad pdd }|jd ||j|fnE|jjr|jd n)tr|jdt}n |jd|s|j|jd||jn|jr|jndS(sHandles includes.stry:tget_or_select_templatet get_templatetselect_templatestemplate = environment.%s(s, %r)sexcept TemplateNotFound:Rselse:s async forR sY%s event in template.root_render_func(template.new_context(context.get_all(), True, %s)):sGfor event in (await template._get_default_module_async())._body_stream:s6yield from template._get_default_module()._body_streams9for event in template._get_default_module()._body_stream:R N(tignore_missingRRR2RRtConstRNRRGRHtTupletListR)RR:RRLt with_contextR9RRRRAR(R*R+R,t func_nametskip_event_yieldR((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_IncludezsN                       cCs1|jd|jj|j||jrC|jd|jn|jjr_|jdn|jd|j|j ||jd|j |j r|jd|jjrdpd|j |fn)|jjr|jd n |jd |jr-|jj d  r-|jd |jnd S(sVisit regular imports.s%s = scontext.vars[%r] = sawait senvironment.get_template(s, %r).s*make_module%s(context.get_all(), True, %s)t_asyncR{s_get_default_module_async()s_get_default_module()Rs!context.exported_vars.discard(%r)N(RR`RRRaRR9RR)RR:RRt startswith(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Imports"#       cs|j||jd|jjr(dp+d|j|j|jd|j|jr|jd|jjr{dp~d|jfn)|jjr|jdn |jdg}g}x|j D]}t |t r|\}}n|}|j d j j||f|j d j j||j|j d j j|d |j|t|f|f|jjr|j||jd s|j|qqqW|rBt|dkr|d}|j d|j j|fqB|j ddjfd|Dn|rt|dkrr|j d|dq|j ddjtt|ndS(sVisit named imports.s/included_template = %senvironment.get_template(sawait R{s, %r).s*make_module%s(context.get_all(), True, %s)Rs_get_default_module_async()s_get_default_module()s,%s = getattr(included_template, %r, missing)sif %s is missing:s9%s = undefined(%r %% included_template.__name__, name=%r)sGthe template %%r (imported on %s) does not export the requested name %sRiiscontext.vars[%r] = %sscontext.vars.update({%s})s, c3s+|]!}d|jj|fVqdS(s%r: %sN(R`R(RR:(R,(s3/usr/lib/python2.7/site-packages/jinja2/compiler.pys ss!context.exported_vars.discard(%r)s-context.exported_vars.difference_update((%s))N(RRR9RR)RR:RRRTR2RGRR`RRRRRRaRRRRR(R*R+R,t var_namestdiscarded_namesR:R((R,s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_FromImports\                   c Cs|j}|j}|j}|jpKdt|jdd$d%k}d}|ro|jjd}n|jj|dd|jr|jj|ddn|j r|j }|jj|dd|j d|j ||j |j |j||j |jjr!dp$d |j|j||jd |j|jjr`d pcd |jd |j |j d|j |j|j ||jd |j |j d|j|j||jd|j|dtn|jrJ|j d|j d||j |j||j|_n|rd|j d|nxN|jtjD]:} | jdkrw| jdkrw|jd| jqwqwW|jr|j } |j d| n|j |jjrdpd ||j|j||rM|jjr9|jd|qZ|jd|n |jd |j rw|jd|n|jr|jdnY|jjr| r|jdn|j|j||jjr| r|jdn|j r|jdn|jr|jdn|j|r-dp0d |j |j||j |j!||jr{|j d| n|j|j|d|jo|j |jr|j d | |j |j||j |j||j||jn|jr|j"||j|j#|||jjrO|jd!n|jd"|jjrx|jdn|j|j||jjr|jdn|jd#|j$|ndS(&NRtonlyRt for_branchtelsettests %s(fiter):s async for sfor s in sauto_aiter(fiter)tfitert:sif syield iRs'%s(reciter, loop_render_func, depth=0):s %s = missingtstores8Can't assign to special loop variable in for-loop targets%s = 1s&, %s in await make_async_loop_context(s, %s in LoopContext(s%s(treciters auto_aiter(Rs&, undefined, loop_render_func, depth):s , undefined):s%s = 0sif %s:sawait sloop(s, loop)(R(R(%Rot recursiveRVtiter_child_nodesR6R`RRtelse_R'RRRRRR9RR)RRRRRARdRRtNameR}R:RRRRRRRR( R*R+R,t loop_framet test_framet else_framet extended_looptloop_reftloop_filter_funcR:titeration_indicator((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Fors                         "                        cCs|j}|jd||j|j||jd|j|j|j||jxh|j D]]}|jd||j|j||jd|j|j|j||jqmW|j r|jd|j|j|j ||jndS(Nsif R)selif selse:( RpRR)R'RRRRRtelif_R.(R*R+R,tif_frameR8((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_Ifs&         cCs|j||\}}|j|jr|jjdsT|jd|jn|jj|j}|jd|jn|jd|jj|j|j ||dS(NRscontext.exported_vars.add(%r)scontext.vars[%r] = s%s = ( RRRaR:RRR`RRR(R*R+R,t macro_frameRR((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Macros   cCso|j||\}}|jd|j|||j|||j|j|dt|j|dS(Ns caller = tforward_caller(RRRRt visit_CalltcallRAR(R*R+R,t call_frameR((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_CallBlocks  cCs|j}|jj||j||j||j|j||j|||j|j ||j ||j |dS(N( RoR`RRRdRRRRxtfilterRR(R*R+R,t filter_frame((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_FilterBlocks    cCs|j}|jj||j|xftt|j|jD]I\}\}}|j|j |||j d|j ||qEW|j |j ||j |dS(Ns = (RoR`RRRRttargetstvaluesRR)RRRR(R*R+R,t with_frameRRtexpr((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Withs  .  cCs$|j||j|j|dS(N(RR)R+(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_ExprStmts csjr|jrdSt}jjrjj}t|dtsXt|dtrat}qt|dtrfd}qfd}nt}t}|jrjdj t}ng}x |j D]}y+|st j n|j |j } Wn$t j k r3|j|qnXyI|j jrpt| dra| j} qpt| } n|| } Wn!tk r|j|qnX|rt|dtr|dj| q|j| gqWt|d ks|jdk r|jdk r\t|d kr;jd |jnjd |jj nxt|D]l} t| trtt| } |jdkrjd | qj| dqc|jdkrjd | n j| d } |j jrjdn)|j jr.jdn jdjjdk rjdtjjdtrjdn| d 7} nj| |jd| |jdk rcjdqcqcW|jdk rjjt|d kr dp dqng} g}xY|D]Q} t| tra| jt| j ddq*| jd|j| q*Wjd jtt| dj x6|D].}j|d} |j jrjd| d 7} n&|j jrjd| d 7} njjdk rjdtjjdtrfjdnPtjjdtrjdn(tjjdtrjdn| d 7} nj||jd| dqWjjd|rjndS(Ntcontextfunctiontevalcontextfunctiontenvironmentfunctioncstjjj|S(N(R R9tfinalize(R(R*(s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytscstjj|S(N(R R9RN(R(R*(s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyROR{sif parent_template is None:t__html__iiis %s.append(s %s.extend((syield Rs7(escape if context.eval_ctx.autoescape else to_string)(sescape(s to_string(senvironment.finalize(s context, Rs))t%s%%s%ss % (iscontext.eval_ctx, s environment, s, (!RRcRAR9RNRRLR RRRt Impossibletas_constR&RRthasattrRPR t ExceptionR2RHRRdR6RR RR'RR)Rtreplace(R*R+R,tallow_constant_finalizeRRNt outdent_laterRtchildtconstROtvaltclosetformatt argumentstargument((R*s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Outputs           !           + "                     cCs[|j|j||j|j||jd|j|j||j|dS(Ns = (RRR)RRR+R(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_AssignVs    cCs|j|j}t|_|jj||j||j||j|j ||j ||j |j ||j d|jdk r|j|j|n|j d|j|j d|j||j|dS(Ns9 = (Markup if context.eval_ctx.autoescape else identity)(s concat(%s)R(RRoRLRcR`RRRdRRRR)RRRBR6RxRR(R*R+R,R ((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_AssignBlock^s          cCs|jdkr>|jr>|jr>|jdj|jq>n|jj|j}|jdkr|jj|}|dk o|dt ko|j | s|j d|j||fdSn|j |dS(NR*iR|is-(undefined(name=%r) if %s is missing else %s)( R}RaRRwR:R`Rt find_loadR6RRR(R*R+R,RR|((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRws  cCsi|jj|j}|jd||j|jdd|j|jd||jfdS(Ns!if not isinstance(%s, Namespace):sraise TemplateRuntimeError(%r)s/cannot assign attribute on non-namespace objects%s[%r](R`RR:RRRtattr(R*R+R,R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_NSRefs   cCsN|j|j}t|tr7|jt|n|jt|dS(N(RSR&R2RERtstrR(R*R+R,R[((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_ConstscCsRy#|jt|j|jWn(tjk rM|jd|jnXdS(Ns9(Markup if context.eval_ctx.autoescape else identity)(%r)(RRRSR&RRRtdata(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_TemplateDatas # cCs||jdd}xCt|jD]2\}}|rE|jdn|j||q#W|j|dkrqdptddS(Nt(is, is,)R(RRR"R)(R*R+R,RRO((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Tuples cCsd|jdxCt|jD]2\}}|r?|jdn|j||qW|jddS(Nt[s, t](RRR"R)(R*R+R,RRO((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Lists  cCs|jdxft|jD]U\}}|r?|jdn|j|j||jd|j|j|qW|jddS(Nt{s, s: R(RRR"R)RPRN(R*R+R,RRO((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Dicts  cstfd}|S(Ncs|jjre|jjkre|jd|j|j||jd|j|j|nD|jd|j|j||jd|j|j||jddS(Ns$environment.call_binop(context, %r, s, Rjs %s R(R9t sandboxedtintercepted_binopsRR)tlefttright(R*R+R,(toperator(s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRUs   (R1(Rut interceptableRU((Rus3/usr/lib/python2.7/site-packages/jinja2/compiler.pytbinopscstfd}|S(Ncsz|jjrE|jjkrE|jd|j|j|n$|jd|j|j||jddS(Ns#environment.call_unop(context, %r, RjR(R9Rqtintercepted_unopsRR)R+(R*R+R,(Ru(s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRUs (R1(RuRvRU((Rus3/usr/lib/python2.7/site-packages/jinja2/compiler.pytuaops t+t-t*t/s//s**RQtandRvtorsnot cCs|jjrd}n|jjr*d}nd}|jd|x.|jD]#}|j|||jdqKW|jddS(Ns;(context.eval_ctx.volatile and markup_join or unicode_join)t markup_joint unicode_joins%s((s, s))(R&R'RRRR)(R*R+R,RR((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Concats    cCs;|j|j|x!|jD]}|j||qWdS(N(R)RHtops(R*R+R,top((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_ComparescCs/|jdt|j|j|j|dS(Ns %s (Rt operatorsRR)RH(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_OperandscCs8|jd|j|j||jd|jdS(Nsenvironment.getattr(s, %r)(RR)R+Rd(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Getattrs cCst|jtjrX|j|j||jd|j|j||jdnM|jd|j|j||jd|j|j||jddS(NRlRmsenvironment.getitem(s, R(R2RRtSliceR)R+R(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Getitem s   cCs|jdk r%|j|j|n|jd|jdk rW|j|j|n|jdk r|jd|j|j|ndS(NR)(tstartR6R)RtstopR(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Slices  cCs|jjr|jdn|j|j|jd|jjj|j}|dkrx|jd|j|jnt |dt r|jdnDt |dt r|jdn"t |dt r|jd n|j dk r|j |j |nc|j jr/|jd |j|jfn7|j jrR|jd |jn|jd |j|j|||jd |jjr|jd ndS(Nsawait auto_await(Rjsno filter named %rt contextfilters context, tevalcontextfilterscontext.eval_ctx, tenvironmentfilters environment, sB(context.eval_ctx.autoescape and Markup(concat(%s)) or concat(%s))sMarkup(concat(%s))s concat(%s)R(R9RRRtR:tgetR6RRRRLR+R)R&R'RdRR(R*R+R,R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRx#s0       cCs|j|j|jd|j|jjkrM|jd|j|jn|j|j||j|||jddS(NRjsno test named %rR( RRuR:R9RRR)R+R(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRyCs cszfd}jdjjjdjjjd|jddS(NcsDjdk r"jjSjddjdS(Ns undefined(%r)sRthe inline if-expression on %s evaluated to false and no else section was defined.(texpr2R6R)RR((R,R+R*(s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt write_expr2Ns Rjs if s else R(RR)texpr1R'(R*R+R,R((R,R+R*s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_CondExprLs   cCs|jjr|jdn|jjr8|jdn |jd|j|j||rkidd6pnd}|j||||jd|jjr|jdndS(Nsawait auto_await(senvironment.call(context, s context.call(RR(R9RRRqR)R+R6R(R*R+R,R=R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyR>]s     cCs+|j|jd|j|j|dS(Nt=(RRPR)RN(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_KeywordlscCs1|jd|j|j||jddS(NsMarkup(R(RR)RH(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_MarkSafers cCs1|jd|j|j||jddS(Ns5(context.eval_ctx.autoescape and Markup or identity)(R(RR)RH(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_MarkSafeIfAutoescapews cCs|jd|jdS(Ns environment.(RR:(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_EnvironmentAttribute|scCs!|jd|j|jfdS(Nsenvironment.extensions[%r].%s(Rt identifierR:(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_ExtensionAttributescCs|j|j|jdS(N(RRR(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_ImportedNamescCs|j|jdS(N(RR:(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_InternalNamescCs|jddS(NR(R(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_ContextReferencescCs|jd|dS(Ntcontinue(R(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_ContinuescCs|jd|dS(Ntbreak(R(R*R+R,((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_BreakscCsM|j}|jj||j||j|j||j|dS(N(RoR`RRRRR(R*R+R,t scope_frame((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt visit_Scopes   cCs|j}|jd||j|f|jd||j|j||j||jdt}|jj ||j ||j |j ||j ||jdS(Ns%s = %ss %s.vars = Rn(RRRR)RRRoRAR`RRRRRR(R*R+R,R}R((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_OverlayScopes     cCsx|jD]}|jd|j|j|j|y|jj|j}Wn tjk rrt |j_ q Xt |j|j|q WdS(Nscontext.eval_ctx.%s = ( toptionsRRPR)RNRSR&RRRRAR'tsetattr(R*R+R,tkeywordR[((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_EvalContextModifierscCs|j}|jj}|jd||j||x!|jD]}|j||qFW|jj||jd|dS(Ns%s = context.eval_ctx.save()scontext.eval_ctx.revert(%s)(RR&tsaveRRRR)trevert(R*R+R,t old_ctx_namet saved_ctxRY((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pytvisit_ScopedEvalContextModifiers N(fR\R]R6RLRAR[RRRdRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR RzRRR R#R7R:R<RARDRIRJR`RaRbRReRgRiRkRnRpRwRyt visit_Addt visit_Subt visit_Mult visit_Divtvisit_FloorDivt visit_Powt visit_Modt visit_Andtvisit_Ort visit_Post visit_Negt visit_NotR1RRRRRRRxRyRR>RRRRRRRRRRRRRR(((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyRsB           5    M             t / 6  ;                                    (?Rqt itertoolsRRlRRRRt functoolsRtjinja2Rt jinja2.nodesRtjinja2.visitorRtjinja2.optimizerRtjinja2.exceptionsRt jinja2.utilsR R R tjinja2._compatR R RRRRRtjinja2.idtrackingRRRRRRRTRMRRRt SyntaxErrorRLRRAR1R6R>RKRVRgRWR^t RuntimeErrorRRRsRQRURR(((s3/usr/lib/python2.7/site-packages/jinja2/compiler.pyt s^4(           >