+
    AžÀjtœ  ã                  ó®  a € 0 t $ R t^ 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t^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt  ^ RI t ]!]PD                  ] PF                  3t$R]%R&   Rt(]PR                  R8X  d
    ]*! R4       ]+! ]R4      t,],'       d   ]	PZ                  t-M
 ! R R4      t- ]P\                  t/^€t1]Pd                  ]Pf                  R]4]5]Pd                  ]5,          3,          ]Pl                  R,          3,          ,          t7]Pp                  '       d   ^ RI9H:t: ^ RI9H;t; ^ RI<H=t= ^ RI>H?t?  ! R  R!]P€                  4      tA ! R" R#]4      tBR$ R% ltCRBR& R' lltDRCR( R) lltER* R+ ltFRCR, R- lltGRBR. R/ lltHR0 R1 ltIR2 R3 ltJR4 R5 ltK ! R6 R7]4      tL ! R8 R9]	Pš                  ]L4      tN ! R: R;]-]L4      tORDR< R= lltPR> R? ltQRER@ RA lltRR#   ]& d$     ! R R4      t']'! 4       t ]!]PD                  3t$ EL›i ; i  ]& d    Rt( EL�i ; i  ]0 d    Rt/ ELji ; i)FaØ  A WSGI and HTTP server for use **during development only**. This
server is convenient to use, but is not designed to be particularly
stable, secure, or efficient. Use a dedicate WSGI server and HTTP
server when deploying to production.

It provides features like interactive debugging and code reloading. Use
``run_simple`` to start the server. Put this in a ``run.py`` script:

.. code-block:: python

    from myapp import create_app
    from werkzeug import run_simple
)ÚannotationsN)Údatetime)Ú	timedelta)Útimezone)ÚBaseHTTPRequestHandler)Ú
HTTPServer)Úunquote)Úurlsplit©Ú_log)Ú_wsgi_encoding_dance)ÚInternalServerError)Úparse_set_header)Ú
uri_to_iriztuple[type[Exception], ...]Úconnection_dropped_errorsc                  ó"   € ] tR t^1tR R ltRtR# )Ú	_SslDummyc               ó    € V ^8„  d   QhRRRR/# ©é   ÚnameÚstrÚreturnút.Any© )Úformats   "Úd/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.14/site-packages/werkzeug/serving.pyÚ__annotate__Ú_SslDummy.__annotate__2   s   € ÷ 	ñ 	 Cð 	¨Eñ 	ó    c                	ó   € \        R 4      h)zUSSL is unavailable because this Python runtime was not compiled with SSL/TLS support.)ÚRuntimeError)Úselfr   s   &&r   Ú__getattr__Ú_SslDummy.__getattr__2   s   € Üð2óð r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r#   Ú__static_attributes__r   r   r   r   r   1   s   † ÷	ñ 	r   r   TÚntÚcoloramaFÚforkc                  ó   € ] tR t^ItRtR# )ÚForkingMixInr   N)r%   r&   r'   r(   r)   r   r   r   r.   r.   I   s   † Ûr   r.   ússl.SSLContextÚadhoc)ÚWSGIApplication)ÚWSGIEnvironment)ÚRSAPrivateKeyWithSerialization)ÚCertificatec                  óJ   € ] tR t^atRtR R ltR R ltR R ltR R	 ltR
t	R# )ÚDechunkedInputzÉAn input stream that handles ``Transfer-Encoding: chunked``. Only
used by the dev server, which must not be used in production. A production
WSGI server will have its own robust, secure chunk handler.
c               ó    € V ^8„  d   QhRRRR/# )r   Úrfilezt.IO[bytes]r   ÚNoner   )r   s   "r   r   ÚDechunkedInput.__annotate__g   s   € ÷ ñ ˜kð ¨dñ r   c                	ó.   € Wn         R V n        ^ V n        R# )FN)Ú_rfileÚ_doneÚ_len)r"   r8   s   &&r   Ú__init__ÚDechunkedInput.__init__g   s   € ØŒØˆŒ
ØˆŽ	r   c               ó   € V ^8„  d   QhRR/# ©r   r   Úboolr   )r   s   "r   r   r:   l   s   € ÷ ñ ˜$ñ r   c                	ó   € R # )Tr   ©r"   s   &r   ÚreadableÚDechunkedInput.readablel   s   € Ùr   c               ó   € V ^8„  d   QhRR/# ©r   r   Úintr   )r   s   "r   r   r:   o   s   € ÷ ñ  ñ r   c                	óô   €  V P                   P                  ^d4      P                  R4      p\        VP	                  R4      ^4      pT^ 8  d   \        R4      hT#   \
         d   p\        R4      ThRp?ii ; i)éd   Úlatin1z 	
zInvalid chunk headerNz!Negative chunk length not allowed)r<   ÚreadlineÚdecoderJ   ÚstripÚ
ValueErrorÚOSError)r"   Úliner>   Úes   &   r   Úread_chunk_lenÚDechunkedInput.read_chunk_leno   su   € ð	9Ø—;‘;×'Ñ'¨Ó,×3Ñ3°HÓ=ˆDÜ�t—z‘z )Ó,¨bÓ1ˆDð �!Œ8ÜÐ=Ó>Ð>Øˆøô	 ô 	9ÜÐ0Ó1°qÐ8ûð	9ús   ‚AA ÁA7Á&A2Á2A7c               ó    € V ^8„  d   QhRRRR/# )r   ÚbufÚ	bytearrayr   rJ   r   )r   s   "r   r   r:   y   s   € ÷ &ñ &˜Ið &¨#ñ &r   c                	ó.  € ^ pV P                   '       Eg€   V\        V4      8  Edo   V P                  ^ 8X  d   V P                  4       V n        V P                  ^ 8X  d   RV n         V P                  ^ 8”  dÜ   \	        \        V4      V P                  4      pW#,           \        V4      8”  dc   V P
                  P                  \        V4      V,
          4      WR% V ;P                  \        V4      V,
          ,          un        \        V4      pMDV P
                  P                  V4      WW#,           % V ;P                  V,          un        W#,          pV P                  ^ 8X  g   EKb  V P
                  P                  ^4      pVR9  g   EK‡  \        R4      hV# )é    TNz!Missing chunk terminating newline)ó   
ó   
ó   )	r=   Úlenr>   rU   Úminr<   ÚreadrN   rR   )r"   rX   ra   ÚnÚ
terminators   &&   r   ÚreadintoÚDechunkedInput.readintoy   s%  € ØˆØ—*—*‘* ¬¨C«¥Ø�y‰y˜AŒ~ð !×/Ñ/Ó1�”	à�y‰y˜AŒ~ð "�”
à�y‰y˜1Œ}ô œ˜C› $§)¡)Ó,�ð
 •8œc #›hÔ&Ø!%§¡×!1Ñ!1´#°c³(¸Tµ/Ó!B�C˜�JØ—I’I¤ S£¨D¥Õ0•IÜ˜s›8‘Dà+/¯;©;×+;Ñ+;¸AÓ+>�C˜t�xÐ(Ø—I’I •N•IØ•I�Dà�y‰y˜A�~ð "Ÿ[™[×1Ñ1°!Ó4�
ØÐ%<×<Ü!Ð"EÓFÐFàˆr   )r=   r>   r<   N)
r%   r&   r'   r(   Ú__doc__r?   rF   rU   rd   r)   r   r   r   r6   r6   a   s    † ñõ
õ
õ÷&ñ &r   r6   c            	      óf  a€ ] tR t^¢t$ RtR]R&   ]R R l4       tR R ltR R	 lt	R
 V3R llt
