§
    Ÿjxf  ã                   ó*  — 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
 d dlmZ d dl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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$ d dl%m&Z&m'Z'm(Z( d dl)m*Z*  e*dej+        ¦  «        Z, G d„ de ¦  «        Z- G d„ de.¦  «        Z/ G d„ d¦  «        Z0 G d„ de0¦  «        Z1 G d„ de0¦  «        Z2 G d„ de2¦  «        Z3 G d„ de1¦  «        Z4 G d „ d!e4¦  «        Z5 G d"„ d#e4¦  «        Z6 G d$„ d%e1¦  «        Z7 G d&„ d'e1¦  «        Z8 G d(„ d)e1¦  «        Z9 G d*„ d+e1¦  «        Z: G d,„ d-e1¦  «        Z; G d.„ d/e1¦  «        Z< G d0„ d1e1¦  «        Z= G d2„ d3e>¦  «        Z? G d4„ d5e1¦  «        Z@dS )6é    N)ÚHeader)Ú	responses)Úurlsplit)Úasync_to_syncÚsync_to_async)Úsettings)ÚsignalsÚsigning)ÚDisallowedRedirect)ÚDjangoJSONEncoder)ÚSimpleCookie)Útimezone)ÚCaseInsensitiveMapping)Ú
iri_to_uri)Úcached_property)ÚMAX_URL_REDIRECT_LENGTHÚcontent_disposition_headerÚ	http_date)Ú_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   ó6   — e Zd Zd„ Zd	d„Zd„ Zd„ Zd
d„Zd„ ZdS )ÚResponseHeadersc                 ó\   — i | _         |r |                      |¦  «        D ]\  }}|| |<   ŒdS dS )zm
        Populate the initial data using __setitem__ to ensure values are
        correctly encoded.
        N)Ú_storeÚ_unpack_items)ÚselfÚdataÚheaderÚvalues       úa/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/http/response.pyÚ__init__zResponseHeaders.__init__&   sS   € ð
 ˆŒØð 	%Ø!%×!3Ò!3°DÑ!9Ô!9ð %ð %‘�˜Ø$��V‘�ð	%ð 	%ð%ð %ó    Fc                 óˆ  — 	 t          |t          ¦  «        r|                     |¦  «         nOt          |t          ¦  «        r|                     |¦  «        }n$t          |¦  «        }|                     |¦  «         d|v sd|v rt          d|›d�¦  «        ‚nª# t          $ r�}t          |t          ¦  «        rd|v s!d|v st          |t          ¦  «        rd|v sd|v rt          d|›d�¦  «        |‚|r/t          |dt          j	        ¬¦  «                             ¦   «         }n|xj
        d	|z  z  c_
        ‚ Y d
}~nd
}~ww xY w|S )zé
        Convert headers key/value to ascii/latin-1 native strings.
        `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
        `value` can't be represented in the given charset, apply MIME-encoding.
        ú
úz*Header values can't contain newlines (got ú)ó   
ó   úutf-8)Ú
maxlinelenz,, HTTP response headers must be in %s formatN)Ú
isinstanceÚstrÚencodeÚbytesÚdecodeÚBadHeaderErrorÚUnicodeErrorr   ÚsysÚmaxsizeÚreason)r   r   ÚcharsetÚmime_encodeÚes        r   Ú_convert_to_charsetz#ResponseHeaders._convert_to_charset0   sŽ  € ð	Ý˜%¥Ñ%Ô%ð 	&à—’˜WÑ%Ô%Ð%Ð%Ý˜E¥5Ñ)Ô)ð &àŸš WÑ-Ô-��å˜E™
œ
�à—’˜WÑ%Ô%Ð%Ø�uˆ}ˆ} ¨  Ý$ØKÀÐKÐKÐKñô ð ð !.øõ ð 	ð 	ð 	õ
 ˜5¥%Ñ(Ô(ð ¨e°u¨n¨nÀÈÀÀÝ˜5¥#Ñ&Ô&ð AOØ,0°E¨M¨M¸TÀU¸]¸]å$ØKÀÐKÐKÐKñô àðð ð Ý˜u g½#¼+ÐFÑFÔF×MÒMÑOÔO��à�”ÐJÈWÑTÑT�”Øð ����øøøøð	øøøð  ˆs   ‚BB Â
D?Â"BD:Ä:D?c                 ó0   — |                       |¦  «         d S ©N)Úpop)r   Úkeys     r   Ú__delitem__zResponseHeaders.__delitem__W   s   € Ø�Š�‰Œˆˆˆr!   c                 óž   — |                       |d¦  «        }|                       |dd¬¦  «        }||f| j        |                     ¦   «         <   d S )NÚasciiúlatin-1T)r5   )r7   r   Úlower©r   r;   r   s      r   Ú__setitem__zResponseHeaders.__setitem__Z   sO   € Ø×&Ò& s¨GÑ4Ô4ˆØ×(Ò(¨°	ÀtÐ(ÑLÔLˆØ$'¨ <ˆŒ�C—I’I‘K”KÑ Ð Ð r!   Nc                 ó\   — | j                              |                     ¦   «         |¦  «        S r9   )r   r:   r@   )r   r;   Údefaults      r   r:   zResponseHeaders.pop_   s    € ØŒ{�Š˜sŸyšy™{œ{¨GÑ4Ô4Ð4r!   c                 ó   — || vr|| |<   d S d S r9   © rA   s      r   Ú
setdefaultzResponseHeaders.setdefaultb   s   € Ø�dˆ?ˆ?ØˆD�‰IˆIˆIð ˆ?r!   ©Fr9   )	Ú__name__Ú
__module__Ú__qualname__r    r7   r<   rB   r:   rG   rF   r!   r   r   r   %   sy   € € € € € ð%ð %ð %ð%ð %ð %ð %ðNð ð ð0ð 0ð 0ð
5ð 5ð 5ð 5ðð ð ð ð r!   r   c                   ó   — e Zd ZdS )r/   N©rI   rJ   rK   rF   r!   r   r/   r/   g   ó   € € € € € Ø€Dr!   r/   c                   ó:  — e Zd ZdZdZ	 d!d„Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Z	e	j        d„ ¦   «         Z	d	„ Z
e
Zed
„ ¦   «         Zd„ Zd„ Zd„ Zd„ ZeZd„ Zd"d„Z	 	 	 	 	 	 	 	 d#d„Zd„ Zd$d„Zd%d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Z dS )&ÚHttpResponseBasezÖ
    An HTTP response base class with dictionary-accessed headers.

    This class doesn't handle content. It should not be used directly.
    Use the HttpResponse and StreamingHttpResponse subclasses instead.
    éÈ   Nc                 óº  — t          |¦  «        | _        || _        d| j        vr|€
d| j        › �}|| j        d<   n|rt	          d¦  «        ‚g | _        d | _        t          ¦   «         | _        d| _	        |�]	 t          |¦  «        | _        n$# t          t          f$ r t          d¦  «        ‚w xY wd| j        cxk    rdk    sn t	          d¦  «        ‚|| _        d S )	NúContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.éd   iW  z4HTTP status code must be an integer from 100 to 599.)r   ÚheadersÚ_charsetr4   Ú
ValueErrorÚ_resource_closersÚ_handler_classr   ÚcookiesÚclosedÚintÚstatus_codeÚ	TypeErrorÚ_reason_phrase)r   Úcontent_typeÚstatusr3   r4   rU   s         r   r    zHttpResponseBase.__init__u   s!  € õ ' wÑ/Ô/ˆŒØˆŒØ ¤Ð-Ð-ØÐ#ØC°T´\ÐCÐC�Ø+7ˆDŒL˜Ñ(Ð(Øð 	Ýð8ñô ð ð "$ˆÔð #ˆÔÝ#‘~”~ˆŒØˆŒØÐðHÝ#& v¡;¤;�Ô Ð øÝ¥	Ð*ð Hð Hð HÝÐ FÑGÔGÐGðHøøøð ˜$Ô*Ð1Ð1Ò1Ð1¨cÒ1Ð1Ð1Ð1Ý Ð!WÑXÔXÐXØ$ˆÔÐÐs   Á8B Â!B.c                 óR   — | j         �| j         S t          j        | j        d¦  «        S )NzUnknown Status Code)r_   r   Úgetr]   ©r   s    r   Úreason_phrasezHttpResponseBase.reason_phrase“   s,   € àÔÐ*ØÔ&Ð&õ Œ}˜TÔ-Ð/DÑEÔEÐEr!   c                 ó   — || _         d S r9   )r_   ©r   r   s     r   re   zHttpResponseBase.reason_phrase›   s   € à#ˆÔÐÐr!   c                 óÞ   — | j         �| j         S | j                             d¦  «        x}r8t                               |¦  «        x}r|d                              dd¦  «        S t          j        S )NrS   r4   ú"Ú )rV   rU   rc   Ú_charset_from_content_type_reÚsearchÚreplacer   ÚDEFAULT_CHARSET)r   r`   Úmatcheds      r   r4   zHttpResponseBase.charsetŸ   sr   € àŒ=Ð$Ø”=Ð ð  œ<×+Ò+¨NÑ;Ô;Ð;ˆ<ð 	;Ý7×>Ò>¸|ÑLÔLÐLˆwð ;ð
 ˜yÔ)×1Ò1°#°rÑ:Ô:Ð:ÝÔ'Ð'r!   c                 ó   — || _         d S r9   )rV   rg   s     r   r4   zHttpResponseBase.charset®   s   € àˆŒˆˆr!   c                 ón   — d                      d„ | j                             ¦   «         D ¦   «         ¦  «        S )zHTTP headers as a bytestring.s   
