Ë
    îñþiýT  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZmZmZ 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mZ d d
lm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)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1  G d„ d«      Z2 G d„ de2«      Z3 G d„ de2«      Z4 G d„ de2«      Z5 G d„ de2«      Z6e7e8z  e9z  Z:ee:   Z;e
e:   Z<e<e;z  Z= G d„ de2«      Z> G d„ de?«      Z@ G d„ d e?«      ZA G d!„ d"e2«      ZBy)#é    )ÚannotationsN)ÚAsyncIterableÚ	AwaitableÚCallableÚIterableÚMappingÚSequence)Údatetime)Úformat_datetimeÚ
formatdate)Úpartial)Ú
guess_type)Ú	token_hex)ÚAnyÚLiteral)Úquote)Úcollapse_excgroups)ÚBackgroundTask)Úiterate_in_threadpool)ÚURLÚHeadersÚMutableHeaders)ÚClientDisconnect)ÚMessageÚReceiveÚScopeÚSendc                  óæ   — e Zd ZdZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zddd„Zedd„«       Z		 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z
	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd	„Zdd
„Zy)ÚResponseNúutf-8c                ó€   — || _         |�|| _        || _        | j                  |«      | _        | j                  |«       y ©N)Ústatus_codeÚ
media_typeÚ
backgroundÚrenderÚbodyÚinit_headers©ÚselfÚcontentr#   Úheadersr$   r%   s         úS/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/starlette/responses.pyÚ__init__zResponse.__init__!   s>   € ð 'ˆÔØÐ!Ø(ˆDŒOØ$ˆŒØ—K‘K Ó(ˆŒ	Ø×Ñ˜'Õ"ó    c                óp   — |€yt        |t        t        z  «      r|S |j                  | j                  «      S )Nr/   )Ú
isinstanceÚbytesÚ
memoryviewÚencodeÚcharset©r*   r+   s     r-   r&   zResponse.render0   s1   € Øˆ?ØÜ�gœu¤zÑ1Ô2ØˆNØ�~‰~˜dŸl™lÓ+Ð+r/   c                ó¤  — |€g }d}d}nj|j                  «       D ��cg c]5  \  }}|j                  «       j                  d«      |j                  d«      f‘Œ7 }}}|D �cg c]  }|d   ‘Œ	 }}d|v}d|v}t        | dd «      }	|	�U|rS| j                  dk  sD| j                  dv s6t        t        |	«      «      }
|j                  d|
j                  d«      f«       | j                  }|�Y|rW|j                  d	«      r$d
|j                  «       vr|d| j                  z   z  }|j                  d|j                  d«      f«       || _        y c c}}w c c}w )NTúlatin-1r   s   content-lengths   content-typer'   éÈ   )éÌ   i0  ztext/zcharset=z
; charset=)ÚitemsÚlowerr4   Úgetattrr#   ÚstrÚlenÚappendr$   Ú
startswithr5   Úraw_headers)r*   r,   rB   Úpopulate_content_lengthÚpopulate_content_typeÚkÚvÚhÚkeysr'   Úcontent_lengthÚcontent_types               r-   r(   zResponse.init_headers7   sW  € Øˆ?Ø57ˆKØ&*Ð#Ø$(Ñ!àZa×ZgÑZgÓZi×jÑRVÐRSÐUV˜AŸG™G›I×,Ñ,¨YÓ7¸¿¹À)Ó9LÒMÐjˆKÑjØ"-Ö.˜Q�A�a“DÐ.ˆDÐ.Ø&7¸tÐ&CÐ#Ø$3¸4Ð$?Ð!ä�t˜V TÓ*ˆàÐÙ'Ø×%Ñ%¨Ò+¨t×/?Ñ/?À:Ñ/Mä ¤ T£›^ˆNØ×ÑÐ 1°>×3HÑ3HÈÓ3SÐTÔUà—‘ˆØÐ#Ñ(=Ø×&Ñ& wÔ/°JÀl×FXÑFXÓFZÑ4ZØ ¨t¯|©|Ñ ;Ñ;�Ø×Ñ °×1DÑ1DÀYÓ1OÐPÔQà&ˆÕùó) kùÚ.s   �:EÁEc                óh   — t        | d«      st        | j                  ¬«      | _        | j                  S )NÚ_headers©Úraw)Úhasattrr   rB   rL   )r*   s    r-   r,   zResponse.headersS   s(   € ä�t˜ZÔ(Ü*¨t×/?Ñ/?Ô@ˆDŒMØ�}‰}Ðr/   c                ó8  — t         j                  j                  «       }|||<   |�|||   d<   |�,t        |t        «      rt        |d¬«      ||   d<   n|||   d<   |�|||   d<   |�|||   d<   |rd||   d<   |rd||   d<   |	�!|	j                  «       d	v sJ d
«       ‚|	||   d<   |
r&t        j                  dk  rt        d«      ‚d||   d<   |j                  d¬«      j                  «       }| j                  j                  d|j                  d«      f«       y )Nzmax-ageT©ÚusegmtÚexpiresÚpathÚdomainÚsecureÚhttponly)ÚstrictÚlaxÚnonez1samesite must be either 'strict', 'lax' or 'none'Úsamesite)é   é   z@Partitioned cookies are only supported in Python 3.14 and above.ÚpartitionedÚ )Úheaders
   set-cookier8   )ÚhttpÚcookiesÚSimpleCookier1   r
   r   r<   ÚsysÚversion_infoÚ
