§
    «˜ºh>  ã            	       ó.  — U d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 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 ddlmZ ddlmZmZm Z m!Z!m"Z"m#Z# d	d
l$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+ erddl,m-Z-m.Z. ddl/m0Z0 e1Z2ee1ef         Z3ee4ef         Z5ee5e3e2df         Z6ddhZ7 ej8        e9¦  «        Z:e	 G d„ d¦  «        ¦   «         Z;e	 G d„ d¦  «        ¦   «         Z<d„ Z=d„ Z>d„ Z?ede6dee5         fd„¦   «         Z@eded         deed                  fd„¦   «         Z@edee6         deee5         ddf         fd„¦   «         Z@de6de1fd„ZAde6de1de1fd „ZBd!e1ddfd"„ZCde4defd#„ZDde4defd$„ZEde4ddfd%„ZFd&ee4ef         defd'„ZGd(ee4         d)eHdeee1         ee+         f         fd*„ZId(ee4         d)eHdeee1         ee+         f         fd+„ZJd,e4d)eHdeee1e+f                  fd-„ZKd.ee4         dee*         fd/„ZLd.ee4         dee*         fd0„ZMd,e4dee*         fd1„ZNd2d3d&d4dee4         fd5„ZOi ZPeee1         ee1         f         eQd6<   d7ee1         d8ee1         ddfd9„ZRd7ee1         dee1         fd:„ZSd;edefd<„ZTd=ee1         d>ee1         de!fd?„ZUdS )@zEContains utilities used by both the sync and async inference clients.é    N)Úcontextmanager)Ú	dataclass)ÚPath)ÚTYPE_CHECKINGÚAnyÚAsyncIterableÚBinaryIOÚContextManagerÚDictÚ	GeneratorÚIterableÚListÚLiteralÚNoReturnÚOptionalÚUnionÚoverload)Ú	HTTPError)ÚGenerationErrorÚIncompleteGenerationErrorÚOverloadedErrorÚTextGenerationErrorÚUnknownErrorÚValidationErroré   )Úget_sessionÚis_aiohttp_availableÚis_numpy_availableÚis_pillow_availableé   )ÚChatCompletionStreamOutputÚTextGenerationStreamOutput)ÚClientResponseÚClientSession©ÚImager&   ztext-to-imagezimage-to-imagec                   ó’   — e Zd ZU eed<   eed<   ee         ed<   eeeeef                  ed<   ee	         ed<   eee
f         ed<   dS )ÚRequestParametersÚurlÚtaskÚmodelÚjsonÚdataÚheadersN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   r   r   ÚContentTr   © ó    úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/huggingface_hub/inference/_common.pyr(   r(   I   su   € € € € € € à	€H€H�HØ
€I€I�IØ�CŒ=ÐÐÑØ
�5˜˜d D˜Ô)Ô
*Ð*Ð*Ñ*Ø
�8Ô
ÐÐÑØ�#�s�(Œ^ÐÐÑÐÐr6   r(   c                   ó<   — e Zd ZU dZeed<   eed<   eed<   eed<   dS )ÚModelStatusas  
    This Dataclass represents the model status in the HF Inference API.

    Args:
        loaded (`bool`):
            If the model is currently loaded into HF's Inference API. Models
            are loaded on-demand, leading to the user's first request taking longer.
            If a model is loaded, you can be assured that it is in a healthy state.
        state (`str`):
            The current state of the model. This can be 'Loaded', 'Loadable', 'TooBig'.
            If a model's state is 'Loadable', it's not too big and has a supported
            backend. Loadable models are automatically loaded when the user first
            requests inference on the endpoint. This means it is transparent for the
            user to load a model, except that the first call takes longer to complete.
        compute_type (`Dict`):
            Information about the compute resource the model is using or will use, such as 'gpu' type and number of
            replicas.
        framework (`str`):
            The name of the framework that the model was built with, such as 'transformers'
            or 'text-generation-inference'.
    ÚloadedÚstateÚcompute_typeÚ	frameworkN)r/   r0   r1   Ú__doc__Úboolr3   r2   r   r5   r6   r7   r9   r9   T   sC   € € € € € € ðð ð, €L€L�LØ€J€J�JØÐÐÑØ€N€N�N€N€Nr6   r9   c                  óH   — t          ¦   «         st          d¦  «        ‚dd l} | S )NzMPlease install aiohttp to use `AsyncInferenceClient` (`pip install aiohttp`).r   )r   ÚImportErrorÚaiohttp)rB   s    r7   Ú_import_aiohttprC   u   s.   € åÑ!Ô!ð kÝÐiÑjÔjÐjØ€N€N€Nà€Nr6   c                  óH   — t          ¦   «         st          d¦  «        ‚ddl} | S )z.Make sure `numpy` is installed on the machine.zGPlease install numpy to use deal with embeddings (`pip install numpy`).r   N)r   rA   Únumpy)rE   s    r7   Ú_import_numpyrF   ~   s.   € åÑÔð eÝÐcÑdÔdÐdØ€L€L€Là€Lr6   c                  óL   — t          ¦   «         st          d¦  «        ‚ddlm}  | S )z,Make sure `PIL` is installed on the machine.z¸Please install Pillow to use deal with images (`pip install Pillow`). If you don't want the image to be post-processed, use `client.post(...)` and get the raw response from the server.r   r%   )r   rA   ÚPILr&   r%   s    r7   Ú_import_pil_imagerI   ‡   sA   € åÑ Ô ð 
