§
    ;xÅj	­  ã                   óà  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z( d	d
l)m*Z* d	dl m+Z+m,Z,m-Z- d	dl.m/Z/m0Z0 d	dl1m2Z2 d	dl3m4Z4m5Z5 d	dl6m7Z7m8Z8m9Z9m:Z:m;Z; d	dl<m=Z= d	dl>m?Z? d	dl@mAZAmBZB d	dlCmDZD dZEerd	dlFmGZG eHeIeIf         ZJneHZJejK        dk     reLfndZM eN eOeP e(jQ        d¦  «        dd…         ¦  «        ¦  «        ZRe eNePdf                  eSd<    ejT        d¦  «        ZUe eeI                  eSd<    ejT        d¦  «        ZVe eeI                  eSd<    ejW        d ¦  «        ZXe eI         eSd!<    e
jY        ¦   «         d"k    ZZe e[         eSd#<   ee?geeBdz           f         Z\eNe"d$         e]eI         f         Z^ ej_        ejW        d%¬&¦  «        Z` G d'„ d(e#d)¬*¦  «        Za G d+„ d,eed-         ¦  «        Zb G d.„ d-e jc        ¦  «        Zd G d/„ d$eJe+¦  «        Ze G d0„ d1ee¦  «        Zfd2e?d3dfd4„Zg G d5„ d6eb¦  «        Zh G d7„ d8eh¦  «        Zi G d9„ d:eh¦  «        Zj G d;„ d<eb¦  «        Zk G d=„ d>ek¦  «        Zl G d?„ d@ek¦  «        Zm G dA„ dBe jc        ¦  «        Zn G dC„ dDen¦  «        Zo G dE„ dFeo¦  «        Zp G dG„ dHem¦  «        Zq G dI„ dJed¦  «        Zr G dK„ dLed¦  «        Zs G dM„ dNe-¦  «        Zt G dO„ dPeeeb         eeb         ¦  «        Zu G dQ„ dReeed         eed         ¦  «        Zv G dS„ dTe,eeIebf         ¦  «        ZwdUeId3eIfdV„ZxdUeId3eIfdW„ZydUeId3eIfdX„ZzdS )Yé    N)Ú	AwaitableÚCallableÚ	ContainerÚ	GeneratorÚIterableÚIteratorÚMappingÚSized)Úwraps)ÚPath)ÚPattern)ÚMappingProxyType)ÚTYPE_CHECKINGÚAnyÚFinalÚNoReturnÚOptionalÚ	TypedDictÚcast)ÚURLÚ__version__é   )Úhdrs)ÚAbstractMatchInfoÚAbstractRouterÚAbstractView)ÚDEBUGÚDEFAULT_CHUNK_SIZE)ÚHttpVersion11)ÚHandlerÚPathLike)ÚHTTPExceptionÚHTTPExpectationFailedÚHTTPForbiddenÚHTTPMethodNotAllowedÚHTTPNotFound)ÚFileResponse)ÚRequest)ÚResponseÚStreamResponse)ÚAbstractRouteDef)
ÚUrlDispatcherÚUrlMappingMatchInfoÚAbstractResourceÚResourceÚPlainResourceÚDynamicResourceÚAbstractRouteÚResourceRouteÚStaticResourceÚView)ÚApplication)é   é   © ú.é   .ÚYARL_VERSIONz$^[0-9A-Za-z!#\$%&'\*\+\-\.\^_`\|~]+$ÚHTTP_METHOD_REz*(\{[_a-zA-Z][^{}]*(?:\{[^{}]*\}[^{}]*)*\})ÚROUTE_REú/ÚPATH_SEPÚWindowsÚ
IS_WINDOWSr-   T)Úquotec                   ó�   — e Zd ZU eed<   eed<   ee         ed<   eed<   eed<   eedf         ed<   ded	<   eed
<   ded<   eed<   dS )Ú	_InfoDictÚpathÚ	formatterÚpatternÚ	directoryÚprefixr2   Úroutesr6   ÚappÚdomainÚAbstractRuleMatchingÚruleÚhttp_exceptionN)	Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   r	   r"   r9   ó    úJC:\Projects\Historical\venv\Lib\site-packages\aiohttp/web_urldispatcher.pyrE   rE   [   s‰   € € € € € € Ø
€I€I�Ià€N€N�NØ�SŒ\ÐÐÑà€O€O�OØ€K€K�KØ�C˜Ð(Ô)Ð)Ð)Ñ)à	ÐÐÑà€K€K�Kà
 Ð Ð Ñ à!Ð!Ð!Ñ!Ð!Ð!rV   rE   F)Útotalc                   óX  — e Zd Zddœdedz  ddfd„Zededz  fd„¦   «         Zeej        defd„¦   «         ¦   «         Z	ej        dede
fd	„¦   «         Zej        d
edefd„¦   «         Zej        deddfd„¦   «         Zej        defd„¦   «         Zdd„Zej        dedefd„¦   «         ZdS )r.   N©Únamer[   Úreturnc                ó   — || _         d S ©N©Ú_name©Úselfr[   s     rW   Ú__init__zAbstractResource.__init__o   s   € ØˆŒ
ˆ
ˆ
rV   c                 ó   — | j         S r^   r_   ©rb   s    rW   r[   zAbstractResource.namer   ó
   € àŒzÐrV   c                 ó   — dS )zWExposes the resource's canonical path.

        For example '/foo/bar/{name}'

        Nr9   re   s    rW   Ú	canonicalzAbstractResource.canonicalv   ó   € € € rV   Úkwargsc                 ó   — dS )z2Construct url for resource with additional params.Nr9   )rb   rj   s     rW   Úurl_forzAbstractResource.url_for   ri   rV   Úrequestc              ƒ   ó
   K  — dS )zWResolve resource.

        Return (UrlMappingMatchInfo, allowed_methods) pair.
        Nr9   ©rb   rm   s     rW   ÚresolvezAbstractResource.resolveƒ   ó
   è è € € € rV   rJ   c                 ó   — dS )zWAdd a prefix to processed URLs.

        Required for subapplications support.
        Nr9   ©rb   rJ   s     rW   Ú
add_prefixzAbstractResource.add_prefixŠ   ri   rV   c                 ó   — dS ©z;Return a dict with additional info useful for introspectionNr9   re   s    rW   Úget_infozAbstractResource.get_info‘   ri   rV   c                 ó   — d S r^   r9   re   s    rW   ÚfreezezAbstractResource.freeze•   s   € ØˆrV   rF   c                 ó   — dS )z Perform a raw match against pathNr9   ©rb   rF   s     rW   Ú	raw_matchzAbstractResource.raw_match˜   ri   rV   ©r\   N)rQ   rR   rS   rT   rc   Úpropertyr[   ÚabcÚabstractmethodrh   r   rl   r(   Ú_Resolverp   rt   rE   rw   ry   Úboolr|   r9   rV   rW   r.   r.   n   s¹  € € € € € Ø-1ð ð ð   d¡
ð °dð ð ð ð ð ð�c˜D‘jð ð ð ñ „Xðð ØÔð˜3ð ð ð ñ Ôñ „Xðð 	ÔðA ð A¨ð Að Að Añ ÔðAð 	Ôð Wð °ð ð ð ñ Ôðð 	Ôð ð ¨ð ð ð ñ Ôðð 	ÔðJ˜)ð Jð Jð Jñ ÔðJðð ð ð ð 	Ôð/˜cð / dð /ð /ð /ñ Ôð/ð /ð /rV   r.   r2   c                   óP  — e Zd Zdddœdedeee         z  dedz  dedz  ddf
d„Z	e
defd	„¦   «         Ze
defd
„¦   «         Ze
ej        dedz  fd„¦   «         ¦   «         Ze
dedz  fd„¦   «         Zej        defd„¦   «         Zej        dededefd„¦   «         Zdededz  fd„ZdS )r2   N©Úexpect_handlerÚresourceÚmethodÚhandlerr…   r†   r\   c                óT  ‡— |€t           }t          j        |¦  «        s1t          j        dk     rt          j        |¦  «        sJ d|›�¦   «         ‚|                     ¦   «         }t                               |¦  «        st          |› d�¦  «        ‚t          |¦  «        s
J |¦   «         ‚t          j        |¦  «        s$t          j        dk     rt          j        |¦  «        rnªt          j        |¦  «        r$t          rJ ‚t          j        dt          ¦  «         nrt!          |t"          ¦  «        rt%          |t&          ¦  «        rnGt          j        dt          ¦  «         t)          |¦  «        dt*          dt,          fˆfd	„¦   «         }|Š|}|| _        || _        || _        || _        d S )
N)r7   é   zCoroutine is expected, got z is not allowed HTTP methodFz6Bare generators are deprecated, use @coroutine wrapperz-Bare functions are deprecated, use async onesrm   r\   c              “   óˆ   •K  —  ‰| ¦  «        }t          j        |¦  «        r|ƒ d {V —†}t          |t          ¦  «        sJ ‚|S r^   )ÚasyncioÚiscoroutineÚ
isinstancer*   )rm   ÚresultÚold_handlers     €rW   Úhandler_wrapperz/AbstractRoute.__init__.<locals>.handler_wrapperÅ   sU   øè è € à$˜ WÑ-Ô-�ÝÔ& vÑ.Ô.ð *Ø#)˜\˜\˜\˜\˜\˜\�FÝ! &­.Ñ9Ô9Ð9Ð9Ð9Ø�rV   )Ú_default_expect_handlerÚinspectÚiscoroutinefunctionÚsysÚversion_inforŒ   Úupperr=   ÚmatchÚ
ValueErrorÚcallableÚisgeneratorfunctionr   ÚwarningsÚwarnÚDeprecationWarningrŽ   ÚtypeÚ
issubclassr   r   r(   r*   Ú_methodÚ_handlerÚ_expect_handlerÚ	_resource)rb   r‡   rˆ   r…   r†   r‘   r�   s         @rW   rc   zAbstractRoute.__init__ž   sÕ  ø€ ð Ð!Ý4ˆNåÔ*¨>Ñ:Ô:ð 	<ÝÔ˜wÒ&Ð&­7Ô+FÀ~Ñ+VÔ+VÐ&Ð&Ø;¨Ð;Ð;ñ 'Ô&ð
ð —’‘”ˆÝ×#Ò# FÑ+Ô+ð 	EÝ ÐCÐCÐCÑDÔDÐDå˜Ñ Ô Ð)Ð) 'Ñ)Ô)Ð ÝÔ& wÑ/Ô/ð 	&ÝÔ˜wÒ&Ð&­7Ô+FÀwÑ+OÔ+OÐ&àÝÔ(¨Ñ1Ô1ð 	&Ýð Ø�uÝŒMØHÝ"ñô ð ð õ ˜¥Ñ&Ô&ð 	&­:°g½|Ñ+LÔ+Lð 	&ØåŒMØ?ÕASñô ð õ �7‰^Œ^ð­wð ½>ð ð ð ð ð ñ Œ^ðð "ˆKØ%ˆGàˆŒØˆŒØ-ˆÔØ!ˆŒˆˆrV   c                 ó   — | j         S r^   )r¡   re   s    rW   r‡   zAbstractRoute.methodÕ   ó
   € àŒ|ÐrV   c                 ó   — | j         S r^   )r¢   re   s    rW   rˆ   zAbstractRoute.handlerÙ   ó
   € àŒ}ÐrV   c                 ó   — dS )z8Optional route's name, always equals to resource's name.Nr9   re   s    rW   r[   zAbstractRoute.nameÝ   ri   rV   c                 ó   — | j         S r^   )r¤   re   s    rW   r†   zAbstractRoute.resourceâ   s
   € àŒ~ÐrV   c                 ó   — dS rv   r9   re   s    rW   rw   zAbstractRoute.get_infoæ   ri   rV   Úargsrj   c                 ó   — dS )ú/Construct url for route with additional params.Nr9   ©rb   r¬   rj   s      rW   rl   zAbstractRoute.url_forê   ri   rV   rm   c              ƒ   ó<   K  — |                       |¦  «        ƒ d {V —†S r^   )r£   ro   s     rW   Úhandle_expect_headerz"AbstractRoute.handle_expect_headerî   s,   è è € Ø×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2rV   )rQ   rR   rS   rT   r    rŸ   r   Ú_ExpectHandlerr.   rc   r~   r‡   rˆ   r   r€   r[   r†   rE   rw   r   rl   r(   r*   r±   r9   rV   rW   r2   r2   �   sÈ  € € € € € ð 15Ø,0ð5"ð 5"ð 5"àð5"ð ˜4 Ô-Ñ-ð5"ð
 '¨Ñ-ð5"ð # TÑ)ð5"ð 
