
    BUhA                        U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZ eeee         Zi Zeeef   ed<   ddZd	 Zd
 Zd Zd Z G d de      Z ede      Z  ede      Z! G d dee          Z"y)    N)bisect_left)Generic
NamedTupleOptionalTypeVarcastoverloadLiteral)	constants
exceptionsutil)	BaseImage)
PyPNGImageprecomputed_qr_blanksc                 Z    t        di |}|j                  |        |j                         S )N )QRCodeadd_data
make_image)datakwargsqrs      L/var/www/html/profi_bot/bot/venv/lib/python3.12/site-packages/qrcode/main.pymaker      s'    		&	BKK==?    c                 >    t        |       dk  rt        d|  d      y )Nr   zInvalid box size (was z, expected larger than 0)int
ValueErrorsizes    r   _check_box_sizer"      s(    
4yA~1$7PQRR r   c                 <    t        |       dk  rt        d| z        y )Nr   z=Invalid border value (was %s, expected 0 or larger than that)r   r    s    r   _check_borderr$   !   s'    
4y1}KdR
 	
 r   c                     | y t        | t              st        dt        |        d      | dk  s| dkD  rt	        d|  d      y )NzInvalid mask pattern (was z, expected int)r      z(Mask pattern should be in range(8) (got ))
isinstancer   	TypeErrortyper   )mask_patterns    r   _check_mask_patternr,   (   s`    lC((l);(<OL
 	
 a<!+CL>QRSTT ,r   c                 2    | D cg c]  }|d d  	 c}S c c}w Nr   )xrows     r   copy_2d_arrayr1   3   s     asCFa   s   c                   t    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   d
efdZy)ActiveWithNeighborsNWNNEWmeESWSSEreturnc                     | j                   S r.   )r8   selfs    r   __bool__zActiveWithNeighbors.__bool__B   s    wwr   N)__name__
__module____qualname__bool__annotations__rA   r   r   r   r3   r3   7   s;    HGHGHGHGH$ r   r3   GenericImage)boundGenericImageLocalc                      e Zd ZU eed<   dZee   ed<   dej                  ddddfdee
e      fdZedefd	       Zej                  d#d
       Zed        Zej                  d        Zd Zd$dZd%dZd Zd Zd&dZd Zd&dZd'dZe	 d&ded   defd       Ze	 d&de
e   defd       Zd&dZdededefdZd Z d Z!d Z"d Z#d  Z$d! Z%dedede&fd"Z'y)(r   modulesN_version
      image_factoryc                    t        |       t        |       || _        t        |      | _        t        |      | _        t        |      | _        || _        || _        |t        |t              sJ | j                          y r.   )r"   r$   versionr   error_correctionbox_sizeborderr+   rO   
issubclassr   clear)r@   rQ   rR   rS   rT   rO   r+   s          r   __init__zQRCode.__init__N   sp     	!f #$4 5H &k(*$mY777

r   r=   c                 n    | j                   | j                          t        t        | j                         S r.   )rL   best_fitr   r   r?   s    r   rQ   zQRCode.versione   s&    == MMOC''r   c                 V    | t        |      }t        j                  |       || _        y r.   )r   r   check_versionrL   )r@   values     r   rQ   zQRCode.versionk   s&    JEu%r   c                     | j                   S r.   )_mask_patternr?   s    r   r+   zQRCode.mask_patternr   s    !!!r   c                 (    t        |       || _        y r.   )r,   r^   )r@   patterns     r   r+   zQRCode.mask_patternv   s    G$$r   c                 >    g g| _         d| _        d| _        g | _        y)z*
        Reset the internal data.
        r   N)rK   modules_count
data_cache	data_listr?   s    r   rV   zQRCode.clear{   s#     tr   c                 \   t        |t        j                        r#| j                  j	                  |       d| _        y|r8| j                  j                  t        j                  ||             d| _        y| j                  j	                  t        j                  |             d| _        y)a  
        Add data to this QR Code.

        :param optimize: Data will be split into multiple chunks to optimize
            the QR size by finding to more compressed modes of at least this
            length. Set to ``0`` to avoid optimizing at all.
        )minimumN)r(   r   QRDatard   appendextendoptimal_data_chunksrc   )r@   r   optimizes      r   r   zQRCode.add_data   s~     dDKK(NN!!$'
 	 NN!!$":":4"RS  NN!!$++d"34r   c                     |s| j                   | j                  | j                          | j                  !| j                  d| j	                                y| j                  d| j                         y)z
        Compile the data into a QR Code array.

        :param fit: If ``True`` (or if a size has not been provided), find the
            best fit for the data to avoid data overflow errors.
        NstartF)rQ   rY   r+   makeImplbest_mask_pattern)r@   fits     r   r   zQRCode.make   sY     4<<'MMM-$MM%!7!7!9:MM%!2!23r   c                 d   | j                   dz  dz   | _        | j                   t        v r"t        t        | j                            | _        nt        | j                        D cg c]  }d g| j                  z   c}| _        | j                  dd       | j                  | j                  dz
  d       | j                  d| j                  dz
         | j                          | j                          t        | j                        t        | j                   <   | j                  ||       | j                   dk\  r| j                  |       | j                  :t        j                  | j                   | j                  | j                        | _        | j!                  | j                  |       y c c}w )NrN      r   r&   )rQ   rb   r   r1   rK   rangesetup_position_probe_patternsetup_position_adjust_patternsetup_timing_patternsetup_type_infosetup_type_numberrc   r   create_datarR   rd   map_data)r@   testr+   is       r   ro   zQRCode.makeImpl   s]   !\\A-2<<00()>t||)LMDL 6;4;M;M5N5N+++5NDL --a3--d.@.@1.DaH--a1C1Ca1GH..0%%'2?2M!$,,/T<0<<1""4(??""..d33T^^DO 	doo|4)s   #F-c                    t        dd      D ]  }||z   dk  s| j                  ||z   k  rt        dd      D ]  }||z   dk  s| j                  ||z   k  rd|cxk  rdk  rn n|dv s.d|cxk  rdk  rn n|dv sd|cxk  rdk  r*n n'd|cxk  rdk  rn nd| j                  ||z      ||z   <   wd	| j                  ||z      ||z   <     y )
N   r      >   r   r      rN   TFrt   rb   rK   )r@   r0   colrcs        r   ru   z#QRCode.setup_position_probe_pattern   s    r1AQw"} 2 2cAg =2q\7b=D$6$6#'$A ![q[Q&[Q!VQ!Q!59DLLq)#'25:DLLq)#'2 "	 r   c                    |d}t        j                  |       t        j                  |      }t        j                         }| j                  D ]W  }|j                  |j                  d       |j                  t        |      ||j                            |j                  |       Y t        |      }t        t         j                  | j                     ||      | _        | j                  dk(  rt        j                         |t        j                  | j                        ur| j                  | j                         | j                  S )zD
        Find the minimum size required to fit in the data.
           rN   )   rm   )r   r[   mode_sizes_for_version	BitBufferrd   putmodelenwriter   BIT_LIMIT_TABLErR   rQ   r   DataOverflowErrorrY   )r@   rn   
mode_sizesbufferr   needed_bitss         r   rY   zQRCode.best_fit   s    =E5! 007
!NNDJJtyy!$JJs4y*TYY"78JJv #
 &k"  !6!67e
 <<2..00 T88FFMMM-||r   c                     d}d}t        d      D ]B  }| j                  d|       t        j                  | j                        }|dk(  s||kD  s?|}|}D |S )z7
        Find the most efficient mask pattern.
        r   r   T)rt   ro   r   
lost_pointrK   )r@   min_lost_pointr`   r}   r   s        r   rp   zQRCode.best_mask_pattern   s[     qAMM$"6JAv*4!+  r   c                 <   |ddl }|j                  }|j                         st        d      | j                  | j                          | j                  }|j                  dd|dz  dz   z  z   dz          t        |      D ]i  }|j                  d	       t        |      D ]7  }| j                  |   |   r|j                  d
       '|j                  d	       9 |j                  d       k |j                  dd|dz  dz   z  z   dz          |j                          y)zz
        Output the QR Code only using TTY colors.

        If the data has not been compiled yet, make it first.
        Nr   	Not a ttyz[1;47m r   rN   z[0m
z[1;47m  [40mz  z[1;47m  [0m
)sysstdoutisattyOSErrorrc   r   rb   r   rt   rK   flush)r@   outr   modcountr   r   s         r   	print_ttyzQRCode.print_tty   s     ;**Czz|+&&??"IIK%%		,#A)9":;kIJxAII,-8_<<?1%IIdOII45	 %
 II-. ! 			,#A)9":;kIJ		r   c                 8   
 |t         j                  }|r|j                         st        d       j                   j                           j                  
dD cg c]  }t        |f      j                  d       }}|rdr|j                          dt        f
 fd}t         j                   
 j                  z   d      D ]  }|r9r|
 j                  z   d	z
  k  r|j                  d
       |j                  d       t         j                   
 j                  z         D ]/  } |||       ||d	z   |      d	z  z   }	|j                  ||	          1 |r|j                  d       |j                  d        |j                          yc c}w )z
        Output the QR Code using ASCII characters.

        :param tty: use fixed TTY color codes (forces invert=True)
        :param invert: invert the ASCII characters (solid <-> transparent)
        Nr   )            cp437Tr=   c                     r)j                   rt        | |      j                   z   k\  ryt        | |      dk  st        | |      k\  ryt        t        j
                  |    |         S )Nr   r   )rT   maxminr   r   rK   )r/   yinvertr   r@   s     r   
