File: //usr/lib/python3/dist-packages/lazr/uri/__pycache__/_uri.cpython-38.pyc
U
��O�J � + @ s� d Z eZddddddgZddlZze W n ek
r@ eZY nX d d
ddd
dddd
ddddddddddddddddd d!d"d#d$d$d%d%d&d%d
d'd(d'd'd)d'd*�*Zd+Z d,Z
d-Zd.Zd/e
eef Z
d0Zd1Zd2Zd3e Zd4Zd5e
eeeef Zd6e
eeeef Zd7Zd8Zd9e eeef Zd:eeef Ze�eej�Ze�eej�Zd;d� Zd<d� Zd=d>� ZG d?d� de �Z!G d@d� d�Z"dAdBdCi Z#e�e#ejej$B �Z%e�dD�Z&dEd� Z'dS )Fz/Functions for working with generic syntax URIs.�URI�InvalidURIError�find_uris_in_text�possible_uri_re�merge�remove_dot_segments� NZ674Z80Z2628Z53Z21Z1096Z70Z1720Z443Z143Z631Z702Z389Z1038Z3905Z2049Z119Z110Z554Z5060Z5061Z161Z605Z23Z69Z3372Z575Z602Z210Z1525Z22Z6667Z3690)*ZacapZdav�dictZdns�ftpZgo�gopherZh323�http�https�imapZippz iris.beepZldapZmtqpZmupdateZnfsZnntp�pop�rtspZsipZsipsZsnmpz soap.beepz
soap.beeps�telnetZtftpZtipZvemmizxmlrpc.beepzxmlrpc.beepszz39.50rzz39.50sZprosperoZwais�bzr+http�bzr+sshZircZsftpZssh�svn�svn+sshz(?P<scheme>[a-z][-a-z0-9+.]*)z9(?P<userinfo>(?:[-a-z0-9._~!$&\'()*+,;=:]|%[0-9a-f]{2})*)zs(?P<host>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|(?:[-a-z0-9._~!$&\'()*+,;=]|%[0-9a-f]{2})*|\[[0-9a-z:.]+\])z(?P<port>[0-9]*)z!(?P<authority>(?:%s@)?%s(?::%s)?)z2(?:/(?:[-a-z0-9._~!$&\'()*+,;=:@]|%[0-9a-f]{2})*)*z](?:[-a-z0-9._~!$&\'()*+,;=@]|%[0-9a-f]{2})+(?:/(?:[-a-z0-9._~!$&\'()*+,;=:@]|%[0-9a-f]{2})*)*z^(?:[-a-z0-9._~!$&\'()*+,;=:@]|%[0-9a-f]{2})+(?:/(?:[-a-z0-9._~!$&\'()*+,;=:@]|%[0-9a-f]{2})*)*z/(?:%s)?� z(?P<hierpart>//%s%s|%s|%s|%s)z!(?P<relativepart>//%s%s|%s|%s|%s)z=(?P<query>(?:[-a-z0-9._~!$&\'()*+,;=:@/?\[\]]|%[0-9a-f]{2})*)z<(?P<fragment>(?:[-a-z0-9._~!$&\'()*+,;=:@/?]|%[0-9a-f]{2})*)z%s:%s(?:\?%s)?(?:#%s)?$z%s(?:\?%s)?(?:#%s)?$c C s2 |r| dkrd| S | � d�}| d|d � | S )a/ Merge two URI path components into a single path component.
Follows rules specified in Section 5.2.3 of RFC 3986.
The algorithm in the RFC treats the empty basepath edge case
differently for URIs with and without an authority section, which
is why the third argument is necessary.
r �/N� )�rfind)�basepath�relpath�
has_authority�slash� r �//usr/lib/python3/dist-packages/lazr/uri/_uri.pyr � s
c C s� g }| r�| � d�r | dd� } q| � d�r8| dd� } q| � d�sJ| dkr\d| dd� } q| � d �sn| d
kr�d| dd� } t|�dkr�|d
= q| dkr�d} q| � d�r�| �dd�}n
| �d�}|dk r�t| �}|�| d|� � | |d� } qd�|�S )zqRemove '.' and '..' segments from a URI path.
Follows the rules specified in Section 5.2.4 of RFC 3986.
z../� Nz./� z/./z/.r z/../z/..� r ���)�.z..r r )�
startswith�len�find�append�join)�path�outputr r r r r � s,
c C s� | � d�}d}t|�D ]�\}}|dkr(qzt|dd� d�}W n tk
rV Y qY nX t|�|kr~t|�|dd� ||<