§
    D›jôJ  ã                  óJ  — d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZmZ d dlZddlmZ ddlmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlm Z  eg e!f         Z"eg df         Z#d#d„Z$d$d„Z%d%d„Z&d&d„Z'd'd„Z( G d„ d e¦  «        Z) G d!„ d"e¦  «        Z*dS )(é    )ÚannotationsN)ÚAnyÚMappingÚCallableÚ	AwaitableÚcast)ÚSelfÚoverrideé   )ÚWorkloadIdentity)Ú	NOT_GIVENÚTimeoutÚNotGiven)Úis_given)ÚOpenAIÚAsyncOpenAI)ÚSecurityOptionsÚFinalRequestOptions)ÚOpenAIError)ÚDEFAULT_MAX_RETRIESzstr | Awaitable[str]Úbase_urlústr | httpx.URLÚreturnú	httpx.URLc                óô   — t          j        | ¦  «        }|j                             d¦  «        }t	          j        d|¦  «        }|�|d|                     ¦   «         …         }|                     |pd¬¦  «        S )zHNormalize a Bedrock Responses URL variant back to the provider API root.ú/z/responses(?:/.*)?$N)Úpath)ÚhttpxÚURLr   ÚrstripÚreÚsearchÚstartÚ	copy_with)r   Úurlr   Úresponses_matchs       úO/home/lighthouse/health/venv/lib/python3.11/site-packages/openai/lib/bedrock.pyÚ_normalize_bedrock_base_urlr(      sp   € å
Œ)�HÑ
Ô
€CØŒ8�?Š?˜3ÑÔ€DÝ”iÐ 6¸Ñ=Ô=€OØÐ"ØÐ-�o×+Ò+Ñ-Ô-Ð-Ô.ˆà�=Š=˜d˜k cˆ=Ñ*Ô*Ð*ó    ústr | httpx.URL | NoneÚ
aws_regionú
str | Nonec                óÂ  — t          | t          ¦  «        r|                      ¦   «         sd} | €7t          j                             d¦  «        }|�|                     ¦   «         r|} | €k|p=t          j                             d¦  «        pt          j                             d¦  «        }|�|                     ¦   «         st          d¦  «        ‚d|› d�} t          | ¦  «        S )zKResolve Bedrock base URL precedence from explicit, env, then region config.NÚAWS_BEDROCK_BASE_URLÚ
AWS_REGIONÚAWS_DEFAULT_REGIONzœMust provide one of the `base_url` or `aws_region` arguments, or set the `AWS_BEDROCK_BASE_URL`, `AWS_REGION`, or `AWS_DEFAULT_REGION` environment variable.zhttps://bedrock-mantle.z.api.aws/openai/v1)Ú
isinstanceÚstrÚstripÚosÚenvironÚgetr   r(   )r   r+   Úenv_base_urlÚregions       r'   Ú_resolve_bedrock_base_urlr9   "   sÜ   € å�(�CÑ Ô ð ¨¯ªÑ)9Ô)9ð ØˆàÐÝ”z—~’~Ð&<Ñ=Ô=ˆØÐ#¨×(:Ò(:Ñ(<Ô(<Ð#Ø#ˆHàÐØÐc�rœzŸ~š~¨lÑ;Ô;Ðc½r¼z¿~º~ÐNbÑ?cÔ?cˆØˆ> §¢¡¤ˆ>Ýðfñô ð ð
 H¨VÐGÐGÐGˆå& xÑ0Ô0Ð0r)   Úboolc                óÐ   — t          | t          ¦  «        r|                      ¦   «         sd } | �dS t          j                             d¦  «        }|d u p|                     ¦   «          S )NFr.   )r1   r2   r3   r4   r5   r6   )r   r7   s     r'   Ú%_uses_region_derived_bedrock_base_urlr<   9   sh   € Ý�(�CÑ Ô ð ¨¯ªÑ)9Ô)9ð ØˆàÐØˆuå”:—>’>Ð"8Ñ9Ô9€LØ˜4ÐÐ; |×'9Ò'9Ñ';Ô';Ð#;Ð;r)   ÚproviderÚBedrockTokenProviderc                ó   ‡ — dˆ fd„}|S )zJAdapt a sync Bedrock token provider to the base client's api_key callback.r   r2   c                 ó”   •— t          t           ‰¦   «         ¦  «        } t          | t          ¦  «        r| st	          d| › �¦  «        ‚| S ©NzNExpected `bedrock_token_provider` argument to return a string but it returned )r   Úobjectr1   r2   Ú