get_modulez&QRCode.print_ascii.<locals>.get_module5  s\    $++#a)x$++7M*M1ay1}Aq	X 5T\\!_Q/00r   r   r   z[48;5;232mz[38;5;255mz[0m
)r   r   r   r   rc   r   rb   bytesdecodereverser   rt   rT   r   r   )r@   r   ttyr   codecodesr   r   r   posr   s   `  `      @r   print_asciizQRCode.print_ascii  sg    ;**Cszz|+&&??"IIK%%<PQ<PDw&&w/<PQFMMO	1 	1 |X%;Q?AX%;a%?!?II./		*+DKK<DKK)?@ A&*QUA*>!*CD		%*% A 		)$IIdO @ 			1 Rs   "Fc                      y r.   r   r@   rO   r   s      r   r   zQRCode.make_imageI  s     r   c                      y r.   r   r   s      r   r   zQRCode.make_imageN  s      r   c                 V   |j                  d      s3|j                  d      s"|j                  d      s|j                  d      r(| j                  t        j                  k7  rt	        d      t        | j                         | j                  | j                          |t        |t              s"J | j                  }|ddlm}m} |r|nt        } || j                   | j"                  | j                  fd| j$                  i|}|j&                  rzt)        | j"                        D ]b  }t)        | j"                        D ]H  }|j*                  r|j-                  ||| 	       $| j$                  |   |   s7|j/                  ||       J d |j0                  r|j3                          |S )
zu
        Make an image from the QR Code data.

        If the data has not been compiled yet, make it first.
        embedded_image_pathembedded_imageembeded_image_pathembeded_imagezOError correction level must be ERROR_CORRECT_H if an embedded image is providedr   )ImagePilImageqrcode_modules)r   )getrR   r   ERROR_CORRECT_Hr   r"   rS   rc   r   rU   r   rO   qrcode.image.pilr   r   r   rT   rb   rK   needs_drawrectrt   needs_contextdrawrect_contextdrawrectneeds_processingprocess)r@   rO   r   r   r   imr   r   s           r   r   zQRCode.make_imageS  st    JJ,-zz*+zz./zz/*##y'@'@@a  	&??"IIK$mY777 ..M$< -2zKKMM
  <<	

 
 4--.t112A''++AqT+:a+Aq)	 3 / JJL	r   r0   r   c                     |dk\  xr< |t        | j                        k  xr" |dk\  xr |t        | j                  |         k  S )Nr   )r   rK   )r@   r0   r   s      r   is_constrainedzQRCode.is_constrained  sM    1H -c$,,''-q- c$,,s+,,		
