§
    OŠtj.M  ã                   óˆ  — d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZCmDZD d dlEmFZF d dlGmHZHmIZI d dlJmKZK d	„ ZLd
„ ZMd„ ZNd„ ZOd„ ZPd„ ZQd„ ZRd„ ZSd„ ZTd„ ZUd„ ZVd„ ZWd„ ZXd„ ZYd„ ZZd„ Z[d„ Z\d„ Z]d„ Z^d„ Z_d„ Z`d„ Zad„ Zbd „ Zcd!„ Zdd"„ Zed#„ Zfd$„ Zgd%„ Zhd&„ Zid'„ Zjd(„ Zkd)„ Zld*„ Zmd+„ Znd,„ Zod-„ Zpd.„ Zqd/„ Zrd0„ Zsd1„ Ztd2„ Zud3„ Zvd4„ Zwd5„ Zxd6„ Zyd7„ Zzd8„ Z{d9„ Z|d:„ Z}d;„ Z~d<S )=é    ©Úsymbols);Ú
cycle_listÚencipher_shiftÚencipher_affineÚencipher_substitutionÚcheck_and_joinÚencipher_vigenereÚdecipher_vigenereÚencipher_hillÚdecipher_hillÚencipher_bifid5Úencipher_bifid6Úbifid5_squareÚbifid6_squareÚbifid5Úbifid6Údecipher_bifid5Údecipher_bifid6Úencipher_kid_rsaÚdecipher_kid_rsaÚkid_rsa_private_keyÚkid_rsa_public_keyÚdecipher_rsaÚrsa_private_keyÚrsa_public_keyÚencipher_rsaÚlfsr_connection_polynomialÚlfsr_autocorrelationÚlfsr_sequenceÚencode_morseÚdecode_morseÚelgamal_private_keyÚelgamal_public_keyÚencipher_elgamalÚdecipher_elgamalÚdh_private_keyÚdh_public_keyÚdh_shared_keyÚdecipher_shiftÚdecipher_affineÚencipher_bifidÚdecipher_bifidÚbifid_squareÚ
padded_keyÚuniqÚdecipher_gmÚencipher_gmÚgm_public_keyÚgm_private_keyÚencipher_bgÚdecipher_bgÚbg_private_keyÚbg_public_keyÚencipher_rot13Údecipher_rot13Úencipher_atbashÚdecipher_atbashÚNonInvertibleCipherWarningÚencipher_railfenceÚdecipher_railfence)Úgcd)ÚMatrix)ÚisprimeÚis_primitive_root)ÚFF)ÚraisesÚwarns)Ú	randrangec                  óŠ   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )Núhello worldé   úhlowrdel olé   úhorel ollwdé   úhwe olordll)r>   © ó    ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/crypto/tests/test_crypto.pyÚtest_encipher_railfencerS      óY   € Ý˜m¨AÑ.Ô.°-Ò?Ð?Ð?Ð?Ý˜m¨AÑ.Ô.°-Ò?Ð?Ð?Ð?Ý˜m¨AÑ.Ô.°-Ò?Ð?Ð?Ð?Ð?Ð?rQ   c                  óŠ   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )NrK   rJ   rI   rM   rL   rO   rN   )r?   rP   rQ   rR   Útest_decipher_railfencerV   !   rT   rQ   c                  ó–   — t          dd¦  «        g d¢k    sJ ‚t          dd¦  «        g d¢k    sJ ‚t          dd¦  «        g d¢k    sJ ‚d S )NrL   rN   )rL   r   é   rJ   éÿÿÿÿrX   )rX   rJ   rL   r   )r   rP   rQ   rR   Útest_cycle_listrZ   '   se   € Ý�a˜ÑÔ˜|˜|˜|Ò+Ð+Ð+Ð+Ý�b˜!ÑÔ   Ò,Ð,Ð,Ð,Ý�a˜ÑÔ˜|˜|˜|Ò+Ð+Ð+Ð+Ð+Ð+rQ   c                  ó¶   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )NÚABCr   rX   ÚBCDrY   ÚZAB)r   r*   rP   rQ   rR   Útest_encipher_shiftr_   -   st   € Ý˜% Ñ#Ô# uÒ,Ð,Ð,Ð,Ý˜% Ñ#Ô# uÒ,Ð,Ð,Ð,Ý˜% Ñ$Ô$¨Ò-Ð-Ð-Ð-Ý˜% Ñ$Ô$¨Ò-Ð-Ð-Ð-Ð-Ð-rQ   c                  ó®   — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )Nr\   ÚNOP)r9   r:   rP   rQ   rR   Útest_encipher_rot13rb   3   sl   € Ý˜%Ñ Ô  EÒ)Ð)Ð)Ð)Ý˜%Ñ Ô  EÒ)Ð)Ð)Ð)Ý˜%Ñ Ô  EÒ)Ð)Ð)Ð)Ý˜%Ñ Ô  EÒ)Ð)Ð)Ð)Ð)Ð)rQ   c                  óB  — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          ddd¬	¦  «        d
k    sJ ‚t          ddd¬	¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )Nr\   )rX   r   )rX   rX   r]   )rY   r   ÚAZY)rY   rX   ÚABCDr   ÚBADÚ123Ú1234Ú214)rL   é   ÚQTW)r   r+   rP   rQ   rR   Útest_encipher_affinerl   :   sÏ   € Ý˜5 &Ñ)Ô)¨UÒ2Ð2Ð2Ð2Ý˜5 &Ñ)Ô)¨UÒ2Ð2Ð2Ð2Ý˜5 'Ñ*Ô*¨eÒ3Ð3Ð3Ð3Ý˜5 '°6Ð:Ñ:Ô:¸eÒCÐCÐCÐCÝ˜5 '°6Ð:Ñ:Ô:¸eÒCÐCÐCÐCÝ˜5 'Ñ*Ô*¨eÒ3Ð3Ð3Ð3Ý˜5 'Ñ*Ô*¨eÒ3Ð3Ð3Ð3Ð3Ð3rQ   c                  ó®   — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )Nr\   ÚZYX)r;   r<   rP   rQ   rR   Útest_encipher_atbashro   C   sl   € Ý˜5Ñ!Ô! UÒ*Ð*Ð*Ð*Ý˜5Ñ!Ô! UÒ*Ð*Ð*Ð*Ý˜5Ñ!Ô! UÒ*Ð*Ð*Ð*Ý˜5Ñ!Ô! UÒ*Ð*Ð*Ð*Ð*Ð*rQ   c                  ób   — t          ddd¦  «        dk    sJ ‚t          ddd¦  «        dk    sJ ‚d S )Nr\   ÚBACrg   Ú1243rh   Ú124)r   rP   rQ   rR   Útest_encipher_substitutionrt   I   sB   € Ý  ¨¨uÑ5Ô5¸Ò>Ð>Ð>Ð>Ý  ¨°Ñ7Ô7¸5Ò@Ð@Ð@Ð@Ð@Ð@rQ   c                  ó  — t          d¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚t          d                     ¦   «         ¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          t          d„ ¦  «         d S )NÚabcÚaaabczab cÚaT)Úfilterc                  ó"   — t          dd¦  «        S )NÚabrx   )r	   rP   rQ   rR   ú<lambda>z%test_check_and_join.<locals>.<lambda>S   s   € �~¨d°CÑ8Ô8€ rQ   )r	   r0   ÚsplitrE   Ú
ValueErrorrP   rQ   rR   Útest_check_and_joinr   N   s•   € Ý˜%Ñ Ô  EÒ)Ð)Ð)Ð)Ý�$˜w™-œ-Ñ(Ô(¨EÒ1Ð1Ð1Ð1Ý˜&Ÿ,š,™.œ.Ñ)Ô)¨UÒ2Ð2Ð2Ð2Ý˜% ¨TÐ2Ñ2Ô2°cÒ9Ð9Ð9Ð9Ý
�:Ð8Ð8Ñ9Ô9Ð9Ð9Ð9rQ   c                  óò   — t          dd¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          d	dd¬¦  «        d	k    sJ ‚d S )
Nr\   ÚACEre   r   ÚACAÚABÚACCÚACÚA)r
   rP   rQ   rR   Útest_encipher_vigenerer‡   V   ó£   € Ý˜U EÑ*Ô*¨eÒ3Ð3Ð3Ð3Ý˜U E°6Ð:Ñ:Ô:¸eÒCÐCÐCÐCÝ˜U D°&Ð9Ñ9Ô9¸UÒBÐBÐBÐBÝ˜T 5°&Ð9Ñ9Ô9¸TÒAÐAÐAÐAÝ˜S %°Ð8Ñ8Ô8¸CÒ?Ð?Ð?Ð?Ð?Ð?rQ   c                  óò   — t          dd¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚t          ddd¬¦  «        dk    sJ ‚d S )	Nr\   ÚAAAre   r   rƒ   ÚAACÚAAr†   )r   rP   rQ   rR   Útest_decipher_vigenerer�   ^   rˆ   rQ   c                  ó¼  — t          ddg d¢¦  «        } t          d| ¦  «        dk    sJ ‚t          ddg d¢¦  «        } t          d| ¦  «        dk    sJ ‚t          d| d¬¦  «        dk    sJ ‚t          ddg d¢¦  «        } t          d| d¬¦  «        dk    sJ ‚t          d| d¬¦  «        d	k    sJ ‚t          d
| ¦  «        dk    sJ ‚t          d
| d¬¦  «        dk    sJ ‚d S )NrJ   ©rX   rJ   rL   é   re   ÚCFIV©rX   r   r   rX   r   ÚCBABrƒ   ÚCBÚABAÚCFGCÚZ)ÚpadÚCFYV)rA   r   ©r†   s    rR   Útest_encipher_hillr›   f   s  € Ýˆq�!�\�\�\Ñ"Ô"€AÝ˜ Ñ#Ô# vÒ-Ð-Ð-Ð-Ýˆq�!�\�\�\Ñ"Ô"€AÝ˜ Ñ#Ô# vÒ-Ð-Ð-Ð-Ý˜ ¨FÐ3Ñ3Ô3°vÒ=Ð=Ð=Ð=Ýˆq�!�\�\�\Ñ"Ô"€AÝ˜ ¨FÐ3Ñ3Ô3°vÒ=Ð=Ð=Ð=Ý˜˜q¨&Ð1Ñ1Ô1°TÒ9Ð9Ð9Ð9õ ˜ Ñ"Ô" fÒ,Ð,Ð,Ð,Ý˜  sÐ+Ñ+Ô+¨vÒ5Ð5Ð5Ð5Ð5Ð5rQ   c                  óŒ  — t          ddg d¢¦  «        } t          d| ¦  «        dk    sJ ‚t          ddg d¢¦  «        } t          d| ¦  «        dk    sJ ‚t          d| d¬¦  «        dk    sJ ‚t          ddg d¢¦  «        } t          d| d¬¦  «        dk    sJ ‚t          d| d¬¦  «        d	k    sJ ‚t          d
| ¦  «        dk    sJ ‚d S )NrJ   r�   r‘   re   r’   r   r“   r”   rƒ   ÚCFAÚABAA)rA   r   rš   s    rR   Útest_decipher_hillrŸ   u   sø   € Ýˆq�!�\�\�\Ñ"Ô"€AÝ˜ Ñ#Ô# vÒ-Ð-Ð-Ð-Ýˆq�!�\�\�\Ñ"Ô"€AÝ˜ Ñ#Ô# vÒ-Ð-Ð-Ð-Ý˜ ¨FÐ3Ñ3Ô3°vÒ=Ð=Ð=Ð=Ýˆq�!�\�\�\Ñ"Ô"€AÝ˜ ¨FÐ3Ñ3Ô3°vÒ=Ð=Ð=Ð=Ý˜˜q¨&Ð1Ñ1Ô1°TÒ9Ð9Ð9Ð9å˜ Ñ"Ô" fÒ,Ð,Ð,Ð,Ð,Ð,rQ   c                  ó¶   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        d	k    sJ ‚d S )
Nrƒ   ÚCDÚCOr{   ÚcÚCHúa bcÚbrq   )r   rP   rQ   rR   Útest_encipher_bifid5r§   ‚   ót   € Ý˜4 Ñ&Ô&¨$Ò.Ð.Ð.Ð.Ý˜4 Ñ&Ô&¨$Ò.Ð.Ð.Ð.Ý˜4 Ñ%Ô%¨Ò-Ð-Ð-Ð-Ý˜6 3Ñ'Ô'¨5Ò0Ð0Ð0Ð0Ð0Ð0rQ   c                  ól   ‡— t           Šˆfd„} t          dd| ¦  «        }t          d¦  «        |k    sJ ‚d S )Nc                 ó:   •— t          ‰d| z  |z            ¦  «        S )Nr�   r   ©ÚiÚjr†   s     €rR   r|   z$test_bifid5_square.<locals>.<lambda>‹   ó   ø€ •W˜Q˜q ™s Q™wœZÑ(Ô(€ rQ   r�   Ú )r   rA   r   ©ÚfÚMr†   s     @rR   Útest_bifid5_squarer³   ‰   óD   ø€ Ý€AØ(Ð(Ð(Ð(€AÝˆq�!�Q‰Œ€AÝ˜ÑÔ Ò!Ð!Ð!Ð!Ð!Ð!rQ   c                  ó¶   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )	Nrƒ   r¢   r¡   Úchr£   úb acr¦   r\   )r   rP   rQ   rR   Útest_decipher_bifid5r¸   �   r¨   rQ   c                  ó¶   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        d	k    sJ ‚d S )
Nrƒ   r¡   ÚCPr{   r£   ÚCIr¥   r¦   rq   )r   rP   rQ   rR   Útest_encipher_bifid6r¼   —   r¨   rQ   c                  ó¶   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )	Nrƒ   rº   r¡   Úcir£   r·   r¦   r\   )r   rP   rQ   rR   Útest_decipher_bifid6r¿   ž   r¨   rQ   c                  ól   ‡— t           Šˆfd„} t          dd| ¦  «        }t          d¦  «        |k    sJ ‚d S )Nc                 ó:   •— t          ‰d| z  |z            ¦  «        S )Né   r   r«   s     €rR   r|   z$test_bifid6_square.<locals>.<lambda>§   r®   rQ   rÂ   r¯   )r   rA   r   r°   s     @rR   Útest_bifid6_squarerÃ   ¥   r´   rQ   c                  ó  — t          ddd¦  «        dk    sJ ‚t          ddd¦  «        dk    sJ ‚t          t          ¦  «        5  t          ddd¦  «        dk    sJ ‚t          ddd¦  «        d	u sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )
NrJ   rL   rX   ©rÂ   rX   r�   ©é   rL   ©rN   rX   é   F)r   rF   r=   rP   rQ   rR   Útest_rsa_public_keyrÊ   ¬   sì   € Ý˜!˜Q Ñ"Ô" fÒ,Ð,Ð,Ð,Ý˜!˜Q Ñ"Ô" gÒ-Ð-Ð-Ð-å	Õ)Ñ	*Ô	*ð 0ð 0Ý˜a  AÑ&Ô&¨&Ò0Ð0Ð0Ð0Ý˜a  AÑ&Ô&¨%Ð/Ð/Ð/Ð/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   Á-A>Á>BÂBc                  óD  — t          ddd¦  «        dk    sJ ‚t          ddd¦  «        dk    sJ ‚t          ddd¦  «        d	k    sJ ‚t          t          ¦  «        5  t          ddd¦  «        d
k    sJ ‚t          ddd¦  «        du sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NrJ   rL   rX   rÅ   r�   rÆ   é   é   )i›  ií  rÈ   rÉ   F)r   rF   r=   rP   rQ   rR   Útest_rsa_private_keyrÎ   µ   s	  € Ý˜1˜a Ñ#Ô# vÒ-Ð-Ð-Ð-Ý˜1˜a Ñ#Ô# wÒ.Ð.Ð.Ð.Ý˜2˜b Ñ#Ô# yÒ0Ð0Ð0Ð0å	Õ)Ñ	*Ô	*ð 1ð 1Ý˜q ! QÑ'Ô'¨6Ò1Ð1Ð1Ð1Ý˜q ! QÑ'Ô'¨5Ð0Ð0Ð0Ð0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s   Á-BÂBÂBc                  óî   — t          d¦  «        } t          d¦  «        }t          d¦  «        }t          d¦  «        }t          | ||¦  «        | |z  |fk    sJ ‚t          | ||¦  «        | |z  |fk    sJ ‚d S )NÚN101565610013301240713207239558950144682174355406589305284428666903702505233009ÚM89468719188754548893545560595594841381237600305314352142924213312069293984003Ú65537Úš8936505818327042395303988587447591295947962354408444794561435666999402846577625762582824202269399672579058991442587406384754958587400493169361356902030209)Úintr   r   )ÚpÚqÚeÚds       rR   Útest_rsa_large_keyrÙ   ¿   s�   € õ 	ð ñ 	ô 	€Aåð ñ 	ô 	€AåˆG‰Œ€AÝð #ñ 	$ô 	$€Aõ ˜!˜Q Ñ"Ô" q¨¡s¨A hÒ.Ð.Ð.Ð.Ý˜1˜a Ñ#Ô#¨¨!©¨Q xÒ/Ð/Ð/Ð/Ð/Ð/rQ   c                  óL  — t          ddd¦  «        } t          d| ¦  «        dk    sJ ‚t          ddd¦  «        } t          d| ¦  «        dk    sJ ‚t          t          ¦  «        5  t          ddd¦  «        } t          d| ¦  «        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S ©NrJ   rL   rX   r�   rÉ   )r   r   rF   r=   )Úpuks    rR   Útest_encipher_rsarÝ   Î   sü   € Ý
˜˜A˜qÑ
!Ô
!€CÝ˜˜3ÑÔ 1Ò$Ð$Ð$Ð$Ý
˜˜A˜qÑ
!Ô
!€CÝ˜˜3ÑÔ 1Ò$Ð$Ð$Ð$å	Õ)Ñ	*Ô	*ð )ð )Ý˜Q  1Ñ%Ô%ˆÝ˜A˜sÑ#Ô# qÒ(Ð(Ð(Ð(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )ó   Á#(BÂBÂ Bc                  óL  — t          ddd¦  «        } t          d| ¦  «        dk    sJ ‚t          ddd¦  «        } t          d| ¦  «        dk    sJ ‚t          t          ¦  «        5  t          ddd¦  «        } t          d| ¦  «        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S rÛ   )r   r   rF   r=   )Úprks    rR   Útest_decipher_rsará   Ù   sü   € Ý
˜!˜Q Ñ
"Ô
"€CÝ˜˜3ÑÔ 1Ò$Ð$Ð$Ð$Ý
˜!˜Q Ñ
"Ô
"€CÝ˜˜3ÑÔ 1Ò$Ð$Ð$Ð$å	Õ)Ñ	*Ô	*ð )ð )Ý˜a  AÑ&Ô&ˆÝ˜A˜sÑ#Ô# qÒ(Ð(Ð(Ð(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )rÞ   c            	      ój  — t          ddddddd¦  «        } t          ddddddd¦  «        }| dk    sJ ‚|dk    sJ ‚d	}t          d|z  d
z
  | ¦  «        }|dk    sJ ‚t          ||¦  «        d
z   dz  }||k    sJ ‚t          ddddd¦  «        }t          ddddd¦  «        }t          ddddd¦  «        }t          ddddd¦  «        }|dk    sJ ‚|dk    sJ ‚|dk    sJ ‚|dk    sJ ‚d}t          t          ||¦  «        |¦  «        }|dk    sJ ‚t          t          ||¦  «        |¦  «        }||k    sJ ‚d S )NrJ   rL   r�   é   é   é   )éNu  rã   )ræ   i7  é
   rÇ   i‘F  é5   é)   é+   é/   éa   )éÑC ré   )rí   i™| )rí   rì   )rí   i!ô i!0  iô€ )r   r   r   r   )	rÜ   rà   ÚmsgÚ	encryptedÚ	decryptedÚpuk1Úprk1Úpuk2Úprk2s	            rR   Ú!test_mutltiprime_rsa_full_examplerõ   ä   sª  € õ ˜˜A˜q ! R¨¨QÑ
/Ô
/€CÝ
˜!˜Q  1 b¨"¨aÑ
0Ô
0€CØ�*ÒÐÐÐØ�,ÒÐÐÐà
€CÝ˜Q ™W r™\¨3Ñ/Ô/€IØ˜ÒÐÐÐÝ˜i¨Ñ-Ô-°Ñ2°aÑ7€IØ˜ÒÐÐÐõ ˜"˜b " b¨"Ñ-Ô-€DÝ˜2˜r 2 r¨2Ñ.Ô.€DÝ˜"˜b " b¨"Ñ-Ô-€DÝ˜2˜r 2 r¨2Ñ.Ô.€Dà�=Ò Ð Ð Ð ØÐ$Ò$Ð$Ð$Ð$Ø�=Ò Ð Ð Ð ØÐ$Ò$Ð$Ð$Ð$à
€CÝ�\¨#¨tÑ4Ô4°dÑ;Ô;€IØ˜ÒÐÐÐÝ�\¨)°TÑ:Ô:¸DÑAÔA€IØ˜ÒÐÐÐÐÐrQ   c            
      ó¤  — t          d¦  «        } t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }d}t          | |||||¦  «        }t          | |||||¦  «        }d}t          ||¦  «        }	t          ||| ||||g¦  «        }
|	|
k    sJ ‚t	          |	|¦  «        t	          |	|| ||||g¦  «        k    sJ ‚d S )NÁ5  101771576071542450680238615036930821209064871437250622834065015408225822620404699983829716714082136463818069719487950024555765445186962893346463841419427008800341257468600224049986260471922572481630144688417254769186394157267097360778136329612909110256421232977833028677441206049309220354796014376698325101693Á4  28752342353095132872290181526607275886182793241660805077850801756895127977542869729522735531281818618305768362897386687452503402819969112887067641411845844290003577887448262476551386164327966696316822188398336199002306588703902894100476186823849595103239410527279605442148285816149368667083114802852804976893Á5  176982292598688257768795007363501868388509619359563101343782618977186218671746306754136969481624522529192113803880017112559607315449521981157084370187887650624061033066022458512942411841187478937899723152771600850861641198795360418753353848448205660287479617671726408053319619892052000850883994343378882717849Á4  68925428438585431029269182233502611027091755064643742383515623643213105828968933955293670749428083531871387944227457184196452829123186515721260426690367759918078989691645612028911275283598502265889669730331688206825220074713977607415178738015831030364290585369150502819743827343552098197095520550865360159439Á4  69035483433453632820551311892368908779778144568711455301541094314870476423226953576968609257479231896350331830698238209105217117290910679774888326149322416241405010692044244589681980660015448444826108008217972129130625571421904893252804729877353352739420480574842850202181462656251626522910618936534699566291i  iè  )rÔ   r   r   r   r   )rÕ   rÖ   ÚrÚsÚtr×   rÜ   rà   Ú	plaintextÚciphertext_1Úciphertext_2s              rR   Útest_rsa_crt_extremer    s2  € Ýð	Hñ	Iô 	I€Aõ 	ð	Gñ	Hô 	H€Aõ 	ð	Hñ	Iô 	I€Aõ 	ð	Gñ	ô 	€Aõ 	ð	Gñ	ô 	€Að 	€AÝ
˜˜A˜q ! Q¨Ñ
*Ô
*€CÝ
˜!˜Q  1 a¨Ñ
+Ô
+€Cà€IÝ 	¨3Ñ/Ô/€LÝ 	¨3°°A°q¸!¸Q°Ñ@Ô@€LØ˜<Ò'Ð'Ð'Ð'Ý˜ cÑ*Ô*Ý�\ 3¨¨A¨q°!°Q¨Ñ8Ô8ò9ð 9ð 9ð 9ð 9ð 9rQ   c            	      óF  — d\  } }d}t          | ||d¬¦  «        }t          | ||d¬¦  «        }t          |d         ¦  «        D ]]}t          ||¦  «        }t	          ||¦  «        }	 ||k    sJ ‚Œ,# t
          $ r% t          d                     |||¦  «        ¦  «        ‚w xY wd S )N)é=   rè   é   Ú
Carmichael)Útotientr   úRThe RSA is not correctly decrypted (Original : {}, Encrypted : {}, Decrypted : {})©r   r   Úranger   r   ÚAssertionErrorÚformat)rÕ   rÖ   r×   rÜ   rà   rî   rï   rð   s           rR   Útest_rsa_exhaustiver  7  sÚ   € Ø�D€A€qØ
€AÝ
˜˜A˜q¨,Ð
7Ñ
7Ô
7€CÝ
˜!˜Q ¨<Ð
8Ñ
8Ô
8€Cå�S˜”V‰}Œ}ð 
ð 
ˆÝ   cÑ*Ô*ˆ	Ý  ¨CÑ0Ô0ˆ	ð	Ø Ò#Ð#Ð#Ð#Ð#øÝð 	ð 	ð 	Ý ðBç’˜˜Y¨	Ñ2Ô2ñô ð ð	øøøð
ð 
s   Á&A/Á//Bc            	      ó8  — g d¢} d}| |gz   }t          |ddiŽ}t          |ddiŽ}|d         }t          |¦  «        D ]]}t          ||¦  «        }t	          ||¦  «        }	 ||k    sJ ‚Œ,# t
          $ r% t          d                     |||¦  «        ¦  «        ‚w xY wd S )N)rL   r�   rã   rä   rã   r  r  r   r  r	  ©	Úprimesr×   ÚargsrÜ   rà   Únrî   rï   rð   s	            rR   Útest_rsa_multiprime_exhanstiver  J  sâ   € Øˆ]ˆ]€FØ	€AØ�Q�C‰<€DÝ
˜$Ð
5¨Ð
5Ð
5€CÝ
˜4Ð
6¨Ð
6Ð
6€CØˆAŒ€Aå�Q‰xŒxð 
ð 
ˆÝ   cÑ*Ô*ˆ	Ý  ¨CÑ0Ô0ˆ	ð	Ø Ò#Ð#Ð#Ð#Ð#øÝð 	ð 	ð 	Ý ðBç’˜˜Y¨	Ñ2Ô2ñô ð ð	øøøð
ð 
s   ÁA(Á(/Bc            	      ób  — g d¢} d}| |gz   }t          |ddiŽ}t          |ddiŽ}|d         }t          |¦  «        D ]r}t          ||¦  «        dk    rŒt	          ||¦  «        }t          ||¦  «        }	 ||k    sJ ‚ŒA# t          $ r% t          d                     |||¦  «        ¦  «        ‚w xY wd S )N)r�   r�   rã   rã   Ú
multipowerTr   rX   r  )r   r   r
  r@   r   r   r  r  r  s	            rR   Útest_rsa_multipower_exhanstiver  _  sø   € ØˆYˆY€FØ	€AØ�Q�C‰<€DÝ
˜$Ð
0¨4Ð
0Ð
0€CÝ
˜4Ð
1¨DÐ
1Ð
1€CØˆAŒ€Aå�Q‰xŒxð ð ˆÝˆs�A‰;Œ;˜!ÒÐØå   cÑ*Ô*ˆ	Ý  ¨CÑ0Ô0ˆ	ð	Ø Ò#Ð#Ð#Ð#Ð#øÝð 	ð 	ð 	Ý ðBç’˜˜Y¨	Ñ2Ô2ñô ð ð	øøøðð s   Á4A=Á=/B,c                  ó–   — t          dddd¦  «        dk    sJ ‚t          dddd¦  «        dk    sJ ‚t          dddd¦  «        dk    sJ ‚d S )NrX   rJ   ©r�   rJ   ©rÉ   rL   ©rã   rJ   )r   rP   rQ   rR   Útest_kid_rsa_public_keyr  w  se   € Ý˜a  A qÑ)Ô)¨VÒ3Ð3Ð3Ð3Ý˜a  A qÑ)Ô)¨VÒ3Ð3Ð3Ð3Ý˜a  A qÑ)Ô)¨VÒ3Ð3Ð3Ð3Ð3Ð3rQ   c                  ó–   — t          dddd¦  «        dk    sJ ‚t          dddd¦  «        dk    sJ ‚t          dddd¦  «        dk    sJ ‚d S )NrX   rJ   ©r�   rL   r  ©rã   rN   )r   rP   rQ   rR   Útest_kid_rsa_private_keyr  }  se   € Ý˜q ! Q¨Ñ*Ô*¨fÒ4Ð4Ð4Ð4Ý˜q ! Q¨Ñ*Ô*¨fÒ4Ð4Ð4Ð4Ý˜q ! Q¨Ñ*Ô*¨fÒ4Ð4Ð4Ð4Ð4Ð4rQ   c                  óŠ   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )NrX   r  rJ   r  rL   r  )r   rP   rQ   rR   Útest_encipher_kid_rsar!  ƒ  óY   € Ý˜A˜vÑ&Ô&¨!Ò+Ð+Ð+Ð+Ý˜A˜vÑ&Ô&¨!Ò+Ð+Ð+Ð+Ý˜A˜vÑ&Ô&¨!Ò+Ð+Ð+Ð+Ð+Ð+rQ   c                  óŠ   — t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚t          dd¦  «        dk    sJ ‚d S )NrJ   r  rX   rL   r  r  )r   rP   rQ   rR   Útest_decipher_kid_rsar$  ‰  r"  rQ   c                  ó²  — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          dd	¬
¦  «        dk    sJ ‚t          dd¬
¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )Nr\   z.-|-...|-.-.zSMS z...|--|...||zSMS
r¯   ú z||ú`)Úsepz``z````z!@#$%^&*()_+z/-.-.--|.--.-.|...-..-|-.--.|-.--.-|..--.-|.-.-.Ú12345z.----|..---|...--|....-|.....Ú67890z-....|--...|---..|----.|-----)r!   rP   rQ   rR   Útest_encode_morser+  �  s  € Ý˜ÑÔ .Ò0Ð0Ð0Ð0Ý˜ÑÔ >Ò1Ð1Ð1Ð1Ý˜Ñ Ô  NÒ2Ð2Ð2Ð2Ý˜ÑÔ˜rÒ!Ð!Ð!Ð!Ý˜ÑÔ Ò$Ð$Ð$Ð$Ý˜ Ð%Ñ%Ô%¨Ò-Ð-Ð-Ð-Ý˜ Ð&Ñ&Ô&¨&Ò0Ð0Ð0Ð0Ý˜Ñ'Ô'Ð+\Ò\Ð\Ð\Ð\Ý˜Ñ Ô Ð$CÒCÐCÐCÐCÝ˜Ñ Ô Ð$CÒCÐCÐCÐCÐCÐCrQ   c                  ó†   — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          t          d„ ¦  «         d S )Nz
-.-|.|-.--ÚKEYz.-.|..-|-.||ÚRUNc                  ó    — t          d¦  «        S )Nz	.....----)r"   rP   rQ   rR   r|   z#test_decode_morse.<locals>.<lambda>Ÿ  s   € �\¨+Ñ6Ô6€ rQ   )r"   rE   ÚKeyErrorrP   rQ   rR   Útest_decode_morser1  œ  sN   € Ý˜Ñ%Ô%¨Ò.Ð.Ð.Ð.Ý˜Ñ'Ô'¨5Ò0Ð0Ð0Ð0Ý
�8Ð6Ð6Ñ7Ô7Ð7Ð7Ð7rQ   c                  ó  — t          t          d„ ¦  «         t          t          d„ ¦  «         t          d¦  «        } t           | d¦  «        g | d¦  «        gd¦  «         | d¦  «         | d¦  «        gk    sJ ‚t           | d¦  «        g | d¦  «        gd¦  «         | d¦  «         | d¦  «        gk    sJ ‚t          d¦  «        } t           | d¦  «        g | d¦  «        gd¦  «         | d¦  «         | d¦  «        gk    sJ ‚t           | d¦  «        g | d¦  «        gd¦  «         | d¦  «         | d¦  «        gk    sJ ‚t           | d¦  «        g | d¦  «        gd¦  «         | d¦  «         | d¦  «        gk    sJ ‚d S )Nc                  ó&   — t          ddgd¦  «        S ©NrX   ©r    rP   rQ   rR   r|   z$test_lfsr_sequence.<locals>.<lambda>£  s   € �m¨A°¨s°AÑ6Ô6€ rQ   c                  ó&   — t          dgdd¦  «        S r4  r5  rP   rQ   rR   r|   z$test_lfsr_sequence.<locals>.<lambda>¤  s   € �m¨Q¨C°°AÑ6Ô6€ rQ   rJ   rX   r   rL   )rE   Ú	TypeErrorrD   r    )ÚFs    rR   Útest_lfsr_sequencer9  ¢  sŸ  € Ý
�9Ð6Ð6Ñ7Ô7Ð7Ý
�9Ð6Ð6Ñ7Ô7Ð7Ý
ˆ1‰Œ€AÝ˜!˜!˜A™$œ$˜ ! ! A¡$¤$ ¨Ñ+Ô+°°°!±´°a°a¸±d´d¨|Ò;Ð;Ð;Ð;Ý˜!˜!˜A™$œ$˜ ! ! A¡$¤$ ¨Ñ+Ô+°°°!±´°a°a¸±d´d¨|Ò;Ð;Ð;Ð;Ý
ˆ1‰Œ€AÝ˜!˜!˜A™$œ$˜ ! ! A¡$¤$ ¨Ñ+Ô+°°°!±´°a°a¸±d´d¨|Ò;Ð;Ð;Ð;Ý˜!˜!˜A™$œ$˜ ! ! A¡$¤$ ¨Ñ+Ô+°°°!±´°a°a¸±d´d¨|Ò;Ð;Ð;Ð;Ý˜!˜!˜A™$œ$˜ ! ! A¡$¤$ ¨Ñ+Ô+°°°!±´°a°a¸±d´d¨|Ò;Ð;Ð;Ð;Ð;Ð;rQ   c                  ó  — t          t          d„ ¦  «         t          d¦  «        } t           | d¦  «         | d¦  «        g | d¦  «         | d¦  «        gd¦  «        }t	          |dd¦  «        dk    sJ ‚t	          |dd¦  «        dk    sJ ‚d S )Nc                  ó$   — t          ddd¦  «        S )NrX   rJ   rL   )r   rP   rQ   rR   r|   z+test_lfsr_autocorrelation.<locals>.<lambda>¯  s   € Õ2°1°a¸Ñ;Ô;€ rQ   rJ   rX   r   r�   rY   )rE   r7  rD   r    r   )r8  rý   s     rR   Útest_lfsr_autocorrelationr<  ®  sš   € Ý
�9Ð;Ð;Ñ<Ô<Ð<Ý
ˆ1‰Œ€AÝ�q�q˜‘t”t˜Q˜Q˜q™TœT�l Q Q q¡T¤T¨1¨1¨Q©4¬4 L°!Ñ4Ô4€AÝ  1 aÑ(Ô(¨AÒ-Ð-Ð-Ð-Ý  1 aÑ(Ô(¨BÒ.Ð.Ð.Ð.Ð.Ð.rQ   c                  ó˜  — t          d¦  «        } t          d¦  «        }t           | d¦  «         | d¦  «        g | d¦  «         | d¦  «        gd¦  «        }t          |¦  «        |dz  dz   k    sJ ‚t           | d¦  «         | d¦  «        g | d¦  «         | d¦  «        gd¦  «        }t          |¦  «        |dz  |z   dz   k    sJ ‚d S )NrJ   ÚxrX   r   r�   )rD   r   r    r   )r8  r>  rý   s      rR   Útest_lfsr_connection_polynomialr?  ¶  sÖ   € Ý
ˆ1‰Œ€AÝ�‰Œ€AÝ�q�q˜‘t”t˜Q˜Q˜q™TœT�l Q Q q¡T¤T¨1¨1¨Q©4¬4 L°!Ñ4Ô4€AÝ% aÑ(Ô(¨A¨q©D°1©HÒ4Ð4Ð4Ð4Ý�q�q˜‘t”t˜Q˜Q˜q™TœT�l Q Q q¡T¤T¨1¨1¨Q©4¬4 L°!Ñ4Ô4€AÝ% aÑ(Ô(¨A¨q©D°1©H°q©LÒ8Ð8Ð8Ð8Ð8Ð8rQ   c                  ó¸   — t          d¬¦  «        \  } }}t          | ¦  «        sJ ‚t          || ¦  «        sJ ‚t          t	          | ¦  «        ¦  «        dk    sJ ‚d S ©Néd   ©Údigitéf   )r#   rB   rC   ÚlenÚbin)rx   r¦   Ú_s      rR   Útest_elgamal_private_keyrI  ¿  sb   € Ý!¨Ð,Ñ,Ô,�G€A€qˆ!Ý�1‰:Œ:ÐÐˆ:Ý˜Q Ñ"Ô"Ð"Ð"Ð"Ý�s�1‰vŒv‰;Œ;˜#ÒÐÐÐÐÐrQ   c                  ó  ‡‡— t          d¦  «        Št          ‰¦  «        } | d         Š‰dz
  t          t          ‰dz
  | ¦  «        ‰¦  «        k    sJ ‚t	          t
          ˆˆfd„¦  «         t	          t
          ˆfd„¦  «         d S )Nr�   r   rX   c                  ó$   •— t          ‰ ‰¦  «        S )N©r%   )ÚPÚdks   €€rR   r|   ztest_elgamal.<locals>.<lambda>Ë  s   ø€ Õ/°°2Ñ6Ô6€ rQ   c                  ó$   •— t          d‰ ¦  «        S )NrY   rL  )rN  s   €rR   r|   ztest_elgamal.<locals>.<lambda>Ì  s   ø€ Õ/°°BÑ7Ô7€ rQ   )r#   r$   r&   r%   rE   r~   )ÚekrM  rN  s    @@rR   Útest_elgamalrQ  Æ  s“   øø€ Ý	˜QÑ	Ô	€BÝ	˜BÑ	Ô	€BØ