ValueError©Útokenr=   s    €r'   Ú	get_tokenz*_bedrock_token_provider.<locals>.get_tokenG   sP   ø€ Ý•V˜X˜X™ZœZÑ(Ô(ˆÝ˜%¥Ñ%Ô%ð 	w¨Uð 	wÝÐuÐnsÐuÐuÑvÔvÐvàˆr)   ©r   r2   © ©r=   rF   s   ` r'   Ú_bedrock_token_providerrJ   D   s)   ø€ ðð ð ð ð ð ð Ðr)   ÚAsyncBedrockTokenProviderúCallable[[], Awaitable[str]]c                ó   ‡ — dˆ fd„}|S )zKAdapt a sync or async Bedrock token provider to the async api_key callback.r   r2   c               “  óÐ   •K  — t          t           ‰¦   «         ¦  «        } t          j        | ¦  «        r| ƒ d {V —†} t	          | t
          ¦  «        r| st          d| › �¦  «        ‚| S rA   )r   rB   ÚinspectÚisawaitabler1   r2   rC   rD   s    €r'   rF   z0_async_bedrock_token_provider.<locals>.get_tokenT   sx   øè è € Ý•V˜X˜X™ZœZÑ(Ô(ˆÝÔ˜uÑ%Ô%ð 	 Ø�K�K�K�K�K�KˆEå˜%¥Ñ%Ô%ð 	w¨Uð 	wÝÐuÐnsÐuÐuÑvÔvÐvàˆr)   rG   rH   rI   s   ` r'   Ú_async_bedrock_token_providerrQ   Q   s)   ø€ ðð ð ð ð ð ð Ðr)   c                  óà   ‡ — e Zd ZU dZded<   ded<   ded<   ddddddddeedddd	d
dœd7ˆ fd"„Zed8d&„¦   «         Z	ed9ˆ fd)„¦   «         Z
eddddddddddededddddi d*œd:d6„¦   «         ZeZˆ xZS );ÚBedrockOpenAIz;API client for Amazon Bedrock's OpenAI-compatible endpoint.úBedrockTokenProvider | NonerJ   r:   Ú_uses_region_derived_base_urlr,   r+   NFT©Úapi_keyÚbedrock_token_providerr+   ÚorganizationÚprojectÚwebhook_secretr   Úwebsocket_base_urlÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryÚhttp_clientÚ_strict_response_validationÚ_enforce_credentialsrW   rX   rY   rZ   r[   r   r*   r\   r]   ú!float | Timeout | None | NotGivenr^   Úintr_   úMapping[str, str] | Noner`   úMapping[str, object] | Nonera   úhttpx.Client | Nonerb   rc   r   ÚNonec               óä  •— |€!|€t           j                             d¦  «        }t          t	          t
          |¦  «        ¦  «        rt          d¦  «        ‚|�|�t          d¦  «        ‚|r|s|€t          d¦  «        ‚|| _        t          |¦  «        | _	        || _
        t          ¦   «                              |�t          |¦  «        n|pdd|||t          ||¦  «        ||	|
