???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
ie                 @   s  d dl Z d dlZd dlZd dlZd dlZdddddddd	d
ddddddddddddgZdddddddddd d!d"d#d$d%d&d'd(d)gZdddddd*dddd!dd d+d"d#d$d,d&d'd%d-d.d/d(d)gZddd0d"dddd d#d$d1d2d!d%d3gZdd0d4d5d*ddd+d1d2g
Z	dddddd d!dd#d$d1d2gZ
ddd0ddd5dddd d+dd"gZd6Zd7Zd8d9d:gZd;Zi Zd<d= Zd>Zd?Zd@dA ZeefdBdCZeefdDdEZdFdG ZG dHdI dIeZG dJdK dKeZG dLdM dMeZG dNdO dOeeZG dPdQ dQeeZd dRlmZ eddSZeddTZ eddUZ!dVe_"dWej#_"dXej$_"dYe _"dZe j%_"d[e j&_"d\e j'_"d]e j(_"d^e j$_"d_e!_"e j%j"e!j%_"e j&j"e!j&_"e j'j"e!j'_"d`e!j)_"e j(j"e!j(_"e j$j"e!j$_"eZ*G dad deeZ+G dbd de eZ,G dcd de!eZ-G ddd deeZ.G ded de eZ/G dfd de!eZ0dgdh Z1e1  [1ddjdZ2dkdl Z3ddmdnZ4dodp Z5dqdr Z6dsdt Z7dudv Z8ddwdZ9dxd Z:dyd Z;ddzdZ<d{d Z=d|Z>da?d}d Z@e jAd~ZBdddZCddd	ZDG dd deEZFdZGdaHddd
ZIdddZJeKdZLeMeLZNi ZOG dd dejPZQdddZRdddZSdddZTddddeSfddZUdd ZVdd ZWdaXdd ZYdaZdd Z[dd Z\dd Z]da^dd Z_dddZ`dd Zadd Zbdd Zcdd ZddS )    Nurlparse
urlunparseurljoin	urldefragurlsplit
urlunsplit	urlencodeparse_qs	parse_qslquote
quote_plusquote_from_bytesunquoteunquote_plusunquote_to_bytesDefragResultParseResultSplitResultDefragResultBytesParseResultBytesSplitResultBytes ZftphttpZgopherZnntpZimapZwaisfileZhttpsZshttpZmmsZprosperoZrtspZrtspuZsftpZsvnzsvn+sshZwsZwssZtelnetZsnewsZrsyncZnfsZgitzgit+sshZhdlZsipZsipsZtelZmailtoZnewszAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.z! 	
 	
   c               C   s   t j  tj  d S )N)_parse_cacheclear_safe_quoters r!   r!   $/usr/lib64/python3.6/urllib/parse.pyclear_cache`   s    r#   asciistrictc             C   s   | S )Nr!   )objr!   r!   r"   _noopo   s    r'   c             C   s   | j ||S )N)encode)r&   encodingerrorsr!   r!   r"   _encode_resultr   s    r+   c                s   t  fdd| D S )Nc             3   s"   | ]}|r|j  nd V  qdS )r   N)decode).0x)r)   r*   r!   r"   	<genexpr>x   s    z_decode_args.<locals>.<genexpr>)tuple)argsr)   r*   r!   )r)   r*   r"   _decode_argsv   s    r2   c              G   sZ   t | d t}x.| dd  D ]}|rt |t|krtdqW |rL| tf S t| tf S )Nr      z$Cannot mix str and non-str arguments)