R!R R lltR V3R lltR R ltR R lt]P!                  . ]! ^ 4      O]! ^^ 4      O U u/ uF	  q RV R 2bK  	  up 4      tR]]! R4      &   R"R R lltR R ltR R ltR R ltR tV;t# u up i )#ÚWSGIRequestHandlerz3A request handler that implements WSGI dispatching.ÚBaseWSGIServerÚserverc               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   ÚWSGIRequestHandler.__annotate__¨   s   € ÷ +ñ + ñ +r   c                	ó.   € V P                   P                  # ©N)rj   Ú_server_versionrE   s   &r   Úserver_versionÚ!WSGIRequestHandler.server_version§   s   € à�{‰{×*Ñ*Ð*r   c               ó   € V ^8„  d   QhRR/# )r   r   r2   r   )r   s   "r   r   rm   «   s   € ÷ Oñ O˜oñ Or   c                	óø  € \        V P                  4      pV P                  P                  f   RMRpV P                  '       g	   R(V n        M3\        V P                  \        4      '       d   V P                  ^ 3V n        VP                  '       g/   VP                  '       d   RVP                   VP                   2pMVP                  p\        V4      p/ RR)bRVbRV P                  bR\        P                  bRV P                  P                  bR	V P                  P                  bR
RbRV P                  bRV P                   bRV P"                  bRRbR\%        V4      bR\%        VP&                  4      bR\%        V P                  4      bR\%        V P                  4      bRV P)                  4       bRV P+                  4       bRV P                  P,                  ^ ,          R\        V P                  P,                  ^,          4      RV P.                  /CpV P0                  P3                  4        Fc  w  rVRV9   d   K  VP5                  4       P7                  RR4      pVP7                  RR4      pVR*9  d   RV 2pWT9   d   WE,           RV 2pWdV&   Ke  	  R\9        VP;                  R 4      4      9   d   R!VR"&   \=        VR,          4      VR&   VP                  '       d"   VP                  '       d   VP                  VR#&    V P                  P?                  R!R$7      pVe   \@        PB                  ! V4      VR%&   V#   \D         d!    T P                  PG                  R&R'4        T# \H         d     T# i ; i)+NÚhttpÚhttpsÚ/zwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceFzwerkzeug.socketÚSERVER_SOFTWAREÚREQUEST_METHODÚSCRIPT_NAMEÚ Ú	PATH_INFOÚQUERY_STRINGÚREQUEST_URIÚRAW_URIÚREMOTE_ADDRÚREMOTE_PORTÚSERVER_NAMEÚSERVER_PORTÚSERVER_PROTOCOLÚ_Ú-z
ÚHTTP_Ú,ÚchunkedÚHTTP_TRANSFER_ENCODINGTzwsgi.input_terminatedÚ	HTTP_HOST)Úbinary_formÚSSL_CLIENT_CERTÚerrorz&Cannot fetch SSL peer certificate info)ú<local>r[   )é   r[   )ÚCONTENT_TYPEÚCONTENT_LENGTH)%r	   Úpathrj   Ússl_contextÚclient_addressÚ
isinstancer   ÚschemeÚnetlocr   r8   ÚsysÚstderrÚmultithreadÚmultiprocessÚ
connectionrq   Úcommandr   ÚqueryÚaddress_stringÚport_integerÚserver_addressÚrequest_versionÚheadersÚitemsÚupperÚreplacer   Úgetr6   ÚgetpeercertÚsslÚDER_cert_to_PEM_certrQ   ÚlogÚAttributeError)r"   Úrequest_urlÚ
url_schemeÚ	path_infoÚenvironÚkeyÚvalueÚ	peer_certs   &       r   Úmake_environÚWSGIRequestHandler.make_environ«   s|  € Ü˜tŸy™yÓ)ˆØ#Ÿ{™{×6Ñ6Ò>‘VÀGˆ
à×"×"Ð"Ø"0ˆDÕÜ˜×+Ñ+¬S×1Ò1Ø#'×#6Ñ#6¸Ð":ˆDÔð
 ×!×!Ð! k×&8×&8Ð&8Ø˜K×.Ñ.Ð/°×0@Ñ0@Ð/AÐB‰Ià#×(Ñ(ˆIä˜IÓ&ˆ	ð$
Ø˜Fð$
à˜zð$
ð ˜$Ÿ*™*ð$
ð œ3Ÿ:™:ð	$
ð
  §¡× 7Ñ 7ð$
ð   §¡×!9Ñ!9ð$
ð ˜Uð$
ð ˜tŸ™ð$
ð ˜t×2Ñ2ð$
ð ˜dŸl™lð$
ð ˜2ð$
ð Ô-¨iÓ8ð$
ð Ô0°×1BÑ1BÓCð$
ð Ô/°·	±	Ó:ð$
ð" Ô+¨D¯I©IÓ6ð#$
ð$ ˜4×.Ñ.Ó0ð%$
ð& ˜4×,Ñ,Ó.ð'$
ð( ˜4Ÿ;™;×5Ñ5°aÕ8Øœ3˜tŸ{™{×9Ñ9¸!Õ<Ó=Ø˜t×3Ñ3ñ-$
ˆð2 Ÿ,™,×,Ñ,Ö.‰JˆCØ�cŒzÙà—)‘)“+×%Ñ% c¨3Ó/ˆCØ—M‘M &¨"Ó-ˆEØÐ<Ô<Ø˜c˜U�m�Ø”>Ø&�|˜n¨A¨e¨WÐ5�EØ �C‹Lñ /ð Ô(¨¯©Ð5MÓ)NÓOÔOØ/3ˆGÐ+Ñ,Ü$2°7¸<Õ3HÓ$IˆG�LÑ!ð ××Ð +×"4×"4Ð"4Ø#.×#5Ñ#5ˆG�KÑ ð	ð Ÿ™×3Ñ3ÀÐ3ÓEˆIØÒ$ä-0×-EÒ-EÀiÓ-P�Ð)Ñ*ð ˆøô ô 	Oà�K‰K�O‰O˜GÐ%MÕNð
 ˆô	 ô 	ààˆð		ús   Ì9M Í'M9Í+M9Í4M9Í8M9c               ó   € V ^8„  d   QhRR/# ©r   r   r9   r   )r   s   "r   r   rm   ü   s   € ÷ QBñ QB˜$ñ QBr   c                	ó@  a aaaaa	a
aa€ S P                   P                  R R4      P                  4       P                  R4      R8X  d   S P                  P                  R4       S P                  4       ;S n        oRoRoRo
RoRoR VVVVV V
V3R lloRVVVV3R	 llo	R
 VVVV V	V3R llp V! S P                  P                  4       R#   \         d   pS P                  TS4        Rp?R# Rp?i\         d¢   pS P                  P                  '       d   h S
e   S'       d   RS n         S
f   RoRoT! \        4       4       M  \         d     Mi ; i^RIHp T! T4      P%                  4       pS P                  P'                  RRT 24        Rp?R# Rp?ii ; i)ÚExpectr{   z 	z100-continues   HTTP/1.1 100 Continue

NFc               ó    € V ^8„  d   QhRRRR/# )r   ÚdataÚbytesr   r9   r   )r   s   "r   r   Ú1WSGIRequestHandler.run_wsgi.<locals>.__annotate__  s   € ÷ 7	ñ 7	˜ð 7	 $ñ 7	r   c                ó  <€ Sf   Q R4       hS
f   Q R4       hSfï   SoS
o	 SP                  R ^4      w  r\        V4      pSP                  W24       \	        4       pS	 F5  w  rVSP                  WV4       VP                  VP                  4       4       K7  	  RV9   gL   SR,          R8X  g>   ^dTu;8:  d   ^È8  g/   M VR9   g&   SP                  R8¼  d   RoSP                  RR	4       SP                  R
R4       SP                  4        \        V \        4      '       g   Q R4       hV '       d¤   S'       d^   SP                  P                  \        \        V 4      4      R,          P!                  4       4       SP                  P                  R4       SP                  P                  V 4       S'       d   SP                  P                  R4       SP                  P#                  4        R #   \         d    SRr! ELÊi ; i)Nzwrite() before start_responser{   zcontent-lengthry   ÚHEADúHTTP/1.1TzTransfer-Encodingr‰   Ú
ConnectionÚclosezapplications must write bytes:r   NNr]   >   é0  éÌ   )ÚsplitrQ   rJ   Úsend_responseÚsetÚsend_headerÚaddÚlowerÚprotocol_versionÚend_headersr–   r½   ÚwfileÚwriteÚhexr_   ÚencodeÚflush)r¼   Úcode_strÚmsgÚcodeÚheader_keysr²   r³   Úchunk_responser±   Úheaders_sentÚheaders_setr"   Ústatus_sentÚ
status_sets   &      €€€€€€€r   rÏ   Ú*WSGIRequestHandler.run_wsgi.<locals>.write  s´  ø€ àÒ)ÐJÐ+JÓJÐ)ØÒ*ÐKÐ,KÓKÐ*ØÒ"Ø(�Ø*�ð4Ø$/×$5Ñ$5°d¸AÓ$>‘M�Hô ˜8“}�Ø×"Ñ" 4Ô-Ü!›e�Û".‘J�CØ×$Ñ$ SÔ0Ø—O‘O C§I¡I£KÖ0ñ #/ð )¨KÔ7Ø"Ð#3Õ4¸Ô>Ø 4Ö-¨#Ö-Ø :Ô-à×-Ñ-°Ô;à%)�NØ×$Ñ$Ð%8¸)ÔDð × Ñ  ¨wÔ7Ø× Ñ Ô"ä˜d¤E×*Ò*ÐKÐ,KÓKÐ*çß!Ø—J‘J×$Ñ$¤S¬¨T«£^°BÕ%7×%>Ñ%>Ó%@ÔAØ—J‘J×$Ñ$ WÔ-à—
‘
× Ñ  Ô&ç!Ø—J‘J×$Ñ$ WÔ-à�J‰J×ÑÖøô] "ô 4Ø$/°›cð4ús   ¡G. Ç.H Ç?H c                ó¬   <€ V'       d-    S'       d    V^,          P                  V^,          4      h RpMS'       d   \        R4      hV oVoS#   Rpi ; i)r�   NzHeaders already set)Úwith_tracebackÚAssertionError)Ústatusr¤   Úexc_inforØ   rÙ   rÛ   rÏ   s   &&&€€€€r   Ústart_responseÚ3WSGIRequestHandler.run_wsgi.<locals>.start_response@  sZ   ø€ çð$ß#Ø& q�k×8Ñ8¸À!½ÓEÐEð $ð  $‘HßÜ$Ð%:Ó;Ð;ØˆJØ!ˆKØˆLøð  $‘Hús   ‹A “A ÁAc               ó    € V ^8„  d   QhRRRR/# )r   Úappr1   r   r9   r   )r   s   "r   r   r¾   N  s   € ÷ %	-ñ %	-˜ð %	-¨Tñ %	-r   c                ó$  <€ V ! SS
4      p V F  pS! V4       K  	  S'       g	   S! R 4       S'       d   S	P                   P                  R4       \        P                  ! 4       pVP	                  S	P
                  \        P                  4       ^ p^ pVP                  RR7      '       dP   S	P                  P                  R4      pV\        V4      ,          pV^,          pV'       d   VR8¼  g
   VR8”  g   Kf   VP                  4        \        VR4      '       d   VP                  4        R# R#   \        P                  ! 4       pTP	                  S	P
                  \        P                  4       ^ p^ pTP                  RR7      '       dP   S	P                  P                  R4      pT\        T4      ,          pT^,          pT'       d   TR8¼  g
   TR8”  g   Kf   TP                  4        \        TR4      '       d   TP                  4        i i ; i)	r   s   0