||||d¬¦  «         dS )	aõ  Construct a new synchronous Amazon Bedrock client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AWS_BEARER_TOKEN_BEDROCK`
        - `aws_region` from `AWS_REGION` or `AWS_DEFAULT_REGION` when `base_url` and `AWS_BEDROCK_BASE_URL` are not set
        - `base_url` from `AWS_BEDROCK_BASE_URL`

        `bedrock_token_provider` is invoked before each request when provided.
        NÚAWS_BEARER_TOKEN_BEDROCKúQPass refreshable Bedrock credentials via `bedrock_token_provider`, not `api_key`.úLThe `api_key` and `bedrock_token_provider` arguments are mutually exclusive.ú†Missing credentials. Please pass an `api_key` or `bedrock_token_provider`, or set the `AWS_BEARER_TOKEN_BEDROCK` environment variable.Ú F©rW   Úadmin_api_keyrY   rZ   r[   r   r\   r]   r^   r_   r`   ra   rb   rc   )r4   r5   r6   Úcallabler   rB   r   rJ   r<   rU   r+   ÚsuperÚ__init__r9   ©ÚselfrW   rX   r+   rY   rZ   r[   r   r\   r]   r^   r_   r`   ra   rb   rc   Ú	__class__s                   €r'   rt   zBedrockOpenAI.__init__h   s2  ø€ ð8 ˆ?Ð5Ð=Ý”j—n’nÐ%?Ñ@Ô@ˆGå•D� Ñ)Ô)Ñ*Ô*ð 	sÝÐqÑrÔrÐràÐÐ#9Ð#EÝÐlÑmÔmÐmàð 	¨ð 	Ð4JÐ4RÝðCñô ð ð
 (>ˆÔ$Ý-RÐS[Ñ-\Ô-\ˆÔ*Ø$ˆŒå‰Œ×Òà%Ð1õ ,Ð,BÑCÔCÐCà�˜BØØ%ØØ)Ý.¨x¸ÑDÔDØ1ØØ#Ø+Ø'Ø#Ø(CØ!&ð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
r)   Úsecurityr   údict[str, str]c                ól   — |                      dd¦  «        s|                      dd¦  «        r| j        S i S ©NÚbearer_authFÚadmin_api_key_auth©r6   Ú_bearer_auth©rv   rx   s     r'   Ú_auth_headerszBedrockOpenAI._auth_headersª   ó=   € à�<Š<˜ uÑ-Ô-ð 	%°·²Ð>RÐTYÑ1ZÔ1Zð 	%ØÔ$Ð$àˆ	r)   Úoptionsr   c                óè   •— | j         �J|j                             dd¦  «        r/|j                             dd¦  «        s|                      ¦   «          t	          ¦   «                              |¦  «        S ©Nr}   Fr|   ©Ú_api_key_providerrx   r6   Ú_refresh_api_keyrs   Ú_prepare_options©rv   rƒ   rw   s     €r'   r‰   zBedrockOpenAI._prepare_options±   sq   ø€ ð Ô"Ð.ØÔ ×$Ò$Ð%9¸5ÑAÔAð /àÔ$×(Ò(¨¸Ñ>Ô>ð /ð ×!Ò!Ñ#Ô#Ð#å‰wŒw×'Ò'¨Ñ0Ô0Ð0r)   ©rW   rq   Úworkload_identityrX   r+   rY   rZ   r[   r\   r   r]   ra   r^   r_   Úset_default_headersr`   Úset_default_queryrc   Ú_extra_kwargsú!str | BedrockTokenProvider | Nonerq   rŒ   úWorkloadIdentity | Noneúint | NotGivenr�   rŽ   úbool | Noner�   úMapping[str, Any]r	   c               óš  — |�|�t          d¦  «        ‚|�|�t          d¦  «        ‚t          |¦  «        rt          d¦  «        ‚|€|�t          d¦  «        ‚|�|�t          d¦  «        ‚| j        }|�i |¥|¥}n|�|}| j        }|�i |¥|¥}n|�|}|�d }n|�|}n| j        }|�|n
|�d n| j        }|
}|€|�| j        s| j        } | j	        d|||�|n| j
        |�|n| j        |�|n| j        |�|n| j        |	�|	n| j        |t          |t           ¦  «        r| j        n||p| j        t'          |¦  «        r|n| j        |||€dn|dœ|¤ŽS )	NúPThe `default_headers` and `set_default_headers` arguments are mutually exclusiveúLThe `default_query` and `set_default_query` arguments are mutually exclusiverl   z@BedrockOpenAI only supports Bedrock bearer token authentication.rm   T©rW   rX   r+   rY   rZ   r[   r\   r   r]   ra   r^   r_   r`   rc   rH   ©rC   rr   r   Ú_custom_headersÚ_custom_queryrJ   rW   rU   r   rw   r+   rY   rZ   r[   r\   r1   r   r]   Ú_clientr   r^   ©rv   rW   rq   rŒ   rX   r+   rY   rZ   r[   r\   r   r]   ra   r^   r_   r�   r`   rŽ   rc   r�   ÚheadersÚparamsÚnext_token_providerÚnext_api_keyÚnext_base_urls                            r'   ÚcopyzBedrockOpenAI.copy¼   s  € ð0 Ð&Ð+>Ð+JÝÐoÑpÔpÐpàÐ$Ð):Ð)FÝÐkÑlÔlÐlå�GÑÔð 	sÝÐqÑrÔrÐràÐ$Ð(9Ð(EÝÐ`ÑaÔaÐaàÐÐ#9Ð#EÝÐlÑmÔmÐmàÔ&ˆØÐ&Ø4˜Ð4 OÐ4ˆGˆGØ Ð,Ø)ˆGàÔ#ˆØÐ$Ø0˜Ð0 -Ð0ˆFˆFØÐ*Ø&ˆFàÐØ"&ÐÐØ#Ð/Ø"8ÐÐà"&Ô">Ðà")Ð"5�w�wÐDWÐDc¸D¸DÐimÔiuˆØ ˆØÐ ¨*Ð*@ÀTÔEgÐ*@Ø œMˆMàˆtŒ~ð 
Ø Ø#6Ø%/Ð%;�z�zÀÄØ)5Ð)A˜˜ÀtÔGXØ&Ð2�G�G¸¼Ø-;Ð-G˜>˜>ÈTÔM`Ø5GÐ5SÐ1Ð1ÐY]ÔYpØ"Ý$.¨w½Ñ$AÔ$AÐN�D”L�LÀwØ#Ð3 t¤|Ý'/°Ñ'<Ô'<ÐR˜˜À$ÔBRØ#Ø Ø)=Ð)E  ÐK_ð
ð 
ð ð
ð 
ð 	
r)   ) rW   r,   rX   rT   r+   r,   rY   r,   rZ   r,   r[   r,   r   r*   r\   r*   r]   rd   r^   re   r_   rf   r`   rg   ra   rh   rb   r:   rc   r:   r   ri   ©rx   r   r   ry   ©rƒ   r   r   r   )(rW   r�   rq   r,   rŒ   r‘   rX   rT   r+   r,   rY   r,   rZ   r,   r[   r,   r\   r*   r   r*   r]   rd   ra   rh   r^   r’   r_   rf   r�   rf   r`   rg   rŽ   rg   rc   r“   r�   r”   r   r	   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   rt   r
   r�   r‰   r£   Úwith_optionsÚ__classcell__©rw   s   @r'   rS   rS   a   s\  ø€ € € € € € ØEÐEà8Ð8Ð8Ñ8Ø'Ð'Ð'Ñ'ØÐÐÑð
 #Ø>BØ!%Ø#'Ø"Ø%)Ø+/Ø59Ø5>Ø.Ø48Ø59Ø+/Ø,1Ø%)ð#@
