Ë )™½û  ôãó8—ddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z ddl m Z mZm Z mZddlmZej$Zej(Zej*Zej,Zddl mZd „ZGd „d «ZGd „d ej4«ZGd„de«Z ddlZej<«ej>Z d„Z$Gd„de ej$e%«Z&Gd„de&«Z'd„Z(y#e!$r-ejDed«r ejFZ n Gd„d«Z YŒZwxYw)éNé)Ú_)ÚgetattrÚopen)ÚencodingÚerrorÚpycompatÚutil)Úurlutilé)Úcommoncól—d|vr|jdd«\}}n|d}}tj|«|fS)zƒReturn path and query that has been split from uri Just like CGI environment, the path is unquoted, the query is not. Ú?r Ú)ÚsplitÚurlreqÚunquote)ÚuriÚpathÚquerys ú:usr/lib/python3.12/site-packages/mercurial/hgweb/server.pyÚ _splitURIr)s<€ð  ˆc�zØ—i‘i  QÓ'‰ ˆ‰eà˜3ˆeˆÜ �>‰>˜$Ó  Ð &Ð&ócó$—eZdZd„Zd„Zd„Zd„Zy)Ú _error_loggercó—||_y©N)Úhandler)Úselfrs rÚ__init__z_error_logger.__init__7s €Øˆ� rcó—yr©©rs rÚflushz_error_logger.flush:s€Ø rcóD—|j|jd««y)Nó )Ú writelinesr)rÚstrs rÚwritez_error_logger.write=s€Ø �‰˜Ÿ ™  %Ó(Õ)rcóp—|D]1}|jjdtj|««Œ3y)Nz HG error: %s)rÚ log_errorrÚ strfromlocal)rÚseqÚmsgs rr'z_error_logger.writelines@s+€ÛˆCØ �L‰L× "Ñ " ?´H×4IÑ4IÈ#Ó4NÕ OñrN)Ú__name__Ú __module__Ú __qualname__r r$r)r'r"rrrr6s„òò ò*óPrrcó„—eZdZdZed„«Zd„Zd„Zd„Zd„Z dd„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zdd„Zd„Zd„Zd„Zy)Ú_httprequesthandlershttpcó—y)z*Prepare .socket of new HTTPServer instanceNr")Ú httpserverÚuis rÚpreparehttpserverz%_httprequesthandler.preparehttpserverIs�rcóX—d|_tjj|g|¢­i|¤Žy)NúHTTP/1.1)Úprotocol_versionÚ httpservermodÚbasehttprequesthandlerr )rÚargsÚkargss rr z_httprequesthandler.__init__Ms(€Ø +ˆÔÜ×,Ñ,×5Ñ5°dÐK¸TÒKÀUÓKrc ó¾—|jtj|jd›d|j «›d||z›�«dz«|j «y)Nrz - - [z] r&)r)r ÚsysbytesÚclient_addressÚlog_date_time_stringr$)rÚfpÚformatr=s rÚ_log_anyz_httprequesthandler._log_anyQsY€Ø �‰Ü × Ñ ð×'Ñ'¨Ó*Ø×-Ñ-Õ/ؘT’Mð ó ðñ ô ð �‰� rcóT—|j|jj|g|¢­Žyr)rEÚserverÚerrorlog©rrDr=s rr+z_httprequesthandler.log_error_s!€Øˆ� ‰ �d—k‘k×*Ñ*¨FÐ:°TÔ:rcóT—|j|jj|g|¢­Žyr)rErGÚ accesslogrIs rÚ log_messagez_httprequesthandler.log_messagebs!€Øˆ� ‰ �d—k‘k×+Ñ+¨VÐ;°dÔ;rc ót—g}tj|d«r<|jj«D�cgc]}|dj d«sŒ|‘Œ}}|j d|j t|«t|«djt|«D�cgc]}d|z‘Œ c}««ycc}wcc}w)NÚheadersrzx-z "%s" %s %s%srz %s:%s) r Ú safehasattrrNÚitemsÚ startswithrLÚ requestliner(ÚjoinÚsorted)rÚcodeÚsizeÚxheadersÚhs rÚ log_requestz_httprequesthandler.log_requestesª€ØˆÜ × Ñ ˜D )Ô ,àŸ<™<×-Ñ-Ô/óÙ/�a°1°Q±4·?±?À4Õ3H’Ð/ð ðð ×ÑØ Ø × Ñ Ü �‹IÜ �‹IØ �G‰G¬6°(Ô+;Ó<Ñ+; a�X “\Ð+;Ñ<Ó =õ  ùòùò=sµB0ÁB0 B5cóD— |j«y#t$rYywxYwr)Údo_hgwebÚBrokenPipeErrorr#s rÚdo_writez_httprequesthandler.do_writess"€ð Ø �M‰M�OøÜò Ù ð ús ‚“ žcóê— |j«y#t$rÖ}t|ttj f«r|j t jk(s\djtjtj«Ž«}td«}|jd|j||«|j!dg«|j#d«|j%«Yd}~yd}~wwxYw)Nré z6Exception happened during processing request '%s':%s%sz500 Internal Server ErrorsInternal Server Error)r]Ú ExceptionÚ isinstanceÚOSErrorÚsocketrÚerrnoÚ ECONNRESETrSÚ tracebackÚformat_exceptionÚsysÚexc_infoÚchrr+rÚ_start_responseÚ_writeÚ_done)rÚeÚtbÚnewlines rÚdo_POSTz_httprequesthandler.do_POSTysº€ð Ø �M‰M�OøÜò ô˜1œw¬¯ © Ð5Ô6Ø—G‘Gœu×/Ñ/Ò/à—W‘WœY×7Ñ7¼¿¹»ÐHÓI�ô˜b›'�Ø—‘ð(à—I‘IØØô ð × Ñ Ð!<¸bÔ AØ �K‰KÐ0Ô 1Ø �J‰J�L‰Lûð- ús‚“ C2œC C-Ã-C2có$—|j«yr©rqr#s rÚdo_PUTz_httprequesthandler.do_PUT”ó €Ø � ‰ �rcó$—|j«yrrsr#s rÚdo_GETz_httprequesthandler.do_GET—rurcó$—|j«yrrsr#s rÚdo_HEADz_httprequesthandler.do_HEADšrurcóT —d|_t|j«\}}||jjk7r™|j |jjdz«sq|j tjtjd««g«|jdk(rdg|_ |jd«|j«yi}d|d<|j|d <|jj|d <t!|jj"«|d <|j|d <tj$|jj«|d <tj$|t'|jj«d«|d<|j(d|d<|j(d|d<|xsd|d<|j*j-«€|j*j/«|d<n|j*j-«|d<|j*j1d«}|r||d<|j*j3«D�cgc]}|j5«dvr|‘Œc}D]h}d|j7dd«j9«z}|j*j1|«}|j7dd«j;«}|sŒd|||<Œj|j<|d<d|d<tj$|j>«|d<|j1d d«j5«d!k(r9tj@|jB|jDjF«|_!|jB|d"<tI|«|d#<tK|jtLjN«|d$<tQjRtLd%«r(tK|jtLjT«|d&<nd|d&<d|d'<tVjXj[|«d|_.g|_ d|_/d|_0|jjc||j «D]} |j| «Œ|js|je«|j«ycc}w)(NFó/i”ÚPOST)Ú ConnectionÚCloses Not FoundzCGI/1.1ÚGATEWAY_INTERFACEÚREQUEST_METHODÚ SERVER_NAMEÚ SERVER_PORTÚ REQUEST_URIÚ SCRIPT_NAMEÚ PATH_INFOrÚ REMOTE_HOSTÚ REMOTE_ADDRrÚ QUERY_STRINGÚ CONTENT_TYPEúcontent-lengthÚCONTENT_LENGTH)z content-typerŠÚHTTP_Ú-rÚ ÚSERVER_PROTOCOL)r rz wsgi.versionzwsgi.url_schemeÚ HTTP_EXPECTz 100-continuez wsgi.inputz wsgi.errorszwsgi.multithreadÚ ForkingMixInzwsgi.multiprocessz wsgi.run_once)3Ú sent_headersrrrGÚprefixrQrkr Ústrurlr Ú statusmessageÚcommandÚ saved_headersrlrmÚ server_namer(Ú server_portÚsysstrÚlenrArNÚget_content_typeÚget_default_typeÚgetÚkeysÚlowerÚreplaceÚupperÚstripÚrequest_versionÚ url_schemeÚcontinuereaderÚrfileÚwfiler)rraÚ socketserverÚThreadingMixInr rOr‘ÚwsgirefÚvalidateÚ check_environÚ saved_statusÚlengthÚ_chunkedÚ applicationÚ send_headers) rrrÚenvr¯rXÚheaderÚhkeyÚhvalÚchunks rr[z_httprequesthandler.do_hgweb�sõ€Ø!ˆÔÜ § ¡ Ó*‰ ˆˆeð �4—;‘;×%Ñ%Ò %¨d¯o©oØ �K‰K× Ñ  Ñ %ô/ ð × Ñ ¤§¡´×1EÑ1EÀcÓ1JÓ!KÈRÔ PØ�|‰|˜vÒ%ð '>Ð%>�Ô"Ø �K‰K˜ Ô %Ø �J‰JŒLØ àˆØ#,ˆÐ Ñ Ø $§ ¡ ˆÐ ÑØ!Ÿ[™[×4Ñ4ˆˆMÑÜ  §¡×!8Ñ!8Ó9ˆˆMÑØ!ŸY™YˆˆMÑÜ%Ÿ_™_¨T¯[©[×-?Ñ-?Ó@ˆˆMÑÜ#Ÿ?™?¨4´°D·K±K×4FÑ4FÓ0GÐ0IÐ+JÓKˆˆKÑØ!×0Ñ0°Ñ3ˆˆMÑØ!×0Ñ0°Ñ3ˆˆMÑØ#šk rˆˆNÑà �<‰<× (Ñ (Ó *Ð 2Ø"&§,¡,×"?Ñ"?Ó"AˆC�Ò à"&§,¡,×"?Ñ"?Ó"AˆC�Ñ Ø—‘×!Ñ!Ð"2Ó3ˆÙ Ø$*ˆCÐ Ñ !ð—\‘\×&Ñ&Ô(ó á(�Ø�w‰w‹yÐ BÑBò Ø(ô ˆFð ˜VŸ^™^¨C°Ó5×;Ñ;Ó=Ñ=ˆDØ—<‘<×#Ñ# FÓ+ˆDØ—<‘<  bÓ)×/Ñ/Ó1ˆDÚØ ��D’ ð ð"&×!5Ñ!5ˆÐ ÑØ$ˆˆNÑÜ!)§¡°·±Ó!AˆÐ ÑØ �7‰7�= "Ó %× +Ñ +Ó -°Ò ?Ü×.Ñ.¨t¯z©z¸4¿:¹:×;KÑ;KÓLˆDŒJà ŸJ™JˆˆLÑÜ*¨4Ó0ˆˆMÑÜ",Ø �K‰Kœ×4Ñ4ó# ˆÐ Ñô × Ñ œL¨.Ô 9Ü'1Ø— ‘ œ\×6Ñ6ó(ˆCÐ#Ò $ð(-ˆCÐ#Ñ $à ˆˆOÑä×Ñ×&Ñ& sÔ+à ˆÔØˆÔ؈Œ ؈Œ Ø—[‘[×,Ñ,¨S°$×2FÑ2FÖGˆEØ �K‰K˜Õ ðHà× Ò Ø × Ñ Ô Ø � ‰ � ùòQ sÉR%có’—|js td«‚|jjdd«}t|d«|d<|j|Žd|_d|_|jD];}|j|Ž|dj«dk(sŒ)t|d«|_Œ=|j €y|dtjk7rc|jdk7rT|j xr|jdk(|_|j r|jdd «n|jd d «|j«d |_y) Ns.Sending headers before start_response() calledr rFrŠÚHEADr9zTransfer-EncodingÚchunkedr}ÚcloseT)r®ÚAssertionErrorrÚintÚ send_responser¯r°r—Ú send_headerr r ÚHTTP_NOT_MODIFIEDr–Úclose_connectionr¤Ú end_headersr’)rr®rXs rr²z _httprequesthandler.send_headersîs4€Ø× Ò Ü ØAóð ð×(Ñ(×.Ñ.¨t°QÓ7ˆ ܘl¨1™oÓ.ˆ �Q‰Øˆ×јLÑ)؈Œ ؈Œ Ø×#Ô#ˆAØ ˆD× Ñ ˜aÑ Ø�‰t�z‰z‹|Ð/Ó/Ü! ! A¡$›i�• ð$ð �K‰KРؘQ‘¤6×#;Ñ#;Ò;Ø— ‘  Ò&ð×)Ñ)Ð)ÒP¨d×.BÑ.BÀjÑ.Pð ŒMð�}Š}Ø× Ñ Ð!4°iÕ@à× Ñ  ¨wÔ7Ø ×ÑÔØ ˆÕrNcóð—t|t«sJ‚|jdd«\}}t|«}||_d}|D�cgc]}|dj «|vsŒ|‘Œc}|_|jScc}w)Nr )Ú connectionztransfer-encodingr)rar(rr½r®r r—rl)rÚ http_statusrNrirUr.Ú bad_headersrXs rrkz#_httprequesthandler._start_response s|€Ü˜+¤sÔ+Ð+Ð+Ø×%Ñ% d¨AÓ.‰ ˆˆcÜ�4‹yˆØ'ˆÔØ9ˆ áó Ù�! ! A¡$§*¡*£,°kÒ"AŠA�wñ ˆÔð�{‰{Ðùò s ÁA3ÁA3cóª—|js td«‚|js|j«|j�At |«|jkDr td«‚|jt |«z |_n|j r|rdt |«|fz}|jj|«|jj«y)Ns+data written before start_response() calledsLContent-length header sent, but more bytes than specified are being written.s%x %s ) r®r¼r’r²r¯r›r°r¨r)r$)rÚdatas rrlz_httprequesthandler._writes¬€Ø× Ò Ü Ð!OÓPÐ PØ×"Ò"Ø × Ñ Ô Ø �;‰;Ð "Ü�4‹y˜4Ÿ;™;Ò&Ü$ð?óððŸ+™+¬¨D« Ñ1ˆD�KØ �]Š]™tØ"¤c¨$£i°Ð%6Ñ6ˆDØ � ‰ ×Ñ˜ÔØ � ‰ ×ÑÕrcóˆ—|jr6|jjd«|jj«yy)Ns0 )r°r¨r)r$r#s rrmz_httprequesthandler._done's0€Ø �=Š=Ø �J‰J× Ñ ˜\Ô *Ø �J‰J× Ñ Õ ð rcó¾—|jjr)tj|jj«Stj j |«Sr)rGÚ serverheaderrr,r;r<Úversion_stringr#s rrÌz"_httprequesthandler.version_string,sA€Ø �;‰;× #Ò #Ü×(Ñ(¨¯©×)AÑ)AÓBÐ BÜ×3Ñ3×BÑBÀ4ÓHÐHr)r�r�r)r/r0r1r¥Ú staticmethodr7r rEr+rLrYr]rqrtrwryr[r²rkrlrmrÌr"rrr3r3Esm„à€Jàñ9óð9òLò ò;ò<ó  òò ò6òòòOòb!ó: òò"ó Irr3có*—eZdZdZdZed„«Zd„Zy)Ú_httprequesthandlersslz*HTTPS handler based on Python's ssl moduleshttpscó6— ddlm}|j|jdd«}|jdd«}|jdd«}|j|j||||¬ «|_ y#t$rt j t d««‚wxYw) Nr)ÚsslutilsSSL support is unavailableówebó certificatesdevels servercafilesserverrequirecert)ÚcertfileÚcafileÚrequireclientcert) rrÑÚwrapserversocketÚ ImportErrorrÚAbortrÚconfigÚ configboolrc)r5r6rÑrÔrÕÚreqcerts rr7z(_httprequesthandlerssl.preparehttpserver7sž€ð @Ý "à × $Ò $ð—9‘9˜V ^Ó4ˆð—‘˜8 _Ó5ˆØ—-‘- Ð*>Ó?ˆà#×4Ñ4Ø × Ñ Ø ØØØ%ð 5ó ˆ Õøôò @Ü—+‘+œaÐ =Ó>Ó?Ð ?ð @ús ‚A0Á0(BcóÒ—|j|_|jjd|j«|_|jjd|j «|_y)NÚrbÚwb)ÚrequestrÄÚmakefileÚrbufsizer§Úwbufsizer¨r#s rÚsetupz_httprequesthandlerssl.setupOsE€ØŸ,™,ˆŒØ—\‘\×*Ñ*¨4°·±Ó?ˆŒ Ø—\‘\×*Ñ*¨4°·±Ó?ˆ� rN)r/r0r1Ú__doc__r¥rÍr7rär"rrrÏrÏ2s"„Ù4à€Jàñ óð ó.@rrÏÚforkcó —eZdZy)Ú_mixinN)r/r0r1r"rrrèrè_s„Ø rrècó,—|r|dk7r t|d«S|S)Nó-sab)r)ÚoptÚdefaults rÚopenlogrícs€Ù ˆs�dŠ{Ü�C˜ÓÐØ €Nrcó.—eZdZejrdZd„Zy)ÚMercurialHTTPServerrc ó>—tjj|||fi|¤Žd|_||_|j ||«|j dd«}|rd|jd«z}||_t|j dd«|j«}t|j dd«|j«}||_ ||_ |jj«dd\|_|_|j$|_|j dd «|_y) NTrÒsprefixr{s accesslogserrorlogrrs server-header)r;r5r Údaemon_threadsr±r7rÚr£r“ríÚfoutÚferrrKrHrcÚ getsocknameÚaddrÚportr˜ÚfqaddrrË) rr6ÚapprõrÚkwargsr“ÚalogÚelogs rr zMercurialHTTPServer.__init__osó€Ü× Ñ ×)Ñ)¨$°°gÑHÀÒHØ"ˆÔ؈Ôà×!Ñ! $¨Ô+à—‘˜6 9Ó-ˆÙ ؘFŸL™L¨Ó.Ñ.ˆF؈Œ ä�r—y‘y ¨Ó6¸¿¹Ó@ˆÜ�r—y‘y ¨Ó5°r·w±wÓ?ˆØˆŒØˆŒ à#Ÿ{™{×6Ñ6Ó8¸¸1Ð=шŒ �4”9Ø×&Ñ&ˆŒ àŸI™I fÐ.>Ó?ˆÕrN)r/r0r1r Ú iswindowsÚallow_reuse_addressr r"rrrïrïis„ð×ÒØÐó@rrïcó2‡—eZdZeedd«Zˆfd„ZˆxZS)ÚIPv6HTTPServerÚAF_INET6Nc󀕗|j€tjtd««‚t t |�|i|¤Žy)Ns$IPv6 is not available on this system)Úaddress_familyrÚ RepoErrorrÚsuperrÿr )rr=rùÚ __class__s €rr zIPv6HTTPServer.__init__‰s8ø€Ø × Ñ Ð &Ü—/‘/¤!Ð$KÓ"LÓMÐ MÜ Œn˜dÑ,¨dÐ=°fÓ=r)r/r0r1rrcrr Ú __classcell__)rs@rrÿrÿ†sø„Ù˜V Z°Ó6€N÷>ð>rrÿc óî—|jdd«rt}nt}|jdd«rt}nt }ddl}|j«|jdd«}tj|jdd««} |||||f|«S#tj$rI}tjtd«||tj|j d«fz«‚d}~wwxYw) NrÒrÓsipv6rsaddresssports"cannot start server at '%s:%d': %sr )rÚrÏr3rÛrÿrïÚ mimetypesÚinitr ÚgetportrcrrÙrrÚ strtolocalr=)r6rørÚclsrÚaddressröÚinsts rÚ create_serverr�sÕ€à ‡y�y�˜Ô(Ü(‰ä%ˆà ‡}�}�V˜WÔ%܉ä!ˆóà ‡N�NÔà�i‰i˜  Ó+€GÜ �?‰?˜2Ÿ9™9 V¨WÓ5Ó 6€Dð Ù�2�s˜W d˜O¨WÓ5Ð5øÜ �<‰<ò Ü�k‰kÜ Ð3Ó 4ؘœh×1Ñ1°$·)±)¸A±,Ó?Ð@ñ Aó ð ûð ús BÂC4Â+AC/Ã/C4))rdÚosrcrhrfÚwsgiref.validater«Úi18nrr rrrrrr Úutilsr r5r;r©Úurlerrrr rrr<r3rÏÚ threadingÚ active_countrªrèrØrOr‘ríÚobjectrïrÿrr"rrÚrsðó Û Û Û ÛÛå÷÷ óõ ð—‘€ Ø× Ñ € Ø �‰€Ø �‰€åò '÷ Pñ PôjI˜-×>Ñ>ôjIôZ @Ð0ô @ðF Ûà€I×ÑÔØ × (Ñ (€Fòô @˜& -×":Ñ":¸Fô@ô:>Ð(ô>ó øðkòØ€t×ј˜FÔ#Ø×*Ñ*‰÷ ñ ùð úsÂ!C'Ã'/DÄD