isinstancestr	TypeErrorr'   r2   r+   )r1   Z	str_inputargr!   r!   r"   _coerce_argsz   s    
r8   c               @   s   e Zd Zf ZdddZdS )_ResultMixinStrr$   r%   c                s   | j  fdd| D  S )Nc             3   s   | ]}|j  V  qd S )N)r(   )r-   r.   )r)   r*   r!   r"   r/      s    z)_ResultMixinStr.encode.<locals>.<genexpr>)_encoded_counterpart)selfr)   r*   r!   )r)   r*   r"   r(      s    z_ResultMixinStr.encodeN)r$   r%   )__name__
__module____qualname__	__slots__r(   r!   r!   r!   r"   r9      s   r9   c               @   s   e Zd Zf ZdddZdS )_ResultMixinBytesr$   r%   c                s   | j  fdd| D  S )Nc             3   s   | ]}|j  V  qd S )N)r,   )r-   r.   )r)   r*   r!   r"   r/      s    z+_ResultMixinBytes.decode.<locals>.<genexpr>)_decoded_counterpart)r;   r)   r*   r!   )r)   r*   r"   r,      s    z_ResultMixinBytes.decodeN)r$   r%   )r<   r=   r>   r?   r,   r!   r!   r!   r"   r@      s   r@   c               @   s@   e Zd Zf Zedd Zedd Zedd Zedd Zd	S )
_NetlocResultMixinBasec             C   s
   | j d S )Nr   )	_userinfo)r;   r!   r!   r"   username   s    z_NetlocResultMixinBase.usernamec             C   s
   | j d S )Nr3   )rC   )r;   r!   r!   r"   password   s    z_NetlocResultMixinBase.passwordc             C   sD   | j d }|sd S t|tr dnd}|j|\}}}|j | | S )Nr   %   %)	_hostinfor4   r5   	partitionlower)r;   hostname	separatorZpercentZzoner!   r!   r"   rK      s    
z_NetlocResultMixinBase.hostnamec             C   s@   | j d }|d k	r<t|d}d|  ko.dkn  s<td|S )Nr3   
   r   i  zPort out of range 0-65535)rH   int
ValueError)r;   portr!   r!   r"   rP      s    

z_NetlocResultMixinBase.portN)	r<   r=   r>   r?   propertyrD   rE   rK   rP   r!   r!   r!   r"   rB      s
   rB   c               @   s(   e Zd Zf Zedd Zedd ZdS )_NetlocResultMixinStrc             C   sD   | j }|jd\}}}|r4|jd\}}}|s<d }nd  }}||fS )N@:)netloc
rpartitionrI   )r;   rU   userinfo	have_infohostinforD   have_passwordrE   r!   r!   r"   rC      s    z_NetlocResultMixinStr._userinfoc             C   sl   | j }|jd\}}}|jd\}}}|rL|jd\}}}|jd\}}}n|jd\}}}|sdd }||fS )NrS   []rT   )rU   rV   rI   )r;   rU   _rY   have_open_br	bracketedrK   rP   r!   r!   r"   rH      s    z_NetlocResultMixinStr._hostinfoN)r<   r=   r>   r?   rQ   rC   rH   r!   r!   r!   r"   rR      s   rR   c               @   s(   e Zd Zf Zedd Zedd ZdS )_NetlocResultMixinBytesc             C   sD   | j }|jd\}}}|r4|jd\}}}|s<d }nd  }}||fS )N   @   :)rU   rV   rI   )r;   rU   rW   rX   rY   rD   rZ   rE   r!   r!   r"   rC      s    z!_NetlocResultMixinBytes._userinfoc             C   sl   | j }|jd\}}}|jd\}}}|rL|jd\}}}|jd\}}}n|jd\}}}|sdd }||fS )Nra      [   ]rb   )rU   rV   rI   )r;   rU   r]   rY   r^   r_   rK   rP   r!   r!   r"   rH      s    z!_NetlocResultMixinBytes._hostinfoN)r<   r=   r>   r?   rQ   rC   rH   r!   r!   r!   r"   r`      s   r`   )
namedtuplezurl fragmentz!scheme netloc path query fragmentz(scheme netloc path params query fragmentz
DefragResult(url, fragment)

A 2-tuple that contains the url without fragment identifier and the fragment
identifier as a separate argument.
z$The URL with no fragment identifier.z
Fragment identifier separated from URL, that allows indirect identification of a
secondary resource by reference to a primary resource and additional identifying
information.
z
SplitResult(scheme, netloc, path, query, fragment)

A 5-tuple that contains the different components of a URL. Similar to
ParseResult, but does not split params.
z%Specifies URL scheme for the request.z0
Network location where the request is made to.
z@
The hierarchical path, such as the path to a file to download.
z
The query component, that contains non-hierarchical data, that along with data
in path component, identifies a resource in the scope of URI's scheme and
network location.
z
Fragment identifier, that allows indirect identification of a secondary resource
by reference to a primary resource and additional identifying information.
zr
ParseResult(scheme, netloc, path, params,  query, fragment)

A 6-tuple that contains components of a parsed URL.
z
Parameters for last path element used to dereference the URI in order to provide
access to perform some operation on the resource.
c               @   s   e Zd Zf Zdd ZdS )r   c             C   s    | j r| jd | j  S | jS d S )N#)fragmenturl)r;   r!   r!   r"   geturlE  s    zDefragResult.geturlN)r<   r=   r>   r?   ri   r!   r!   r!   r"   r   C  s   c               @   s   e Zd Zf Zdd ZdS )r   c             C   s   t | S )N)r   )r;   r!   r!   r"   ri   M  s    zSplitResult.geturlN)r<   r=   r>   r?   ri   r!   r!   r!   r"   r   K  s   c               @   s   e Zd Zf Zdd ZdS )r   c             C   s   t | S )N)r   )r;   r!   r!   r"   ri   R  s    zParseResult.geturlN)r<   r=   r>   r?   ri   r!   r!   r!   r"   r   P  s   c               @   s   e Zd Zf Zdd ZdS )r   c             C   s    | j r| jd | j  S | jS d S )N   #)rg   rh   )r;   r!   r!   r"   ri   X  s    zDefragResultBytes.geturlN)r<   r=   r>   r?   ri   r!   r!   r!   r"   r   V  s   c               @   s   e Zd Zf Zdd ZdS )r   c             C   s   t | S )N)r   )r;   r!   r!   r"   ri   `  s    zSplitResultBytes.geturlN)r<   r=   r>   r?   ri   r!   r!   r!   r"   r   ^  s   c               @   s   e Zd Zf Zdd ZdS )r   c             C   s   t | S )N)r   )r;   r!   r!   r"   ri   e  s    zParseResultBytes.geturlN)r<   r=   r>   r?   ri   r!   r!   r!   r"   r   c  s   c              C   s8   t tfttfttff} x| D ]\}}||_||_qW d S )N)r   r   r   r   r   r   r:   rA   )Z_result_pairsZ_decodedZ_encodedr!   r!   r"   _fix_result_transcodingi  s    
rk   Tc       
      C   sf   t | |\} }}t| ||}|\}}} }}|tkrHd| krHt| \} }nd}t||| |||}	||	S )N;r   )r8   r   uses_params_splitparamsr   )