ð @
ð @
ð @
ð @
ð @
ð @
ð @
ðD ðð ð ñ „Xðð ð1ð 1ð 1ð 1ð 1ñ „Xð1ð ð 6:Ø$(Ø59Ø>BØ!%Ø#'Ø"Ø%)Ø59Ø+/Ø5>Ø+/Ø&/Ø48Ø8<Ø59Ø9=Ø,0Ø+-ð+N
ð N
ð N
ð N
ð N
ñ „XðN
ð` €L€L€L€L€Lr)   rS   c                  óà   ‡ — e Zd ZU dZded<   ded<   ded<   ddddddddeedddd	d
dœd7ˆ fd"„Zed8d&„¦   «         Z	ed9ˆ fd)„¦   «         Z
eddddddddddededddddi d*œd:d6„¦   «         ZeZˆ xZS );ÚAsyncBedrockOpenAIzAAsync API client for Amazon Bedrock's OpenAI-compatible endpoint.ú AsyncBedrockTokenProvider | NonerJ   r:   rU   r,   r+   NFTrV   rW   rX   rY   rZ   r[   r   r*   r\   r]   rd   r^   re   r_   rf   r`   rg   ra   úhttpx.AsyncClient | Nonerb   rc   r   ri   c               óä  •— |€!|€t           j                             d¦  «        }t          t	          t
          |¦  «        ¦  «        rt          d¦  «        ‚|�|�t          d¦  «        ‚|r|s|€t          d¦  «        ‚|| _        t          |¦  «        | _	        || _
        t          ¦   «                              |�t          |¦  «        n|pdd|||t          ||¦  «        ||	|
