+
    bIiE                        ^ RI t ^ RIt ^ RIHt  ]  ! R R4      t ! R R]4      t ! R R	]4      t	 ! R
 R]4      t
 ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R  R!4      t]! R"4       U u. uF  q NK  	  up t]! R"4       U u. uF  q NK  	  up t]! ^4       F  t^],          ]]&   K  	  ]! ^R"4       FU  t]]^,
          ,          ]]^,
          ,          ,          ]]^,
          ,          ,          ]]^,
          ,          ,          ]]&   KW  	  ]! ^4       F  t]]]],          &   K  	   ! R# R$4      t ! R% R&4      t ! R' R(4      tR#    ^ RIHt  EL; i  ] d    ]t ELi ; iu up i u up i ))    N)zip_longest)izip_longestc                   f   a  ] tR t^%t o RtRt^ tR tR t]	R 4       t
R tR tR tR tR	 tR
tV tR# )QRNc                p    V P                   '       d   V P                  V4      '       g   \        hWn        R # N)valid
ValueErrordataselfr   s   &&ڍC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/graphics/barcode/qrencoder.py__init__QR.__init__*   s$    :::djj..	    c                ,    \        V P                  4      # r   lenr   r   s   &r   __len__
QR.__len__/       499~r   c                    V P                   f   ^ # \        \        V 4      \        V P                   4      4      w  rV\        V P                   4      ,          \        V P                   R V 4      ,           # r   )bitsdivmodr   sum)r   qrs   &  r   	bitlengthQR.bitlength2   sP    99c$iTYY03tyy>!C		"1$666r   c                    ^ Tu;8  d   ^
8  d   M MV P                   ^ ,          # V^8  d   V P                   ^,          # V^)8  d   V P                   ^,          # \        RV,           4      h)r   zUnknown version: )
lengthbitsr
   )r   vers   &&r   getLengthBitsQR.getLengthBits9   sY    s<R<??1%%2X??1%%2X??1%%,s233r   c                ,    \        V P                  4      # r   r   r   s   &r   	getLengthQR.getLengthB   r   r   c                ,    \        V P                  4      # r   )reprr   r   s   &r   __repr__QR.__repr__E   s    DIIr   c                    VP                  V P                  ^4       V P                  V4      pV'       d(   VP                  \        V P                  4      V4       R# R#    Nputmoder$   r   r   r   bufferversionlenbitss   &&& r   write_headerQR.write_headerH   sB    

499a $$W-JJs499~w0 r   c                   V P                  W4       \        \        V P                  4      .V P                  ,          !   F  p^ p^ p\        V P                  4       Fk  pW6,          f   K  V\        V P                  4      ,          pWPP                  P                  W6,          4      ,          pW@P                  V,          ,          pKm  	  VP                  WT4       K  	  R# r   N)r7   r   iterr   groupranger   charsindexr   r1   )r   r4   r5   gr   nis   &&&    r   writeQR.writeN   s    &*tDII/$**<=ADA4::&4#TZZ(A))!$//AIIaL(D	 '
 JJq >r   r   )__name__
__module____qualname____firstlineno__r	   r   r<   r   r   propertyr   r$   r'   r+   r7   rC   __static_attributes____classdictcell____classdict__s   @r   r   r   %   sP     EDE
 7 741
  
 r   r   c                   b    ] tR t^Zt]P
                  ! R4      P                  tRtRt	^t
^tRtRtR# )QRNumberz[0-9]*$
0123456789 N)r/      rS   )
         rF   rG   rH   rI   recompilematchr	   r>   r   r<   r2   r"   rK   rR   r   r   rP   rP   Z   s/    JJz"((EEDEDJr   rP   c                   b    ] tR t^bt]P
                  ! R4      P                  tRtRt	^t
^tRtRtR# )
QRAlphaNumz[-0-9A-Z $%*+./:]*$z-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:rR   N)      )	         rW   rR   r   r   r\   r\   b   s0    JJ-.44E<EDEDJr   r\   c                   <   a  ] tR t^jt o Rt^t^tRtR tR t	Rt
V tR# )
QR8bitBytec                n    \        V\        4      '       d   VP                  R 4      V n        R# Wn        R# )zutf-8N)
isinstanceunicodeencoder   r   s   &&r   r   QR8bitByte.__init__p   s$    dG$$G,DIIr   c                    V P                  W4       V P                   F6  p\        V\        4      '       d   \	        V4      pVP                  V^4       K8  	  R#    N)r7   r   re   strordr1   )r   r4   r5   cs   &&& r   rC   QR8bitByte.writev   sB    &*A!S!!FJJq! r   rE   Nrk   )rk      rq   )rF   rG   rH   rI   r   r<   r2   r"   r   rC   rK   rL   rM   s   @r   rc   rc   j   s(     DEDJ r   rc   c                   B   a  ] tR t^}t o Rt^t^tRtR tR t	R t
RtV tR# )QRKanjic                h     V P                  V4      V n        R#   \         d    \        R 4      hi ; i)zNot valid kanjiN)unicode_to_qrkanjir   UnicodeEncodeErrorr
   r   s   &&r   r   QRKanji.__init__   4    	0//5DI! 	0.//	0    1c           
        . p\        V4       F  w  r4 VP                  R 4      p \        \        V4      w  rET^,          T,          pRTu;8:  d   R8:  d3   M M/TR,          pTR,          ^,	          ^,          T^,          ,           pMVRTu;8:  d   R8:  d3   M M/TR	,          pTR,          ^,	          ^,          T^,          ,           pM\        RYT^,           R4      hTP                  T4       K  	  V#   \         d    Tw  rE Li ; i  \
         d,   p\        RYT^,           TP                  ^,          4      hRp?i\         d    \        RYT^,           R4      hi ; i)
z	shift-jisqrkanjiNillegal multibyte sequencei@  i     i@  i  i@  		enumeraterg   maprm   	TypeErrorrv   argsr
   appendr   r   codesrB   rn   des   &&     r   ru   QRKanji.unicode_to_qrkanji   sM   T?CAGHH[)c1+CA Q
