
    =wg	                     v    d Z ddlZddlmZ dZi Z e ee            D ]
  Zeeee   <    d	dZ	d Z
d	dZd Zy)
z
This module contains generic base85 encoding and decoding functions. The
whoosh.util.numeric module contains faster variants for encoding and
decoding integers.

Modified from:
http://paste.lisp.org/display/72815
    N)xrangezU!$%&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_abcdefghijklmnopqrstuvwxyz{|}~c                 ^    |rdnd}d}t        |      D ]  }t        | dz     |z   }| dz  }  |S )z(Encodes the given integer using base 85.
       U   )r   b85chars)xislongsizeremsis        L/var/www/horilla/myenv/lib/python3.12/site-packages/whoosh/support/base85.py	to_base85r      sH     2QDDD\ B$&	b K    c                 6    d}| D ]  }|dz  t         |   z   } |S )z/Decodes the given base 85 text into an integer.r   r   )b85dec)textacccs      r   from_base85r   &   s/     C #Bh"#Jr   c                    t        |       }|dz  }|r| dd|z
  z  z  } t        |       dz	  }g }t        j                  dd|z  z   | d|dz         }|D ]=  }g d}t        ddd      D ]  }	t        |d	z     ||	<   |d	z  } |j                  |       ? d
j                  |      }|r|S |dz  }
|
r|
dz  }
|
|dz  dz  z  }
|d|
 S )N       >Lr   )r   r   r   r   r   r   r      r   )lenstructunpackranger	   extendjoin)r   padlrlongsoutwordswordr   r   olens              r   	b85encoder.   1   s    D	A	AAAINE
CMM#e+T!EAI->?E q"b! 	Atby)DGBJD	 	

4 ''#,C

 q5D	AEAIDq;r   c                    t        |       }g }t        dt        |       d      D ]\  }| ||dz    }d}t        t        |            D ]  }	 |dz  t        ||      z   } |dkD  rt        d|z        |j                  |       ^ |dz  }|r#dd|z
  z  z  }|dkD  r|d|d	z
  d
z  z	  z  }||d<   t        j                  dd|dz   dz  z  z   g| }|r	|d d|z
    }|S # t        $ r t	        d||z   z        w xY w)Nr   r   r   zBad base85 character at byte %dl    z+Base85 overflow in hunk starting at byte %dr   i r      r   r   r   r   )	r    r#   r   KeyError	TypeErrorOverflowErrorappendr!   pack)r   r'   r*   r   chunkr   jcls           r   	b85decoder9   L   sK   D	A
C1c$i# 
Qq1us5z" 	MAMBha!11	M
  MPQ QRR

3
 
QB	ra"f~68Q!|++CB
++cCAEQ;//
6#
6C	*QV9oJ%  M AQU KLLMs   	CC7)F)__doc__r!   whoosh.compatr   r	   r   r#   r    r   r   r   r.   r9    r   r   <module>r=      sX      /		s8}	 AF8A;6r   