||||d¬¦  «         dS )	aö  Construct a new asynchronous Amazon Bedrock client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AWS_BEARER_TOKEN_BEDROCK`
        - `aws_region` from `AWS_REGION` or `AWS_DEFAULT_REGION` when `base_url` and `AWS_BEDROCK_BASE_URL` are not set
        - `base_url` from `AWS_BEDROCK_BASE_URL`

        `bedrock_token_provider` is invoked before each request when provided.
        Nrk   rl   rm   rn   ro   Frp   )r4   r5   r6   rr   r   rB   r   rJ   r<   rU   r+   rs   rt   rQ   r9   ru   s                   €r'   rt   zAsyncBedrockOpenAI.__init__  s4  ø€ ð8 ˆ?Ð5Ð=Ý”j—n’nÐ%?Ñ@Ô@ˆGå•D� Ñ)Ô)Ñ*Ô*ð 	sÝÐqÑrÔrÐràÐÐ#9Ð#EÝÐlÑmÔmÐmàð 	¨ð 	Ð4JÐ4RÝðCñô ð ð
 (>ˆÔ$Ý-RÐS[Ñ-\Ô-\ˆÔ*Ø$ˆŒå‰Œ×Òð *Ð5õ .Ð.DÑEÔEÐEà�] àØ%ØØ)Ý.¨x¸ÑDÔDØ1ØØ#Ø+Ø'Ø#Ø(CØ!&ð% 	ñ 	
ô 	
ð 	
ð 	
ð 	
r)   rx   r   ry   c                ól   — |                      dd¦  «        s|                      dd¦  «        r| j        S i S r{   r~   r€   s     r'   r�   z AsyncBedrockOpenAI._auth_headers[  r‚   r)   rƒ   r   c              ƒ  ó  •K  — | j         �P|j                             dd¦  «        r5|j                             dd¦  «        s|                      ¦   «         ƒ d {V —† t	          ¦   «                              |¦  «        ƒ d {V —†S r…   r†   rŠ   s     €r'   r‰   z#AsyncBedrockOpenAI._prepare_optionsb  s™   øè è € ð Ô"Ð.ØÔ ×$Ò$Ð%9¸5ÑAÔAð /àÔ$×(Ò(¨¸Ñ>Ô>ð /ð ×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)å‘W”W×-Ò-¨gÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6r)   r‹   ú&str | AsyncBedrockTokenProvider | Nonerq   rŒ   r‘   r’   r�   rŽ   r“   r�   r”   r	   c               óš  — |�|�t          d¦  «        ‚|�|�t          d¦  «        ‚t          |¦  «        rt          d¦  «        ‚|€|�t          d¦  «        ‚|�|�t          d¦  «        ‚| j        }|�i |¥|¥}n|�|}| j        }|�i |¥|¥}n|�|}|�d }n|�|}n| j        }|�|n
|�d n| j        }|
}|€|�| j        s| j        } | j	        d|||�|n| j
        |�|n| j        |�|n| j        |�|n| j        |	�|	n| j        |t          |t           ¦  «        r| j        n||p| j        t'          |¦  «        r|n| j        |||€dn|dœ|¤ŽS )	Nr–   r—   rl   zEAsyncBedrockOpenAI only supports Bedrock bearer token authentication.rm   Tr˜   rH   r™   r�   s                            r'   r£   zAsyncBedrockOpenAI.copym  s  € ð0 Ð&Ð+>Ð+JÝÐoÑpÔpÐpàÐ$Ð):Ð)FÝÐkÑlÔlÐlå�GÑÔð 	sÝÐqÑrÔrÐràÐ$Ð(9Ð(EÝÐeÑfÔfÐfàÐÐ#9Ð#EÝÐlÑmÔmÐmàÔ&ˆØÐ&Ø4˜Ð4 OÐ4ˆGˆGØ Ð,Ø)ˆGàÔ#ˆØÐ$Ø0˜Ð0 -Ð0ˆFˆFØÐ*Ø&ˆFàÐØ"&ÐÐØ#Ð/Ø"8ÐÐà"&Ô">Ðà")Ð"5�w�wÐDWÐDc¸D¸DÐimÔiuˆØ ˆØÐ ¨*Ð*@ÀTÔEgÐ*@Ø œMˆMàˆtŒ~ð 
Ø Ø#6Ø%/Ð%;�z�zÀÄØ)5Ð)A˜˜ÀtÔGXØ&Ð2�G�G¸¼Ø-;Ð-G˜>˜>ÈTÔM`Ø5GÐ5SÐ1Ð1ÐY]ÔYpØ"Ý$.¨w½Ñ$AÔ$AÐN�D”L�LÀwØ#Ð3 t¤|Ý'/°Ñ'<Ô'<ÐR˜˜À$ÔBRØ#Ø Ø)=Ð)E  ÐK_ð
ð 
ð ð
ð 
ð 	
r)   ) rW   r,   rX   r±   r+   r,   rY   r,   rZ   r,   r[   r,   r   r*   r\   r*   r]   rd   r^   re   r_   rf   r`   rg   ra   r²   rb   r:   rc   r:   r   ri   r¤   r¥   )(rW   r¶   rq   r,   rŒ   r‘   rX   r±   r+   r,   rY   r,   rZ   r,   r[   r,   r\   r*   r   r*   r]   rd   ra   r²   r^   r’   r_   rf   r�   rf   r`   rg   rŽ   rg   rc   r“   r�   r”   r   r	   r¦   r®   s   @r'   r°   r°     s\  ø€ € € € € € ØKÐKà=Ð=Ð=Ñ=Ø'Ð'Ð'Ñ'ØÐÐÑð
 #ØCGØ!%Ø#'Ø"Ø%)Ø+/Ø59Ø5>Ø.Ø48Ø59Ø04Ø,1Ø%)ð#B