ˆ1Œ€AØˆq‰5Õ$Õ%5°a¸!±e¸RÑ%@Ô%@À"ÑEÔEÒEÐEÐEÐEÝ
�:Ð6Ð6Ð6Ð6Ð6Ñ7Ô7Ð7Ý
�:Ð7Ð7Ð7Ð7Ñ8Ô8Ð8Ð8Ð8rQ   c                  ó¸   — t          d¬¦  «        \  } }}t          | ¦  «        sJ ‚t          || ¦  «        sJ ‚t          t	          | ¦  «        ¦  «        dk    sJ ‚d S rA  )r'   rB   rC   rF  rG  )rÕ   ÚgrH  s      rR   Útest_dh_private_keyrT  Ï  sb   € Ý SÐ)Ñ)Ô)�G€A€qˆ!Ý�1‰:Œ:ÐÐˆ:Ý˜Q Ñ"Ô"Ð"Ð"Ð"Ý�s�1‰vŒv‰;Œ;˜#ÒÐÐÐÐÐrQ   c                  ó¨   — t          d¬¦  «        \  } }}t          | ||f¦  «        \  }}}| |k    sJ ‚||k    sJ ‚|t          ||| ¦  «        k    sJ ‚d S )NrB  rC  )r'   r(   Úpow)Úp1Úg1rx   Úp2Úg2Úgas         rR   Útest_dh_public_keyr\  Ö  sl   € Ý sÐ+Ñ+Ô+�I€BˆˆAÝ  B¨˜{Ñ+Ô+�J€BˆˆBØ�Š8ˆ8ˆ8ˆ8Ø�Š8ˆ8ˆ8ˆ8Ø•�R˜˜B‘”ÒÐÐÐÐÐrQ   c                  óì   — t          d¬¦  «        } t          | ¦  «        \  }}}t          d|¦  «        }t          |||f|¦  «        }|t	          |||¦  «        k    sJ ‚t          t          d„ ¦  «         d S )NrB  rC  rJ   c                  ó"   — t          dd¦  «        S )N)i  é   i5  iÐ  )r)   rP   rQ   rR   r|   z$test_dh_shared_key.<locals>.<lambda>ä  s   € �}¨_¸dÑCÔC€ rQ   )r'   r(   rG   r)   rV  rE   r~   )rà   rÕ   rH  r[  r¦   Úsks         rR   Útest_dh_shared_keyra  Þ  s|   € Ý
 Ð
