§
    YŠtj76  ã                  óÎ  — d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
mZmZ ddlm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 ddlmZ ddlmZ ddlmZ e
rddlmZ ej         j!        Z"ej         j#        Z$ej%        j!        Z!ej%        j#        Z#ej&        j'        Z'ej&        j(        Z(dZ)de)z  Z*dZ+ej,        dk    Z- G d„ dee         ¦  «        Z. G d„ de¦  «        Z/ G d„ de/¦  «        Z0 G d„ de/¦  «        Z1dBd$„Z2dBd%„Z3dCd)„Z4dCd*„Z5 ej6        d+¦  «        j7        Z8 ej6        d,¦  «        j7        Z9 ej6        d+¦  «        j:        Z; ej6        d,¦  «        j:        Z<d-Z=d.Z>d/Z? ej@        d0¦  «        ZAd1d2d3d4d5d6d7d8œZBeBfdDd>„ZC ej@        d?¦  «        ZDd@„ eB E                    ¦   «         D ¦   «         ZFeFfdDdA„ZGerejH        ZHejI        ZIejJ        ZJejK        ZKdS e2ZHe3ZIe4ZJe5ZKdS )Ez
psycopg copy support
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyÚGeneric)ÚSequenceé   )Úadapt)Úerrors)Úpq)ÚBufferÚConnectionTypeÚPQGenÚTransformer)Úconnection_summary)Ú_psycopg)Ú	copy_from)Ú
BaseCursori €  é   i   Údarwinc                  ó\   — e Zd ZU dZded<   ddœdd
„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„ZdS ) ÚBaseCopyaõ  
    Base implementation for the copy user interface.

    Two subclasses expose real methods with the sync/async differences.

    The difference between the text and binary format is managed by two
    different `Formatter` subclasses.

    Writing (the I/O part) is implemented in the subclasses by a `Writer` or
    `AsyncWriter` instance. Normally writing implies sending copy data to a
    database, but a different writer might be chosen, e.g. to stream data into
    a file for later use.
    Ú	FormatterÚ	formatterN)ÚbinaryÚcursorúBaseCursor[ConnectionType, Any]r   úbool | Nonec               ó0  — || _         |j        | _        | j        j        | _        |j        x}ra|j        | _        | j        t          k    rD| j        t          k    r4t          j
        dt          j        | j        ¦  «        j        › d�¦  «        ‚nt          | _        |€t          |o|j        ¦  «        }t!          |dd ¦  «        pt#          j        |¦  «        }|rt'          |¦  «        | _        n t+          || j        j        ¬¦  «        | _        d| _        d S )NzAthe cursor should have performed a COPY operation; its status is z insteadÚ_tx)ÚencodingF)r   Ú
connectionÚpgconnÚ_pgconnÚpgresultÚstatusÚ
_directionÚCOPY_INÚCOPY_OUTÚeÚProgrammingErrorr   Ú
ExecStatusÚnameÚboolÚbinary_tuplesÚgetattrr   r   ÚBinaryFormatterr   ÚTextFormatterÚ	_encodingÚ	_finished)Úselfr   r   ÚresultÚtxs        úP/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg/_copy_base.pyÚ__init__zBaseCopy.__init__L   s  € ð ˆŒØ Ô+ˆŒØ”Ô-ˆŒà”_Ð$ˆ6ð 	&Ø$œmˆDŒOØŒ¥'Ò)Ð)¨d¬oÅÒ.IÐ.IÝÔ(ðTÝ&(¤m°D´OÑ&DÔ&DÔ&IðTð Tð Tñô ð øõ
 &ˆDŒOàˆ>Ý˜&Ð9 VÔ%9Ñ:Ô:ˆFå! &¨%°Ñ6Ô6ÐS½%Ô:KÈFÑ:SÔ:SˆØð 	PÝ,¨RÑ0Ô0ˆDŒNˆNå*¨2¸¼Ô8NÐOÑOÔOˆDŒNàˆŒˆˆó    ÚreturnÚstrc                ó”   — | j         j        › d| j         j        › �}t          | j        ¦  «        }d|› d|› dt          | ¦  «        d›d�S )Nú.ú<ú z at 0xÚxú>)Ú	__class__Ú