ð5"ð 5"ð 5"ð 5"ðn ð˜ð ð ð ñ „Xðð ð˜ð ð ð ñ „Xðð ØÔðG�c˜D‘jð Gð Gð Gñ Ôñ „XðGð ðÐ*¨TÑ1ð ð ð ñ „Xðð 	ÔðJ˜)ð Jð Jð Jñ ÔðJð 	Ôð>˜Sð >¨Cð >°Cð >ð >ð >ñ Ôð>ð3°'ð 3¸nÈtÑ>Sð 3ð 3ð 3ð 3ð 3ð 3rV   c                   óD  ‡ — e Zd ZdZdeeef         deddfˆ fd„Zede	fd„¦   «         Z
edefd„¦   «         Zedefd	„¦   «         Zededz  fd
„¦   «         Zdefd„Zeded         fd„¦   «         Zdd„Zedd„¦   «         Zej        dd„¦   «         Zdd„Zdefˆ fd„Zˆ xZS )r-   )Ú_routeÚ_appsÚ_current_appÚ_frozenÚ
match_dictÚrouter\   Nc                 ó‚   •— t          ¦   «                              |¦  «         || _        g | _        d | _        d| _        d S ©NF)Úsuperrc   r´   rµ   r¶   r·   )rb   r¸   r¹   Ú	__class__s      €rW   rc   zUrlMappingMatchInfo.__init__ö   s<   ø€ Ý‰Œ×Ò˜Ñ$Ô$Ð$ØˆŒØ(*ˆŒ
Ø04ˆÔØˆŒˆˆrV   c                 ó   — | j         j        S r^   )r´   rˆ   re   s    rW   rˆ   zUrlMappingMatchInfo.handlerý   s   € àŒ{Ô"Ð"rV   c                 ó   — | j         S r^   )r´   re   s    rW   r¹   zUrlMappingMatchInfo.route  s
   € àŒ{ÐrV   c                 ó   — | j         j        S r^   )r´   r±   re   s    rW   r…   z"UrlMappingMatchInfo.expect_handler  s   € àŒ{Ô/Ð/rV   c                 ó   — d S r^   r9   re   s    rW   rP   z"UrlMappingMatchInfo.http_exception	  ó   € àˆtrV   c                 ó4   — | j                              ¦   «         S r^   )r´   rw   re   s    rW   rw   zUrlMappingMatchInfo.get_info  s   € ØŒ{×#Ò#Ñ%Ô%Ð%rV   )r6   .c                 ó*   — t          | j        ¦  «        S r^   )Útuplerµ   re   s    rW   ÚappszUrlMappingMatchInfo.apps  s   € å�T”ZÑ Ô Ð rV   rL   r6   c                 ó„   — | j         rt          d¦  «        ‚| j        €|| _        | j                             d|¦  «         d S )Nz-Cannot change apps stack after .freeze() callr   )r·   ÚRuntimeErrorr¶   rµ   Úinsert©rb   rL   s     rW   Úadd_appzUrlMappingMatchInfo.add_app  sK   € ØŒ<ð 	PÝÐNÑOÔOÐOØÔÐ$Ø #ˆDÔØŒ
×Ò˜!˜SÑ!Ô!Ð!Ð!Ð!rV   c                 ó   — | j         }|€J ‚|S r^   )r¶   rÊ   s     rW   Úcurrent_appzUrlMappingMatchInfo.current_app  s   € àÔˆØˆˆˆØˆ
rV   c                 óh   — t           r#|| j        vrt          d| j        ›d|›�¦  «        ‚|| _        d S )Nz#Expected one of the following apps z, got )r   rµ   rÈ   r¶   rÊ   s     rW   rÍ   zUrlMappingMatchInfo.current_app!  sN   € åð 	Ø˜$œ*Ð$Ð$Ý"ØU¸$¼*ÐUÐUÈcÐUÐUñô ð ð  ˆÔÐÐrV   c                 ó   — d| _         d S )NT)r·   re   s    rW   ry   zUrlMappingMatchInfo.freeze*  s   € ØˆŒˆˆrV   c                 ó\   •— dt          ¦   «                              ¦   «         › d| j        › d�S )Nz<MatchInfo ú: ú>)r¼   Ú__repr__r´   ©rb   r½   s    €rW   rÓ   zUrlMappingMatchInfo.__repr__-  s.   ø€ ØA�U™WœW×-Ò-Ñ/Ô/ÐAÐA°4´;ÐAÐAÐAÐArV   )rL   r6   r\   N)r\   r6   r}   )rQ   rR   rS   Ú	__slots__ÚdictrT   r2   rc   r~   r    rˆ   r¹   r²   r…   r"   rP   rE   rw   rÅ   rÆ   rË   rÍ   Úsetterry   rÓ   Ú__classcell__©r½   s   @rW   r-   r-   ò   sä  ø€ € € € € à>€Ið 4¨¨S¨¤>ð ¸-ð ÈDð ð ð ð ð ð ð ð#˜ð #ð #ð #ñ „Xð#ð ð�}ð ð ð ñ „Xðð ð0 ð 0ð 0ð 0ñ „Xð0ð ð °Ñ 4ð ð ð ñ „Xðð&˜)ð &ð &ð &ð &ð ð!�eÐ.Ô/ð !ð !ð !ñ „Xð!ð"ð "ð "ð "ð ðð ð ñ „Xðð
 Ôð ð  ð  ñ Ôð ðð ð ð ðB˜#ð Bð Bð Bð Bð Bð Bð Bð Bð Bð BrV   c                   óT   ‡ — e Zd ZdZdeddfˆ fd„Zedefd„¦   «         Zdefd„Z	ˆ xZ
S )ÚMatchInfoError©Ú
_exceptionrP   r\   Nc                 ó~   •— || _         t          ¦   «                              i t          | j         ¦  «        ¦  «         d S r^   )rÝ   r¼   rc   ÚSystemRoute©rb   rP   r½   s     €rW   rc   zMatchInfoError.__init__5  s4   ø€ Ø(ˆŒÝ‰Œ×Ò˜�[¨¬Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:rV   c                 ó   — | j         S r^   rÜ   re   s    rW   rP   zMatchInfoError.http_exception9  ó
   € àŒÐrV   c                 ó<   — d| j         j        › d| j         j        › d�S )Nz<MatchInfoError rÑ   rÒ   )rÝ   ÚstatusÚreasonre   s    rW   rÓ   zMatchInfoError.__repr__=  s%   € ØU $¤/Ô"8ÐUÐU¸D¼OÔ<RÐUÐUÐUÐUrV   )rQ   rR   rS   rÕ   r"   rc   r~   rP   rT   rÓ   rØ   rÙ   s   @rW   rÛ   rÛ   1  s›   ø€ € € € € à€Ið; }ð ;¸ð ;ð ;ð ;ð ;ð ;ð ;ð ð ð ð ð ñ „XððV˜#ð Vð Vð Vð Vð Vð Vð Vð VrV   rÛ   rm   r\   c              ƒ   ó&  K  — | j                              t          j        d¦  «        }| j        t
          k    rY|                     ¦   «         dk    r.| j                             d¦  «        ƒ d{V —† d| j        _	        dS t          d|z  ¬¦  «        ‚dS )z™Default handler for Expect header.

    Just send "100 Continue" to client.
    raise HTTPExpectationFailed if value of header is not "100-continue"
    Ú z100-continues   HTTP/1.1 100 Continue

Nr   zUnknown Expect: %s)Útext)ÚheadersÚgetr   ÚEXPECTÚversionr   ÚlowerÚwriterÚwriteÚoutput_sizer#   )rm   Úexpects     rW   r’   r’   A  s™   è è € ð Œ_× Ò ¥¤¨bÑ1Ô1€FØ„�-Ò'Ð'Ø�<Š<‰>Œ>˜^Ò+Ð+Ø”.×&Ò&Ð'GÑHÔHÐHÐHÐHÐHÐHÐHÐHà)*ˆGŒNÔ&Ð&Ð&å'Ð-AÀFÑ-JÐKÑKÔKÐKð (Ð'rV   c            	       óæ   ‡ — e Zd Zddœdedz  ddfˆ fd„Zddœdedee         ez  d	edz  dd
fd„Z	dd„Z
dedefd„Zej        dedeeef         dz  fd„¦   «         Zdefd„Zded
         fd„Zˆ xZS )r/   NrZ   r[   r\   c                óŽ   •— t          ¦   «                              |¬¦  «         i | _        d | _        t	          ¦   «         | _        d S )NrZ   )r¼   rc   Ú_routesÚ
_any_routeÚsetÚ_allowed_methods)rb   r[   r½   s     €rW   rc   zResource.__init__R  s>   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#Ø13ˆŒØ04ˆŒÝ*-©%¬%ˆÔÐÐrV   ©r…   r‡   rˆ   r…   r3   c                óÊ   — | j                              || j        ¦  «        x}rt          d|j        › d�¦  «        ‚t          ||| |¬¦  «        }|                      |¦  «         |S )Nz+Added route will never be executed, method z is already registeredrø   )rô   rê   rõ   rÈ   r‡   r3   Úregister_route)rb   r‡   rˆ   r…   r¹   Ú	route_objs         rW   Ú	add_routezResource.add_routeX  s‚   € ð ”L×$Ò$ V¨T¬_Ñ=Ô=Ð=ˆ5ð 	ÝðØœ,ðð ð ñô ð õ " &¨'°4ÈÐWÑWÔWˆ	Ø×Ò˜IÑ&Ô&Ð&ØÐrV   r¹   c                 óÞ   — t          |t          ¦  «        sJ d|›�¦   «         ‚|j        t          j        k    r|| _        | j                             |j        ¦  «         || j        |j        <   d S )Nz)Instance of Route class is required, got )	rŽ   r3   r‡   r   ÚMETH_ANYrõ   r÷   Úaddrô   ©rb   r¹   s     rW   rú   zResource.register_routej  s�   € ÝØ•=ñ
ô 
ð 	Að 	Aà@°uÐ@Ð@ñ	Aô 	Að 
ð Œ<�4œ=Ò(Ð(Ø#ˆDŒOØÔ×!Ò! %¤,Ñ/Ô/Ð/Ø%*ˆŒ�U”\Ñ"Ð"Ð"rV   rm   c              ƒ   óö   K  — |                       |j        j        ¦  «        x}€d t          ¦   «         fS | j                             |j        | j        ¦  «        x}rt          ||¦  «        | j	        fS d | j	        fS r^   )
Ú_matchÚrel_urlÚ	path_saferö   rô   rê   r‡   rõ   r-   r÷   )rb   rm   r¸   r¹   s       rW   rp   zResource.resolves  sz   è è € ØŸ+š+ g¤oÔ&?Ñ@Ô@Ð@ˆJÐIØ�™œ�;ÐØ”L×$Ò$ W¤^°T´_ÑEÔEÐEˆ5ð 	QÝ& z°5Ñ9Ô9¸4Ô;PÐPÐPØ�TÔ*Ð*Ð*rV   rF   c                 ó   — d S r^   r9   r{   s     rW   r  zResource._matchz  s   € àˆrV   c                 ó*   — t          | j        ¦  «        S r^   ©Úlenrô   re   s    rW   Ú__len__zResource.__len__~  ó   € Ý�4”<Ñ Ô Ð rV   c                 óN   — t          | j                             ¦   «         ¦  «        S r^   ©Úiterrô   Úvaluesre   s    rW   Ú__iter__zResource.__iter__�  ó   € Ý�D”L×'Ò'Ñ)Ô)Ñ*Ô*Ð*rV   )r¹   r3   r\   N)rQ   rR   rS   rT   rc   rŸ   r   r    r²   rü   rú   r(   r�   rp   r   r€   rÖ   r  Úintr	  r   r  rØ   rÙ   s   @rW   r/   r/   Q  sd  ø€ € € € € Ø-1ð 0ð 0ð 0  d¡
ð 0°dð 0ð 0ð 0ð 0ð 0ð 0ð 15ðð ð àðð �lÔ# gÑ-ðð
 '¨Ñ-ðð 
ðð ð ð ð$+ð +ð +ð +ð+ Wð +°ð +ð +ð +ð +ð 	Ôð˜3ð  4¨¨S¨¤>°DÑ#8ð ð ð ñ Ôðð!˜ð !ð !ð !ð !ð+˜( ?Ô3ð +ð +ð +ð +ð +ð +ð +ð +rV   r/   c                   óÆ   ‡ — e Zd Zddœdededz  ddfˆ fd„Zedefd„¦   «         Zdd„Zd	eddfd
„Zdede	eef         dz  fd„Z
dedefd„Zdefd„Zdefd„Zdefd„Zˆ xZS )r0   NrZ   rF   r[   r\   c                óŒ   •— t          ¦   «                              |¬¦  «         |r|                     d¦  «        sJ ‚|| _        d S )NrZ   r?   )r¼   rc   Ú
startswithÚ_path)rb   rF   r[   r½   s      €rW   rc   zPlainResource.__init__ˆ  sF   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØÐ/˜4Ÿ?š?¨3Ñ/Ô/Ð/Ð/Ð/ØˆŒ
ˆ
ˆ
rV   c                 ó   — | j         S r^   ©r  re   s    rW   rh   zPlainResource.canonical�  rf   rV   c                 ó&   — | j         s	d| _         d S d S )Nr?   r  re   s    rW   ry   zPlainResource.freeze‘  s!   € ØŒzð 	ØˆDŒJˆJˆJð	ð 	rV   rJ   c                 óª   — |                      d¦  «        sJ ‚|                     d¦  «        rJ ‚t          |¦  «        dk    sJ ‚|| j        z   | _        d S ©Nr?   r   )r  Úendswithr  r  rs   s     rW   rt   zPlainResource.add_prefix•  sY   € Ø× Ò  Ñ%Ô%Ð%Ð%Ð%Ø—?’? 3Ñ'Ô'Ð'Ð'Ð'Ý�6‰{Œ{˜QŠˆˆˆØ˜dœjÑ(ˆŒ
ˆ
ˆ
rV   c                 ó    — | j         |k    ri S d S r^   r  r{   s     rW   r  zPlainResource._match›  s   € àŒ:˜ÒÐØˆIØˆtrV   c                 ó   — | j         |k    S r^   r  r{   s     rW   r|   zPlainResource.raw_match¡  s   € ØŒz˜TÒ!Ð!rV   c                 ó   — d| j         iS )NrF   r  re   s    rW   rw   zPlainResource.get_info¤  s   € Ø˜œ
Ð#Ð#rV   c                 ó8   — t          j        | j        d¬¦  «        S )NT©rF   Úencoded)r   Úbuildr  re   s    rW   rl   zPlainResource.url_for§  s   € ÝŒy˜dœj°$Ð7Ñ7Ô7Ð7rV   c                 óJ   — | j         �d| j         z   dz   nd}d|› d| j        › d�S )Nú'ú' rç   z<PlainResource ú rÒ   )r[   r  ra   s     rW   rÓ   zPlainResource.__repr__ª  s9   € Ø)-¬Ð)>ˆs�T”Y‰ Ñ%Ð%ÀBˆØ5 Ð5Ð5¨¬
Ð5Ð5Ð5Ð5rV   r}   )rQ   rR   rS   rT   rc   r~   rh   ry   rt   rÖ   r  r‚   r|   rE   rw   r   rl   rÓ   rØ   rÙ   s   @rW   r0   r0   ‡  sb  ø€ € € € € Ø8<ð ð ð ˜Sð ¨3°©:ð Àð ð ð ð ð ð ð
 ð˜3ð ð ð ñ „Xððð ð ð ð) ð )¨ð )ð )ð )ð )ð˜3ð  4¨¨S¨¤>°DÑ#8ð ð ð ð ð"˜cð " dð "ð "ð "ð "ð$˜)ð $ð $ð $ð $ð8˜ð 8ð 8ð 8ð 8ð6˜#ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6rV   r0   c                   ó  ‡ — e Zd Z ej        d¦  «        Z ej        d¦  «        ZdZddœdededz  ddfˆ fd	„Z	e