rh   schemeallow_fragments_coerce_resultZsplitresultrU   queryrg   paramsresultr!   r!   r"   r   v  s    c             C   sR   d| kr,| j d| jd}|dk r6| dfS n
| j d}| d | | |d d  fS )N/rl   r   r   r3   )findrfind)rh   ir!   r!   r"   rn     s    

rn   c             C   sL   t | }x*dD ]"}| j||}|dkrt||}qW | || | |d  fS )Nz/?#r   )lenrv   min)rh   startdelimcZwdelimr!   r!   r"   _splitnetloc  s    
r~   c             C   s   |  st dd | D  rd S dd l}| jdd}|jdd}|jdd}|jdd}|jd	|}||krnd S x(d
D ] }||krttd|  d d qtW d S )Nc             s   s   | ]}t |d kV  qdS )   N)ord)r-   r}   r!   r!   r"   r/     s    z_checknetloc.<locals>.<genexpr>r   rS   r   rT   rf   ?NFKCz/?#@:znetloc 'z' contains invalid z#characters under NFKC normalization)anyunicodedatareplace	normalizerO   )rU   r   nZnetloc2r}   r!   r!   r"   _checknetloc  s    
r   c             C   s   xt D ]}| j|d} qW | S )Nr   )_UNSAFE_URL_BYTES_TO_REMOVEr   )rh   br!   r!   r"   _remove_unsafe_bytes_from_url  s    
r   c             C   st   | j dd }|jd\}}}|rX|r.td|jd\}}}|rh|jd rhtdn|jd\}}}t| d S )NrS      r[   zInvalid IPv6 URLr\   rT   )rV   rI   rO   
startswith_check_bracketed_host)rU   Zhostname_and_portZbefore_bracketr^   r_   rK   r]   rP   r!   r!   r"   _check_bracketed_netloc  s    
r   c             C   sB   | j dr tjd| s>tdntj| }t|tjr>tdd S )Nvz\Av[a-fA-F0-9]+\..+\ZzIPvFuture address is invalidz%An IPv4 address cannot be in brackets)r   rematchrO   	ipaddressZ
ip_addressr4   ZIPv4Address)rK   Zipr!   r!   r"   r     s    


