§
    pïgÆ/  ã                   óÞ   — d dl Z d dlmZmZ d dlmZ d dlmZ e j        rd dl	m
Z
 dd„Zdd„Z G d„ d
ej        ¦  «        Zd	efd„Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )é    N)ÚUnsupportedAlgorithmÚ_Reasons)Úserialization)Údh)ÚBackendÚbackendr   c                 óæ  — |j         }|j        }|                     | ¦  «        }|                     ||j        k    ¦  «         |                     ||j        ¦  «        }|j        r�|                     d¦  «        }| 	                    | |j        ||j        ¦  «         | 
                    |d         ¦  «        }|                     ||j        ||j        ¦  «        }|                     |dk    ¦  «         |S ©Nú	BIGNUM **r   é   )Ú_libÚ_ffiÚDHparams_dupÚopenssl_assertÚNULLÚgcÚDH_freeÚCRYPTOGRAPHY_IS_LIBRESSLÚnewÚDH_get0_pqgÚBN_dupÚDH_set0_pqg)Údh_cdatar   ÚlibÚffiÚparam_cdataÚqÚq_dupÚress           úI/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/dh.pyÚ_dh_params_dupr!      sÙ   € Ø
Œ,€CØ
Œ,€Cà×"Ò" 8Ñ,Ô,€KØ×Ò˜;¨#¬(Ò2Ñ3Ô3Ð3Ø—&’&˜ c¤kÑ2Ô2€KØ
Ô#ð )à�GŠG�KÑ Ô ˆØ�Š˜ #¤(¨A¨s¬xÑ8Ô8Ð8Ø—
’
˜1˜Qœ4Ñ Ô ˆØ�oŠo˜k¨3¬8°U¸C¼HÑEÔEˆØ×Ò˜s ašxÑ(Ô(Ð(àÐó    ÚreturnÚ_DHParametersc                 óB   — t          | |¦  «        }t          ||¦  «        S ©N)r!   r$   )r   r   r   s      r    Ú_dh_cdata_to_parametersr'   "   s!   € Ý  ¨7Ñ3Ô3€KÝ˜ +Ñ.Ô.Ð.r"   c                   ój   — e Zd Zdd„Zdej        fd„Zdej        fd„Zde	j
        de	j        defd	„Zd
S )r$   r   r   c                 ó"   — || _         || _        d S r&   )Ú_backendÚ	_dh_cdata)Úselfr   r   s      r    Ú__init__z_DHParameters.__init__(   s   € ØˆŒØ!ˆŒˆˆr"   r#   c                 óø  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         |d         | j         j        j        k    rd }n | j                              |d         ¦  «        }t          j
        | j                              |d         ¦  «        | j                              |d         ¦  «        |¬¦  «        S )Nr   r   ©ÚpÚgr   )r*   r   r   r   r   r+   r   r   Ú
_bn_to_intr   ÚDHParameterNumbers)r,   r0   r1   r   Úq_vals        r    Úparameter_numbersz_DHParameters.parameter_numbers,   s;  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×&Ò& t¤~°q¸!¸QÑ?Ô?Ð?ØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEàˆQŒ4�4”=Ô%Ô*Ò*Ð*ØˆEˆEà”M×,Ò,¨Q¨q¬TÑ2Ô2ˆEÝÔ$ØŒm×&Ò& q¨¤tÑ,Ô,ØŒm×&Ò& q¨¤tÑ,Ô,Øð
ñ 
ô 
ð 	
r"   c                 ó6   — | j                              | ¦  «        S r&   )r*   Úgenerate_dh_private_key©r,   s    r    Úgenerate_private_keyz"_DHParameters.generate_private_key>   s   € ØŒ}×4Ò4°TÑ:Ô:Ð:r"   ÚencodingÚformatc                 ó  — |t           j        j        u rt          d¦  «        ‚|t           j        j        urt          d¦  «        ‚| j        j         	                    d¦  «        }| j        j
                             | j        | j        j        j        || j        j        j        ¦  «         |d         | j        j        j        k    r+| j        j
        j        st          dt           j        ¦  «        ‚|t           j        j        u r?|d         | j        j        j        k    r| j        j
        j        }ns| j        j
        j        }na|t           j        j        u r?|d         | j        j        j        k    r| j        j
        j        }n!| j        j
        j        }nt          d¦  «        ‚| j                             ¦   «         } ||| j        ¦  «        }| j                             |dk    ¦  «         | j                             |¦  «        S )Nz!OpenSSH encoding is not supportedz%Only PKCS3 serialization is supportedr   r   ú'DH X9.42 serialization is not supportedz/encoding must be an item from the Encoding enumr   )r   ÚEncodingÚOpenSSHÚ	TypeErrorÚParameterFormatÚPKCS3Ú