A#V#V6za'4/AH=1&&V6za'4/AH=(DQqS)EG GLLO/ #0 ' ! CAa & M(DQqS!&&)LL G(DQqS)EG GG:   DC66DDDDE &D<<E 	E c                r    V P                  W4       V P                   F  pVP                  V^4       K  	  R# ra   Nr7   r   r1   r   r4   r5   r   s   &&& r   rC   QRKanji.write   ,    &*AJJq" r   rE   Nra   rk   rT   rU   )rF   rG   rH   rI   r   r<   r2   r"   r   ru   rC   rK   rL   rM   s   @r   rs   rs   }   s-     DEDJ08 r   rs   c                   H   a  ] tR t^t o Rt^t^tRtR tR t	R t
R tRtV tR# )	QRHanzic                h     V P                  V4      V n        R#   \         d    \        R 4      hi ; i)zNot valid hanziN)unicode_to_qrhanzir   rv   r
   r   s   &&r   r   QRHanzi.__init__   rx   ry   c           
        . p\        V4       F  w  r4 VP                  R 4      p \        \        V4      w  rET^,          T,          pRTu;8:  d   R8:  d3   M M/TR,          pTR,          ^,	          ^`,          T^,          ,           pMVRTu;8:  d   R8:  d3   M M/TR	,          pTR,          ^,	          ^`,          T^,          ,           pM\        RYT^,           R4      hTP                  T4       K  	  V#   \         d    Tw  rE Li ; i  \
         d,   p\        RYT^,           TP                  ^,          4      hRp?i\         d    \        RYT^,           R4      hi ; i)
gb2312qrhanziNr|   i  i  r}   i  i  i  r~   r   s   &&     r   r   QRHanzi.unicode_to_qrhanzi   sM   T?CAGHHX&c1+CA Q
A#V#V6za'4/AH=1&&V6za'4/AH=(DQqS)EG GLLO/ #0 ' ! CAa & M(DQqS!&&)LL G(DQqS)EG GGr   c                    VP                  V P                  ^4       VP                  ^^4       V P                  V4      pV'       d(   VP                  \        V P                  4      V4       R# R# r.   r0   r3   s   &&& r   r7   QRHanzi.write_header   sP    

499a 

1a$$W-JJs499~w0 r   c                r    V P                  W4       V P                   F  pVP                  V^4       K  	  R# r   r   r   s   &&& r   rC   QRHanzi.write   r   r   rE   Nr   r   )rF   rG   rH   rI   r   r<   r2   r"   r   r   r7   rC   rK   rL   rM   s   @r   r   r      s2     DEDJ081 r   r   c                   4   a  ] tR t^t o ^tRtR tR tRtV t	R# )QRECIc                J    ^ Tu;8  d   R8  g   M \        R4      hWn        R# )r   i?B zECI out of rangeN)r
   r   r   s   &&r   r   QRECI.__init__   s     4 & /00	r   c                ^   V P                  W4       V P                  ^8:  d   VP                  V P                  ^4       R# V P                  R8:  d&   VP                  V P                  R,          ^4       R# V P                  R8:  d&   VP                  V P                  R,          ^4       R# R# )   i?  i   i i   Nr   r   r4   r5   s   &&&r   rC   QRECI.write   sy    &*99JJtyy!$YY& JJtyy6)2.YY("JJtyy8+R0 #r   rE   Nr   r   r   
rF   rG   rH   rI   r2   r"   r   rC   rK   rL   rM   s   @r   r   r      s     DJ1 1r   r   c                   4   a  ] tR t^t o ^tRtR tR tRtV t	R# )QRStructAppendc                    ^ Tu;8  d   ^8:  g   M \        R4      h^ Tu;8  d   ^8:  g   M \        R4      hWn        W n        W0n        R# )r   zpart out of range [1,16]ztotal out of range [1,16]N)r
   parttotalparity)r   r   r   r   s   &&&&r   r   QRStructAppend.__init__   s?    4~2~7885B899	
r   c                    V P                  W4       VP                  V P                  ^4       VP                  V P                  ^4       VP                  V P                  ^4       R# r.   )r7   r1   r   r   r   r   s   &&&r   rC   QRStructAppend.write   sF    &*

499a 

4::q!

4;;"r   )r   r   r   Nr   r   rM   s   @r   r   r      s     DJ# #r   r   c                   4   a  ] tR tRt o ^tRtR tR tRtV t	R# )QRFNC1Firsti  c                    R # r   rR   r   s   &r   r   QRFNC1First.__init__
  s    r   c                (    V P                  W4       R # r   )r7   r   s   &&&r   rC   QRFNC1First.write  s    &*r   rR   Nr   r   rM   s   @r   r   r     s     DJ+ +r   r   c                   f   a  ] tR tRt o ]P
                  ! R4      P                  t^	tRt	R t
RtV tR# )QRFNC1Secondi  z^([A-Za-z]|[0-9][0-9])$c                    V P                  W4       V P                  p\        V4      ^8X  d   \        V4      ^d,           pM\	        V4      pVP                  V^4       R#    N)r7   r   r   rm   intr1   r   s   &&& r   rC   QRFNC1Second.write  sH    &*IIq6Q;AAAA

1ar   rR   Nr   )rF   rG   rH   rI   rX   rY   rZ   r	   r2   r"   rC   rK   rL   rM   s   @r   r   r     s.     JJ0177EDJ r   r   c                     a  ] tR tRt o R tR tR tR tR tR t	R t
. RO. RO. RO. RO. RO. RO. RO.tR	 tR
 tR t. RO. RO. RO. RO. RO.tR tR tR tR tRtR tR tRtR tR t^t^t]R 4       t]R 4       tRtV t R# )QRCodei  c                V    Wn         W n        R V n        ^ V n        R V n        . V n        R # r   )r5   errorCorrectLevelmodulesmoduleCount	dataCachedataList)r   r5   r   s   &&&r   r   QRCode.__init__   s*    !2r   c                    \        V\        4      '       d   TpM,\        \        \        \
        3 F  p V! V4      p M	  \        hV P                  P                  V4       R V n	        R #   \         d     KH  i ; ir   )