g{®Gáz„?)Útimeouti€–˜ l    d(	 iè  rÃ   N)rÎ   rÏ   Ú	selectorsÚDefaultSelectorÚregisterr�   Ú
EVENT_READÚselectr8   ra   r_   rÃ   Úhasattr)rå   Úapplication_iterr¼   ÚselectorÚ
total_sizeÚtotal_readsr×   r±   rØ   r"   râ   rÏ   s   &     €€€€€€r   ÚexecuteÚ,WSGIRequestHandler.run_wsgi.<locals>.executeN  s©  ø€ Ù" 7¨NÓ;Ðð#-Û,�DÙ˜$–Kñ -ç#Ù˜#”Jß!Ø—J‘J×$Ñ$ \Ô2ô %×4Ò4Ó6�Ø×!Ñ! $§/¡/´9×3GÑ3GÔHØ�
Ø�ð —o‘o¨d�o×3Ò3àŸ:™:Ÿ?™?¨:Ó6�DØ¤# d£)Õ+�JØ 1Õ$�K÷   :°Ô#?À;ÐQUÖCUØà—‘Ô äÐ+¨W×5Ò5Ø$×*Ñ*Ö,ñ 6øô) %×4Ò4Ó6�Ø×!Ñ! $§/¡/´9×3GÑ3GÔHØ�
Ø�ð —o‘o¨d�o×3Ò3àŸ:™:Ÿ?™?¨:Ó6�DØ¤# d£)Õ+�JØ 1Õ$�K÷   :°Ô#?À;ÐQUÖCUØà—‘Ô äÐ+¨W×5Ò5Ø$×*Ñ*Õ,ð 6ús#   ŒD0 ¥D0 µD0 Ä0AHÆA	HÇ5HT)ÚDebugTracebackrŽ   zError on request:
ro   )r¤   r¨   rË   rP   rÎ   rÏ   rµ   r±   rj   rå   r   Úconnection_droppedÚ	ExceptionÚpassthrough_errorsÚclose_connectionr   Údebug.tbtoolsrô   Úrender_traceback_textr¬   )r"   rò   rT   rô   rÔ   r×   r±   rØ   rÙ   râ   rÚ   rÛ   rÏ   s   f    @@@@@@@@r   Úrun_wsgiÚWSGIRequestHandler.run_wsgiü   sc  ÿø€ Ø�<‰<×Ñ˜H bÓ)×/Ñ/Ó1×7Ñ7¸Ó>À.ÔPØ�J‰J×ÑÐ=Ô>à!%×!2Ñ!2Ó!4Ð4ˆŒ�wØ!%ˆ
Ø48ˆØ"&ˆØ59ˆØ$ˆ÷7	ö 7	÷r	ò 	÷%	-õ %	-ðN	BÙ�D—K‘K—O‘OÖ$øÜ(ô 	0Ø×#Ñ# A w×/Ò/ûÜô 	BØ�{‰{×-×-Ð-ØàÒ&¯>Ø(,�Ô%ðð Ò&Ø!%�JØ"&�KÙÔ+Ó-Õ.øÜô Ùðúõ 6á  Ó#×9Ñ9Ó;ˆCØ�K‰K�O‰O˜GÐ':¸3¸%Ð%@×AÒAûð)	BúsT   Â-C ÃFÃC.Ã.FÃ;FÃ<(FÄ%FÄ-EÅFÅEÅFÅEÅ>FÆFc               ó   € V ^8„  d   QhRR/# r¸   r   )r   s   "r   r   rm   �  s   € ÷ 
ñ 
˜ñ 
r   c                ó:  <€  \         SV `  4        R#   \        \        P                  3 d   pT P                  T4        Rp?R# Rp?i\         dH   pT P                  P                  e*   \        T4      '       d   T P                  RT4        Rp?R# h Rp?ii ; i)z/Handles a request ignoring dropped connections.NzSSL error occurred: %s)ÚsuperÚhandleÚConnectionErrorÚsocketrç   rõ   rö   rj   r”   Úis_ssl_errorÚ	log_error)r"   rT   Ú	__class__s   & €r   r   ÚWSGIRequestHandler.handle�  sr   ø€ ð	Ü‰G‰NÖøÜ¤§¡Ð0ô 	'Ø×#Ñ# A×&Ò&ûÜô 	Ø�{‰{×&Ñ&Ò2´|ÀA·²Ø—‘Ð7¸×;Ò;àûð		ús,   ƒ “B®AÁBÁBÁ;BÂBÂBc               ó$   € V ^8„  d   QhRRRRRR/# )r   rŽ   ÚBaseExceptionr±   zWSGIEnvironment | Noner   r9   r   )r   s   "r   r   rm   ›  s$   € ÷ ñ Ø"ðØ-Cðà	ñr   c                ó   € R# )zPCalled if the connection was closed by the client.  By default
nothing happens.
Nr   )r"   rŽ   r±   s   &&&r   rõ   Ú%WSGIRequestHandler.connection_dropped›  s   ‚ r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   rm   ¢  s   € ÷ &ñ & ð &¨ñ &r   c                	ór   <€ VP                  R 4      '       d   V P                  # \        \        4       V4      # )Údo_)Ú
startswithrû   Úgetattrrÿ   )r"   r   r  s   &&€r   r#   ÚWSGIRequestHandler.__getattr__¢  s-   ø€ à�?‰?˜5×!Ò!Ø—=‘=Ð ô ”u“w Ó%Ð%r   c               ó   € V ^8„  d   QhRR/# rl   r   )r   s   "r   r   rm   ª  s   € ÷ &ñ & ñ &r   c                	óœ   € \        V R R4      '       d   V P                  R,          # V P                  '       g   R# V P                  ^ ,          # )r±   Nr€   r�   )r  r±   r•   rE   s   &r   r    Ú!WSGIRequestHandler.address_stringª  s@   € Ü�4˜ D×)Ò)Ø—<‘< Õ.Ð.à×"×"Ð"Ùà×"Ñ" 1Õ%Ð%r   c               ó   € V ^8„  d   QhRR/# rI   r   )r   s   "r   r   rm   ³  s   € ÷ &ñ &˜cñ &r   c                	ó(   € V P                   ^,          # )r�   )r•   rE   s   &r   r¡   ÚWSGIRequestHandler.port_integer³  s   € Ø×"Ñ" 1Õ%Ð%r   z\xÚ02xz\\Ú\c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÕ   z	int | strÚsizer   r9   r   )r   s   "r   r   rm   ¼  s!   € ÷ 8ñ 8 	ð 8°yð 8È4ñ 8r   c                	óp  €  \        V P                  4      pV P                   R V R V P                   2pVP                  V P                  4      p\        V4      pVP                  R4      '       d   \        VR4      pM†VR8X  d   M~VR8X  d   \        VR4      pMjVP                  R4      '       d   \        VR4      pMFVR8X  d   \        VR	4      pM2VP                  R
4      '       d   \        VRR4      pM\        VRR4      pV P                  RRWAV4       R#   \         d    T P
                  p Lÿi ; i)Ú Ú1ÚboldÚ200Ú304ÚcyanÚ3ÚgreenÚ404ÚyellowÚ4ÚredÚmagentaÚinfoz
"%s" %s %sN)r   r“   rž   r£   r­   ÚrequestlineÚ	translateÚ_control_char_tabler   r  Ú_ansi_styler¬   )r"   rÕ   r  r“   rÔ   s   &&&  r   Úlog_requestÚWSGIRequestHandler.log_request¼  s  € ð	#Ü˜dŸi™iÓ(ˆDØ—\‘\�N ! D 6¨¨4×+?Ñ+?Ð*@ÐAˆCð �m‰m˜D×4Ñ4Ó5ˆÜ�4‹yˆà�?‰?˜3×ÒÜ˜c 6Ó*‰CØ�UŒ]ØØ�UŒ]Ü˜c 6Ó*‰CØ�_‰_˜S×!Ò!Ü˜c 7Ó+‰CØ�UŒ]Ü˜c 8Ó,‰CØ�_‰_˜S×!Ò!Ü˜c 6¨5Ó1‰Cä˜c 6¨9Ó5ˆCà�‰�˜ s°$Ö7øô/ ô 	#à×"Ñ"ŠCð	#ús   ‚3D ÄD5Ä4D5c               ó$   € V ^8„  d   QhRRRRRR/# ©r   r   r   Úargsr   r   r9   r   )r   s   "r   r   rm   Ù  s!   € ÷ )ñ ) ð )¨Eð )°dñ )r   c                	ó0   € V P                   ! R V.VO5!   R# )rŽ   N©r¬   ©r"   r   r2  s   &&*r   r  ÚWSGIRequestHandler.log_errorÙ  s   € Ø�Š�˜&Ð( 4Ö(r   c               ó$   € V ^8„  d   QhRRRRRR/# r1  r   )r   s   "r   r   rm   Ü  s!   € ÷ (ñ ( #ð (¨eð (¸ñ (r   c                	ó0   € V P                   ! R V.VO5!   R# )r)  Nr4  r5  s   &&*r   Úlog_messageÚWSGIRequestHandler.log_messageÜ  s   € Ø�Š�˜Ð' $Ö'r   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   Útyper   Úmessager2  r   r   r9   r   )r   s   "r   r   rm   ß  s(   € ÷ 
ñ 
˜ð 
 cð 
°%ð 
¸Dñ 
r   c           	     	ó�   € V P                  4       P                  R R4      p\        VV RV P                  4        RV R2.VO5!   R# )Ú%z%%z - - [z] Ú
N)r    r§   r   Úlog_date_time_string)r"   r=  r>  r2  r    s   &&&* r   r¬   ÚWSGIRequestHandler.logß  sS   € à×,Ñ,Ó.×6Ñ6°s¸DÓAˆÜØØÐ˜f T×%>Ñ%>Ó%@Ð$AÀÀGÀ9ÈBÐOð	
ð ö	
r   )r•   rø   r±   ro   )r†   r†   )r%   r&   r'   r(   rf   Ú__annotations__Úpropertyrq   rµ   rû   r   rõ   r#   r    r¡   r   Ú	maketransÚranger,  Úordr.  r  r9  r¬   r)   Ú__classcell__)Úcr  s   0@r   rh   rh   ¢   sÆ   ø‡ Ù=àÓàô+ó ð+õOõbQB÷f
ð 
÷÷&ð &õ&õ&ð Ÿ-™-Ø#E¡U¨4£[Ð#E±5¸¸tÓ3DÑ#EÓFÑ#E˜aˆr�!�C�ˆMÒ	Ñ#EÑFóÐð &+Ð™˜D›	Ñ"÷8õ:)õ(÷
ó 
ùòO 	Gs   Á-B.rh   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r³   r   Ústylesr   r   )r   s   "r   r   r   é  s!   € ÷ ñ �sð  Sð ¨Sñ r   c                ór   € \         '       g   V # R ^R^R^ R^!R^#R^$/pV F  pRW#,           RV  2p K  	  V  R2# )	r  r'  r#  r%  r(  r!  z[Úmz[0m)Ú_log_add_style)r³   rL  ÚcodesÚstyles   &*  r   r-  r-  é  sb   € ß‹>Øˆð 	�ØˆrØ�Ø�"Ø�2Ø�ð€Eó ˆØ˜��~ Q u gÐ.Šñ ð ˆW�GÐÐr   c               ó    € V ^8„  d   QhRRRR/# )r   Úcnú
str | Noner   z2tuple[Certificate, RSAPrivateKeyWithSerialization]r   )r   s   "r   r   r   ü  s   € ÷ .ñ .Øð.à7ñ.r   c           	     ó(  €  ^ RI Hp ^ RIHp ^ RIHp ^ RIHp ^ RIH	p T! 4       pTP                  RR	TR
7      pT f   Rp TP                  TP                  TP                  R4      TP                  TP                   T 4      .4      pT! 4       pTP#                  4       P%                  T4      P'                  T4      P)                  TP)                  4       4      P+                  TP-                  4       4      P/                  \0        P2                  ! \4        P6                  4      4      P9                  \0        P2                  ! \4        P6                  4      \;        RR7      ,           4      P=                  TP?                  TP@                  .4      RR7      P=                  TPC                  TPE                  T 4      TPE                  RT  24      .4      RR7      PG                  YsPI                  4       T4      p	Y—3#   \         d    \        R4      Rhi ; i)r[   )Úx509)Údefault_backend)Úhashes)Úrsa)ÚNameOIDz<Using ad-hoc certificates requires the cryptography library.Ni  i   )Úpublic_exponentÚkey_sizeÚbackendÚ*zDummy Certificateim  )ÚdaysF)Úcriticalz*.)%ÚcryptographyrV  Úcryptography.hazmat.backendsrW  Úcryptography.hazmat.primitivesrX  Ú)cryptography.hazmat.primitives.asymmetricrY  Úcryptography.x509.oidrZ  ÚImportErrorÚ	TypeErrorÚgenerate_private_keyÚNameÚNameAttributeÚORGANIZATION_NAMEÚCOMMON_NAMEÚCertificateBuilderÚsubject_nameÚissuer_nameÚ
public_keyÚserial_numberÚrandom_serial_numberÚnot_valid_beforeÚdtÚnowr   ÚutcÚnot_valid_afterr   Úadd_extensionÚExtendedKeyUsageÚOID_SERVER_AUTHÚSubjectAlternativeNameÚDNSNameÚsignÚSHA256)
rS  rV  rW  rX  rY  rZ  r]  ÚpkeyÚsubjectÚcerts
   &         r   Úgenerate_adhoc_ssl_pairr‚  ü  s¶  € ð	Ý%Ý@Ý9ÝAÝ1ñ Ó€GØ×#Ñ#Ø¨°gð $ó €Dð
 
‚zØˆà�i‰ià×Ñ˜w×8Ñ8Ð:MÓNØ×Ñ˜w×2Ñ2°BÓ7ð	
ó€Gñ Ó€Gà×ÑÓ!ß	‰�gÓ	ß	‰�WÓ	ß	‰�D—O‘OÓ%Ó	&ß	‰�t×0Ñ0Ó2Ó	3ß	Ñ	œ"Ÿ&š&¤§¡Ó.Ó	/ß	‰œŸš¤§¡Ó-´	¸sÔ0CÕCÓ	Dß	‰�t×,Ñ,¨d×.BÑ.BÐ-CÓDÈuˆÓ	Uß	‰Ø×'Ñ'¨¯©°bÓ)9¸4¿<¹<È"ÈRÈDÈ	Ó;RÐ(SÓTØð 
ó 

÷ 
‰ˆd—M‘M“O WÓ	-ð 	ð ˆ:ÐøôK ô ÜØJó
àð	ðús   ‚G9 Ç9Hc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Ú	base_pathr   ÚhostrT  rS  r   ztuple[str, str]r   )r   s   "r   r   r   -  s,   € ÷ ) ñ ) Øð) Ø$ð) Ø1;ð) àñ) r   c           
     ó.  € Ve   Tp\        VR7      w  r4^ RIHp V  R2pV  R2p\        VR4      ;_uu_ 4       pVP	                  VP                  VP                  P                  4      4       RRR4       \        VR4      ;_uu_ 4       pVP	                  VP                  VP                  P                  VP                  P                  VP                  4       R7      4       RRR4       Wg3#   + '       g   i     L‰; i  + '       g   i     Yg3# ; i)aŽ  Creates an SSL key for development.  This should be used instead of
the ``'adhoc'`` key which generates a new cert on each server start.
It accepts a path for where it should store the key and cert and
either a host or CN.  If a host is given it will use the CN
``*.host/CN=host``.

For more information see :func:`run_simple`.

.. versionadded:: 0.9

:param base_path: the path to the certificate and key.  The extension
                  ``.crt`` is added for the certificate, ``.key`` is
                  added for the key.
:param host: the name of the host.  This can be used as an alternative
             for the `cn`.
:param cn: the `CN` to use.
N)rS  ©Úserializationz.crtz.keyÚwb©Úencodingr   Úencryption_algorithm)r‚  rc  rˆ  ÚopenrÏ   Úpublic_bytesÚEncodingÚPEMÚprivate_bytesÚPrivateFormatÚTraditionalOpenSSLÚNoEncryption)	r„  r…  rS  r�  r  rˆ  Ú	cert_fileÚ	pkey_fileÚfs	   &&&      r   Úmake_ssl_devcertr˜  -  sð   € ð* ÒØˆÜ(¨BÔ/�J€Då<à�+˜TÐ"€IØ�+˜TÐ"€Iä	ˆi˜×	Ô	 !Ø	�‰�×!Ñ! -×"8Ñ"8×"<Ñ"<Ó=Ô>÷ 
ä	ˆi˜×	Ô	 !Ø	�‰Ø×ÑØ&×/Ñ/×3Ñ3Ø$×2Ñ2×EÑEØ%2×%?Ñ%?Ó%Að ó ô	
÷ 
ð ÐÐ÷ 
×	úç	Ö	ð ÐÐús   ¹5C/Â
ADÃ/C?	ÄD	c               ó   € V ^8„  d   QhRR/# )r   r   r/   r   )r   s   "r   r   r   Y  s   € ÷ ñ  Nñ r   c            	     ó   € ^ RI p ^ RIp\        4       w  r#^ RIHp VP                  4       w  rVVP                  4       w  rxV P                  \        P                  V4       V P                  \        P                  V4       \        P                  ! WRP                  VP                  P                  4      4       \        P                  ! VVP                  VP                  P                  VP                  P                  VP!                  4       R7      4       \        P"                  ! V4       \        P"                  ! V4       \%        Wh4      p	V	# )z:Generates an adhoc SSL context for the development server.Nr‡  rŠ  )ÚatexitÚtempfiler‚  rc  rˆ  Úmkstemprê   ÚosÚremoverÏ   rŽ  r�  r�  r‘  r’  r“  r”  rÃ   Úload_ssl_context)
r›  rœ  r�  r  rˆ  Úcert_handler•  Úpkey_handler–  Úctxs
             r   Úgenerate_adhoc_ssl_contextr¤  Y  só   € ãÛä(Ó*�J€Då<à%×-Ñ-Ó/Ñ€KØ%×-Ñ-Ó/Ñ€KØ
‡O�O”B—I‘I˜yÔ)Ø
‡O�O”B—I‘I˜yÔ)ä‡H‚Hˆ[×+Ñ+¨M×,BÑ,B×,FÑ,FÓGÔHÜ‡H‚HØØ×ÑØ"×+Ñ+×/Ñ/Ø ×.Ñ.×AÑAØ!.×!;Ñ!;Ó!=ð 	ó 	
ôô ‡H‚Hˆ[ÔÜ‡H‚Hˆ[ÔÜ
˜9Ó
0€CØ€Jr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r•  r   r–  rT  Úprotocolú
int | Noner   r/   r   )r   s   "r   r   r   w  s,   € ÷ ñ ØðØ)ðØ<Fðàñr   c                ó|   € Vf   \         P                  p\         P                  ! V4      pVP                  W4       V# )aÃ  Loads SSL context from cert/private key files and optional protocol.
Many parameters are directly taken from the API of
:py:class:`ssl.SSLContext`.

:param cert_file: Path of the certificate to use.
:param pkey_file: Path of the private key to use. If not given, the key
                  will be obtained from the certificate file.
:param protocol: A ``PROTOCOL`` constant from the :mod:`ssl` module.
    Defaults to :data:`ssl.PROTOCOL_TLS_SERVER`.
)rª   ÚPROTOCOL_TLS_SERVERÚ
SSLContextÚload_cert_chain)r•  r–  r¦  r£  s   &&& r   r   r   w  s6   € ð ÒÜ×*Ñ*ˆä
�.Š.˜Ó
"€CØ×Ñ˜	Ô-Ø€Jr   c               ó    € V ^8„  d   QhRRRR/# )r   rŽ   zException | Noner   rC   r   )r   s   "r   r   r   Œ  s   € ÷ +ñ +Ð(ð +°Dñ +r   c                ó¨   € V f6   \         P                  ! \        \        P                  ! 4       ^,          4      p \        V \        P                  4      # )z?Checks if the given error (or the current one) is an SSL error.)ÚtÚcaströ   r™   rá   r–   rª   ÚSSLError)rŽ   s   &r   r  r  Œ  s3   € à‚}Ü—’”y¤#§,¢,£.°Õ"3Ó4ˆÜ�eœSŸ\™\Ó*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r…  r   ÚportrJ   r   úsocket.AddressFamilyr   )r   s   "r   r   r   “  s"   € ÷ ñ  ð ¨3ð Ð3Gñ r   c                óÊ   € V P                  R4      '       d   \        P                  # RV 9   d'   \        \        R4      '       d   \        P                  # \        P
                  # )zQReturn ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on
the host and port.zunix://Ú:ÚAF_INET6)r  r  ÚAF_UNIXrí   r¶  ÚAF_INET)r…  r²  s   &&r   Úselect_address_familyr¹  “  sD   € ð ‡��y×!Ò!Ü�~‰~ÐØ	�Œœ¤¨×4Ò4Ü�‰ÐÜ�>‰>Ðr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r…  r   r²  rJ   Úfamilyr³  r   útuple[str, int] | strr   )r   s   "r   r   r   �  s,   € ÷ ñ Ø
ðØðØ"6ðàñr   c                óJ  € V\         8X  d6   \        P                  P                  V P	                  R4      ^,          4      #  \
        P                  ! WV\
        P                  \
        P                  4      pT^ ,          ^,          #   \
        P                   d    Y3u # i ; i)zRReturn a fully qualified socket address that can be passed to
:func:`socket.bind`.ú://)
Úaf_unixrž  r“   ÚabspathÚ	partitionr  ÚgetaddrinfoÚSOCK_STREAMÚIPPROTO_TCPÚgaierror)r…  r²  r»  Úress   &&& r   Úget_sockaddrrÇ  �  s„   € ð
 ”Ôä�w‰w�‰˜tŸ~™~¨eÓ4°QÕ7Ó8Ð8ðÜ× Ò Ø˜¤× 2Ñ 2´F×4FÑ4Fó
ˆð
 ˆq�6�!�9Ðøô �?‰?ô ØˆzÒðús   Á5B ÂB"Â!B"c               ó    € V ^8„  d   QhRRRR/# )r   r»  r³  r   r   r   )r   s   "r   r   r   ®  s   € ÷ "ñ "Ð1ð "°cñ "r   c                óŠ  € V \         P                  8X  d   RMRp\         P                   ! V \         P                  4      ;_uu_ 4       p VP                  VR34       TP                  4       ^ ,          uuRRR4       #   \         d'    T \         P                  8X  d   RMRu uuRRR4       # i ; i  + '       g   i     R# ; i)z|Get the IP address of an external interface. Used when binding to
0.0.0.0 or ::1 to show a more useful URL.

:meta private:
zfd31:f903:5ab5:1::1z10.253.155.219i2ã  z::1ú	127.0.0.1N)r  r¶  Ú
SOCK_DGRAMÚconnectrR   Úgetsockname)r»  r…  Úss   &  r   Úget_interface_iprÏ  ®  s™   € ð %+¬f¯o©oÔ$=Ñ ÐCS€Dä	�Š�vœv×0Ñ0×	1Ô	1°Qð	GØ�I‰I�t˜U�mÔ$ð �}‰}‹˜qÕ!÷ 
2Ò	1øô ô 	GØ"¤f§o¡oÔ5‘5¸;ÑF÷	 
2Ò	1ð	Gú÷ 
2×	1Ð	1ús0   ÁB1Á	A=ÁB1Á=$B.Â!B1Â-B.Â.B1Â1C	c                  ó†   a € ] tR tRtRtRtRt]tRt	RR V 3R lllt
R R ltRR	 V 3R
 llltR V 3R lltR R ltRtV ;t# )ri   iÀ  zmA WSGI server that that handles one request at a time.

Use :func:`make_server` to create a server instance.
FTc               ó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   r²  rJ   rå   r1   Úhandlerútype[WSGIRequestHandler] | Noner÷   rC   r”   ú_TSSLContextArg | NoneÚfdr§  r   r9   r   )r   s   "r   r   ÚBaseWSGIServer.__annotate__Ë  sn   € ÷ eTñ eTàðeTð ðeTð ð	eTð
 1ðeTð !ðeTð ,ðeTð ðeTð 
ñeTr   c                	óD  <€ Vf   \         pR\        V4      9  d,   V P                  '       g   V P                  '       d   RVn        Wn        W n        W0n        WPn        \        W4      ;V n
        p\        V\        V4      V4      p	V\        8X  d[   VfW   \        P                  ! \         V	4      p	\"        P$                  P'                  V	4      '       d   \"        P(                  ! V	4       \*        SV `Y  V	VRR7       Vf#    V P/                  4        V P1                  4        MYV P5                  4        \H        PJ                  ! Wx\H        PL                  4      V n$        V PH                  PO                  4       V n(        V\        8w  d   V PP                  ^,          V n        Ve[   \S        V\T        4      '       d   \W        V!  pMVR8X  d   \Y        4       pVP[                  V PH                  RR7      V n$        W`n.        MR V n.        ^ R I/pRVP`                  Pc                  R4       2V n2        R #   \2         dÌ   p