ValueErrorr*   r   r   r   r   r+   r   ÚCryptography_HAS_EVP_PKEY_DHXr   r   ÚUNSUPPORTED_SERIALIZATIONÚPEMÚPEM_write_bio_DHxparamsÚPEM_write_bio_DHparamsÚDERÚCryptography_i2d_DHxparams_bioÚi2d_DHparams_bioÚ_create_mem_bio_gcr   Ú_read_mem_bio)r,   r:   r;   r   Ú	write_bioÚbior   s          r    Úparameter_bytesz_DHParameters.parameter_bytesA   sÍ  € ð
 •}Ô-Ô5Ð5Ð5ÝÐ?Ñ@Ô@Ð@à�Ô6Ô<Ð<Ð<ÝÐDÑEÔEÐEàŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×&Ò&ØŒN˜DœMÔ.Ô3°Q¸¼Ô8JÔ8Oñ	
ô 	
ð 	
ð ˆaŒD�D”MÔ&Ô+Ò+Ð+Ø”MÔ&ÔDð ,õ 'Ø9ÝÔ2ñô ð ð
 •}Ô-Ô1Ð1Ð1Ø�Œt�t”}Ô)Ô.Ò.Ð.Ø œMÔ.ÔF�	�	à œMÔ.ÔE�	�	Ø�Ô/Ô3Ð3Ð3Ø�Œt�t”}Ô)Ô.Ò.Ð.Ø œMÔ.ÔM�	�	à œMÔ.Ô?�	�	åÐMÑNÔNÐNàŒm×.Ò.Ñ0Ô0ˆØˆi˜˜Tœ^Ñ,Ô,ˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ}×*Ò*¨3Ñ/Ô/Ð/r"   N©r   r   )Ú__name__Ú
__module__Ú__qualname__r-   r   r3   r5   ÚDHPrivateKeyr9   r   r>   rA   ÚbytesrP   © r"   r    r$   r$   '   s™   € € € € € ð"ð "ð "ð "ð
 2Ô#8ð 
