§
    ­˜ºhèY  ã                    ó  — d 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 ddlmZ ddlmZmZmZmZ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" dd	l#m$Z$ ddl%Z%dd
l&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl
m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZG erddlHmIZI ndZIejJ        dk    rerddlmKZK ejJ        dk    rddlmLZL neZL ede=d¦  «        ZM ede?¬¦  «        ZNejO        dk    o
ejP        dk    ZQejR        fdeSd ejT        d!ej        fd"„ZUdeSd#eVd ejT        d!ej        fd$„ZWd!eVfd%„ZX G d&„ d'e¦  «        ZY G d(„ d)eY¦  «        ZZ G d*„ d+eY¦  «        Z[ G d,„ d-eeNeMf         ¦  «        Z\ G d.„ d/e¦  «        Z]d0ed1ed2ed!efd3„Z^eg ej_        f         Z`eja        ejb        d4fd5e`d6ecd!eej_                 fd7„¦   «         Zdejb        fd5e`d!ej_        fd8„ZedQd9ej_        d6ecd!dfd:„Zfd!ejg        fd;„ZhdRd<eeI         d!eji        fd=„Zj	 dRe3 e5dd¦  «        d4de3e3e3e8dd>d?d@œdAeSdBeSdCedDedEe5dFecdGedHedIedJedKe9d<eeI         dLeVd9ed!eAfdM„Zke3e3fdNedOed!efdP„ZldS )SzUtilities shared by tests.é    N)ÚABCÚabstractmethod)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚCallableÚGenericÚIteratorÚListÚOptionalÚTypeÚTypeVarÚcastÚoverload)ÚIsolatedAsyncioTestCaseÚmock)ÚSignal)ÚCIMultiDictÚCIMultiDictProxy)ÚURL)Ú_RequestContextManagerÚ_RequestOptionsÚ_WSRequestContextManageré   )ÚClientSessionÚhdrs)ÚAbstractCookieJar)ÚClientResponse)ÚClientWebSocketResponse)Úsentinel)ÚHttpVersionÚRawRequestMessage)ÚEMPTY_PAYLOADÚStreamReader)ÚStrOrURL)	ÚApplicationÚ	AppRunnerÚBaseRequestÚ
BaseRunnerÚRequestÚServerÚServerRunnerÚSockSiteÚUrlMappingMatchInfo)Ú_RequestHandler)Ú
SSLContext©é   é   )ÚUnpack)ÚSelfÚ_ApplicationNoneÚ_Request)ÚboundÚposixÚcygwinÚhostÚfamilyÚreturnc                 ó$   — t          | d|¦  «        S )Nr   )Úget_port_socket)r;   r<   s     úZ/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/aiohttp/test_utils.pyÚget_unused_port_socketrA   P   s   € õ ˜4  FÑ+Ô+Ð+ó    Úportc                 óÖ   — t          j         |t           j        ¦  «        }t          r+|                     t           j        t           j        d¦  «         |                     | |f¦  «         |S )Nr   )ÚsocketÚSOCK_STREAMÚREUSE_ADDRESSÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚbind)r;   rC   r<   Úss       r@   r?   r?   V   sZ   € õ 	Œ�f�fÔ0Ñ1Ô1€AÝð @ð 	
�Š•VÔ&­Ô(;¸QÑ?Ô?Ð?Ø‡F‚FˆD�$ˆ<ÑÔÐØ€HrB   c                  ó  — t          j         t           j        t           j        ¦  «        5 } |                      d¦  «         t	          t
          |                      ¦   «         d         ¦  «        cddd¦  «         S # 1 swxY w Y   dS )z1Return a port that is unused on the current host.)ú	127.0.0.1r   r   N)rE   ÚAF_INETrF   rK   r   ÚintÚgetsockname)rL   s    r@   Úunused_portrR   c   s§   € å	Œ•v”~¥vÔ'9Ñ	:Ô	:ð -¸aØ	�ŠÐÑ Ô Ð Ý•C˜Ÿš™œ¨Ô+Ñ,Ô,ð-ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ªAA9Á9A=Â A=c                   óð  — e Zd ZdZdddddedœdedeej                 ded	ee	         d