r   c             C   s  t | |\} }}t| } t|}| jt} |jt}t|}| ||t| t|f}tj|d }|rj||S t	tt
kr|t  d } }}| jd}	|	dkr| d |	 dkr~| d |	 j }| |	d d  } | d d dkrt| d\}} d|kod	|ksd	|krd|krtd
|r<d| kr<| jdd\} }d| krV| jdd\} }t| t||| ||}
|
t|< ||
S xd| d |	 D ]}|tkrP qW | |	d d  }| stdd |D r| d |	 j | }} | d d dkrPt| d\}} d|krd	|ks,d	|kr4d|kr4td
d|krPd	|krPt| |rpd| krp| jdd\} }d| kr| jdd\} }t| t||| ||}
|
t|< ||
S )Nr   rT   r   r   r3   r   z//r[   r\   zInvalid IPv6 URLrf   r   c             s   s   | ]}|d kV  qdS )
0123456789Nr!   )r-   r}   r!   r!   r"   r/     s    zurlsplit.<locals>.<genexpr>)r8   r   lstrip_WHATWG_C0_CONTROL_OR_SPACEstripbooltyper   getry   MAX_CACHE_SIZEr#   rv   rJ   r~   rO   splitr   r   scheme_charsr   r   )rh   ro   rp   rq   keycachedrU   rr   rg   rx   r   r}   restr!   r!   r"   r     sh    






c             C   s<   t |  \}}}}}}}|r&d||f }|t|||||fS )Nz%s;%s)r8   r   )
componentsro   rU   rh   rs   rr   rg   rq   r!   r!   r"   r     s    c             C   s   t |  \}}}}}}|s4|r`|tkr`|d d dkr`|rP|d d dkrPd| }d|pXd | }|rp|d | }|r|d | }|r|d | }||S )	Nr   z//r3   ru   r   rT   r   rf   )r8   uses_netloc)r   ro   rU   rh   rr   rg   rq   r!   r!   r"   r     s      c             C   s  | s|S |s| S t | |\} }}t| d|\}}}}}}	t|||\}
}}}}}|
|ks`|
tkrh||S |
tkr|r|t|
|||||fS |}| r| r|}|}|s|}|t|
|||||fS |jd}|d dkr|d= |d d dk r|jd}n(||jd }td |dd |dd	< g }xX|D ]P}|dkrdy|j  W n tk
r`   Y nX n|dkrtq0n
|j	| q0W |d
 dkr|j	d |t|
|dj
|pd|||fS )Nr   ru   r3   ...r   r   r   r   )r   r   )r8   r   uses_relativer   r   r   filterpop
IndexErrorappendjoin)baserh   rp   rq   ZbschemeZbnetlocZbpathZbparamsZbqueryZ	bfragmentro   rU   pathrs   rr   rg   Z
base_partsZsegmentsZresolved_pathZsegr!   r!   r"   r   *  sT    






c       	      C   sT   t | \} }d| kr>t| \}}}}}}t|||||df}nd}| }|t||S )Nrf   r   )r8   r   r   r   )	rh   rq   sr   paqZfragZdefragr!   r!   r"   r   o  s    Z0123456789ABCDEFabcdefc             C   s   | s| j  dS t| tr"| jd} | j d}t|dkr<| S |d g}|j}td krbdd tD axb|dd  D ]R}y(|t|d d   ||dd   W qp tk
r   |d || Y qpX qpW dj	|S )	N    zutf-8rG   r3   r   c             S   s4   i | ],}t D ]"}tt|| d g|| j qqS )   )_hexdigbytesrN   r(   )r-   r   r   r!   r!   r"   
<dictcomp>  s   z$unquote_to_bytes.<locals>.<dictcomp>r   )
r   r4   r5   r(   ry   r   
_hextobyter   KeyErrorr   )stringbitsresr   itemr!   r!   r"   r     s*    



z([ -]+)utf-8r   c             C   s   d| kr| j  | S |d krd}|d kr*d}tj | }|d g}|j}x@tdt|dD ],}|t|| j|| |||d   qVW dj|S )NrF   zutf-8r   r   r3   r   r   )r   _asciirer   rangery   r   r,   r   )r   r)   r*   r   r   r   rx   r!   r!   r"   r     s    


Fc          	   C   sR   i }t | ||||||d}x2|D ]*\}	}
|	|kr@||	 j|
 q |
g||	< q W |S )N)r)   r*   max_num_fieldsrL   )r
   r   )qskeep_blank_valuesstrict_parsingr)   r*   r   rL   Zparsed_resultpairsnamevaluer!   r!   r"   r	     s    c               @   s   e Zd ZdS )_QueryStringSeparatorWarningN)r<   r=   r>   r!   r!   r!   r"   r     s   r   z/etc/python/urllib.cfgc             C   s  t | \} }t|tr |jd}| s6t|ttf rF|d k	rFtdt }|d krVt}d}	|d krvtj	j