T P5                  4        \7        T
P8                  \:        P<                  R7       T
P>                  \>        P@                  8X  dW   \7        RT R2\:        P<                  R7       \:        PB                  R8X  d#   TR	8X  d   \7        R
\:        P<                  R7       \:        PD                  ! ^4        R p
?
EL‚R p
?
i\F         d    T P5                  4        h i ; i)NrÌ   rÁ   F)Úbind_and_activate)ÚfilezPort zp is in use by another program. Either identify and stop that program, or start the server with a different port.Údarwiniˆ  zPOn macOS, try searching for and disabling 'AirPlay Receiver' in System Settings.r0   T)Úserver_sidez	Werkzeug/Úwerkzeug)3rh   Úvarsr›   rœ   rÌ   r…  r²  rå   r÷   r¹  Úaddress_familyrÇ  rJ   r¿  r®  r¯  r   rž  r“   ÚexistsÚunlinkrÿ   r?   Úserver_bindÚserver_activaterR   Úserver_closeÚprintÚstrerrorr™   rš   ÚerrnoÚ
EADDRINUSEÚplatformÚexitr  r  ÚfromfdrÃ  rÍ  r¢   r–   Útupler   r¤  Úwrap_socketr”   Úimportlib.metadataÚmetadataÚversionrp   )r"   r…  r²  rå   rÒ  r÷   r”   rÕ  rÞ  r¢   rT   Ú	importlibr  s   &&&&&&&&    €r   r?   ÚBaseWSGIServer.__init__Ë  sz  ø€ ð Š?Ü(ˆGð
 ¤T¨'£]Ô2Ø××Ð × 1× 1Ð 1à'1ˆGÔ$àŒ	ØŒ	ØŒØ"4Ôä/DÀTÓ/PÐPˆÔ˜nÜ% d¬C°«I°~ÓFˆð œWÔ$¨ªÜŸVšV¤C¨Ó8ˆNä�w‰w�~‰~˜n×-Ò-Ü—	’	˜.Ô)ô 	‰ÑØØØ#ð 	ô 	