re   r   rP   r\   rs   rc   r
   r   r   r   )r   r   newDataconvs   &&  r   addDataQRCode.addData(  sn    dBG!:w
C"4jG D ! W% " s   A**A98A9c                6    V P                   V,          V,          # r   )r   )r   rowcols   &&&r   isDarkQRCode.isDark8  s    ||C %%r   c                    V P                   # r   )r   r   s   &r   getModuleCountQRCode.getModuleCount;  s    r   c                <   \        ^^(4       F  p\        P                  WP                  4      p\	        R V 4       4      p^ pV P
                   F5  pV^,          pWEP                  V4      ,          pWEP                  ,          pK7  	  WC^,          8:  g   K   V# 	  X# )r   c              3   8   "   T F  qP                   x  K  	  R # 5ir   )	dataCount).0blocks   & r   	<genexpr>+QRCode.calculate_version.<locals>.<genexpr>B  s      GhUh   )r=   	QRRSBlockgetRSBlocksr   r   r   r$   r   )r   r5   rsBlockstotalDataCountlengthr   s   &     r   calculate_versionQRCode.calculate_version>  s    Q|G ,,W6L6LMH  Gh GGNF!,,W55..( & !++ $ r   c                    V P                   f   V P                  4       V n         V P                  RV P                  4       4       R # )NF)r5   r   makeImplgetBestMaskPatternr   s   &r   makeQRCode.makeL  s3    <<113DLeT4467r   c                   V P                   ^,          ^,           V n        \        V P                  4       Uu. uF  pR.V P                  ,          NK  	  upV n        V P	                  ^ ^ 4       V P	                  V P                  ^,
          ^ 4       V P	                  ^ V P                  ^,
          4       V P                  4        V P                  4        V P                  W4       V P                   ^8  d   V P                  V4       V P                  R8X  d;   \        P                  V P                   V P                  V P                  4      V n	        V P                  V P                  V4       R# u upi )r/   FN)r5   r   r=   r   setupPositionProbePatternsetupPositionAdjustPatternsetupTimingPatternsetupTypeInfosetupTypeNumberr   r   
createDatar   r   mapData)r   testmaskPatternxs   &&& r   r   QRCode.makeImplQ  s%   <<!+b0"'(8(8"9<"9Q  4#3#333"9<&&q!,&&t'7'7!';Q?&&q$*:*:Q*>?'')!4-LLA  &NNd"#..t||/3/E/E/3}}>DN 	T^^[1<s   E0c                ~   V^ 8X  d}   R.^,          V P                   V^,           ,          W"^,           % V^ 8X  d&   RV P                   V^,           ,          V^,           &   MPRV P                   V^,           ,          V^,
          &   M+R.^,          V P                   V^,
          ,          W"^,           % \        V P                  4       Fu  w  r4W@P                   W,           ,          W"^,           % V^ 8X  d&   RV P                   W,           ,          V^,           &   KR  RV P                   W,           ,          V^,
          &   Kw  	  R# )r   FN)r   r   _positionProbePattern)r   r   r   r   r   s   &&&  r   r    QRCode.setupPositionProbePatternm  s    !8.3Wq[DLLQE*ax-2SU#CE*-2SU#CE* /4Wq[DLLQE* !;!;<GA-1LLE*ax-2SU#CE*-2SU#CE* =r   c                    ^ p^ p\        ^4       F=  pV P                  RV4       \        P                  V 4      pV^ 8X  g	   W8  g   K9  TpTpK?  	  V# )r   T)r=   r   QRUtilgetLostPoint)r   minLostPointpatternrB   	lostPoints   &    r   r   QRCode.getBestMaskPattern  sU    qAMM$"++D1IQ,2(  r   c                T   \        ^V P                  ^,
          4       F#  pV^,          ^ 8H  V P                  V,          ^&   K%  	  \        P                  ! \        P
                  ! RR.4      V P                  ^,
          4      V P                  ^,          ^V P                  ^,
          % R# )rk   TFN)r=   r   r   	itertoolsislicecycle)r   r   s   & r   r   QRCode.setupTimingPattern  s    q$**Q./A"#a%1*DLLOA 02;2B2BOOT5M*D,<,<r,A3CQ$**Q./r   c                   \         P                  V P                  4      pV P                  ^,
          p\        P
                  ! W4       Fx  w  r4V^8:  d   V^8:  g   W28  d   K  WB8  d
   V^8:  d   K*  \        V P                  4       F5  w  rVW`P                  W5,           ^,
          ,          V^,
          V^,           % K7  	  Kz  	  R# rj   )	r   getPatternPositionr5   r   r   productr   _positionAdjustPatternr   )r   posmaxposr   r   r   r   s   &      r   r   !QRCode.setupPositionAdjustPattern  s    ''5!!A%!))#3HCaxSAX3!8$T%@%@A9=SWq[)#a%A6 B 4r   c                   \         P                  V P                  4      p\        ^4       Ff  pV'       * ;'       d    W#,	          ^,          ^8H  pW@P                  V^,          ,          V^,          V P
                  ,           ^,
          ^,
          &   Kh  	  \        ^4       Ff  pV'       * ;'       d    W#,	          ^,          ^8H  pW@P                  V^,          V P
                  ,           ^,
          ^,
          ,          V^,          &   Kh  	  R# )   N)r   getBCHTypeNumberr5   r=   r   r   )r   r   r   rB   mods   &&   r   r   QRCode.setupTypeNumber  s    &&t||4rA87749/a 7CEHLLa Q)9)9!9A!=!AB  rA87749/a 7CEHLLQ!1!11A59:16B r   c                   V P                   ^,          V,          p\        P                  V4      p\        ^4       F  pV'       * ;'       d    WE,	          ^,          ^8H  pV^8  d   W`P                  V,          ^&   KB  V^8  d   W`P                  V^,           ,          ^&   Kg  W`P                  V P
                  ^,
          V,           ,          ^&   K  	  \        ^4       F  pV'       * ;'       d    WE,	          ^,          ^8H  pV^8  d0   W`P                  ^,          V P
                  V,
          ^,
          &   KZ  V^	8  d-   W`P                  ^,          ^V,
          ^,
          ^,           &   K  W`P                  ^,          ^V,
          ^,
          &   K  	  V'       * V P                  V P
                  ^,
          ,          ^&   R# )rS   N)r   r   getBCHTypeInfor=   r   r   )r   r   r   r   r   rB   r  s   &&&    r   r   QRCode.setupTypeInfo  sQ   &&!+{:$$T*rA87749/a 7CA%(Q"a%),QU#A&=@T--2Q67:  rA87749/a 7CA<?Q 0 01 4q 89a%25QQ
Q/.1QQ
+  6:T%%)*1-r   c           
   #  r  "   \         P                  ! \        V P                  ^,
          ^R4      \        ^^ R4      4      p\	        \        ^	V P                  ^,
          4      4      \	        \         P                  ! \        ^4      \        ^V P                  4      4      4      \	        \        ^	V P                  4      4      3p\
        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        P                  V P                  4      p\        \         P                  P                  R V 4       4      4      pV P                  ^,
          pV F  pY2r2V^8:  d   ^ pMW`P                  ^,
          8  d   ^pM^pW',           F  p\        ^4       F  p	Wi,
          p	V P                  ^8  dA   V^8  d   WP                  ^,
          8  d   K<  V^8  d   WP                  ^,
          8  d   K\  W9   d1   W9   d+   V^8  d   V	^8  g   W8  g   V	^8  d   V^8  g	   W8  g   K  W3x  K  	  K  	  K  	  R# 5i)r   c              3   J   "   T F  p\        \        V4      4      x  K  	  R # 5ir   )listreversed)r   r   s   & r   r   *QRCode._dataPosIterator.<locals>.<genexpr>  s     7$QtHQK(($s   !#c              3   d   "   T F&  q^,
          V^,
          W^,           V^,           3x  K(  	  R# 5i)   NrR   )r   ps   & r   r   r    s*      13-1qS!A#qA#qs#Ts   .0N)r   chainr=   r   r  tupler   r  r5   setfrom_iterable)
r   colsrowsrrowspposr	  r   rowidxr   rn   s
   &         r   _dataPosIteratorQRCode._dataPosIterator  s    uT%5%5%91bA$Q20U1d..234Y__U1XuQ8H8H/IJKU1d../02 7$77$77((69??00 13-113 3 4!!B&C%ax!((1,,qf&||qAA||q(7q,<,<r,A'A$ 1W0@0@20E)E${qy #ba"f
FbCL$(N " $ s   H5H7Nc                z    V P                   '       g   \        V P                  4       4      V n         V P                   # r   )_dataPosListr  r%  r   s   &r   dataPosIteratorQRCode.dataPosIterator  s0        $T%:%:%< =D   r   c              #  X   "   V F  pR F  p\        W#,          4      x  K  	  K!  	  R# 5i)   N)r,  @       rq   rk   r/   r  r   )bool)r   r   bytebits   &&  r   _dataBitIteratorQRCode._dataBitIterator  s(     D04:&&0 s   (*c                    V P                   '       g    \        V P                  V4      4      V n         \        V P                   4      # r   )_dataBitListr  r2  r;   r   s   &&r   dataBitIteratorQRCode.dataBitIterator  s7        $T%:%:4%@ ADD%%&&r   c                    V P                  V4      p\        P                  V4      p\        V P	                  4       VR R7       F*  w  w  rVpWt! We4      ,          V P
                  V,          V&   K,  	  R# )F	fillvalueN)r6  r   getMaskr   r)  r   )r   r   r   r   maskr   r   darks   &&&     r   r   QRCode.mapData  sb    ##D)~~k* +D,@,@,BD6;!=JS%)DN%:DLLc"!=r   c                $   \         P                  W4      p\        4       pV F  pVP                  W@4       K  	  ^ pV F  pWgP                  ,          pK  	  VP                  4       V^,          8  d*   \        RVP                  4       V^,          3,          4      hVP                  4       ^,           V^,          8:  d   VP                  ^ ^4       VP                  4       ^,          ^ 8w  d   VP                  R4       K/   VP                  4       V^,          8  d   M_VP                  \        P                  ^4       VP                  4       V^,          8  d   M"VP                  \        P                  ^4       K}  \        P                  WC4      # )r   zcode length overflow. (%d > %d)F)r   r   QRBitBufferrC   r   getLengthInBits	Exceptionr1   putBitr   PAD0PAD1createBytes)r5   r   r   r   r4   r   r   r   s   &&&     r   r   QRCode.createData  sG   ((DDJJv'  Eoo-N ""$~'99=#335~7IJK L L ""$q(NQ,>>JJq!%%'!+q0MM% &&(NQ,>>JJv{{A&&&(NQ,>>JJv{{A&!!&33r   c           	     6   ^ p^ p^ p^ p. p. pV EF5  pWXP                   ,          pVP                  p	VP                   V	,
          p
\        W94      p\        WJ4      pVP                  V P                  W"V	,            4       W),          p\
        P                  V
4      p\        VR,          VP                  4       ^,
          4      pVP                  V4      pVP                  4       ^,
          pVP                  4       pTP                  \        W,
          V4       Uu. uF  pV^ 8  d   VP                  V4      M^ NK  	  up4       EK8  	  \        P                  ! \        V!  \        V!  4       UUu. uF  pV F  pVf   K	  VNK  	  K  	  pppV# u upi u uppi )r   )
totalCountr   maxr   r4   r   getErrorCorrectPolynomialQRPolynomialr'   r  r=   getr   r  r   )r4   r   offset
maxDcCount
maxEcCounttotalCodeCountdcdataecdatar   dcCountecCountrsPolyrawPolymodPolyrLenmLenrB   ddr   r   s   &&                  r   rF  QRCode.createBytes   s   

E...NooG&&0GZ1JZ1JMM&--g~>?F55g>F"6":v/?/?/AA/EFGkk&)G##%)D$$&DMM#(d#;>#;a 01AvW[[^1<#;> ?   '__V$k6&:< / <rQ   < / >/s   #F
1F
F)r5  r(  r   r   r   r   r   r5   )TTTTTTT)TFFFFFT)TFTTTFT)TTTTT)TFFFT)TFTFT)!rF   rG   rH   rI   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r%  r(  r)  r2  r5  r6  r   rD  rE  staticmethodr   rF  rK   rL   rM   s   @r   r   r     s      & 8
2& 	9888888
3$	C 	+****
	>J;0#B L!
