Ë
    bõhi²c  ã                   ó´  — 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$m%Z%m&Z& d dl'm(Z(  e(dejR                  «      Z* G d„ de «      Z+ G d„ de,«      Z- G d„ d«      Z. G d„ de.«      Z/ G d„ de.«      Z0 G d„ de0«      Z1 G d„ de/«      Z2 G d„ d e2«      Z3 G d!„ d"e2«      Z4 G d#„ d$e/«      Z5 G d%„ d&e/«      Z6 G d'„ d(e/«      Z7 G d)„ d*e/«      Z8 G d+„ d,e/«      Z9 G d-„ d.e/«      Z: G d/„ d0e/«      Z; G d1„ d2e<«      Z= G d3„ d4e/«      Z>y)5é    N)ÚHeader)Ú	responses)Úurlparse)Úasync_to_syncÚsync_to_async)Úsettings)ÚsignalsÚsigning)ÚDisallowedRedirect)ÚDjangoJSONEncoder)ÚSimpleCookie)Útimezone)ÚCaseInsensitiveMapping)Ú
iri_to_uri)ÚMAX_URL_REDIRECT_LENGTHÚcontent_disposition_headerÚ	http_date)Ú_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   ó4   — e Zd Zd„ Zdd„Zd„ Zd„ Zd	d„Zd„ Zy)
ÚResponseHeadersc                 óT   — i | _         |r| j                  |«      D ]
  \  }}|| |<   Œ yy)zm
        Populate the initial data using __setitem__ to ensure values are
        correctly encoded.
        N)Ú_storeÚ_unpack_items)ÚselfÚdataÚheaderÚvalues       úJ/var/www/alwasay/venv/lib/python3.12/site-packages/django/http/response.pyÚ__init__zResponseHeaders.__init__%   s:   € ð
 ˆŒÙØ!%×!3Ñ!3°DÓ!9ò %‘�˜Ø$��V’ñ%ð ó    c                 ó2  — 	 t        |t        «      r|j                  |«       n>t        |t        «      r|j	                  |«      }nt        |«      }|j                  |«       d|v sd|v rt        d|›d�«      ‚	 |S # 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                  ¬«      j                  «       }n|xj                  d	|z  z  c_
        ‚ Y d
}~|S d
}~ww xY w)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 ú)ó   
ó   z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_charset/   s  € ð	Ü˜%¤Ô%à—‘˜WÕ%Ü˜E¤5Ô)àŸ™ WÓ-‘ä˜E›
�à—‘˜WÔ%Ø�u‰} ¨¡Ü$Ø@ÀÀ	ÈÐKóð ð !.ð( ˆøô! ò 	ô
 ˜5¤%Ô(¨e°u©nÀÈÁÜ˜5¤#Ô&¨D°E©M¸TÀU¹]ä$Ø@ÀÀ	ÈÐKóàðñ Ü˜u g¼#¿+¹+ÔF×MÑMÓO‘à—’ÐJÈWÑTÑT•Øó ð ˆûð!	ús   ‚A7A< Á<	DÂBDÄDc                 ó&   — | j                  |«       y ©N)Úpop)r   Úkeys     r   Ú__delitem__zResponseHeaders.__delitem__V   s   € Ø�‰��r    c                 óŽ   — | j                  |d«      }| j                  |dd¬«      }||f| j                  |j                  «       <   y )NÚasciiúlatin-1T)r3   )r5   r   Úlower©r   r9   r   s      r   Ú__setitem__zResponseHeaders.__setitem__Y   sC   € Ø×&Ñ& s¨GÓ4ˆØ×(Ñ(¨°	ÀtÐ(ÓLˆØ$'¨ <ˆ�‰�C—I‘I“KÒ r    Nc                 óV   — | j                   j                  |j                  «       |«      S r7   )r   r8   r>   )r   r9   Údefaults      r   r8   zResponseHeaders.pop^   s   € Ø�{‰{�‰˜sŸy™y›{¨GÓ4Ð4r    c                 ó   — || vr|| |<   y y r7   © r?   s      r   Ú
setdefaultzResponseHeaders.setdefaulta   s   € Ø�d‰?ØˆD�ŠIð r    )Fr7   )	Ú__name__Ú
__module__Ú__qualname__r   r5   r:   r@   r8   rE   rD   r    r   r   r   $   s!   „ ò%ó%òNò0ó
5ór    r   c                   ó   — e Zd Zy)r-   N©rF   rG   rH   rD   r    r   r-   r-   f   ó   „ Ør    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 y)#Ú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        |«      | _        d| j                  cxk  rdk  st	        d«      ‚ t	        d«      ‚|| _        y # t        t        f$ r t        d«      ‚w xY w)	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Ú_charsetr2   Ú
ValueErrorÚ_resource_closersÚ_handler_classr   ÚcookiesÚclosedÚintÚstatus_codeÚ	TypeErrorÚ_reason_phrase)r   Úcontent_typeÚstatusr1   r2   rR   s         r   r   zHttpResponseBase.__init__t   sö   € ô ' wÓ/ˆŒØˆŒØ §¡Ñ-ØÐ#Ø!4°T·\±\°NÐC�Ø+7ˆD�L‰L˜Ò(ÙÜð8óð ð "$ˆÔð #ˆÔÜ#“~ˆŒØˆŒØÐðHÜ#& v£;�Ô ð ˜$×*Ñ*Ô1¨cÒ1Ü Ð!WÓXÐXð 2Ü Ð!WÓXÐXØ$ˆÕøô ¤	Ð*ò HÜÐ FÓGÐGðHús   Á;B? Â?Cc                 ór   — | j                   �| j                   S t        j                  | j                  d«      S )NzUnknown Status Code)r\   r   ÚgetrZ   ©r   s    r   Úreason_phrasezHttpResponseBase.reason_phrase’   s4   € à×ÑÐ*Ø×&Ñ&Ð&ô �}‰}˜T×-Ñ-Ð/DÓEÐEr    c                 ó   — || _         y r7   )r\   ©r   r   s     r   rb   zHttpResponseBase.reason_phraseš   s
   € à#ˆÕr    c                 óä   — | j                   �| j                   S | j                  j                  d«      x}r,t        j	                  |«      x}r|d   j                  dd«      S t        j                  S )NrP   r2   ú"Ú )rS   rR   r`   Ú_charset_from_content_type_reÚsearchÚreplacer   ÚDEFAULT_CHARSET)r   r]   Úmatcheds      r   r2   zHttpResponseBase.charsetž   sn   € à�=‰=Ð$Ø—=‘=Ð ð  Ÿ<™<×+Ñ+¨NÓ;Ð;ˆ<Ð;Ü7×>Ñ>¸|ÓLÐLˆwÐLð
 ˜yÑ)×1Ñ1°#°rÓ:Ð:Ü×'Ñ'Ð'r    c                 ó   — || _         y r7   )rS   rd   s     r   r2   zHttpResponseBase.charset­   s	   € àˆ�r    c           
      óÎ   — dj                  | j                  j                  «       D ��cg c]+  \  }}|j                  d«      dz   |j                  d«      z   ‘Œ- c}}«      S c c}}w )zHTTP headers as a bytestring.s   
