+
    Pj                         ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
t
^ RIt
^ RIHt ^ RIHtHt ^ RIHt ^ RIHtHtHt ^ RIHtHtHt ]P6                  ]R	3,          t ! R
 R]4      t ! R R4      tR# )    )annotationsN)	parsedate)get_route_path)URLHeaders)HTTPException)FileResponseRedirectResponseResponse)ReceiveScopeSendzos.PathLike[str]c                  2   a  ] tR t^tRtR V 3R lltRtV ;t# )NotModifiedResponsec                   V ^8  d   QhRR/# )   headersr    )formats   "n/Users/ahmed/devFolder/Ultron/claude-voice/gateway/.venv/lib/python3.14/site-packages/starlette/staticfiles.py__annotate__ NotModifiedResponse.__annotate__    s     
 
 
    c           	     	   < \         ST `  R VP                  4        UUu/ uF  w  r#W P                  9   g   K  W#bK  	  uppR7       R# u uppi )i0  )status_coder   N)super__init__itemsNOT_MODIFIED_HEADERS)selfr   namevalue	__class__s   &&  r   r   NotModifiedResponse.__init__    sD    4;MMOiO[TtOhOhGh[T[Oi 	 	
is
   A	A	r   )zcache-controlzcontent-locationdateetagexpiresvary)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classcell__)r#   s   @r   r   r      s    
 
r   r   c            
          ] tR t^'tRRRRRRRRRR/R	 R
 lltRR R lltR R ltR R ltR R ltR R lt	RR R llt
R R ltR R ltRtR# )StaticFiles	directoryNpackageshtmlF	check_dirTfollow_symlinkc               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r   r1   PathLike | Noner2   "list[str | tuple[str, str]] | Noner3   boolr4   r5   returnNoner   )r   s   "r   r   StaticFiles.__annotate__(   sP     J J #J 5	J
 J J J 
Jr   c               	    Wn         W n        V P                  W4      V n        W0n        R V n        WPn        V'       d=   Ve7   \        P                  P                  V4      '       g   \        RV R24      hR# R# R# )FNDirectory 'z' does not exist)r1   r2   get_directoriesall_directoriesr3   config_checkedr5   ospathisdirRuntimeError)r    r1   r2   r3   r4   r5   s   &$$$$$r   r   StaticFiles.__init__(   sn     # #33IH	#,.rww}}Y7O7OYK7GHII 8P.9r   c               $    V ^8  d   QhRRRRRR/# )r   r1   r7   r2   r8   r:   zlist[PathLike]r   )r   s   "r   r   r<   :   s(      " 5 
	r   c                B   . pVe   VP                  V4       T;'       g    .  F  p\        V\        4      '       d   Vw  rEMRp\        P                  P                  V4      pVf   Q RV: R24       hVP                  f   Q RV: R24       h\        P                  P                  \        P                  P                  VP                  RV4      4      p\        P                  P                  V4      '       g   Q RV: RV: R24       hVP                  V4       K  	  V# )z
Given `directory` and `packages` arguments, return a list of all the
directories that should be used for serving static files from.
staticszPackage z could not be found.z..r>   z' in package )append
isinstancetuple	importlibutil	find_specoriginrB   rC   normpathjoinrD   )r    r1   r2   directoriespackagestatics_dirspecpackage_directorys   &&&     r   r?   StaticFiles.get_directories:   s     y)~~2~G'5))'.$'>>++G4D#Ox{:N%OO#;;*VhwkAU,VV* " 0 0dkk4Q\1] ^77==!  Y[O=CWXY  01 & r   c               (    V ^8  d   QhRRRRRRRR/# )	r   scoper   receiver   sendr   r:   r;   r   )r   s   "r   r   r<   W   s(     - -E -G -4 -D -r   c                  "   VR,          R8X  g   Q hV P                   '       g    V P                  4       G Rj  xL
  RV n         V P                  V4      pV P                  WA4      G Rj  xL
 pV! WV4      G Rj  xL
  R#  LH L L
5i)z
The ASGI entry point.
typehttpNT)rA   check_configget_pathget_response)r    rZ   r[   r\   rC   responses   &&&&  r   __call__StaticFiles.__call__W   s}      V}&&&"""##%%%"&D}}U#**477ut,,, & 8,s8   "BBB0B)B*B:B;BBBc                    V ^8  d   QhRRRR/# )r   rZ   r   r:   strr   )r   s   "r   r   r<   e   s     F Fe F Fr   c                    \        V4      p\        P                  P                  \        P                  P                  ! VP                  R4      !  4      # )z
Given the ASGI scope, return the `path` string to serve up,
with OS specific path separators, and any '..', '.' components removed.
/)r   rB   rC   rQ   rR   split)r    rZ   
route_paths   && r   ra   StaticFiles.get_pathe   s;    
 $E*
wwj.>.>s.C DEEr   c               $    V ^8  d   QhRRRRRR/# )r   rC   rg   rZ   r   r:   r   r   )r   s   "r   r   r<   m   s!     (- (-s (-5 (-X (-r   c                R  "   VR,          R9  d   \        RR7      h \        P                  P                  V P                  V4      G Rj  xL
 w  r4T'       d9   \        P                  ! TP                  4      '       d   T P                  Y4T4      # T'       Ed"   \        P                  ! TP                  4      '       d   T P                  '       d   \        P                   P#                  TR4      p\        P                  P                  T P                  T4      G Rj  xL
 w  r4Te   \        P                  ! TP                  4      '       dl   TR,          P%                  R	4      '       g<   \'        TR
7      pTP)                  TP                   R	,           R7      p\+        TR7      # T P                  Y4T4      # T P                  '       dp   \        P                  P                  T P                  R4      G Rj  xL
 w  r4T'       d4   \        P                  ! TP                  4      '       d   \-        Y4RR7      # \        RR7      h EL  \
         d    \        RR7      h\         d3   pTP                  \        P                  8X  d   \        RR7      hThRp?ii ; i EL L5i)zP
Returns an HTTP response, given the incoming path, method and request headers.
methodi  )r   Ni  i  z
index.htmlrC   ri   rZ   )rC   )urlz404.html)stat_resultr   )GETHEAD)r   anyio	to_threadrun_synclookup_pathPermissionErrorOSErrorerrnoENAMETOOLONGstatS_ISREGst_modefile_responseS_ISDIRr3   rB   rC   rR   endswithr   replacer
   r	   )r    rC   rZ   	full_pathrr   exc
index_pathrq   s   &&&     r   rb   StaticFiles.get_responsem   s     ?/1C00		+0??+C+CDDTDTVZ+[%["I 4<<(;(;<<%%ieDD[T\\+*=*=>>4999 dL9J+0??+C+CDDTDTV`+a%a"I&4<<8K8K+L+LV}--c22E*C++388c>+:C+44)))%HH999+0??+C+CDDTDTV`+a%a"It||K,?,?@@#ITWXX,,A &\ 	1C00 	yyE...#44I	 &b &bs   J'-I I	I J'%J' J'%J'J'AJ' J"!/J'J'/AJ'-J';J%<3J'0J'	I J,J--JJJ'%J'c                    V ^8  d   QhRRRR/# )r   rC   rg   r:   z!tuple[str, os.stat_result | None]r   )r   s   "r   r   r<      s       (I r   c                	   V P                    F  p\        P                  P                  W!4      pV P                  '       d!   \        P                  P                  V4      pM\        P                  P                  V4      p\        P                  P                  V4      p\        P                  P                  WB.4      V8w  d   K   V\        P                  ! V4      3u # 	  R#   \        \        3 d     K  i ; i) )r   N)r@   rB   rC   rR   r5   abspathrealpath
commonpathr}   FileNotFoundErrorNotADirectoryError)r    rC   r1   joined_pathr   s   &&   r   rx   StaticFiles.lookup_path   s    --I'',,y7K"""GGOOK8	GG,,[9	((3Iww!!9"89YF  "'')"444 .  &'9: s   C%%C:9C:c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r   PathLikerr   zos.stat_resultrZ   r   r   intr:   r   r   )r   s   "r   r   r<      s<       $ 	
  
r   c                	    \        VR 7      p\        WVR7      pV P                  VP                  V4      '       d   \	        VP                  4      # V# )rp   )r   rr   )r   r	   is_not_modifiedr   r   )r    r   rr   rZ   r   request_headersrc   s   &&&&&  r   r   StaticFiles.file_response   sJ     ".	P[\ 0 0/BB&x'7'788r   c                   V ^8  d   QhRR/# )r   r:   r;   r   )r   s   "r   r   r<      s     [ [D [r   c                  "   V P                   f   R#  \        P                  P                  \        P
                  V P                   4      G Rj  xL
 p\
        P                  ! TP                  4      '       gB   \
        P                  ! TP                  4      '       g   \        RT P                    R24      hR# R#  Lm  \         d    \        RT P                    R24      hi ; i5i)z
Perform a one-off configuration check that StaticFiles is actually
pointed at a directory, so that we can raise loud errors rather than
just returning 404 responses.
NzStaticFiles directory 'z' does not exist.zStaticFiles path 'z' is not a directory.)r1   ru   rv   rw   rB   r}   r   rE   r   r   S_ISLNK)r    rr   s   & r   r`   StaticFiles.check_config   s      >>!	\ % 8 8$.. QQK [0011T\\+BUBU5V5V!3DNN3CCXYZZ 6W1 R  	\!88HHYZ[[	\s:   C';B? B=B? %C':%C' C'=B? ?%C$$C'c               $    V ^8  d   QhRRRRRR/# )r   response_headersr   r   r:   r9   r   )r   s   "r   r   r<      s"       ' VZ r   c                R    VR,          pVR,          pYCP                  R4       Uu. uF  qUP                  R4      NK  	  up9   d   R#   \        VR,          4      p\        VR,          4      pVe   Ve	   Wg8  d   R# R# u upi   \         d     LIi ; i  \         d     R# i ; i)	zu
Given the request and response headers, return `True` if an HTTP
"Not Modified" response could be returned instead.
zif-none-matchr&   ,z W/Tzif-modified-sincezlast-modifiedF)rj   stripKeyErrorr   )r    r   r   if_none_matchr&   tagif_modified_sincelast_modifieds   &&&     r   r   StaticFiles.is_not_modified   s    
	+O<M#F+D4G4G4LM4LS		%(4LMM N
	 )/:M*N O%&6&GHM ,1JO`Oq  N 		  		s4   %B B B 2B B BBB&%B&)r@   rA   r1   r5   r3   r2   )NN)   )r)   r*   r+   r,   r   r?   rd   ra   rb   rx   r   r`   r   r-   r   r   r   r0   r0   '   so    J &*J 8<	J
 J J  %J$:-F(-T$[  r   r0   ) 
__future__r   r{   importlib.utilrM   rB   r}   typingemail.utilsr   ru   anyio.to_threadstarlette._utilsr   starlette.datastructuresr   r   starlette.exceptionsr   starlette.responsesr	   r
   r   starlette.typesr   r   r   Unionrg   r   r   r0   r   r   r   <module>r      sa    "   	   !   + 1 . H H 0 0<<//0
( 
"u ur   