ð Š:ðØ× Ñ Ô"Ø×$Ñ$Õ&ð: ×ÑÔô !Ÿ-š-¨¼F×<NÑ<NÓOˆDŒKØ"&§+¡+×"9Ñ"9Ó";ˆDÔàœWÔ$à×+Ñ+¨AÕ.ˆDŒIàÒ"Ü˜+¤u×-Ò-Ü.°Ñ<‘Ø Ô'Ü8Ó:�à%×1Ñ1°$·+±+È4Ð1ÓPˆDŒKØ6AÕà#ˆDÔã!à!*¨9×+=Ñ+=×+EÑ+EÀjÓ+QÐ*RÐSˆÖøôg ô ð ×!Ñ!Ô#Ü�a—j‘j¤s§z¡zÕ2à—7‘7œe×.Ñ.Ô.ÜØ ˜vð &!ð !ô !ŸZ™Zõ	ô —|‘| xÔ/°D¸D´LÜðFä!$§¡õô —’˜—’ûÜ ô Ø×!Ñ!Ô#Øðús   Ä H. È.LÈ9C K?Ë?LÌLc               ó(   € V ^8„  d   QhRRRRRRRR/# r<  r   )r   s   "r   r   rÖ  2  s(   € ÷ #ñ #˜ð # cð #°%ð #¸Dñ #r   c                	ó    € \        W.VO5!   R # ro   r
   )r"   r=  r>  r2  s   &&&*r   r¬   ÚBaseWSGIServer.log2  s   € ÜˆTÐ"˜TÖ"r   c               ó    € V ^8„  d   QhRRRR/# )r   Úpoll_intervalÚfloatr   r9   r   )r   s   "r   r   rÖ  5  s   € ÷  ñ  ¨5ð  ¸4ñ  r   c                	ó–   <€  \         SV `  VR 7       V P                  4        R#   \         d     Li ; i  T P                  4        i ; i))rö  N)rÿ   Úserve_foreverÚKeyboardInterruptrã  )r"   rö  r  s   &&€r   rù  ÚBaseWSGIServer.serve_forever5  sI   ø€ ð	 Ü‰GÑ!°Ð!Ô>ð ×ÑÖøô !ô 	Ùð	ûð ×ÑÕús   ƒ% ¥3°6 ²3³6 ¶Ac               ó$   € V ^8„  d   QhRRRRRR/# )r   Úrequestr   r•   r¼  r   r9   r   )r   s   "r   r   rÖ  =  s$   € ÷ =ñ =Øð=Ø.Cð=à	ñ=r   c                	óH   <€ V P                   '       d   h \        SV `	  W4      # ro   )r÷   rÿ   Úhandle_error)r"   rý  r•   r  s   &&&€r   rÿ  ÚBaseWSGIServer.handle_error=  s$   ø€ ð ×"×"Ð"Øä‰wÑ# GÓ<Ð<r   c               ó   € V ^8„  d   QhRR/# r¸   r   )r   s   "r   r   rÖ  E  s   € ÷  *ñ  *˜Tñ  *r   c                óž  € Rp\        VRR4      pV.pV P                  \        8X  d    VP                  RV P                   24       MëV P
                  f   RMRpV P                  pV P                  R9   dŒ   VP                  R	V P                   R