defd
„¦   «         Zdeddfd„Zdedeeef         dz  fd„Zdedefd„Zdefd„Zdedefd„Zdefd„Zˆ xZS )r1   z#\{(?P<var>[_a-zA-Z][_a-zA-Z0-9]*)\}z.\{(?P<var>[_a-zA-Z][_a-zA-Z0-9]*):(?P<re>.+)\}z[^{}/]+NrZ   rF   r[   r\   c                óÖ  •— t          ¦   «                              |¬¦  «         || _        d}d}t                               |¦  «        D �]}| j                             |¦  «        }|rP|d                     |                     d¦  «        | j	        ¦  «        z  }|d|                     d¦  «        z   dz   z  }Œo| j
                             |¦  «        }|rA| dj        di |                     ¦   «         ¤Žz  }|d|                     d¦  «        z   dz   z  }ŒÌd|v sd|v rt          d|› d	|› d
�¦  «        ‚t          |¦  «        }||z  }|t          j        |¦  «        z  }�Œ	 t          j        |¦  «        }n-# t          j        $ r}t          d|› d|› �¦  «        d ‚d }~ww xY w|j                             t(          ¦  «        sJ ‚|                     d¦  «        sJ ‚|| _        || _        d S )NrZ   rç   z
(?P<{}>{})ÚvarÚ{Ú}z(?P<{var}>{re})zInvalid path 'z'['z']zBad pattern 'z': r?   r9   )r¼   rc   Ú
_orig_pathr>   ÚsplitÚDYNÚ	fullmatchÚformatÚgroupÚGOODÚDYN_WITH_REÚ	groupdictr™   Ú_requote_pathÚreÚescapeÚcompileÚerrorrH   r  r@   Ú_patternÚ
_formatter)
rb   rF   r[   rH   rG   Úpartr˜   ÚcompiledÚexcr½   s
            €rW   rc   zDynamicResource.__init__µ  s   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØˆŒØˆØˆ	Ý—N’N 4Ñ(Ô(ð 	'ñ 	'ˆDØ”H×&Ò& tÑ,Ô,ˆEØð Ø˜<×.Ò.¨u¯{ª{¸5Ñ/AÔ/AÀ4Ä9ÑMÔMÑM�Ø˜S 5§;¢;¨uÑ#5Ô#5Ñ5¸Ñ;Ñ;�	ØàÔ$×.Ò.¨tÑ4Ô4ˆEØð ØÐ3Ð,Ô3ÐHÐH°e·o²oÑ6GÔ6GÐHÐHÑH�Ø˜S 5§;¢;¨uÑ#5Ô#5Ñ5¸Ñ;Ñ;�	Øà�dˆ{ˆ{˜c T˜k˜kÝ Ð!C°$Ð!CÐ!C¸4Ð!CÐ!CÐ!CÑDÔDÐDå  Ñ&Ô&ˆDØ˜ÑˆIØ•r”y ‘”Ñ&ˆG‰Gð	JÝ”z 'Ñ*Ô*ˆHˆHøÝŒxð 	Jð 	Jð 	JÝÐ>¨WÐ>Ð>¸Ð>Ð>Ñ?Ô?ÀTÐIøøøøð	JøøøàÔ×*Ò*­8Ñ4Ô4Ð4Ð4Ð4Ø×#Ò# CÑ(Ô(Ð(Ð(Ð(Ø ˆŒØ#ˆŒˆˆs   Å!E6 Å6F ÆFÆF c                 ó   — | j         S r^   )r;  re   s    rW   rh   zDynamicResource.canonical×  râ   rV   rJ   c                 ó  — |                      d¦  «        sJ ‚|                     d¦  «        rJ ‚t          |¦  «        dk    sJ ‚t          j        t          j        |¦  «        | j        j        z   ¦  «        | _        || j        z   | _        d S r  )	r  r  r  r6  r8  r7  r:  rH   r;  rs   s     rW   rt   zDynamicResource.add_prefixÛ  s~   € Ø× Ò  Ñ%Ô%Ð%Ð%Ð%Ø—?’? 3Ñ'Ô'Ð'Ð'Ð'Ý�6‰{Œ{˜QŠˆˆˆÝœ
¥2¤9¨VÑ#4Ô#4°t´}Ô7LÑ#LÑMÔMˆŒØ  4¤?Ñ2ˆŒˆˆrV   c                 óž   — | j                              |¦  «        }|€d S d„ |                     ¦   «                              ¦   «         D ¦   «         S )Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r9   )Ú_unquote_path_safe)Ú.0ÚkeyÚvalues      rW   ú
<dictcomp>z*DynamicResource._match.<locals>.<dictcomp>æ  s4   € ð 
ð 
ð 
Ù/9¨s°EˆCÕ# EÑ*Ô*ð
ð 
ð 
rV   )r:  r/  r4  Úitems)rb   rF   r˜   s      rW   r  zDynamicResource._matchâ  sX   € Ø”×'Ò'¨Ñ-Ô-ˆØˆ=Ø�4ð
ð 
Ø=B¿_º_Ñ=NÔ=N×=TÒ=TÑ=VÔ=Vð
ñ 
ô 
ð 	
rV   c                 ó   — | j         |k    S r^   )r,  r{   s     rW   r|   zDynamicResource.raw_matchê  s   € ØŒ $Ò&Ð&rV   c                 ó    — | j         | j        dœS )N)rG   rH   )r;  r:  re   s    rW   rw   zDynamicResource.get_infoí  s   € Ø!œ_¸¼ÐGÐGÐGrV   Úpartsc                 óš   — | j                              d„ |                     ¦   «         D ¦   «         ¦  «        }t          j        |d¬¦  «        S )Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r9   )Ú_quote_path)rD  ÚkÚvs      rW   rG  z+DynamicResource.url_for.<locals>.<dictcomp>ñ  s$   € Ð)VÐ)VÐ)VÁÀÀ1¨!­[¸©^¬^Ð)VÐ)VÐ)VrV   Tr   )r;  Ú
format_maprH  r   r"  )rb   rK  Úurls      rW   rl   zDynamicResource.url_forð  sC   € ØŒo×(Ò(Ð)VÐ)VÈÏÊÉÌÐ)VÑ)VÔ)VÑWÔWˆÝŒy˜c¨4Ð0Ñ0Ô0Ð0rV   c                 óJ   — | j         �d| j         z   dz   nd}d|› d| j        › d�S )Nr$  r%  rç   z<DynamicResource r&  rÒ   )r[   r;  ra   s     rW   rÓ   zDynamicResource.__repr__ô  s9   € Ø)-¬Ð)>ˆs�T”Y‰ Ñ%Ð%ÀBˆØ< 4Ð<Ð<¨$¬/Ð<Ð<Ð<Ð<rV   )rQ   rR   rS   r6  r8  r.  r3  r2  rT   rc   r~   rh   rt   rÖ   r  r‚   r|   rE   rw   r   rl   rÓ   rØ   rÙ   s   @rW   r1   r1   ¯  s„  ø€ € € € € à
ˆ"Œ*Ð;Ñ
<Ô
<€CØ�"”*ÐNÑOÔO€KØ€Dà8<ð  $ð  $ð  $˜Sð  $¨3°©:ð  $Àð  $ð  $ð  $ð  $ð  $ð  $ðD ð˜3ð ð ð ñ „Xðð3 ð 3¨ð 3ð 3ð 3ð 3ð
˜3ð 
 4¨¨S¨¤>°DÑ#8ð 
