o
    …9j?  ã                   @   sp   d Z dddœdd„Zdddœdd„Zdddœdd	„Zdddœd
d„ZzddlT W n	 ey1   Y nw eZeZdS )zBisection algorithms.é    N©Úkeyc                C   ó>   |du rt | |||ƒ}nt | ||ƒ|||d�}|  ||¡ dS )zïInsert item x in list a, and keep it sorted assuming a is sorted.

    If x is already in a, insert it to the right of the rightmost x.

    Optional args lo (default 0) and hi (default len(a)) bound the
    slice of a to be searched.
    Nr   )Úbisect_rightÚinsert©ÚaÚxÚloÚhir   © r   ú/usr/lib/python3.10/bisect.pyÚinsort_right   s   r   c                C   s    |dk rt dƒ‚|du rt| ƒ}|du r1||k r/|| d }|| | k r'|}n|d }||k s|S ||k rN|| d }||| | ƒk rF|}n|d }||k s5|S )aƒ  Return the index where to insert item x in list a, assuming a is sorted.

    The return value i is such that all e in a[:i] have e <= x, and all e in
    a[i:] have e > x.  So if x already appears in the list, a.insert(i, x) will
    insert just after the rightmost x already there.

    Optional args lo (default 0) and hi (default len(a)) bound the
    slice of a to be searched.
    r   úlo must be non-negativeNé   é   ©Ú
ValueErrorÚlen©r   r	   r
   r   r   Úmidr   r   r   r      s&   ûúûr   c                C   r   )zíInsert item x in list a, and keep it sorted assuming a is sorted.

    If x is already in a, insert it to the left of the leftmost x.

    Optional args lo (default 0) and hi (default len(a)) bound the
    slice of a to be searched.
    Nr   )Úbisect_leftr   r   r   r   r   Úinsort_left5   s   	r   c                C   s    |dk rt dƒ‚|du rt| ƒ}|du r1||k r/|| d }| | |k r)|d }n|}||k s|S ||k rN|| d }|| | ƒ|k rH|d }n|}||k s5|S )aƒ  Return the index where to insert item x in list a, assuming a is sorted.

    The return value i is such that all e in a[:i] have e < x, and all e in
    a[i:] have e >= x.  So if x already appears in the list, a.insert(i, x) will
    insert just before the leftmost x already there.

    Optional args lo (default 0) and hi (default len(a)) bound the
    slice of a to be searched.
    r   r   Nr   r   r   r   r   r   r   r   D   s&   
ûú
ûr   )Ú*)r   N)	Ú__doc__r   r   r   r   Ú_bisectÚImportErrorÚbisectÚinsortr   r   r   r   Ú<module>   s    "#ÿ