' L'
; DD4 48  r   r   c                   &    ] tR tRt^t^ t^t^tRtR# )QRErrorCorrectLeveli>  rR   N)	rF   rG   rH   rI   LMQHrK   rR   r   r   r`  r`  >  s    	A	A	A	Ar   r`  c                   6    ] tR tRt^ t^t^t^t^t^t	^t
^tRtR# )QRMaskPatterniD  rR   N)rF   rG   rH   rI   
PATTERN000
PATTERN001
PATTERN010
PATTERN011
PATTERN100
PATTERN101
PATTERN110
PATTERN111rK   rR   r   r   rf  rf  D  s*    JJJJJJJJr   rf  c                   Z  a  ] tR tRt o . . N^^.N^^.N^^.N^^.N^^".N. RON. RON. RON. RON. RON. RON. RON. RON. RON. R ON. R!ON. R"ON. R#ON. R$ON. R%ON. R&ON. R'ON. R(ON. R)ON. R*ON. R+ON. R,ON. R-ON. R.ON. R/ON. R0ON. R1ON. R2ON. R3ON. R4ON. R5ON. R6ON. R7ON. R8ONtR9tR:tR;t]R 4       t	]R 4       t
]R 4       t]R 4       t^ R ^R ^R ^R	 ^R
 ^R ^R ^R /t]R 4       t]R 4       t]R 4       t]R 4       t]. R<O3R l4       t]R 4       t]R 4       tRtV tR# )=r   iN  c                   V ^