ð 
ð 
ð 
ð'˜cð ' dð 'ð 'ð 'ð 'ðH˜)ð Hð Hð Hð Hð1˜sð 1 sð 1ð 1ð 1ð 1ð=˜#ð =ð =ð =ð =ð =ð =ð =ð =rV   r1   c                   ót   ‡ — e Zd Zddœdededz  ddfˆ fd„Zedefd„¦   «         Zdeddfd„Zdedefd	„Z	ˆ xZ
S )
ÚPrefixResourceNrZ   rJ   r[   r\   c                ó  •— |r|                      d¦  «        s
J |¦   «         ‚|dv s|                     d¦  «        r
J |¦   «         ‚t          ¦   «                              |¬¦  «         t	          |¦  «        | _        | j        dz   | _        d S )Nr?   )rç   r?   rZ   )r  r  r¼   rc   r5  Ú_prefixÚ_prefix2)rb   rJ   r[   r½   s      €rW   rc   zPrefixResource.__init__ú  s�   ø€ ØÐ;˜V×.Ò.¨sÑ3Ô3Ð;Ð;°VÑ;Ô;Ð3Ø˜Ð"Ð"¨&¯/ª/¸#Ñ*>Ô*>Ð"Ð"ÀÑ"Ô"Ð>Ý‰Œ×Ò˜dÐÑ#Ô#Ð#Ý$ VÑ,Ô,ˆŒØœ sÑ*ˆŒˆˆrV   c                 ó   — | j         S r^   )rW  re   s    rW   rh   zPrefixResource.canonical  r¦   rV   c                 óÈ   — |                      d¦  «        sJ ‚|                     d¦  «        rJ ‚t          |¦  «        dk    sJ ‚|| j        z   | _        | j        dz   | _        d S r  )r  r  r  rW  rX  rs   s     rW   rt   zPrefixResource.add_prefix  sg   € Ø× Ò  Ñ%Ô%Ð%Ð%Ð%Ø—?’? 3Ñ'Ô'Ð'Ð'Ð'Ý�6‰{Œ{˜QŠˆˆˆØ ¤Ñ,ˆŒØœ sÑ*ˆŒˆˆrV   c                 ó   — dS r»   r9   rs   s     rW   r|   zPrefixResource.raw_match  s   € ØˆurV   )rQ   rR   rS   rT   rc   r~   rh   rt   r‚   r|   rØ   rÙ   s   @rW   rU  rU  ù  sÎ   ø€ € € € € Ø:>ð +ð +ð +˜sð +¨S°4©Zð +À4ð +ð +ð +ð +ð +ð +ð ð˜3ð ð ð ñ „Xðð+ ð +¨ð +ð +ð +ð +ð ð ¨ð ð ð ð ð ð ð ð rV   rU  c                   ó0  ‡ — e Zd ZdZddeddddœdedededz  dedz  d	ed
e	de	de	ddfˆ fd„Z
ddœdede	dz  defd„Zededefd„¦   «         Zdefd„Zdeddfd„Zdedefd„Zdefd„Zdee         fd„Zdedefd„Zdedefd„Zdedefd„Zdefd „Z ˆ xZ!S )!r4   rP  NF©r[   r…   Ú
chunk_sizeÚ
show_indexÚfollow_symlinksÚappend_versionrJ   rI   r[   r…   r^  r_  r`  ra  r\   c                óH  •— t          ¦   «                              ||¬¦  «         	 t          |¦  «                             ¦   «                              d¬¦  «        }n&# t
          $ r}	t          d|› d�¦  «        |	‚d }	~	ww xY w|                     ¦   «         st          d|› d�¦  «        ‚|| _        || _	        || _
        || _        || _        || _        t          d| j        | |¬¦  «        t          d	| j        | |¬¦  «        d
œ| _        t#          | j        ¦  «        | _        d S )NrZ   T)Ústrictr$  z' does not existz' is not a directoryÚGETrø   ÚHEAD)rd  re  )r¼   rc   r   Ú
expanduserrp   ÚFileNotFoundErrorr™   Úis_dirÚ
_directoryÚ_show_indexÚ_chunk_sizeÚ_follow_symlinksr£   Ú_append_versionr3   Ú_handlerô   rö   r÷   )rb   rJ   rI   r[   r…   r^  r_  r`  ra  r9  r½   s             €rW   rc   zStaticResource.__init__  sU  ø€ õ 	‰Œ×Ò˜ dÐÑ+Ô+Ð+ð	IÝ˜Y™œ×2Ò2Ñ4Ô4×<Ò<ÀDÐ<ÑIÔIˆIˆIøÝ ð 	Ið 	Ið 	IÝÐ< Ð<Ð<Ð<Ñ=Ô=À5ÐHøøøøð	Iøøøà×ÒÑ!Ô!ð 	BÝÐ@ Ð@Ð@Ð@ÑAÔAÐAØ#ˆŒØ%ˆÔØ%ˆÔØ /ˆÔØ-ˆÔØ-ˆÔõ !Ø�t”| T¸.ðñ ô õ "Ø˜œ d¸>ðñ ô ð	
ð 
ˆŒõ !$ D¤LÑ 1Ô 1ˆÔÐÐs   ¦5A Á
A?Á&A:Á:A?)ra  Úfilenamec                ó†  — |€| j         }t          |¦  «                             d¦  «        }t          j        | j        d¬¦  «        }t          dk     r||                     dd¦  «        z  }n||z  }|�rM| j         	                    |¦  «        }	 | j
        r[t          t          j                             |¦  «        ¦  «        }|                     | j        ¦  «         |                     ¦   «         }n.|                     ¦   «         }|                     | j        ¦  «         n# t"          t$          f$ r |cY S w xY w|                     ¦   «         rt|                     d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |¦  «        }	|                     | j        |	i¦  «        }|S |S )Nr?   Tr   ©r   é   ú%ú%25Úrb)rm  rT   Úlstripr   r"  rW  r<   Úreplaceri  Újoinpathrl  r   ÚosrF   ÚnormpathÚrelative_torp   r™   rg  Úis_fileÚopenÚreadÚ_get_file_hashÚ
with_queryÚVERSION_KEY)
rb   ro  ra  rR  Úunresolved_pathÚnormalized_pathÚfilepathÚfÚ
file_bytesÚhs
             rW   rl   zStaticResource.url_for9  s÷  € ð Ð!Ø!Ô1ˆNÝ�x‘=”=×'Ò'¨Ñ,Ô,ˆåŒi˜Tœ\°4Ð8Ñ8Ô8ˆå˜&Ò Ð Ø˜×(Ò(¨¨eÑ4Ô4Ñ4ˆCˆCà˜‘.ˆCàñ 	Ø"œo×6Ò6°xÑ@Ô@ˆOðØÔ(ð :Ý&*­2¬7×+;Ò+;¸OÑ+LÔ+LÑ&MÔ&M�OØ#×/Ò/°´Ñ@Ô@Ð@Ø.×6Ò6Ñ8Ô8�H�Hà.×6Ò6Ñ8Ô8�HØ×(Ò(¨¬Ñ9Ô9Ð9øøÝÕ 1Ð2ð ð ð ð �
�
�
ðøøøð ×ÒÑ!Ô!ð ð —]’] 4Ñ(Ô(ð *¨AØ!"§¢¡¤�Jð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *à×'Ò'¨
Ñ3Ô3�Ø—n’n dÔ&6¸Ð%:Ñ;Ô;�Ø�
Øˆ
s%   ÂBD  Ä D6Ä5D6Å"FÆFÆ
FÚ
byte_arrayc                 óÈ   — t          j        ¦   «         }|                     | ¦  «         t          j        |                     ¦   «         ¦  «        }|                     d¦  «        S )NÚascii)ÚhashlibÚsha256ÚupdateÚbase64Úurlsafe_b64encodeÚdigestÚdecode)rˆ  ÚmÚb64s      rW   r  zStaticResource._get_file_hashb  sK   € åŒNÑÔˆØ	�Š�ÑÔÐÝÔ& q§x¢x¡z¤zÑ2Ô2ˆØ�zŠz˜'Ñ"Ô"Ð"rV   c                 ó,   — | j         | j        | j        dœS )N)rI   rJ   rK   )ri  rW  rô   re   s    rW   rw   zStaticResource.get_infoi  s    € àœØ”lØ”lð
ð 
ð 	
rV   rˆ   c                 óª   — d| j         v rt          d¦  «        ‚t          d|| | j        ¬¦  «        | j         d<   | j                             d¦  «         d S )NÚOPTIONSzOPTIONS route was set alreadyrø   )rô   rÈ   r3   r£   r÷   rÿ   )rb   rˆ   s     rW   Úset_options_routez StaticResource.set_options_routep  sd   € Ø˜œÐ$Ð$ÝÐ>Ñ?Ô?Ð?Ý"/Ø�w °TÔ5Ið#
ñ #
ô #
ˆŒ�YÑð 	Ô×!Ò! )Ñ,Ô,Ð,Ð,Ð,rV   rm   c              ƒ   óÂ  K  — |j         j        }|j        }t          j                             |¦  «        }t          r|                     dd¦  «        }|                     | j	        ¦  «        s|| j
        k    rd t          ¦   «         fS | j        }||vrd |fS dt          |t          | j
        ¦  «        dz   d …         ¦  «        i}t          || j        |         ¦  «        |fS )Nú\r?   ro  r   )r  r  r‡   ry  rF   rz  rB   rw  r  rX  rW  rö   r÷   rC  r  r-   rô   )rb   rm   rF   r‡   Ú	norm_pathÚallowed_methodsr¸   s          rW   rp   zStaticResource.resolvex  sä   è è € ØŒÔ(ˆØ”ˆõ ”G×$Ò$ TÑ*Ô*ˆ	Ýð 	5Ø!×)Ò)¨$°Ñ4Ô4ˆIØ×#Ò# D¤MÑ2Ô2ð 	°yÀDÄLÒ7PÐ7PØ�™œ�;ÐàÔ/ˆØ˜Ð(Ð(Ø˜Ð(Ð(à Õ"4°T½#¸d¼lÑ:KÔ:KÈaÑ:OÐ:QÐ:QÔ5RÑ"SÔ"SÐTˆ
Ý# J°´¸VÔ0DÑEÔEÀÐWÐWrV   c                 ó*   — t          | j        ¦  «        S r^   r  re   s    rW   r	  zStaticResource.__len__Š  r
  rV   c                 óN   — t          | j                             ¦   «         ¦  «        S r^   r  re   s    rW   r  zStaticResource.__iter__�  r  rV   c              ƒ   ó  K  — |j         d         }t          |¦  «                             ¦   «         rt          ¦   «         ‚| j                             |¦  «        }t          j        ¦   «         }|                     d | j	        |¦  «        ƒ d {V —†S )Nro  )
Ú
match_infor   Úis_absoluter&   ri  rx  rŒ   Úget_running_loopÚrun_in_executorÚ_resolve_path_to_response)rb   rm   ro  r‚  Úloops        rW   rn  zStaticResource._handle�  sœ   è è € ØÔ% jÔ1ˆÝ�‰>Œ>×%Ò%Ñ'Ô'ð 	!õ ‘.”.Ð Øœ/×2Ò2°8Ñ<Ô<ˆÝÔ'Ñ)Ô)ˆØ×)Ò)Ø�$Ô0°/ñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
rV   r‚  c                 ó†  — 	 | j         r[t          t          j                             |¦  «        ¦  «        }|                     | j        ¦  «         |                     ¦   «         }n.|                     ¦   «         }|                     | j        ¦  «         n*# t          gt          ¢R $ r}t          ¦   «         |‚d}~ww xY w	 |                     ¦   «         r9| j        r$t          |                      |¦  «        d¬¦  «        S t          ¦   «         ‚n!# t           $ r}t          ¦   «         |‚d}~ww xY wt#          || j        ¬¦  «        S )zFTake the unresolved path and query the file system to form a response.Nz	text/html)rè   Úcontent_type)r^  )rl  r   ry  rF   rz  r{  ri  rp   r™   ÚCIRCULAR_SYMLINK_ERRORr&   rh  rj  r)   Ú_directory_as_htmlr$   ÚPermissionErrorr'   rk  )rb   r‚  rƒ  Ú	file_pathr9  s        rW   r£  z(StaticResource._resolve_path_to_responseœ  s^  € ð
	,ØÔ$ð 7Ý"&¥r¤w×'7Ò'7¸Ñ'HÔ'HÑ"IÔ"I�Ø×+Ò+¨D¬OÑ<Ô<Ð<Ø+×3Ò3Ñ5Ô5�	�	à+×3Ò3Ñ5Ô5�	Ø×%Ò% d¤oÑ6Ô6Ð6øøÝÐ4Õ3Ð4Ð4ð 	,ð 	,ð 	,õ ‘.”. eÐ+øøøøð	,øøøð
	-Ø×ÒÑ!Ô!ð *ØÔ#ð *Ý#Ø!×4Ò4°YÑ?Ô?Ø%0ðñ ô ð õ
 (™/œ/Ð)ð*øõ ð 	-ð 	-ð 	-Ý‘/”/ uÐ,øøøøð	-øøøõ ˜I°$Ô2BÐCÑCÔCÐCs6   ‚BB ÂB:Â&B5Â5B:Â>>D Ã=D Ä
D*ÄD%Ä%D*Údir_pathc           	      ó²  — |                      ¦   «         sJ ‚|                     | j        ¦  «                             ¦   «         }dt	          |¦  «        › �}d|› d�}g }|                     ¦   «         }t          |¦  «        D ]–}|                     | j        ¦  «                             ¦   «         }t          | j        › d|› �¦  «        }	|                      ¦   «         r|j	        › d�}
n|j	        }
| 
                    d|	› dt	          |