r   c                 (   t        d| j                  dz
        D ]-  }| j                  |   d   |dz  dk(  | j                  |   d<   / t        d| j                  dz
        D ]-  }| j                  d   |   |dz  dk(  | j                  d   |<   / y )Nr   r   r   r   r   )r@   r   r   s      r   rw   zQRCode.setup_timing_pattern  s    q$,,q01A||Aq!-!"Q!DLLOA 2
 q$,,q01A||Aq!-!"Q!DLLOA 2r   c                    t        j                  | j                        }t        t	        |            D ]  }||   }t        t	        |            D ]  }||   }| j
                  |   |   t        dd      D ]b  }t        dd      D ]Q  }|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  r|dk(  rd| j
                  ||z      ||z   <   :d| j
                  ||z      ||z   <   S d   y )N   r   r   TF)r   pattern_positionrQ   rt   r   rK   )r@   r   r}   r0   jr   r   r   s           r   rv   z$QRCode.setup_position_adjust_pattern  s    ##DLL1s3xAa&C3s8_!f<<$S)5r1A"2q\G Av Bw Av !Q16=ADLLq1#':=BDLLq1#': * & % !r   c                 n   t        j                  | j                        }t        d      D ]=  }| xr ||z	  dz  dk(  }|| j                  |dz     |dz  | j
                  z   dz
  dz
  <   ? t        d      D ]=  }| xr ||z	  dz  dk(  }|| j                  |dz  | j
                  z   dz
  dz
     |dz  <   ? y )N   r   r   r   )r   BCH_type_numberrQ   rt   rK   rb   )r@   r|   bitsr}   mods        r   ry   zQRCode.setup_type_number  s    ##DLL1rA(5aA5CGJDLLa Q););!;a!?!!CD  rA(5aA5CGJDLLQ!3!33a7!;<Q!VD r   c                 ~   | j                   dz  |z  }t        j                  |      }t        d      D ]g  }| xr ||z	  dz  dk(  }|dk  r|| j                  |   d<   +|dk  r|| j                  |dz      d<   F|| j                  | j
                  dz
  |z      d<   i t        d      D ]s  }| xr ||z	  dz  dk(  }|dk  r#|| j                  d   | j
                  |z
  dz
  <   ;|dk  r|| j                  d   d|z
  dz
  dz   <   \|| j                  d   d|z
  dz
  <   u | | j                  | j
                  dz
     d<   y )Nr      r   r   r   	   )rR   r   BCH_type_infort   rK   rb   )r@   r|   r+   r   r   r}   r   s          r   rx   zQRCode.setup_type_info  s]   %%*l:!!$' rA(5aA5C1u%(Q"Q),QU#A&?BT//"4q89!<  rA(5aA5C1u>AQ 2 2Q 6 :;Q25QQ