r<   s   : r=   )ÚjoinrR   Úitemsr*   r?   s      r   Úserialize_headersz"HttpResponseBase.serialize_headers±   s]   € à�|‰|ð #'§,¡,×"4Ñ"4Ó"6÷á�C˜ð —
‘
˜7Ó# eÑ+¨e¯l©l¸9Ó.EÓEóó
ð 	
ùós   ©0A!
c                 óF   — d| j                   v rd| j                   d   z  S dS )NrP   z, "%s"rg   ©rR   ra   s    r   Ú_content_type_for_reprz'HttpResponseBase._content_type_for_repr¼   s2   € ð  §¡Ñ-ð �t—|‘| NÑ3Ñ3ð	
ð ð	
r    c                 ó"   — || j                   |<   y r7   rs   )r   r   r   s      r   r@   zHttpResponseBase.__setitem__Ä   s   € Ø$ˆ�‰�VÒr    c                 ó   — | j                   |= y r7   rs   ©r   r   s     r   r:   zHttpResponseBase.__delitem__Ç   s   € Ø�L‰L˜Ñ r    c                 ó    — | j                   |   S r7   rs   rw   s     r   Ú__getitem__zHttpResponseBase.__getitem__Ê   s   € Ø�|‰|˜FÑ#Ð#r    c                 ó   — || j                   v S )z$Case-insensitive check for a header.rs   rw   s     r   Ú
has_headerzHttpResponseBase.has_headerÍ   s   € à˜Ÿ™Ð%Ð%r    c                 ó6   — | j                   j                  «       S r7   )rR   rp   ra   s    r   rp   zHttpResponseBase.itemsÓ   s   € Ø�|‰|×!Ñ!Ó#Ð#r    c                 ó:   — | j                   j                  ||«      S r7   )rR   r`   )r   r   Ú	alternates      r   r`   zHttpResponseBase.getÖ   s   € Ø�|‰|×Ñ ¨	Ó2Ð2r    c
                 ó4  — || j                   |<   |�út        |t        j                  «      rÍt        j                  |«      r.t        j
                  |t        j                  j                  «      }|t        j                  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<   |�wt        |t        j                  «      r|j                  «       }t        |«      | j                   |   d
