+
    Di                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
HtHtHtHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIH t H!t! ^ RI"H#t#H$t$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI,H-t-H.t.H/t/ ^ RI0H1t1H2t2H3t3H4t4H5t5 ^ RI6H7t7H8t8  ! R R]94      t: ! R R]4      t;R R lt<R R lt=R R lt>R R lt?R R  lt@]P                  ! R!4      tBR" R# ltC ! R$ R%4      tD ! R& R']D4      tE ! R( R)]D4      tF ! R* R+]D4      tG ! R, R-]D4      tH]! R.4      tI ! R/ R0]]I,          4      tJR1 R2 ltK ! R3 R44      tL ! R5 R64      tMR# )7    )annotationsN)	AwaitableCallable
Collection	GeneratorSequence)AbstractAsyncContextManagerAbstractContextManagerasynccontextmanager)Enum)Pattern)AnyTypeVar)wrap_app_handling_exceptions)get_route_pathis_async_callable)run_in_threadpool)CONVERTOR_TYPES	Convertor)URLHeadersURLPath)HTTPException)
Middleware)Request)PlainTextResponseRedirectResponseResponse)ASGIAppLifespanReceiveScopeSend)	WebSocketWebSocketClosec                  2   a  ] tR t^tRtR V 3R lltRtV ;t# )NoMatchFoundzq
Raised by `.url_for(name, **path_params)` and `.url_path_for(name, **path_params)`
if no matching route exists.
c               $    V ^8  d   QhRRRRRR/# )   namestrpath_paramszdict[str, Any]returnNone )formats   "o/Users/tonyclaw/.openclaw/workspace/services/omi-webhook/venv/lib/python3.14/site-packages/starlette/routing.py__annotate__NoMatchFound.__annotate__#   s&     V VS V~ V$ V    c                	   < R P                  \        VP                  4       4      4      p\        SV `  RV RV R24       R# ), zNo route exists for name "z" and params "z".N)joinlistkeyssuper__init__)selfr*   r,   params	__class__s   &&& r1   r;   NoMatchFound.__init__#   s=    4 0 0 2345dV>&QSTUr4   r/   )__name__
__module____qualname____firstlineno____doc__r;   __static_attributes____classcell__)r>   s   @r1   r'   r'      s    
V Vr4   r'   c                  "    ] tR t^(t^ t^t^tRtR# )Matchr/   N)r@   rA   rB   rC   NONEPARTIALFULLrE   r/   r4   r1   rH   rH   (   s    DGDr4   rH   c                    V ^8  d   QhRRRR/# )r)   objr   r-   boolr/   )r0   s   "r1   r2   r2   .   s     , , , ,r4   c                    \         P                  ! R\        4       \        V \        P
                  4      '       d   V P                  p K.  \        P                  ! V 4      # )zr