,          p\         P                  V4      \         P                  \         P                  4      ,
          ^ 8  d\   V\         P                  \         P                  V4      \         P                  \         P                  4      ,
          ,          ,          pK  V ^
,          V,          \         P                  ,          # )rT   )r   getBCHDigitG15G15_MASKr   r   s   & r   r  QRUtil.getBCHTypeInfo  s    BJ!!!$v'9'9&**'EEJ&**!3!3A!6!'!3!3FJJ!?"@ B DA"*!V__44r   c                n   V ^,          p\         P                  V4      \         P                  \         P                  4      ,
          ^ 8  d\   V\         P                  \         P                  V4      \         P                  \         P                  4      ,
          ,          ,          pK  V ^,          V,          # )rU   )r   rq  G18rt  s   & r   r  QRUtil.getBCHTypeNumber  s}    BJ!!!$v'9'9&**'EEJ&**!3!3A!6!'!3!3FJJ!?"@ B DA
ar   c                @    ^ pV ^ 8w  d   V^,          pV ^,          p K  V# r   rR   )r   digits   & r   rq  QRUtil.getBCHDigit  s%    qyQJEQJDr   c                >    \         P                  V ^,
          ,          # r   )r   PATTERN_POSITION_TABLE)r5   s   &r   r  QRUtil.getPatternPosition  s    ,,Wq[99r   c                &    W,           ^,          ^ 8H  # r  rR   rB   js   &&r   <lambda>QRUtil.<lambda>      {a'r   c                    V ^,          ^ 8H  # r  rR   r  s   &&r   r  r        q1uzr   c                    V^,          ^ 8H  # rS   rR   r  s   &&r   r  r    r  r   c                &    W,           ^,          ^ 8H  # r  rR   r  s   &&r   r  r    r  r   c                D    V ^,          V^,          ,           ^,          ^ 8H  # r  rR   r  s   &&r   r  r    s    Qa1,1r   c                N    W,          ^,          W,          ^,          ,           ^ 8H  # r  rR   r  s   &&r   r  r    s    Qw!#q(A-r   c                \    W,          ^,          W,          ^,          ,           ^,          ^ 8H  # r  rR   r  s   &&r   r  r        !%1{2a71<r   c                \    W,          ^,          W,           ^,          ,           ^,          ^ 8H  # r  rR   r  s   &&r   r  r    r  r   c                (    V P                   V,          # r   )r   )clsr   s   &&r   r;  QRUtil.getMask  s    {++r   c           	         \        ^.^ 4      p\        V 4       F3  pVP                  \        ^\        P	                  V4      .^ 4      4      pK5  	  V# r~  )rM  r=   multiplyQRMathgexp)errorCorrectLengtharB   s   &  r   rL   QRUtil.getErrorCorrectPolynomial  sG    !a )*A

