
    h                         d Z dZdZdZdZdZedz   Z G d d      Z ee      Z ee      Z	 ee      Z
 ee      Z ee      Z eed	
      Zy)a  
Convert numbers from base 10 integers to base X strings and back again.

Sample usage::

  >>> base20 = BaseConverter('0123456789abcdefghij')
  >>> base20.encode(1234)
  '31e'
  >>> base20.decode('31e')
  1234
  >>> base20.encode(-1234)
  '-31e'
  >>> base20.decode('-31e')
  -1234
  >>> base11 = BaseConverter('0123456789-', sign='$')
  >>> base11.encode('$1234')
  '$-22'
  >>> base11.decode('$-22')
  '$1234'

010123456789ABCDEF823456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz$0123456789abcdefghijklmnopqrstuvwxyz>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz-_c                   0    e Zd ZdZddZd Zd Zd Zd Zy)	BaseConverter
0123456789c                 R    || _         || _        || j                  v rt        d      y )Nz.Sign character found in converter base digits.)signdigits
ValueError)selfr   r   s      X/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/utils/baseconv.py__init__zBaseConverter.__init__3   s-    	4;;MNN     c                 |    d| j                   j                  dt        | j                        d| j                  dS )N<z: basez (z)>)	__class____name__lenr   )r   s    r   __repr__zBaseConverter.__repr__9   s)    &*nn&=&=s4;;?OQUQ\Q\]]r   c                 ~    | j                  || j                  | j                  d      \  }}|r| j                  |z   S |S N-)convertdecimal_digitsr   r   )r   inegvalues       r   encodezBaseConverter.encode<   s;    \\!T%8%8$++sK
U99u$$r   c                     | j                  || j                  | j                  | j                        \  }}|rd|z   }t	        |      S r   )r   r   r   r   int)r   sr   r   s       r   decodezBaseConverter.decodeB   s>    \\!T[[$2E2EtyyQ
U%KE5zr   c                 F   t        |      d   |k(  rt        |      dd  }d}nd}d}t        |      D ]"  }|t        |      z  |j                  |      z   }$ |dk(  r	|d   }||fS d}|dkD  r3|t        |      z  }||   |z   }t        |t        |      z        }|dkD  r3||fS )N        )strr   indexr"   )	r   numberfrom_digits	to_digitsr   r   xdigitress	            r   r   zBaseConverter.convertH   s    v;q>T![_FCC [ 	@EC$${'8'8'??A	@ 6A,C Cx Ca%C	N*&,S^+, a% Cxr   N)r   )	r   
__module____qualname__r   r   r   r    r$   r    r   r   r   r   0   s"    !NO^r   r   $)r   N)__doc__BASE2_ALPHABETBASE16_ALPHABETBASE56_ALPHABETBASE36_ALPHABETBASE62_ALPHABETBASE64_ALPHABETr   base2base16base36base56base62base64r3   r   r   <module>rB      sz   $, $L8R!D(- -` 	n%		'		'		'		'	S	1r   