Correctly determines if an object is a coroutine function,
including those wrapped in functools.partial objects.
zViscoroutinefunction_or_partial is deprecated, and will be removed in a future release.)	warningswarnDeprecationWarning
isinstance	functoolspartialfuncinspectiscoroutinefunction)rM   s   &r1   iscoroutinefunction_or_partialrY   .   sE    
 MM` S)++
,
,hh&&s++r4   c                    V ^8  d   QhRRRR/# )r)   rV   3Callable[[Request], Awaitable[Response] | Response]r-   r   r/   )r0   s   "r1   r2   r2   <   s      
=r4   c                v   a \        V 4      '       d   T M\        P                  ! \        V 4      oR V3R llpV# )z]
Takes a function or coroutine `func(request) -> response`,
and returns an ASGI application.
c               (    V ^8  d   QhRRRRRRRR/# 	r)   scoper"   receiver!   sendr#   r-   r.   r/   )r0   s   "r1   r2   &request_response.<locals>.__annotate__G   s.     O O O O O Or4   c                x   <a"   \        WV4      oR  VV3R llp\        VS4      ! WV4      G Rj  xL
  R#  L5i)c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   3request_response.<locals>.app.<locals>.__annotate__J   s(     	1 	1U 	1W 	1D 	1T 	1r4   c                Z   <"   S! S4      G R j  xL
 pV! WV4      G R j  xL
  R #  L L5iNr/   )r_   r`   ra   responsefrequests   &&& r1   app*request_response.<locals>.app.<locals>.appJ   s*     wZ'H54000 (0s   +'+)++N)r   r   )r_   r`   ra   rk   rj   ri   s   &&& @r1   rk   request_response.<locals>.appG   s5     %$/	1 	1 +38NNNs   -:8:)r   rT   rU   r   )rV   rk   ri   s   & @r1   request_responsern   <   s;     "$''Y->->?PRV-W O O Jr4   c                    V ^8  d   QhRRRR/# )r)   rV   &Callable[[WebSocket], Awaitable[None]]r-   r   r/   )r0   s   "r1   r2   r2   S   s      
0r4   c                   a  R V 3R llpV# )zE
Takes a coroutine `func(session)`, and returns an ASGI application.
c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   'websocket_session.<locals>.__annotate__[   s.     O O O O O Or4   c                z   <a"   \        WVR 7      oR VV3R llp\        VS4      ! WV4      G Rj  xL
  R#  L5i))r`   ra   c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   4websocket_session.<locals>.app.<locals>.__annotate__^   s(     	  	 U 	 W 	 D 	 T 	 r4   c                4   <"   S! S4      G R j  xL
  R #  L5irg   r/   )r_   r`   ra   rV   sessions   &&&r1   rk   +websocket_session.<locals>.app.<locals>.app^   s     w-s   N)r$   r   )r_   r`   ra   rk   rx   rV   s   &&& @r1   rk   websocket_session.<locals>.app[   s5     E>	  	  +38NNNs   .;9;r/   )rV   rk   s   f r1   websocket_sessionr{   S   s    O O Jr4   c                    V ^8  d   QhRRRR/# )r)   endpointCallable[..., Any]r-   r+   r/   )r0   s   "r1   r2   r2   f   s     F F) Fc Fr4   c                D    \        V R V P                  P                  4      # )r@   )getattrr>   r@   )r}   s   &r1   get_namer   f   s    8Z););)D)DEEr4   c               (    V ^8  d   QhRRRRRRRR/# )	r)   pathr+   param_convertorszdict[str, Convertor[Any]]r,   zdict[str, str]r-   ztuple[str, dict[str, str]]r/   )r0   s   "r1   r2   r2   j   s0      
/    	r4   c                   \        VP                  4       4       Ff  w  r4R V,           R,           V 9   g   K  W,          pVP                  V4      pV P                  R V,           R,           V4      p VP	                  V4       Kh  	  W3# ){})r8   items	to_stringreplacepop)r   r   r,   keyvalue	convertors   &&&   r1   replace_paramsr   j   su    
 ;,,./
9s?d"(-I''.E<<c	C7DOOC  0 r4   z4{([a-zA-Z_][a-zA-Z0-9_]*)(:[a-zA-Z_][a-zA-Z0-9_]*)?}c                    V ^8  d   QhRRRR/# )r)   r   r+   r-   z3tuple[Pattern[str], str, dict[str, Convertor[Any]]]r/   )r0   s   "r1   r2   r2   |   s      5A 5A
5A85Ar4   c                    V P                  R4      '       * pRpRp\        4       p^ p/ p\        P                  V 4       F  pVP	                  R4      w  rV	P                  R4      p	V	\        9   g   Q RV	 R24       h\        V	,          p
V\        P                  ! WVP                  4        4      ,          pVRV R	V
P                   R
2,          pW0WWP                  4        ,          pVRV,          ,          pW9   d   VP                  V4       WV&   VP                  4       pK  	  V'       dC   RP                  \        V4      4      p\        V4      ^8  d   RMRp\!        RV RV RV  24      hV'       d@   WR P#                  R4      ^ ,          pV\        P                  ! V4      R,           ,          pM&V\        P                  ! WR 4      R,           ,          pW0VR ,          p\        P$                  ! V4      W63# )a  
Given a path string, like: "/{username:str}",
or a host string, like: "{subdomain}.mydomain.org", return a three-tuple
of (regex, format, {param_name:convertor}).

regex:      "/(?P<username>[^/]+)"
format:     "/{username}"
convertors: {"username": StringConvertor()}
/^ r+   :zUnknown path convertor ''z(?P<>)z{%s}r6   szDuplicated param name z	 at path N$)
startswithsetPARAM_REGEXfinditergroupslstripr   reescapestartregexaddendr7   sortedlen
ValueErrorsplitcompile)r   is_host
path_regexpath_formatduplicated_paramsidxr   match
param_nameconvertor_typer   namesendinghostnames   &             r1   compile_pathr   |   s    //#&&GJK
C%%d+%*\\%%8"
'..s30^4L^L\\]2^^0#N3	bii5;;= 9::
ZL)//):!<<
C++-00v
**)!!*-'0$iik# ,& 		&!234-.20%	$PQQ:##C(+bii)C//
biiT
+c11
:K::j!;@@r4   c                  F    ] tR t^tR R ltR R ltR R ltR R ltR	tR
# )	BaseRoutec                    V ^8  d   QhRRRR/# r)   r_   r"   r-   ztuple[Match, Scope]r/   )r0   s   "r1   r2   BaseRoute.__annotate__   s     $ $U $': $r4   c                	    \        4       hrg   NotImplementedError)r<   r_   s   &&r1   matchesBaseRoute.matches       !##r4   c               $    V ^8  d   QhRRRRRR/# r)   r*   r+   r,   r   r-   r   r/   )r0   s   "r1   r2   r      s!     $ $ $ $ $r4   c               	    \        4       hrg   r   )r<   r*   r,   s   "",r1   url_path_forBaseRoute.url_path_for   r   r4   c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r      s(     $ $% $' $ $$ $r4   c                	   "   \        4       h5irg   r   r<   r_   r`   ra   s   &&&&r1   handleBaseRoute.handle   s     !##s   c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r      s(     0 0E 0G 04 0D 0r4   c                r  "   V P                  V4      w  rEV\        P                  8X  dZ   VR,          R8X  d!   \        RRR7      pV! WV4      G Rj  xL
  R# VR,          R8X  d   \	        4       pV! WV4      G Rj  xL
  R# VP                  V4       V P                  WV4      G Rj  xL
  R#  L^ L5 L
