
¿«‘_È  ã               @   sÈ   d  d l  Z  d  d l Z d  d l Z d d l m Z d d l m Z d d d d „ Z d	 d
 „  Z d d „  Z	 e j
 e j d j d ƒ Z e j d ƒ Z e j Z e j Z d d „  Z d d „  Z d S)é    Né   )Ú	text_type)ÚBadDatazutf-8Ústrictc             C   s%   t  |  t ƒ r! |  j | | ƒ }  |  S)N)Ú
isinstancer   Úencode)ÚsÚencodingÚerrors© r   ú=/tmp/pip-build-5gj8f0j9/itsdangerous/itsdangerous/encoding.pyÚ
want_bytes	   s    r   c             C   s"   t  |  ƒ }  t j |  ƒ j d ƒ S)z^Base64 encode a string of bytes or text. The resulting bytes are
    safe to use in URLs.
    ó   =)r   Úbase64Úurlsafe_b64encodeÚrstrip)Ústringr   r   r   Úbase64_encode   s    r   c             C   sm   t  |  d d d d ƒ}  |  d t |  ƒ d 7}  y t j |  ƒ SWn$ t t f k
 rh t d ƒ ‚ Yn Xd S)	zOBase64 decode a URL-safe string of bytes or text. The result is
    bytes.
    r	   Úasciir
   Úignorer   é   zInvalid base64-encoded dataN)r   Úlenr   Úurlsafe_b64decodeÚ	TypeErrorÚ
ValueErrorr   )r   r   r   r   Úbase64_decode   s    r   z-_=r   z>Qc             C   s   t  |  ƒ j d ƒ S)Ns    )Ú_int_to_bytesÚlstrip)Únumr   r   r   Úint_to_bytes,   s    r   c             C   s   t  |  j d d ƒ ƒ d S)Né   s    r   )Ú_bytes_to_intÚrjust)Zbytestrr   r   r   Úbytes_to_int0   s    r#   )r   r   ÚstructÚ_compatr   Úexcr   r   r   r   Úascii_lettersÚdigitsr   Z_base64_alphabetÚStructZ_int64_structÚpackr   Úunpackr!   r   r#   r   r   r   r   Ú<module>   s   		