c                 óp   — g | ]3\  }}|                      d ¦  «        dz   |                      d¦  «        z   ‘Œ4S )r>   s   : r?   )r,   )Ú.0r;   r   s      r   ú
<listcomp>z6HttpResponseBase.serialize_headers.<locals>.<listcomp>µ   sN   € ð ð ð á�C˜ð —
’
˜7Ñ#Ô# eÑ+¨e¯lªl¸9Ñ.EÔ.EÑEðð ð r!   )ÚjoinrU   Úitemsrd   s    r   Úserialize_headersz"HttpResponseBase.serialize_headers²   sB   € à�|Š|ðð à"&¤,×"4Ò"4Ñ"6Ô"6ðñ ô ñ
ô 
ð 	
r!   c                 ó8   — d| j         v rd| j         d         z  ndS )NrS   z, "%s"rj   ©rU   rd   s    r   Ú_content_type_for_reprz'HttpResponseBase._content_type_for_repr½   s-   € ð  ¤Ð-Ð-ð �t”| NÔ3Ñ3Ð3àð	
r!   c                 ó   — || j         |<   d S r9   ry   )r   r   r   s      r   rB   zHttpResponseBase.__setitem__Å   s   € Ø$ˆŒ�VÑÐÐr!   c                 ó   — | j         |= d S r9   ry   ©r   r   s     r   r<   zHttpResponseBase.__delitem__È   s   € ØŒL˜Ð Ð Ð r!   c                 ó   — | j         |         S r9   ry   r}   s     r   Ú__getitem__zHttpResponseBase.__getitem__Ë   s   € ØŒ|˜FÔ#Ð#r!   c                 ó   — || j         v S )z$Case-insensitive check for a header.ry   r}   s     r   Ú
has_headerzHttpResponseBase.has_headerÎ   s   € à˜œÐ%Ð%r!   c                 ó4   — | j                              ¦   «         S r9   )rU   rv   rd   s    r   rv   zHttpResponseBase.itemsÔ   s   € ØŒ|×!Ò!Ñ#Ô#Ð#r!   c                 ó8   — | j                              ||¦  «        S r9   )rU   rc   )r   r   Ú	alternates      r   rc   zHttpResponseBase.get×   s   € ØŒ|×Ò ¨	Ñ2Ô2Ð2r!   rj   ú/Fc
                 ó  — || j         |<   |�át          |t          j        ¦  «        r¶t          j        |¦  «        r$t          j        |t          j        j        ¦  «        }|t          j                             t          j        j        ¬¦  «        z
  }