|	}d}
|d krytt}W n tk
r   Y nJX |: dd l}|jd d&d}|j| |j
d|	d d	}|aW d Q R X t}
|d krd
| krddlm} |d,tdd d}n:|dkr,|}n*t|dkrVt|	 d|
 dd d |d k	r||krd| jd | jd
 }nd| j| }||k rtd||krdd | jdD }ndd | j|D }g }x|D ]}| r| rq|jd d}t|dkr>|r(td!|f |r|jd" nqt|d sR|r|d jd#d$}t|||d%}||}|d jd#d$}t|||d%}||}|j||f qW |S )-Nr$   z*Separator must be of type string or bytes.ZPYTHON_URLLIB_QS_SEPARATORzenvironment variabler   rf   )ZinterpolationZcomment_prefixesr	   )Zfallbackrl   )warnz4The default separator of urllib.parse.parse_qsl and z1parse_qs was changed to '&' to avoid a web cache z"poisoning issue (CVE-2021-23336). z4By default, semicolons no longer act as query field zseparators. z3See https://access.redhat.com/articles/5860431 for zmore details.r   )
stacklevel&Zlegacyr3   z (from z) must contain z1 character, or "legacy". See z<https://access.redhat.com/articles/5860431 for more details.zMax number of fields exceededc             S   s    g | ]}|j d D ]}|qqS )rl   )r   )r-   s1s2r!   r!   r"   
<listcomp>L  s    zparse_qsl.<locals>.<listcomp>c             S   s   g | ]}|qS r!   r!   )r-   r   r!   r!   r"   r   N  s    =zbad query field: %rr   + )r)   r*   )rf   zeThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache zThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). zThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field zThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. zThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. See https://access.redhat.com/articles/5860431 for a  The default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. See https://access.redhat.com/articles/5860431 for more details.)r8   r4   r   r,   r5   rO   object_default_qs_separatorosenvironr   open_QS_SEPARATOR_CONFIG_FILENAMEFileNotFoundErrorconfigparserZConfigParserZ	read_filewarningsr   r   ry   countr   r   r   r   )r   r   r   r)   r*   r   rL   rq   Z_legacyZenvvar_nameZconfig_sourcer   r   configr   
num_fieldsr   rZ
name_valueZnvr   r   r!   r!   r"   r
     s    












c             C   s   | j dd} t| ||S )Nr   r   )r   r   )r   r)   r*   r!   r!   r"   r   f  s    sA   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-c               @   s$   e Zd Zdd Zdd Zdd ZdS )Quoterc             C   s   t j|| _d S )N)_ALWAYS_SAFEunionsafe)r;   r   r!   r!   r"   __init__~  s    zQuoter.__init__c             C   s   d| j jt| f S )Nz<%s %r>)	__class__r<   dict)r;   r!   r!   r"   __repr__  s    zQuoter.__repr__c             C   s(   || j krt|ndj|}|| |< |S )Nz%{:02X})r   chrformat)r;   r   r   r!   r!   r"   __missing__  s    zQuoter.__missing__N)r<   r=   r>   r   r   r   r!   r!   r!   r"   r   v  s   r   ru   c             C   sb   t | tr8| s| S |d krd}|d kr*d}| j||} n |d k	rHtd|d k	rXtdt| |S )Nzutf-8r%   z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r4   r5   r(   r6   r   )r   r   r)   r*   r!   r!   r"   r     s    
c             C   sd   t | trd| ks$t | tr2d| kr2t| |||S t |trBd}nd}t| || ||} | jddS )Nr       r   )r4   r5   r   r   r   )r   r   r)   r*   Zspacer!   r!   r"   r     s    
c                s   t | ttfstd| sdS t |tr6|jdd}ntdd |D }| jt| s^| j S yt	|  W n& t
k
r   t|j t	|<  Y nX dj fdd| D S )Nz!quote_from_bytes() expected bytesr   r$   ignorec             S   s   g | ]}|d k r|qS )   r!   )r-   r}   r!   r!   r"   r     s    z$quote_from_bytes.<locals>.<listcomp>c                s   g | ]} |qS r!   r!   )r-   char)quoterr!   r"   r     s    )r4   r   	bytearrayr6   r5   r(   rstrip_ALWAYS_SAFE_BYTESr,   r    r   r   __getitem__r   )Zbsr   r!   )r   r"   r     s    
c             C   s  t | dr| j } nRy t| r2t| d t r2tW n0 tk
rd   tj \}}}tdj|Y nX g }	|sxr| D ]j\}
}t|
t	r||
|}
n|t
|
|||}
t|t	r|||}n|t
||||}|	j|
d |  qtW n,x(| D ]\}
}t|
t	r||
|}
n|t
|
|||}
t|t	rL|||}|	j|
d |  qt|t
rz|||||}|	j|
d |  qyt|}W n: tk
r   |t
||||}|	j|
d |  Y qX xJ|D ]B}t|t	r|||}n|t
||||}|	j|
d |  qW qW dj|	S )Nitemsr   z1not a valid non-string sequence or mapping objectr   r   )hasattrr   ry   r4   r0   r6   sysexc_infowith_tracebackr   r5   r   r   )rr   Zdoseqr   r)   r*   Z	quote_viaZtyZvatblkr   r.   Zeltr!   r!   r"   r     sP    