5i)z
A route may be used in isolation as a stand-alone ASGI app.
This is a somewhat contrived case, as they'll almost always be used
within a Router, but could be useful for some tooling and minimal apps.
typehttp	Not Found  status_codeN	websocket)r   rH   rI   r   r%   updater   )r<   r_   r`   ra   r   child_scoperh   websocket_closes   &&&&    r1   __call__BaseRoute.__call__   s      "\\%0EJJV}&,[cJut444  v+-"0"2%ed;;;[!kk%$/// 5 < 	0s6   AB7B1*B7=B3>,B7*B5+B73B75B7r/   N)	r@   rA   rB   rC   r   r   r   r   rE   r/   r4   r1   r   r      s    $$$0 0r4   r   c                  r    ] tR t^tRRRRRRRR/R R lltR	 R
 ltR R ltR R ltR R ltR R lt	Rt
R# )RoutemethodsNr*   include_in_schemaT
middlewarec               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r)   r   r+   r}   r~   r   Collection[str] | Noner*   
str | Noner   rN   r   Sequence[Middleware] | Noner-   r.   r/   )r0   s   "r1   r2   Route.__annotate__   sY     'V 'V'V %'V
 ('V 'V  'V 0'V 
'Vr4   c               	   VP                  R 4      '       g   Q R4       hWn        W n        Vf   \        V4      MTV n        WPn        Tp\        V\        P                  4      '       d   VP                  pK.  \        P                  ! V4      '       g   \        P                  ! V4      '       d   \        V4      V n        Vf   R.pMW n        Ve1   \        V4       F!  w  rp
V! V P                  .V	O5/ V
B V n        K#  	  Vf	   RV n        MPV Uu0 uF  qP#                  4       kK  	  upV n        RV P                   9   d   V P                   P%                  R4       \'        V4      w  V n        V n        V n        R# u upi )r    Routed paths must start with '/'NGETHEAD)r   r   r}   r   r*   r   rS   rT   rU   rV   rW   
isfunctionismethodrn   rk   reversedr   upperr   r   r   r   r   )r<   r   r}   r   r*   r   r   endpoint_handlerclsargskwargsmethods   &&&$$$$     r1   r;   Route.__init__   sD    s##G%GG#	 *.,HX&D	!2#)9+<+<==/44.//73C3CDT3U3U'1DH '  H!%-j%9!6txx9$9&9 &: ?DL9@AvLLNADL$  (COPTCU@)4+@	 Bs   E=c                    V ^8  d   QhRRRR/# r   r/   )r0   s   "r1   r2   r      s      U ': r4   c                	N   VR ,          R8X  Ed   \        V4      pV P                  P                  V4      pV'       d   VP                  4       pVP	                  4        F)  w  rVV P
                  V,          P                  V4      WE&   K+  	  \        VP                  R/ 4      4      pVP                  V4       RV P                  RV/pV P                  '       d+   VR,          V P                  9  d   \        P                  V3# \        P                  V3# \        P                  / 3# )r   r   r,   r}   r   )r   r   r   	groupdictr   r   convertdictgetr   r}   r   rH   rJ   rK   rI   	r<   r_   
route_pathr   matched_paramsr   r   r,   r   s	   &&       r1   r   Route.matches   s    =F"'.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2)4==-U<<<E(O4<<$G ==+55 ::{22zz2~r4   c               $    V ^8  d   QhRRRRRR/# r   r/   )r0   s   "r1   r2   r     s!     	3 	3 	3 	3 	3r4   c               	0   \        VP                  4       4      p\        V P                  P                  4       4      pWP                  8w  g   W48w  d   \	        W4      h\        V P                  V P                  V4      w  rVV'       d   Q h\        VR R7      # )r   r   protocolr   r9   r   r*   r'   r   r   r   r<   r*   r,   seen_paramsexpected_paramsr   remaining_paramss   "",    r1   r   Route.url_path_for  s|    +**,-d3388:;99 >t11!/0@0@$BWBWYd!e###D622r4   c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r     s(     	1 	1% 	1' 	1 	1$ 	1r4   c                	B  "   V P                   '       dk   VR ,          V P                   9  dS   RRP                  V P                   4      /pRV9   d   \        RVR7      h\        RRVR7      pV! WV4      G Rj  xL
  R# V P	                  WV4      G Rj  xL
  R#  L" L5i)r   Allowr6   rk   i  )r   headerszMethod Not AllowedN)r   r7   r   r   rk   )r<   r_   r`   ra   r  rh   s   &&&&  r1   r   Route.handle  s     <<<E(O4<<?		$,, 78G~#WEE,-As\cd54000((54000 10s$   A6B8B9BBBBc                    V ^8  d   QhRRRR/# r)   otherr   r-   rN   r/   )r0   s   "r1   r2   r   $  s     
 
C 
D 
r4   c                	    \        V\        4      ;'       d\    V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rg   )rS   r   r   r}   r   r<   r  s   &&r1   __eq__Route.__eq__$  sa    ue$ . .		UZZ'. ./. . -		
r4   c                   V ^8  d   QhRR/# r)   r-   r+   r/   )r0   s   "r1   r2   r   ,  s     R R# Rr4   c                	    V P                   P                  p\        V P                  ;'       g    . 4      pV P                  V P
                  rCV R V: RV: RV: R2# )(path=, name=z
, methods=r   )r>   r@   r   r   r   r*   )r<   
class_namer   r   r*   s   &    r1   __repr__Route.__repr__,  sU    ^^,,
++,YY		dVD874(*WKqQQr4   )	rk   r}   r   r   r*   r   r   r   r   r@   rA   rB   rC   r;   r   r   r   r  r  rE   r/   r4   r1   r   r      sU    'V
 +/'V  'V #''V 37'VR$	3	1
R Rr4   r   c                  j    ] tR tRtRRRR/R R lltR R ltR	 R
 ltR R ltR R ltR R lt	Rt
R# )WebSocketRoutei3  r*   Nr   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r)   r   r+   r}   r~   r*   r   r   r   r-   r.   r/   )r0   s   "r1   r2   WebSocketRoute.__annotate__4  sC     V VV %V
 V 0V 