ValueErrorÚoutputÚstriprB   r@   r4   )r*   ÚkeyÚvalueÚmax_agerS   rT   rU   rV   rW   r[   r^   ÚcookieÚ
cookie_vals                r-   Ú
set_cookiezResponse.set_cookieY   sY  € ô 04¯|©|×/HÑ/HÓ/JˆØˆˆs‰ØÐØ%,ˆF�3‰K˜	Ñ"ØÐÜ˜'¤8Ô,Ü)8¸ÈÔ)N��s‘˜IÒ&à)0��s‘˜IÑ&ØÐØ"&ˆF�3‰K˜ÑØÐØ$*ˆF�3‰K˜Ñ!ÙØ$(ˆF�3‰K˜Ñ!ÙØ&*ˆF�3‰K˜
Ñ#ØÐØ—>‘>Ó#ð (ñ ð Cð Có	Cð ð
 '/ˆF�3‰K˜
Ñ#ÙÜ×Ñ 'Ò)Ü Ð!cÓdÐdØ)-ˆF�3‰K˜Ñ&à—]‘]¨"�]Ó-×3Ñ3Ó5ˆ
Ø×Ñ×Ñ °
×0AÑ0AÀ)Ó0LÐ MÕNr/   c           
     ó6   — | j                  |dd|||||¬«       y )Nr   )rk   rS   rT   rU   rV   rW   r[   )rn   )r*   ri   rT   rU   rV   rW   r[   s          r-   Údelete_cookiezResponse.delete_cookie†   s-   € ð 	�‰ØØØØØØØØð 	õ 		
r/   c                ó   ‡— dˆfd„}|S )Nc              “  óZ   •K  — | d   }|dv ri | ¥dd|z   i¥}  ‰| «      ƒ d {  –—†  y 7 Œ­w)NÚtype>   úhttp.response.bodyúhttp.response.startz
websocket.© )ÚmessageÚmessage_typeÚsends     €r-   Úwrappedz5Response._wrap_websocket_denial_send.<locals>.wrapped›   s<   øè ø€ Ø" 6™?ˆLØÐLÑLØJ˜WÐJ f¨l¸\Ñ.IÑJ�Ù�w“-×Òús   ƒ +£)¤+)rw   r   ÚreturnÚNonerv   )r*   ry   rz   s    ` r-   Ú_wrap_websocket_denial_sendz$Response._wrap_websocket_denial_sendš   s   ø€ õ	 ð ˆr/   c              ƒ  ó  K  — |d   dk(  r| j                  |«      } |d| j                  | j                  dœ«      ƒ d {  –—†   |d| j                  dœ«      ƒ d {  –—†  | j                  �| j	                  «       ƒ d {  –—†  y y 7 ŒG7 Œ,7 Œ
­w)Nrs   Ú	websocketru   ©rs   Ústatusr,   rt   )rs   r'   )r}   r#   rB   r'   r%   )r*   ÚscopeÚreceivery   s       r-   Ú__call__zResponse.__call__£   sŒ   è ø€ Ø�‰=˜KÒ'Ø×3Ñ3°DÓ9ˆDÙÐ1¸T×=MÑ=MÐZ^×ZjÑZjÑkÓl×lÐlÙÐ0¸$¿)¹)ÑDÓE×EÐEà�?‰?Ð&Ø—/‘/Ó#×#Ñ#ð 'ð 	møØEøð $ús4   ‚=B¿BÁ BÁB	Á#BÂ BÂBÂ	BÂB)Nr9   NNN©r+   r   r#   Úintr,   úMapping[str, str] | Noner$   ú
str | Noner%   úBackgroundTask | Noner{   r|   )r+   r   r{   zbytes | memoryviewr"   )r,   r‡   r{   r|   )r{   r   )	r_   NNú/NFFrY   F)ri   r>   rj   r>   rk   z
int | NonerS   zdatetime | str | int | NonerT   rˆ   rU   rˆ   rV   ÚboolrW   r‹   r[   ú'Literal['lax', 'strict', 'none'] | Noner^   r‹   r{   r|   )rŠ   NFFrY   )ri   r>   rT   r>   rU   rˆ   rV   r‹   rW   r‹   r[   rŒ   r{   r|   )ry   r   r{   r   ©r‚   r   rƒ   r   ry   r   r{   r|   )Ú__name__Ú
__module__Ú__qualname__r$   r5   r.   r&   r(   Úpropertyr,   rn   rp   r}   r„   rv   r/   r-   r   r      sy  „ Ø€JØ€Gð ØØ,0Ø!%Ø,0ð#àð#ð ð#ð *ð	#ð
 ð#ð *ð#ð 
ó#ó,ô'ð8 òó ðð Ø"Ø/3ØØ!ØØØ<AØ!ð+Oàð+Oð ð+Oð ð	+Oð
 -ð+Oð ð+Oð ð+Oð ð+Oð ð+Oð :ð+Oð ð+Oð 
ó+Oð` Ø!ØØØ<Að
àð
ð ð
ð ð	
ð
 ð
ð ð
ð :ð
ð 
ó
ó(ô$r/   r   c                  ó   — e Zd ZdZy)ÚHTMLResponsez	text/htmlN©rŽ   r�   r�   r$   rv   r/   r-   r“   r“   ­   s   „ Ø�Jr/   r“   c                  ó   — e Zd ZdZy)ÚPlainTextResponseú
text/plainNr”   rv   r/   r-   r–   r–   ±   s   „ Ø�Jr/   r–   c                  óL   ‡ — e Zd ZdZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )ÚJSONResponsezapplication/jsonc                ó,   •— t         ‰| �  |||||«       y r"   )Úsuperr.   )r*   r+   r#   r,   r$   r%   Ú	__class__s         €r-   r.   zJSONResponse.__init__¸   s   ø€ ô 	‰Ñ˜ +¨w¸
ÀJÕOr/   c                óT   — t        j                  |ddd d¬«      j                  d«      S )NF)ú,ú:)Úensure_asciiÚ	allow_nanÚindentÚ
separatorsr    )ÚjsonÚdumpsr4   r6   s     r-   r&   zJSONResponse.renderÂ   s-   € Ü�z‰zØØØØØ!ô
÷ ‰&�‹/ð	r/   ©r9   NNNr…   )r+   r   r{   r2   )rŽ   r�   r�   r$   r.   r&   Ú__classcell__©rœ   s   @r-   r™   r™   µ   sa   ø„ Ø#€Jð
 Ø,0Ø!%Ø,0ðPàðPð ðPð *ð	Pð
 ðPð *ðPð 
õP÷r/   r™   c                  ó:   ‡ — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚRedirectResponsec                ór   •— t         ‰| �  d|||¬«       t        t        |«      d¬«      | j                  d<   y )Nr/   )r+   r#   r,   r%   z:/%#?=@[]!$&'()*+,;)ÚsafeÚlocation)r›   r.   r   r>   r,   )r*   Úurlr#   r,   r%   rœ   s        €r-   r.   zRedirectResponse.__init__Í   s6   ø€ ô 	‰Ñ °+ÀwÐ[eÐÔfÜ#(¬¨S«Ð8MÔ#Nˆ�‰�ZÒ r/   )i3  NN)
r®   z	str | URLr#   r†   r,   r‡   r%   r‰   r{   r|   )rŽ   r�   r�   r.   r§   r¨   s   @r-   rª   rª   Ì   sO   ø„ ð Ø,0Ø,0ðOàðOð ðOð *ð	Oð
 *ðOð 
÷Oñ Or/   rª   c                  óX   — e Zd ZU ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 d	d„Zd
d„Zdd„Zdd„Zy)ÚStreamingResponseÚAsyncContentStreamÚbody_iteratorNc                ó¼   — t        |t        «      r|| _        nt        |«      | _        || _        |€| j
                  n|| _        || _        | j                  |«       y r"   )r1   r   r²   r   r#   r$   r%   r(   r)   s         r-   r.   zStreamingResponse.__init__á   sR   € ô �gœ}Ô-Ø!(ˆDÕä!6°wÓ!?ˆDÔØ&ˆÔØ-7Ð-?˜$Ÿ/š/ÀZˆŒØ$ˆŒØ×Ñ˜'Õ"r/   c              ƒ  óB   K  — 	  |«       ƒ d {  –—† }|d   dk(  ry Œ7 Œ­w)Nrs   zhttp.disconnectrv   )r*   rƒ   rw   s      r-   Úlisten_for_disconnectz'StreamingResponse.listen_for_disconnectò   s*   è ø€ ØÙ#›I—oˆGØ�v‰Ð"3Ò3Øð Ø%ús   ‚Ž�c              ƒ  óL  K  —  |d| j                   | j                  dœ«      ƒ d {  –—†  | j                  2 3 d {  –—† }t        |t        t
        z  «      s|j                  | j                  «      } |d|ddœ«      ƒ d {  –—†  ŒP7 Œ`7 ŒM7 Œ	6  |ddddœ«      ƒ d {  –—†7   y ­w)Nru   r€   rt   T©rs   r'   Ú	more_bodyr/   F)r#   rB   r²   r1   r2   r3   r4   r5   )r*   ry   Úchunks      r-   Ústream_responsez!StreamingResponse.stream_responseø   sª   è ø€ ÙÐ1¸T×=MÑ=MÐZ^×ZjÑZjÑkÓl×lÐlØ×-Ñ-÷ 	Yð 	Y�%Ü˜e¤U¬ZÑ%7Ô8ØŸ™ T§\¡\Ó2�ÙÐ 4¸eÐRVÑWÓX×XÑXð	 	møð	Yøð Yøð .ñ
 Ð0¸#ÈEÑRÓS×SÒSùsN   ‚$B$¦B§B$·B»B	¼B¿AB$ÂBÂB$Â	BÂB$ÂB$ÂB ÂB$c           	   ƒ  ó†  ‡K  — |d   dk(  rO| j                  |«      }| j                  |«      ƒ d {  –—†  | j                  �| j                  «       ƒ d {  –—†  y t        t	        t
        |j                  di «      j                  dd«      j                  d«      «      «      }|dk\  r	 | j                  |«      ƒ d {  –—†  n�t        «       5  t        j                  «       4 ƒd {  –—† Šd	ˆfd„}‰j                  |t        | j                  |«      «        |t        | j                  |«      «      ƒ d {  –—†  d d d «      ƒd {  –—†  d d d «       | j                  �| j                  «       ƒ d {  –—†  y y 7 �ŒH7 �Œ'7 ŒÁ# t        $ r t        «       ‚w xY w7 Œ±7 Œc7 ŒU# 1 ƒd {  –—†7  sw Y   ŒexY w# 1 sw Y   ŒixY w7 ŒL­w)
Nrs   r   ÚasgiÚspec_versionz2.0ú.)é   é   c              “  ód   •K  —  | «       ƒ d {  –—†  ‰j                   j                  «        y 7 Œ­wr"   )Úcancel_scopeÚcancel)ÚfuncÚ
task_groups    €r-   Úwrapz(StreamingResponse.__call__.<locals>.wrap  s'   øè ø€ Ù"›fŸ˜Ø"×/Ñ/×6Ñ6Õ8ð %ús   ƒ0Ž.� 0)rÄ   zCallable[[], Awaitable[None]]r{   r|   )r}   rº   r%   ÚtupleÚmapr†   ÚgetÚsplitÚOSErrorr   r   ÚanyioÚcreate_task_groupÚ
start_soonr   rµ   )r*   r‚   rƒ   ry   r½   rÆ   rÅ   s         @r-   r„   zStreamingResponse.__call__  s¦  øè ø€ Ø�‰=˜KÒ'Ø×3Ñ3°DÓ9ˆDØ×&Ñ& tÓ,×,Ð,Ø�‰Ð*Ø—o‘oÓ'×'Ð'ØäœS¤ e§i¡i°¸Ó&;×&?Ñ&?ÀÐPUÓ&V×&\Ñ&\Ð]`Ó&aÓbÓcˆà˜6Ò!ð)Ø×*Ñ*¨4Ó0×0Ñ0ô $Ó%ñ MÜ ×2Ñ2Ó4÷ Mð M¸
õ9ð ×)Ñ)¨$´¸×8LÑ8LÈdÓ0SÔTÙœw t×'AÑ'AÀ7ÓKÓL×LÐL÷M÷ M÷Mð �?‰?Ð&Ø—/‘/Ó#×#Ñ#ð 'ð/ -ùà'ùð 1ùÜò )Ü&Ó(Ð(ð)úðMøð MøðMø÷ M÷ Mñ Mú÷Mð Múð $úsË   ƒ.G±E9²#GÁE<ÁAGÂ)F Â=E?Â>F ÃGÃF3Ã&FÃ'F3Ã*AFÄ6FÄ7FÄ;F3ÅFÅF3Å'GÅ2F?Å3GÅ<GÅ?F ÆFÆGÆF3ÆFÆF3ÆF0	Æ$F'Æ%F0	Æ,F3Æ3F<Æ8Gr¦   )r+   ÚContentStreamr#   r†   r,   r‡   r$   rˆ   r%   r‰   r{   r|   )rƒ   r   r{   r|   )ry   r   r{   r|   r�   )rŽ   r�   r�   Ú__annotations__r.   rµ   rº   r„   rv   r/   r-   r°   r°   Þ   se   … Ø%Ó%ð
 Ø,0Ø!%Ø,0ð#àð#ð ð#ð *ð	#ð
 ð#ð *ð#ð 
ó#ó"óTô$r/   r°   c                  ó   — e Zd Zddd„Zy)ÚMalformedRangeHeaderc                ó   — || _         y r"   )r+   r6   s     r-   r.   zMalformedRangeHeader.__init__   s	   € Øˆ�r/   N)zMalformed range header.)r+   r>   r{   r|   ©rŽ   r�   r�   r.   rv   r/   r-   rÒ   rÒ     s   „ õr/   rÒ   c                  ó   — e Zd Zdd„Zy)ÚRangeNotSatisfiablec                ó   — || _         y r"   )Úmax_size)r*   rØ   s     r-   r.   zRangeNotSatisfiable.__init__%  s	   € Ø ˆ�r/   N)rØ   r†   r{   r|   rÔ   rv   r/   r-   rÖ   rÖ   $  s   „ ô!r/   rÖ   c                  óæ   — e Zd ZdZ	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Z	dd	„Z
edd
„«       Zedd„«       Z	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚFileResponsei   Nc	                óÖ  — || _         || _        || _        |€t        |xs |«      d   xs d}|| _        || _        | j                  |«       | j                  j                  dd«       | j                  �Zt        | j                  «      }	|	| j                  k7  r|› d|	› �}
n|› d| j                  › d�}
| j                  j                  d|
«       || _
        |�| j                  |«       y y )	Nr   r—   zaccept-rangesr2   z; filename*=utf-8''z; filename="ú"zcontent-disposition)rT   r#   Úfilenamer   r$   r%   r(   r,   Ú
setdefaultr   Ústat_resultÚset_stat_headers)r*   rT   r#   r,   r$   r%   rÝ   rß   Úcontent_disposition_typeÚcontent_disposition_filenameÚcontent_dispositions              r-   r.   zFileResponse.__init__,  só   € ð ˆŒ	Ø&ˆÔØ ˆŒØÐÜ# HÒ$4°Ó5°aÑ8ÒH¸LˆJØ$ˆŒØ$ˆŒØ×Ñ˜'Ô"Ø�‰×Ñ °Ô9Ø�=‰=Ð$Ü+0°·±Ó+?Ð(Ø+¨t¯}©}Ò<Ø)AÐ(BÐBUÐVrÐUsÐ&tÑ#à)AÐ(BÀ,ÈtÏ}É}ÈoÐ]^Ð&_Ð#Ø�L‰L×#Ñ#Ð$9Ð;NÔOØ&ˆÔØÐ"Ø×!Ñ! +Õ.ð #r/   c                óÎ  — t        |j                  «      }t        |j                  d¬«      }t        |j                  «      dz   t        |j                  «      z   }dt	        j
                  |j                  «       d¬«      j                  «       › d�}| j                  j                  d|«       | j                  j                  d|«       | j                  j                  d	|«       y )
NTrQ   ú-rÜ   F)Úusedforsecurityúcontent-lengthúlast-modifiedÚetag)
r>   Úst_sizer   Úst_mtimeÚhashlibÚmd5r4   Ú	hexdigestr,   rÞ   )r*   rß   rI   Úlast_modifiedÚ	etag_baseré   s         r-   rà   zFileResponse.set_stat_headersK  s³   € Ü˜[×0Ñ0Ó1ˆÜ" ;×#7Ñ#7ÀÔEˆÜ˜×,Ñ,Ó-°Ñ3´c¸+×:MÑ:MÓ6NÑNˆ	Ø”7—;‘;˜y×/Ñ/Ó1À5ÔI×SÑSÓUÐVÐVWÐXˆà�‰×ÑÐ 0°.ÔAØ�‰×Ñ °Ô?Ø�‰×Ñ ¨Õ-r/   c              ƒ  ób  K  — |d   }|dk(  xr |d   j                  «       dk(  }|dk(  xr d|j                  di «      v }|dk(  r| j                  |«      }| j                  €Œ	 t        j
                  j                  t        j                  | j                  «      ƒ d {  –—† }| j                  |«       |j                  }t        j                  |«      s%t        d| j                  › d	�«      ‚| j                  }t        |¬«      }	|	j                  d«      }
|	j                  d«      }|
�|�-| j!                  |«      s| j#                  |||«      ƒ d {  –—†  n�	 | j%                  |
|j&                  «      }t3        |«      dk(  r0|d   \  }}| j5                  ||||j&                  |«      ƒ d {  –—†  n&| j7                  |||j&                  |«      ƒ d {  –—†  | j8                  �| j9                  «       ƒ d {  –—†  y y 7 �Œb# t        $ r t        d| j                  › d
�«      ‚w xY w7 ŒÕ# t(        $ r2} t+        |j,                  d¬«      |||«      ƒ d {  –—†7  cY d }~S d }~wt.        $ r9}t+        ddd|j0                  › �i¬«      } ||||«      ƒ d {  –—†7  cY d }~S d }~ww xY w7 Œú7 ŒÕ7 Œ³­w)Nrs   ra   ÚmethodÚHEADúhttp.response.pathsendÚ
extensionsr   zFile at path z is not a file.z does not exist.)r‚   Úrangezif-rangei�  )r#   i   zContent-Rangezbytes */)r#   r,   é   r   )ÚupperrÉ   r}   rß   rÌ   Ú	to_threadÚrun_syncÚosÚstatrT   rà   Úst_modeÚS_ISREGÚRuntimeErrorÚFileNotFoundErrorr   Ú_should_use_rangeÚ_handle_simpleÚ_parse_range_headerrê   rÒ   r–   r+   rÖ   rØ   r?   Ú_handle_single_rangeÚ_handle_multiple_rangesr%   )r*   r‚   rƒ   ry   Ú
scope_typeÚsend_header_onlyÚsend_pathsendrß   Úmoder,   Ú
http_rangeÚhttp_if_rangeÚrangesÚexcÚresponseÚstartÚends                    r-   r„   zFileResponse.__call__U  s™  è ø€ Ø˜6‘]ˆ
Ø%¨Ñ/ÒU°E¸(±O×4IÑ4IÓ4KÈvÑ4UÐØ" fÑ,ÒhÐ1IÈUÏYÉYÐWcÐegÓMhÐ1hˆØ˜Ò$Ø×3Ñ3°DÓ9ˆDà×ÑÐ#ðSÜ$)§O¡O×$<Ñ$<¼R¿W¹WÀdÇiÁiÓ$P×P�Ø×%Ñ% kÔ2ð #×*Ñ*�Ü—|‘| DÔ)Ü&¨°t·y±y°kÀÐ'QÓRÐRà×*Ñ*ˆKä Ô&ˆØ—[‘[ Ó)ˆ
ØŸ™ JÓ/ˆàÐ -Ð";ÀD×DZÑDZÐ[hÔDiØ×%Ñ% dÐ,<¸mÓL×LÑLð<Ø×1Ñ1°*¸k×>QÑ>QÓR�ô �6‹{˜aÒØ# A™Y‘
��sØ×/Ñ/°°e¸SÀ+×BUÑBUÐWgÓh×hÑhà×2Ñ2°4¸À×ATÑATÐVfÓg×gÐgà�?‰?Ð&Ø—/‘/Ó#×#Ñ#ð 'ðA Qúä$ò PÜ" ]°4·9±9°+Ð=MÐ#NÓOÐOðPúð Mùô (ò cØLÔ.¨s¯{©{ÈÔLÈUÐT[Ð]aÓb×bÐbÕbûÜ&ò <Ü,¸ÀÐZbÐcf×coÑcoÐbpÐXqÐFrÔs�Ù% e¨W°dÓ;×;Ð;Õ;ûð<úð iøàgøð $úsÍ   ‚A J/Á#;H ÂH ÂH Â4BJ/ÅH)ÅJ/ÅH+ Å68J/Æ.J)Æ/&J/ÇJ+Ç#J/Ç9J-Ç:J/È H È#H&È&J/È+	J&È4"I!ÉIÉI!ÉJ&ÉJ/É!J&É-)J!ÊJÊJ!ÊJ&ÊJ/Ê!J&Ê&J/Ê+J/Ê-J/c              ƒ  óV  K  —  |d| j                   | j                  dœ«      ƒ d {  –—†  |r |ddddœ«      ƒ d {  –—†  y |r' |dt        | j                  «      dœ«      ƒ d {  –—†  y t	        j
                  | j                  d	¬
«      ƒ d {  –—† 4 ƒd {  –—† }d}|rR|j                  | j                  «      ƒ d {  –—† }t        |«      | j                  k(  } |d||dœ«      ƒ d {  –—†  |rŒRd d d «      ƒd {  –—†  y 7 ŒÝ7 ŒÉ7 Œ¢7 Œz7 Œs7 ŒN7 Œ$7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nru   r€   rt   r/   Fr·   rô   )rs   rT   Úrb©r	  T)	r#   rB   r>   rT   rÌ   Ú	open_fileÚreadÚ
chunk_sizer?   )r*   ry   r  r  Úfiler¸   r¹   s          r-   r  zFileResponse._handle_simple�  s  è ø€ ÙÐ1¸T×=MÑ=MÐZ^×ZjÑZjÑkÓl×lÐlÙÙÐ 4¸cÐPUÑVÓW×WÑWÙÙÐ 8Ä#ÀdÇiÁiÃ.ÑQÓR×RÑRä"Ÿ_™_¨T¯Y©Y¸TÔB×B÷ fð fÀdØ �	ÙØ"&§)¡)¨D¯O©OÓ"<×<�EÜ # E£
¨d¯o©oÑ =�IÙÐ(<ÀeÐZcÑdÓe×eÐeò  ÷f÷ fð fð 	møàWøàRøàBøð føð =øàeøðfø÷ f÷ fñ füs¯   ‚$D)¦D§D)¼D½(D)Á%DÁ&)D)ÂD
ÂD)ÂDÂD)Â#DÂ?DÃ +DÃ+DÃ,DÃ3D)Ã>DÃ?D)ÄD)ÄD)Ä
D)ÄD)ÄDÄDÄD)ÄD&ÄDÄD&Ä"D)c              ƒ  óè  K  — t        t        | j                  «      ¬«      }d|› d|dz
  › d|› �|d<   t        ||z
  «      |d<    |dd	|j                  d
œ«      ƒ d {  –—†  |r |ddddœ«      ƒ d {  –—†  y t        j                  | j                  d¬«      ƒ d {  –—† 4 ƒd {  –—† }|j                  |«      ƒ d {  –—†  d}|rt|j                  t        | j                  ||z
  «      «      ƒ d {  –—† }	|t        |	«      z  }t        |	«      | j                  k(  xr ||k  } |d|	|dœ«      ƒ d {  –—†  |rŒtd d d «      ƒd {  –—†  y 7 Œï7 ŒÛ7 Œ³7 Œ¬7 Œ•7 Œc7 Œ$7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)NrM   zbytes rå   r÷   rŠ   zcontent-rangerç   ru   éÎ   r€   rt   r/   Fr·   r  r  T)r   ÚlistrB   r>   rN   rÌ   r  rT   Úseekr  Úminr  r?   )
r*   ry   r  r  Ú	file_sizer  r,   r  r¸   r¹   s
             r-   r  z!FileResponse._handle_single_range�  s{  è ø€ ô !¤T¨$×*:Ñ*:Ó%;Ô<ˆØ%+¨E¨7°!°C¸!±G°9¸A¸i¸[Ð#Iˆ�Ñ Ü$'¨¨e©Ó$4ˆÐ Ñ!ÙÐ1¸SÈWÏ[É[ÑYÓZ×ZÐZÙÙÐ 4¸cÐPUÑVÓW×WÑWä"Ÿ_™_¨T¯Y©Y¸TÔB×B÷ fð fÀdØ—i‘i Ó&×&Ð&Ø �	ÙØ"&§)¡)¬C°·±ÀÀuÁÓ,MÓ"N×N�EØœS ›ZÑ'�EÜ # E£
¨d¯o©oÑ =Ò MÀ%È#Á+�IÙÐ(<ÀeÐZcÑdÓe×eÐeò	  ÷f÷ fð fð	 	[øàWøàBøð føØ&øð Oøð føðfø÷ f÷ fñ füsµ   ‚AE2ÁEÁE2Á3EÁ4)E2ÂEÂE2Â&EÂ'E2Â*EÂ?EÃ 3EÃ3EÃ4A EÄ4EÄ5EÄ<E2ÅEÅE2ÅE2ÅE2ÅE2ÅEÅEÅEÅE2ÅE/Å#E&Å$E/Å+E2c           	   ƒ  óÈ  K  — t        d«      }| j                  |||| j                  d   «      \  }}t        t	        | j
                  «      ¬«      }d|› �|d<   t        |«      |d<    |dd|j                  dœ«      ƒ d {  –—†  |r |d	d
ddœ«      ƒ d {  –—†  y t        j                  | j                  d¬«      ƒ d {  –—† 4 ƒd {  –—† }	|D ]ª  \  }
} |d	 ||
|«      ddœ«      ƒ d {  –—†  |	j                  |
«      ƒ d {  –—†  |
|k  rX|	j                  t        | j                  ||
z
  «      «      ƒ d {  –—† }|
t        |«      z  }
 |d	|ddœ«      ƒ d {  –—†  |
|k  rŒX |d	dddœ«      ƒ d {  –—†  Œ¬  |d	d|› d�j!                  d«      ddœ«      ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 �Œ57 �Œ"7 Œú7 Œó7 ŒÒ7 Œ»7 Œˆ7 Œh7 ŒP7 Œ)7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Né   zcontent-typerM   zmultipart/byteranges; boundary=rç   ru   r  r€   rt   r/   Fr·   r  r  Ts   
ú--r8   )r   Úgenerate_multipartr,   r   r  rB   r>   rN   rÌ   r  rT   r  r  r  r  r?   r4   )r*   ry   r  r  r  ÚboundaryrI   Úheader_generatorr,   r  r  r  r¹   s                r-   r  z$FileResponse._handle_multiple_ranges¢  s  è ø€ ô ˜R“=ˆØ+/×+BÑ+BØ�H˜i¨¯©°nÑ)Eó,
Ñ(ˆÐ(ô !¤T¨$×*:Ñ*:Ó%;Ô<ˆØ$CÀHÀ:Ð"Nˆ�ÑÜ$'¨Ó$7ˆÐ Ñ!ÙÐ1¸SÈWÏ[É[ÑYÓZ×ZÐZÙÙÐ 4¸cÐPUÑVÓW×WÑWä"Ÿ_™_¨T¯Y©Y¸TÔB×B÷ ð ÀdØ"(ò c‘J�E˜3ÙÐ(<ÑFVÐW\Ð^aÓFbÐquÑvÓw×wÐwØŸ)™) EÓ*×*Ð*Ø #š+Ø&*§i¡i´°D·O±OÀSÈ5Á[Ó0QÓ&R× R˜Ø¤ U£Ñ+˜Ù"Ð,@È%Ð^bÑ#cÓd×dÐdð   #›+ñ Ð(<ÀgÐ\`ÑaÓb×bÑbðcñ à 4Ø"$ X J¨bÐ 1× 8Ñ 8¸Ó CØ%*ñó÷ ð ÷÷ ð ð	 	[ùàWùàBøð øàwøØ*øà RøàdøØbøðøðø÷ ÷ ñ üsð   ‚A>G"Â F5ÂG"ÂF8Â)G"Ã F;ÃG"Ã	F=Ã
G"ÃGÃ,F?Ã-GÄGÄ4GÄ:GÄ;!GÅGÅ	GÅ'GÅ6GÅ7(GÆG	Æ GÆ$G"Æ/GÆ0G"Æ8G"Æ;G"Æ=G"Æ?GÇGÇGÇGÇGÇ	GÇG"ÇGÇGÇGÇG"c                óN   — || j                   d   k(  xs || j                   d   k(  S )Nrè   ré   )r,   )r*   r  s     r-   r  zFileResponse._should_use_rangeÆ  s-   € Ø §¡¨_Ñ =Ñ=ÒfÀÐRV×R^ÑR^Ð_eÑRfÑAfÐfr/   c                óZ  ‡— g }	 |j                  dd«      \  }}|j                  «       j	                  «       }|dk7  rt        d«      ‚| j                  |‰«      }t        |«      dk(  rt        d«      ‚t        ˆfd„|D «       «      rt        ‰«      ‚t        d„ |D «       «      rt        d	«      ‚t        |«      dk(  r|S |j                  «        |d   g}|dd  D ]7  \  }}|d
   \  }	}
||
k  r|	t        |
|«      f|d
<   Œ%|j                  ||f«       Œ9 |S # t        $ r t        «       ‚w xY w)Nú=r÷   r2   zOnly support bytes ranger   z%Range header: range must be requestedc              3  óF   •K  — | ]  \  }}d |cxk  xr ‰k  nc  –— Œ y­w)r   Nrv   )Ú.0r  Ú_r  s      €r-   ú	<genexpr>z3FileResponse._parse_range_header.<locals>.<genexpr>Û  s"   øè ø€ ÒC±°°q�A˜Ö* Ô*Ô+ÑCùs   ƒ!c              3  ó,   K  — | ]  \  }}||kD  –— Œ y ­wr"   rv   )r(  r  r  s      r-   r*  z3FileResponse._parse_range_header.<locals>.<genexpr>Þ  s   è ø€ Ò4™z˜u cˆu�s�{Ñ4ùs   ‚z)Range header: start must be less than endéÿÿÿÿ)rÊ   rf   rÒ   rh   r<   Ú_parse_rangesr?   ÚanyrÖ   ÚsortÚmaxr@   )Úclsr
  r  r  ÚunitsÚrange_Úresultr  r  Ú
last_startÚlast_ends     `        r-   r  z FileResponse._parse_range_headerÉ  sG  ø€ à(*ˆð	)Ø&×,Ñ,¨S°!Ó4‰MˆE�6ð —‘“×#Ñ#Ó%ˆà�GÒÜ&Ð'AÓBÐBà×"Ñ" 6¨9Ó5ˆäˆv‹;˜!ÒÜ&Ð'NÓOÐOäÓC¸FÔCÔCÜ% iÓ0Ð0äÑ4¨VÔ4Ô4Ü&Ð'RÓSÐSäˆv‹;˜!ÒØˆMð 	�‰ŒØ)/°©¨ˆØ   ˜*ò 	,‰JˆE�3Ø#)¨"¡:Ñ ˆJ˜Ø˜Ò Ø(¬#¨h¸Ó*<Ð=��r’
à—‘˜u c˜lÕ+ð	,ð ˆøôA ò 	)Ü&Ó(Ð(ð	)ús   …D ÄD*c                óš  — g }|j                  d«      D ]¥  }|j                  «       }|r|dk(  rŒd|vrŒ |j                  dd«      \  }}|j                  «       }|j                  «       }	 |rt        |«      n|t        |«      z
  }|r|rt        |«      |k  rt        |«      dz   n|}|j                  ||f«       Œ§ |S # t        $ r Y Œµw xY w)Nrž   rå   r÷   )rÊ   rh   r†   r@   rf   )	r1  r3  r  r  ÚpartÚ	start_strÚend_strr  r  s	            r-   r-  zFileResponse._parse_rangesð  s×   € à(*ˆà—L‘L Ó%ò 	ˆDØ—:‘:“<ˆDñ ˜4 3š;Øð ˜$‰Øà!%§¡¨C°Ó!3ÑˆI�wØ!Ÿ™Ó)ˆIØ—m‘m“oˆGðÙ*3œ˜Iœ¸ÄSÈÃ\Ñ9Q�Ù*3¹ÄCÈÃLÐS\ÒD\”c˜'“l QÒ&Ðbk�Ø—‘˜u c˜lÕ+ð%	ð. ˆøô	 ò áðús   Á*AB>Â>	C