|
t          j        d¬¦  «        z  }
d}|�t          d¦  «        ‚t          d|
j        dz  |
j        z   ¦  «        }n!|| j         |         d<   nd	| j         |         d<   |�~t          |t          j        ¦  «        r|                     ¦   «         }t          |¦  «        | j         |         d
<   |s1t          t!          j        ¦   «         |z   ¦  «        | j         |         d<   |�|| j         |         d<   |�|| j         |         d<   |rd| j         |         d<   |rd| j         |         d<   |	r7|	                     ¦   «         dvrt          d¦  «        ‚|	| j         |         d<   dS dS )a™  
        Set a cookie.

        ``expires`` can be:
        - a string in the correct format,
        - a naive ``datetime.datetime`` object in UTC,
        - an aware ``datetime.datetime`` object in any time zone.
        If it is a ``datetime.datetime`` object then calculate ``max_age``.

        ``max_age`` can be:
        - int/float specifying seconds,
        - ``datetime.timedelta`` object.
        N)Útzé   )Úsecondsz/'expires' and 'max_age' can't be used together.r   i€Q Úexpiresrj   zmax-ageÚpathÚdomainTÚsecureÚhttponly)ÚlaxÚnoneÚstrictz,samesite must be "lax", "none", or "strict".Úsamesite)rZ   r*   Údatetimer   Úis_naiveÚ
make_awareÚutcÚnowÚ	timedeltarW   ÚmaxÚdaysr‰   Útotal_secondsr\   r   Útimer@   )r   r;   r   Úmax_agerŠ   r‹   rŒ   r�   rŽ   r’   Údeltas              r   Ú
set_cookiezHttpResponseBase.set_cookieÚ   s  € ð2 "ˆŒ�SÑØÐÝ˜'¥8Ô#4Ñ5Ô5ð 7ÝÔ$ WÑ-Ô-ð RÝ&Ô1°'½8Ô;LÔ;PÑQÔQ�GØ¥(Ô"3×"7Ò"7½8Ô;LÔ;PÐ"7Ñ"QÔ"QÑQ�ð �Ô+°AÐ6Ñ6Ô6Ñ6�à�ØÐ&Ý$Ð%VÑWÔWÐWÝ˜a ¤¨eÑ!3°e´mÑ!CÑDÔD��à/6�”˜SÔ! )Ñ,Ð,à+-ˆDŒL˜Ô˜iÑ(ØÐÝ˜'¥8Ô#5Ñ6Ô6ð 2Ø!×/Ò/Ñ1Ô1�Ý+.¨w©<¬<ˆDŒL˜Ô˜iÑ(àð PÝ/8½¼¹¼ÀwÑ9NÑ/OÔ/O�”˜SÔ! )Ñ,ØÐØ(,ˆDŒL˜Ô˜fÑ%ØÐØ*0ˆDŒL˜Ô˜hÑ'Øð 	/Ø*.ˆDŒL˜Ô˜hÑ'Øð 	1Ø,0ˆDŒL˜Ô˜jÑ)Øð 	5Ø�~Š~ÑÔÐ'@Ð@Ð@Ý Ð!OÑPÔPÐPØ,4ˆDŒL˜Ô˜jÑ)Ð)Ð)ð	5ð 	5r!   c                 ó<   — | j                              ||¦  «         dS )z,Set a header unless it has already been set.N)rU   rG   rA   s      r   rG   zHttpResponseBase.setdefault  s    € àŒ×Ò  UÑ+Ô+Ð+Ð+Ð+r!   c                 óv   — t          j        ||z   ¬¦  «                             |¦  «        } | j        ||fi |¤ŽS )N)Úsalt)r
   Úget_cookie_signerÚsignrŸ   )r   r;   r   r¢   Úkwargss        r   Úset_signed_cookiez"HttpResponseBase.set_signed_cookie  sC   € ÝÔ)¨s°T©zÐ:Ñ:Ô:×?Ò?ÀÑFÔFˆØˆtŒ˜s EÐ4Ð4¨VÐ4Ð4Ð4r!   c           	      óœ   — |                      d¦  «        p|o|                     ¦   «         dk    }|                      |d|||d|¬¦  «         d S )N)z	__Secure-z__Host-r�   r   zThu, 01 Jan 1970 00:00:00 GMT)r�   r‹   rŒ   r�   rŠ   r’   )Ú
startswithr@   rŸ   )r   r;   r‹   rŒ   r’   r�   s         r   Údelete_cookiezHttpResponseBase.delete_cookie"  sq   € ð
 —’Ð 8Ñ9Ô9ð 