<   |s0t        t!        j                   «       |z   «      | j                   |   d<   |�|| j                   |   d<   |�|| j                   |   d<   |rd| j                   |   d<   |rd| j                   |   d<   |	r0|	j#                  «       dvrt        d«      ‚|	| j                   |   d<   yy)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 Úexpiresrg   zmax-ageÚpathÚdomainTÚsecureÚhttponly)ÚlaxÚnoneÚstrictz,samesite must be "lax", "none", or "strict".Úsamesite)rW   r(   Údatetimer   Úis_naiveÚ
make_awareÚutcÚnowÚ	timedeltarT   ÚmaxÚdaysr‚   Útotal_secondsrY   r   Útimer>   )r   r9   r   Úmax_agerƒ   r„   r…   r†   r‡   r‹   Údeltas              r   Ú
set_cookiezHttpResponseBase.set_cookieÙ   sæ  € ð2 "ˆ�‰�SÑØÐÜ˜'¤8×#4Ñ#4Ô5Ü×$Ñ$ WÔ-Ü&×1Ñ1°'¼8×;LÑ;L×;PÑ;PÓQ�GØ¤(×"3Ñ"3×"7Ñ"7¼8×;LÑ;L×;PÑ;PÐ"7Ó"QÑQ�ð œ×+Ñ+°AÔ6Ñ6�à�ØÐ&Ü$Ð%VÓWÐWÜ˜a §¡¨eÑ!3°e·m±mÑ!CÓD‘à/6�—‘˜SÑ! )Ò,à+-ˆD�L‰L˜Ñ˜iÑ(ØÐÜ˜'¤8×#5Ñ#5Ô6Ø!×/Ñ/Ó1�Ü+.¨w«<ˆD�L‰L˜Ñ˜iÑ(áÜ/8¼¿¹»ÀwÑ9NÓ/O�—‘˜SÑ! )Ñ,ØÐØ(,ˆD�L‰L˜Ñ˜fÑ%ØÐØ*0ˆD�L‰L˜Ñ˜hÑ'ÙØ*.ˆD�L‰L˜Ñ˜hÑ'ÙØ,0ˆD�L‰L˜Ñ˜jÑ)ÙØ�~‰~ÓÐ'@Ñ@Ü Ð!OÓPÐPØ,4ˆD�L‰L˜Ñ˜jÒ)ð r    c                 ó<   — | j                   j                  ||«       y)z,Set a header unless it has already been set.N)rR   rE   r?   s      r   rE   zHttpResponseBase.setdefault  s   € à�‰×Ñ  UÕ+r    c                 óz   — t        j                  ||z   ¬«      j                  |«      } | j                  ||fi |¤ŽS )N)Úsalt)r
   Úget_cookie_signerÚsignr˜   )r   r9   r   r›   Úkwargss        r   Úset_signed_cookiez"HttpResponseBase.set_signed_cookie  s9   € Ü×)Ñ)¨s°T©zÔ:×?Ñ?ÀÓFˆØˆt�‰˜s EÑ4¨VÑ4Ð4r    c           	      óˆ   — |j                  d«      xs |xr |j                  «       dk(  }| j                  |d|||d|¬«       y )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   r9   r„   r…   r‹   r†   s         r   Údelete_cookiezHttpResponseBase.delete_cookie!  sW   € ð
 —‘Ð 8Ó9ò 
ØÒ3˜Ÿ™Ó)¨VÑ3ð 	ð 	�‰ØØØØØØ3Øð 	õ 	
r    c                 óô   — t        |t        t        f«      rt        |«      S t        |t        «      r$t        |j	                  | j
                  «      «      S t        |«      j	                  | j
                  «      S )z=Turn a value into a bytestring encoded in the output charset.)r(   r+   Ú
memoryviewr)   r*   r2   rd   s     r   Ú
make_byteszHttpResponseBase.make_bytes5  sX   € ô �eœe¤ZÐ0Ô1Ü˜“<ÐÜ�eœSÔ!Ü˜Ÿ™ d§l¡lÓ3Ó4Ð4ä�5‹z× Ñ  §¡Ó.Ð.r    c                 óê   — | j                   D ]
  }	  |«        Œ | j                   j                  «        d| _        t        j
                  j                  | j                  ¬«       y # t        $ r Y Œdw xY w)NT)Úsender)rU   Ú	ExceptionÚclearrX   r	   Úrequest_finishedÚsendrV   )r   Úclosers     r   ÚclosezHttpResponseBase.closeJ  sm   € Ø×,Ñ,ò 	ˆFðÙ•ð	ð 	×Ñ×$Ñ$Ô&ØˆŒÜ× Ñ ×%Ñ%¨T×-@Ñ-@Ð%ÕAøô ò Ùðús   ‘A&Á&	A2Á1A2c                 óF   — t        d| j                  j                  z  «      ‚©Nz This %s instance is not writable©ÚOSErrorÚ	__class__rF   ©r   Úcontents     r   ÚwritezHttpResponseBase.writeU  ó   € ÜÐ8¸4¿>¹>×;RÑ;RÑRÓSÐSr    c                  ó   — y r7   rD   ra   s    r   ÚflushzHttpResponseBase.flushX  s   € Ør    c                 óF   — t        d| j                  j                  z  «      ‚)Nz)This %s instance cannot tell its positionr°   ra   s    r   ÚtellzHttpResponseBase.tell[  s!   € ÜØ7¸$¿.¹.×:QÑ:QÑQó