Vr4   c               	(   VP                  R 4      '       g   Q R4       hWn        W n        Vf   \        V4      MTV n        Tp\        V\        P                  4      '       d   VP                  pK.  \        P                  ! V4      '       g   \        P                  ! V4      '       d   \        V4      V n        MW n        Ve1   \        V4       F!  w  rgpV! V P                  .VO5/ VB V n        K#  	  \        V4      w  V n        V n        V n        R# )r   r   N)r   r   r}   r   r*   rS   rT   rU   rV   rW   r   r   r{   rk   r   r   r   r   r   )	r<   r   r}   r*   r   r   r   r   r   s	   &&&$$    r1   r;   WebSocketRoute.__init__4  s     s##G%GG#	 *.,HX&D	#)9+<+<==/44.//73C3CDT3U3U(2DH  H!%-j%9!6txx9$9&9 &: DPPTCU@)4+@r4   c                    V ^8  d   QhRRRR/# r   r/   )r0   s   "r1   r2   r   Q        U ': r4   c                	   VR ,          R8X  d   \        V4      pV P                  P                  V4      pV'       d   VP                  4       pVP	                  4        F)  w  rVV P
                  V,          P                  V4      WE&   K+  	  \        VP                  R/ 4      4      pVP                  V4       RV P                  RV/p\        P                  V3# \        P                  / 3# )r   r   r,   r}   )r   r   r   r   r   r   r   r   r   r   r}   rH   rK   rI   r   s	   &&       r1   r   WebSocketRoute.matchesQ  s    =K''.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2)4==-Uzz;..zz2~r4   c               $    V ^8  d   QhRRRRRR/# r   r/   )r0   s   "r1   r2   r   `  s!     	8 	8 	8 	8 	8r4   c               	0   \        VP                  4       4      p\        V P                  P                  4       4      pWP                  8w  g   W48w  d   \	        W4      h\        V P                  V P                  V4      w  rVV'       d   Q h\        VR R7      # )r   r   r  r  s   "",    r1   r   WebSocketRoute.url_path_for`  s|    +**,-d3388:;99 >t11!/0@0@$BWBWYd!e###D;77r4   c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r   k  (     - -% -' - -$ -r4   c                	F   "   V P                  WV4      G R j  xL
  R #  L5irg   rk   r   s   &&&&r1   r   WebSocketRoute.handlek       hhut,,,   !!c                    V ^8  d   QhRRRR/# r  r/   )r0   s   "r1   r2   r   n  s     q qC qD qr4   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rg   )rS   r  r   r}   r  s   &&r1   r  WebSocketRoute.__eq__n  s?    %0ppTYY%**5LppQUQ^Q^bgbpbpQppr4   c                   V ^8  d   QhRR/# r  r/   )r0   s   "r1   r2   r   q  s     T T# Tr4   c                	l    V P                   P                   R V P                  : RV P                  : R2# )r  r  r   )r>   r@   r   r*   r<   s   &r1   r  WebSocketRoute.__repr__q  s/    ..))*&WTYYMQRSSr4   )rk   r}   r*   r   r   r   r   r  r/   r4   r1   r  r  3  s?    V
  V 37V:	8-qT Tr4   r  c                      ] tR tRtRRR/R R lllt]R R l4       tR R	 ltR
 R ltR R lt	R R lt
R R ltRtR# )Mountiu  Nr   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r)   r   r+   rk   ASGIApp | NoneroutesSequence[BaseRoute] | Noner*   r   r   r   r-   r.   r/   )r0   s   "r1   r2   Mount.__annotate__v  sN     l ll l +	l
 l 0l 
lr4   c               	   VR 8X  g   VP                  R4      '       g   Q R4       hVf   Vf   Q R4       hVP                  R4      V n        Ve   W n        M\	        VR7      V n        V P                  V n        Ve1   \        V4       F!  w  rgpV! V P
                  .VO5/ VB V n        K#  	  W@n        \        V P                  R,           4      w  V n	        V n
        V n        R# )r   r   r   Nz0Either 'app=...', or 'routes=' must be specifiedr<  z/{path:path})r   rstripr   	_base_appRouterrk   r   r*   r   r   r   r   )	r<   r   rk   r<  r*   r   r   r   r   s	   &&&&&$   r1   r;   Mount.__init__v  s     rzT__S11U3UU1&"4h6hh4KK$	?&)N#62DN>>!%-j%9!6txx9$9&9 &:	COPTPYPY\jPjCk@)4+@r4   c                   V ^8  d   QhRR/# r)   r-   zlist[BaseRoute]r/   )r0   s   "r1   r2   r>    s     5 5 5r4   c                	0    \        V P                  R . 4      # r@  )r   rB  r6  s   &r1   r<  Mount.routes  s    t~~x44r4   c                    V ^8  d   QhRRRR/# r   r/   )r0   s   "r1   r2   r>    s      U ': r4   c                	|   VR ,          R	9   Ed   VP                  RR4      p\        V4      pV P                  P                  V4      pV'       d   VP	                  4       pVP                  4        F)  w  rgV P                  V,          P                  V4      WV&   K+  	  RVP                  R4      ,           pVR\        V4      )  p	\        VP                  R/ 4      4      p
V
P                  V4       RV
RVP                  RV4      RW),           RV P                  /p\        P                  V3# \        P                  / 3# )
r   	root_pathr   r   r   Nr,   app_root_pathr}   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rk   rH   rK   rI   )r<   r_   rK  r   r   r   r   r   remaining_pathmatched_pathr,   r   s   &&          r1   r   Mount.matches  s   =11		+r2I'.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9!$~'9'9&'A!A)*@S-@,@A"599]B#?@"">2!; $UYY	%J!9  zz;..zz2~r4   c               $    V ^8  d   QhRRRRRR/# r   r/   )r0   s   "r1   r2   r>    s!     . . . . .r4   c               	J   V P                   el   WP                   8X  d\   RV9   dU   VR,          P                  R4      VR&   \        V P                  V P                  V4      w  r4V'       g   \        VR7      # EMV P                   e)   VP                  V P                   R,           4      '       d   V P                   f   TpMV\        V P                   4      ^,           R  pVP                  R4      pRVR&   \        V P                  V P                  V4      w  rtVe   WdR&   V P                  ;'       g    .  FM  p VP                  ! V3/ VB p	\        VP                  R4      \        V	4      ,           V	P                  R7      u # 	  \        W4      h  \         d     Kj  i ; i)Nr   r   )r   r   r   r   )r*   r   r   r   r   r   r   r   r   r<  r   rA  r+   r  r'   )
r<   r*   r,   r   r  remaining_name
path_kwargpath_prefixrouteurls
   "",       r1   r   Mount.url_path_for  ss   99 TYY%66[;P"-f"5"<"<S"AK%3D4D4DdF[F[]h%i"D#D)) $YY$//$))c/"B"Byy !% "&c$))nq&8&:!;$0J"$K,:4;K;KTMbMbdo,p)K%+5(***,,^P?OPC"(:(:3(?#c((JUXUaUabb + 4-- $ s   ;AFF"!F"c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r>    r+  r4   c                	F   "   V P                  WV4      G R j  xL
  R #  L5irg   r-  r   s   &&&&r1   r   Mount.handle  r/  r0  c                    V ^8  d   QhRRRR/# r  r/   )r0   s   "r1   r2   r>    s     ^ ^C ^D ^r4   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rg   )rS   r9  r   rk   r  s   &&r1   r  Mount.__eq__  s<    %']]DII,C]]TYT]T]H]]r4   c                   V ^8  d   QhRR/# r  r/   )r0   s   "r1   r2   r>         T T# Tr4   c                	    V P                   P                  pV P                  ;'       g    R pV RV P                  : RV: RV P                  : R2# )r   r  r  , app=r   )r>   r@   r*   r   rk   r<   r  r*   s   &  r1   r  Mount.__repr__  H    ^^,,
yyBVDII=xvdhh\QRSSr4   )rB  rk   r*   r   r   r   r   )NNNr@   rA   rB   rC   r;   propertyr<  r   r   r   r  r  rE   r/   r4   r1   r9  r9  u  sO    l 37l l. 5 5B.6-^T Tr4   r9  c                  x    ] tR tRtRR R llt]R R l4       tR R ltR	 R
 ltR R lt	R R lt