ØÐ3˜ŸšÑ)Ô)¨VÒ3ð 	ð 	�ŠØØØØØØ3Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r!   c                 ó  — t          |t          t          f¦  «        rt          |¦  «        S t          |t          ¦  «        r't          |                     | j        ¦  «        ¦  «        S t          |¦  «                             | j        ¦  «        S )z=Turn a value into a bytestring encoded in the output charset.)r*   r-   Ú
memoryviewr+   r,   r4   rg   s     r   Ú
make_byteszHttpResponseBase.make_bytes6  sq   € õ �e�e¥ZÐ0Ñ1Ô1ð 	 Ý˜‘<”<ÐÝ�e�SÑ!Ô!ð 	5Ý˜Ÿš d¤lÑ3Ô3Ñ4Ô4Ð4å�5‰zŒz× Ò  ¤Ñ.Ô.Ð.r!   c                 óÚ   — | j         D ]}	  |¦   «          Œ# t          $ r Y Œw xY w| j                              ¦   «          d| _        t          j                             | j        ¬¦  «         d S )NT)Úsender)rX   Ú	ExceptionÚclearr[   r	   Úrequest_finishedÚsendrY   )r   Úclosers     r   ÚclosezHttpResponseBase.closeK  s‡   € ØÔ,ð 	ð 	ˆFðØ�‘”��øÝð ð ð Ø�ðøøøð 	Ô×$Ò$Ñ&Ô&Ð&ØˆŒÝÔ ×%Ò%¨TÔ-@Ð%ÑAÔAÐAÐAÐAs   ‹
–
#¢#c                 ó:   — t          d| j        j        z  ¦  «        ‚©Nz This %s instance is not writable©ÚOSErrorÚ	__class__rI   ©r   Úcontents     r   ÚwritezHttpResponseBase.writeV  ó   € ÝÐ8¸4¼>Ô;RÑRÑSÔSÐSr!   c                 ó   — d S r9   rF   rd   s    r   ÚflushzHttpResponseBase.flushY  s   € Øˆr!   c                 ó:   — t          d| j        j        z  ¦  «        ‚)Nz)This %s instance cannot tell its positionr·   rd   s    r   ÚtellzHttpResponseBase.tell\  s!   € ÝØ7¸$¼.Ô:QÑQñ
ô 
ð 	
r!   c                 ó   — dS ©NFrF   rd   s    r   ÚreadablezHttpResponseBase.readabled  ó   € Øˆur!   c                 ó   — dS rÃ   rF   rd   s    r   ÚseekablezHttpResponseBase.seekableg  rÅ   r!   c                 ó   — dS rÃ   rF   rd   s    r   ÚwritablezHttpResponseBase.writablej  rÅ   r!   c                 ó:   — t          d| j        j        z  ¦  «        ‚r¶   r·   )r   Úliness     r   Ú
writelineszHttpResponseBase.writelinesm  r½   r!   )NNNNNr9   )rj   NNr…   NFFN)rj   )r…   NN)!rI   rJ   rK   Ú__doc__r]   r    Úpropertyre   Úsetterr4   rw   Ú	__bytes__rz   rB   r<   r   r�   Ú__contains__rv   rc   rŸ   rG   r¦   r©   r¬   r´   r¼   r¿   rÁ   rÄ   rÇ   rÉ   rÌ   rF   r!   r   rP   rP   k   sB  € € € € € ðð ð €Kð RVð%ð %ð %ð %ð< ðFð Fñ „XðFð Ôð$ð $ñ Ôð$ð ð(ð (ñ „Xð(ð „^ðð ñ „^ðð
ð 
ð 
ð "€Iàð
ð 
ñ „Xð
ð%ð %ð %ð!ð !ð !ð$ð $ð $ð&ð &ð &ð €Lð$ð $ð $ð3ð 3ð 3ð 3ð ØØØØØØØð>5ð >5ð >5ð >5ð@,ð ,ð ,ð5ð 5ð 5ð 5ð
ð 
ð 
ð 
ð(/ð /ð /ð*	Bð 	Bð 	BðTð Tð Tðð ð ð
ð 
ð 
ðð ð ðð ð ðð ð ðTð Tð Tð Tð Tr!   rP   c                   ó¨   ‡ — e Zd ZdZdZdˆ fd„	Zd„ Zd„ ZeZe	d„ ¦   «         Z
e
j        d„ ¦   «         Z
ed	„ ¦   «         Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚHttpResponsezs
    An HTTP response class with a string as content.

    This content can be read, appended to, or replaced.
    Fr!   c                 óH   •—  t          ¦   «         j        |i |¤Ž || _        d S r9   )Úsuperr    r»   )r   r»   Úargsr¥   r¹   s       €r   r    zHttpResponse.__init__z  s*   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)àˆŒˆˆr!   c                 ó<   — d| j         j        | j        | j        dœz  S ©Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)Úclsr]   r`   ©r¹   rI   r]   rz   rd   s    r   Ú__repr__zHttpResponse.__repr__  s/   € ØFØ”>Ô*ØÔ+Ø Ô7ðJ
ð J
ñ 
ð 	
r!   c                 ó@   — |                       ¦   «         dz   | j        z   S )z6Full HTTP message, including headers, as a bytestring.s   

)rw   r»   rd   s    r   Ú	serializezHttpResponse.serialize†  s    € à×%Ò%Ñ'Ô'¨+Ñ5¸¼ÑDÐDr!   c                 ó6   — d                      | j        ¦  «        S ©Nr!   )ru   Ú
_containerrd   s    r   r»   zHttpResponse.contentŒ  s   € à�xŠx˜œÑ(Ô(Ð(r!   c                 óŒ  ‡ — t          |d¦  «        rzt          |t          t          t          f¦  «        sXd                     ˆ fd„|D ¦   «         ¦  «        }t          |d¦  «        r&	 |                     ¦   «          n&# t          $ r Y nw xY wn‰                      |¦  «        }|g‰ _	        ‰ j
                             dd ¦  «         d S )NÚ__iter__r!   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r9   ©r¬   )rs   Úchunkr   s     €r   ú	<genexpr>z'HttpResponse.content.<locals>.<genexpr>–  s/   øè è € ÐIÐI¸%˜tŸš¨uÑ5Ô5ÐIÐIÐIÐIÐIÐIr!   r´   Útext)Úhasattrr*   r-   r«   r+   ru   r´   r¯   r¬   rà   Ú__dict__r:   )r   r   r»   s   `  r   r»   zHttpResponse.content�  sá   ø€ õ �5˜*Ñ%Ô%ð 
	-­jØ•E�:¥sÐ+ñ/
ô /
ð 
	-ð —h’hÐIÐIÐIÐIÀ5ÐIÑIÔIÑIÔIˆGÝ�u˜gÑ&Ô&ð ðØ—K’K‘M”M�M�MøÝ ð ð ð Ø�Dðøøøðð —o’o eÑ,Ô,ˆGà"˜)ˆŒØŒ×Ò˜& $Ñ'Ô'Ð'Ð'Ð's   Á&A; Á;
BÂBc                 óD   — | j                              | j        pd¦  «        S )Nr(   )r»   r.   r4   rd   s    r   rç   zHttpResponse.text¢  s   € àŒ|×"Ò" 4¤<Ð#:°7Ñ;Ô;Ð;r!   c                 ó*   — t          | j        ¦  «        S r9   )Úiterrà   rd   s    r   râ   zHttpResponse.__iter__¦  s   € Ý�D”OÑ$Ô$Ð$r!   c                 ó`   — | j                              |                      |¦  «        ¦  «         d S r9   )rà   Úappendr¬   rº   s     r   r¼   zHttpResponse.write©  s*   € ØŒ×Ò˜tŸš¨wÑ7Ô7Ñ8Ô8Ð8Ð8Ð8r!   c                 ó*   — t          | j        ¦  «        S r9   )Úlenr»   rd   s    r   rÁ   zHttpResponse.tell¬  s   € Ý�4”<Ñ Ô Ð r!   c                 ó   — | j         S r9   )r»   rd   s    r   ÚgetvaluezHttpResponse.getvalue¯  s
   € ØŒ|Ðr!   c                 ó   — dS )NTrF   rd   s    r   rÉ   zHttpResponse.writable²  s   € Øˆtr!   c                 ó:   — |D ]}|                       |¦  «         Œd S r9   )r¼   )r   rË   Úlines      r   rÌ   zHttpResponse.writelinesµ  s0   € Øð 	ð 	ˆDØ�JŠJ�tÑÔÐÐð	ð 	r!   )r!   )rI   rJ   rK   rÍ   Ú	streamingr    rÛ   rÝ   rÐ   rÎ   r»   rÏ   r   rç   râ   r¼   rÁ   rò   rÉ   rÌ   Ú__classcell__©r¹   s   @r   rÓ   rÓ   q  s!  ø€ € € € € ðð ð €Iðð ð ð ð ð ð