ð 	
r    c                  ó   — y©NFrD   ra   s    r   ÚreadablezHttpResponseBase.readablec  ó   € Ør    c                  ó   — yr¼   rD   ra   s    r   ÚseekablezHttpResponseBase.seekablef  r¾   r    c                  ó   — yr¼   rD   ra   s    r   ÚwritablezHttpResponseBase.writablei  r¾   r    c                 óF   — t        d| j                  j                  z  «      ‚r¯   r°   )r   Úliness     r   Ú
writelineszHttpResponseBase.writelinesl  r¶   r    )NNNNNr7   )rg   NNú/NFFN)rg   )rÆ   NN)!rF   rG   rH   Ú__doc__rZ   r   Úpropertyrb   Úsetterr2   rq   Ú	__bytes__rt   r@   r:   ry   r{   Ú__contains__rp   r`   r˜   rE   rŸ   r¢   r¥   r­   rµ   r¸   rº   r½   rÀ   rÂ   rÅ   rD   r    r   rM   rM   j   s  „ ñð €Kð RVó%ð< ñFó ðFð ×Ññ$ó ð$ð ñ(ó ð(ð ‡^�^ñó ðò
ð "€Iàñ
ó ð
ò%ò!ò$ò&ð €Lò$ó3ð ØØØØØØØó>5ò@,ó5ó
ò(/ò*	BòTòò
òòòóTr    rM   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
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.
    Fc                 ó2   •— t        ‰| �  |i |¤Ž || _        y r7   )Úsuperr   r´   )r   r´   Úargsrž   r²   s       €r   r   zHttpResponse.__init__y  s   ø€ Ü‰Ñ˜$Ð) &Ò)àˆ�r    c                 ód   — d| j                   j                  | j                  | j                  dœz  S ©Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)ÚclsrZ   r]   ©r²   rF   rZ   rt   ra   s    r   Ú__repr__zHttpResponse.__repr__~  s4   € ØFØ—>‘>×*Ñ*Ø×+Ñ+Ø ×7Ñ7ñJ
ñ 
ð 	
r    c                 óB   — | j                  «       dz   | j                  z   S )z6Full HTTP message, including headers, as a bytestring.s   

)rq   r´   ra   s    r   Ú	serializezHttpResponse.serialize…  s   € à×%Ñ%Ó'¨+Ñ5¸¿¹ÑDÐDr    c                 ó8   — dj                  | j                  «      S ©Nr    )ro   Ú
_containerra   s    r   r´   zHttpResponse.content‹  s   € à�x‰x˜Ÿ™Ó(Ð(r    c                 ó  ‡ — t        |d«      rSt        |t        t        t        f«      s8dj                  ˆ fd„|D «       «      }t        |d«      r#	 |j                  «        n‰ j                  |«      }|g‰ _	        y # t        $ r Y Œw xY w)NÚ__iter__r    c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr7   ©r¥   )Ú.0Úchunkr   s     €r   ú	<genexpr>z'HttpResponse.content.<locals>.<genexpr>•  s   øè ø€ ÒI¸%˜tŸ™¨u×5ÑIùs   ƒr­   )
Úhasattrr(   r+   r¤   r)   ro   r­   r¨   r¥   rÚ   )r   r   r´   s   `  r   r´   zHttpResponse.content�  s}   ø€ ô �5˜*Ô%¬jØ”Eœ:¤sÐ+ô/
ð —h‘hÓIÀ5ÔIÓIˆGÜ�u˜gÔ&ðØ—K‘K•Mð —o‘o eÓ,ˆGà"˜)ˆ�øô !ò Ùðús   ÁA; Á;	BÂBc                 ó,   — t        | j                  «      S r7   )ÚiterrÚ   ra   s    r   rÜ   zHttpResponse.__iter__   s   € Ü�D—O‘OÓ$Ð$r    c                 óX   — | j                   j                  | j                  |«      «       y r7   )rÚ   Úappendr¥   r³   s     r   rµ   zHttpResponse.write£  s   € Ø�‰×Ñ˜tŸ™¨wÓ7Õ8r    c                 ó,   — t        | j                  «      S r7   )Úlenr´   ra   s    r   rº   zHttpResponse.tell¦  s   € Ü�4—<‘<Ó Ð r    c                 ó   — | j                   S r7   )r´   ra   s    r   ÚgetvaluezHttpResponse.getvalue©  s   € Ø�|‰|Ðr    c                  ó   — y)NTrD   ra   s    r   rÂ   zHttpResponse.writable¬  s   € Ør    c                 ó4   — |D ]  }| j                  |«       Œ y r7   )rµ   )r   rÄ   Úlines      r   rÅ   zHttpResponse.writelines¯  s   € Øò 	ˆDØ�J‰J�tÕñ	r    )r    )rF   rG   rH   rÇ   Ú	streamingr   rÕ   r×   rÊ   rÈ   r´   rÉ   rÜ   rµ   rº   rê   rÂ   rÅ   Ú__classcell__©r²   s   @r   rÍ   rÍ   p  sn   ø„ ñð €Iõò