Ã	C
c                ó²   ‡‡‡‡— t        ‰«      }d|z   t        ‰«      z   t        t        ‰«      «      z   Št        ˆfd„|D «       «      d|z   z   }|ˆˆˆfd„fS )aÏ  
        Multipart response headers generator.

        ```
        --{boundary}\r\n
        Content-Type: {content_type}\r\n
        Content-Range: bytes {start}-{end-1}/{max_size}\r\n
        \r\n
        ..........content...........\r\n
        --{boundary}\r\n
        Content-Type: {content_type}\r\n
        Content-Range: bytes {start}-{end-1}/{max_size}\r\n
        \r\n
        ..........content...........\r\n
        --{boundary}--
        ```
        é1   c              3  óŽ   •K  — | ]<  \  }}t        t        |«      «      t        t        |d z
  «      «      z   ‰z   ||z
  z   –— Œ> y­w)r÷   N)r?   r>   )r(  r  r  Ústatic_header_part_lens      €r-   r*  z2FileResponse.generate_multipart.<locals>.<genexpr>'  sK   øè ø€ ò 
ñ ��sô ”�U“‹_œs¤3 s¨Q¡w£<Ó0Ñ0Ð3IÑIØ�U‰{õñ
ùs   ƒAArÀ   c                óL   •— d‰› d‰› d| › d|dz
  › d‰› d�j                  d«      S )	Nr   z
Content-Type: z
Content-Range: bytes rå   r÷   rŠ   z

r8   )r4   )r  r  r"  rJ   rØ   s     €€€r-   ú<lambda>z1FileResponse.generate_multipart.<locals>.<lambda>0  sL   ø€ ðØ€*ð Øˆnð Ø�W˜A˜c A™g˜Y a¨ zð 2ð÷ ‰f�YÓð r/   )r?   r>   Úsum)r*   r  r"  rØ   rJ   Úboundary_lenrI   r>  s     ```  @r-   r!  zFileResponse.generate_multipart  sn   û€ ô0 ˜8“}ˆØ!# lÑ!2´S¸Ó5FÑ!FÌÌSÐQYË]ÓI[Ñ![ÐÜó 
ð %ô
ó 
ð
 �Ññ
ˆð õ ð

ð 
	
r/   )r9   NNNNNÚ
attachment)rT   zstr | os.PathLike[str]r#   r†   r,   r‡   r$   rˆ   r%   r‰   rÝ   rˆ   rß   zos.stat_result | Nonerá   r>   r{   r|   )rß   zos.stat_resultr{   r|   r�   )ry   r   r  r‹   r  r‹   r{   r|   )ry   r   r  r†   r  r†   r  r†   r  r‹   r{   r|   )
ry   r   r  úlist[tuple[int, int]]r  r†   r  r‹   r{   r|   )r  r>   r{   r‹   )r
  r>   r  r†   r{   rD  )r3  r>   r  r†   r{   rD  )
r  zSequence[tuple[int, int]]r"  r>   rØ   r†   rJ   r>   r{   z'tuple[int, Callable[[int, int], bytes]])rŽ   r�   r�   r  r.   rà   r„   r  r  r  r  Úclassmethodr  r-  r!  rv   r/   r-   rÚ   rÚ   )  sb  „ Ø€Jð
 Ø,0Ø!%Ø,0Ø#Ø-1Ø(4ð/à$ð/ð ð/ð *ð	/ð
 ð/ð *ð/ð ð/ð +ð/ð #&ð/ð 
ó/ó>.ó*$óXfðfØðfØ!$ðfØ+.ðfØ;>ðfØRVðfà	ófð&"àð"ð &ð"ð ð	"ð
 ð"ð 
ó"óHgð ò$ó ð$ðL òó ðð8+
à)ð+
ð ð+
ð ð	+
ð
 ð+
ð 
1ô+
r/   rÚ   )CÚ
__future__r   rì   Úhttp.cookiesra   r¤   rû   rü   rd   Úcollections.abcr   r   r   r   r   r	   r
   Úemail.utilsr   r   Ú	functoolsr   Ú	mimetypesr   Úsecretsr   Útypingr   r   Úurllib.parser   rÌ   Úanyio.to_threadÚstarlette._utilsr   Ústarlette.backgroundr   Ústarlette.concurrencyr   Ústarlette.datastructuresr   r   r   Ústarlette.requestsr   Ústarlette.typesr   r   r   r   r   r“   r–   r™   rª   r>   r2   r3   ÚContentÚSyncContentStreamr±   rÏ   r°   Ú	ExceptionrÒ   rÖ   rÚ   rv   r/   r-   ú<module>rY     sö   ðÝ "ã Û Û Û 	Û Û 
ß [× [Ý ß 3Ý Ý  Ý ß Ý ã Û å /Ý /Ý 7ß AÑ AÝ /ß 9Ó 9÷M$ñ M$ô`�8ô ô˜ô ô�8ô ô.	O�xô 	Oð �‰+˜
Ñ
"€Ø˜WÑ%Ð Ø" 7Ñ+Ð Ø"Ð%6Ñ6€ô>$˜ô >$ôB˜9ô ô
!˜)ô !ô
O
�8õ O
r/   