<FKKN(;Q?AA +r   c                (   ^ p^ .pRpV F  pV'       d   \        WT4       UUu. uF  w  rgWg,          NK  	  ppp\        W^ R7       UUu. uF(  w  rgV^8  g   K  T;'       d    V^,
          ^,           NK*  	  p	ppV\        V	4      ,          p\        W^ R7       UUu. uF  w  rgV'       d   ^ MV^,           NK  	  pppTpK  	  T\        V Uu. uF  qw^8  g   K  V^,
          ^,           NK  	  up4      ,          pV# u uppi u uppi u uppi u upi )r   Nr9  )zipr   r   )
r  r   score	lastCountlastRowr   r  bchangedscoress
   &&        r   maskScoreRule1vertQRUtil.maskScoreRule1vert  s'   C	C,/,=>,=SQ155,=>%gAF%F -0A!V (!--1Q-F  % V$(3G>?)AB)A #$QQ.)A  B G  	Y9Yq&eac!eeY9:: ?%B
 :s)   C=	DD"DD	D
D
c                    ^ pV^ ,          pVR,           F]  pV^ ,          V^ ,          re\        VR,          VR,          4       F)  w  rxYxu;8X  d   Tu;8X  d   V8X  d   M M	V^,          pYxreK+  	  TpK_  	  V# )r   :r   NN)r  )	r  r   r  r  r   lastCol0lastCol1col0col1s	   &&       r   maskScoreRule2QRUtil.maskScoreRule2  sv    !*2;;C!$Qh!#b'72;7
787x7QJE%)( 8 G  r   c                    \        V4      p^ pV FJ  p^ p\        V4      V,
          pWg8  g   K  WVWc,            V8X  d   V^(,          pWc,          pK*  V^,          pK5  	  V# rz  )r   )r  r   r   
patternlenr  r   r  maxjs   &&&     r   maskScoreRule3horQRUtil.maskScoreRule3hor  sc    
 \
CAs8j(D(&'1RKEOAFA  r   c                    \        V4      ^,          p\        R V 4       4      p^
\        ^dV,          V,          ^2,
          4      ^,          ,          # )r  c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )r   )r   r   s   & r   r   (QRUtil.maskScoreRule4.<locals>.<genexpr>  s     0CHHr   )r   r   abs)r  r   	cellCountcounts   &&  r   maskScoreRule4QRUtil.maskScoreRule4  sB    L!O	000Su	1B671<==r   c                   ^ pW P                  VP                  4      ,          pW P                  \        VP                  !  4      ,          pW P                  VP                  4      ,          pW P	                  VP                  4      ,          pW P	                  \        VP                  !  4      ,          pW P                  VP                  4      ,          pV# rz  )r  r   r  r  r  r  )r  qrCoder   s   && r   r   QRUtil.getLostPoint  s    	++FNN;;	++C,@AA	''77	**6>>::	**3+?@@	''77	r   rR   N)r]      &   )r]      *   )r]      .   )r]      2   )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  r     )r]   r  r  r  r     )r]   r  r  r  r  r     )r]   r  r  L   r  r,     )r]   r  r  r  r        )r]   r.  r  r  r        )r]   r  r  r  r  r     )r]   r  r  r  r  r     i7  i%  iT  )TFTTTFTFFFF)rF   rG   rH   rI   r  rr  rw  rs  r^  r  r  rq  r  r   classmethodr;  rL  r  r  r  r  r   rK   rL   rM   s   @r   r   r   N  s    )
)	
B) 
B) 
B	)
 
B) 
B) 	) 	) 	) 	) 	) 	) 	) 	) 	)  	!)" 	#)$ 	%)& 	')( 	))* 	+), 	-). 	/)0 	1)2 	3)4 	5)6 	7)8 	!9): 	";)< 	"=)> 	"?)@ 	"A)B 	"C)D 	"E)F 	'G)H 	'I)J 	'K)L 	'M)N 	'O)P 	'Q)VC*CFH5 5       : : 	
'	!	!	'	1	-	<	<	
K , ,    (   / $ > >
  r   r   c                   @   a  ] tR tRt o ]R 4       t]R 4       tRtV tR# )r  i  c                \    V ^8  d   \        RV ,           R,           4      h\        V ,          # )r   zglog())rB  	LOG_TABLErA   s   &r   glogQRMath.glog  s'    EGaK#-..|r   c                d    V ^ 8  d   V ^,          p K  V R8  d   V ^,          p K  \         V ,          # )r      )	EXP_TABLEr  s   &r   r  QRMath.gexp  s,    !eHA3hHA|r   rR   N)	rF   rG   rH   rI   r^  r  r  rK   rL   rM   s   @r   r  r    s+      
  r   r  r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	rM  i  c                    \        V4      ^ 8X  d#   \        \        V4      R,           V,           4      h^ pV\        V4      8  d   W,          ^ 8X  d   V^,          pK(  WR ^ .V,          ,           V n        R# )r   /N)r   rB  num)r   r  shiftrO  s   &&& r   r   QRPolynomial.__init__  s^    HMCHsNU233s3xCK1$4aKFw<1#e)+r   c                (    V P                   V,          # r   r  )r   r?   s   &&r   rN  QRPolynomial.get  s    xxr   c                ,    \        V P                  4      # r   )r   r  r   s   &r   r'   QRPolynomial.getLength"  s    488}r   c                   ^ .V P                  4       VP                  4       ,           ^,
          ,          p\        V P                  4       4       F  p\        VP                  4       4       F|  pW#V,           ;;,          \        P                  \        P	                  V P                  V4      4      \        P	                  VP                  V4      4      ,           4      ,          uu&   K~  	  K  	  \        V^ 4      # rz  )r'   r=   r  r  r  rN  rM  )r   r   r  rB   r  s   &&   r   r  QRPolynomial.multiply%  s    cT^^%59:t~~'(A1;;=)E
fkk&++dhhqk*C*0++aeeAh*@+A C C
 * ) C##r   c           
     D   V P                  4       VP                  4       8  d   V # \        P                  V P                  ^ ,          4      \        P                  VP                  ^ ,          4      ,
          p\	        V P                  VP                  4       UUu. uF;  w  r4V\        P                  \        P                  V4      V,           4      ,          NK=  	  pppWPP                  VP                  4       R ,          p\        V^ 4      P                  V4      # u uppi r:   )r'   r  r  r  r  r  rM  r  )r   r   rationnenr  s   &&    r   r  QRPolynomial.mod-  s    NNq{{},KDHHQK)FKKa,BB!%%02052 FKKB% 78880 	 2xx''C#''**	2s   ADr  N)rF   rG   rH   rI   r   rN  r'   r  r  rK   rL   rM   s   @r   rM  rM    s#     ,%, ,r   rM  c                   J  a  ] tR tRt o . . RON. RON. R	ON. R