ð 
ð 
ð 
ð$; b¤oð ;ð ;ð ;ð ;ð(0àÔ(ð(0ð Ô-ð(0ð 
ð	(0ð (0ð (0ð (0ð (0ð (0r"   c                 ó*  — | j                              d¦  «        }| j                             ||| j         j        | j         j        ¦  «         |                      |d         | j         j        k    ¦  «         | j                             |d         ¦  «        S )Nr   r   )r   r   r   r   r   r   ÚBN_num_bits)r   r   r0   s      r    Ú_get_dh_num_bitsrZ   l   sy   € ØŒ×Ò˜Ñ%Ô%€AØ„L×Ò˜X q¨'¬,Ô*;¸W¼\Ô=NÑOÔOÐOØ×Ò˜1˜Qœ4 7¤<Ô#4Ò4Ñ5Ô5Ð5ØŒ<×#Ò# A a¤DÑ)Ô)Ð)r"   c                   óÔ   — e Zd Zdd„Zedefd„¦   «         Zdej        fd„Z	dej
        defd„Zd	edd
fd„Zdej
        fd„Zdej        fd„Zdej        dej        dej        defd„Zd
S )Ú_DHPrivateKeyr   r   c                 óx   — || _         || _        || _        | j         j                             |¦  «        | _        d S r&   )r*   r+   Ú	_evp_pkeyr   ÚDH_sizeÚ_key_size_bytes©r,   r   r   Úevp_pkeys       r    r-   z_DHPrivateKey.__init__t   s8   € ØˆŒØ!ˆŒØ!ˆŒØ#œ}Ô1×9Ò9¸(ÑCÔCˆÔÐÐr"   r#   c                 ó6   — t          | j        | j        ¦  «        S r&   )rZ   r*   r+   r8   s    r    Úkey_sizez_DHPrivateKey.key_sizez   s   € å ¤¨t¬~Ñ>Ô>Ð>r"   c                 óT  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         |d         | j         j        j        k    rd }n | j                              |d         ¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j         	                    | j        ||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          j        t          j        t          j        | j                              |d         ¦  «        | j                              |d         ¦  «        |¬¦  «        | j                              |d         ¦  «        ¬¦  «        | j                              |d         ¦  «        ¬¦  «        S )Nr   r   r/   ©r5   Úy)Úpublic_numbersÚx)r*   r   r   r   r   r+   r   r   r2   ÚDH_get0_keyr   ÚDHPrivateNumbersÚDHPublicNumbersr3   )r,   r0   r1   r   r4   Úpub_keyÚpriv_keys          r    Úprivate_numbersz_DHPrivateKey.private_numbers~   s4  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×&Ò& t¤~°q¸!¸QÑ?Ô?Ð?ØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØˆQŒ4�4”=Ô%Ô*Ò*Ð*ØˆEˆEà”M×,Ò,¨Q¨q¬TÑ2Ô2ˆEØ”-Ô$×(Ò(¨Ñ5Ô5ˆØ”=Ô%×)Ò)¨+Ñ6Ô6ˆØŒÔ×&Ò& t¤~°wÀÑIÔIÐIØŒ×$Ò$ W¨Q¤Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØŒ×$Ò$ X¨a¤[°D´MÔ4FÔ4KÒ%KÑLÔLÐLÝÔ"ÝÔ-Ý"$Ô"7Ø”m×.Ò.¨q°¬tÑ4Ô4Ø”m×.Ò.¨q°¬tÑ4Ô4Øð#ñ #ô #ð
 ”-×*Ò*¨7°1¬:Ñ6Ô6ðñ ô ð Œm×&Ò& x°¤{Ñ3Ô3ð

ñ 

ô 

ð 
	
r"   Úpeer_public_keyc                 óì  — t          |t          ¦  «        st          d¦  «        ‚| j        j                             | j        | j        j        j        ¦  «        }| j         	                    || j        j        j        k    ¦  «         | j        j         
                    || j        j        j        ¦  «        }| j        j                             |¦  «        }| j         	                    |dk    ¦  «         | j        j                             ||j        ¦  «        }|                      |dk    ¦  «         | j        j                             d¦  «        }| j        j                             || j        j        j        |¦  «        }|                      |dk    ¦  «         | j         	                    |d         dk    ¦  «         | j        j                             d|d         ¦  «        }| j        j                             |||¦  «        }| j         	                    |dk    ¦  «         | j        j                             ||d         ¦  «        d d …         }| j        t'          |¦  «        z
  }|dk    rd|z  |z   }|S )Nz%peer_public_key must be a DHPublicKeyr   zsize_t *r   zunsigned char[]ó    )Ú
