a
    ç´«jÏB  ã                )   @   sˆ  d dl Z d dlZd dlmZmZmZ d dlmZ dZdZ	dZ
dZede	d	e
dediZed
e	de
dediZede	de
ded
iZdZe de e¡ d ¡ZddddœZg ddgddgddgddgddgg d¢g d¢g d¢g d¢g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g d4¢g d5¢g d6¢g d7¢g d8¢g d9¢g d:¢g d;¢g(Zd<Zd=Zd>Zd?Zd@ZdAdB„ ZdCdD„ edƒD ƒZdEdF„ ZdGdH„ ZdIdJ„ ZdKdL„ Z dMdN„ Z!dOdP„ Z"dQdR„ Z#dSdT„ Z$dUdV„ Z%dWdX„ Z&dYdZ„ Z'd[d\„ Z(d]d^„ Z)dpd_d`„Z*dadb„ Z+dcdd„ Z,dedf„ Z-G dgdh„ dhƒZ.G didj„ djƒZ/e/e0e dkœdldm„Z1dndo„ Z2dS )qé    N)ÚLUTÚbaseÚ
exceptions)ÚRSBlocké   é   é   é   é
   é	   é   é   é   é   é   s-   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:s   ^[s   ]*\Zé   )é   r   r   é   é   é   é   é   é"   )r   r   é&   )r   é   é*   )r   r   é.   )r   é   é2   )r   r   é6   )r   é    é:   )r   r   é>   )r   r   r   éB   )r   r   é0   éF   )r   r   r   éJ   )r   r   r   éN   )r   r   é8   éR   )r   r   r!   éV   )r   r   r"   éZ   )r   r   r   éH   é^   )r   r   r   r&   éb   )r   r   r   r'   éf   )r   r   r   éP   éj   )r   r    r!   éT   én   )r   r   r!   r*   ér   )r   r   r"   r+   év   )r   r   r   r&   r.   éz   )r   r   r   r'   r/   é~   )r   r   é4   r'   éh   é‚   )r   r   r(   r)   él   é†   )r   r   é<   r*   ép   éŠ   )r   r   r!   r*   r4   éŽ   )r   r   r"   r+   r5   é’   )r   r   r   r'   r/   r7   é–   )r   r   r   éL   r/   é€   éš   )r   r   r   r0   r1   é„   éž   )r   r    r!   r2   r3   éˆ   é¢   )r   r   r   r)   r3   r?   é¦   )r   r   r!   r*   r4   r@   éª   i7  i%  iT  éì   é   c                 C   s   | j S ©N©Ú
data_count)Úblock© rR   úJ/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/qrcode/util.pyÚ_data_countd   s    rT   c                    s*   g | ]"‰ d g‡ fdd„t ddƒD ƒ ‘qS )r   c              
      s&   g | ]}d t ttt |ˆ ¡ƒƒ ‘qS )r	   )ÚsumÚmaprT   r   Ú	rs_blocks)Ú.0Úversion©Úerror_correctionrR   rS   Ú
<listcomp>j   s   ÿz<listcomp>.<listcomp>r   é)   )Úrange)rX   rR   rZ   rS   r\   h   s   û
þÿr\   c                 C   sF   | d> }t |ƒt tƒ dkr6|tt |ƒt tƒ > N }q| d> |B tA S )Nr
   r   )Ú	BCH_digitÚG15ÚG15_MASK©ÚdataÚdrR   rR   rS   ÚBCH_type_infor   s    re   c                 C   sB   | d> }t |ƒt tƒ dkr6|tt |ƒt tƒ > N }q| d> |B S )Nr   r   )r_   ÚG18rb   rR   rR   rS   ÚBCH_type_numberz   s    rg   c                 C   s"   d}| dkr|d7 }| dL } q|S )Nr   r   rR   )rc   ÚdigitrR   rR   rS   r_   �   s
    