ð 
ð 
ðEð Eð Eð €Iàð)ð )ñ „Xð)ð „^ð(ð (ñ „^ð(ð" ð<ð <ñ „_ð<ð%ð %ð %ð9ð 9ð 9ð!ð !ð !ðð ð ðð ð ðð ð ð ð ð ð r!   rÓ   c                   ó¨   ‡ — e Zd ZdZdZdˆ fd„	Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
e
j        d	„ ¦   «         Z
d
„ Zd„ Zd„ Zd„ Zˆ xZS )ÚStreamingHttpResponsea$  
    A streaming HTTP response class with an iterator as content.

    This should only be iterated once, when the response is streamed to the
    client. However, it can be appended to or replaced with a new iterator
    that wraps the original content (or yields entirely new content).
    TrF   c                 óH   •—  t          ¦   «         j        |i |¤Ž || _        d S r9   )rÕ   r    Ústreaming_content)r   rü   rÖ   r¥   r¹   s       €r   r    zStreamingHttpResponse.__init__Å  s/   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ð "3ˆÔÐÐr!   c                 ó<   — d| j         j        | j        | j        dœz  S rØ   )r¹   rK   r]   rz   rd   s    r   rÛ   zStreamingHttpResponse.__repr__Ë  s/   € ØFØ”>Ô.ØÔ+Ø Ô7ðJ
ð J
ñ 
ð 	
r!   c                 ó:   — t          d| j        j        z  ¦  «        ‚)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.©ÚAttributeErrorr¹   rI   rd   s    r   r»   zStreamingHttpResponse.contentÒ  s'   € åð+Ø-1¬^Ô-DñEñ
ô 
ð 	
r!   c                 ó:   — t          d| j        j        z  ¦  «        ‚)Nz)This %s instance has no `text` attribute.rÿ   rd   s    r   rç   zStreamingHttpResponse.textÙ  s!   € åØ7¸$¼.Ô:QÑQñ
ô 
ð 	
r!   c                 óv   ‡ ‡— ‰ j         r‰ j        Šˆˆ fd„} |¦   «         S t          ‰ j        ‰ j        ¦  «        S )Nc                 óR   •K  — ‰2 3 d {V —†} ‰                      | ¦  «        W V — Œ 6 d S r9   rä   )ÚpartÚ	_iteratorr   s    €€r   Úawrapperz9StreamingHttpResponse.streaming_content.<locals>.awrapperæ  sV   øè è € Ø"+ð 0ð 0ð 0ð 0ð 0ð 0ð 0˜$ØŸ/š/¨$Ñ/Ô/Ð/Ð/Ð/Ð/Ð/ð #, ) )s   †&)Úis_asyncr  Úmapr¬   )r   r  r  s   ` @r   rü   z'StreamingHttpResponse.streaming_contentß  sW   øø€ àŒ=ð 	8ð œˆIð0ð 0ð 0ð 0ð 0ð 0ð �8‘:”:Ðå�t”¨¬Ñ7Ô7Ð7r!   c                 ó0   — |                       |¦  «         d S r9   )Ú_set_streaming_contentrg   s     r   rü   z'StreamingHttpResponse.streaming_contentî  s   € à×#Ò# EÑ*Ô*Ð*Ð*Ð*r!   c                 óø   — 	 t          |¦  «        | _        d| _        n+# t          $ r t	          |¦  «        | _        d| _        Y nw xY wt          |d¦  «        r!| j                             |j        ¦  «         d S d S )NFTr´   )	rì   r  r  r^   Úaiterrè   rX   rî   r´   rg   s     r   r
  z,StreamingHttpResponse._set_streaming_contentò  s�   € ð	!Ý! %™[œ[ˆDŒNØ!ˆDŒMˆMøÝð 	!ð 	!ð 	!Ý" 5™\œ\ˆDŒNØ ˆDŒMˆMˆMð	!øøøõ �5˜'Ñ"Ô"ð 	7ØÔ"×)Ò)¨%¬+Ñ6Ô6Ð6Ð6Ð6ð	7ð 	7s   ‚ ž%AÁAc           
      ó  — 	 t          | j        ¦  «        S # t          $ r_ t          j        dt
          d¬¦  «         d„ }t          | j        t           t          |¦  «        | j	        ¦  «        ¦  «        ¦  «        cY S w xY w)NzƒStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.é   ©Ú