24       V P                  R8X  d   Rp\        \        P                  4      pMRp\        \        P                  4      pVP                  RV RV RV P                   24       RV9   d   RV R2pVP                  RV RV RV P                   24       \        RRP                  V4      4       R# )z<Show information about the address when starting the server.zvWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.r  r'  z * Running on Nru   rv   ú0.0.0.0z * Running on all addresses (Ú)rÊ  z[::1]r¾  rµ  Ú[Ú]r)  rA  >   ú::r  )r-  rÞ  r¿  Úappendr…  r”   rÏ  r  r¸  r¶  r²  r   Újoin)r"   Údev_warningÚmessagesr—   Údisplay_hostnameÚ	localhosts   &     r   Úlog_startupÚBaseWSGIServer.log_startupE  s5  € ðAð 	ô " +¨v°uÓ=ˆØ�=ˆà×Ñ¤'Ô)Ø�O‰O˜n¨T¯Y©Y¨KÐ8Õ9à#×/Ñ/Ò7‘V¸WˆFØ#Ÿy™yÐà�y‰yÐ-Ô-Ø—‘Ð"?ÀÇ	Á	¸{È!Ð LÔMà—9‘9 	Ô)Ø +�IÜ'7¼¿¹Ó'GÑ$à '�IÜ'7¼¿¹Ó'HÐ$à—‘ .°°¸¸I¸;ÀaÈÏ	É	À{Ð SÔTàÐ&Ô&Ø%&Ð'7Ð&8¸Ð#:Ð à�O‰O˜n¨V¨H°CÐ8HÐ7IÈÈ4Ï9É9È+ÐVÔWäˆV�T—Y‘Y˜xÓ(Ö)r   )	rp   rÞ  rå   r…  r÷   r²  r¢   r  r”   )NFNN)g      à?)r%   r&   r'   r(   rf   r›   rœ   ÚLISTEN_QUEUEÚrequest_queue_sizeÚallow_reuse_addressr?   r¬   rù  rÿ  r  r)   rI  ©r  s   @r   ri   ri   À  sR   ø† ñð
 €KØ€LØ%ÐØÐ÷eTò eTõN#÷ ò  ÷=ð =÷ *ó  *r   ri   c                  ó"   € ] tR tRtRtRtRtRtR# )ÚThreadedWSGIServerih  zzA WSGI server that handles concurrent requests in separate