isinstanceÚ_DHPublicKeyr@   r*   r   ÚEVP_PKEY_CTX_newr^   r   r   r   r   ÚEVP_PKEY_CTX_freeÚEVP_PKEY_derive_initÚEVP_PKEY_derive_set_peerÚ_exchange_assertr   ÚEVP_PKEY_deriveÚbufferr`   Úlen)r,   rp   Úctxr   ÚkeylenÚbufÚkeyÚpads           r    Úexchangez_DHPrivateKey.exchangeš   s&  € Ý˜/­<Ñ8Ô8ð 	EÝÐCÑDÔDÐDàŒmÔ ×1Ò1ØŒN˜DœMÔ.Ô3ñ
ô 
ˆð 	Œ×$Ò$ S¨D¬MÔ,>Ô,CÒ%CÑDÔDÐDØŒmÔ ×#Ò# C¨¬Ô);Ô)MÑNÔNˆØŒmÔ ×5Ò5°cÑ:Ô:ˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒmÔ ×9Ò9Ø�Ô*ñ
ô 
ˆð
 	×Ò˜c QšhÑ'Ô'Ð'Ø”Ô#×'Ò'¨
Ñ3Ô3ˆØŒmÔ ×0Ò0Ø�”Ô#Ô(¨&ñ
ô 
ˆð 	×Ò˜c QšhÑ'Ô'Ð'ØŒ×$Ò$ V¨A¤Y°¢]Ñ3Ô3Ð3ØŒmÔ ×$Ò$Ð%6¸¸q¼	ÑBÔBˆØŒmÔ ×0Ò0°°c¸6ÑBÔBˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.àŒmÔ ×'Ò'¨¨V°A¬YÑ7Ô7¸¸¸Ô:ˆØÔ"¥S¨¡X¤XÑ-ˆà�Š7ˆ7Ø˜S‘= CÑ'ˆCàˆ
r"   ÚokNc                 ó\   — |s)| j                              ¦   «         }t          d|¦  «        ‚d S )NzError computing shared key.)r*   Ú_consume_errors_with_textrC   )r,   rƒ   Úerrors_with_texts      r    ry   z_DHPrivateKey._exchange_assert¾   s@   € Øð 	Ø#œ}×FÒFÑHÔHÐÝØ-Ø ñô ð ð	ð 	r"   c                 óä  — t          | j        | j        ¦  «        }| j        j                             d¦  «        }| j        j                             | j        || j        j        j        ¦  «         | j                             |d         | j        j        j        k    ¦  «         | j        j         	                    |d         ¦  «        }| j                             || j        j        j        k    ¦  «         | j        j         
                    ||| j        j        j        ¦  «        }| j                             |dk    ¦  «         | j                             |¦  «        }t          | j        ||¦  «        S r
   )r!   r+   r*   r   r   r   rj   r   r   r   ÚDH_set0_keyÚ_dh_cdata_to_evp_pkeyrt   )r,   r   rm   Úpub_key_dupr   rb   s         r    Ú
public_keyz_DHPrivateKey.public_keyÆ   s1  € Ý! $¤.°$´-Ñ@Ô@ˆØ”-Ô$×(Ò(¨Ñ5Ô5ˆØŒÔ×&Ò&ØŒN˜G T¤]Ô%7Ô%<ñ	
ô 	
ð 	
ð 	Œ×$Ò$ W¨Q¤Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØ”mÔ(×/Ò/°¸´
Ñ;Ô;ˆØŒ×$Ò$ [°D´MÔ4FÔ4KÒ%KÑLÔLÐLàŒmÔ ×,Ò,Ø�k 4¤=Ô#5Ô#:ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.Ø”=×6Ò6°xÑ@Ô@ˆÝ˜DœM¨8°XÑ>Ô>Ð>r"   c                 ó6   — t          | j        | j        ¦  «        S r&   ©r'   r+   r*   r8   s    r    Ú
parametersz_DHPrivateKey.parameters×   ó   € Ý& t¤~°t´}ÑEÔEÐEr"   r:   r;   Úencryption_algorithmc                 óì  — |t           j        j        urt          d¦  «        ‚| j        j        j        s™| j        j                             d¦  «        }| j        j         	                    | j
        | j        j        j        || j        j        j        ¦  «         |d         | j        j        j        k    rt          dt          j        ¦  «        ‚| j                             |||| | j        | j
        ¦  «        S )Nz0DH private keys support only PKCS8 serializationr   r   r=   )r   ÚPrivateFormatÚPKCS8rC   r*   r   rD   r   r   r   r+   r   r   r   rE   Ú_private_key_bytesr^   )r,   r:   r;   r�   r   s        r    Úprivate_bytesz_DHPrivateKey.private_bytesÚ   sõ   € ð �Ô4Ô:Ð:Ð:ÝØBñô ð ð Œ}Ô!Ô?ð 	Ø”Ô"×&Ò& {Ñ3Ô3ˆAØŒMÔ×*Ò*Ø”Ø”Ô"Ô'ØØ”Ô"Ô'ñ	ô ð ð �Œt�t”}Ô)Ô.Ò.Ð.Ý*Ø=ÝÔ6ñô ð ð
 Œ}×/Ò/ØØØ ØØŒNØŒNñ
ô 
ð 	
r"   rQ   )rR   rS   rT   r-   ÚpropertyÚintrd   r   rk   ro   ÚDHPublicKeyrV   r‚   Úboolry   r‹   ÚDHParametersrŽ   r   r>   r’   ÚKeySerializationEncryptionr•   rW   r"   r    r\   r\   s   s:  € € € € € ðDð Dð Dð Dð ð?˜#ð ?ð ?ð ?ñ „Xð?ð
 Ô!4ð 
ð 
ð 
ð 
ð8"¨¬ð "¸5ð "ð "ð "ð "ðH 4ð ¨Dð ð ð ð ð?˜BœNð ?ð ?ð ?ð ?ð"F˜BœOð Fð Fð Fð Fð
àÔ(ð
ð Ô+ð
ð ,ÔFð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
r"   r\   c                   ó†   — e Zd Zdd„Zedefd„¦   «         Zdej        fd„Z	dej
        fd„Zdej        d	ej        defd
„ZdS )rt   r   r   c                 ón   — || _         || _        || _        t          | j         | j        ¦  «        | _        d S r&   )r*   r+   r^   rZ   Ú_key_size_bitsra   s       r    r-   z_DHPublicKey.__init__ý   s3   € ØˆŒØ!ˆŒØ!ˆŒÝ.¨t¬}¸d¼nÑMÔMˆÔÐÐr"   r#   c                 ó   — | j         S r&   )rž   r8   s    r    rd   z_DHPublicKey.key_size  s   € àÔ"Ð"r"   c           	      ój  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         |d         | j         j        j        k    rd }n | j                              |d         ¦  «        }| j         j                             d¦  «        }| j         j         	                    | j        || j         j        j        ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          j        t          j        | j                              |d         ¦  «        | j                              |d         ¦  «        |¬¦  «        | j                              |d         ¦  «        ¬¦  «        S )Nr   r   r/   rf   )r*   r   r   r   r   r+   r   r   r2   rj   r   rl   r3   )r,   r0   r1   r   r4   rm   s         r    rh   z_DHPublicKey.public_numbers  sØ  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×&Ò& t¤~°q¸!¸QÑ?Ô?Ð?ØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØˆQŒ4�4”=Ô%Ô*Ò*Ð*ØˆEˆEà”M×,Ò,¨Q¨q¬TÑ2Ô2ˆEØ”-Ô$×(Ò(¨Ñ5Ô5ˆØŒÔ×&Ò&ØŒN˜G T¤]Ô%7Ô%<ñ	
ô 	
ð 	
ð 	Œ×$Ò$ W¨Q¤Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKÝÔ!Ý Ô3Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0Øðñ ô ð
 Œm×&Ò& w¨q¤zÑ2Ô2ð
ñ 
ô 
ð 	
r"   c                 ó6   — t          | j        | j        ¦  «        S r&   r�   r8   s    r    rŽ   z_DHPublicKey.parameters   r�   r"   r:   r;   c                 óà  — |t           j        j        urt          d¦  «        ‚| j        j        j        s™| j        j                             d¦  «        }| j        j         	                    | j
        | j        j        j        || j        j        j        ¦  «         |d         | j        j        j        k    rt          dt          j        ¦  «        ‚| j                             ||| | j        d ¦  «        S )Nz>DH public keys support only SubjectPublicKeyInfo serializationr   r   r=   )r   ÚPublicFormatÚSubjectPublicKeyInforC   r*   r   rD   r   r   r   r+   r   r   r   rE   Ú_public_key_bytesr^   )r,   r:   r;   r   s       r    Úpublic_bytesz_DHPublicKey.public_bytes#  sî   € ð
 �Ô3ÔHÐHÐHÝð5ñô ð ð
 Œ}Ô!Ô?ð 	Ø”Ô"×&Ò& {Ñ3Ô3ˆAØŒMÔ×*Ò*Ø”Ø”Ô"Ô'ØØ”Ô"Ô'ñ	ô ð ð �Œt�t”}Ô)Ô.Ò.Ð.Ý*Ø=ÝÔ6ñô ð ð
 Œ}×.Ò.Ø�f˜d D¤N°Dñ
ô 
ð 	
r"   NrQ   )rR   rS   rT   r-   r–   r—   rd   r   rl   rh   rš   rŽ   r   r>   r£   rV   r¦   rW   r"   r    rt   rt   ü   sÉ   € € € € € ðNð Nð Nð Nð ð#˜#ð #ð #ð #ñ „Xð#ð
 Ô 2ð 
ð 
ð 
ð 
ð2F˜BœOð Fð Fð Fð Fð
àÔ(ð
ð Ô*ð
ð 
ð	
ð 
ð 
ð 
ð 
ð 
r"   rt   rQ   )r   r   r#   r$   )ÚtypingÚcryptography.exceptionsr   r   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   r!   r'   rš   r$   r—   rZ   rU   r\   r˜   rt   rW   r"   r    ú<module>r­      sY  ðð
 €€€à BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ð 
Ôð EØDÐDÐDÐDÐDÐDðð ð ð ð$/ð /ð /ð /ð
B0ð B0ð B0ð B0ð B0�B”Oñ B0ô B0ð B0ðJ*¨3ð *ð *ð *ð *ðF
ð F
ð F
ð F
ð F
�B”Oñ F
ô F
ð F
ðRB
ð B
ð B
ð B
ð B
�2”>ñ B
ô B
ð B
ð B
ð B
r"   