R R ltRtR# )Hosti  Nc               (    V ^8  d   QhRRRRRRRR/# 	r)   hostr+   rk   r   r*   r   r-   r.   r/   )r0   s   "r1   r2   Host.__annotate__  s.     V VS Vw Vj VD Vr4   c                	    VP                  R 4      '       d   Q R4       hWn        W n        W0n        \	        V4      w  V n        V n        V n        R# )r   zHost must not start with '/'N)r   rl  rk   r*   r   
host_regexhost_formatr   )r<   rl  rk   r*   s   &&&&r1   r;   Host.__init__  sF    ??3''G)GG'		COPTCU@)4+@r4   c                   V ^8  d   QhRR/# rF  r/   )r0   s   "r1   r2   rm    s     / / /r4   c                	0    \        V P                  R . 4      # r@  )r   rk   r6  s   &r1   r<  Host.routes  s    txx2..r4   c                    V ^8  d   QhRRRR/# r   r/   )r0   s   "r1   r2   rm    r$  r4   c                	&   VR ,          R9   d   \        VR7      pVP                  RR4      P                  R4      ^ ,          pV P                  P	                  V4      pV'       d   VP                  4       pVP                  4        F)  w  rgV P                  V,          P                  V4      WV&   K+  	  \        VP                  R/ 4      4      pVP                  V4       RVRV P                  /p	\        P                  V	3# \        P                  / 3# )r   r_   rl  r   r   r,   r}   rM  )r   r   r   ro  r   r   r   r   r   r   r   rk   rH   rK   rI   )
r<   r_   r  rl  r   r   r   r   r,   r   s
   &&        r1   r   Host.matches  s    =11E*G;;vr*005a8DOO))$/E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2,k:txxPzz;..zz2~r4   c               $    V ^8  d   QhRRRRRR/# r   r/   )r0   s   "r1   r2   rm    s!     . . . . .r4   c               	   V P                   ea   WP                   8X  dQ   RV9   dJ   VP                  R4      p\        V P                  V P                  V4      w  rEV'       g   \        W4R7      # MV P                   e)   VP                  V P                   R,           4      '       d   V P                   f   TpMV\        V P                   4      ^,           R  p\        V P                  V P                  V4      w  rEV P                  ;'       g    .  F8  p VP                  ! V3/ VB p\        \        V4      VP                  VR7      u # 	  \        W4      h  \         d     KU  i ; i)Nr   )r   rl  r   )r   r  rl  )r*   r   r   rp  r   r   r   r   r<  r   r+   r  r'   )	r<   r*   r,   r   rl  r  rS  rV  rW  s	   "",      r1   r   Host.url_path_for  s0   99 TYY%66[;P??6*D%3D4D4DdF[F[]h%i"D#D44 $YY$//$))c/"B"Byy !% "&c$))nq&8&:!;%3D4D4DdF[F[]h%i"D***,,^P?OPC"C3<<dSS + 4-- $ s   3EE$#E$c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   rm    r+  r4   c                	F   "   V P                  WV4      G R j  xL
  R #  L5irg   r-  r   s   &&&&r1   r   Host.handle  r/  r0  c                    V ^8  d   QhRRRR/# r  r/   )r0   s   "r1   r2   rm    s     ] ]C ]D ]r4   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rg   )rS   ri  rl  rk   r  s   &&r1   r  Host.__eq__  s<    %&\\499

+B\\txxSXS\S\G\\r4   c                   V ^8  d   QhRR/# r  r/   )r0   s   "r1   r2   rm    r`  r4   c                	    V P                   P                  pV P                  ;'       g    R pV RV P                  : RV: RV P                  : R2# )r   z(host=r  rb  r   )r>   r@   r*   rl  rk   rc  s   &  r1   r  Host.__repr__  re  r4   )rk   rl  rp  ro  r*   r   rg   rf  r/   r4   r1   ri  ri    s=    V / /..-]T Tr4   ri  _Tc                  :    ] tR tRtR R ltR R ltR R ltRtR	# )
_AsyncLiftContextManageri  c                   V ^8  d   QhRR/# )r)   cmzAbstractContextManager[_T]r/   )r0   s   "r1   r2   %_AsyncLiftContextManager.__annotate__  s      5 r4   c                	    Wn         R # rg   _cm)r<   r  s   &&r1   r;   !_AsyncLiftContextManager.__init__  s    r4   c                   V ^8  d   QhRR/# )r)   r-   r  r/   )r0   s   "r1   r2   r    s     $ $" $r4   c                	>   "   V P                   P                  4       # 5irg   )r  	__enter__r6  s   &r1   
__aenter__#_AsyncLiftContextManager.__aenter__  s     xx!!##s   c               (    V ^8  d   QhRRRRRRRR/# )	r)   exc_typeztype[BaseException] | None	exc_valuezBaseException | None	tracebackztypes.TracebackType | Noner-   zbool | Noner/   )r0   s   "r1   r2   r  !  s8     A A,A (A .	A
 
