Ë c‡½j` ã ón — d Z ddlZg d¢Z G d„ d« Zd„ Zd„ Zd d„Zd „ Zd „ Zh d£j Z d„ Zy)z$Miscellaneous WSGI-related Utilitiesé N)ÚFileWrapperÚguess_schemeÚapplication_uriÚrequest_uriÚshift_path_infoÚsetup_testing_defaultsc ó$ — e Zd ZdZdd„Zd„ Zd„ Zy)r z1Wrapper to convert file-like objects to iterablesc ó\ — || _ || _ t |d« r|j | _ y y )NÚclose)ÚfilelikeÚblksizeÚhasattrr )Úselfr r s ú%/usr/lib64/python3.12/wsgiref/util.pyÚ__init__zFileWrapper.__init__ s* € Ø ˆŒ ؈ŒÜ�8˜GÔ$Ø!Ÿ™ˆD�Jð %ó c ó — | S ©N© )r s r Ú__iter__zFileWrapper.__iter__ s € ؈r c ó` — | j j | j « }|r|S t ‚r )r Úreadr Ú StopIteration)r Údatas r Ú__next__zFileWrapper.__next__ s( € Ø�}‰}×!Ñ! $§,¡,Ó/ˆÙ؈KÜÐr N)i )Ú__name__Ú __module__Ú__qualname__Ú__doc__r r r r r r r r s „ Ù;ó(òór r c ó, — | j d« dv ryy)zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https' ÚHTTPS)ÚyesÚonÚ1ÚhttpsÚhttp)Úget)Úenvirons r r r s € ð ‡{�{�7ÓÐ/Ñ/Øàr c ó — | d dz }ddl m} | j d« r || d z }n7|| d z }| d dk( r| d d k7 r|d | d z z }n| d dk7 r|d | d z z }| || j d« xs d d¬« z }|S )z@Return the application's base URI (no PATH_INFO or QUERY_STRING)úwsgi.url_schemez://r ©ÚquoteÚ HTTP_HOSTÚSERVER_NAMEr% ÚSERVER_PORTÚ443Ú:Ú80ÚSCRIPT_NAMEÚ/Úlatin1)Úencoding)Úurllib.parser, r' )r( Úurlr, s r r r % s³ € à Ð#Ñ $ UÑ *€CÝ"à‡{�{�;ÔØˆw�{Ñ#Ñ#‰àˆw�}Ñ%Ñ%ˆàÐ$Ñ%¨Ò0Ø�}Ñ%¨Ò.Ø�s˜W ]Ñ3Ñ3Ñ3‘à�}Ñ%¨Ò-Ø�s˜W ]Ñ3Ñ3Ñ3�à‰5�—‘˜]Ó+Ò2¨s¸XÔFÑF€CØ€Jr c óØ — t | « }ddlm} || j dd« dd¬« }| j d« s ||d d z }n||z }|r| j d« r|d| d z z }|S ) zBReturn the full request URI, optionally including the query stringr r+ Ú PATH_INFOÚ z/;=,r5 )Úsafer6 r3 é NÚQUERY_STRINGÚ?)r r7 r, r' )r( Ú include_queryr8 r, Ú path_infos r r r 9 su € ä ˜'Ó "€CÝ"Ù�g—k‘k +¨bÓ1¸ÈÔR€IØ�;‰;�}Ô%؈y˜˜ˆ}щàˆyш٘Ÿ™ ^Ô4؈s�W˜^Ñ,Ñ,Ñ,ˆØ€Jr c ó — | j dd« }|sy|j d« }|dd D �cg c] }|sŒ|dk7 sŒ|‘Œ c}|dd |d }|d= | j dd« }t j |dz |z « }|j d« r|dd }|s|j d« s|dz }|| d<