¦  «        › d�¦  «         Œ—d                     d	                     |¦  «        ¦  «        }d
|› d	|› d�}d|› d�}d|› d	|› d�}|S )z"returns directory's index as html.z
Index of /z<h1>z</h1>r?   z<li><a href="z">z	</a></li>z<ul>
{}
</ul>ú
z<body>
z
</body>z<head>
<title>z</title>
</head>z<html>
z
</html>)rh  r{  ri  Úas_posixÚhtml_escapeÚiterdirÚsortedrN  rW  r[   Úappendr0  Újoin)rb   r«  Úrelative_path_to_dirÚindex_ofÚh1Ú
index_listÚ	dir_indexÚ_fileÚrel_pathÚquoted_file_urlÚ	file_nameÚulÚbodyÚhead_strÚhtmls                  rW   r¨  z!StaticResource._directory_as_html¿  s—  € à�ŠÑ Ô Ð Ð Ð à'×3Ò3°D´OÑDÔD×MÒMÑOÔOÐØC¥Ð,@Ñ AÔ AÐCÐCˆØ#�HÐ#Ð#Ð#ˆàˆ
Ø×$Ò$Ñ&Ô&ˆ	Ý˜IÑ&Ô&ð 	ð 	ˆEà×(Ò(¨¬Ñ9Ô9×BÒBÑDÔDˆHÝ)¨T¬\Ð*FÐ*F¸HÐ*FÐ*FÑGÔGˆOð �|Š|‰~Œ~ð 'Ø$œzÐ,Ð,Ð,�	�	à!œJ�	à×ÒØT ÐTÐTµ;¸yÑ3IÔ3IÐTÐTÐTñô ð ð ð ×%Ò% d§i¢i°
Ñ&;Ô&;Ñ<Ô<ˆØ-˜"Ð-Ð- Ð-Ð-Ð-ˆà@ XÐ@Ð@Ð@ˆØ5˜(Ð5Ð5 dÐ5Ð5Ð5ˆàˆrV   c                 óZ   — | j         �d| j         z   dz   nd}d|› d| j        › d| j        ›d�S )Nr$  rç   z<StaticResource r&  ú -> rÒ   )r[   rW  ri  ra   s     rW   rÓ   zStaticResource.__repr__ß  sC   € Ø(,¬	Ð(=ˆs�T”Y‰ Ñ$Ð$À2ˆØO $ÐOÐO¨¬ÐOÐO¸4¼?ÐOÐOÐOÐOrV   )"rQ   rR   rS   r�  r   rT   r!   r²   r  r‚   rc   r   rl   ÚstaticmethodÚbytesr  rE   rw   r    r—  r(   r�   rp   r	  r   r2   r  r*   rn  r   r£  r¨  rÓ   rØ   rÙ   s   @rW   r4   r4     sh  ø€ € € € € Ø€Kð  Ø04Ø,Ø Ø %Ø$ð"2ð "2ð "2àð"2ð ð"2ð
 �D‰jð"2ð '¨Ñ-ð"2ð ð"2ð ð"2ð ð"2ð ð"2ð 
ð"2ð "2ð "2ð "2ð "2ð "2ðP '+ð	'ð 'ð 'ð ð'ð ˜t™ð	'ð
 
ð'ð 'ð 'ð 'ðR ð# 5ð #¨Sð #ð #ð #ñ „\ð#ð
˜)ð 
ð 
ð 
ð 
ð-¨ð -°Tð -ð -ð -ð -ðX Wð X°ð Xð Xð Xð Xð$!˜ð !ð !ð !ð !ð+˜( =Ô1ð +ð +ð +ð +ð

 Wð 

°ð 

ð 

ð 

ð 

ð!D¸ð !DÀ.ð !Dð !Dð !Dð !DðF¨4ð °Cð ð ð ð ð@P˜#ð Pð Pð Pð Pð Pð Pð Pð PrV   r4   c                   ó°   ‡ — e Zd Zdeddddfˆ fd„Zdeddfˆ fd„Zdeddfd„Zd	ed
edefd„Zde	fd„Z
dedefd„Zdefd„Zdee         fd„Zdefd„Zˆ xZS )ÚPrefixedSubAppResourcerJ   rL   r6   r\   Nc                 ó‚   •— t          ¦   «                              |¦  «         || _        |                      |¦  «         d S r^   )r¼   rc   Ú_appÚ_add_prefix_to_resources)rb   rJ   rL   r½   s      €rW   rc   zPrefixedSubAppResource.__init__å  s<   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒ	Ø×%Ò% fÑ-Ô-Ð-Ð-Ð-rV   c                 ót   •— t          ¦   «                              |¦  «         |                      |¦  «         d S r^   )r¼   rt   rÉ  )rb   rJ   r½   s     €rW   rt   z!PrefixedSubAppResource.add_prefixê  s5   ø€ Ý‰Œ×Ò˜6Ñ"Ô"Ð"Ø×%Ò% fÑ-Ô-Ð-Ð-Ð-rV   c                 óÊ   — | j         j        }|                     ¦   «         D ]A}|                     |¦  «         |                     |¦  «         |                     |¦  «         ŒBd S r^   )rÈ  ÚrouterÚ	resourcesÚunindex_resourcert   Úindex_resource)rb   rJ   rÌ  r†   s       rW   rÉ  z/PrefixedSubAppResource._add_prefix_to_resourcesî  sr   € Ø”Ô!ˆØ×(Ò(Ñ*Ô*ð 	,ð 	,ˆHð ×#Ò# HÑ-Ô-Ð-Ø×Ò Ñ'Ô'Ð'Ø×!Ò! (Ñ+Ô+Ð+Ð+ð	,ð 	,rV   r¬   rj   c                 ó    — t          d¦  «        ‚)Nz3.url_for() is not supported by sub-application root©rÈ   r¯   s      rW   rl   zPrefixedSubAppResource.url_for÷  s   € ÝÐPÑQÔQÐQrV   c                 ó    — | j         | j        dœS )N)rL   rJ   )rÈ  rW  re   s    rW   rw   zPrefixedSubAppResource.get_infoú  s   € Ø”y¨D¬LÐ9Ð9Ð9rV   rm   c              ƒ   óö   K  — | j         j                             |¦  «        ƒ d {V —†}|                     | j         ¦  «         t	          |j        t          ¦  «        r|j        j        }nt          ¦   «         }||fS r^   )	rÈ  rÌ  rp   rË   rŽ   rP   r%   r›  rö   ©rb   rm   rŸ  Úmethodss       rW   rp   zPrefixedSubAppResource.resolveý  s}   è è € Øœ9Ô+×3Ò3°GÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆ
Ø×Ò˜4œ9Ñ%Ô%Ð%Ý�jÔ/Õ1EÑFÔFð 	Ø Ô/Ô?ˆGˆGå‘e”eˆGØ˜7Ð"Ð"rV   c                 óX   — t          | j        j                             ¦   «         ¦  «        S r^   )r  rÈ  rÌ  rK   re   s    rW   r	  zPrefixedSubAppResource.__len__  s!   € Ý�4”9Ô#×*Ò*Ñ,Ô,Ñ-Ô-Ð-rV   c                 óX   — t          | j        j                             ¦   «         ¦  «        S r^   )r  rÈ  rÌ  rK   re   s    rW   r  zPrefixedSubAppResource.__iter__	  s!   € Ý�D”IÔ$×+Ò+Ñ-Ô-Ñ.Ô.Ð.rV   c                 ó(   — d| j         › d| j        ›d�S )Nz<PrefixedSubAppResource rÂ  rÒ   )rW  rÈ  re   s    rW   rÓ   zPrefixedSubAppResource.__repr__  s   € ØJ¨$¬,ÐJÐJ¸D¼IÐJÐJÐJÐJrV   )rQ   rR   rS   rT   rc   rt   rÉ  r   rl   rE   rw   r(   r�   rp   r  r	  r   r2   r  rÓ   rØ   rÙ   s   @rW   rÆ  rÆ  ä  sl  ø€ € € € € ð.˜sð .¨ð .¸4ð .ð .ð .ð .ð .ð .ð
. ð .¨ð .ð .ð .ð .ð .ð .ð,¨sð ,°tð ,ð ,ð ,ð ,ðR˜Sð R¨Cð R°Cð Rð Rð Rð Rð:˜)ð :ð :ð :ð :ð# Wð #°ð #ð #ð #ð #ð.˜ð .ð .ð .ð .ð/˜( =Ô1ð /ð /ð /ð /ðK˜#ð Kð Kð Kð Kð Kð Kð Kð KrV   rÆ  c                   ó”   — e Zd Zej        dedefd„¦   «         Zej        defd„¦   «         Z	e
ej        defd„¦   «         ¦   «         ZdS )rN   rm   r\   c              ƒ   ó
   K  — dS )z1Return bool if the request satisfies the criteriaNr9   ro   s     rW   r˜   zAbstractRuleMatching.match  rq   rV   c                 ó   — dS rv   r9   re   s    rW   rw   zAbstractRuleMatching.get_info  ri   rV   c                 ó   — dS )zReturn a strNr9   re   s    rW   rh   zAbstractRuleMatching.canonical  ri   rV   N)rQ   rR   rS   r   r€   r(   r‚   r˜   rE   rw   r~   rT   rh   r9   rV   rW   rN   rN     s¯   € € € € € ØÔð@ 7ð @¨tð @ð @ð @ñ Ôð@ð 	ÔðJ˜)ð Jð Jð Jñ ÔðJð ØÔð˜3ð ð ð ñ Ôñ „Xðð ð rV   rN   c                   ó    ‡ — e Zd Z ej        d¦  «        Zdeddfˆ fd„Zedefd„¦   «         Z	dedefd„Z
dedefd	„Zd
edefd„Zdefd„Zˆ xZS )ÚDomainz(?!-)[a-z\d-]{1,63}(?<!-)rM   r\   Nc                 ó|   •— t          ¦   «                              ¦   «          |                      |¦  «        | _        d S r^   )r¼   rc   Ú
validationÚ_domain)rb   rM   r½   s     €rW   rc   zDomain.__init__"  s0   ø€ Ý‰Œ×ÒÑÔÐØ—’ vÑ.Ô.ˆŒˆˆrV   c                 ó   — | j         S r^   ©rá  re   s    rW   rh   zDomain.canonical&  r¦   rV   c                 óâ  ‡ — t          |t          ¦  «        st          d¦  «        ‚|                     d¦  «                             ¦   «         }|st          d¦  «        ‚d|v rt          d¦  «        ‚t          d|z   ¦  «        }|j        €J ‚t          ˆ fd„|j         	                    d¦  «        D ¦   «         ¦  «        st          d¦  «        ‚|j
        d	k    r|j        S |j        › d
|j
        › �S )NzDomain must be strr:   zDomain cannot be emptyz://zScheme not supportedzhttp://c              3   óL   •K  — | ]}‰j                              |¦  «        V — Œd S r^   )Úre_partr/  )rD  Úxrb   s     €rW   ú	<genexpr>z$Domain.validation.<locals>.<genexpr>4  s3   øè è € ÐNÐN°�4”<×)Ò)¨!Ñ,Ô,ÐNÐNÐNÐNÐNÐNrV   zDomain not validéP   ú:)rŽ   rT   Ú	TypeErrorÚrstriprí   r™   r   Úraw_hostÚallr-  Úport)rb   rM   rR  s   `  rW   rà  zDomain.validation*  sÿ   ø€ Ý˜&¥#Ñ&Ô&ð 	2ÝÐ0Ñ1Ô1Ð1Ø—’˜sÑ#Ô#×)Ò)Ñ+Ô+ˆØð 	5ÝÐ5Ñ6Ô6Ð6Ø�fˆ_ˆ_ÝÐ3Ñ4Ô4Ð4Ý�)˜fÑ$Ñ%Ô%ˆØŒ|Ð'Ð'Ð'ÝÐNÐNÐNÐN°c´l×6HÒ6HÈÑ6MÔ6MÐNÑNÔNÑNÔNð 	1ÝÐ/Ñ0Ô0Ð0ØŒ8�rŠ>ˆ>Ø”<ÐØ”,Ð+Ð+ ¤Ð+Ð+Ð+rV   rm   c              ƒ   ó€   K  — |j                              t          j        ¦  «        }|sdS |                      |¦  «        S r»   )ré   rê   r   ÚHOSTÚmatch_domain)rb   rm   Úhosts      rW   r˜   zDomain.match:  s>   è è € ØŒ×"Ò"¥4¤9Ñ-Ô-ˆØð 	Ø�5Ø× Ò  Ñ&Ô&Ð&rV   ró  c                 óˆ   — |                      ¦   «         }|| j        k    p#|                     d¦  «        d         | j        k    S )Nrê  r   )rí   rá  Ú	partition)rb   ró  s     rW   rò  zDomain.match_domain@  s9   € Ø�zŠz‰|Œ|ˆà�t”|Ò#ÐM t§~¢~°cÑ':Ô':¸1Ô'=ÀÄÒ'MÐMrV   c                 ó   — d| j         iS )NrM   rã  re   s    rW   rw   zDomain.get_infoE  s   € Ø˜$œ,Ð'Ð'rV   )rQ   rR   rS   r6  r8  ræ  rT   rc   r~   rh   rà  r(   r‚   r˜   rò  rE   rw   rØ   rÙ   s   @rW   rÞ  rÞ    s  ø€ € € € € ØˆbŒjÐ5Ñ6Ô6€Gð/˜sð / tð /ð /ð /ð /ð /ð /ð ð˜3ð ð ð ñ „Xðð, ð ,¨ð ,ð ,ð ,ð ,ð ' 7ð '¨tð 'ð 'ð 'ð 'ðN ð N¨ð Nð Nð Nð Nð