%Ñ
%Ô
%€CÝ˜SÑ!Ô!�H€A€qˆ"Ý�!�Q‰Œ€AÝ	˜˜1˜b�z 1Ñ	%Ô	%€BØ•�R˜˜A‘”ÒÐÐÐÝ
�:ÐCÐCÑDÔDÐDÐDÐDrQ   c                  óŠ   — t          dd¦  «        dk    sJ ‚t          t          d„ ¦  «         t          t          d„ ¦  «         d S )Nr¦   r{   Úbac                  ó"   — t          dd¦  «        S )Nr{   Úace©r/   rP   rQ   rR   r|   z!test_padded_key.<locals>.<lambda>é  s   € �z¨$°Ñ6Ô6€ rQ   c                  ó"   — t          dd¦  «        S )Nr{   Úabbarf  rP   rQ   rR   r|   z!test_padded_key.<locals>.<lambda>ê  s   € �z¨$°Ñ7Ô7€ rQ   )r/   rE   r~   rP   rQ   rR   Útest_padded_keyri  ç  sK   € Ý�c˜4Ñ Ô  DÒ(Ð(Ð(Ð(Ý
�:Ð6Ð6Ñ7Ô7Ð7Ý
�:Ð7Ð7Ñ8Ô8Ð8Ð8Ð8rQ   c                  ón  — t          t          d„ ¦  «         t          ddd¦  «        dk    sJ ‚t          t          d„ ¦  «         t          ddd¦  «        dk    sJ ‚t          t          d„ ¦  «         t          d¦  «        t          d	¦  «        k    sJ ‚t	          d
¦  «        t	          d¦  «        k    sJ ‚d S )Nc                  ó$   — t          ddd¦  «        S )Nrv   r¦   Úabcde)r,   rP   rQ   rR   r|   ztest_bifid.<locals>.<lambda>î  ó   € �~¨e°S¸'ÑBÔB€ rQ   rv   r¦   ÚabcdÚbdbc                  ó$   — t          ddd¦  «        S )Nro  r¦   rl  )r-   rP   rQ   rR   r|   ztest_bifid.<locals>.<lambda>ð  rm  rQ   c                  ó    — t          d¦  «        S )Nrl  )r.   rP   rQ   rR   r|   ztest_bifid.<locals>.<lambda>ò  s   € �|¨GÑ4Ô4€ rQ   ÚBÚBACDEFGHIKLMNOPQRSTUVWXYZÚB0Ú$B0ACDEFGHIJKLMNOPQRSTUVWXYZ123456789)rE   r~   r,   r   r   rP   rQ   rR   Ú
test_bifidrv  í  sØ   € Ý
�:ÐBÐBÑCÔCÐCÝ˜%  fÑ-Ô-°Ò6Ð6Ð6Ð6Ý
�:ÐBÐBÑCÔCÐCÝ˜%  fÑ-Ô-°Ò6Ð6Ð6Ð6Ý
�:Ð4Ð4Ñ5Ô5Ð5Ý˜ÑÔÝÐ1Ñ2Ô2ò3ð 3ð 3ð 3å˜ÑÔÝÐ<Ñ=Ô=ò>ð >ð >ð >ð >ð >rQ   c                  óä   — g d¢} g d¢}g d¢}t          | |¦  «        D ]R\  }}t          ||¦  «        }|D ]:}t          ||¦  «        }t          ||¦  «        }t	          ||¦  «        }	|	|k    sJ ‚Œ;ŒSd S )N)éƒ   é‰   é‹   é•   é—   é�   é£   é§   é­   é³   éµ   é¿   éÁ   éÅ   éÇ   )éY   rì   ée   ég   ék   ém   éq   é   rx  ry  rz  r{  r|  r}  rë   )r   iW€  iÿ…  iÕ9  é   iS( ià•  éÔ  iÄë  iÛÉ  i™+ ižñ  iåH  )Úzipr4   r3   r2   r1   ©
ÚpsÚqsÚmessagesrÕ   rÖ   Úprirî   ÚpubÚencÚdecs
             rR   Útest_encipher_decipher_gmr™  ù  s»   € ð