Ar4   c                	B   "   V P                   P                  WV4      # 5irg   )r  __exit__)r<   r  r  r  s   &&&&r1   	__aexit__"_AsyncLiftContextManager.__aexit__!  s      xx  i@@s   r  N)r@   rA   rB   rC   r;   r  r  rE   r/   r4   r1   r  r    s    $A Ar4   r  c                    V ^8  d   QhRRRR/# )r)   lifespan_contextz)Callable[[Any], Generator[Any, Any, Any]]r-   z1Callable[[Any], AbstractAsyncContextManager[Any]]r/   )r0   s   "r1   r2   r2   *  s     	 	?	6	r4   c                x   a \         P                  ! V 4      o\        P                  ! S4      R  V3R ll4       pV# )c                    V ^8  d   QhRRRR/# )r)   rk   r   r-   z_AsyncLiftContextManager[Any]r/   )r0   s   "r1   r2   0_wrap_gen_lifespan_context.<locals>.__annotate__0  s     3 3S 3: 3r4   c                &   < \        S! V 4      4      # rg   )r  )rk   cmgrs   &r1   wrapper+_wrap_gen_lifespan_context.<locals>.wrapper/  s    'S	22r4   )
contextlibcontextmanagerrT   wraps)r  r  r  s   & @r1   _wrap_gen_lifespan_contextr  *  s8     $$%56D__T3 3 Nr4   c                  F    ] tR tRtR R ltR R ltR R ltR R	 ltR
tR# )_DefaultLifespani6  c                   V ^8  d   QhRR/# )r)   routerrC  r/   )r0   s   "r1   r2   _DefaultLifespan.__annotate__7  s      v r4   c                	    Wn         R # rg   _router)r<   r  s   &&r1   r;   _DefaultLifespan.__init__7  s    r4   c                   V ^8  d   QhRR/# r)   r-   r.   r/   )r0   s   "r1   r2   r  :  s     % %$ %r4   c                	V   "   V P                   P                  4       G R j  xL
  R #  L5irg   )r  startupr6  s   &r1   r  _DefaultLifespan.__aenter__:  s     ll""$$$   )')c                    V ^8  d   QhRRRR/# )r)   exc_infoobjectr-   r.   r/   )r0   s   "r1   r2   r  =  s     & & &D &r4   c                	V   "   V P                   P                  4       G R j  xL
  R #  L5irg   )r  shutdown)r<   r  s   &*r1   r  _DefaultLifespan.__aexit__=  s     ll##%%%r  c               $    V ^8  d   QhRRRRRR/# )r)   r<   r  rk   r  r-   r/   )r0   s   "r1   r2   r  @  s!      r  2 r4   c                	    V # rg   r/   )r<   rk   s   &&r1   r   _DefaultLifespan.__call__@  s    r4   r  N)	r@   rA   rB   rC   r;   r  r  r   rE   r/   r4   r1   r  r  6  s    %& r4   r  c                     ] tR tRtR'RR/R R llltR R ltR R	 ltR
 R ltR R 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 R lltR)R R lltR(R R lltR)R R lltR(R  R! lltR" R# ltR$ R% ltR&tR# )*rC  iD  Nr   c               8    V ^8  d   QhRRRRRRRRR	RR
RRRRR/# )r)   r<  r=  redirect_slashesrN   defaultr;  
on_startupz"Sequence[Callable[[], Any]] | Noneon_shutdownlifespanzLifespan[Any] | Noner   r   r-   r.   r/   )r0   s   "r1   r2   Router.__annotate__E  sd     ;T ;T*;T ;T  	;T
 7;T 8;T ';T 0;T 
;Tr4   c               	B   Vf   . M
\        V4      V n        W n        Vf   V P                  MTV n        Vf   . M
\        V4      V n        Vf   . M
\        V4      V n        V'       g	   V'       d:   \        P                  ! R\        4       V'       d   \        P                  ! R4       Vf   \        V 4      V n        M\        P                  ! V4      '       d-   \        P                  ! R\        4       \        V4      V n        MN\        P                  ! V4      '       d-   \        P                  ! R\        4       \!        V4      V n        MW`n        V P"                  V n        V'       d3   \'        V4       F!  w  rp
V! V P$                  .V	O5/ V
B V n        K#  	  R # R # )NzThe on_startup and on_shutdown parameters are deprecated, and they will be removed on version 1.0. Use the lifespan parameter instead. See more about it on https://starlette.dev/lifespan/.zThe `lifespan` parameter cannot be used with `on_startup` or `on_shutdown`. Both `on_startup` and `on_shutdown` will be ignored.zjasync generator function lifespans are deprecated, use an @contextlib.asynccontextmanager function insteadzdgenerator function lifespans are deprecated, use an @contextlib.asynccontextmanager function instead)r8   r<  r  	not_foundr  r  r  rP   rQ   rR   r  r  rW   isasyncgenfunctionr   isgeneratorfunctionr  rk   middleware_stackr   )r<   r<  r  r  r  r  r  r   r   r   r   s   &&&&&&&$   r1   r;   Router.__init__E  sV    #NbV 0)0t~~g * 2"Z8H!,!42${:KMMH #	  3CD3ID!''11MMJ"
 %8%D! ((22MMv" %?%D! %-! $%-j%9!6(+D,A,A(SD(SF(S% &: r4   c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r    s(     - -U -W -D -T -r4   c                	   "   VR ,          R8X  d   \        4       pV! WV4      G Rj  xL
  R# RV9   d   \        RR7      h\        RRR7      pV! WV4      G Rj  xL
  R#  L9 L5i)r   r   Nrk   r   r   r   )r%   r   r   )r<   r_   r`   ra   r   rh   s   &&&&  r1   r  Router.not_found  sf     =K',.O!%$777
 E>C00(#FHut,,, 8 	-s!   %A%A!2A%A#A%#A%c               $    V ^8  d   QhRRRRRR/# r   r/   )r0   s   "r1   r2   r    s!     . . . . .r4   c               	    V P                    F  p VP                  ! V3/ VB u # 	  \        W4      h  \         d     K4  i ; irg   )r<  r   r'   )r<   r*   r,   rV  s   "", r1   r   Router.url_path_for  sL    [[E))$>+>> !
 4--   s   3AAc                   V ^8  d   QhRR/# r  r/   )r0   s   "r1   r2   r    s      t r4   c                   "   V P                    F,  p\        V4      '       d   V! 4       G Rj  xL
  K%  V! 4        K.  	  R#  L5i)z'
Run any `.on_startup` event handlers.
N)r  r   r<   handlers   & r1   r  Router.startup  s1      G ))i		 '   +AAAc                   V ^8  d   QhRR/# r  r/   )r0   s   "r1   r2   r    s       r4   c                   "   V P                    F,  p\        V4      '       d   V! 4       G Rj  xL
  K%  V! 4        K.  	  R#  L5i)z(
Run any `.on_shutdown` event handlers.
N)r  r   r  s   & r1   r  Router.shutdown  s3      ''G ))i		 (r  c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r    s(     ? ?E ?G ?4 ?D ?r4   c                ~  "   RpVP                  R4      pV! 4       G Rj  xL
   V P                  V4      ;_uu_4       GRj  xL
 pVe+   RV9  d   \        R4      hVR,          P                  V4       V! RR/4      G Rj  xL
  RpV! 4       G Rj  xL
  RRR4      GRj  xL
  V! RR	/4      G Rj  xL
  R#  L L{ L= L. L   + GRj  xL 
 '       g   i     L7; i L,  \         dK    \
        P                  ! 4       pT'       d   T! RR
RT/4      G Rj  xL 
  h T! RRRT/4      G Rj  xL 
  h i ; i5i)zc
Handle ASGI lifespan messages, which allows us to manage application
startup and shutdown events.
Frk   Nstatez:The server does not support "state" in the lifespan scope.r   zlifespan.startup.completeTzlifespan.shutdown.completezlifespan.shutdown.failedmessagezlifespan.startup.failed)r   r  RuntimeErrorr   BaseExceptionr  
format_exc)r<   r_   r`   ra   startedrk   maybe_stateexc_texts   &&&&    r1   r  Router.lifespan  s*    
 99U#i	?,,S111[*e+*+ghh'N))+6F$?@AAAi 21   <=>>>% 	1
 B 2111  ?  	 ++-HF$>	8TUUU  F$=y(STTT	s   D=B=D=C% B?C% <CCCCCC% $C%C% )D=6C#7D=?C% CCC% C 	C
C 	C 	C% #D=%'D:D:DD:2D53D::D=c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r    s(     : :E :G :4 :D :r4   c                F   "   V P                  WV4      G Rj  xL
  R#  L5i)z+
The main entry point to the Router class.
N)r  r   s   &&&&r1   r   Router.__call__  s      ##ED999r0  c               (    V ^8  d   QhRRRRRRRR/# r^   r/   )r0   s   "r1   r2   r    s(     01 01u 01w 01d 01t 01r4   c                	F  "   VR ,          R	9   g   Q hRV9  d   WR&   VR ,          R8X  d   V P                  WV4      G Rj  xL
  R# RpV P                   Fz  pVP                  V4      w  rgV\        P                  8X  d/   VP                  V4       VP                  WV4      G Rj  xL
   R# V\        P                  8X  g   Kp  Ve   Kv  TpTpK|  	  Ve.   VP                  X4       VP                  WV4      G Rj  xL
  R# \        V4      p	VR ,          R8X  d   V P                  '       d   V	R8w  d   \        V4      p
V	P                  R4      '       d   V
R,          P                  R4      V
R&   MV
R,          R,           V
R&   V P                   F`  pVP                  V
4      w  rgV\        P                  8w  g   K-  \        V
R7      p\        \!        V4      R7      pV! WV4      G Rj  xL
   R# 	  V P#                  WV4      G Rj  xL
  R#  EL ELp EL L. L5i)