e
deee	ej        gej        f         deddfd„Z	 ddeej                 deddfd„Zededefd„¦   «         Zdedefd„Zede
fd„¦   «         Zede
fd„¦   «         Zedefd„¦   «         Zdd„Zdd„Zdeee                  dee         dee          ddfd„Z!d d„Z"deee                  dee         dee          ddfd„Z#dS )!ÚBaseTestServerFÚ NrN   )ÚschemeÚloopr;   rC   Úskip_url_assertsÚsocket_factoryrV   rW   r;   rC   rX   rY   Úkwargsr=   c                ó„   — || _         d | _        d | _        || _        || _        d| _        || _        || _        || _        d S )NF)	Ú_loopÚrunnerÚ_rootr;   rC   Ú_closedrV   rX   rY   )ÚselfrV   rW   r;   rC   rX   rY   rZ   s           r@   Ú__init__zBaseTestServer.__init__m   sK   € ð ˆŒ
Ø,0ˆŒØ$(ˆŒ
ØˆŒ	ØˆŒ	ØˆŒØˆŒØ 0ˆÔØ,ˆÔÐÐrB   c              ‹   ó®  K  — | j         rd S || _        |                     dd ¦  «        | _         | j        dddi|¤Žƒ d {V —†| _         | j                              ¦   «         ƒ d {V —† | j        sd| _        | j        }	 t          j	        | j        ¦  «        j
        }n# t          $ r d}Y nw xY w|dk    rd| j        › d�}|dk    rt          j        nt          j        }|                      | j        | j        |¦  «        }|                     ¦   «         d d	…         \  | _        | _        t#          | j         || j        ¬
¦  «        }|                     ¦   «         ƒ d {V —† |j        }|€J ‚|j        }	|	€J ‚|	d                              ¦   «         d         | _        | j        s| j        rdnd| _        t-          | j        › d|› d| j        › �¦  «        | _        d S )NÚsslÚhandler_cancellationTr   é   é   ú[ú]é   )ÚsockÚssl_contextr   ÚhttpsÚhttpz://ú:© )r]   r\   ÚpopÚ_sslÚ_make_runnerÚsetuprC   r;   Ú	ipaddressÚ
ip_addressÚversionÚ
ValueErrorrE   ÚAF_INET6rO   rY   rQ   r-   ÚstartÚ_serverÚsocketsrV   r   r^   )
r`   rW   rZ   Úabsolute_hostrv   r<   Ú_sockÚsiteÚserverr{   s
             r@   Ústart_serverzBaseTestServer.start_server„   s  è è € ð Œ;ð 	ØˆFØˆŒ
Ø—J’J˜u dÑ+Ô+ˆŒ	Ø-˜DÔ-ÐRÐRÀ4ÐRÈ6ÐRÐRÐRÐRÐRÐRÐRÐRˆŒØŒk×ÒÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØŒyð 	ØˆDŒIØœ	ˆð	ÝÔ*¨4¬9Ñ5Ô5Ô=ˆGˆGøÝð 	ð 	ð 	ØˆGˆGˆGð	øøøà�aŠ<ˆ<Ø, ¤	Ð,Ð,Ð,ˆMØ$+¨q¢L L•”�µf´nˆØ×#Ò# D¤I¨t¬y¸&ÑAÔAˆØ$×0Ò0Ñ2Ô2°2°A°2Ô6ÑˆŒ	�4”9Ý˜œ¨%¸T¼YÐGÑGÔGˆØ�jŠj‰lŒlÐÐÐÐÐÐÐØ”ˆØÐ!Ð!Ð!Ø”.ˆØÐ"Ð"Ð"Ø˜A”J×*Ò*Ñ,Ô,¨QÔ/ˆŒ	ØŒ{ð 	;Ø%)¤YÐ:˜'˜'°FˆDŒKÝ˜DœKÐGÐG¨MÐGÐG¸D¼IÐGÐGÑHÔHˆŒ
ˆ
ˆ
s   Á=B ÂB+Â*B+c              ‹   ó
   K  — d S ©Nro   ©r`   rZ   s     r@   rr   zBaseTestServer._make_runner¤   s   è è € àˆrB   Úpathc                 óè   — | j         €J ‚t          |¦  «        }| j        s#|j        rJ ‚| j                              |¦  «        S t          t          | j         ¦  «        t          |¦  «        z   ¦  «        S r‚   )r^   r   rX   ÚabsoluteÚjoinÚstr)r`   r„   Úurls      r@   Úmake_urlzBaseTestServer.make_url¨   si   € ØŒzÐ%Ð%Ð%Ý�$‰iŒiˆØÔ$ð 	4Ø”|Ð#Ð#Ð#Ø”:—?’? 3Ñ'Ô'Ð'å•s˜4œ:‘”­¨T©¬Ñ2Ñ3Ô3Ð3rB   c                 ó   — | j         d uS r‚   )r]   ©r`   s    r@   ÚstartedzBaseTestServer.started±   s   € àŒ{ $Ð&Ð&rB   c                 ó   — | j         S r‚   )r_   rŒ   s    r@   ÚclosedzBaseTestServer.closedµ   ó
   € àŒ|ÐrB   c                 ó8   — | j         }|€J ‚|j        €J ‚|j        S r‚   )r]   r   )r`   r]   s     r@   ÚhandlerzBaseTestServer.handler¹   s-   € ð ”ˆØÐ!Ð!Ð!ØŒ}Ð(Ð(Ð(ØŒ}ÐrB   c              ƒ   ó¨   K  — | j         rF| j        sA| j        €J ‚| j                             ¦   «         ƒ d{V —† d| _        d| _        d| _        dS dS dS )a`  Close all fixtures created by the test client.

        After that point, the TestClient is no longer usable.

        This is an idempotent function: running close multiple times
        will not have any additional effects.

        close is also run when the object is garbage collected, and on
        exit when used as a context manager.

        NT)r�   r�   r]   Úcleanupr^   rC   r_   rŒ   s    r@   ÚclosezBaseTestServer.closeÂ   s|   è è € ð Œ<ð 	  ¤ð 	 Ø”;Ð*Ð*Ð*Ø”+×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØˆDŒJØˆDŒIØˆDŒLˆLˆLð	 ð 	 ð 	 ð 	 rB   c                 ó    — t          d¦  «        ‚©NzUse async with instead©Ú	TypeErrorrŒ   s    r@   Ú	__enter__zBaseTestServer.__enter__Õ   ó   € ÝÐ0Ñ1Ô1Ð1rB   Úexc_typeÚ	exc_valueÚ	tracebackc                 ó   — d S r‚   ro   ©r`   rœ   r�   rž   s       r@   Ú__exit__zBaseTestServer.__exit__Ø   ó	   € ð 	ˆrB   c              ƒ   óL   K  — |                       | j        ¬¦  «        ƒ d {V —† | S ©N©rW   )r€   r\   rŒ   s    r@   Ú
__aenter__zBaseTestServer.__aenter__á   s6   è è € Ø×Ò T¤ZÐÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆrB   c              ƒ   ó>   K  — |                       ¦   «         ƒ d {V —† d S r‚   ©r•   r    s       r@   Ú	__aexit__zBaseTestServer.__aexit__å   ó.   è è € ð �jŠj‰lŒlÐÐÐÐÐÐÐÐÐrB   r‚   ©r=   N)r=   rT   )$Ú__name__Ú
__module__Ú__qualname__Ú__test__r?   rˆ   r   ÚasyncioÚAbstractEventLooprP   Úboolr   rE   ÚAddressFamilyr   ra   r€   r   r)   rr   r%   r   rŠ   Úpropertyr�   r�   r+   r’   r•   rš   r   ÚBaseExceptionr   r¡   r¦   r©   ro   rB   r@   rT   rT   j   s¦  € € € € € Ø€Hð
 Ø48ØØ"Ø!&ð ð-ð -ð -ð ð-ð �wÔ0Ô1ð	-ð
 ð-ð �sŒmð-ð ð-ð !Ø�#�vÔ+Ð,¨f¬mÐ;ô
ð-ð ð-ð 
ð-ð -ð -ð -ð0 ;?ðIð IØ˜WÔ6Ô7ðIØJMðIà	ðIð Ið Ið Ið@ ð¨3ð °:ð ð ð ñ „^ðð4˜Xð 4¨#ð 4ð 4ð 4ð 4ð ð'˜ð 'ð 'ð 'ñ „Xð'ð ð˜ð ð ð ñ „Xðð ð˜ð ð ð ñ „Xðð ð  ð  ð  ð&2ð 2ð 2ð 2ðà˜4 Ô.Ô/ðð ˜MÔ*ðð ˜MÔ*ð	ð
 
ðð ð ð ðð ð ð ðà˜4 Ô.Ô/ðð ˜MÔ*ðð ˜MÔ*ð	ð
 
ðð ð ð ð ð rB   rT   c                   óZ   ‡ — e Zd Zddddœdedededee         d	ef
ˆ fd
„Zd	ede	fd„Z
ˆ xZS )Ú
TestServerrU   rN   N©rV   r;   rC   ÚapprV   r;   rC   rZ   c                óP   •— || _          t          ¦   «         j        d|||dœ|¤Ž d S ©Nr¸   ro   )r¹   Úsuperra   )r`   r¹   rV   r;   rC   rZ   Ú	__class__s         €r@   ra   zTestServer.__init__ï   s8   ø€ ð ˆŒØ�‰ŒÔÐG ¨T¸ÐGÐGÀÐGÐGÐGÐGÐGrB   r=   c              ‹   ó*   K  — t          | j        fi |¤ŽS r‚   )r'   r¹   rƒ   s     r@   rr   zTestServer._make_runnerû   s   è è € Ý˜œÐ,Ð, VÐ,Ð,Ð,rB   )r¬   r­   r®   r&   rˆ   r   rP   r   ra   r)   rr   Ú__classcell__©r½   s   @r@   r·   r·   î   sµ   ø€ € € € € ð
 ØØ"ð