__module__Ú__qualname__r   r%   Úid)r6   ÚclsÚinfos      r9   Ú__repr__zBaseCopy.__repr__h   sX   € Ø”Ô*ÐJÐJ¨T¬^Ô-HÐJÐJˆÝ! $¤,Ñ/Ô/ˆØ2�3Ð2Ð2˜Ð2Ð2¥R¨¡X¤XÐ2Ð2Ð2Ð2Ð2r;   ÚNonec                ó2   — | j         rt          d¦  «        ‚d S )Nz!copy blocks can be used only once)r5   Ú	TypeError©r6   s    r9   Ú_enterzBaseCopy._enterm   s(   € ØŒ>ð 	AÝÐ?Ñ@Ô@Ð@ð	Að 	Ar;   ÚtypesúSequence[int | str]c                ó  ‡— | j         j        j        Šˆfd„|D ¦   «         }| j        t          k    r,| j        j                             || j        j        ¦  «         dS | j        j         	                    || j        j        ¦  «         dS )aá  
        Set the types expected in a COPY operation.

        The types must be specified as a sequence of oid or PostgreSQL type
        names (e.g. ``int4``, ``timestamptz[]``).

        This operation overcomes the lack of metadata returned by PostgreSQL
        when a COPY operation begins:

        - On :sql:`COPY TO`, `!set_types()` allows to specify what types the
          operation returns. If `!set_types()` is not used, the data will be
          returned as unparsed strings or bytes instead of Python objects.

        - On :sql:`COPY FROM`, `!set_types()` allows to choose what type the
          database expects. This is especially useful in binary copy, because
          PostgreSQL will apply no cast rule.

        c                óh   •— g | ].}t          |t          ¦  «        r|n‰                     |¦  «        ‘Œ/S © )Ú