-ð 
-ð 
-€Bð
,ð 
,ð 
,€Bðð ð €Hõ �B˜‘”ð ð ‰ˆˆ1Ý˜Q Ñ"Ô"ˆØð 	ð 	ˆCÝ  1Ñ%Ô%ˆCÝ˜c 3Ñ'Ô'ˆCÝ˜c 3Ñ'Ô'ˆCØ˜#’:�:�:�:�:ð		ðð rQ   c                  óŠ   — t          t          d„ ¦  «         t          t          d„ ¦  «         t          t          d„ ¦  «         d S )Nc                  ó"   — t          dd¦  «        S )Nrå   rÇ   ©r3   rP   rQ   rR   r|   z%test_gm_private_key.<locals>.<lambda>  ó   € �}¨R°Ñ4Ô4€ rQ   c                  ó"   — t          dd¦  «        S )Nr   rœ  rP   rQ   rR   r|   z%test_gm_private_key.<locals>.<lambda>  ó   € �}¨Q°Ñ2Ô2€ rQ   c                  ó"   — t          dd¦  «        S )Nr   r�   rœ  rP   rQ   rR   r|   z%test_gm_private_key.<locals>.<lambda>  rŸ  rQ   )rE   r~   r3   rP   rQ   rR   Útest_gm_private_keyr¡    sD   € Ý
�:Ð4Ð4Ñ5Ô5Ð5Ý
�:Ð2Ð2Ñ3Ô3Ð3Ý
�:Ð2Ð2Ñ3Ô3Ð3Ø*Ð*rQ   c                  ó¢   — dt          dd¦  «        d         k    sJ ‚dt          dd¦  «        d         k    sJ ‚t          t          d„ ¦  «         d S )	NiC  r  é   rX   rÇ   rL   r�   c                  ó"   — t          dd¦  «        S )NrÇ   r£  rœ  rP   rQ   rR   r|   z$test_gm_public_key.<locals>.<lambda>  r�  rQ   )r3   rE   r~   rP   rQ   rR   Útest_gm_public_keyr¥    s\   € Ø•-  BÑ'Ô'¨Ô*Ò*Ð*Ð*Ð*Ø•-  1Ñ%Ô% aÔ(Ò(Ð(Ð(Ð(Ý
�:Ð4Ð4Ñ5Ô5Ð5Ð5Ð5rQ   c                  óè   — g d¢} g d¢x}}g d¢}t          | |¦  «        D ]R\  }}t          ||¦  «        }|D ]:}t          ||¦  «        }t          ||¦  «        }t	          ||¦  «        }	|	|k    sJ ‚Œ;ŒSd S )N)éC   rã   éG   r‰  rä   rê   rŠ  rë   éO   r£  éS   rÌ   é;   r�  é   )rã   r¨  r‰  rä   rê   rŠ  rë   r©  r£  rª  rÌ   r«  r�  r¬  r§  )r   iH  iW  é”   rŽ  iö  i  r�  i[  i  iþ  ij  éº   )r�  r7   r8   r5   r6   r‘  s
             rR   Útest_encipher_decipher_bgr¯    sÂ   € ð