ON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. R ON. R!ON. R"ON. R#ON. R$ON. R%ON. R&ON. R'ON. R(ON. R)ON. R*ON. R+ON. R,ON. R-ON. R.ON. R/ON. R0ON. R1ON. R2ON. R3ON. R4ON. R5ON. R6ON. R7ON. R8ON. R9ON. R:ON. R;ON. R<ON. R=ON. R>ON. R?ON. R@ON. RAON. RBON. RCON. RDON. REON. RFON. RGON. RHON. RION. RJON. RKON. RLON. RMON. RNON. ROON. RPON. RQON. RRON. RSON. RTON. RUON. RVON. RWON. RXON. RYON. RZON. R[ON. R\ON. R]ON. R^ON. R_ON. R`ON. RaON. RbON. RcON. RdON. ReON. RfON. RgON. RhON. RiON. RjON. RkON. RlON. RmON. RnON. RoON. RpON. RqON. RrON. RsON. RtON. RuON. RvON. RwON. RxON. RyON. RzON. R{ON. R|ON. R}ON. R~ON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RON. RONtR t]R 4       t]R 4       tRt	V t
R# )r   i7  c                    Wn         W n        R # r   )rJ  r   )r   rJ  r   s   &&&r   r   QRRSBlock.__init__0  s    $"r   c                   \         P                  W4      pVR 8X  d!   \        RV ,           R,           V,           4      h\        V4      ^,          p. p\	        V4       Fq  pW%^,          ^ ,           ,          pW%^,          ^,           ,          pW%^,          ^,           ,          p\	        V4       F  p	VP                  \        Wx4      4       K  	  Ks  	  V# )Nzbad rs block @ version:z/errorCorrectLevel:)r   getRsBlockTablerB  r   r=   r   )
r5   r   rsBlockr   r  rB   r  rJ  r   r  s
   &&        r   r   QRRSBlock.getRSBlocks4  s    ++GGd?5?124EF G GW"vAEAI&E Q+J Q+I5\Ij<= "	  r   c                   V\         P                  8X  d-   \        P                  V ^,
          ^,          ^ ,           ,          # V\         P                  8X  d-   \        P                  V ^,
          ^,          ^,           ,          # V\         P
                  8X  d-   \        P                  V ^,
          ^,          ^,           ,          # V\         P                  8X  d-   \        P                  V ^,
          ^,          ^,           ,          # R# r   )r`  ra  r   RS_BLOCK_TABLErb  rc  rd  )r5   r   s   &&r   r  QRRSBlock.getRsBlockTableD  s     3 5 55++Wq[A,=,ABB"5"7"77++Wq[A,=,ABB#6#8#88++Wq[A,=,ABB#6#8#88++Wq[A,=,ABBr   )r   rJ  N)r   r     )r   r  rq   )r   r  ra   )r   r  r_   )r   ,   r  )r   r  r  )r   r  r  )r   r  rq   )r   r  7   )r   r  r  )r  #      )r  r  ra   )r   d   r  )r  r  r.  )r  r  r  )r/      r_   )r   r  r  )r  C   +   )r  !      r  r  rq   )r  r#  r`   r  r  rU   )r  r  D   )r/   r"     )r/   r"  r  )r/   r"  r$  )r  r  r  )r/   1      )r  r.  rV   r/   r#  r$  )r/   '   ra   r   (   rV   )r  y   a   )r  r  r  r  =   r)  )r/   r*  r  r  )   r  )r/   r*  rV   r  r.  r$  )r  r  t   )rS   r  $   r  ;   %   )r/   r0  rq   r/   r2  r  )r/   r0  rU   r/   r2  ra   )r  r  r%  r  W   E   )r/   r4  r"  r   r  r  )r]   r"  r  r  r     )r]   r"  r$  r  r  rq   )r/   e   Q   )r   r  r  r/   r7  3   )r/   r  r  r/   r8     )rS   r0  rU   rk   r2  ra   )r  r/  \   r  u   ]   )r]   r  r0  r  r1  r2  )r/   r  r5  r]   /      )   r  rV   r/   r"  r$  )r/      k   )rk   r1  r2  r   r  r  )rk   r  r5  r/   -   r>  )rU   r#  r`   r/   r  rU   )rS      s   r   r  r/  )r/   r-  r*  r^   A   r.  )r`   r0  rq   r^   r2  r  )r`   r0  rU   r^   r2  ra   )r^   m   r3  r   r  X   )r^   rE  r.  r^   r  r  )r^   r  r  r?  r  r   )r`   r0  rU   )r^   r  r  r   {   c   )r?  I   rB  rS   r  r  )r$  r"  r  r  r  r5  )rS   rB  r$  ra   r  rq   )r      rA  r^   r  r  )rT   r  r  r   K   r=  )r   r  r  r$  r8  r9  )r  r  rV   r  r"  r$  )r^   r  x   r      r+  )r_   r4  r"  r/   r  r  )r  r  r  r   r8  r9  )r  r  rV   r  r"  r$  )rS      q   r/   r  r  )rS   r  r  r`   G   rB  )r  r=  r>  r/   r  r  )r_   r)  ra   rq   r*  rV   )rS   rK  rA  r^   r  r  )rS   r!  r.  ra   r%  r  )r$  r  r  r^   r  r   )r$  r"  r$  rT   r  rq   )r/      r/  r/   rC  r;  )r  r%  r  )r  r  r  r]   r8  r9  )r  r  rq   r]   r=  r  )r     o   r?     r  )r  r  r  )r?  r  r  rq   r  r   )r  r2  ra   )r/   rN  r+  r^      r  )r/   rL  r=  rV   r  r  )r`   r  r  rV   r  r   )rq   rB  r$  rV   r  rq   )r]      r;  r/      r  )r]   rJ  rB  rV   r  r  )r`   r  r  rq   r  r   )r  r  rq   r  r=  r  )rk   r  r  r/   r@  rA  )rk   rL  r=  ra   r  r  )r?  r  r  r  r  r   )r  rB  r$  ra   r  rq   )rT   r  r  r     rD  )r  r  r  r/   rL  r=  )r  r  r  r]   r8  r9  )r#  r  rq   r/   r=  r  )rk   rV  r  r/      rH  )r  rJ  rB  rS   r  r  )rk   5   r9  r  r  r  )rU   rB  r$  r  r  rq   )rS   rW  r;  rT   rX  r  )rS   rJ  rB  r9  r  r  )r/   r  r  r(  r  r   )r`   rB  r$  r(  r  rq   )r?  r  r/  r?  rW  r;  )r>  rJ  rB  r?  r  r  )r   r[  r9  r2  r  r  )r  rB  r$  r  r  rq   )r^   rC  rD  rT   r  r/  )r  rL  r=  rT   r  r  )r$  r  r  r   r  r   )r9  rB  r$  r   r  rq   )ra   rC  rD  rS   r  r/  )r  r  r     rL  r=  )r  r  r  r   r  r   )r9  rB  r$  r  r  rq   )r  rC  rD  )rT   r  r  r9  rL  r=  )rT   r  r  r  r  r   )r  rB  r$  r  r  rq   )r  rC  rD  r   r  r/  )rV   r  r  r>  rL  r=  )r\  r  r  r  r  r   )r`   rB  r$  r  r  rq   )ra   rC  rD  r]   r  r/  )rV   r  r  r9  rL  r=  )r  r  r  r?  r  r   )r1  r  rq   r   r=  r  )rU   rN  r+  r?  rV  r  )rU   rL  r=  r  r  r  )r)  r  r  rV   r  r   )r  rB  r$  r.  r  rq   )r]   rN  r+  rV   rV  r  )r]   rL  r=  r  r  r  )r  r  r  rT   r  r   )r  rB  r$  r-  r  rq   )r  rV  r  r/   rZ  rH  )r\  r  r  rV   rL  r=  )r'  r  r  rT   r  r   )r  rB  r$  r  r  rq   )r/   rV  r  r  rZ  rH  )ra   r  r  r.  rL  r=  )r  r  r  rV   r  r   )r  rB  r$  r.  r  rq   )r5  rW  r;  r/   rX  r  )r*  rL  r=  r?  r  r  )r"  r  r  r  r  r   )rT   rB  r$  r!  r  rq   )r  rX  r  r]      w   )r  rL  r=  r(  r  r  )r  r  r  r  r  r   )r5  rB  r$  r-  r  rq   )rF   rG   rH   rI   r  r   r^  r   r  rK   rL   rM   s   @r   r   r   7  s9    v 	v 	v 	v 	v 	v 	v 	v  	!v& 	'v( 	)v* 	+v, 	-v2 	3v4 	5v6 	7v8 	9v> 	?v@ 	AvB 	CvD 	EvJ 	KvL 	MvN 	OvP 	QvV 	WvX 	YvZ 	[v\ 	]vb 	cvd 	evf 	gvh 	ivn 	ovp 	qvr 	svt 	uvz 	{v| 	}v~ 	v@ 	AvF 	GvH 	IvJ 	KvL 	MvR 	!SvT 	UvV 	WvX 	Yv^ 	_v` 	avb 	cvd 	 evj 	#kvl 	mvn 	 ovp 	 qvv 	!wvx 	yvz 	{v| 	}vB 	!CvD 	EvF 	 GvH 	 IvN 	#OvP 	 QvR 	 SvT 	 UvZ 	#[v\ 	]v^ 	 _v` 	 avf 	#gvh 	 ivj 	 kvl 	 mvr 	#svt 	 uvv 	 wvx 	!yv~ 	#v@ 	AvB 	 CvD 	 EvJ 	#KvL 	MvN 	 OvP 	QvV 	#WvX 	 YvZ 	![v\ 	!]vb 	#cvd 	 evf 	!gvh 	 ivn 	#ovp 	 qvr 	 svt 	!uvz 	${v| 	 }v~ 	 v@ 	 AvF 	#GvH 	 IvJ 	 KvL 	!MvR 	$SvT 	 UvV 	 WvX 	!Yv^ 	#_v` 	 avb 	 cvd 	!evj 	$kvl 	!mvn 	!ovp 	!qvv 	$wvx 	 yvz 	 {v| 	!}vB 	CvD 	!EvF 	!GvH 	!IvN 	$OvP 	!QvR 	!SvT 	!UvZ 	$[v\ 	!]v^ 	 _v` 	 avf 	$gvh 	!ivj 	!kvl 	!mvr 	$svt 	 uvv 	!wvx 	 yv~ 	$v@ 	!AvB 	!CvD 	!EvJ 	$KvL 	!MvN 	!OvP 	!QvV 	$WvX 	 YvZ 	![v\ 	!]vb 	$cvd 	!evf 	!gvh 	!ivNp#   
 
