§
    HŠtj¦O  ã                   óN   — d Z ddlZddlmZ dgZdxaad„ Z G d„ de¦  «        Z	dS )zGpasslib.crypto._blowfish.base - unoptimized pure-python blowfish engineé    N)Úrepeat_stringÚBlowfishEnginec                  ó*   — g d¢a g d¢g d¢g d¢g d¢gad S )N)iˆj?$l   ÓF i.ŠiDspl   "8H iÐ1Ÿ)i˜ú.l   ‰lœX iæ!(EiwÐ8l   Ïf¨| ilé4l   ·)X l   ÝPø iµÕ„?l   	Žj l   ÙU-$ l   {ó (   l   ¦b" l   ¬5¿1 iÛrý/l   ·_5  l   í/Ãq i–~&jl   Eùt l   ™Xb iG™¡$l   ÷l"g iâòl   | iØ iciiNWql   £~±H l   ~=&i i�t•iX¶ŽriXÍ‹ql   îJ* i¤T{l   µY´ l   9Ua8 i`ò*l   #0£ ið…`(l   y‚ l   ï8¶q l   °\ó i:`i‹žll   >
=` l   Áw*. l   'Kbz iÚ/¯xi`\`Ul   ó%ªL l   ”+«T ib˜HWi@ècij9ÊUi¶«*l   4\˜i iÎèAl   ¯©B i“ér|l   Üg i*¼oci]Å©+iö1tl   >¸ l   7 l   3:­_ i\Ï$li�S2ziw†•(i˜H�;i¯¹Kkl   h	 i“!(fiÌ	Øal   ‘)Cv i`¬|Hi2€ì]l   ]]_ l   ±u
S l   #L8 l   ˆÊV i�>‰#l   Å,-' ióoml   9Bè i‚D.l    I iJðÈil   ^?< iBhÆ!l   šlÒm iaœgl   ð§W iÒ Qjl   h/¨0 l   (', l   £3¢V ilïniä;zl   Ppwt i˜*û~l   eâC iv¯9i>YÊfl   ˆ† l   Ý i´ŸoEiÃ¥„}i¾^‹;l   ØuÞ@ l   s ‚ iŸD@i¦jÁVibªÓNiw?6irßþi=›Bi$×Ð7l   H  l   Ój6 i›ÀñIiÉrSl   {2 iØyÔ%l   ÷^Ñm l   PüG l   ;Lòl l   ½`Ù. iºÀl   ¶OR iÄ`Ÿ@iÂž\^ic$ji¯oûhiµSl>ië²9ioìR;iQüml   ,a6 l   DE l   	=½^ l   PÇ} l   ýJf< i(fi³K.l   W(— itÈEl   9_$ l   Û{§s i½ÀyUi
2`l   Æ B- iyr,@iþ%Ÿgl   Ì#?v l   øiK l   ø"d6 ißu<l   kÂz iÈP/l   «R
Z iúµ=2l   `Gz iH{1Si‚ß >l   »W¸< l    ß i.V‡l   Ûi.> l   ö(…* iÃÿ~(l   Æ2ÎX l   sUž i°'[il   ÈX”w l   ]#ÿC l    àq i˜=úl   ¸Cz ilµüJi[ÓÑ-l   yd§4 l   eEðm l   ¼I% i�—ûKl   Úr»C l   3~–I iAûbl   èFÉ l   ÚJA^ iLw6l   þý  i´ñ+l   MZ·+ l   ˜!] l   q[U i Õ“kl   ÐQ! l   à%Ž_ l   /[x l   ·ë l   ûbí l   d+$d l   8 l   p  i ^­OiÃ�hl   ‘qŸ# l   ­AQg i"//l   w| l   þ-êT l   ¡ l   LAK l   ètÞj iÖó¬l   ™b l   àOPi l   ·`'z i�;Ä|l   Ù([% if¢_l   w* l   s˜' iw!l   e ZM i†úµwl   õB¨ l   Ï5:w l   /›W i ‰>{l   Ó‚, l   I~<\ i-% i^³q i» h"i¯à¸Wi›6d$l   9` i‘cUiª¦ßYi‰CÁxl   S´2 i¢[} iÅ¹ål   vL i©Ï•bihÈiAJsNl   Ê-Žf iJ©{iR Ql   )¦4 l   ?W, l   äF7y iv¤`+l    tÌ iµoºiéWl   kl-e iÙ*l   !eÆl l   ¶ysO l   .h~ l   dV
 i]-°Sl   ¡?S i™Gºij…n(   iépzKl   D)fk l   .	ê6 l   #&2 l   °&ÝZ i}ß§Il   ¸`Ü9 l   f2Û l   qUY iÿšiilRdVl   ác i¥6i)L	ul   @²@ l   >:0H iš˜T?ie�B[iÖä�kl   Ö?î3 l   ¥C l   õ0Ð_ iæ8-Ml   Á]J` i† ÝLl   &ká iÆé‚ci^Ìi?kh	iÉïº>i—<i¡pjki„5hi†â Rl   S8o l   7 T i„>i\®Þl   ìDú i¸òWl   7Zu` l    ` l   8` iÿ³ l   u\ i²tµ<iXzƒ%l   ½!8 l   ù"# iö/©|l   sGd( iGõ"i�åå:iÜÚÂ7l   4vj l   §]ç5 l   FaˆR iÐl   >G‘Y l   AêH l   ™MqD i/ê;i¡»€2i1³>i8‹TNi¹mOiBol   ¿l i�¸,iy|—$ir°yVl   ¯	_y l   w4= l   &3 l   .g l   .?ž9 irUi$qk.iæÝPl   ‡M	? iGXziÚtl   ¼?y l   Œ}–R l   :lõX l   ú
7 ifC	cl   ÒCÉ l   G8^ iÙ2l   7;†: iºÂ$iCM¡iQÄe*i ”PiÝä:ižøßqiUN1l   ÖwX i›_iñV5l   kGG/ i;<i	¥$Yl   ífe l   ú{ã/ l   ,?u= in<l   pEÆ l   ±oÒU l   
^ i³*>Ziçwiú=Ni¹Üe)l   Î3 l   Ö	}  i%ÈfRixÉL.l   j3!8 l   º* l   xjÅ) l   S<øK iô-
l   §Nîe i=+6i&9i`yÂi§#Rl   ¶&n l   n~[W l   f†U l   •ExG l   ƒH÷L l   Ñ7þb i(ÿŒl   ï]e l   ¥ZØ| i…!Xei˜«hl   %�] l   ;_6 i­}ï*i„/n[i(¶!ipa)l   uGºY iŸai0¨Ìl   –=ÃV iþ4l   ÏcT l   �\æj i9¢pLl   =+ l   ^U l   ¼™] i§,b`l   «\V9 l   nçe i¯‹diÊð½l   ¹iF@ iP»Zei2Zh@i³´*<iÕéž1l   ÷8C  l   ¨6 l   ™ ¿ l   ~ï+ i¨}=bl   šop l   w-Æ/ i_“íi�hi)ˆ5l   ÖÌ l   ¡_½- i™ºXxi¥„õWicr"l   ÿC7 i–FÂl   ë
f iT0.Sl   äH² i(1¼miïòëXiêÿÆ4l   amQ| l   s<ø\ iÙJ]l   ã7ÉP i]Bià> i¶âîEl   ê+UG l   OØ6 l   ÐO–u l   Bt… l   µ;Õ^ i;Oei!ÍAl   žy<0 l   ÇM
 l   jG–H iPb�=l   ò!Å iF&�[l    y l   £6� iÃ$i’tËiiŠ„Gi…²’Vi ¿[	l   �H2Z it±bi ‚#i*�BXiêõUi>ô­iap?#i’ðr3l   A~& l   ñl¿, iÛ;"liY7Þ|l   `tÜ i§ò…@l   n2î l   „ L ižPøl   UXßQ i5—Ùal   ª'ÓR l   Â
 iü«Zl   ÜJ  l   .zˆ< l   „4Š l   gª{ iÉžl   Ó[ç6 iÍˆUiyÚ_gl   @CÎF l   e4ˆ iØ8>qižø(=l    Ûb iç!>l   J=` l   +ÇM l   ÷-7 (   l   hZzR l   ÷@) l   &˜l l   4)Ò( i÷ Ai÷Ôvl   .kèy l   h D) l   q$( ijô 3i·Ô·Ci¯a Pi.ö9l   FEH. itO!l   @ iü•Ml   ¯k- iÓÝôpiE/ fl   ì	x i…—½iÐm¬i…Ë1l   ³'Ö- iA9ýUl   æGJ4 l   š
”W i%xP(iô)SiÚ†,
l   ûmlS ibÜhl    i�. i¤Àhiî�¡'i¢þ?Ol   Œ-Q l   `k i¶Öôzl   |œU l   ì_n& l   ™#ñ iB*k@i5žþ l   ¹ç3 l   «Ws\ i‹N;i÷úÉiVmKi1f£&l   ²ÇU itún:l   2C¶: i÷çAhl   û ð l   Nuv l   —3ý1 i¬V@El   '‘t i::SUi‡�ƒ l   ·)×| l   K-! i¼g¨Ul   X+B l   c)R l   3[Ã3 l   VJTL iù%1?i~ô^l   |1R  l   hñ{ ip/'l   \v iã,(l   H‚+ l   "mŒI i?ÁHl   Ü iîÉùiAi¤yG@inˆ]iëQ_2l   Ñ@7+ l   �Aye id5Ai4x{%i`œ*`l   £hñ? ilciÂ´iž2ál   ÑOÌ^ l   £ ià•#kiá’>3ib$;l   "9}] l   "e l   ™tM l   Œä< i(÷¢-l   Ex$  l   ýo+ ib}dl   ðu™O io£ITl   úHú l   '}; l   }f iAcG
l   t]2 i«no:l   7}ñi l   `\%P l   ø]×C l   La72 l   kÜ6 l   Uö i7,gmi;Ôe'l   h¡9 l   ÇRb l   £ l   ’rj iíiiûŸ{fl   œ}¶ l   O#A l   £^*2 l   ˆ/&v i$­[Qi¿y”{iëÖ;vi³.97l   yY" l   —bM  l   -1\h i§­Bhl   ;+Ô iÌLuiñ.xi7Bjl   çQ$o iæ»¡iPcûKikiúíÊiØ½%=l   ÉCÃE iYBDi†
l   nl2 l   *jW+ iNg¯dl   _(5 l   ˆi} iþÃädl   W y; l   †@ïa iø{x`iM``l   Fû# l   °pl i®Ewl   Ì|m. l   3k„ l   q+=` l   ‡A a i_^ <i¾W wl   $.Ñ{ i™BFUl   a.°~ i�ôXNl   ¢}»e l   8oéh l   Â= iÃùfSl   tg l   Urëh i¹ÙüFia&ëzl   „_; l   yÔ l   â¿" iŽYnFipW´ l   ‘Uª l   L^ l   á,r l   Ðw iHb¨iž©tul   ¶þn l   	\SA i¡	-fl   3Fd l   ´P iŒ¾ð	i% ™Jiþni=¹iß¤¥l   rC iiñh(l   ƒZo9 iþ9Wl   ›NÅC iRÍOi^Pl   úN l   Ä5@ i'Ðæl   'ñ5 iA†?wl   LÀ iµ¨al   (z.` l   àë iªX` ib}Ü0i×žæicê8#i”ÝÂSl   4„ l   Vn—w l   Þ6y! l   ¡}øW l   v² i	äoiˆ|Ki=
r9i$|’|l   _rÆ i¹�Mri´[Ál   ü8=' l   xU¨Z iµ¥ül   Ó|z0 iÄ­Mi^ïPl   øfÃb l   Ù
E i<QliçÇÕoiÄNáViÎ¿*6l   7H�; l   424/ l   Ç$ iŽúgià `@(   i7Î9:l   Ïuõ' l   7w„W i-ÅZižg°\iB7£Ol   @'' l   ¾y3 l   �#* l   s~ l   ~Z, l   {D l   ko iE�¡!l   ¾1Ýd i´n6ji/«HWl   yn(y l   ÒvF iÈÂIeiîøSi}Þ�Fl   
æ* iÆMÐLiÛ»9)l   PFtS l   è&*Y l   c½| l   ðUõC išQ-jiâŒïcl   "n5 l   ¸B iö.$Cl   ª<J l   ¤På9 l   ºa€ l   MjÒ7 l   PÊ l   Ö[Èt iù¢&(l   á:tN i†•©Kl   ébª^ l   Óo_ l   Úw¥n iio?iY
úwl   )É l   a l   ­f6 i“å>;l   Z}!S l   —Wi< iÙ·ð,iQ‹+l   :,«- i}¦}l   Ö>ž# i(-}|iÏ%Ÿl   ›8å[ ir´ÖZiLõˆZl   q,S@ l   æ%3@ iý¬°Gl   ›z'[ l   �D§Q iÌW;(l   )fªq i(.yi‘_xl   U`êZ l   D,o l   Œ^¦G iÔml   ºmè i%a¡i½ðdl   × i¢W�<l   ìN. l   *tR i›m?iõ!cl   ûf8k ióÜ&i(Ù3ul   õ}«b i‚4Vl   »<t iwQ(l   øY l   gQ˜W l   _[ iQèMiŽÜ08ibX�7l   ‘yA& l   ÂõT l   Î{|v idÎ!Qi2¾Owl   ~cmQ l   F=R iiSÞHi€ædl   \E l   $2Û: iý-…iif!	l   
F4g iÝÀEdiÏÞlXi®È iÝ÷¾[i@�Xl   ¤ i»ã´kl   ~jD; iEÿY:iD
5>l   ÕMiy i¨Îêrl   »Ét l   ®Ì l   Gox~ l   cd7% iž]/Tl   w„] l   pcœl i�tl   W¶N l   qäp l   ]}¦^ iË@@iÌâ´NijFÒ4i„¯l   (`C l   :0+ i´Ÿ¸l   H Ý i‚;?oi‚« 5iKiø'r'i±`al   Ü?&O l   +ytv i½%E4l   á9A iKyÎQi·É2/l   É:?@ l   ~H9@ l   öQ�y l   Ã l   Ç*ÑC iI‡�l   š=Ÿ( l   Ë^µ! l   8Z* i*Ã9l   g6" l   |1ò l   O+bA l   ·Y<o i:»õCl   ÿªe iœEÙ'l   ,". i*üæiqü‘l   %(7 l   aËu l   ëm l   YdP iÑ¨ºl   ^‚m l   j
F iePÒl   B$ l   nØA i;Û˜i¾ ˜Lidéx2l   2?> l   ß§A l   +4@' l   rã iAt
iŒ4£Kl    q| l   Ø2ì l   �k> l   ./27 l   GoL iñãl   TZ™J i‘ØÚl   ÏyÄ l   o~| if±l   Xz l   ÅR	 l   ™"öm l   WsGj l   #vdL l   15P' iÍÌVl   báY iµëuZi—6nl   Ìs¤ l   ’b,= l   ÐIr i�PLiVÆql   ½G�M i
z2iÐáEl   š{ä l   ýST i ¨bl   â?Kv iöÒ½5iiql   "d l   |O—m l   +í iÀ>SiÓã@i`½«8ið­G%l   œ pt l   vN�n iÅ¡¯wi``u l   N~— l   ØÑ i°ùªzi~ªùLi\ÂHiŒŠûiäjÃl   ùa×- l   ix©! l    ^¹L i-%	?l   Ÿf l   2aœn l   [bï iãß�WiærÃ:)Ú
BLOWFISH_PÚ
BLOWFISH_S© ó    ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/crypto/_blowfish/base.pyÚ_init_constantsr      sk   € ðð ð €JðA	
ð A	
ð A	
ðFA	
ð A	
ð A	
ðFA	
ð A	
ð A	
ðFA	
ð A	
ð A	
ðWM€J€J€Jr	   c                   óJ   — e Zd Zd„ Zed
d„¦   «         Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )r   c                 óŽ   — t           €t          ¦   «          t          t           ¦  «        | _        d„ t          D ¦   «         | _        d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )Úlist)Ú.0Úboxs     r
   ú
<listcomp>z+BlowfishEngine.__init__.<locals>.<listcomp>;  s   € Ð4Ð4Ð4 •4˜‘9”9Ð4Ð4Ð4r	   )r   r   r   ÚPr   ÚS)Úselfs    r
   Ú__init__zBlowfishEngine.__init__7  s<   € ÝÐÝÑÔÐÝ•jÑ!Ô!ˆŒØ4Ð4­
Ð4Ñ4Ô4ˆŒˆˆr	   é   c                 ó¶   — t          | t          ¦  «        sJ ‚t          | ¦  «        }|sdg|z  S t          | |dz  ¦  «        } t	          j        d|fz  | ¦  «        S )zwconvert data to tuple of <size> 4-byte integers, repeating or
        truncating data as needed to reach specified sizer   é   z>%dI)Ú