(˜)ð (ð (ð (ð (ð (ð (ð (ð (rV   rÞ  c                   ót   ‡ — e Zd Z ej        d¦  «        Zdeddfˆ fd„Zedefd„¦   «         Z	dede
fd„Zˆ xZS )	Ú
MaskDomainz(?!-)[a-z\d\*-]{1,63}(?<!-)rM   r\   Nc                 ój  •— t          ¦   «                              |¦  «         | j                             dd¦  «                             dd¦  «        dz   | _        | j                             d¦  «        \  }}| _        t          j        t          j
        |¦  «        t          j        ¦  «        | _        d S )Nr:   z\.Ú*z[^:]*z(:.*)?rê  )r¼   rc   rá  rw  r:  rõ  Ú_portr6  r8  ÚfnmatchÚ	translateÚIÚ_mask)rb   rM   Ú	host_maskÚ_r½   s       €rW   rc   zMaskDomain.__init__L  s�   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àŒL× Ò   eÑ,Ô,×4Ò4°S¸'ÑBÔBÀXÑMð 	Œð $(¤<×#9Ò#9¸#Ñ#>Ô#>Ñ ˆ	�1�d”jÝ”Z¥Ô 1°)Ñ <Ô <½b¼dÑCÔCˆŒ
ˆ
ˆ
rV   c                 ó   — | j         S r^   )r:  re   s    rW   rh   zMaskDomain.canonicalT  r¨   rV   ró  c                 ó”   — |                      d¦  «        \  }}}| j        r|| j        k    rdS | j                             |¦  «        d uS )Nrê  F)rõ  rû  rÿ  r˜   )rb   ró  Úhostnamer  rï  s        rW   rò  zMaskDomain.match_domainX  sP   € Ø ŸNšN¨3Ñ/Ô/Ñˆ�!�TØŒ:ð 	˜$ $¤*Ò,Ð,Ø�5ØŒz×Ò Ñ)Ô)°Ð5Ð5rV   )rQ   rR   rS   r6  r8  ræ  rT   rc   r~   rh   r‚   rò  rØ   rÙ   s   @rW   rø  rø  I  s®   ø€ € € € € ØˆbŒjÐ7Ñ8Ô8€GðD˜sð D tð Dð Dð Dð Dð Dð Dð ð˜3ð ð ð ñ „Xðð6 ð 6¨ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6rV   rø  c                   óf   — e Zd Zdeddddfd„Zedefd„¦   «         Zdefd„Z	d	e
defd
„Zdefd„ZdS )ÚMatchedSubAppResourcerO   rL   r6   r\   Nc                 ód   — t                                | ¦  «         d| _        || _        || _        d S )Nrç   )r.   rc   rW  rÈ  Ú_rule)rb   rO   rL   s      rW   rc   zMatchedSubAppResource.__init__`  s/   € Ý×!Ò! $Ñ'Ô'Ð'ØˆŒØˆŒ	ØˆŒ
ˆ
ˆ
rV   c                 ó   — | j         j        S r^   )r  rh   re   s    rW   rh   zMatchedSubAppResource.canonicalf  s   € àŒzÔ#Ð#rV   c                 ó    — | j         | j        dœS )N)rL   rO   )rÈ  r  re   s    rW   rw   zMatchedSubAppResource.get_infoj  s   € Ø”y¨$¬*Ð5Ð5Ð5rV   rm   c              ƒ   óV  K  — | j                              |¦  «        ƒ d {V —†sd t          ¦   «         fS | j        j                             |¦  «        ƒ d {V —†}|                     | j        ¦  «         t          |j        t          ¦  «        r|j        j
        }nt          ¦   «         }||fS r^   )r  r˜   rö   rÈ  rÌ  rp   rË   rŽ   rP   r%   r›  rÔ  s       rW   rp   zMatchedSubAppResource.resolvem  sµ   è è € Ø”Z×%Ò% gÑ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ð 	Ø�™œ�;ÐØœ9Ô+×3Ò3°GÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆ
Ø×Ò˜4œ9Ñ%Ô%Ð%Ý�jÔ/Õ1EÑFÔFð 	Ø Ô/Ô?ˆGˆGå‘e”eˆGØ˜7Ð"Ð"rV   c                 ó   — d| j         ›d�S )Nz<MatchedSubAppResource -> rÒ   )rÈ  re   s    rW   rÓ   zMatchedSubAppResource.__repr__x  s   € Ø:¨D¬IÐ:Ð:Ð:Ð:rV   )rQ   rR   rS   rN   rc   r~   rT   rh   rE   rw   r(   r�   rp   rÓ   r9   rV   rW   r  r  _  s½   € € € € € ðÐ1ð ¸ð È$ð ð ð ð ð ð$˜3ð $ð $ð $ñ „Xð$ð6˜)ð 6ð 6ð 6ð 6ð	# Wð 	#°ð 	#ð 	#ð 	#ð 	#ð;˜#ð ;ð ;ð ;ð ;ð ;ð ;rV   r  c                   ó¤   ‡ — e Zd ZdZddœdedeee         z  dede	dz  ddf
ˆ fd	„Z
defd
„Zededz  fd„¦   «         Zdededefd„Zdefd„Zˆ xZS )r3   zA route with resourceNrø   r‡   rˆ   r†   r…   r\   c                óR   •— t          ¦   «                              ||||¬¦  «         d S )Nr„   )r¼   rc   )rb   r‡   rˆ   r†   r…   r½   s        €rW   rc   zResourceRoute.__init__  s9   ø€ õ 	‰Œ×ÒØ�G¨NÀXð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rV   c                 ó6   — d| j         › d| j        › d| j        ›�S )Nz<ResourceRoute [z] rÂ  )r‡   r¤   rˆ   re   s    rW   rÓ   zResourceRoute.__repr__‹  s&   € ØU $¤+ÐUÐU°´ÐUÐUÀTÄ\ÐUÐUÐUrV   c                 ó,   — | j         €d S | j         j        S r^   )r¤   r[   re   s    rW   r[   zResourceRoute.nameŽ  s   € àŒ>Ð!Ø�4ØŒ~Ô"Ð"rV   r¬   rj   c                 ó8   — | j         €J ‚ | j         j        |i |¤ŽS )r®   )r¤   rl   r¯   s      rW   rl   zResourceRoute.url_for”  s*   € àŒ~Ð)Ð)Ð)Ø%ˆtŒ~Ô% tÐ6¨vÐ6Ð6Ð6rV   c                 óF   — | j         €J ‚| j                              ¦   «         S r^   )r¤   rw   re   s    rW   rw   zResourceRoute.get_info™  s$   € ØŒ~Ð)Ð)Ð)ØŒ~×&Ò&Ñ(Ô(Ð(rV   )rQ   rR   rS   Ú__doc__rT   r    rŸ   r   r.   r²   rc   rÓ   r~   r[   r   rl   rE   rw   rØ   rÙ   s   @rW   r3   r3   |  s   ø€ € € € € ØÐð 15ð

ð 

ð 

àð

ð ˜4 Ô-Ñ-ð

ð #ð	

ð '¨Ñ-ð

ð 
ð

ð 

ð 

ð 

ð 

ð 

ðV˜#ð Vð Vð Vð Vð ð#�c˜D‘jð #ð #ð #ñ „Xð#ð
7˜Sð 7¨Cð 7°Cð 7ð 7ð 7ð 7ð
)˜)ð )ð )ð )ð )ð )ð )ð )ð )rV   r3   c                   ó¾   ‡ — e Zd Zdeddfˆ fd„Zdededefd„Zededz  fd„¦   «         Z	de
fd	„Zd
edefd„Zedefd„¦   «         Zedefd„¦   «         Zdefd„Zˆ xZS )rß   rP   r\   Nc                 óx   •— t          ¦   «                              t          j        | j        ¦  «         || _        d S r^   )r¼   rc   r   rþ   rn  Ú_http_exceptionrà   s     €rW   rc   zSystemRoute.__init__Ÿ  s/   ø€ Ý‰Œ×Ò�œ¨¬Ñ5Ô5Ð5Ø-ˆÔÐÐrV   r¬   rj   c                 ó    — t          d¦  «        ‚)Nz).url_for() is not allowed for SystemRouterÑ  r¯   s      rW   rl   zSystemRoute.url_for£  s   € ÝÐFÑGÔGÐGrV   c                 ó   — d S r^   r9   re   s    rW   r[   zSystemRoute.name¦  rÂ   rV   c                 ó   — d| j         iS )NrP   ©r  re   s    rW   rw   zSystemRoute.get_infoª  s   € Ø  $Ô"6Ð7Ð7rV   rm   c              ƒ   ó   K  — | j         ‚r^   r  ro   s     rW   rn  zSystemRoute._handle­  s   è è € ØÔ"Ð"rV   c                 ó   — | j         j        S r^   )r  rä   re   s    rW   rä   zSystemRoute.status°  ó   € àÔ#Ô*Ð*rV   c                 ó   — | j         j        S r^   )r  rå   re   s    rW   rå   zSystemRoute.reason´  r  rV   c                 ó(   — d| j         › d| j        › d�S )Nz<SystemRoute rÑ   rÒ   )rä   rå   re   s    rW   rÓ   zSystemRoute.__repr__¸  s   € Ø<˜tœ{Ð<Ð<¨d¬kÐ<Ð<Ð<Ð<rV   )rQ   rR   rS   r"   rc   rT   r   rl   r~   r[   rE   rw   r(   r*   rn  r  rä   rå   rÓ   rØ   rÙ   s   @rW   rß   rß   ž  sL  ø€ € € € € ð. }ð .¸ð .ð .ð .ð .ð .ð .ðH˜Sð H¨Cð H°Cð Hð Hð Hð Hð ð�c˜D‘jð ð ð ñ „Xðð8˜)ð 8ð 8ð 8ð 8ð# Wð #°ð #ð #ð #ð #ð ð+˜ð +ð +ð +ñ „Xð+ð ð+˜ð +ð +ð +ñ „Xð+ð=˜#ð =ð =ð =ð =ð =ð =ð =ð =rV   rß   c                   óD   — e Zd Zdefd„Zdeddef         fd„Zdefd„ZdS )r5   r\   c              ƒ   ó6  K  — | j         j        t          j        vr|                      ¦   «          t          | | j         j                             ¦   «         d ¦  «        }|€|                      ¦   «           |¦   «         ƒ d {V —†}t          |t          ¦  «        sJ ‚|S r^   )	rm   r‡   r   ÚMETH_ALLÚ_raise_allowed_methodsÚgetattrrí   rŽ   r*   )rb   r‡   Úrets      rW   Ú_iterz
View._iter½  s•   è è € ØŒ<Ô¥d¤mÐ3Ð3Ø×'Ò'Ñ)Ô)Ð)å˜˜tœ|Ô2×8Ò8Ñ:Ô:¸DÑAÔAˆØˆ>Ø×'Ò'Ñ)Ô)Ð)Ø�F‘H”HˆnˆnˆnˆnˆnˆnˆÝ˜#�~Ñ.Ô.Ð.Ð.Ð.Øˆ
rV   Nc                 óN   — |                       ¦   «                              ¦   «         S r^   )r&  Ú	__await__re   s    rW   r(  zView.__await__È  s   € Ø�zŠz‰|Œ|×%Ò%Ñ'Ô'Ð'rV   c                 óh   ‡ — ˆ fd„t           j        D ¦   «         }t          ‰ j        j        |¦  «        ‚)Nc                 óX   •— h | ]&}t          ‰|                     ¦   «         ¦  «        ¯$|’Œ'S r9   )Úhasattrrí   )rD  r’  rb   s     €rW   ú	<setcomp>z.View._raise_allowed_methods.<locals>.<setcomp>Ì  s0   ø€ ÐPÐPÐP µw¸tÀQÇWÂWÁYÄYÑ7OÔ7OÐP˜1ÐPÐPÐPrV   )r   r"  r%   rm   r‡   )rb   r›  s   ` rW   r#  zView._raise_allowed_methodsË  s3   ø€ ØPÐPÐPÐP¥d¤mÐPÑPÔPˆÝ" 4¤<Ô#6¸ÑHÔHÐHrV   )	rQ   rR   rS   r*   r&  r   r(  r   r#  r9   rV   rW   r5   r5   ¼  sx   € € € € € ð	˜^ð 	ð 	ð 	ð 	ð(˜9 T¨4°Ð%?Ô@ð (ð (ð (ð (ðI¨ð Ið Ið Ið Ið Ið IrV   r5   c                   ó^   — e Zd Zdee         ddfd„Zdefd„Zdee         fd„Z	de
defd„ZdS )	ÚResourcesViewrÍ  r\   Nc                 ó   — || _         d S r^   ©Ú
_resources)rb   rÍ  s     rW   rc   zResourcesView.__init__Ñ  s   € Ø#ˆŒˆˆrV   c                 ó*   — t          | j        ¦  «        S r^   )r  r1  re   s    rW   r	  zResourcesView.__len__Ô  s   € Ý�4”?Ñ#Ô#Ð#rV   c              #   ó$   K  — | j         E d {V —† d S r^   r0  re   s    rW   r  zResourcesView.__iter__×  s&   è è € Ø”?Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"rV   r†   c                 ó   — || j         v S r^   r0  ©rb   r†   s     rW   Ú__contains__zResourcesView.__contains__Ú  s   € Ø˜4œ?Ð*Ð*rV   )rQ   rR   rS   Úlistr.   rc   r  r	  r   r  Úobjectr‚   r6  r9   rV   rW   r.  r.  Ð  sš   € € € € € ð$ $Ð'7Ô"8ð $¸Tð $ð $ð $ð $ð$˜ð $ð $ð $ð $ð#˜(Ð#3Ô4ð #ð #ð #ð #ð+ Vð +°ð +ð +ð +ð +ð +ð +rV   r.  c                   óZ   — e Zd Zdee         fd„Zdefd„Zdee	         fd„Z
dedefd„ZdS )	Ú
RoutesViewrÍ  c                 ó\   — g | _         |D ]!}|D ]}| j                              |¦  «         ŒŒ"d S r^   )rô   r²  )rb   rÍ  r†   r¹   s       rW   rc   zRoutesView.__init__ß  sO   € Ø,.ˆŒØ!ð 	+ð 	+ˆHØ!ð +ð +�Ø”×#Ò# EÑ*Ô*Ð*Ð*ð+ð	+ð 	+rV   r\   c                 ó*   — t          | j        ¦  «        S r^   r  re   s    rW   r	  zRoutesView.__len__å  r
  rV   c              #   ó$   K  — | j         E d {V —† d S r^   ©rô   re   s    rW   r  zRoutesView.__iter__è  s&   è è € Ø”<ÐÐÐÐÐÐÐÐÐrV   r¹   c                 ó   — || j         v S r^   r>  r   s     rW   r6  zRoutesView.__contains__ë  s   € Ø˜œÐ$Ð$rV   N)rQ   rR   rS   r7  r.   rc   r  r	  r   r2   r  r8  r‚   r6  r9   rV   rW   r:  r:  Þ  s’   € € € € € ð+ $Ð'7Ô"8ð +ð +ð +ð +ð!˜ð !ð !ð !ð !ð ˜( =Ô1ð  ð  ð  ð  ð% &ð %¨Tð %ð %ð %ð %ð %ð %rV   r:  c                   óÌ  ‡ — e Zd Z ej        d¦  «        Zd3ˆ fd„Zdedefd„Z	de