stacklevelc              “   óN   K  — g }| 2 3 d {V —†}|                      |¦  «         Œ6 |S r9   )rî   )r  Úas_listrå   s      r   Úto_listz/StreamingHttpResponse.__iter__.<locals>.to_list	  sR   è è € Ø�Ø#,ð *ð *ð *ð *ð *ð *ð *˜%Ø—N’N 5Ñ)Ô)Ð)Ð)ð $-à�s   ‡$)
rì   rü   r^   ÚwarningsÚwarnÚWarningr  r¬   r   r  )r   r  s     r   râ   zStreamingHttpResponse.__iter__ý  s£   € ð	VÝ˜Ô.Ñ/Ô/Ð/øÝð 	Vð 	Vð 	VÝŒMðPåØð	ñ ô ð ðð ð õ �t”­Ð-C­]¸7Ñ-CÔ-CÀDÄNÑ-SÔ-SÑ(TÔ(TÑUÔUÐUÐUÐUð	Vøøøs   ‚ –A&A?Á>A?c                óð   K  — 	 | j         2 3 d {V —†}|W V — Œ6 d S # t          $ rP t          j        dt          d¬¦  «          t          t          ¦  «        | j         ¦  «        ƒ d {V —†D ]}|W V — ŒY d S w xY w)Nz…StreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.r  r  )rü   r^   r  r  r  r   Úlist)r   r  s     r   Ú	__aiter__zStreamingHttpResponse.__aiter__  sâ   è è € ð	Ø"Ô4ð ð ð ð ð ð ð �dØ�
�
�
�
�
ð 5Ð4Ð4øåð 
	ð 
	ð 
	ÝŒMðSåØð	ñ ô ð ð 2�m­DÑ1Ô1°$Ô2HÑIÔIÐIÐIÐIÐIÐIÐIð ð �Ø�
�
�
�
�
ðð ð ð
	øøøs   „ ‹‘ ›AA5Á4A5c                 ó6   — d                      | j        ¦  «        S rß   )ru   rü   rd   s    r   rò   zStreamingHttpResponse.getvalue!  s   € Ø�xŠx˜Ô.Ñ/Ô/Ð/r!   )rF   )rI   rJ   rK   rÍ   rö   r    rÛ   rÎ   r»   rç   rü   rÏ   r
  râ   r  rò   r÷   rø   s   @r   rú   rú   º  s  ø€ € € € € ðð ð €Ið3ð 3ð 3ð 3ð 3ð 3ð
ð 
ð 
ð ð
ð 
ñ „Xð
ð ð
ð 
ñ „Xð
ð
 ð8ð 8ñ „Xð8ð Ôð+ð +ñ Ôð+ð	7ð 	7ð 	7ðVð Vð Vð(ð ð ð 0ð 0ð 0ð 0ð 0ð 0ð 0r!   rú   c                   ó>   ‡ — e Zd ZdZdZdddœˆ fd„
Zˆ fd„Zd„ Zˆ xZS )	ÚFileResponsez>
    A streaming HTTP response class optimized for files.
    i   Frj   )Úas_attachmentÚfilenamec                ó|   •— || _         || _        d|vp	|d         d u | _         t          ¦   «         j        |i |¤Ž d S )Nr`   )r  r  Ú_no_explicit_content_typerÕ   r    )r   r  r  rÖ   r¥   r¹   s        €r   r    zFileResponse.__init__,  sU   ø€ Ø*ˆÔØ ˆŒà &Ð(ÐJ¨F°>Ô,BÀdÐ,Jð 	Ô&ð 	�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r!   c                 ó€  •‡ ‡— t          |d¦  «        s(d ‰ _        t          ¦   «                              |¦  «        S |x‰ _        Št          ‰d¦  «        r‰ j                             ‰j        ¦  «         t          ˆˆ fd„d¦  «        }‰                      ‰¦  «         t          ¦   «                              |¦  «         d S )NÚreadr´   c                  ó8   •— ‰                       ‰j        ¦  «        S r9   )r"  Ú
block_size©Úfileliker   s   €€r   ú<lambda>z5FileResponse._set_streaming_content.<locals>.<lambda><  s   ø€ ˜XŸ]š]¨4¬?Ñ;Ô;€ r!   r!   )	rè   Úfile_to_streamrÕ   r
  rX   rî   r´   rì   Úset_headers)r   r   r&  r¹   s   ` @€r   r
  z#FileResponse._set_streaming_content4  s½   øøø€ Ý�u˜fÑ%Ô%ð 	9Ø"&ˆDÔÝ‘7”7×1Ò1°%Ñ8Ô8Ð8à).Ð.ˆÔ˜hÝ�8˜WÑ%Ô%ð 	:ØÔ"×)Ò)¨(¬.Ñ9Ô9Ð9ÝÐ;Ð;Ð;Ð;Ð;¸SÑAÔAˆØ×Ò˜Ñ"Ô"Ð"Ý‰Œ×&Ò& uÑ-Ô-Ð-Ð-Ð-r!   c                 ó  ‡ ‡— t          ‰dd¦  «        }t          |t          ¦  «        r|nd}t          ‰d¦  «        o$t          ‰d¦  «         p‰                     ¦   «         }t          ‰d¦  «        �r|rj‰                     ¦   «         }‰                     dt          j        ¦  «         ‰                     ¦   «         |z
  ‰ j	        d<   ‰                     |¦  «         �nt          ‰d¦  «        r7‰ 
                    ¦   «         j        ‰                     ¦   «         z
  ‰ j	        d<   nÀt          j                             |¦  «        r<t          j                             |¦  «        ‰                     ¦   «         z
  ‰ j	        d<   nd|rbt!          t#          ˆˆ fd	„d¦  «        ¦  «        ‰ j	        d<   ‰                     t%          ‰ j	        d         ¦  «         t          j        ¦  «         t          j                             ‰ j        p|¦  «        }‰ j        rL|r@t-          j        |¦  «        \  }}d
dddddœ                     ||¦  «        }|pd‰ j	        d<   n
d‰ j	        d<   t3          ‰ j        |¦  «        x}r|‰ j	        d<   dS dS )zœ
        Set some common response headers (Content-Length, Content-Type, and
        Content-Disposition) based on the `filelike` response content.
        Únamerj   ÚseekrÇ   rÁ   r   zContent-LengthÚ	getbufferc                  óR   •— t          ‰                      ‰j        ¦  «        ¦  «        S r9   )rð   r"  r$  r%  s   €€r   r'  z*FileResponse.set_headers.<locals>.<lambda>Z  s   ø€ �S §¢¨t¬Ñ!?Ô!?Ñ@Ô@€ r!   zapplication/x-brotlizapplication/x-bzipzapplication/x-compresszapplication/gzipzapplication/x-xz)ÚbrÚbzip2ÚcompressÚgzipÚxzzapplication/octet-streamrS   zContent-DispositionN)Úgetattrr*   r+   rè   rÇ   rÁ   r,  ÚioÚSEEK_ENDrU   r-  ÚnbytesÚosr‹   ÚexistsÚgetsizeÚsumrì   r\   Úbasenamer  r   Ú	mimetypesÚ