isinstanceÚbytesÚlenr   ÚstructÚunpack)ÚdataÚsizeÚdlens      r
   Úkey_to_wordszBlowfishEngine.key_to_words@  sj   € õ ˜$¥Ñ&Ô&Ð&Ð&Ð&Ý�4‰yŒyˆØð 	ð �3�t‘8ˆOõ ˜T 4¨¡7Ñ+Ô+ˆõ Œ}˜V t gÑ-¨tÑ4Ô4Ð4r	   c                 ó4  — | j         | j        }}||d         z  }d}|dk     rk|d         |dz	           |d         |dz	  dz           z   |d         |dz	  dz           z  |d	         |dz           z   d
z  ||         z  |z  }||}}|dz  }|dk     °k||d         z  |fS )z)loop version of blowfish encipher routiner   é   é   é   é   éÿ   r   é   é   l   ÿÿ )r   r   )r   ÚlÚrr   r   Úis         r
   ÚencipherzBlowfishEngine.encipherT  sË   € àŒv�t”vˆ1ˆØ	ˆQˆqŒT‰	ˆØˆØ�"Šfˆfà�a”D˜˜b™”M A a¤D¨!¨r©'°TÑ)9Ô$:Ñ:¸aÀ¼dÀAÈÁFÈdÁ?Ô>SÑSØ�A”$�q˜4‘x”.ñ!Ø$.ñ/Ø23°A´$ñ7Ø9:ñ;ˆAð �aˆqˆAØ�‰FˆAð �"Šfˆfð �1�R”5‰y˜!ˆ|Ðr	   c                 óŽ  — t          |¦  «        dk    s
