
    Zcw,                        d dl mZ d dlZd dlmZmZ d dlmZ  ej        dej	                  Z
 ej        d          Z ej        d          Zd	Zd
ez   Zdez   Zdez   ZdZdZ ej        d          Z ej        d          Z eeddd          Z eeddddddddddd
          Z G d d          Zdddeeef         dedefdZdS )    )defaultdictN)OptionalUnion)URLz^([a-z0-9.+-]+:))flagsz:[0-9]*$z^(//?(?!/)[^?\s]*)(\?[^\s]*)?$)<>"` 
	){}|\^r   )')%/?;#)r   r   r      z^[+a-z0-9A-Z_-]{0,63}$z^([+a-z0-9A-Z_-]{0,63})(.*)$T)
javascriptzjavascript:)
httphttpsftpgopherfilezhttp:zhttps:zftp:zgopher:zfile:c                   :    e Zd Zd	dZdededd fdZdeddfdZdS )

MutableURLreturnNc                 v    d | _         d| _        d | _        d | _        d | _        d | _        d | _        d | _        d S )NF)protocolslashesauthporthostnamehashsearchpathname)selfs    ,lib/python3.11/site-packages/mdurl/_parse.py__init__zMutableURL.__init__i   s>    '+"#'	#'	'+#'	%)'+    urlslashes_denote_hostc                 
   d}d}|}|                                 }|st          |                    d                    dk    rgt                              |          }|rK|                    d          | _        |                    d          r|                    d          | _        | S d}t                              |          }|rF|                                }|	                                }|| _
        |t          |          d          }|s|st          j        d|          r7|                    d          }|r |rt          |         s|dd          }d| _        t          |         s||s|rwt          |         sid	}	t!          t          t"                              D ]6}
|                    t"          |
                   }|d	k    r|	d	k    s||	k     r|}	7|	d	k    r|                    d
          }n|                    d
d|	dz             }|d	k    r|d |         }||dz   d          }|| _        d	}	t!          t          t*                              D ]6}
|                    t*          |
                   }|d	k    r|	d	k    s||	k     r|}	7|	d	k    rt          |          }	||	dz
           dk    r|	dz  }	|d |	         }||	d          }|                     |           | j        pd| _        | j                            d          o| j                            d          }|s| j                            d          }t          |          }d}
|
|k     rX||
         }|s|
dz  }
t2                              |          s!d}t          |          }d}||k     r5t5          ||                   dk    r|dz  }n|||         z  }|dz  }||k     5t2                              |          s|d |
         }||
dz   d          }t6                              |          }|rQ|                    |                    d                     |                    d|                    d                     |rd                    |          |z   }d                    |          | _        n|
dz  }
|
|k     Xt          | j                  t>          k    rd| _        |r| j        dd	         | _        |                    d          }|d	k    r||d          | _         |d |         }|                    d          }|d	k    r||d          | _        |d |         }|r|| _        t          |         r| j        r| j        sd| _        | S )N Fr         z^//[^@/]+@[^@/]+z//T@r   :[].   xr   )!striplensplitSIMPLE_PATH_PATTERNmatchgroupr-   r,   PROTOCOL_PATTERNlowerr&   re
startswithHOSTLESS_PROTOCOLr'   SLASHED_PROTOCOLrangeHOST_ENDING_CHARSfindrfindr(   NON_HOST_CHARS
parse_hostr*   endswithHOSTNAME_PART_PATTERNordHOSTNAME_PART_STARTappendinsertjoinHOSTNAME_MAX_LENr+   )r.   r2   r3   lower_protor'   restsimple_pathprotoproto_matchhost_endihecat_signr(   hostipv6_hostname	hostpartslpartnewpartkjvalid_partsnot_hostbitr+   qms                              r/   parsezMutableURL.parses   s    zz||" 	s399S>>':':a'? 	-33D99K  + 1 1! 4 4$$Q'' 7"-"3"3A"6"6DK&,,T22 	&%%''E++--K!DME

%D  	$% 	$295H$+O+O 	$ood++G $ $*;E*B $ABBx# ' s	4s	4s	4&6u&=s	4( H301122 # #ii 1! 455"9 #(b. #C(N #"H 2~ ;**S// **S!X\:: "} !HWH~GaKMM* 	 H3~..// # #iiq 122"9 #(b. #C(N #"H2~ %t99HqL!S( A		?D		?D OOD!!! !M/RDM !M44S99 dm>T>T? ?M
 ! # M//44		NN!e $Q<D !Q 077== ""$II!e #"47||c1 3 !(3 '47 2FA  !e #  5;;GDD 
"*3BQB-K'0Q'9H"5"<"<T"B"BC" A + 2 2399Q<< @ @ @ (399Q<< @ @ @' A'*xx'9'9D'@,/HH[,A,ADM!FA? !e B 4=!!$44 # "  4 $ad 3 yy~~2: 	TUUDI;DYYs^^8 	rss)DK9D 	! DMK( 	T] 	4= 	DMr1   rc   c                     t                               |          }|rA|                                }|dk    r|dd          | _        |d t	          |                    }|r	|| _        d S d S )Nr:   r6   )PORT_PATTERNr,   rE   r)   rA   r*   )r.   rc   
port_matchr)   s       r/   rQ   zMutableURL.parse_host  s|    !((..
 	&##%%Ds{ % H	3t99*%D 	! DMMM	! 	!r1   )r$   N)__name__
__module____qualname__r0   strboolro   rQ    r1   r/   r#   r#   h   s{        , , , ,h h4 hL h h h hT!s !t ! ! ! ! ! !r1   r#   F)r3   r2   r3   r$   c          
          t          | t                    r| S t                      }|                    | |           t          |j        |j        |j        |j        |j        |j	        |j
        |j                  S )N)
isinstancer   r#   ro   r&   r'   r(   r)   r*   r+   r,   r-   )r2   r3   us      r/   	url_parser|   (  sj    #s 
AGGC$%%%	
AIqvqvqz1618QZ  r1   )collectionsr   rH   typingr   r   
mdurl._urlr   compile
IGNORECASErF   rq   rC   DELIMSUNWISEAUTO_ESCAPErP   rM   rY   rS   rU   rw   rJ   rK   r#   rv   r|   rx   r1   r/   <module>r      s  T $ # # # # # 				 " " " " " " " "       2:1GGG rz+&& !bj!BCC  
5 
)6	1 vo
 +[8#  "
#<==  bj!@AA   K    ;   "}! }! }! }! }! }! }! }!@ DI   5c? D S      r1   