'ð 
'ð 
'€Bð0ð 0ð 0ð 0€Bˆðð ð €Hõ
 �B˜‘”ð ð ‰ˆˆ1Ý˜Q Ñ"Ô"ˆØð 	ð 	ˆCÝ  1Ñ%Ô%ˆCÝ˜c 3Ñ'Ô'ˆCÝ˜c 3Ñ'Ô'ˆCØ˜#’:�:�:�:�:ð		ðð rQ   c                  óŠ   — t          t          d„ ¦  «         t          t          d„ ¦  «         t          t          d„ ¦  «         d S )Nc                  ó"   — t          dd¦  «        S )NrÉ   rj   ©r7   rP   rQ   rR   r|   z%test_bg_private_key.<locals>.<lambda>*  s   € �~¨a°Ñ4Ô4€ rQ   c                  ó"   — t          dd¦  «        S )NrÉ   r²  rP   rQ   rR   r|   z%test_bg_private_key.<locals>.<lambda>+  s   € �~¨a°Ñ3Ô3€ rQ   c                  ó"   — t          dd¦  «        S ©Nrå   r  r²  rP   rQ   rR   r|   z%test_bg_private_key.<locals>.<lambda>,  ó   € �~¨b°"Ñ5Ô5€ rQ   )rE   r~   r7   rP   rQ   rR   Útest_bg_private_keyr·  )  sD   € Ý