J d¦   «         ‚| j        | j        | j        }}}d}|dk     r!||xx         ||         z  cc<   |dz  }|dk     °!dx}x}}|dk     r( |||¦  «        x\  ||<   ||dz   <   \  }}|dz  }|dk     °(|D ]2}d}|dk     r( |||¦  «        x\  ||<   ||dz   <   \  }}|dz  }|dk     °(Œ3dS )z(perform stock Blowfish keyschedule setupr   ú(key_words must be at least as large as Pr   r$   r   é   N©r   r   r   r.   )	r   Ú	key_wordsr   r   r.   r-   r+   r,   r   s	            r
   ÚexpandzBlowfishEngine.expandd  s,  € å�9‰~Œ~ Ò#Ð#Ð#Ð%OÑ#Ô#Ð#Øœ ¤¨¬ˆhˆ1ˆàˆØ�"ŠfˆfØˆaˆDˆDŒD�I˜a”LÑ ˆDˆD‰DØ�‰FˆAð �"Šfˆfð ˆˆˆˆA�Ø�"ŠfˆfØ!) ¨!¨A¡¤Ð.‰LˆAˆa‰D�!�A�a‘C‘&™3˜1˜QØ�‰FˆAð �"Šfˆfð ð 	ð 	ˆCØˆAØ�c’'�'Ø)1¨°!°A©¬Ð6Ñ ��A‘˜˜A˜a™C™¡3 1 QØ�Q‘�ð �c’'�'øð	ð 	r	   c                 ó~  — t          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        }|s
J d¦   «         ‚|dz  r
J d¦   «         ‚| j        | j        | j        }}}d}|dk     r!||xx         ||         z  cc<   |dz  }|dk     °!dx}x}x}	}
|dk     rN|	||         z  }	|
||dz            z  }
|dz  }||k    rd} ||	|
¦  «        x\  ||<   ||dz   <   \  }	}
|dz  }|dk     °N|D ]X}d}|dk     rN|	||         z  }	|
||dz            z  }
|dz  }||k    rd} ||	|
¦  «        x\  ||<   ||dz   <   \  }	}
|dz  }|dk     °NŒYd	S )
z9perform EKS' salted version of Blowfish keyschedule setupr   r0   zsalt_words must not be emptyr$   z salt_words must have even lengthr   r   r1   Nr2   )r   r3   Ú
salt_wordsÚ	salt_sizer   r   r.   r-   Úsr+   r,   r   s               r
   Úeks_salted_expandz BlowfishEngine.eks_salted_expand|  sÛ  € õ
 �9‰~Œ~ Ò#Ð#Ð#Ð%OÑ#Ô#Ð#Ý˜
