o
     JAfô  ã                   @   sr   	 g d ¢Z ddlZddlZddlmZ ddlmZ eƒ ZejZ	ej
Z
dd„ ZdZddd	„Zdd
d„Zddd„ZdS ))ÚchoiceÚ	randbelowÚrandbitsÚSystemRandomÚtoken_bytesÚ	token_hexÚtoken_urlsafeÚcompare_digesté    N)r   )r   c                 C   s   	 | dkr	t dƒ‚t | ¡S )Nr	   zUpper bound must be positive.)Ú
ValueErrorÚ_sysrandÚ
_randbelow)Zexclusive_upper_bound© r   ú/usr/lib/python3.10/secrets.pyr      s   
r   é    c                 C   s   	 | d u rt } t | ¡S ©N)ÚDEFAULT_ENTROPYr   Ú	randbytes©Únbytesr   r   r   r   "   s   	
r   c                 C   s   	 t  t| ƒ¡ d¡S )NÚascii)ÚbinasciiZhexlifyr   Údecoder   r   r   r   r   0   s   
r   c                 C   s    	 t | ƒ}t |¡ d¡ d¡S )Nó   =r   )r   Úbase64Zurlsafe_b64encodeÚrstripr   )r   Útokr   r   r   r   =   s   	r   r   )Ú__all__r   r   Úhmacr   Úrandomr   r   Úgetrandbitsr   r   r   r   r   r   r   r   r   r   r   Ú<module>   s    