threads.

Use :func:`make_server` to create a server instance.
Tr   N)r%   r&   r'   r(   rf   r›   Údaemon_threadsr)   r   r   r   r  r  h  s   † ñð €KØ„Nr   r  c                  ó:   a € ] tR tRtRtRtRR V 3R llltRtV ;t# )ÚForkingWSGIServeris  zƒA WSGI server that handles concurrent requests in separate forked
processes.

Use :func:`make_server` to create a server instance.
Tc               ó<   € 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²  rJ   rå   r1   Ú	processesrÒ  rÓ  r÷   rC   r”   rÔ  rÕ  r§  r   r9   r   )r   s   "r   r   ÚForkingWSGIServer.__annotate__|  sd   € ÷ &ñ &àð&ð ð&ð ð	&ð
 ð&ð 1ð&ð !ð&ð ,ð&ð ð&ð 
ñ&r   c	           	     	óf   <€ \         '       g   \        R 4      h\        S	V `  WW5WgV4       W@n        R# )z'Your platform does not support forking.N)Úcan_forkrQ   rÿ   r?   Úmax_children)
r"   r…  r²  rå   r  rÒ  r÷   r”   rÕ  r  s
   &&&&&&&&&€r   r?   ÚForkingWSGIServer.__init__|  s1   ø€ ÷ ‹xÜÐFÓGÐGä‰Ñ˜ SÐ3EÐTVÔWØ%Ör   )r  )é(   NFNN)	r%   r&   r'   r(   rf   rœ   r?   r)   rI  r  s   @r   r  r  s  s   ø† ñð €L÷&÷ &ð &r   r  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…  r   r²  rJ   rå   r1   ÚthreadedrC   r  Úrequest_handlerrÓ  r÷   r”   rÔ  rÕ  r§  r   ri   r   )r   s   "r   r   r   Ž  sl   € ÷ *ñ *Ø
ð*à
ð*ð 
ð*ð ð	*ð
 ð*ð 5ð*ð ð*ð (ð*ð 	ð*ð ñ*r   c	                ó¶   € V'       d   V^8”  d   \        R4      hV'       d   \        WW%WgVR7      # V^8”  d   \        V VVVVVVVR7      # \        WW%WgVR7      # )a  Create an appropriate WSGI server instance based on the value of
``threaded`` and ``processes``.

This is called from :func:`run_simple`, but can be used separately
to have access to the server object, such as to run it in a separate
thread.

See :func:`run_simple` for parameter docs.
z4Cannot have a multi-thread and multi-process server.©rÕ  )rQ   r  r  ri   )	r…  r²  rå   r"  r  r#  r÷   r”   rÕ  s	   &&&&&&&&&r   Úmake_serverr&  Ž  s{   € ÷( �I ”MÜÐOÓPÐPçÜ!Ø˜Ð.@ÐRTô
ð 	
ð �1„}Ü ØØØØØØØØô	
ð 		
ô Ø�CÐ*<Èbôð r   c               ó   € V ^8„  d   QhRR/# rB   r   )r   s   "r   r   r   »  s   € ÷ 9ñ 9 $ñ 9r   c                 óF   € \         P                  P                  R4      R8H  # )zeCheck if the server is running as a subprocess within the
Werkzeug reloader.