e         fd„Zdefd„Zd	edefd
„Zdedefd„Zdefd„Zdefd„Zdeeef         fd„Zd	eddfd„Zd	edefd„Zd	eddfd„Zd	eddfd„Zddœdededz  defd„Zdddœdedede e!e"         z  dedz  de#dz  de$fd„Z%dde&ddddœdede'dedz  de#dz  ded ed!ed"edefd#„Z(dede d$e)de$fd%„Z*dede d$e)de$fd&„Z+dd'd(œdede dedz  d)ed$e)de$fd*„Z,dede d$e)de$fd+„Z-dede d$e)de$fd,„Z.dede d$e)de$fd-„Z/dede d$e)de$fd.„Z0dede!e"         d$e)de$fd/„Z1d3ˆ fd0„Z2d1e3e4         de5e$         fd2„Z6ˆ xZ7S )4r,   z[.:-]r\   Nc                 ó€   •— t          ¦   «                              ¦   «          g | _        i | _        i | _        g | _        d S r^   )r¼   rc   r1  Ú_named_resourcesÚ_resource_indexÚ_matched_sub_app_resourcesrÔ   s    €rW   rc   zUrlDispatcher.__init__ó  s>   ø€ Ý‰Œ×ÒÑÔÐØ24ˆŒØ=?ˆÔØBDˆÔØGIˆÔ'Ð'Ð'rV   rm   c              ƒ   ó   K  — | j         }t          ¦   «         }| j        D ]+}|                     |¦  «        ƒ d {V —†\  }}|�|c S ||z  }Œ,|j        j        }|rh|                     |d¦  «        D ]+}|                     |¦  «        ƒ d {V —†\  }}|�|c S ||z  }Œ,|dk    rn|                     d¦  «        d         pd}|°h|r"t          t          |j
        |¦  «        ¦  «        S t          t          ¦   «         ¦  «        S )Nr9   r?   r   )rC  rö   rD  rp   r  r  rê   Ú
rpartitionrÛ   r%   r‡   r&   )	rb   rm   Úresource_indexr›  r†   r¸   ÚallowedÚurl_partÚ	candidates	            rW   rp   zUrlDispatcher.resolveú  sY  è è € ØÔ-ˆÝ$'¡E¤Eˆð Ô7ð 	+ð 	+ˆHØ(0×(8Ò(8¸Ñ(AÔ(AÐ"AÐ"AÐ"AÐ"AÐ"AÐ"AÑˆJ˜ØÐ%Ø!Ð!Ð!Ð!à 7Ñ*��ð ”?Ô,ˆØð 		:Ø+×/Ò/°¸"Ñ=Ô=ð /ð /�	Ø,5×,=Ò,=¸gÑ,FÔ,FÐ&FÐ&FÐ&FÐ&FÐ&FÐ&FÑ#�
˜GØÐ)Ø%Ð%Ð%Ð%à# wÑ.�O�OØ˜3ŠˆØØ×*Ò*¨3Ñ/Ô/°Ô2Ð9°cˆHð ð 		:ð ð 	YÝ!Õ"6°w´~ÀÑ"WÔ"WÑXÔXÐXå�l™nœnÑ-Ô-Ð-rV   c                 ó*   — t          | j        ¦  «        S r^   )r  rB  re   s    rW   r  zUrlDispatcher.__iter__#  s   € Ý�DÔ)Ñ*Ô*Ð*rV   c                 ó*   — t          | j        ¦  «        S r^   )r  rB  re   s    rW   r	  zUrlDispatcher.__len__&  s   € Ý�4Ô(Ñ)Ô)Ð)rV   r†   c                 ó   — || j         v S r^   ©rB  r5  s     rW   r6  zUrlDispatcher.__contains__)  s   € Ø˜4Ô0Ð0Ð0rV   r[   c                 ó   — | j         |         S r^   rN  ra   s     rW   Ú__getitem__zUrlDispatcher.__getitem__,  s   € ØÔ$ TÔ*Ð*rV   c                 ó*   — t          | j        ¦  «        S r^   )r.  r1  re   s    rW   rÍ  zUrlDispatcher.resources/  s   € Ý˜Tœ_Ñ-Ô-Ð-rV   c                 ó*   — t          | j        ¦  «        S r^   )r:  r1  re   s    rW   rK   zUrlDispatcher.routes2  s   € Ý˜$œ/Ñ*Ô*Ð*rV   c                 ó*   — t          | j        ¦  «        S r^   )r   rB  re   s    rW   Únamed_resourceszUrlDispatcher.named_resources5  s   € Ý Ô 5Ñ6Ô6Ð6rV   c                 óˆ  — t          |t          ¦  «        sJ d|›�¦   «         ‚| j        rt          d¦  «        ‚|j        }|� | j                             |¦  «        }|D ]P}t          j        |¦  «        rt          d|›d�¦  «        ‚| 
                    ¦   «         st          d|›d�¦  «        ‚ŒQ|| j        v r t          d|›d| j        |         ›�¦  «        ‚|| j        |<   | j                             |¦  «         t          |t          ¦  «        r| j                             |¦  «         d S |                      |¦  «         d S )Nz4Instance of AbstractResource class is required, got z.Cannot register a resource into frozen router.zIncorrect route name z/, python keywords cannot be used for route namezV, the name should be a sequence of python identifiers separated by dash, dot or columnz
Duplicate z, already handled by )rŽ   r.   ÚfrozenrÈ   r[   ÚNAME_SPLIT_REr-  ÚkeywordÚ	iskeywordr™   ÚisidentifierrB  r1  r²  r  rD  rÏ  )rb   r†   r[   rK  r<  s        rW   Úregister_resourcezUrlDispatcher.register_resource8  sÅ  € ÝØÕ&ñ
ô 
ð 	Oð 	OàNÀ(ÐNÐNñ	Oô 	Oð 
ð Œ;ð 	QÝÐOÑPÔPÐPàŒ}ˆàÐØÔ&×,Ò,¨TÑ2Ô2ˆEØð ð �ÝÔ$ TÑ*Ô*ð Ý$ð)°ð )ð )ð )ñô ð ð
 ×(Ò(Ñ*Ô*ð Ý$ð1°ð 1ð 1ð 1ñô ð ðð �tÔ,Ð,Ð,Ý ðJ ð Jð JØ*.Ô*?ÀÔ*EðJð Jñô ð ð +3ˆDÔ! $Ñ'ØŒ×Ò˜xÑ(Ô(Ð(å�hÕ 5Ñ6Ô6ð 	*àÔ+×2Ò2°8Ñ<Ô<Ð<Ð<Ð<à×Ò Ñ)Ô)Ð)Ð)Ð)rV   c                 ó®   — d|j         x}v r4|                     d¦  «        d                              d¦  «        d         }|                     d¦  «        pdS )z9Return a key to index the resource in the resource index.r*  r   r?   )rh   rõ  rF  rì  )rb   r†   Ú	index_keys      rW   Ú_get_resource_index_keyz%UrlDispatcher._get_resource_index_key_  s[   € à Ô 2Ð2�9Ð3Ð3ð "×+Ò+¨CÑ0Ô0°Ô3×>Ò>¸sÑCÔCÀAÔFˆIØ×Ò Ñ$Ô$Ð+¨Ð+rV   c                 óŒ   — |                       |¦  «        }| j                             |g ¦  «                             |¦  «         dS )z%Add a resource to the resource index.N)r^  rC  Ú
setdefaultr²  ©rb   r†   Úresource_keys      rW   rÏ  zUrlDispatcher.index_resourcej  sD   € à×3Ò3°HÑ=Ô=ˆð 	Ô×'Ò'¨°bÑ9Ô9×@Ò@ÀÑJÔJÐJÐJÐJrV   c                 óp   — |                       |¦  «        }| j        |                              |¦  «         dS )z*Remove a resource from the resource index.N)r^  rC  Úremovera  s      rW   rÎ  zUrlDispatcher.unindex_resourcer  s7   € à×3Ò3°HÑ=Ô=ˆØÔ˜\Ô*×1Ò1°(Ñ;Ô;Ð;Ð;Ð;rV   rZ   rF   c                óÄ  — |r$|                      d¦  «        st          d¦  «        ‚| j        rB| j        d         }|j        |k    r*|                     |¦  «        rt          t          |¦  «        S d|v sFd|v sBt                               |¦  «        s(t          ||¬¦  «        }|  
                    |¦  «         |S t          ||¬¦  «        }|  
                    |¦  «         |S )Nr?   z)path should be started with / or be emptyéÿÿÿÿr*  r+  rZ   )r  r™   r1  r[   r|   r   r/   r>   Úsearchr0   r[  r1   )rb   rF   r[   r†   s       rW   Úadd_resourcezUrlDispatcher.add_resourcew  së   € Øð 	J˜Ÿš¨Ñ,Ô,ð 	JÝÐHÑIÔIÐIàŒ?ð 	0Ø” rÔ*ˆHØŒ} Ò$Ð$¨×);Ò);¸DÑ)AÔ)AÐ$Ý�H hÑ/Ô/Ð/Ø�t��˜s d˜{˜{­h¯oªo¸dÑ.CÔ.C˜{Ý$ T°Ð5Ñ5Ô5ˆHØ×"Ò" 8Ñ,Ô,Ð,ØˆOÝ" 4¨dÐ3Ñ3Ô3ˆØ×Ò˜xÑ(Ô(Ð(ØˆrV   )r[   r…   r‡   rˆ   r…   c                ó`   — |                       ||¬¦  «        }|                     |||¬¦  «        S )NrZ   rø   )rh  rü   )rb   r‡   rF   rˆ   r[   r…   r†   s          rW   rü   zUrlDispatcher.add_route‡  s7   € ð ×$Ò$ T°Ð$Ñ5Ô5ˆØ×!Ò! &¨'À.Ð!ÑQÔQÐQrV   Fr]  rJ   r^  r_  r`  ra  c          
      óÊ   — |                      d¦  «        sJ ‚|                     d¦  «        r
|dd…         }t          ||||||||¬¦  «        }	|                      |	¦  «         |	S )z^Add static files view.

        prefix - url prefix
        path - folder with files

        r?   Nrf  r]  )r  r  r4   r[  )