òEð €Iàñ)ó ð)ð ‡^�^ñ$ó ð$ò %ò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	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).
    Tc                 ó2   •— t        ‰| �  |i |¤Ž || _        y r7   )rÏ   r   Ústreaming_content)r   rô   rÐ   rž   r²   s       €r   r   zStreamingHttpResponse.__init__¿  s   ø€ Ü‰Ñ˜$Ð) &Ò)ð "3ˆÕr    c                 ód   — d| j                   j                  | j                  | j                  dœz  S rÒ   )r²   rH   rZ   rt   ra   s    r   rÕ   zStreamingHttpResponse.__repr__Å  s4   € ØFØ—>‘>×.Ñ.Ø×+Ñ+Ø ×7Ñ7ñJ
ñ 
ð 	
r    c                 óF   — t        d| j                  j                  z  «      ‚)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.)ÚAttributeErrorr²   rF   ra   s    r   r´   zStreamingHttpResponse.contentÌ  s'   € äð+Ø-1¯^©^×-DÑ-DñEó
ð 	
r    c                 ó�   ‡ ‡— ‰ j                   r‰ j                  Šˆˆ fd„} |«       S t        ‰ j                  ‰ j                  «      S )Nc                 óT   •K  — ‰2 3 d {  –—† } ‰j                  | «      ­–— Œ7 Œ6 y ­wr7   rÞ   )ÚpartÚ	_iteratorr   s    €€r   Úawrapperz9StreamingHttpResponse.streaming_content.<locals>.awrapperÚ  s-   øè ø€ Ø"+÷ 0ð 0˜$ØŸ/™/¨$Ó/Ô/ð0ø¡)ùs   ƒ(†&Š$‹&Ž(¤&¦()Úis_asyncrû   Úmapr¥   )r   rü   rû   s   ` @r   rô   z'StreamingHttpResponse.streaming_contentÓ  s9   ù€ à�=Š=ð Ÿ™ˆIõ0ñ “:Ðä�t—‘¨¯©Ó7Ð7r    c                 ó&   — | j                  |«       y r7   )Ú_set_streaming_contentrd   s     r   rô   z'StreamingHttpResponse.streaming_contentâ  s   € à×#Ñ# EÕ*r    c                 óî   — 	 t        |«      | _        d| _        t        |d«      r&| j                  j                  |j                  «       y y # t        $ r |j	                  «       | _        d| _        Y ŒZw xY w)NFTr­   )	rä   rû   rý   r[   Ú	__aiter__râ   rU   ræ   r­   rd   s     r   r   z,StreamingHttpResponse._set_streaming_contentæ  sh   € ð	!Ü! %›[ˆDŒNØ!ˆDŒMô �5˜'Ô"Ø×"Ñ"×)Ñ)¨%¯+©+Õ6ð #øô ò 	!Ø"Ÿ_™_Ó.ˆDŒNØ ˆDŽMð	!ús   ‚A Á%A4Á3A4c           
      óö   — 	 t        | j                  «      S # t        $ rX t        j                  dt
        «       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.c              “   óR   K  — g }| 2 3 d {  –—† }|j                  |«       Œ7 Œ6 |S ­wr7   )ræ   )rû   Úas_listrà   s      r   Úto_listz/StreamingHttpResponse.__iter__.<locals>.to_listü  s3   è ø€ Ø�Ø#,÷ *ð *˜%Ø—N‘N 5Õ)ð*ø 9à�ùs   ‚'‡$‹"Œ$�'¢$¤')