Hð 
Hð 
Hàð
Hð ð	
Hð
 ð
Hð �sŒmð
Hð ð
Hð 
Hð 
Hð 
Hð 
Hð 
Hð-¨3ð -°:ð -ð -ð -ð -ð -ð -ð -ð -rB   r·   c                   ód   ‡ — e Zd Zddddœdedededee         d	ed
dfˆ fd„Zdde	d	ed
e
fd„Zˆ xZS )ÚRawTestServerrU   rN   Nr¸   r’   rV   r;   rC   rZ   r=   c                óP   •— || _          t          ¦   «         j        d|||dœ|¤Ž d S r»   )Ú_handlerr¼   ra   )r`   r’   rV   r;   rC   rZ   r½   s         €r@   ra   zRawTestServer.__init__   s8   ø€ ð  ˆŒØ�‰ŒÔÐG ¨T¸ÐGÐGÀÐGÐGÐGÐGÐGrB   TÚdebugc              ‹   óX   K  — t          | j        f| j        |dœ|¤Ž}t          |fd|i|¤ŽS )N)rW   rÅ   rÅ   )r+   rÄ   r\   r,   )r`   rÅ   rZ   Úsrvs       r@   rr   zRawTestServer._make_runner  sA   è è € Ý�T”]ÐK¨¬¸5ÐKÐKÀFÐKÐKˆÝ˜CÐ7Ð7 uÐ7°Ð7Ð7Ð7rB   )T)r¬   r­   r®   r/   rˆ   r   rP   r   ra   r²   r,   rr   r¿   rÀ   s   @r@   rÂ   rÂ   ÿ   sÌ   ø€ € € € € ð
 ØØ"ð
Hð 
Hð 
Hà ð
Hð ð	
Hð
 ð
Hð �sŒmð
Hð ð
Hð 
ð
Hð 
Hð 
Hð 
Hð 
Hð 
Hð8ð 8¨ð 8¸sð 8À|ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8rB   rÂ   c                   ó8  — e Zd ZdZdZeddœdddedee         d	e	d
df
d„¦   «         Z
eddœdddedee         d	e	d
df
d„¦   «         Z
dddœdedee         deej                 d	e	d
df
d„Z
d6d„Zed
efd„¦   «         Zed
ee         fd„¦   «         Zed
efd„¦   «         Zed
efd„¦   «         Zed
efd„¦   «         Zded
efd„Zdeded	e	d
efd„Zej        dk    r…e rƒdeded	e!e"         d
e#fd„Z$ded	e!e"         d
e#fd„Z%ded	e!e"         d
e#fd„Z&ded	e!e"         d
e#fd„Z'ded	e!e"         d
e#fd „Z(ded	e!e"         d
e#fd!„Z)ded	e!e"         d
e#fd"„Z*ded	e!e"         d
e#fd#„Z+nRdeded	e	d
e#fd$„Z$ded	e	d
e#fd%„Z%ded	e	d
e#fd&„Z(ded	e	d
e#fd'„Z&ded	e	d
e#fd(„Z'ded	e	d
e#fd)„Z)ded	e	d
e#fd*„Z*ded	e	d
e#fd+„Z+ded	e	d
e,fd,„Z-ded	e	d
e.fd-„Z/d6d.„Z0d6d/„Z1d0ee2e3                  d1ee3         d2ee4         d
dfd3„Z5d
e6fd4„Z7d0ee2e3                  d1ee3         d2ee4         d
dfd5„Z8dS )7Ú
TestClientzb
    A test client implementation.

    To write functional tests for aiohttp based servers.

    FN)Ú