isinstanceÚintÚget_oid)Ú.0ÚtÚregistrys     €r9   ú
<listcomp>z&BaseCopy.set_types.<locals>.<listcomp>…   s:   ø€ ÐPÐPÐPÀQ•Z ¥3Ñ'Ô'Ð@��¨X×-=Ò-=¸aÑ-@Ô-@ÐPÐPÐPr;   N)
r   ÚadaptersrP   r(   r)   r   ÚtransformerÚset_dumper_typesÚformatÚset_loader_types)r6   rP   ÚoidsrZ   s      @r9   Ú	set_typeszBaseCopy.set_typesq   s„   ø€ ð& ”;Ô'Ô-ˆØPÐPÐPÐPÈ%ÐPÑPÔPˆàŒ?�gÒ%Ð%ØŒNÔ&×7Ò7¸¸d¼nÔ>SÑTÔTÐTÐTÐTàŒNÔ&×7Ò7¸¸d¼nÔ>SÑTÔTÐTÐTÐTr;   úPQGen[Buffer]c              #  óî   K  — | j         rt          d¦  «        S t          | j        ¦  «        E d {V —†}t	          |t          ¦  «        r|S d| _         |j        }|�|nd| j        _        t          d¦  «        S )Nr;   Téÿÿÿÿ)r5   Ú
memoryviewr   r%   rU   Úcommand_tuplesr   Ú	_rowcount)r6   ÚresÚnrowss      r9   Ú	_read_genzBaseCopy._read_genŽ   s†   è è € ØŒ>ð 	#Ý˜c‘?”?Ð"å" 4¤<Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆÝ�c�:Ñ&Ô&ð 	ØˆJð ˆŒð Ô"ˆØ).Ð):  ÀˆŒÔÝ˜#‰ŒÐr;   úPQGen[tuple[Any, ...] | None]c              #  óÄ   K  — |                       ¦   «         E d {V —†x}sd S | j                             |¦  «        x}€#|                       ¦   «         E d {V —† d| _        d S |S ©NT)rk   r   Ú	parse_rowr5   )r6   ÚdataÚrows      r9   Ú_read_row_genzBaseCopy._read_row_gen¡   s‚   è è € Ø$(§N¢NÑ$4Ô$4Ð4Ð4Ð4Ð4Ð4Ð4Ð5�ð 	Ø�4à”>×+Ò+¨DÑ1Ô1Ð1ˆCÐ:à—~’~Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø!ˆDŒNØ�4àˆ
r;   úPQGen[None]c              #  ó¦   K  — 	 |                       ¦   «         E d {V —†r	 |                       ¦   «         E d {V —†°d S d S # t          j        $ r Y d S w xY w©N)rk   r+   ÚQueryCanceledrN   s    r9   Ú_end_copy_out_genzBaseCopy._end_copy_out_gen­   s�   è è € ð	Ø"ŸnšnÑ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ð Øð #ŸnšnÑ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ð ð ð ð ð øåŒð 	ð 	ð 	ØˆDˆDð	øøøs   „5= ½AÁA)r   r   r   r   )r<   r=   )r<   rK   )rP   rQ   r<   rK   )r<   rc   )r<   rl   )r<   rs   )Ú__name__rE   rF   Ú__doc__Ú__annotations__r:   rJ   rO   rb   rk   rr   rw   rT   r;   r9   r   r   ;   sÓ   € € € € € € ðð ð ÐÐÑð QUðð ð ð ð ð ð83ð 3ð 3ð 3ð
Að Að Að AðUð Uð Uð Uð:ð ð ð ð&
ð 
ð 
ð 
ðð ð ð ð ð r;   r   c                  ó†   — e Zd ZU dZded<   dd„Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
dS )r   z@
    A class which understand a copy format (text, binary).
    z	pq.Formatr_   r]   r   c                óH   — || _         t          ¦   «         | _        d| _        d S ©NF)r]   Ú	bytearrayÚ_write_bufferÚ	_row_mode)r6   r]   s     r9   r:   zFormatter.__init__¼   s!   € Ø&ˆÔÝ&™[œ[ˆÔØˆŒˆˆr;   rp   r   r<   útuple[Any, ...] | Nonec                ó   — d S ru   rT   ©r6   rp   s     r9   ro   zFormatter.parse_rowÁ   s   € ØADÀr;   ÚbufferúBuffer | strc                ó   — d S ru   rT   ©r6   r„   s     r9   ÚwritezFormatter.writeÄ   s   € Ø58°Sr;   rq   úSequence[Any]c                ó   — d S ru   rT   )r6   rq   s     r9   Ú	write_rowzFormatter.write_rowÇ   s   € Ø7:°sr;   c                ó   — d S ru   rT   rN   s    r9   ÚendzFormatter.endÊ   s   € Ø ˜Sr;   N©r]   r   ©rp   r   r<   r�   ©r„   r…   r<   r   ©rq   r‰   r<   r   ©r<   r   )rx   rE   rF   ry   rz   r:   r   ro   rˆ   r‹   r�   rT   r;   r9   r   r   µ   s˜   € € € € € € ðð ð ÐÐÑðð ð ð ð
 ØDÐDÐDñ „^ØDàØ8Ð8Ð8ñ „^Ø8àØ:Ð:Ð:ñ „^Ø:àØ Ð Ð ñ „^Ø Ð Ð r;   r   c                  óN   ‡ — e Zd ZeZddˆ fd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