guess_typerc   r   r  )r   r&  r  rÇ   Úinitial_positionr`   ÚencodingÚcontent_dispositions   ``      r   r)  zFileResponse.set_headers@  sª  øø€ õ
 ˜8 V¨RÑ0Ô0ˆÝ)¨(µCÑ8Ô8Ð@�8�8¸bˆÝ˜8 VÑ,Ô,ð 
Ý˜ *Ñ-Ô-Ð-ÐD°×1BÒ1BÑ1DÔ1Dð 	õ �8˜VÑ$Ô$ñ 	MØð Ø#+§=¢=¡?¤?Ð Ø—’˜a¥¤Ñ-Ô-Ð-Ø19·²±´ÐCSÑ1S�”Ð-Ñ.Ø—’Ð.Ñ/Ô/Ð/Ñ/Ý˜ ;Ñ/Ô/ð à×&Ò&Ñ(Ô(Ô/°(·-²-±/´/ÑAð ”Ð-Ñ.Ð.õ ”—’ Ñ)Ô)ð å”G—O’O HÑ-Ô-°·²±´Ñ?ð ”Ð-Ñ.øð ð 	MÝ-0ÝÐ@Ð@Ð@Ð@Ð@À!ÑDÔDñ.ô .ˆDŒLÐ)Ñ*ð �MŠM�3˜tœ|Ð,<Ô=Ñ>Ô>Ð>ÅÄÑLÔLÐLå”7×#Ò# D¤MÐ$=°XÑ>Ô>ˆØÔ)ð 	JØð JÝ)2Ô)=¸hÑ)GÔ)GÑ&�˜hð 1Ø1Ø 8Ø.Ø,ð ð  ÷ ’#�h Ñ-Ô-ð ð !Ð>Ð$>ð ”˜^Ñ,Ð,ð 0J�”˜^Ñ,å"<ØÔ ñ#
ô #
ð 
Ðð 	Fð 3FˆDŒLÐ.Ñ/Ð/Ð/ð	Fð 	Fr!   )	rI   rJ   rK   rÍ   r$  r    r
  r)  r÷   rø   s   @r   r  r  %  s‡   ø€ € € € € ðð ð €Jà,1¸Bð *ð *ð *ð *ð *ð *ð *ð
.ð 
.ð 
.ð 
.ð 
.ð4Fð 4Fð 4Fð 4Fð 4Fð 4Fð 4Fr!   r  c                   óF   ‡ — e Zd Zg d¢Zdˆ fd„	Z ed„ ¦  «        Zd„ Zˆ xZS )ÚHttpResponseRedirectBase)ÚhttpÚhttpsÚftpFc                 ór  •—  t          ¦   «         j        |i |¤Ž t          |¦  «        | d<   t          |¦  «        }t	          |¦  «        t
          k    rt          dt
          › d�¦  «        ‚t          |¦  «        }|r| j        | _	        |j
        r%|j
        | j        vrt          d|j
        z  ¦  «        ‚d S d S )NÚLocationzUnsafe redirect exceeding z charactersz)Unsafe redirect to URL with protocol '%s')rÕ   r    r   r+   rð   r   r   r   Ústatus_code_preserve_requestr]   ÚschemeÚallowed_schemes)r   Úredirect_toÚpreserve_requestrÖ   r¥   Úredirect_to_strÚparsedr¹   s          €r   r    z!HttpResponseRedirectBase.__init__z  sÛ   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ý% kÑ2Ô2ˆˆZÑÝ˜kÑ*Ô*ˆÝˆÑÔÕ"9Ò9Ð9Ý$ØQÕ-DÐQÐQÐQñô ð õ ˜/Ñ*Ô*ˆØð 	AØ#Ô@ˆDÔØŒ=ð 	˜Vœ]°$Ô2FÐFÐFÝ$Ø;¸f¼mÑKñô ð ð	ð 	ÐFÐFr!   c                 ó   — | d         S )NrH  rF   rd   s    r   r'  z!HttpResponseRedirectBase.<lambda>Š  s   €   ZÔ 0€ r!   c                 óH   — d| j         j        | j        | j        | j        dœz  S )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)rÙ   r]   r`   Úurl)r¹   rI   r]   rz   rR  rd   s    r   rÛ   z!HttpResponseRedirectBase.__repr__Œ  s2   € àRà”~Ô.Ø#Ô/Ø $Ô ;Ø”xð	ð ñð	