cookie_jarr`   z TestClient[Request, Application]r   rÊ   rZ   r=   c                ó   — d S r‚   ro   ©r`   r   rÊ   rZ   s       r@   ra   zTestClient.__init__  ó	   € ð ˆsrB   zTestClient[_Request, None]c                ó   — d S r‚   ro   rÌ   s       r@   ra   zTestClient.__init__#  rÍ   rB   )rÊ   rW   rW   c                ó$  — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚|| _        || _        |€t          j        d|¬¦  «        }t          d||dœ|¤Ž| _	        d| j	        _
        d| _        g | _        g | _        d S )Nz2server must be TestServer instance, found type: %rT)ÚunsaferW   )rW   rÊ   Fro   )Ú
isinstancerT   r™   Útyperz   r\   ÚaiohttpÚ	CookieJarr   Ú_sessionÚ_retry_connectionr_   Ú
_responsesÚ_websockets)r`   r   rÊ   rW   rZ   s        r@   ra   zTestClient.__init__+  s£   € õ ˜&¥.Ñ1Ô1ð 	ÝØDÅtÈFÁ|Ä|ÑSñô ð ð ˆŒØˆŒ
ØÐÝ Ô*°$¸TÐBÑBÔBˆJÝ%ÐQ¨4¸JÐQÐQÈ&ÐQÐQˆŒØ*/ˆŒÔ'ØˆŒØ02ˆŒØ:<ˆÔÐÐrB   c              ƒ   óV   K  — | j                              | j        ¬¦  «        ƒ d {V —† d S r¤   )rz   r€   r\   rŒ   s    r@   r€   zTestClient.start_serverA  s9   è è € ØŒl×'Ò'¨T¬ZÐ'Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8rB   c                 ó   — | j         j        S r‚   )rz   r;   rŒ   s    r@   r;   zTestClient.hostD  ó   € àŒ|Ô Ð rB   c                 ó   — | j         j        S r‚   )rz   rC   rŒ   s    r@   rC   zTestClient.portH  rÛ   rB   c                 ó   — | j         S r‚   )rz   rŒ   s    r@   r   zTestClient.serverL  r�   rB   c                 ó.   — t          | j        dd ¦  «        S )Nr¹   )Úgetattrrz   rŒ   s    r@   r¹   zTestClient.appP  s   € å�t”| U¨DÑ1Ô1Ð1rB   c                 ó   — | j         S )zðAn internal aiohttp.ClientSession.

        Unlike the methods on the TestClient, client session requests
        do not automatically include the host in the url queried, and
        will require an absolute path to the resource.

        )rÕ   rŒ   s    r@   ÚsessionzTestClient.sessionT  s   € ð Œ}ÐrB   r„   c                 ó6   — | j                              |¦  «        S r‚   )rz   rŠ   )r`   r„   s     r@   rŠ   zTestClient.make_url_  s   € ØŒ|×$Ò$ TÑ*Ô*Ð*rB   Úmethodc              ‹   ó˜   K  —  | j         j        ||                      |¦  «        fi |¤Žƒ d {V —†}| j                             |¦  «         |S r‚   )rÕ   ÚrequestrŠ   r×   Úappend)r`   rã   r„   rZ   Úresps        r@   Ú_requestzTestClient._requestb  s_   è è € ð +�T”]Ô*¨6°4·=²=ÀÑ3FÔ3FÐQÐQÈ&ÐQÐQÐQÐQÐQÐQÐQÐQˆàŒ×Ò˜tÑ$Ô$Ð$ØˆrB   r1   c                 ó   — d S r‚   ro   ©r`   rã   r„   rZ   s       r@   rå   zTestClient.requestl  s   € à%( SrB   c                 ó   — d S r‚   ro   ©r`   r„   rZ   s      r@   ÚgetzTestClient.getp  ó	   € ð &) SrB   c                 ó   — d S r‚   ro   rì   s      r@   ÚoptionszTestClient.optionsv  rî   rB   c                 ó   — d S r‚   ro   rì   s      r@   ÚheadzTestClient.head|  rî   rB   c                 ó   — d S r‚   ro   rì   s      r@   ÚpostzTestClient.post‚  rî   rB   c                 ó   — d S r‚   ro   rì   s      r@   ÚputzTestClient.putˆ  rî   rB   c                 ó   — d S r‚   ro   rì   s      r@   ÚpatchzTestClient.patchŽ  rî   rB   c                 ó   — d S r‚   ro   rì   s      r@   ÚdeletezTestClient.delete”  rî   rB   c                 ó:   — t           | j        ||fi |¤Ž¦  «        S )zäRoutes a request to tested http server.

            The interface is identical to aiohttp.ClientSession.request,
            except the loop kwarg is overridden by the instance used by the
            test server.

            )r   rè   rê   s       r@   rå   zTestClient.requestœ  s(   € õ *¨-¨$¬-¸ÀÐ*OÐ*OÈÐ*OÐ*OÑPÔPÐPrB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S )zPerform an HTTP GET request.)r   rè   r   ÚMETH_GETrì   s      r@   rí   zTestClient.get¨  ó(   € å)¨-¨$¬-½¼ÀtÐ*VÐ*VÈvÐ*VÐ*VÑWÔWÐWrB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S )zPerform an HTTP POST request.)r   rè   r   Ú	METH_POSTrì   s      r@   rô   zTestClient.post¬  ó)   € å)¨-¨$¬-½¼ÈÐ*WÐ*WÐPVÐ*WÐ*WÑXÔXÐXrB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S )z Perform an HTTP OPTIONS request.)r   rè   r   ÚMETH_OPTIONSrì   s      r@   rð   zTestClient.options°  s0   € å)Ø�”�dÔ/°Ð@Ð@¸Ð@Ð@ñô ð rB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S )zPerform an HTTP HEAD request.)r   rè   r   Ú	METH_HEADrì   s      r@   rò   zTestClient.head¶  r  rB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S )zPerform an HTTP PUT request.)r   rè   r   ÚMETH_PUTrì   s      r@   rö   zTestClient.putº  rþ   rB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S ©zPerform an HTTP PATCH request.)r   rè   r   Ú
METH_PATCHrì   s      r@   rø   zTestClient.patch¾  s/   € å)Ø�”�dœo¨tÐ>Ð>°vÐ>Ð>ñô ð rB   c                 óN   — t           | j        t          j        |fi |¤Ž¦  «        S r	  )r   rè   r   ÚMETH_DELETErì   s      r@   rú   zTestClient.deleteÄ  s0   € å)Ø�”�dÔ.°Ð?Ð?¸Ð?Ð?ñô ð rB   c                 ó8   — t           | j        |fi |¤Ž¦  «        S )zjInitiate websocket connection.

        The api corresponds to aiohttp.ClientSession.ws_connect.

        )r   Ú_ws_connectrì   s      r@   Ú
ws_connectzTestClient.ws_connectÊ  s(   € õ (Ð(8¨Ô(8¸Ð(HÐ(HÀÐ(HÐ(HÑIÔIÐIrB   c              ‹   ó–   K  —  | j         j        |                      |¦  «        fi |¤Žƒ d {V —†}| j                             |¦  «         |S r‚   )rÕ   r  rŠ   rØ   ræ   )r`   r„   rZ   Úwss       r@   r  zTestClient._ws_connectÒ  s^   è è € ð ,�4”=Ô+¨D¯MªM¸$Ñ,?Ô,?ÐJÐJÀ6ÐJÐJÐJÐJÐJÐJÐJÐJˆØÔ×Ò Ñ#Ô#Ð#Øˆ	rB   c              ƒ   ó*  K  — | j         s‰| j        D ]}|                     ¦   «          Œ| j        D ]}|                     ¦   «         ƒ d{V —† Œ| j                             ¦   «         ƒ d{V —† | j                             ¦   «         ƒ d{V —† d| _         dS dS )aH  Close all fixtures created by the test client.

        After that point, the TestClient is no longer usable.

        This is an idempotent function: running close multiple times
        will not have any additional effects.

        close is also run on exit when used as a(n) (asynchronous)
        context manager.

        NT)r_   r×   r•   rØ   rÕ   rz   )r`   rç   r  s      r@   r•   zTestClient.closeÙ  sÈ   è è € ð Œ|ð 	 Øœð ð �Ø—
’
‘”��ØÔ&ð !ð !�Ø—h’h‘j”jÐ Ð Ð Ð Ð Ð Ð Ð Ø”-×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø”,×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØˆDŒLˆLˆLð	 ð 	 rB   c                 ó    — t          d¦  «        ‚r—   r˜   rŒ   s    r@   rš   zTestClient.__enter__î  r›   rB   rœ   ÚexcÚtbc                 ó   — d S r‚   ro   ©r`   rœ   r  r  s       r@   r¡   zTestClient.__exit__ñ  r¢   rB   c              ƒ   ó>   K  — |                       ¦   «         ƒ d {V —† | S r‚   )r€   rŒ   s    r@   r¦   zTestClient.__aenter__ú  s/   è è € Ø×ÒÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØˆrB   c              ƒ   ó>   K  — |                       ¦   «         ƒ d {V —† d S r‚   r¨   r  s       r@   r©   zTestClient.__aexit__þ  rª   rB   r«   )9r¬   r­   r®   Ú__doc__r¯   r   r·   r   r   r   ra   rT   r°   r±   r€   r´   rˆ   r;   rP   rC   r   r6   r¹   r   rá   r%   r   rŠ   r   rè   ÚsysÚversion_infor   r4   r   r   rå   rí   rð   rò   rô   rö   rø   rú   r   r  r   r  r•   rš   r   rµ   r   r¡   r5   r¦   r©   ro   rB   r@   rÉ   rÉ     sÿ  € € € € € ðð ð €Hàð
 37ð	ð ð Ø0ðàðð Ð.Ô/ð	ð
 ðð 