ˆ xZS )r3   úutf-8r]   r   r"   r=   c                óX   •— t          ¦   «                              |¦  «         || _        d S ru   )Úsuperr:   r4   )r6   r]   r"   rD   s      €r9   r:   zTextFormatter.__init__Ñ   s&   ø€ Ý‰Œ×Ò˜Ñ%Ô%Ð%Ø!ˆŒˆˆr;   rp   r   r<   r�   c                ó8   — d }|rt          || j        ¦  «        }|S ru   )Úparse_row_textr]   ©r6   rp   Úrvs      r9   ro   zTextFormatter.parse_rowÕ   s&   € Ø%)ˆØð 	8Ý  dÔ&6Ñ7Ô7ˆBàˆ	r;   r„   r…   c                ó>   — |                       |¦  «        }d| _        |S rn   ©Ú_ensure_bytesÚ_signature_sent©r6   r„   rp   s      r9   rˆ   zTextFormatter.writeÜ   ó"   € Ø×!Ò! &Ñ)Ô)ˆØ#ˆÔØˆr;   rq   r‰   c                ó¾   — d| _         t          || j        | j        ¦  «         t	          | j        ¦  «        t
          k    r| j        t          ¦   «         c}| _        |S dS ©NTr;   )r€   Úformat_row_textr]   r   ÚlenÚBUFFER_SIZEr~   ©r6   rq   r„   s      r9   r‹   zTextFormatter.write_rowá   sY   € ð ˆŒå˜˜TÔ-¨tÔ/AÑBÔBÐBÝˆtÔ!Ñ"Ô"¥[Ò0Ð0Ø)-Ô);½Y¹[¼[Ð&ˆF�DÔ&ØˆMà�3r;   c                ó<   — | j         t          ¦   «         c}| _         |S ru   )r   r~   r‡   s     r9   r�   zTextFormatter.endí   s   € Ø%)Ô%7½¹¼Ð"ˆ�Ô"Øˆr;   c                ód   — t          |t          ¦  «        r|                     | j        ¦  «        S |S ru   )rU   r=   Úencoder4   rƒ   s     r9   r�   zTextFormatter._ensure_bytesñ   s/   € Ý�d�CÑ Ô ð 	Ø—;’;˜tœ~Ñ.Ô.Ð.ð
 ˆKr;   )r”   )r]   r   r"   r=   r�   r�   r‘   r’   ©rp   r…   r<   r   )rx   rE   rF   ÚTEXTr_   r:   ro   rˆ   r‹   r�   r�   Ú__classcell__©rD   s   @r9   r3   r3   Î   s«   ø€ € € € € Ø€Fð"ð "ð "ð "ð "ð "ð "ðð ð ð ðð ð ð ð

ð 
ð 
ð 
ðð ð ð ðð ð ð ð ð ð ð r;   r3   c                  óL   ‡ — e Zd ZeZdˆ fd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
ˆ xZS )r2   r]   r   c                óX   •— t          ¦   «                              |¦  «         d| _        d S r}   )r–   r:   rž   )r6   r]   rD   s     €r9   r:   zBinaryFormatter.__init__þ   s)   ø€ Ý‰Œ×Ò˜Ñ%Ô%Ð%Ø$ˆÔÐÐr;   rp   r   r<   r�   c                ó  — d }| j         s\|d t          t          ¦  «        …         t          k    rt          j        d¦  «        ‚d| _         |t          t          ¦  «        d …         }|t
          k    rt          || j        ¦  «        }|S )Nz5binary copy doesn't start with the expected signatureT)rž   r¤   Ú_binary_signaturer+   Ú	DataErrorÚ_binary_trailerÚparse_row_binaryr]   r™   s      r9   ro   zBinaryFormatter.parse_row  sŽ   € Ø%)ˆàÔ#ð 	2ØÐ,•cÕ+Ñ,Ô,Ð,Ô-Õ1BÒBÐBÝ”kØKñô ð ð $(ˆDÔ Ø�Õ-Ñ.Ô.Ð0Ð0Ô1ˆDà•?Ò"Ð"Ý! $¨Ô(8Ñ9Ô9ˆBàˆ	r;   r„   r…   c                ó>   — |                       |¦  «        }d| _        |S rn   rœ   rŸ   s      r9   rˆ   zBinaryFormatter.write  r    r;   rq   r‰   c                ó  — d| _         | j        s| xj        t          z  c_        d| _        t	          || j        | j        ¦  «         t          | j        ¦  «        t          k    r| j        t          ¦   «         c}| _        |S dS r¢   )	r€   rž   r   r±   Úformat_row_binaryr]   r¤   r¥   r~   r¦   s      r9   r‹   zBinaryFormatter.write_row  s�   € ð ˆŒàÔ#ð 	(ØÐÔÕ"3Ñ3ÐÔØ#'ˆDÔ å˜#˜tÔ/°Ô1CÑDÔDÐDÝˆtÔ!Ñ"Ô"¥[Ò0Ð0Ø)-Ô);½Y¹[¼[Ð&ˆF�DÔ&ØˆMà�3r;   c                óØ   — | j         s+| xj        t          z  c_        | xj        t          z  c_        n| j        r| xj        t          z  c_        | j        t          ¦   «         c}| _        |S ru   )rž   r   r±   r³   r€   r~   r‡   s     r9   r�   zBinaryFormatter.end'  sv   € ð Ô#ð 	2ØÐÔÕ"3Ñ3ÐÔØÐÔ¥/Ñ1ÐÔÐàŒ^ð 	2ð ÐÔ¥/Ñ1ÐÔà%)Ô%7½¹¼Ð"ˆ�Ô"Øˆr;   c                óN   — t          |t          ¦  «        rt          d¦  «        ‚|S )Nz6cannot copy str data in binary mode: use bytes instead)rU   r=   rM   rƒ   s     r9   r�   zBinaryFormatter._ensure_bytes:  s*   € Ý�d�CÑ Ô ð 	ÝÐTÑUÔUÐUð
 ˆKr;   rŽ   r�   r�   r‘   r’   rª   )rx   rE   rF   ÚBINARYr_   r:   ro   rˆ   r‹   r�   r�   r¬   r­   s   @r9   r2   r2   û   s¦   ø€ € € € € Ø€Fð%ð %ð %ð %ð %ð %ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð&ð ð ð ð ð ð ð r;   r2   rq   r‰   r8   r   Úoutr~   r<   rK   c                óà   — | s|dz  }dS |                      | t          gt          | ¦  «        z  ¦  «        }|D ].}||� t                               t
          |¦  «        ndz  }|dz  }Œ/d|dd…<   dS )z6Convert a row of objects to the data to send for copy.ó   