r!   rH   )	rI   rJ   rK   rK  r    rÎ   rR  rÛ   r÷   rø   s   @r   rC  rC  w  sl   ø€ € € € € Ø.Ð.Ð.€Oðð ð ð ð ð ð  ˆ(Ð0Ð0Ñ
1Ô
1€Cð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r!   rC  c                   ó   — e Zd ZdZdZdS )ÚHttpResponseRedirecti.  i3  N©rI   rJ   rK   r]   rI  rF   r!   r   rT  rT  ˜  ó   € € € € € Ø€KØ#&Ð Ð Ð r!   rT  c                   ó   — e Zd ZdZdZdS )ÚHttpResponsePermanentRedirecti-  i4  NrU  rF   r!   r   rX  rX  �  rV  r!   rX  c                   óL   ‡ — e Zd ZdZˆ fd„Zej        j        d„ ¦   «         Zˆ xZS )ÚHttpResponseNotModifiedi0  c                 ó@   •—  t          ¦   «         j        |i |¤Ž | d= d S )Nzcontent-type)rÕ   r    )r   rÖ   r¥   r¹   s      €r   r    z HttpResponseNotModified.__init__¥  s-   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø�Ð Ð Ð r!   c                 ó6   — |rt          d¦  «        ‚g | _        d S )Nz7You cannot set content to a 304 (Not Modified) response)r   rà   rg   s     r   r»   zHttpResponseNotModified.content©  s,   € àð 	Ý ØIñô ð ð ˆŒˆˆr!   )	rI   rJ   rK   r]   r    rÓ   r»   rÏ   r÷   rø   s   @r   rZ  rZ  ¢  s_   ø€ € € € € Ø€Kð!ð !ð !ð !ð !ð ÔÔ ðð ñ !Ô ðð ð ð ð r!   rZ  c                   ó   — e Zd ZdZdS )ÚHttpResponseBadRequesti�  N©rI   rJ   rK   r]   rF   r!   r   r^  r^  ²  ó   € € € € € Ø€K€K€Kr!   r^  c                   ó   — e Zd ZdZdS )ÚHttpResponseNotFoundi”  Nr_  rF   r!   r   rb  rb  ¶  r`  r!   rb  c                   ó   — e Zd ZdZdS )ÚHttpResponseForbiddeni“  Nr_  rF   r!   r   rd  rd  º  r`  r!   rd  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚHttpResponseNotAllowedi•  c                 ój   •—  t          ¦   «         j        |i |¤Ž d                     |¦  «        | d<   d S )Nz, ÚAllow)rÕ   r    ru   )r   Úpermitted_methodsrÖ   r¥   r¹   s       €r   r    zHttpResponseNotAllowed.__init__Á  s9   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ØŸ	š	Ð"3Ñ4Ô4ˆˆW‰ˆˆr!   c                 óJ   — d| j         j        | j        | j        | d         dœz  S )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>rh  )rÙ   r]   r`   ÚmethodsrÚ   rd   s    r   rÛ   zHttpResponseNotAllowed.__repr__Å  s6   € ØTØ”>Ô*ØÔ+Ø Ô7Ø˜G”}ð	X
ð X
ñ 
ð 	
r!   )rI   rJ   rK   r]   r    rÛ   r÷   rø   s   @r   rf  rf  ¾  sL   ø€ € € € € Ø€Kð5ð 5ð 5ð 5ð 5ð
ð 
ð 
ð 
ð 
ð 
ð 
r!   rf  c                   ó   — e Zd ZdZdS )ÚHttpResponseGoneiš  Nr_  rF   r!   r   rm  rm  Î  r`  r!   rm  c                   ó   — e Zd ZdZdS )ÚHttpResponseServerErroriô  Nr_  rF   r!   r   ro  ro  Ò  r`  r!   ro  c                   ó   — e Zd ZdS )ÚHttp404NrM   rF   r!   r   rq  rq  Ö  rN   r!   rq  c                   ó*   ‡ — e Zd ZdZeddfˆ fd„	Zˆ xZS )ÚJsonResponseaH  
    An HTTP response class that consumes data to be serialized to JSON.

    :param data: Data to be dumped into json. By default only ``dict`` objects
      are allowed to be passed due to a security flaw before ECMAScript 5. See
      the ``safe`` parameter for more information.
    :param encoder: Should be a json encoder class. Defaults to
      ``django.core.serializers.json.DjangoJSONEncoder``.
    :param safe: Controls if only ``dict`` objects may be serialized. Defaults
      to ``True``.
    :param json_dumps_params: A dictionary of kwargs passed to json.dumps().
    TNc                 óæ   •— |r$t          |t          ¦  «        st          d¦  «        ‚|€i }|                     dd¦  «         t	          j        |fd|i|¤Ž} t          ¦   «         j        dd|i|¤Ž d S )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.r`   zapplication/jsonrÙ   r»   rF   )r*   Údictr^   rG   ÚjsonÚdumpsrÕ   r    )r   r   ÚencoderÚsafeÚjson_dumps_paramsr¥   r¹   s         €r   r    zJsonResponse.__init__è  sŸ   ø€ ð ð 	�
 4­Ñ.Ô.ð 	Ýð+ñô ð ð Ð$Ø "ÐØ×Ò˜.Ð*<Ñ=Ô=Ð=ÝŒz˜$ÐAÐA GÐAÐ/@ÐAÐAˆØ�‰ŒÔÐ0Ð0 Ð0¨Ð0Ð0Ð0Ð0Ð0r!   )rI   rJ   rK   rÍ   r   r    r÷   rø   s   @r   rs  rs  Ú  sR   ø€ € € € € ðð ð  "ØØð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1r!   rs  )Ar“   r5  rv  r=  r8  Úrer1   rœ   r  Úemail.headerr   Úhttp.clientr   Úurllib.parser   Úasgiref.syncr   r   Údjango.confr   Údjango.corer	   r
   Údjango.core.exceptionsr   Údjango.core.serializers.jsonr   Údjango.http.cookier   Údjango.utilsr   Údjango.utils.datastructuresr   Údjango.utils.encodingr   Údjango.utils.functionalr   Údjango.utils.httpr   r   r   Údjango.utils.regex_helperr   ÚIrk   r   rW   r/   rP   rÓ   rú   r  rC  rT  rX  rZ  r^  rb  rd  rf  rm  ro  r¯   rq  rs  rF   r!   r   ú<module>rŒ     sç  ðØ €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à  Ð  Ð  Ð  Ð  Ð  Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø :Ð :Ð :Ð :Ð :Ð :Ø +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !Ø >Ð >Ð >Ð >Ð >Ð >Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð
 7Ð 6Ð 6Ð 6Ð 6Ð 6à 0Ð 0Ø'¨¬ñ!ô !Ð ð
?ð ?ð ?ð ?ð ?Ð,ñ ?ô ?ð ?ðD	ð 	ð 	ð 	ð 	�Zñ 	ô 	ð 	ðCTð CTð CTð CTð CTñ CTô CTð CTðLFð Fð Fð Fð FÐ#ñ Fô Fð FðRh0ð h0ð h0ð h0ð h0Ð,ñ h0ô h0ð h0ðVOFð OFð OFð OFð OFÐ(ñ OFô OFð OFðd
ð 
ð 
ð 
ð 
˜|ñ 
ô 
ð 
ðB'ð 'ð 'ð 'ð 'Ð3ñ 'ô 'ð 'ð
'ð 'ð 'ð 'ð 'Ð$<ñ 'ô 'ð 'ð
ð ð ð ð ˜lñ ô ð ð ð ð ð ð ˜\ñ ô ð ðð ð ð ð ˜<ñ ô ð ðð ð ð ð ˜Lñ ô ð ð
ð 
ð 
ð 
ð 
˜\ñ 
ô 
ð 
ð ð ð ð ð �|ñ ô ð ðð ð ð ð ˜lñ ô ð ð	ð 	ð 	ð 	ð 	ˆiñ 	ô 	ð 	ð1ð 1ð 1ð 1ð 1�<ñ 1ô 1ð 1ð 1ð 1r!   