ðð ð ñ „Xðð ð
 37ð	ð ð Ø*ðàðð Ð.Ô/ð	ð
 ðð 
ðð ð ñ „Xðð 37Ø48ð=ð =ð =àð=ð Ð.Ô/ð	=ð
 �wÔ0Ô1ð=ð ð=ð 
ð=ð =ð =ð =ð,9ð 9ð 9ð 9ð ð!�cð !ð !ð !ñ „Xð!ð ð!�h˜s”mð !ð !ð !ñ „Xð!ð ð˜ð ð ð ñ „Xðð ð2Ð%ð 2ð 2ð 2ñ „Xð2ð ð˜ð ð ð ñ „Xðð+˜Xð +¨#ð +ð +ð +ð +ðØðØ!)ðØ58ðà	ðð ð ð ð Ô˜7Ò"Ð" }Ð"ð	)Øð	)Ø%-ð	)Ø9?ÀÔ9Pð	)à#ð	)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð	)àð	)ð ˜_Ô-ð	)ð $ð		)ð 	)ð 	)ð 	)ð 	)ð
	QØð
	QØ%-ð
	QØ9<ð
	Qà#ð
	Qð 
	Qð 
	Qð 
	Qð	X˜Hð 	X°ð 	XÐ8Nð 	Xð 	Xð 	Xð 	Xð	Y˜Xð 	Y°ð 	YÐ9Oð 	Yð 	Yð 	Yð 	Yð	 ð 	°Cð 	Ð<Rð 	ð 	ð 	ð 	ð	Y˜Xð 	Y°ð 	YÐ9Oð 	Yð 	Yð 	Yð 	Yð	X˜Hð 	X°ð 	XÐ8Nð 	Xð 	Xð 	Xð 	Xð	˜hð 	°#ð 	Ð:Pð 	ð 	ð 	ð 	ð	˜xð 	°3ð 	Ð;Qð 	ð 	ð 	ð 	ðJ˜xð J°3ð JÐ;Sð Jð Jð Jð JðØðØ(+ðà	 ðð ð ð ð ð  ð  ð  ð*2ð 2ð 2ð 2ðà˜4 Ô.Ô/ðð �mÔ$ðð �]Ô#ð	ð
 