rä   rô   r[   ÚwarningsÚwarnÚWarningrþ   r¥   r   rû   )r   r  s     r   rÜ   zStreamingHttpResponse.__iter__ñ  sm   € ð	VÜ˜×.Ñ.Ó/Ð/øÜò 	VÜ�M‰MðPäôòô �t—‘¬Ð-C¬]¸7Ó-CÀDÇNÁNÓ-SÓ(TÓUÒUð	Vús   ‚ —AA8Á7A8c                ó   K  — 	 | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y # t        $ rO t        j                  dt        «        t        t        «      | j                   «      ƒ d {  –—†7  D ]  }|­–— Œ	 Y y w xY w­w)Nz…StreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.)rô   r[   r  r  r	  r   Úlist)r   rú   s     r   r  zStreamingHttpResponse.__aiter__  s   è ø€ ð	Ø"×4Ñ4÷ ð �dØ”
ðøÑ4øäò 		Ü�M‰MðSäôð 2œm¬DÓ1°$×2HÑ2HÓI×IÐIò �Ø”
òð		üsJ   ‚A>„# �!”•!˜# Ÿ!¡# ¢A>£AA;Á(A+Á)A;Á8A>Á:A;Á;A>c                 ó8   — dj                  | j                  «      S rÙ   )ro   rô   ra   s    r   rê   zStreamingHttpResponse.getvalue  s   € Ø�x‰x˜×.Ñ.Ó/Ð/r    )rD   )rF   rG   rH   rÇ   rî   r   rÕ   rÈ   r´   rô   rÉ   r   rÜ   r  rê   rï   rð   s   @r   rò   rò   ´  sp   ø„ ñð €Iõ3ò
ð ñ
ó ð
ð ñ8ó ð8ð ×Ññ+ó ð+ò	7òVò&ö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   Frg   )Úas_attachmentÚfilenamec                ód   •— || _         || _        d|vxs |d   d u | _        t        ‰| �  |i |¤Ž y )Nr]   )r  r  Ú_no_explicit_content_typerÏ   r   )r   r  r  rÐ   rž   r²   s        €r   r   zFileResponse.__init__  sE   ø€ Ø*ˆÔØ ˆŒà &Ð(ÒJ¨F°>Ñ,BÀdÐ,Jð 	Ô&ô 	‰Ñ˜$Ð) &Ó)r    c                 ó"  •‡ ‡— t        |d«      sd ‰ _        t        ‰‰ �  |«      S |x‰ _        Št        ‰d«      r%‰ j                  j                  ‰j                  «       t        ˆˆ fd„d«      }‰ j                  ‰«       t        ‰‰ �  |«       y )NÚreadr­   c                  ó:   •— ‰ j                  ‰j                  «      S r7   )r  Ú
block_size©Úfileliker   s   €€r   ú<lambda>z5FileResponse._set_streaming_content.<locals>.<lambda>.  s   ø€ ˜XŸ]™]¨4¯?©?Ó;€ r    r    )	râ   Úfile_to_streamrÏ   r   rU   ræ   r­   rä   Úset_headers)r   r   r  r²   s   ` @€r   r   z#FileResponse._set_streaming_content&  s|   ú€ Ü�u˜fÔ%Ø"&ˆDÔÜ‘7Ñ1°%Ó8Ð8à).Ð.ˆÔ˜hÜ�8˜WÔ%Ø×"Ñ"×)Ñ)¨(¯.©.Ô9ÜÔ;¸SÓAˆØ×Ñ˜Ô"Ü‰Ñ& uÕ-r    c                 óò  ‡ ‡— t        ‰dd«      }t        |t        «      r|nd}t        ‰d«      xr t        ‰d«       xs ‰j	                  «       }t        ‰d«      �r|rc‰j                  «       }‰j                  dt        j                  «       ‰j                  «       |z
  ‰ j                  d<   ‰j                  |«       �nt        ‰d«      r9‰j                  «       j                  ‰j                  «       z
  ‰ j                  d<   n¼t        j                  j                  |«      r�t        j                  j                  |«      ‰j                  «       z
  ‰ j                  d<   n_|r]t!        t#        ˆˆ fd	„d«      «      ‰ j                  d<   ‰j                  t%        ‰ j                  d   «       t        j                  «       t        j                  j'                  ‰ j(                  xs |«      }‰ j*                  rS|rBt-        j.                  |«      \  }}d
dddœj1                  ||«      }|xs d‰ j                  d<   nd‰ j                  d<   t3        ‰ j4                  |«      x}r|‰ j                  d<   yy)zœ
        Set some common response headers (Content-Length, Content-Type, and
        Content-Disposition) based on the `filelike` response content.
        Únamerg   ÚseekrÀ   rº   r   zContent-LengthÚ	getbufferc                  óL   •— t        ‰ j                  ‰j                  «      «      S r7   )rè   r  r  r  s   €€r   r  z*FileResponse.set_headers.<locals>.<lambda>L  s   ø€ œS §¡¨t¯©Ó!?Ó@€ r    zapplication/x-bzipzapplication/gzipzapplication/x-xz)Úbzip2ÚgzipÚxzzapplication/octet-streamrP   zContent-DispositionN)Úgetattrr(   r)   râ   rÀ   rº   r  ÚioÚSEEK_ENDrR   r  ÚnbytesÚosr„   ÚexistsÚgetsizeÚsumrä   rY   Úbasenamer  r  Ú	mimetypesÚ
guess_typer`   r   r  )r   r  r  rÀ   Úinitial_positionr]   ÚencodingÚcontent_dispositions   ``      r   r  zFileResponse.set_headers2  s%  ù€ ô
 ˜8 V¨RÓ0ˆÜ)¨(´CÔ8‘8¸bˆÜ˜8 VÓ,ò 
Ü˜ *Ó-Ð-ÒD°×1BÑ1BÓ1Dð 	ô �8˜VÕ$ÙØ#+§=¡=£?Ð Ø—‘˜a¤§¡Ô-Ø19·±³ÐCSÑ1S�—‘Ð-Ñ.Ø—‘Ð.Ö/Ü˜ ;Ô/à×&Ñ&Ó(×/Ñ/°(·-±-³/ÑAð —‘Ð-Ò.ô —‘—‘ Ô)ä—G‘G—O‘O HÓ-°·±³Ñ?ð —‘Ð-Ò.ñ Ü-0ÜÔ@À!ÓDó.ˆD�L‰LÐ)Ñ*ð �M‰Mœ3˜tŸ|™|Ð,<Ñ=Ó>Ð>ÄÇÁÔLä—7‘7×#Ñ# D§M¡MÒ$=°XÓ>ˆØ×)Ò)ÙÜ)2×)=Ñ)=¸hÓ)GÑ&�˜hð 2Ø.Ø,ñ ÷ ‘#�h Ó-ð	 ð !Ò>Ð$>ð —‘˜^Ò,ð 0J�—‘˜^Ñ,ä"<Ø×Ñ ó#
ð 
Ðð 
ð 3FˆD�L‰LÐ.Ò/ð
r    )	rF   rG   rH   rÇ   r  r   r   r  rï   rð   s   @r   r  r    s$   ø„ ñð €Jà,1¸Bö *ô
.ö2Fr    r  c                   ó>   ‡ — e Zd Zg d¢Zˆ fd„Z ed„ «      Zd„ Zˆ xZS )ÚHttpResponseRedirectBase)ÚhttpÚhttpsÚftpc                 ó0  •— t        ‰| �  |i |¤Ž t        |«      | d<   t        |«      }t	        |«      t
        kD  rt        dt
        › d�«      ‚t        |«      }|j                  r1|j                  | j                  vrt        d|j                  z  «      ‚y y )NÚLocationzUnsafe redirect exceeding z charactersz)Unsafe redirect to URL with protocol '%s')