‘O”Oˆ	ØÐ8Ð8Ð8Ñ8Ô8ˆyØ˜q‘=ÐDÐDÐ"DÑDÔDÐ Øœ ¤¨¬ˆhˆ1ˆàˆØ�"ŠfˆfØˆaˆDˆDŒD�I˜a”LÑ ˆDˆD‰DØ�‰FˆAð �"Šfˆfð ÐˆÐˆAÐ��AØ�"ŠfˆfØ�˜A”ÑˆAØ�˜A˜a™C”Ñ ˆAØ�‰FˆAØ�IŠ~ˆ~Ø�Ø!) ¨!¨A¡¤Ð.‰LˆAˆa‰D�!�A�a‘C‘&™3˜1˜QØ�‰FˆAð �"Šfˆfð ð 		ð 		ˆCØˆAØ�c’'�'Ø�Z ”]Ñ"�Ø�Z  !¡”_Ñ$�Ø�Q‘�Ø˜	’>�>Ø�AØ)1¨°!°A©¬Ð6Ñ ��A‘˜˜A˜a™C™¡3 1 QØ�Q‘�ð �c’'�'øð		ð 		r	   c                 ój   — | j         }d}||k     r# ||¦  «          ||¦  «         |dz  }||k     °!dS dS )z-perform rounds stage of EKS keyschedule setupr   r$   N)r4   )r   r3   r6   Úroundsr4   Úns         r
   Úeks_repeated_expandz"BlowfishEngine.eks_repeated_expand¡  sS   € à”ˆØˆØ�&ŠjˆjØˆF�9ÑÔÐØˆF�:ÑÔÐØ�‰FˆAð �&Šjˆjˆjˆjˆjˆjr	   c                 ó\   — | j         }d}||k     r |||¦  «        \  }}|dz  }||k     °||fS )z.repeatedly apply encipher operation to a blockr   r$   )r.   )r   r+   r,   Úcountr.   r<   s         r
   Úrepeat_encipherzBlowfishEngine.repeat_encipherª  sI   € à”=ˆØˆØ�%ŠiˆiØ�8˜A˜q‘>”>‰DˆAˆqØ�‰FˆAð �%Šiˆið �!ˆtˆr	   N)r   )Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr"   r.   r4   r9   r=   r@   r   r	   r
   r   r   5  s�   € € € € € ð5ð 5ð 5ð ð5ð 5ð 5ñ „\ð5ð&ð ð ð ð ð ð0#ð #ð #ðJð ð ðð ð ð ð r	   )
Ú__doc__r   Úpasslib.utilsr   Ú__all__r   r   r   Úobjectr   r   r	   r
   ú<module>rI      s‘   ðØ MÐ Mð
 €€€à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð ð€ð Ð €
ˆZð]ð ]ð ]ðD	|ð |ð |ð |ð |�Vñ |ô |ð |ð |ð |r	   