ðð ð ð ð $ð ð ð ð ðà˜4 Ô.Ô/ðð �mÔ$ðð �]Ô#ð	ð
 
ðð ð ð ð ð rB   rÉ   c                   óz   — e Zd ZdZdefd„Zdefd„Zdd„Zdd„Zdd„Z	dd	„Z
d
edefd„Zdedeeef         fd„ZdS )ÚAioHTTPTestCasea  A base class to allow for unittest web applications using aiohttp.

    Provides the following:

    * self.client (aiohttp.test_utils.TestClient): an aiohttp test client.
    * self.loop (asyncio.BaseEventLoop): the event loop in which the
        application and server are running.
    * self.app (aiohttp.web.Application): the application returned by
        self.get_application()

    Note that the TestClient's methods are asynchronous: you have to
    execute function on the test client using asynchronous methods.
    r=   c              ƒ   ó.   K  — |                       ¦   «         S )z‰Get application.

        This method should be overridden
        to return the aiohttp.web.Application
        object to test.
        )Úget_apprŒ   s    r@   Úget_applicationzAioHTTPTestCase.get_application  s   è è € ð �|Š|‰~Œ~ÐrB   c                 ó    — t          d¦  «        ‚)zqObsolete method used to constructing web application.

        Use .get_application() coroutine instead.
        z+Did you forget to define get_application()?)ÚRuntimeErrorrŒ   s    r@   r   zAioHTTPTestCase.get_app  s   € õ
 ÐHÑIÔIÐIrB   Nc              ƒ   ój   K  — t          j        ¦   «         | _        |                      ¦   «         ƒ d {V —†S r‚   )r°   Úget_running_looprW   Ú
setUpAsyncrŒ   s    r@   Ú
asyncSetUpzAioHTTPTestCase.asyncSetUp&  s8   è è € ÝÔ,Ñ.Ô.ˆŒ	Ø—_’_Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&rB   c              ƒ   ó  K  — |                       ¦   «         ƒ d {V —†| _        |                      | j        ¦  «        ƒ d {V —†| _        |                      | j        ¦  «        ƒ d {V —†| _        | j                             ¦   «         ƒ d {V —† d S r‚   )r!  r¹   Ú
get_serverr   Ú
get_clientÚclientr€   rŒ   s    r@   r&  zAioHTTPTestCase.setUpAsync*  s¥   è è € Ø×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/ˆŒØ ŸOšO¨D¬HÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆŒØ ŸOšO¨D¬KÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆŒàŒk×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(rB   c              ƒ   ó:   K  — |                       ¦   «         ƒ d {V —†S r‚   )ÚtearDownAsyncrŒ   s    r@   ÚasyncTearDownzAioHTTPTestCase.asyncTearDown1  s*   è è € Ø×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)rB   c              ƒ   óH   K  — | j                              ¦   «         ƒ d {V —† d S r‚   )r+  r•   rŒ   s    r@   r-  zAioHTTPTestCase.tearDownAsync4  s2   è è € ØŒk×ÒÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!rB   r¹   c              ƒ   ó2   K  — t          || j        ¬¦  «        S )zReturn a TestServer instance.r¥   )r·   rW   )r`   r¹   s     r@   r)  zAioHTTPTestCase.get_server7  s   è è € å˜# D¤IÐ.Ñ.Ô.Ð.rB   r   c              ƒ   ó2   K  — t          || j        ¬¦  «        S )zReturn a TestClient instance.r¥   )rÉ   rW   )r`   r   s     r@   r*  zAioHTTPTestCase.get_client;  s   è è € å˜& t¤yÐ1Ñ1Ô1Ð1rB   r«   )r¬   r­   r®   r  r&   r!  r   r'  r&  r.  r-  r·   r)  rÉ   r*   r*  ro   rB   r@   r  r    s÷   € € € € € ðð ð {ð ð ð ð ðJ˜ð Jð Jð Jð Jð'ð 'ð 'ð 'ð)ð )ð )ð )ð*ð *ð *ð *ð"ð "ð "ð "ð/ Kð /°Jð /ð /ð /ð /ð2 zð 2°jÀÈ+ÐAUÔ6Vð 2ð 2ð 2ð 2ð 2ð 2rB   r  ÚfuncÚargsrZ   c                 ó>   — t          j        dt          d¬¦  «         | S )zw
    A decorator dedicated to use with asynchronous AioHTTPTestCase test methods.

    In 3.8+, this does nothing.
    zBDecorator `@unittest_run_loop` is no longer needed in aiohttp 3.8+ri   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarning)r2  r3  rZ   s      r@   Úunittest_run_loopr9  @  s-   € õ „MØLÝØðñ ô ð ð
 €KrB   FÚloop_factoryÚfastc              #   óR   K  — t          | ¦  «        }|V — t          ||¬¦  «         dS )zzA contextmanager that creates an event_loop, for test purposes.

    Handles the creation and cleanup of a test loop.
    )r;  N)Úsetup_test_loopÚteardown_test_loop)r:  r;  rW   s      r@   Úloop_contextr?  Q  s7   è è € õ ˜<Ñ(Ô(€DØ
€J€J€JÝ�t $Ð'Ñ'Ô'Ð'Ð'Ð'rB   c                 óB   —  | ¦   «         }t          j        |¦  «         |S )z”Create and return an asyncio.BaseEventLoop instance.

    The caller should also call teardown_test_loop,
    once they are done with the loop.
    )r°   Úset_event_loop)r:  rW   s     r@   r=  r=  ^  s%   € ð ˆ<‰>Œ>€DÝÔ˜4Ñ Ô Ð Ø€KrB   rW   c                 ó  — |                       ¦   «         }|sB|                      | j        ¦  «         |                      ¦   «          |                      ¦   «          |st          j        ¦   «          t          j        d¦  «         dS )z>Teardown and cleanup an event_loop created by setup_test_loop.N)	Ú	is_closedÚ	call_soonÚstopÚrun_foreverr•   ÚgcÚcollectr°   rA  )rW   r;  r�   s      r@   r>  r>  k  sv   € à�^Š^ÑÔ€FØð Ø�Š�t”yÑ!Ô!Ð!Ø×ÒÑÔÐØ�
Š
‰Œˆàð Ý
Œ
‰ŒˆåÔ˜4Ñ Ô Ð Ð Ð rB   c                  ó4  — dt           dt          dt           fd„} dt           dt          dt           dd fd„}t          j        t          ¬¦  «        }i |_        | |_        ||_        d|_        t          |¦  «        |_
        |j
                             ¦   «          |S )	Nr¹   Úkeyr=   c                 ó   — | j         |         S r‚   ©Ú
__app_dict)r¹   rJ  s     r@   Úget_dictz"_create_app_mock.<locals>.get_dictz  s   € ØŒ~˜cÔ"Ð"rB   Úvaluec                 ó   — || j         |<   d S r‚   rL  )r¹   rJ  rO  s      r@   Úset_dictz"_create_app_mock.<locals>.set_dict}  s   € Ø#ˆŒ�sÑÐÐrB   )ÚspecF)r   rˆ   r   Ú	MagicMockr&   rM  Ú__getitem__Ú__setitem__Ú_debugr   Úon_response_prepareÚfreeze)rN  rQ  r¹   s      r@   Ú_create_app_mockrY  y  s³   € ð#•cð #¥ð #­ð #ð #ð #ð #ð$•cð $¥ð $­Cð $°Dð $ð $ð $ð $õ Œ.�kÐ
*Ñ
*Ô
*€CØ€C„NØ€C„OØ€C„Oà€C„JÝ$ S™kœk€CÔØÔ×"Ò"Ñ$Ô$Ð$Ø€JrB   Ú
sslcontextc                 ó„   ‡ — t          j        ¦   «         }dt          dt          t                   fˆ fd„}||j        _        |S )NrJ  r=   c                 ó   •— | dk    r‰S d S )NrZ  ro   )rJ  rZ  s    €r@   Úget_extra_infoz)_create_transport.<locals>.get_extra_infoŽ  s   ø€ Ø�,ÒÐØÐà�4rB   )r   ÚMockrˆ   r   r0   r]  Úside_effect)rZ  Ú	transportr]  s   `  r@   Ú_create_transportra  ‹  sR   ø€ Ý”	‘”€Ið�Cð ¥H­ZÔ$8ð ð ð ð ð ð ð ,:€IÔÔ(ØÐrB   i   .)Ú
match_inforv   Úclosingr¹   ÚwriterÚprotocolr`  ÚpayloadrZ  Úclient_max_sizerW   rã   r„   Úheadersrb  rv   rc  r¹   rd  re  r`  rf  rg  c                ó~  — t          j        ¦   «         }|du rD	 t          j        ¦   «         }n/# t          $ r" t          j        ¦   «         }d|j        _        Y nw xY w|t          dd¦  «        k     rd}|rHt          t          |¦  «        ¦  «        }t          d„ |                     ¦   «         D ¦   «         ¦  «        }nt          t          ¦   «         ¦  «        }d}d|                     t          j        d¦  «                             ¦   «         v }t!          | |||||dd	|t#          |¦  «        ¦
  «
        }|€t%          ¦   «         }|	t&          u rt)          |¦  «        }	|t&          u r{t          j        ¦   «         }|	|_        t          j        |	                     d
¦  «        ¬¦  «        t1          |¦  «        _        t          j        |¬¦  «        t1          |¦  «        _        |t&          u rjt          j        ¦   «         }t7          d¦  «        |_        t7          d¦  «        |_        t7          d¦  «        |_        t7          d¦  «        |_        |	|_        |	|_        ||_         tC          ||
|||||¬¦  «        }tE          |t&          u ri n|t          j        ¦   «         ¦  «        }| #                    |¦  «         ||_$        |S )z±Creates mocked web.Request testing purposes.

    Useful in unit tests, when spinning full web server is overkill or
    specific conditions and errors are hard to trigger.
    .ro   r   Tc              3   óp   K  — | ]1\  }}|                      d ¦  «        |                      d ¦  «        fV — Œ2dS )zutf-8N)Úencode)Ú.0ÚkÚvs      r@   ú	<genexpr>z&make_mocked_request.<locals>.<genexpr>¿  sT   è è € ð 
ð 
Ù7;°q¸!ˆQ�XŠX�gÑÔ §¢¨Ñ 1Ô 1Ð2ð
ð 
ð 
ð 
ð 
ð 
rB   ÚchunkedrU   NFÚpeername)Úreturn_value)rg  )%r   r^  r°   r%  r#  Úcreate_futurerr  r!   r   r   ÚtupleÚitemsrí   r   ÚTRANSFER_ENCODINGÚlowerr"   r   rY  r    ra  r`  ÚPropertyMockr]  rÒ   rq  rk   Úmake_mocked_coroÚwrite_headersÚwriteÚ	write_eofÚdrainrd  r*   r.   Úadd_appÚ_match_info)rã   r„   rh  rb  rv   rc  r¹   rd  re  r`  rf  rZ  rg  rW   ÚtaskÚraw_hdrsrp  ÚmessageÚreqs                      r@   Úmake_mocked_requestr„  ˜  sµ  € õ, Œ9‰;Œ;€DØˆs€{€{ð
	1ÝÔ+Ñ-Ô-ˆDˆDøÝð 	1ð 	1ð 	1Ý”9‘;”;ˆDØ.0ˆDÔÔ+Ð+Ð+ð	1øøøð •˜Q Ñ"Ô"Ò"Ð"Øˆàð Ý"¥;¨wÑ#7Ô#7Ñ8Ô8ˆÝð 
ð 
Ø?F¿}º}¹¼ð
ñ 
ô 
ñ 
ô 
ˆˆõ #¥;¡=¤=Ñ1Ô1ˆØˆà˜7Ÿ;š;¥tÔ'=¸rÑBÔB×HÒHÑJÔJÐJ€GåØØØØØØØØØÝˆD‰	Œ	ñô €Gð €{ÝÑ Ô ˆà•HÐÐÝ% jÑ1Ô1ˆ	à•8ÐÐÝ”9‘;”;ˆØ&ˆÔÝ"&Ô"3Ø"×1Ò1°*Ñ=Ô=ð#
ñ #
ô #
�ˆX‰ŒÔõ &*Ô%6ÀJÐ%OÑ%OÔ%O�ˆX‰ŒÔ"à•ÐÐÝ”‘”ˆÝ/°Ñ5Ô5ˆÔÝ'¨Ñ-Ô-ˆŒÝ+¨DÑ1Ô1ˆÔÝ'¨Ñ-Ô-ˆŒØ$ˆÔà"€HÔØ€H„Oå
Ø�˜( F¨D°$Èðñ ô €Cõ %Ø�HÐ$Ð$ˆˆ¨*µd´i±k´kñô €Jð ×Ò�sÑÔÐØ €C„Oà€Js   ™- ­)AÁArr  Úraise_exceptionc                 óh   ‡ ‡— dt           dt           dt           fˆˆ fd„}t          j        |¬¦  «        S )zCreates a coroutine mock.r3  rZ   r=   c               Ÿ   ó^   •K  — ‰t           ur‰‚t          j        ‰¦  «        s‰S ‰ƒ d {V —† d S r‚   )r    ÚinspectÚisawaitable)r3  rZ   r…  rr  s     €€r@   Ú	mock_coroz#make_mocked_coro.<locals>.mock_coroÿ  sO   øè è € Ø¥(Ð*Ð*Ø!Ð!ÝÔ" <Ñ0Ô0ð 	 ØÐØÐÐÐÐÐÐÐÐÐrB   )Úwraps)r   r   r^  )rr  r…  rŠ  s   `` r@   ry  ry  ú  sQ   øø€ ð
�sð ­cð µcð ð ð ð ð ð ð õ Œ9˜9Ð%Ñ%Ô%Ð%rB   )Fr‚   )mr  r°   Ú
contextlibrG  rˆ  rt   ÚosrE   r  r6  Úabcr   r   Útypesr   Útypingr   r   r   r	   r
   r   r   r   r   r   r   Úunittestr   r   Ú	aiosignalr   Ú	multidictr   r   Úyarlr   rÓ   Úaiohttp.clientr   r   r   rU   r   r   r   Úclient_reqrepr   Ú	client_wsr   Úhelpersr    rm   r!   r"   Ústreamsr#   r$   Útypedefsr%   Úwebr&   r'   r(   r)   r*   r+   r,   r-   r.   Úweb_protocolr/   rc   r0   r  r4   r5   r6   r7   ÚnameÚplatformrG   rO   rˆ   r³   rA   rP   r?   rR   rT   r·   rÂ   rÉ   r  r9  r±   Ú_LOOP_FACTORYÚcontextmanagerÚnew_event_loopr²   r?  r=  r>  rS  rY  r^  ra  r„  ry  ro   rB   r@   ú<module>r¢     sƒ  ðØ  Ð  à €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð à €€€ðð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø )Ð )Ð )Ð )Ð )Ð )Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð *Ð )Ð )Ð )Ð )Ð )àð ØÐÐÐÐÐÐà€JàÔ�wÒÐ =ÐØÐÐÐÐÐàÔ�wÒÐØÐÐÐÐÐÐà€Dà�7Ð-¨{¸DÑAÔAÐ Øˆ7�: [Ð1Ñ1Ô1€à”˜7Ò"Ð? s¤|°xÒ'?€ð /5¬nð,ð ,Ø
ð,ØÔ+ð,à„]ð,ð ,ð ,ð ,ð
Ø
ð
Øð
Ø"(Ô"6ð
à„]ð
ð 
ð 
ð 
ð-�Sð -ð -ð -ð -ðAð Að Að Að A�Sñ Aô Að AðH-ð -ð -ð -ð -�ñ -ô -ð -ð"8ð 8ð 8ð 8ð 8�Nñ 8ô 8ð 8ð$sð sð sð sð s�˜Ð#3Ð3Ô4ñ sô sð sðl62ð 62ð 62ð 62ð 62Ð-ñ 62ô 62ð 62ðr˜Cð ¨ð °sð ¸sð ð ð ð ð ˜˜WÔ6Ð6Ô7€ð Ôà")Ô"8Àuð	(ð 	(Øð	(Ø@Dð	(àˆgÔ'Ô(ð	(ð 	(ð 	(ñ Ôð	(ð #*Ô"8ð
ð 
Øð
àÔð
ð 
ð 
ð 
ð!ð !˜WÔ6ð !¸dð !Ètð !ð !ð !ð !ð˜$œ.ð ð ð ð ð$
ð 
 (¨:Ô"6ð 
À$Ä)ð 
ð 
ð 
ð 
ð  ð_ð
 Ø&˜; q¨!Ñ,Ô,ØØØØØØ)Ø'+Ø"Øð_ð _ð _Øð_à
ð_ð ð_ð
 ð_ð ð_ð ð_ð 
ð_ð ð_ð ð_ð ð_ð ð_ð ˜Ô$ð_ð ð_ð ð_ð  ð!_ð _ð _ð _ðF !¸ð&ð &Øð&Ø36ð&àð&ð &ð &ð &ð &ð &rB   