rb   rJ   rF   r[   r…   r^  r_  r`  ra  r†   s
             rW   Ú
add_staticzUrlDispatcher.add_static“  s†   € ð$ × Ò  Ñ%Ô%Ð%Ð%Ð%Ø�?Š?˜3ÑÔð 	!Ø˜C˜R˜C”[ˆFÝ!ØØØØ)Ø!Ø!Ø+Ø)ð	
ñ 	
ô 	
ˆð 	×Ò˜xÑ(Ô(Ð(ØˆrV   rj   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z(Shortcut for add_route with method HEAD.)rü   r   Ú	METH_HEAD©rb   rF   rˆ   rj   s       rW   Úadd_headzUrlDispatcher.add_headµ  ó"   € àˆtŒ~�dœn¨d°GÐFÐF¸vÐFÐFÐFrV   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z+Shortcut for add_route with method OPTIONS.)rü   r   ÚMETH_OPTIONSrn  s       rW   Úadd_optionszUrlDispatcher.add_options¹  s#   € àˆtŒ~�dÔ/°°wÐIÐIÀ&ÐIÐIÐIrV   T)r[   Ú
allow_headrt  c                ó˜   — |                       ||¬¦  «        }|r |j        t          j        |fi |¤Ž  |j        t          j        |fi |¤ŽS )zœShortcut for add_route with method GET.

        If allow_head is true, another
        route is added allowing head requests to the same endpoint.
        rZ   )rh  rü   r   rm  ÚMETH_GET)rb   rF   rˆ   r[   rt  rj   r†   s          rW   Úadd_getzUrlDispatcher.add_get½  sc   € ð ×$Ò$ T°Ð$Ñ5Ô5ˆØð 	BØˆHÔ�tœ~¨wÐAÐA¸&ÐAÐAÐAØ!ˆxÔ!¥$¤-°ÐCÐC¸FÐCÐCÐCrV   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z(Shortcut for add_route with method POST.)rü   r   Ú	METH_POSTrn  s       rW   Úadd_postzUrlDispatcher.add_postÐ  rp  rV   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z'Shortcut for add_route with method PUT.)rü   r   ÚMETH_PUTrn  s       rW   Úadd_putzUrlDispatcher.add_putÔ  s"   € àˆtŒ~�dœm¨T°7ÐEÐE¸fÐEÐEÐErV   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z)Shortcut for add_route with method PATCH.)rü   r   Ú
METH_PATCHrn  s       rW   Ú	add_patchzUrlDispatcher.add_patchØ  s"   € àˆtŒ~�dœo¨t°WÐGÐGÀÐGÐGÐGrV   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z*Shortcut for add_route with method DELETE.)rü   r   ÚMETH_DELETErn  s       rW   Ú
add_deletezUrlDispatcher.add_deleteÜ  s#   € àˆtŒ~�dÔ.°°gÐHÐHÀÐHÐHÐHrV   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z?Shortcut for add_route with ANY methods for a class-based view.)rü   r   rþ   rn  s       rW   Úadd_viewzUrlDispatcher.add_viewà  s$   € ð ˆtŒ~�dœm¨T°7ÐEÐE¸fÐEÐEÐErV   c                 ó„   •— t          ¦   «                              ¦   «          | j        D ]}|                     ¦   «          Œd S r^   )r¼   ry   r1  )rb   r†   r½   s     €rW   ry   zUrlDispatcher.freezeæ  sE   ø€ Ý‰Œ�ŠÑÔÐØœð 	ð 	ˆHØ�OŠOÑÔÐÐð	ð 	rV   rK   c                 ód   — g }|D ]*}|                      |                     | ¦  «        ¦  «         Œ+|S )z¢Append routes to route table.

        Parameter should be a sequence of RouteDef objects.

        Returns a list of registered AbstractRoute instances.
        )ÚextendÚregister)rb   rK   Úregistered_routesÚ	route_defs       rW   Ú
add_routeszUrlDispatcher.add_routesë  sD   € ð ÐØð 	?ð 	?ˆIØ×$Ò$ Y×%7Ò%7¸Ñ%=Ô%=Ñ>Ô>Ð>Ð>Ø Ð rV   r}   )8rQ   rR   rS   r6  r8  rW  rc   r(   r-   rp   r   rT   r  r  r	  r8  r‚   r6  r.   rP  r.  rÍ  r:  rK   r	   rT  r[  r^  rÏ  rÎ  r/   rh  r    rŸ   r   r²   r2   rü   r   r!   rk  r   ro  rs  rw  rz  r}  r€  rƒ  r…  ry   r   r+   r7  rŒ  rØ   rÙ   s   @rW   r,   r,   ï  s‚  ø€ € € € € à�B”J˜xÑ(Ô(€MðJð Jð Jð Jð Jð Jð'. Wð '.Ð1Dð '.ð '.ð '.ð '.ðR+˜( 3œ-ð +ð +ð +ð +ð*˜ð *ð *ð *ð *ð1 Vð 1°ð 1ð 1ð 1ð 1ð+ ð +Ð(8ð +ð +ð +ð +ð.˜=ð .ð .ð .ð .ð+˜
ð +ð +ð +ð +ð7 ¨Ð.>Ð)>Ô!?ð 7ð 7ð 7ð 7ð%*Ð*:ð %*¸tð %*ð %*ð %*ð %*ðN	,Ð0@ð 	,ÀSð 	,ð 	,ð 	,ð 	,ðKÐ'7ð K¸Dð Kð Kð Kð Kð<Ð)9ð <¸dð <ð <ð <ð <ð
 =Að ð ð  ð ¨s°T©zð ÀXð ð ð ð ð,  Ø04ð
Rð 
Rð 
Ràð
Rð ð
Rð ˜4 Ô-Ñ-ð	
Rð �D‰jð
Rð '¨Ñ-ð
Rð 
ð
Rð 
Rð 
Rð 
Rð"  Ø04Ø,Ø Ø %Ø$ð ð  ð  àð ð ð ð
 �D‰jð ð '¨Ñ-ð ð ð ð ð ð ð ð ð ð 
ð ð  ð  ð  ðDG˜Sð G¨7ð G¸cð GÀmð Gð Gð Gð GðJ ð J¨gð JÀð JÈð Jð Jð Jð Jð  ØðDð Dð DàðDð ðDð
 �D‰jðDð ðDð ðDð 
ðDð Dð Dð Dð&G˜Sð G¨7ð G¸cð GÀmð Gð Gð Gð GðF˜Cð F¨'ð F¸Sð FÀ]ð Fð Fð Fð FðH˜cð H¨Gð H¸sð HÀ}ð Hð Hð Hð HðI˜sð I¨Wð IÀð IÈð Ið Ið Ið IðFØðFØ"& |Ô"4ðFØ@CðFà	ðFð Fð Fð Fðð ð ð ð ð ð

! Ð*:Ô!;ð 
!ÀÀ]Ô@Sð 
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!rV   r,   rF  c                 óz   — t           dk     r|                      dd¦  «        } t          j        | d¬¦  «        j        S )Nrq  rs  rt  Fr   )r<   rw  r   r"  Úraw_path©rF  s    rW   rN  rN  ø  s8   € Ý�fÒÐØ—’˜c 5Ñ)Ô)ˆÝŒ9˜%¨Ð/Ñ/Ô/Ô8Ð8rV   c                 ób   — d| vr| S |                       dd¦  «                              dd¦  «        S )Nrs  z%2Fr?   rt  )rw  r�  s    rW   rC  rC  þ  s6   € Ø
�%ÐÐØˆØ�=Š=˜ Ñ$Ô$×,Ò,¨U°CÑ8Ô8Ð8rV   c                 óX   — t          | ¦  «        }d| v r|                     dd¦  «        }|S )Nrs  rt  )rN  rw  )rF  r�   s     rW   r5  r5    s2   € õ ˜ÑÔ€FØ
ˆe€|€|Ø—’  sÑ+Ô+ˆØ€MrV   ){r   rŒ   rŽ  rü  Ú	functoolsr‹  rÀ  r“   rX  ry  Úplatformr6  r•   rœ   Úcollections.abcr   r   r   r   r   r   r	   r
   r   Úpathlibr   r   Útypesr   Útypingr   r   r   r   r   r   r   Úyarlr   r   Úyarl_versionrç   r   r   r   r   Úhelpersr   r   Úhttpr   Útypedefsr    r!   Úweb_exceptionsr"   r#   r$   r%   r&   Úweb_fileresponser'   Úweb_requestr(   Úweb_responser)   r*   Úweb_routedefr+   Ú__all__Úweb_appr6   rÖ   rT   ÚBaseDictr–   rÈ   r§  rÅ   Úmapr  r-  r<   rU   r8  r=   r>   r7  r@   ÚsystemrB   r‚   r²   rö   r�   Úpartialr¯  rE   r.   ÚABCr2   r-   rÛ   r’   r/   r0   r1   rU  r4   rÆ  rN   rÞ  rø  r  r3   rß   r5   r.  r:  r,   rN  rC  r5  r9   rV   rW   ú<module>r©     sº  ðØ 
€
€
€
€
Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qà 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø  Ð  Ð  Ð  Ð  Ð  Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø *Ð *Ð *Ð *Ð *Ð *ð€ð ð Ø$Ð$Ð$Ð$Ð$Ð$à�C˜�HŒ~€H€Hà€Hà,/Ô,<¸wÒ,FÐ,F˜,˜˜ÈBÐ à', u¨S¨S°Ð6H°lÔ6HÈÑ6MÔ6MÈbÈqÈbÔ6QÑ-RÔ-RÑ'SÔ'S€ˆe�E˜#˜s˜(”OÔ$Ð SÐ SÑ Sà&0 b¤jØ+ñ'ô '€��g˜c”lÔ#ð ð ñ ð !+ ¤
Ø1ñ!ô !€ˆ%�˜”Ô
ð ð ñ ð !�r”y ‘~”~€ˆ%�Œ*Ð %Ð %Ñ %à)˜(œ/Ñ+Ô+¨yÒ8€
ˆE�$ŒKÐ 8Ð 8Ñ 8à˜7˜) Y¨~ÀÑ/DÔ%EÐEÔF€Ø�Ð/Ô0°#°c´(Ð:Ô;€àˆiÔ ¤°4Ð8Ñ8Ô8€ð"ð "ð "ð "ð "�	 ð "ñ "ô "ð "ð&,/ð ,/ð ,/ð ,/ð ,/�u˜h Ô7ñ ,/ô ,/ð ,/ð^R3ð R3ð R3ð R3ð R3�C”Gñ R3ô R3ð R3ðj<Bð <Bð <Bð <Bð <B˜(Ð$5ñ <Bô <Bð <Bð~Vð Vð Vð Vð VÐ(ñ Vô Vð Vð L¨7ð L°tð Lð Lð Lð Lð 1+ð 1+ð 1+ð 1+ð 1+Ðñ 1+ô 1+ð 1+ðl%6ð %6ð %6ð %6ð %6�Hñ %6ô %6ð %6ðPG=ð G=ð G=ð G=ð G=�hñ G=ô G=ð G=ðTð ð ð ð Ð%ñ ô ð ð2OPð OPð OPð OPð OP�^ñ OPô OPð OPðd)Kð )Kð )Kð )Kð )K˜^ñ )Kô )Kð )KðXð ð ð ð ˜3œ7ñ ô ð ð'(ð '(ð '(ð '(ð '(Ð!ñ '(ô '(ð '(ðT6ð 6ð 6ð 6ð 6�ñ 6ô 6ð 6ð,;ð ;ð ;ð ;ð ;Ð2ñ ;ô ;ð ;ð:)ð )ð )ð )ð )�Mñ )ô )ð )ðD=ð =ð =ð =ð =�-ñ =ô =ð =ð<Ið Ið Ið Ið Iˆ<ñ Iô Ið Ið(+ð +ð +ð +ð +�E˜8Ð$4Ô5°yÐAQÔ7Rñ +ô +ð +ð%ð %ð %ð %ð %�˜ Ô/°¸=Ô1Iñ %ô %ð %ð"F!ð F!ð F!ð F!ð F!�N G¨CÐ1AÐ,AÔ$Bñ F!ô F!ð F!ðR9�sð 9˜sð 9ð 9ð 9ð 9ð9˜cð 9 cð 9ð 9ð 9ð 9ð˜ð  ð ð ð ð ð ð rV   