c             C   sJ   t | trFy| jdj } W n( tk
rD   tdt|  d Y nX | S )NASCIIzURL z contains non-ASCII characters)r4   r5   r(   r,   UnicodeErrorrepr)rh   r!   r!   r"   to_bytes/  s    
r   c             C   s`   t | j } | d d dkr<| dd  dkr<| dd j } | d d dkr\| dd  j } | S )Nr3   <>   zURL:r   r   )r5   r   )rh   r!   r!   r"   unwrap<  s      r  c             C   sD   t d krtjdtja t j| }|r<|j \}}|j |fS d | fS )Nz([^/:]+):(.*))	_typeprogr   compileDOTALLr   groupsrJ   )rh   r   ro   datar!   r!   r"   	splittypeE  s    
r  c             C   sX   t d krtjdtja t j| }|rP|j \}}|rH|d dkrHd| }||fS d | fS )Nz//([^/#?]*)(.*)r   ru   )	_hostprogr   r  r  r   r  )rh   r   Z	host_portr   r!   r!   r"   	splithostR  s    
r	  c             C   s    | j d\}}} |r|nd | fS )NrS   )rV   )hostuserr|   r!   r!   r"   	splituser`  s    r  c             C   s    | j d\} }}| |r|nd fS )NrT   )rI   )r  r|   Zpasswdr!   r!   r"   splitpasswde  s    r  c             C   sD   t d krtjdtja t j| }|r<|j \} }|r<| |fS | d fS )Nz(.*):([0-9]*)$)	_portprogr   r  r  r   r  )r
  r   rP   r!   r!   r"   	splitportl  s    
r  r3   c             C   sT   | j d\} }}|s|} n2|rLyt|}W n tk
rB   d }Y nX | |fS | |fS )NrT   )rV   rN   rO   )r
  Zdefportr|   rP   Znportr!   r!   r"   
splitnporty  s    
r  c             C   s$   | j d\}}}|r||fS | d fS )Nr   )rV   )rh   r   r|   rr   r!   r!   r"   
splitquery  s    r  c             C   s$   | j d\}}}|r||fS | d fS )Nrf   )rV   )rh   r   r|   tagr!   r!   r"   splittag  s    r  c             C   s   | j d}|d |dd  fS )Nrl   r   r3   )r   )rh   Zwordsr!   r!   r"   	splitattr  s    
r  c             C   s    | j d\} }}| |r|nd fS )Nr   )rI   )attrr|   r   r!   r!   r"   
splitvalue  s    r  )r   T)r   )r   T)T)r   r   )FFr   r   NN)FFr   r   NN)r   r   )ru   NN)r   NN)ru   r   )r   )er   r   r   collectionsr   __all__r   r   rm   Znon_hierarchicalZ
uses_queryZuses_fragmentr   r   r   r   r   r#   Z_implicit_encodingZ_implicit_errorsr'   r+   r2   r8   r   r9   r@   rB   rR   r`   re   Z_DefragResultBaseZ_SplitResultBaseZ_ParseResultBase__doc__rh   rg   ro   rU   r   rr   rs   Z
ResultBaser   r   r   r   r   r   rk   r   rn   r~   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r	   RuntimeWarningr   r   r   r
   r   	frozensetr   r   r   r    defaultdictr   r   r   r   r   r   r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r!   r!   r!   r"   <module>"   s  





!


	
	
B
E

  
& 
y
	
,

O