ð B
ð B
ð B
ð B
ð B
ð B
ð B
ðH ðð ð ñ „Xðð ð7ð 7ð 7ð 7ð 7ñ „Xð7ð ð ;?Ø$(Ø59ØCGØ!%Ø#'Ø"Ø%)Ø59Ø+/Ø5>Ø04Ø&/Ø48Ø8<Ø59Ø9=Ø,0Ø+-ð+N
ð N
ð N
ð N
ð N
ñ „XðN
ð` €L€L€L€L€Lr)   r°   )r   r   r   r   )r   r*   r+   r,   r   r   )r   r*   r   r:   )r=   r>   r   r>   )r=   rK   r   rL   )+Ú
__future__r   r4   r!   rO   Útypingr   r   r   r   r   Útyping_extensionsr	   r
   r   Úauthr   Ú_typesr   r   r   Ú_utilsr   rœ   r   r   Ú_modelsr   r   Ú_exceptionsr   Ú_base_clientr   r2   r>   rK   r(   r9   r<   rJ   rQ   rS   r°   rH   r)   r'   ú<module>rÁ      s  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 	€	€	€	Ø €€€Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€à #Ð #Ð #Ð #Ð #Ð #Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø %Ð %Ð %Ð %Ð %Ð %Ø .Ð .Ð .Ð .Ð .Ð .à  C Ô(Ð Ø$ RÐ)?Ð%?Ô@Ð ð+ð +ð +ð +ð1ð 1ð 1ð 1ð.<ð <ð <ð <ð
ð 
ð 
ð 
ðð ð ð ð lð lð lð lð l�Fñ lô lð lð^nð nð nð nð n˜ñ nô nð nð nð nr)   