�:Ð4Ð4Ñ5Ô5Ð5Ý
�:Ð3Ð3Ñ4Ô4Ð4Ý
�:Ð5Ð5Ñ6Ô6Ð6Ø+Ð+rQ   c                  óŠ   — dt          dd¦  «        k    sJ ‚dt          dd¦  «        k    sJ ‚t          t          d„ ¦  «         d S )Ni­  r§  r©  iÉ  rÌ   r¬  c                  ó"   — t          dd¦  «        S rµ  r²  rP   rQ   rR   r|   z$test_bg_public_key.<locals>.<lambda>2  r¶  rQ   )r8   rE   r~   rP   rQ   rR   Útest_bg_public_keyrº  /  sR   € Ø•=  RÑ(Ô(Ò(Ð(Ð(Ð(Ø•-  BÑ'Ô'Ò'Ð'Ð'Ð'Ý
�:Ð5Ð5Ñ6Ô6Ð6Ð6Ð6rQ   N)Ú
sympy.corer   Úsympy.crypto.cryptor   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   Úsympy.external.gmpyr@   Úsympy.matricesrA   Úsympy.ntheoryrB   rC   Úsympy.polys.domainsrD   Úsympy.testing.pytestrE   rF   Úsympy.core.randomrG   rS   rV   rZ   r_   rb   rl   ro   rt   r   r‡   r�   r›   rŸ   r§   r³   r¸   r¼   r¿   rÃ   rÊ   rÎ   rÙ   rÝ   rá   rõ   r  r  r  r  r  r  r!  r$  r+  r1  r9  r<  r?  rI  rQ  rT  r\  ra  ri  rv  r™  r¡  r¥  r¯  r·  rº  rP   rQ   rR   ú<module>rÃ     s  ðØ Ð Ð Ð Ð Ð ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð" $Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø "Ð "Ð "Ð "Ð "Ð "à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð@ð @ð @ð
@ð @ð @ð,ð ,ð ,ð.ð .ð .ð*ð *ð *ð4ð 4ð 4ð+ð +ð +ðAð Að Að
:ð :ð :ð@ð @ð @ð@ð @ð @ð6ð 6ð 6ð
-ð 
-ð 
-ð1ð 1ð 1ð"ð "ð "ð1ð 1ð 1ð1ð 1ð 1ð1ð 1ð 1ð"ð "ð "ð0ð 0ð 0ð1ð 1ð 1ð0ð 0ð 0ð)ð )ð )ð)ð )ð )ðð ð ðB/9ð /9ð /9ðdð ð ð&ð ð ð*ð ð ð04ð 4ð 4ð5ð 5ð 5ð,ð ,ð ,ð,ð ,ð ,ð
Dð 
Dð 
Dð8ð 8ð 8ð	<ð 	<ð 	<ð/ð /ð /ð9ð 9ð 9ðð ð ð9ð 9ð 9ðð ð ð ð  ð  ðEð Eð Eð9ð 9ð 9ð	>ð 	>ð 	>ðð ð ð$+ð +ð +ð6ð 6ð 6ð
ð ð ð$,ð ,ð ,ð7ð 7ð 7ð 7ð 7rQ   