PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  ]c@sdZddlmZddlZddlmZddlmZmZddl m Z m Z ddl m Z mZddlmZmZmZdd lmZmZmZmZmZmZdd lmZd d lmZmZd ZdGdHdIdJdKdLgZ ddddddgZ!ej"dZ#ej"dZ$ej"d ej%Z&ej"d!ej%Z'e ej(ed"Z)i d#e*d$6d%e*d6d&e*d6d'e*d6d(e*d6d)e*d*6d+e*d,6d-e*d.6d/e*d06d1e*d26d3e*d46d5e*d66Z+e+j,d7e-d8De ej(ed9Z.d:Z/d;Z0d<Z1e e2d=Z3d>efd?YZ4d@Z5e dAZ6e dBZ7dCZ8e de2e2dDZ:dEZ;dFZ<dS(Mu'HTML utilities suitable for global use.i(tunicode_literalsN(tsix(t force_strt force_text(t keep_lazytkeep_lazy_text(tRFC3986_GENDELIMStRFC3986_SUBDELIMS(tSafeDatatSafeTextt mark_safe(t parse_qsltquotetunquotet urlencodeturlsplitt urlunsplit(tnormalize_newlinesi(tHTMLParseErrort HTMLParseru.,:;!u(u)uu[u]u<u>u"u'u·u*u•u•u•u•u&(?!(\w+|#\d+);)u ([\s<>"']+)u^https?://\[?\wu>^www\.|^(?!http)\w[^@]+\.(com|edu|gov|int|mil|net|org)($|/.*)$cCsLtt|jddjddjddjddjd d S( u* Returns the given text with ampersands, quotes and angle brackets encoded for use in HTML. This function always escapes its input, even if it's already escaped and marked as such. This may result in double-escaping. If this is a concern, use conditional_escape() instead. u&u&uu>u"u"u'u'(R Rtreplace(ttext((s5/usr/lib/python2.7/site-packages/django/utils/html.pytescape s $u\u005Cu\u\u0027u\u0022u\u003Eu\u003Cu\u0026u&u\u003Du=u\u002Du-u\u003Bu;u\u0060u`u\u2028u
u\u2029u
ccs)|]}td|d|fVqdS(u%cu\u%04XN(tord(t.0tz((s5/usr/lib/python2.7/site-packages/django/utils/html.pys @si cCstt|jtS(u5Hex encodes characters for use in JavaScript strings.(R Rt translatet _js_escapes(tvalue((s5/usr/lib/python2.7/site-packages/django/utils/html.pytescapejsCscCs't|dr|jSt|SdS(u Similar to escape(), except that it doesn't operate on pre-escaped strings. This function relies on the __html__ convention used both by Django's SafeData class and by third-party libraries like markupsafe. u__html__N(thasattrt__html__R(R((s5/usr/lib/python2.7/site-packages/django/utils/html.pytconditional_escapeIs cOs>tt|}dtj|D}t|j||S(u Similar to str.format, but passes all arguments through conditional_escape, and calls 'mark_safe' on the result. This function should be used instead of str.format or % interpolation to build up small HTML fragments. cSs%i|]\}}t||qS((R (Rtktv((s5/usr/lib/python2.7/site-packages/django/utils/html.pys ]s (tmapR Rt iteritemsR tformat(t format_stringtargstkwargst args_safet kwargs_safe((s5/usr/lib/python2.7/site-packages/django/utils/html.pyt format_htmlVscs)tt|jfd|DS(u A wrapper of format_html, for the common case of a group of arguments that need to be formatted using the same format string, and then joined using 'sep'. 'sep' is also passed through conditional_escape. 'args_generator' should be an iterator that returns the sequence of 'args' that will be passed to format_html. Example: format_html_join(' ', "
  • {} {}
  • ", ((u.first_name, u.last_name) for u in users)) c3s$|]}tt|VqdS(N(R+ttuple(RR'(R&(s5/usr/lib/python2.7/site-packages/django/utils/html.pys ps(R R tjoin(tsepR&targs_generator((R&s5/usr/lib/python2.7/site-packages/django/utils/html.pytformat_html_joinas cCstt|}tjd|}|r\g|D]"}dt|jdd^q1}n)g|D]}d|jdd^qc}dj|S(u'Converts newlines into

    and
    s.u {2,}u

    %s

    u u
    u (RRtretsplitRRR-(Rt autoescapetparastp((s5/usr/lib/python2.7/site-packages/django/utils/html.pyt linebreaksts 2)t MLStrippercBs5eZdZdZdZdZdZRS(cCs$tj||jg|_dS(N(Rt__init__tresettfed(tself((s5/usr/lib/python2.7/site-packages/django/utils/html.pyR8s  cCs|jj|dS(N(R:tappend(R;td((s5/usr/lib/python2.7/site-packages/django/utils/html.pyt handle_datascCs|jjd|dS(Nu&%s;(R:R<(R;tname((s5/usr/lib/python2.7/site-packages/django/utils/html.pythandle_entityrefscCs|jjd|dS(Nu&#%s;(R:R<(R;R?((s5/usr/lib/python2.7/site-packages/django/utils/html.pythandle_charrefscCsdj|jS(Nu(R-R:(R;((s5/usr/lib/python2.7/site-packages/django/utils/html.pytget_datas(t__name__t __module__R8R>R@RARB(((s5/usr/lib/python2.7/site-packages/django/utils/html.pyR7s     cCsmt}y|j|Wntk r.|SXy|jWntk r^|j|jSX|jSdS(u< Internal tag stripping utility used by strip_tags. N(R7tfeedRtcloseRBtrawdata(Rts((s5/usr/lib/python2.7/site-packages/django/utils/html.pyt _strip_onces   cCs{t|}xhd|krvd|krvt|}t|t|ksi|jd|jdkrmPn|}qW|S(u.Returns the given HTML with all tags stripped.u(RRItlentcount(Rt new_value((s5/usr/lib/python2.7/site-packages/django/utils/html.pyt strip_tagss  6 cCstjddt|S(u8Returns the given HTML with spaces between tags removed.u>\s+<(R1tsubR(R((s5/usr/lib/python2.7/site-packages/django/utils/html.pytstrip_spaces_between_tagssc Cs d}yt|\}}}}}Wntk rB||SXy|jdjd}Wntk ry||SX|rgt|dtD]2}tt|dtt|df^q}t |}n||}||}t |||||fS(u(Quotes a URL if it isn't already quoted.cSs<tt|}t|dtttd}t|S(Ntsafeu~(R RR RRtstrR(tsegment((s5/usr/lib/python2.7/site-packages/django/utils/html.pyt unquote_quotes uidnauasciitkeep_blank_valuesii( Rt ValueErrortencodetdecodet UnicodeErrorR tTrueR RRR( turlRStschemetnetloctpathtquerytfragmenttqt query_parts((s5/usr/lib/python2.7/site-packages/django/utils/html.pytsmart_urlquotes      H  c Cst|t}|d}d}d}d}tjt|} xXt| D]J\} } d| ksd| ksd| krpd| d} } }|| | |\} } }d}|rd nd}tj| r|| |\} }}t |}nt j| r?|| |\} }}t d |}n|d| kr|| r| j dd \}}y|j d j d }Wntk rqXnXd||f}d}n|r;|| }|r| rt| t|} }t|}ndt|||f} td| | |f| | http://example.com?x=1&y=<2> u&u&u<uu"u"u'u'u;u(RtendswithRJ(Rttrailt unescaped((s5/usr/lib/python2.7/site-packages/django/utils/html.pytunescapes $   cSst}x|rt}|jt}||krS|t||}|}t}nxtD]\}}|j|r|t|}||7}t}n|j|rZ|j||j|dkrZ|t| }||}t}qZqZWq W|||fS(ur Trim trailing and wrapping punctuation from `middle`. Return the items of the new state. i( RYtFalsetrstriptTRAILING_PUNCTUATION_CHARSRJtWRAPPING_PUNCTUATIONt startswithRhRK(tleadtmiddleRittrimmed_somethingtstrippedtopeningtclosing((s5/usr/lib/python2.7/site-packages/django/utils/html.pyttrim_punctuation s&     " cSsd|ks*|jds*|jdr.tSy|jd\}}Wntk r[tSXd|ksw|jdr{tStS(u1Return True if value looks like an email address.u@u.(RpRhRlR2RURY(Rtp1tp2((s5/usr/lib/python2.7/site-packages/django/utils/html.pytis_email_simple)s* u.u@u:uu rel="nofollow"u http://%siuidnauasciiu mailto:%s@%su%su%s%s%sN(t isinstanceRt word_split_reR2Rt enumerateRct simple_url_retmatchRbtsimple_url_2_retrsplitRVRWRXRR R-(Rttrim_url_limittnofollowR3t safe_inputRgRkRwRztwordstitwordRqRrRiRZt nofollow_attrtmiddle_unescapedtlocaltdomainttrimmed((s5/usr/lib/python2.7/site-packages/django/utils/html.pyturlizesT    $     cCs|jddS(u Avoid text wrapping in the middle of a phrase by adding non-breaking spaces where there previously were normal spaces. u u (R(R((s5/usr/lib/python2.7/site-packages/django/utils/html.pytavoid_wrappinghscsd|jkr%td|jntjr}d|jkrStd|jn|jfd|_d|_nLd|jkrtd|jn|jfd |_d |_|S( u A decorator that defines the __html__ method. This helps non-Django templates to detect classes whose __str__ methods return SafeText. u__html__u;can't apply @html_safe to %s because it defines __html__().u __unicode__uEcan't apply @html_safe to %s because it doesn't define __unicode__().cst|S(N(R (R;(t klass_unicode(s5/usr/lib/python2.7/site-packages/django/utils/html.pytscSs t|S(N(tunicode(R;((s5/usr/lib/python2.7/site-packages/django/utils/html.pyRsu__str__uAcan't apply @html_safe to %s because it doesn't define __str__().cst|S(N(R (R;(t klass_str(s5/usr/lib/python2.7/site-packages/django/utils/html.pyRscSs t|S(N(RQ(R;((s5/usr/lib/python2.7/site-packages/django/utils/html.pyRs(t__dict__RURCRtPY2t __unicode__Rt__str__(tklass((RRs5/usr/lib/python2.7/site-packages/django/utils/html.pyt html_safeps(    (u(u)(u(u[u](u<u>(u"u"(u'u'(=t__doc__t __future__RR1t django.utilsRtdjango.utils.encodingRRtdjango.utils.functionalRRtdjango.utils.httpRRtdjango.utils.safestringRR R t#django.utils.six.moves.urllib.parseR R R RRRtdjango.utils.textRt html_parserRRRnRotDOTStcompiletunencoded_ampersands_reR|t IGNORECASER~Rt text_typeRRRtupdatetrangeRR R+R0RlR6R7RIRMRORbRcRRR(((s5/usr/lib/python2.7/site-packages/django/utils/html.pyts^ .               $