rÏ   r   r   r)   rè   r   r   r   ÚschemeÚallowed_schemes)r   Úredirect_torÐ   rž   Úredirect_to_strÚparsedr²   s         €r   r   z!HttpResponseRedirectBase.__init__j  sœ   ø€ Ü‰Ñ˜$Ð) &Ò)Ü% kÓ2ˆˆZÑÜ˜kÓ*ˆÜˆÓÔ"9Ò9Ü$Ø,Ô-DÐ,EÀ[ÐQóð ô ˜/Ó*ˆØ�=Š=˜VŸ]™]°$×2FÑ2FÑFÜ$Ø;¸f¿m¹mÑKóð ð Gˆ=r    c                 ó   — | d   S )Nr8  rD   ra   s    r   r  z!HttpResponseRedirectBase.<lambda>x  s   €   ZÑ 0€ r    c                 óz   — d| j                   j                  | j                  | j                  | j                  dœz  S )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)rÓ   rZ   r]   Úurl)r²   rF   rZ   rt   r@  ra   s    r   rÕ   z!HttpResponseRedirectBase.__repr__z  s:   € àRà—~‘~×.Ñ.Ø#×/Ñ/Ø $× ;Ñ ;Ø—x‘xñ	ñð	
r    )	rF   rG   rH   r:  r   rÈ   r@  rÕ   rï   rð   s   @r   r3  r3  g  s   ø„ Ú.€Oôñ Ñ0Ó
1€Cö	
r    r3  c                   ó   — e Zd ZdZy)ÚHttpResponseRedirecti.  N©rF   rG   rH   rZ   rD   r    r   rB  rB  †  ó   „ Ø�Kr    rB  c                   ó   — e Zd ZdZy)ÚHttpResponsePermanentRedirecti-  NrC  rD   r    r   rF  rF  Š  rD  r    rF  c                   óZ   ‡ — e Zd ZdZˆ fd„Zej                  j                  d„ «       Zˆ xZS )ÚHttpResponseNotModifiedi0  c                 ó*   •— t        ‰| �  |i |¤Ž | d= y )Nzcontent-type)rÏ   r   )r   rÐ   rž   r²   s      €r   r   z HttpResponseNotModified.__init__‘  s   ø€ Ü‰Ñ˜$Ð) &Ò)Ø�Ñ r    c                 ó,   — |rt        d«      ‚g | _        y )Nz7You cannot set content to a 304 (Not Modified) response)r÷   rÚ   rd   s     r   r´   zHttpResponseNotModified.content•  s   € áÜ ØIóð ð ˆ�r    )	rF   rG   rH   rZ   r   rÍ   r´   rÉ   rï   rð   s   @r   rH  rH  Ž  s-   ø„ Ø€Kô!ð ×Ñ× Ñ ñó !ôr    rH  c                   ó   — e Zd ZdZy)ÚHttpResponseBadRequesti�  NrC  rD   r    r   rL  rL  ž  rD  r    rL  c                   ó   — e Zd ZdZy)ÚHttpResponseNotFoundi”  NrC  rD   r    r   rN  rN  ¢  rD  r    rN  c                   ó   — e Zd ZdZy)ÚHttpResponseForbiddeni“  NrC  rD   r    r   rP  rP  ¦  rD  r    rP  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚHttpResponseNotAllowedi•  c                 óL   •— t        ‰| �  |i |¤Ž dj                  |«      | d<   y )Nz, ÚAllow)rÏ   r   ro   )r   Úpermitted_methodsrÐ   rž   r²   s       €r   r   zHttpResponseNotAllowed.__init__­  s(   ø€ Ü‰Ñ˜$Ð) &Ò)ØŸ	™	Ð"3Ó4ˆˆWŠr    c                 ól   — d| j                   j                  | j                  | j                  | d   dœz  S )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>rT  )rÓ   rZ   r]   ÚmethodsrÔ   ra   s    r   rÕ   zHttpResponseNotAllowed.__repr__±  s;   € ØTØ—>‘>×*Ñ*Ø×+Ñ+Ø ×7Ñ7Ø˜G‘}ñ	X
ñ 
ð 	
r    )rF   rG   rH   rZ   r   rÕ   rï   rð   s   @r   rR  rR  ª  s   ø„ Ø€Kô5ö
r    rR  c                   ó   — e Zd ZdZy)ÚHttpResponseGoneiš  NrC  rD   r    r   rY  rY  º  rD  r    rY  c                   ó   — e Zd ZdZy)ÚHttpResponseServerErroriô  NrC  rD   r    r   r[  r[  ¾  rD  r    r[  c                   ó   — e Zd Zy)ÚHttp404NrJ   rD   r    r   r]  r]  Â  rK   r    r]  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 }|j                  dd«       t	        j
                  |fd|i|¤Ž}t        ‰| �  dd|i|¤Ž y )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.r]   zapplication/jsonrÓ   r´   rD   )r(   Údictr[   rE   ÚjsonÚdumpsrÏ   r   )r   r   ÚencoderÚsafeÚjson_dumps_paramsrž   r²   s         €r   r   zJsonResponse.__init__Ô  sp   ø€ ñ œ
 4¬Ô.Üð+óð ð Ð$Ø "ÐØ×Ñ˜.Ð*<Ô=Ü�z‰z˜$ÑA GÐAÐ/@ÑAˆÜ‰ÑÑ0 Ð0¨Ó0r    )rF   rG   rH   rÇ   r   r   rï   rð   s   @r   r_  r_  Æ  s   ø„ ñð  "ØØ÷1ñ 1r    r_  )?rŒ   r%  rb  r-  r(  Úrer/   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.httpr   r   r   Údjango.utils.regex_helperr   ÚIrh   r   rT   r-   rM   rÍ   rò   r  r3  rB  rF  rH  rL  rN  rP  rR  rY  r[  r¨   r]  r_  rD   r    r   ú<module>rw     sT  ðÛ Û 	Û Û Û 	Û 	Û 
Û Û Ý Ý !Ý !ç 5å  ß (Ý 5Ý :Ý +Ý !Ý >Ý ,÷ñ õ
 7á 0Ø'¨¯©ó!Ð ô
?Ð,ô ?ôD	�Zô 	÷CTñ CTôLAÐ#ô AôH`0Ð,ô `0ôFMFÐ(ô MFô`
˜|ô 
ô>Ð3ô ôÐ$<ô ô˜lô ô ˜\ô ô˜<ô ô˜Lô ô
˜\ô 
ô �|ô ô˜lô ô	ˆiô 	ô1�<õ 1r    