Ýð`ñ
ô 
ð 	
ð ÐÐÐÐÐà€Lr6   ÚcontentÚreturnc                 ó   — d S ©Nr5   ©rJ   s    r7   Ú_open_as_binaryrO   –   s	   € ð "˜cr6   c                 ó   — d S rM   r5   rN   s    r7   rO   rO   œ   s	   € ð %( Cr6   c              #   ól  K  — t          | t          ¦  «        r§|                      d¦  «        s|                      d¦  «        rGt                               d| › �¦  «         t          ¦   «                              | ¦  «        j        V — dS t          | ¦  «        } |  	                    ¦   «         st          d| › d�¦  «        ‚t          | t          ¦  «        rPt                               d| › �¦  «         |                      d¦  «        5 }|V — ddd¦  «         n# 1 swxY w Y   dS t          ¦   «         r~d	d
lm} t          | |j        ¦  «        rct                               d¦  «         t          j        ¦   «         }|                      || j        pd¬¦  «         |                     ¦   «         V — dS | V — dS )z©Open `content` as a binary file, either from a URL, a local path, raw bytes, or a PIL Image.

    Do nothing if `content` is None.

    TODO: handle base64 as input
    úhttps://úhttp://zDownloading content from NzFile not found at z�. If `data` is a string, it must either be a URL or a path to a local file. To pass raw content, please encode it as bytes first.zOpening content from Úrbr   r%   zConverting PIL Image to bytesÚPNG)Úformat)Ú
isinstancer2   Ú
startswithÚloggerÚdebugr   ÚgetrJ   r   ÚexistsÚFileNotFoundErrorÚopenr   rH   r&   ÚioÚBytesIOÚsaverV   Úgetvalue)rJ   Úfr&   Úbuffers       r7   rO   rO   ¢   s  è è € õ �'�3ÑÔð 
Ø×Ò˜jÑ)Ô)ð 	¨W×-?Ò-?À	Ñ-JÔ-Jð 	Ý�LŠLÐ>°WÐ>Ð>Ñ?Ô?Ð?Ý‘-”-×#Ò# GÑ,Ô,Ô4Ð4Ð4Ð4ØˆFÝ�w‘-”-ˆØ�~Š~ÑÔð 	Ý#ðO Wð Oð Oð Oñô ð õ �'�4Ñ Ô ð Ý�ŠÐ6¨WÐ6Ð6Ñ7Ô7Ð7Ø�\Š\˜$ÑÔð 	 1ØˆGˆGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àˆõ ÑÔð ØÐÐÐÐÐå�g˜uœ{Ñ+Ô+ð 	Ý�LŠLÐ8Ñ9Ô9Ð9Ý”Z‘\”\ˆFØ�LŠL˜¨¬Ð(?¸%ˆLÑ@Ô@Ð@Ø—/’/Ñ#Ô#Ð#Ð#Ð#ØˆFð €M€M€M€M€Ms   ÄDÄDÄDc                 óö   — t          | ¦  «        5 }t          |t          ¦  «        r|n|                     ¦   «         }t	          j        |¦  «                             ¦   «         cddd¦  «         S # 1 swxY w Y   dS )z\Encode a raw file (image, audio) into base64. Can be bytes, an opened file, a path or a URL.N)rO   rW   ÚbytesÚreadÚbase64Ú	b64encodeÚdecode)rJ   r-   Údata_as_bytess      r7   Ú_b64_encoderl   Í   s«   € å	˜Ñ	!Ô	!ð 8 TÝ *¨4µÑ 7Ô 7ÐH˜˜¸T¿YºY¹[¼[ˆÝÔ Ñ.Ô.×5Ò5Ñ7Ô7ð8ð 8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s   �AA.Á.A2Á5A2Údefault_mime_typec                 ó¾  — t          | t          ¦  «        r,|                      d¦  «        s|                      d¦  «        r| S d }t          | t          t          f¦  «        rt	          j        | d¬¦  «        d         }nGt          ¦   «         r9ddlm} t          | |j        ¦  «        rd| j	        pd 
                    ¦   «         › �}|p|}t          | ¦  «        }d	|› d
|› �S )NrR   rS   F)Ústrictr   r%   zimage/rU   údata:z;base64,)rW   r2   rX   r   Ú	mimetypesÚ
guess_typer   rH   r&   rV   Úlowerrl   )rJ   rm   Ú	mime_typer&   Úencoded_datas        r7   Ú_as_urlrv   Ô   s  € Ý�'�3ÑÔð  W×%7Ò%7¸
Ñ%CÔ%Cð Àw×GYÒGYÐZcÑGdÔGdð Øˆð €IÝ�'�C¥˜;Ñ'Ô'ð EÝÔ(¨¸Ð?Ñ?Ô?ÀÔBˆ	ˆ	Ý	Ñ	Ô	ð EØÐÐÐÐÐå�g˜uœ{Ñ+Ô+ð 	EàD '¤.Ð"9°E×!@Ò!@Ñ!BÔ!BÐDÐDˆIàÐ.Ð.€IÝ˜wÑ'Ô'€LØ4�9Ð4Ð4 lÐ4Ð4Ð4r6   Úencoded_imagec                 ó†   — t          ¦   «         } |j        t          j        t	          j        | ¦  «        ¦  «        ¦  «        S )z/Parse a base64-encoded string into a PIL Image.)rI   r^   r_   r`   rh   Ú	b64decode)rw   r&   s     r7   Ú_b64_to_imagerz   è   s4   € åÑÔ€EØˆ5Œ:•b”j¥Ô!1°-Ñ!@Ô!@ÑAÔAÑBÔBÐBr6   c                 óN   — t          j        |                      ¦   «         ¦  «        S )ac  Parse bytes from a Response object into a Python list.

    Expects the response body to be JSON-encoded data.

    NOTE: This is exactly the same implementation as `_bytes_to_dict` and will not complain if the returned data is a
    dictionary. The only advantage of having both is to help the user (and mypy) understand what kind of data to expect.
    ©r,   Úloadsrj   rN   s    r7   Ú_bytes_to_listr~   î   ó   € õ Œ:�g—n’nÑ&Ô&Ñ'Ô'Ð'r6   c                 óN   — t          j        |                      ¦   «         ¦  «        S )ac  Parse bytes from a Response object into a Python dictionary.

    Expects the response body to be JSON-encoded data.

    NOTE: This is exactly the same implementation as `_bytes_to_list` and will not complain if the returned data is a
    list. The only advantage of having both is to help the user (and mypy) understand what kind of data to expect.
    r|   rN   s    r7   Ú_bytes_to_dictr�   ù   r   r6   c                 ób   — t          ¦   «         } |j        t          j        | ¦  «        ¦  «        S )z§Parse bytes from a Response object into a PIL Image.

    Expects the response body to be raw bytes. To deal with b64 encoded images, use `_b64_to_image` instead.
    )rI   r^   r_   r`   )rJ   r&   s     r7   Ú_bytes_to_imagerƒ     s+   € õ
 ÑÔ€EØˆ5Œ:•b”j Ñ)Ô)Ñ*Ô*Ð*r6   Úresponsec                 óX   — t          | t          ¦  «        rt          j        | ¦  «        n| S rM   )rW   rf   r,   r}   )r„   s    r7   Ú_as_dictr†     s&   € Ý#-¨h½Ñ#>Ô#>ÐL�4Œ:�hÑÔÐÀHÐLr6   Úbytes_output_as_linesÚdetailsc              #   óh   K  — | D ],}	 t          ||¦  «        }n# t          $ r Y  dS w xY w|�|V — Œ-dS )z*Used in `InferenceClient.text_generation`.N©Ú%_format_text_generation_stream_outputÚStopIteration©r‡   rˆ   Úbyte_payloadÚoutputs       r7   Ú _stream_text_generation_responser�     sk   è è € ð
 .ð ð ˆð	Ý:¸<ÈÑQÔQˆFˆFøÝð 	ð 	ð 	ØˆEˆEˆEð	øøøàÐØˆLˆLˆLøðð s   ˆ™
(§(c                óv   K  — | 2 3 d{V —†}	 t          ||¦  «        }n# t          $ r Y  dS w xY w|�|W V — Œ36 dS )z/Used in `AsyncInferenceClient.text_generation`.NrŠ   r�   s       r7   Ú&_async_stream_text_generation_responser’   %  s‡   è è € ð
 4ð ð ð ð ð ð ð ˆlð	Ý:¸<ÈÑQÔQˆFˆFøÝð 	ð 	ð 	ØˆEˆEˆEð	øøøàÐØˆLˆLˆLˆLøð 4Ð3Ð3s   …8�ž
-¬-rŽ   c                 óà  — |                       d¦  «        sd S |                      ¦   «         dk    rt          d¦  «        ‚|                      d¦  «        }t	          j        |                     d¦  «                             d¦  «        ¦  «        }|                     d¦  «        �)t          |d         |                     d¦  «        ¦  «        ‚t          j        |¦  «        }|s|j        j        n|S ©	Ns   data:s   data: [DONE]z[DONE] signal received.zutf-8rp   z/nÚerrorÚ
error_type)rX   ÚstriprŒ   rj   r,   r}   ÚlstripÚrstripr[   Ú_parse_text_generation_errorr"   Úparse_obj_as_instanceÚtokenÚtext)rŽ   rˆ   ÚpayloadÚjson_payloadr�   s        r7   r‹   r‹   3  sä   € ð ×"Ò" 8Ñ,Ô,ð Øˆtà×ÒÑÔ˜Ò.Ð.ÝÐ5Ñ6Ô6Ð6ð ×!Ò! 'Ñ*Ô*€GÝ”:˜gŸnšn¨WÑ5Ô5×<Ò<¸TÑBÔBÑCÔC€Lð ×Ò˜Ñ Ô Ð,Ý*¨<¸Ô+@À,×BRÒBRÐS_ÑB`ÔB`ÑaÔaÐaõ (Ô=¸lÑKÔK€FØ$+Ð7ˆ6Œ<ÔÐ°Ð7r6   Úbytes_linesc              #   óf   K  — | D ]+}	 t          |¦  «        }n# t          $ r Y  dS w xY w|�|V — Œ,dS )zFUsed in `InferenceClient.chat_completion` if model is served with TGI.N©Ú%_format_chat_completion_stream_outputrŒ   ©r    Úitemr�   s      r7   Ú _stream_chat_completion_responser¦   I  si   è è € ð ð ð ˆð	Ý:¸4Ñ@Ô@ˆFˆFøÝð 	ð 	ð 	ØˆEˆEˆEð	øøøàÐØˆLˆLˆLøðð s   ˆ˜
'¦'c                ót   K  — | 2 3 d{V —†}	 t          |¦  «        }n# t          $ r Y  dS w xY w|�|W V — Œ26 dS )z/Used in `AsyncInferenceClient.chat_completion`.Nr¢   r¤   s      r7   Ú&_async_stream_chat_completion_responser¨   V  sƒ   è è € ð "ð ð ð ð ð ð ð ˆdð	Ý:¸4Ñ@Ô@ˆFˆFøÝð 	ð 	ð 	ØˆEˆEˆEð	øøøàÐØˆLˆLˆLˆLøð "�k�ks   …7��
,«,c                 óÀ  — |                       d¦  «        sd S |                      ¦   «         dk    rt          d¦  «        ‚|                      d¦  «        }t	          j        |                     d¦  «                             d¦  «        ¦  «        }|                     d¦  «        �)t          |d         |                     d¦  «        ¦  «        ‚t          j        |¦  «        S r”   )rX   r—   rŒ   rj   r,   r}   r˜   r™   r[   rš   r!   r›   )rŽ   rž   rŸ   s      r7   r£   r£   c  sÐ   € ð ×"Ò" 8Ñ,Ô,ð Øˆtà×ÒÑÔ˜Ò.Ð.ÝÐ5Ñ6Ô6Ð6ð ×!Ò! 'Ñ*Ô*€GÝ”:˜gŸnšn¨WÑ5Ô5×<Ò<¸TÑBÔBÑCÔC€Lð ×Ò˜Ñ Ô Ð,Ý*¨<¸Ô+@À,×BRÒBRÐS_ÑB`ÔB`ÑaÔaÐaõ &Ô;¸LÑIÔIÐIr6   Úclientr$   r#   c                óÎ   K  — 	 |j         2 3 d {V —†}|                     ¦   «         W V — Œ6 	 |                      ¦   «         ƒ d {V —† d S # |                      ¦   «         ƒ d {V —† w xY wrM   )rJ   r—   Úclose)rª   r„   rŽ   s      r7   Ú_async_yield_fromr­   x  sª   è è € ðØ"*Ô"2ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'�,Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&ð #3Ð"2ð �lŠl‰nŒnÐÐÐÐÐÐÐÐÐøˆf�lŠl‰nŒnÐÐÐÐÐÐÐÐøøøs   „A ‹*‘A ÁA$Ú#_UNSUPPORTED_TEXT_GENERATION_KWARGSr+   Úunsupported_kwargsc                 ób   — t                                | g ¦  «                             |¦  «         d S rM   )r®   Ú
setdefaultÚextend)r+   r¯   s     r7   Ú'_set_unsupported_text_generation_kwargsr³   –  s-   € Ý'×2Ò2°5¸"Ñ=Ô=×DÒDÐEWÑXÔXÐXÐXÐXr6   c                 ó8   — t                                | g ¦  «        S rM   )r®   r[   )r+   s    r7   Ú'_get_unsupported_text_generation_kwargsrµ   š  s   € Ý.×2Ò2°5¸"Ñ=Ô=Ð=r6   Ú
http_errorc                 óü   — 	 t          | dd¦  «        p| j                             ¦   «         }|                     d¦  «        }|                     d¦  «        }n# t          $ r | ‚w xY w|�t          ||¦  «        }|| ‚| ‚)z¸
    Try to parse text-generation-inference error message and raise HTTPError in any case.

    Args:
        error (`HTTPError`):
            The HTTPError that have been raised.
    Úresponse_error_payloadNr•   r–   )Úgetattrr„   r,   r[   Ú	Exceptionrš   )r¶   rž   r•   r–   Ú	exceptions        r7   Úraise_text_generation_errorr¼   ¥  s™   € ðå˜*Ð&>ÀÑEÔEÐcÈÔI\×IaÒIaÑIcÔIcˆØ—’˜GÑ$Ô$ˆØ—[’[ Ñ.Ô.ˆ
ˆ
øÝð ð ð ØÐðøøøð ÐÝ0°¸
ÑCÔCˆ	Ø˜ZÐ'ð Ðs   ‚AA ÁA$r•   r–   c                 óÈ   — |dk    rt          | ¦  «        S |dk    rt          | ¦  «        S |dk    rt          | ¦  «        S |dk    rt          | ¦  «        S t	          | ¦  «        S )NÚ
generationÚincomplete_generationÚ
overloadedÚ
validation)r   r   r   r   r   )r•   r–   s     r7   rš   rš   À  su   € Ø�\Ò!Ð!Ý˜uÑ%Ô%Ð%ØÐ,Ò,Ð,Ý(¨Ñ/Ô/Ð/Ø�\Ò!Ð!Ý˜uÑ%Ô%Ð%Ø�\Ò!Ð!Ý˜uÑ%Ô%Ð%Ý˜ÑÔÐr6   )Vr>   rh   r_   r,   Úloggingrq   Ú
contextlibr   Údataclassesr   Úpathlibr   Útypingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Úrequestsr   Úhuggingface_hub.errorsr   r   r   r   r   r   Úutilsr   r   r   r   Ú_generated.typesr!   r"   rB   r#   r$   Ú	PIL.Imager&   r2   ÚUrlTÚPathTrf   ÚBinaryTr4   ÚTASKS_EXPECTING_IMAGESÚ	getLoggerr/   rY   r(   r9   rC   rF   rI   rO   rl   rv   rz   r~   r�   rƒ   r†   r?   r�   r’   r‹   r¦   r¨   r£   r­   r®   r3   r³   rµ   r¼   rš   r5   r6   r7   ú<module>rÑ      s  ðð LÐ KÐ Kà €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð _Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tð ð  Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÐÐÐÐÐð €Øˆc�4ˆiÔ€Ø
��x�Ô
 €Ø�˜%  wÐ.Ô/€ð *Ð+;Ð<Ð à	ˆÔ	˜8Ñ	$Ô	$€ð ðð ð ð ð ñ ô ñ „ðð ðð ð ð ð ñ ô ñ „ðð@ð ð ðð ð ð	ð 	ð 	ð 
ð"Øð"à�GÔð"ð "ð "ñ 
„ð"ð
 
ð(Ø�TŒ]ð(à�G˜D”MÔ"ð(ð (ð (ñ 
„ð(ð
 ð'˜X hÔ/ð '°I¸hÀwÔ>OÐQUÐW[Ð>[Ô4\ð 'ð 'ð 'ñ „ð'ðT8˜ð 8 cð 8ð 8ð 8ð 8ð5�Xð 5°#ð 5¸#ð 5ð 5ð 5ð 5ð(C ð C¨ð Cð Cð Cð Cð(˜Eð ( dð (ð (ð (ð (ð(˜Eð ( dð (ð (ð (ð (ð+˜Uð + wð +ð +ð +ð +ðM�u˜U D˜[Ô)ð M¨dð Mð Mð Mð MðØ# Eœ?ðØ59ðà
ˆ8�CŒ=˜(Ð#=Ô>Ð>Ô?ðð ð ð ðØ(¨Ô/ðØ:>ðà
ˆ=˜Ô˜}Ð-GÔHÐHÔIðð ð ð ð8Øð8Ø"&ð8àˆe�CÐ3Ð3Ô4Ô5ð8ð 8ð 8ð 8ð,
Ø˜%”ð
àÐ(Ô)ð
ð 
ð 
ð 
ð
Ø˜uÔ%ð
àÐ-Ô.ð
ð 
ð 
ð 
ðJØðJàÐ(Ô)ðJð Jð Jð Jð* Oð Ð?Oð ÐTaÐbgÔThð ð ð ð ð6 GIÐ # T¨(°3¬-¸¸c¼Ð*BÔ%CÐ HÐ HÑ HðY°8¸C´=ð YÐVZÐ[^ÔV_ð YÐdhð Yð Yð Yð Yð>°8¸C´=ð >ÀTÈ#ÄYð >ð >ð >ð >ð¨Ið ¸(ð ð ð ð ð6	¨°¬ð 	À8ÈCÄ=ð 	ÐUhð 	ð 	ð 	ð 	ð 	ð 	r6   