r   r   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
r@  iQ  c                "    . V n         ^ V n        R# r:   r4   r   r   s   &r   r   QRBitBuffer.__init__R  s    r   c                t    R P                  V P                   Uu. uF  p\        V4      NK  	  up4      # u upi ).)joinr4   rl   )r   rA   s   & r   r+   QRBitBuffer.__repr__V  s+    xx5AQ5665s   5c                x    V^,          pV P                   V,          ^V^,          ,
          ,	          ^,          ^8H  # rp   )r4   )r   r?   bufIndexs   && r   rN  QRBitBuffer.getY  s1    A:++h'A	M:q@QFFr   c                    \        V4       F2  pV P                  WV,
          ^,
          ,	          ^,          ^8H  4       K4  	  R# r   )r=   rC  )r   r  r   rB   s   &&& r   r1   QRBitBuffer.put]  s1    vAKKCQJN39a?@ r   c                    V P                   # r   )r   r   s   &r   rA  QRBitBuffer.getLengthInBitsa  s    {{r   c                F   V P                   ^,          p\        V P                  4      V8:  d   V P                  P                  ^ 4       V'       d8   V P                  V;;,          ^V P                   ^,          ,	          ,          uu&   V ;P                   ^,          un         R# rj   )r   r   r4   r   )r   r1  rh  s   && r   rC  QRBitBuffer.putBitd  se    ;;!#t{{x'KKq!KK!dt{{Q&?A!qr   ra  N)rF   rG   rH   rI   r   r+   rN  r1   rA  rC  rK   rL   rM   s   @r   r@  r@  Q  s*     7GA r   r@  )rX   r   r   r   rf   	NameErrorrl   r   rP   r\   rc   rs   r   r   r   r   r   r   r`  rf  r   r  r=   r  r  rB   rM  r   r@  )r   s   0r   <module>rq     s  0 
 6%
3  3 jr   &+b +Z2b 2l1B 1&#R #&+" +2 \ \~
 
 m m^  c
#
1Q
#	c
#
1Q
#		qA6IaL 
	q#Aa!e$yQ'77a!e$%'0Q'78IaL 
 
sA Iil 
, ,BX Xt k!655  GV $#s(   F F& <
F6
F;F#&	F32F3