.. versionadded:: 0.10
ÚWERKZEUG_RUN_MAINÚtrue)rž  r±   r¨   r   r   r   Úis_running_from_reloaderr+  »  s   € ô �:‰:�>‰>Ð-Ó.°&Ñ8Ð8r   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RRRRRRRRRRRR/# )r   Úhostnamer   r²  rJ   Úapplicationr1   Úuse_reloaderrC   Úuse_debuggerÚ
use_evalexÚextra_fileszt.Iterable[str] | NoneÚexclude_patternsÚreloader_intervalÚreloader_typer"  r  r#  rÓ  Ústatic_filesz'dict[str, str | tuple[str, str]] | Noner÷   r”   rÔ  r   r9   r   )r   s   "r   r   r   Ä  sÅ   € ÷ eñ eØðeà
ðeð !ðeð ð	eð
 ðeð ðeð (ðeð -ðeð ðeð ðeð ðeð ðeð 5ðeð :ðeð ðeð  (ð!eð" 
ñ#er   c                ó  € \        V\        4      '       g   \        R4      hV'       d   ^RIHp V! W-4      pV'       d+   ^RIHp V! W%R7      pVP                  P                  V 4       \        4       '       g   RpM \        \        P                  R,          4      p\        V VVV
VVVVVR7	      pVP                  P                  R4       \        VP!                  4       4      \        P                  R&   \        4       '       g'   VP#                  4        \%        R	\'        R
R4      4       V'       d1   ^RIHp  V! VP,                  VVVV	R7       VP/                  4        R# VP-                  4        R#   TP/                  4        i ; i)aã  Start a development server for a WSGI application. Various
optional features can be enabled.

.. warning::

    Do not use the development server when deploying to production.
    It is intended for use only during local development. It is not
    designed to be particularly efficient, stable, or secure.

:param hostname: The host to bind to, for example ``'localhost'``.
    Can be a domain, IPv4 or IPv6 address, or file path starting
    with ``unix://`` for a Unix socket.
:param port: The port to bind to, for example ``8080``. Using ``0``
    tells the OS to pick a random free port.
:param application: The WSGI application to run.
:param use_reloader: Use a reloader process to restart the server
    process when files are changed.
:param use_debugger: Use Werkzeug's debugger, which will show
    formatted tracebacks on unhandled exceptions.
:param use_evalex: Make the debugger interactive. A Python terminal
    can be opened for any frame in the traceback. Some protection is
    provided by requiring a PIN, but this should never be enabled
    on a publicly visible server.
:param extra_files: The reloader will watch these files for changes
    in addition to Python modules. For example, watch a
    configuration file.
:param exclude_patterns: The reloader will ignore changes to any
    files matching these :mod:`fnmatch` patterns. For example,
    ignore cache files.
:param reloader_interval: How often the reloader tries to check for
    changes.
:param reloader_type: The reloader to use. The ``'stat'`` reloader
    is built in, but may require significant CPU to watch files. The
    ``'watchdog'`` reloader is much more efficient but requires
    installing the ``watchdog`` package first.
:param threaded: Handle concurrent requests using threads. Cannot be
    used with ``processes``.
:param processes: Handle concurrent requests using up to this number
    of processes. Cannot be used with ``threaded``.
:param request_handler: Use a different
    :class:`~BaseHTTPServer.BaseHTTPRequestHandler` subclass to
    handle requests.
:param static_files: A dict mapping URL prefixes to directories to
    serve static files from using
    :class:`~werkzeug.middleware.SharedDataMiddleware`.
:param passthrough_errors: Don't catch unhandled exceptions at the
    server level, let the server crash instead. If ``use_debugger``
    is enabled, the debugger will still catch such errors.
:param ssl_context: Configure TLS to serve over HTTPS. Can be an
    :class:`ssl.SSLContext` object, a ``(cert_file, key_file)``
    tuple to create a typical context, or the string ``'adhoc'`` to
    generate a temporary self-signed certificate.

.. versionchanged:: 2.1
    Instructions are shown for dealing with an "address already in
    use" error.

.. versionchanged:: 2.1
    Running on ``0.0.0.0`` or ``::`` shows the loopback IP in
    addition to a real IP.

.. versionchanged:: 2.1
    The command-line interface was removed.

.. versionchanged:: 2.0
    Running on ``0.0.0.0`` or ``::`` shows a real IP address that
    was bound as well as a warning not to run the development server
    in production.

.. versionchanged:: 2.0
    The ``exclude_patterns`` parameter was added.

.. versionchanged:: 0.15
    Bind to a Unix socket by passing a ``hostname`` that starts with
    ``unix://``.

.. versionchanged:: 0.10
    Improved the reloader and added support for changing the backend
    through the ``reloader_type`` parameter.

.. versionchanged:: 0.9
    A command-line interface was added.

.. versionchanged:: 0.8
    ``ssl_context`` can be a tuple of paths to the certificate and
    private key files.

.. versionchanged:: 0.6
    The ``ssl_context`` parameter was added.

.. versionchanged:: 0.5
   The ``static_files`` and ``passthrough_errors`` parameters were
   added.
zport must be an integer)ÚSharedDataMiddleware)ÚDebuggedApplication)ÚevalexNÚWERKZEUG_SERVER_FDr%  Tr)  zPress CTRL+C to quitr%  )Úrun_with_reloader)r2  r3  Úintervalr5  )r–   rJ   rg  Úmiddleware.shared_datar8  Údebugr9  Útrusted_hostsr  r+  rž  r±   r&  r  Úset_inheritabler   Úfilenor  r   r-  Ú	_reloaderr<  rù  rã  )r-  r²  r.  r/  r0  r1  r2  r3  r4  r5  r"  r  r#  r6  r÷   r”   r8  r9  rÕ  Úsrvr<  s   &&&&&&&&&&&&&&&&     r   Ú
run_simplerE  Ä  s@  € ô` �dœC× Ò ÜÐ1Ó2Ð2çÝ@á*¨;ÓEˆçÝ.á)¨+ÔIˆð 	×!Ñ!×(Ñ(¨Ô2ä#×%Ò%Ø‰ä”—‘Ð0Õ1Ó2ˆä
ØØØØØØØØØô
€Cð ‡J�J×Ñ˜tÔ$Ü'*¨3¯:©:«<Ó'8„B‡J�JÐ#Ñ$ä#×%Ò%Ø�‰ÔÜˆV”[Ð!7¸ÓBÔCçÝ0ð		ÙØ×!Ñ!Ø'Ø!1Ø*Ø+õð ×ÑÖà×ÑÖøð ×ÑÕús   Ä;E6 Å6Fro   )NN)Fr�   NFNN)FFTNNr�   ÚautoFr�   NNFN)SÚ__conditional_annotations__rf   Ú
__future__r   ræ  Úiorž  rè   r  Úsocketserverr™   Útypingr®  r   rt  r   r   Úhttp.serverr   r   Úurllib.parser   r	   Ú	_internalr   r   Ú
exceptionsr   ru   r   Úurlsr   rª   r  rç   ÚSSLEOFErrorr   rD  rf  r   rO  r   Ú
__import__rí   r  r.   r·  r¿  r­   r  ÚOptionalÚUnionrë  r   ÚLiteralÚ_TSSLContextArgÚTYPE_CHECKINGÚ_typeshed.wsgir1   r2   Ú-cryptography.hazmat.primitives.asymmetric.rsar3   Úcryptography.x509r4   Ú	RawIOBaser6   rh   r-  r‚  r˜  r¤  r   r  r¹  rÇ  rÏ  ri   ÚThreadingMixInr  r  r&  r+  rE  )rG  s   @r   Ú<module>r]     s"  øðôõ #ã Û 	Û 	Û Û Û Û 
Û Ý #Ý Ý Ý .Ý "Ý  Ý !å Ý +Ý +Ý "Ý ðBÛð 	Ø�‰Ø�‰ð>ÐÐ:ó ð" €à‡7�7ˆd„?ðÙ�:Ôñ �2�vÓ€çØ×,Ñ,�L÷ñ ðØ�n‰n€Gð €à—*‘*Ø‡G�GÐ˜e C¨¯©°C­Ð$8Õ9¸1¿9¹9ÀWÕ;MÐMÕNõ€ð ‡?‡?€?Ý.Ý.õõ .ô>�R—\‘\ô >ôBD
Ð/ô D
õN
÷&.÷b) õX÷<÷*+õõõ""ô$e*�Zô e*ôP˜×4Ñ4°nô ô&˜ nô &÷6*õZ9÷eñ eøðk ô 
B÷ñ ñ ‹+€CØ!0°&·.±.Ð AÓð
Bûð" ô Ø‹ðûð ô ØƒGðús6   Á6"H
 Â,H7 ÃI È
&H4È3H4È7	IÉIÉ	IÉI