r   r   r  r  Nr   r   rw  )rW  )r   r   r  )r  r<  r   rH   rK   r   r   rJ   r   r  r   endswithrA  rI   r   r   r+   r  )r<   r_   r`   ra   rU   rV  r   r   partial_scoper   redirect_scoperedirect_urlrh   s   &&&&         r1   rk   
Router.app  s    V} AAAA5 "(O=J&--555[[E "'u!5E

"[)ll54888%--'GO + !  LL'..666#E*
=F"t'<'<'<sAR!%[N""3'')7)?)F)Fs)Kv&)7)?#)Ev&%*]]>%B"EJJ&#&^#<L/C4EFH"54888 % ll54000S 6 9 7  9 	1ss   ?H!HA%H!'H(H!H!2H!>H?0H!0BH!-H!.H/H!HH!H!H!H!H!c                    V ^8  d   QhRRRR/# r  r/   )r0   s   "r1   r2   r     s     I IC ID Ir4   c                	d    \        V\        4      ;'       d    V P                  VP                  8H  # rg   )rS   rC  r<  r  s   &&r1   r  Router.__eq__   s$    %(HHT[[ELL-HHr4   c               (    V ^8  d   QhRRRRRRRR/# )	r)   r   r+   rk   r   r*   r   r-   r.   r/   )r0   s   "r1   r2   r    s(     " "# "G ": " "r4   c                	V    \        WVR 7      pV P                  P                  V4       R# )rk   r*   N)r9  r<  append)r<   r   rk   r*   rV  s   &&&& r1   mountRouter.mount  s     d$/5!r4   c               (    V ^8  d   QhRRRRRRRR/# rk  r/   )r0   s   "r1   r2   r    s(     " " "7 "* " "r4   c                	V    \        WVR 7      pV P                  P                  V4       R# r  )ri  r<  r  )r<   rl  rk   r*   rV  s   &&&& r1   rl  Router.host  s     T.5!r4   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r)   r   r+   r}   r[   r   r   r*   r   r   rN   r-   r.   r/   )r0   s   "r1   r2   r    sG     " "" F" (	"
 "  " 
"r4   c                	\    \        VVVVVR 7      pV P                  P                  V4       R# ))r}   r   r*   r   N)r   r<  r  )r<   r   r}   r   r*   r   rV  s   &&&&&& r1   	add_routeRouter.add_route  s1     /
 	5!r4   c               (    V ^8  d   QhRRRRRRRR/# )	r)   r   r+   r}   rp   r*   r   r-   r.   r/   )r0   s   "r1   r2   r    s2     " "" 9" 	"
 
"r4   c                	V    \        WVR 7      pV P                  P                  V4       R# ))r}   r*   N)r  r<  r  )r<   r   r}   r*   rV  s   &&&& r1   add_websocket_routeRouter.add_websocket_route  s"     tTB5!r4   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r)   r   r+   r   r   r*   r   r   rN   r-   r   r/   )r0   s   "r1   r2   r  %  s<       ( 	
   
r4   c                `   a aaaa \         P                  ! R\        4       R VVVVV 3R llpV# )z
We no longer document this decorator style API, and its usage is discouraged.
Instead you should use the following approach:

>>> routes = [Route(path, endpoint=...), ...]
>>> app = Starlette(routes=routes)
zThe `route` decorator is deprecated, and will be removed in version 1.0.0.Refer to https://starlette.dev/routing/#http-routing for the recommended approach.c                    V ^8  d   QhRRRR/# r)   rV   r   r-   r/   )r0   s   "r1   r2   "Router.route.<locals>.__annotate__9  s     	 	H 	 	r4   c                4   < SP                  SV SSSR 7       V # ))r   r*   r   )r  )rV   r   r   r*   r   r<   s   &r1   	decoratorRouter.route.<locals>.decorator9  s*    NN"3   Kr4   rP   rQ   rR   )r<   r   r   r*   r   r  s   fffff r1   rV  Router.route%  s,     	a	
	 	 r4   c               $    V ^8  d   QhRRRRRR/# )r)   r   r+   r*   r   r-   r   r/   )r0   s   "r1   r2   r  E  s!      C z X r4   c                X   a aa \         P                  ! R\        4       R VVV 3R llpV# )z
We no longer document this decorator style API, and its usage is discouraged.
Instead you should use the following approach:

>>> routes = [WebSocketRoute(path, endpoint=...), ...]
>>> app = Starlette(routes=routes)
zThe `websocket_route` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://starlette.dev/routing/#websocket-routing for the recommended approach.c                    V ^8  d   QhRRRR/# r
  r/   )r0   s   "r1   r2   ,Router.websocket_route.<locals>.__annotate__S       	 	H 	 	r4   c                0   < SP                  SV SR 7       V # ))r*   )r  )rV   r*   r   r<   s   &r1   r  )Router.websocket_route.<locals>.decoratorS  s    $$T4d$;Kr4   r  )r<   r   r*   r  s   fff r1   websocket_routeRouter.websocket_routeE  s,     	]	
	 	 r4   c               $    V ^8  d   QhRRRRRR/# )r)   
event_typer+   rV   zCallable[[], Any]r-   r.   r/   )r0   s   "r1   r2   r  Y  s"     * *C *7H *T *r4   c                	    VR9   g   Q hVR 8X  d   V P                   P                  V4       R# V P                  P                  V4       R# )r  N)r  r  )r  r  r  )r<   r  rV   s   &&&r1   add_event_handlerRouter.add_event_handlerY  s?    4444"OO""4(##D)r4   c                    V ^8  d   QhRRRR/# )r)   r  r+   r-   r   r/   )r0   s   "r1   r2   r  a  s      3 8 r4   c                	T   a a \         P                  ! R \        4       R VV 3R llpV# )zThe `on_event` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://starlette.dev/lifespan/ for recommended approach.c                    V ^8  d   QhRRRR/# r
  r/   )r0   s   "r1   r2   %Router.on_event.<locals>.__annotate__h  r  r4   c                ,   < SP                  SV 4       V # rg   )r  )rV   r  r<   s   &r1   r  "Router.on_event.<locals>.decoratorh  s    "":t4Kr4   r  )r<   r  r  s   ff r1   on_eventRouter.on_eventa  s*    Q	
	 	 r4   )r  r  r  r  r  r  r<  )NTNNNNrg   )NNT)r@   rA   rB   rC   r;   r  r   r  r  r  r   rk   r  r  rl  r  r  rV  r  r  r%  rE   r/   r4   r1   rC  rC  D  sr    ;T 37;T ;Tz-.?6:01dI"""""@(* r4   rC  )N
__future__r   r  rT   rW   r   r  typesrP   collections.abcr   r   r   r   r   r	   r
   r   enumr   r   typingr   r   starlette._exception_handlerr   starlette._utilsr   r   starlette.concurrencyr   starlette.convertorsr   r   starlette.datastructuresr   r   r   starlette.exceptionsr   starlette.middlewarer   starlette.requestsr   starlette.responsesr   r   r   starlette.typesr   r    r!   r"   r#   starlette.websocketsr$   r%   	Exceptionr'   rH   rY   rn   r{   r   r   r   r   r   r   r   r  r9  ri  r  r  r  r  rC  r/   r4   r1   <module>r8     s,   "    	    P P _ _    E > 3 ; : : . + & M M C C :V9 VD ,.&F jjOP5Ap0 0<^RI ^RB?TY ?TDaTI aTH;T9 ;T| T]A:2> A 	 h hr4   