Q/.1QQ
+  7;(T''!+,Q/r   c                    d}| j                   dz
  }d}d}t        j                  |      }t        |      }t	        | j                   dz
  dd      D ]  }	|	dk  r|	dz  }	|	|	dz
  f}
	 |
D ]Z  }| j
                  |   |   d}||k  r||   |z	  dz  dk(  } |||      r| }|| j
                  |   |<   |dz  }|dk(  sT|dz  }d}\ ||z  }|dk  s| j                   |k  r	||z  }| } y )Nr   r   r&   r   r   r   F)rb   r   	mask_funcr   rt   rK   )r@   r   r+   incr0   bitIndex	byteIndexr   data_lenr   	col_ranger   darks                r   r{   zQRCode.map_data  s2     1$	NN<0	t9++a/B7CaxqcAgI"A||C(+3$$x/%))_%@A$E!#KD$S!,'+8D/3S)!, A#r>%NI'(H #" s
7d00C73JC$C/  8r   c                    | j                   | j                          | j                  s| j                  S t	        | j                        | j                  dz  z   }dg|z  g| j                  z  }dg| j                  z  }| j                  D ].  }|j                  |t        t        t           |      z   |z          0 |dg|z  g| j                  z  z  }|S )z
        Return the QR Code as a multidimensional array, including the border.

        To return the array without a border, set ``self.border`` to 0 first.
        r   F)	rc   r   rT   rK   r   rh   r   listrE   )r@   widthr   x_bordermodules        r   
get_matrixzQRCode.get_matrix  s     ??"IIK{{<<DLL!DKK!O3% 4;;.7T[[(llFKK4T
F#;;hFG #%5!DKK//r   c                     g }t        |dz
  |dz         D ]W  }t        |dz
  |dz         D ]@  }|j                  | j                  ||      xr t        | j                  |   |                B Y t        | S )Nr   r   )rt   rh   r   rE   rK   r3   )r@   r0   r   contextr   r   s         r   active_with_neighborszQRCode.active_with_neighbors  sw     sQwa(A37C!G,t221a8UT$,,q/RSBT=UV - ) #G,,r   )r=   N)   )Tr.   )NFF)(rB   rC   rD   ModulesTyperF   rL   r   r   r   ERROR_CORRECT_Mr*   rG   rW   propertyrQ   setterr+   rV   r   r   ro   ru   rY   rp   r   r   r	   r
   r   rI   rE   r   rw   rv   ry   rx   r{   r   r3   r   r   r   r   r   r   J   s   "Hhsm" "226:  \ 23. ( ( (
 ^^  " " % % 458;$<$<)V -1$T]	  7; !"34 	   0f
# 
C 
D 
	,C2	K;:'R*- -3 -;N -r   r   r.   )#r   bisectr   typingr   r   r   r   r   r	   r
   qrcoder   r   r   qrcode.image.baser   qrcode.image.purer   r   rE   r   r   dictr   rF   r   r"   r$   r,   r1   r3   rG   rI   r   r   r   r   <module>r      s    
    / . ' (4'(02 tC,- 2S

U!*  ~Y7/yA S-W\" S-r   