r_   c                 C   s   t | d  S ©Nr   )ÚPATTERN_POSITION_TABLE©rY   rR   rR   rS   Úpattern_position‰   s    rl   c                 C   s�   | dkrdd„ S | dkr dd„ S | dkr0dd„ S | dkr@d	d„ S | d
krPdd„ S | dkr`dd„ S | dkrpdd„ S | dkr€dd„ S t d|  ƒ‚dS )z>
    Return the mask function for the given mask pattern.
    r   c                 S   s   | | d dkS ©Nr   r   rR   ©ÚiÚjrR   rR   rS   Ú<lambda>’   ó    zmask_func.<locals>.<lambda>r   c                 S   s   | d dkS rm   rR   rn   rR   rR   rS   rq   ”   rr   r   c                 S   s   |d dkS ©Nr   r   rR   rn   rR   rR   rS   rq   –   rr   r   c                 S   s   | | d dkS rs   rR   rn   rR   rR   rS   rq   ˜   rr   r   c                 S   s$   t  | d ¡t  |d ¡ d dkS ©Nr   r   r   )ÚmathÚfloorrn   rR   rR   rS   rq   š   rr   é   c                 S   s   | | d | | d  dkS rt   rR   rn   rR   rR   rS   rq   œ   rr   r   c                 S   s    | | d | | d  d dkS rt   rR   rn   rR   rR   rS   rq   ž   rr   r   c                 S   s    | | d | | d  d dkS )Nr   r   r   rR   rn   rR   rR   rS   rq       rr   zBad mask pattern: N)Ú	TypeError)ÚpatternrR   rR   rS   Ú	mask_func�   s"    rz   c                 C   s    | dk rt S | dk rtS tS d S )Nr
   é   )ÚMODE_SIZE_SMALLÚMODE_SIZE_MEDIUMÚMODE_SIZE_LARGErk   rR   rR   rS   Úmode_sizes_for_version¤   s
    r   c                 C   s4   | t tttfvr td| › d�ƒ‚t|ƒ t|ƒ|  S )NúInvalid mode (ú))ÚMODE_NUMBERÚMODE_ALPHA_NUMÚMODE_8BIT_BYTEÚ
MODE_KANJIrx   Úcheck_versionr   )ÚmoderY   rR   rR   rS   Úlength_in_bits­   s    rˆ   c                 C   s$   | dk s| dkr t d| › d�ƒ‚d S )Nr   é(   zInvalid version (was z, expected 1 to 40))Ú
ValueErrorrk   rR   rR   rS   r†   ¶   s    r†   c                 C   sD   t | ƒ}d}t| |ƒ}|t| |ƒ7 }|t| |ƒ7 }|t| |ƒ7 }|S ©Nr   )ÚlenÚ_lost_point_level1Ú_lost_point_level2Ú_lost_point_level3Ú_lost_point_level4)ÚmodulesÚmodules_countÚ
lost_pointrR   rR   rS   r“   »   s    
r“   c           	         s:  d}t |ƒ}dg|d  ‰ |D ]t}| | }|d }d}|D ]>}|| |krT|d7 }q:|dkrlˆ |  d7  < d}|| }q:|dkrˆ |  d7  < q|D ]x}| d | }d}|D ]F}| | | |krÎ|d7 }q°|dkræˆ |  d7  < d}| | | }q°|dkr˜ˆ |  d7  < q˜|t‡ fdd„t d|d ƒD ƒƒ7 }|S )Nr   r   rw   c                 3   s   | ]}ˆ | |d   V  qdS )r   NrR   )rX   Zeach_length©Ú	containerrR   rS   Ú	<genexpr>ë   s   ÿz%_lost_point_level1.<locals>.<genexpr>)r^   rU   )	r‘   r’   r“   Úmodules_rangeÚrowÚthis_rowZprevious_colorÚlengthÚcolrR   r”   rS   r�   È   s@    


þ
r�   c           
      C   s”   d}t |d ƒ}|D ]z}| | }| |d  }t|ƒ}|D ]T}||d  }	|	||d  krdt|d ƒ q8|	|| krtq8q8|	|| kr„q8q8|d7 }q8q|S )Nr   r   r   ©r^   ÚiterÚnext)
r‘   r’   r“   r—   r˜   r™   Znext_rowZmodules_range_iterr›   Ú	top_rightrR   rR   rS   rŽ   ó   s     rŽ   c           	      C   sÈ  t |ƒ}t |d ƒ}d}|D �]&}| | }t|ƒ}d}|D �]}||d  �s,||d  �r,||d  �s,||d  �r,||d  �s,||d  rÐ||d  rÐ||d	  rÐ||d
  sÐ||d  sÐ||d  �r$||d  �s,||d  �s,||d	  �s,||d
  �r,||d  �r,||d  �r,|d7 }||d  r:t|d ƒ q:q|D �]v}t|ƒ}d}|D �]\}| |d  | �s | |d  | �r | |d  | �s | |d  | �r | |d  | �s | |d  | �r,| |d  | �r,| |d	  | �r,| |d
  | �s,| |d  | �s,| |d  | �r˜| |d  | �s | |d  | �s | |d	  | �s | |d
  | �r | |d  | �r | |d  | �r |d7 }| |d  | �r`t|d ƒ �q`�qJ|S )Nr
   r   r   r   rw   r   r   r   r   r   r	   r‰   rœ   )	r‘   r’   r—   Zmodules_range_shortr“   r˜   r™   Zmodules_range_short_iterr›   rR   rR   rS   r�     s®    


ÿ
þ
ý
ü
û
ù
ø	
÷

ö
õ
ô
ó
ò
ñ
ð
ï
î

ÿþýüûùø	÷
öõôóòñðïîr�   c                 C   s>   t tt | ƒƒ}t|ƒ|d  }tt|d d ƒd ƒ}|d S )Nr   éd   r   rw   r
   )rU   rV   ÚfloatÚintÚabs)r‘   r’   Z
dark_countÚpercentZratingrR   rR   rS   r�   Z  s    r�   c                 c   sä   t | ƒ} d}dt t¡ d }t| ƒ|krPt d| d ¡}t d| d ¡}n2dt|ƒ d¡ d }t || ¡}t || ¡}t| |ƒ}|D ]N\}}|r®t	|t
d	d
�V  q�t||ƒD ]$\}}	|rÈtnt}
t	|	|
d	d
�V  q¸q�dS )z›
    An iterator returning QRData chunks optimized to the data content.

    :param minimum: The minimum number of bytes in a row to split as a chunk.
    s   \dó   [ó   ]ó   ^s   +$ó   {Úasciis   ,}F)r‡   Ú
check_dataN)Úto_bytestringÚreÚescapeÚ	ALPHA_NUMrŒ   ÚcompileÚstrÚencodeÚ_optimal_splitÚQRDatar‚   rƒ   r„   )rc   ÚminimumZnum_patternZalpha_patternZ	re_repeatZnum_bitsZis_numÚchunkZis_alphaZ	sub_chunkr‡   rR   rR   rS   Úoptimal_data_chunksb  s     
r¶   c                 c   sp   | r^t  || ¡}|sq^| ¡ | ¡  }}|r>d| d |… fV  d| ||… fV  | |d … } q | rld| fV  d S )NFT)r¬   ÚsearchÚstartÚend)rc   ry   Úmatchr¸   r¹   rR   rR   rS   r²   |  s    r²   c                 C   s   t | tƒst| ƒ d¡} | S )z^
    Convert data to a (utf-8 encoded) byte-string if it isn't a byte-string
    already.
    zutf-8)Ú
isinstanceÚbytesr°   r±   ©rc   rR   rR   rS   r«   Š  s    
r«   c                 C   s   |   ¡ rtS t | ¡rtS tS )z<
    Calculate the optimal mode for this chunk of data.
    )Úisdigitr‚   ÚRE_ALPHA_NUMrº   rƒ   r„   r½   rR   rR   rS   Úoptimal_mode”  s
    
rÀ   c                   @   s2   e Zd ZdZddd„Zdd„ Zdd	„ Zd
d„ ZdS )r³   zS
    Data held in a QR compatible format.

    Doesn't currently handle KANJI.
    NTc                 C   sl   |rt |ƒ}|du r t|ƒ| _nB|| _|tttfvrDtd|› d�ƒ‚|rb|t|ƒk rbtd|› �ƒ‚|| _dS )zg
        If ``mode`` isn't provided, the most compact QR data type possible is
        chosen.
        Nr€   r�   z-Provided data can not be represented in mode )	r«   rÀ   r‡   r‚   rƒ   r„   rx   rŠ   rc   )Úselfrc   r‡   rª   rR   rR   rS   Ú__init__¦  s    zQRData.__init__c                 C   s
   t | jƒS rN   )rŒ   rc   ©rÁ   rR   rR   rS   Ú__len__¹  s    zQRData.__len__c                 C   sð   | j tkrRtdt| jƒdƒD ]2}| j||d … }tt|ƒ }| t|ƒ|¡ qnš| j tkrÐtdt| jƒdƒD ]^}| j||d … }t|ƒdkrº| t	 
|d ¡d t	 
|d ¡ d¡ qn| t	 
|¡d¡ qnn| j}|D ]}| |d¡ qÚd S )	Nr   r   r   r   é-   r   r   r	   )r‡   r‚   r^   rŒ   rc   ÚNUMBER_LENGTHÚputr¢   rƒ   r®   Úfind)rÁ   Úbufferro   ÚcharsÚ
bit_lengthrc   ÚcrR   rR   rS   Úwrite¼  s     

 ÿzQRData.writec                 C   s
   t | jƒS rN   )Úreprrc   rÃ   rR   rR   rS   Ú__repr__Ò  s    zQRData.__repr__)NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÂ   rÄ   rÍ   rÏ   rR   rR   rR   rS   r³   Ÿ  s
   
r³   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	BitBufferc                 C   s   g | _ d| _d S r‹   )rÉ   rš   rÃ   rR   rR   rS   rÂ   ×  s    zBitBuffer.__init__c                 C   s   d  dd„ | jD ƒ¡S )NÚ.c                 S   s   g | ]}t |ƒ‘qS rR   )r°   )rX   ÚnrR   rR   rS   r\   Ü  rr   z&BitBuffer.__repr__.<locals>.<listcomp>)ÚjoinrÉ   rÃ   rR   rR   rS   rÏ   Û  s    zBitBuffer.__repr__c                 C   s,   t  |d ¡}| j| d|d  ? d@ dkS )Nr	   r   r   )ru   rv   rÉ   )rÁ   ÚindexÚ	buf_indexrR   rR   rS   ÚgetÞ  s    zBitBuffer.getc                 C   s0   t |ƒD ]"}|  ||| d ? d@ dk¡ qd S ri   )r^   Úput_bit)rÁ   Únumrš   ro   rR   rR   rS   rÇ   â  s    zBitBuffer.putc                 C   s   | j S rN   )rš   rÃ   rR   rR   rS   rÄ   æ  s    zBitBuffer.__len__c                 C   sV   | j d }t| jƒ|kr$| j d¡ |rD| j|  d| j d ? O  < |  j d7  _ d S )Nr	   r   rD   r   )rš   rŒ   rÉ   Úappend)rÁ   ÚbitrÙ   rR   rR   rS   rÛ   é  s    
zBitBuffer.put_bitN)	rÐ   rÑ   rÒ   rÂ   rÏ   rÚ   rÇ   rÄ   rÛ   rR   rR   rR   rS   rÔ   Ö  s   rÔ   )rÉ   rW   c              	      s¢  d‰d}d}g }g }|D �]}|j }|j| }t||ƒ}t||ƒ}‡ ‡fdd„t|ƒD ƒ}	ˆ|7 ‰|tjv r€t tj| d¡}
n6t dgd¡}
t|ƒD ]}|
t dt |¡gd¡ }
q–t |	t	|
ƒd ¡}||
 }g }t	|ƒ| }t|ƒD ](}|| }| 
|dk�r|| nd¡ qê| 
|	¡ | 
|¡ qg }t|ƒD ].}|D ]"}|t	|ƒk �r>| 
|| ¡ �q>�q6t|ƒD ].}|D ]"}|t	|ƒk �rv| 
|| ¡ �qv�qn|S )Nr   c                    s   g | ]}d ˆ j |ˆ  @ ‘qS )éÿ   )rÉ   )rX   ro   ©rÉ   ÚoffsetrR   rS   r\     rr   z create_bytes.<locals>.<listcomp>r   )rP   Ztotal_countÚmaxr^   r   Z
rsPoly_LUTr   Z
PolynomialZgexprŒ   rÝ   )rÉ   rW   Z
maxDcCountZ
maxEcCountZdcdataZecdataZrs_blockZdcCountZecCountZ
current_dcZrsPolyro   ZrawPolyZmodPolyZ
current_ecZ
mod_offsetZmodIndexrc   ÚdcÚecrR   rà   rS   Úcreate_bytesò  sH    





rå   c                 C   s"  t ƒ }|D ]4}| |jd¡ | t|ƒt|j| ƒ¡ | |¡ q
t | |¡}tdd„ |D ƒƒ}t|ƒ|kr€t	 
dt|ƒ|f ¡‚tt|t|ƒ dƒƒD ]}| d¡ q–t|ƒd }|rÒtd| ƒD ]}| d¡ qÂ|t|ƒ d }	t|	ƒD ],}
|
d dk�r
| td¡ qê| td¡ qêt||ƒS )	Nr   c                 s   s   | ]}|j d  V  qdS )r	   NrO   )rX   rQ   rR   rR   rS   r–   /  rr   zcreate_data.<locals>.<genexpr>z:Code length overflow. Data size (%s) > size available (%s)Fr	   r   r   )rÔ   rÇ   r‡   rŒ   rˆ   rÍ   r   rW   rU   r   ZDataOverflowErrorr^   ÚminrÛ   ÚPAD0ÚPAD1rå   )rY   r[   Z	data_listrÉ   rc   rW   Z	bit_limitÚ_ÚdelimitZbytes_to_fillro   rR   rR   rS   Úcreate_data&  s2    
ÿÿrë   )r   )3ru   r¬   Zqrcoder   r   r   Zqrcode.baser   r‚   rƒ   r„   r…   r|   r}   r~   r®   r¯   r­   r¿   rÆ   rj   r`   rf   ra   rç   rè   rT   r^   ZBIT_LIMIT_TABLEre   rg   r_   rl   rz   r   rˆ   r†   r“   r�   rŽ   r�   r�   r¶   r²   r«   rÀ   r³   rÔ   Úlistrå   rë   rR   rR   rR   rS   Ú<module>   sÂ   üüüØ+ÿ
ú
		+L

74