Nó   \Nó   	re   )Údump_sequenceÚPY_TEXTr¤   Ú_dump_reÚsubÚ	_dump_sub©rq   r8   r»   ÚadaptedÚbs        r9   Ú_format_row_textrÈ   D  s†   € àð Øˆu‰ˆØˆà×Ò˜s¥W Iµ°C±´Ñ$8Ñ9Ô9€GØð ð ˆØ¨Q¨]�x�|Š|�I qÑ)Ô)Ð)ÀÑFˆØˆu‰ˆˆà€Cˆˆˆ�H€H€Hr;   c                ó  — |                      | t          gt          | ¦  «        z  ¦  «        }|t          t          | ¦  «        ¦  «        z  }|D ]3}|�%|t	          t          |¦  «        ¦  «        z  }||z  }Œ)|t
          z  }Œ4dS )z=Convert a row of objects to the data to send for binary copy.N)rÀ   Ú	PY_BINARYr¤   Ú
_pack_int2Ú
_pack_int4Ú_binary_nullrÅ   s        r9   Ú_format_row_binaryrÎ   R  s‰   € à×Ò˜s¥Y Kµ#°c±(´(Ñ$:Ñ;Ô;€GØ�:•c˜#‘h”hÑÔÑ€CØð  ð  ˆØˆ=Ø•:�c !™fœfÑ%Ô%Ñ%ˆCØ�1‰HˆCˆCà•<ÑˆCˆCð ð  r;   rp   r   útuple[Any, ...]c                óÜ   — t          | t          ¦  «        st          | ¦  «        } |                      d¦  «        }|d         d d…         |d<   d„ |D ¦   «         }|                     |¦  «        S )Nr¿   re   c                ó^   — g | ]*}|d k    rdnt                                t          |¦  «        ‘Œ+S )r¾   N)Ú_load_rerÃ   Ú	_load_sub)rX   Úfs     r9   r[   z#_parse_row_text.<locals>.<listcomp>c  s2   € Ð
OÐ
OÐ
OÀ1�1˜’;�;ˆ4ˆ4¥H§L¢Lµ¸AÑ$>Ô$>Ð
OÐ
OÐ
Or;   )rU   ÚbytesÚsplitÚload_sequence)rp   r8   Úfieldsrq   s       r9   Ú_parse_row_textrÙ   ^  sl   € Ý�d�EÑ"Ô"ð Ý�T‰{Œ{ˆØ�ZŠZ˜ÑÔ€FØ˜”˜C˜R˜C”€Fˆ2�JØ
OÐ
OÈÐ
OÑ
OÔ
O€CØ×Ò˜CÑ Ô Ð r;   c                ó<  — g }t          | d¦  «        d         }d}t          |¦  «        D ]^}t          | |¦  «        d         }|dz  }|dk    r&|                     | |||z   …         ¦  «         ||z  }ŒI|                     d ¦  «         Œ_|                     |¦  «        S )Nr   é   r   )Ú_unpack_int2ÚrangeÚ_unpack_int4Úappendr×   )rp   r8   rq   ÚnfieldsÚposÚiÚlengths          r9   Ú_parse_row_binaryrä   g  s¯   € Ø!€CÝ˜4 Ñ#Ô# AÔ&€GØ
€CÝ�7‰^Œ^ð ð ˆÝ˜d CÑ(Ô(¨Ô+ˆØˆq‰ˆØ�QŠ;ˆ;Ø�JŠJ�t˜C #¨¡,Ð.Ô/Ñ0Ô0Ð0Ø�6‰MˆCˆCà�JŠJ�tÑÔÐÐà×Ò˜CÑ Ô Ð r;   z!hz!is   PGCOPY
ÿ
         s   ÿÿs   ÿÿÿÿs
   [	
\\]s   \bs   \ts   \ns   \vs   \fs   \rs   \\)ó   r¿   r½   ó   ó   ó   ó   \Úmúre.Match[bytes]Ú__mapúdict[bytes, bytes]rÕ   c                ó8   — ||                       d¦  «                 S ©Nr   ©Úgroup©rê   rì   s     r9   rÄ   rÄ   �  ó   € Ø�—’˜‘”ÔÐr;   s   \\[btnvfr\\]c                ó   — i | ]\  }}||“Œ	S rT   rT   )rX   ÚkÚvs      r9   ú
<dictcomp>r÷   •  s   € Ð2Ð2Ð2‘t�q˜!ˆa�Ð2Ð2Ð2r;   c                ó8   — ||                       d¦  «                 S rï   rð   rò   s     r9   rÓ   rÓ   ˜  ró   r;   )rq   r‰   r8   r   r»   r~   r<   rK   )rp   r   r8   r   r<   rÏ   )rê   rë   rì   rí   r<   rÕ   )Lry   Ú
__future__r   ÚreÚsysÚstructÚabcr   r   Útypingr   r   r   Úcollections.abcr	   Ú r   r   r+   r   r   r   r   r   Úpq.miscr   Ú_cmoduler   Ú
generatorsr   Ú_cursor_baser   ÚPyFormatr«   rÁ   rº   rÊ   ÚFormatr-   r)   r*   r¥   ÚMAX_BUFFER_SIZEÚ
QUEUE_SIZEÚplatformÚPREFER_FLUSHr   r   r3   r2   rÈ   rÎ   rÙ   rä   ÚStructÚpackrË   rÌ   Úunpack_fromrÜ   rÞ   r±   r³   rÍ   ÚcompilerÂ   Ú
_dump_replrÄ   rÒ   ÚitemsÚ
_load_replrÓ   r£   r·   r˜   r´   rT   r;   r9   ú<module>r     sþ  ððð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !àð )Ø(Ð(Ð(Ð(Ð(Ð(à
Œ.Ô
€ØŒNÔ!€	à	„y„~€Ø	ŒÔ	€à
Œ-Ô
€ØŒ=Ô!€ð
 €ð
 �k‘/€ð €
ð Œ|˜xÒ'€ðwð wð wð wð wˆw�~Ô&ñ wô wð wðt!ð !ð !ð !ð !�ñ !ô !ð !ð2*ð *ð *ð *ð *�Iñ *ô *ð *ðZFð Fð Fð Fð F�iñ Fô Fð FðRð ð ð ð	 ð 	 ð 	 ð 	 ð!ð !ð !ð !ð!ð !ð !ð !ð  ˆVŒ]˜4Ñ Ô Ô%€
ØˆVŒ]˜4Ñ Ô Ô%€
ØˆvŒ}˜TÑ"Ô"Ô.€ØˆvŒ}˜TÑ"Ô"Ô.€ðð ð
 €Ø"€àˆ2Œ:Ð+Ñ,Ô,€àØØØØØØðð €
ð ?Ið ð ð ð ð ð ˆ2Œ:Ð)Ñ*Ô*€Ø2Ð2˜z×/Ò/Ñ1Ô1Ð2Ñ2Ô2€
ð ?Ið ð ð ð ð ð
 ð 
)ØÔ.€OØ Ô2ÐØÔ,€NØÔ0ÐÐÐð '€OØ*ÐØ$€NØ(ÐÐÐr;   