§
    i˜ºh<B  ã                  ó,  — d dl m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 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 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 ddlmZ e	rTddl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! 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) ddl&m*Z* dd lm+Z+ dd!l,m-Z-  e
d"e¬#¦  «        Z.ej/        fd6d,„Zej/        fd6d-„Z0 G d.„ d/ej1        e.         ¦  «        Z2 G d0„ d1ej3        e.         ¦  «        Z3d7d5„Z4dS )8é    )ÚannotationsN)ÚAny)ÚIterable)ÚOptional)ÚSequence)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )ÚCONTAINED_BY)ÚCONTAINS)ÚOVERLAPé   )Útypes)Úutil)Ú
expression)Ú	operators)ÚInternalTraversal)ÚDialect)Ú_ColumnExpressionArgument)Ú_TypeEngineArgument)ÚColumnElement)ÚGrouping)ÚBindParameter)ÚOperatorType)Ú_SelectIterable)Ú_BindProcessorType)Ú_LiteralProcessorType)Ú_ResultProcessorType)Ú
TypeEngine)Ú_TraverseInternalsType)ÚSelfÚ_T)ÚboundÚotherÚ
typing_AnyÚarrexprú_ColumnExpressionArgument[_T]Úoperatorr   ÚreturnúColumnElement[bool]c                ó.   — |                      | |¦  «        S )zjA synonym for the ARRAY-level :meth:`.ARRAY.Comparator.any` method.
    See that method for details.

    )Úany©r%   r'   r)   s      úl/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/array.pyr   r   1   ó   € ð �;Š;�u˜hÑ'Ô'Ð'ó    c                ó.   — |                      | |¦  «        S )zjA synonym for the ARRAY-level :meth:`.ARRAY.Comparator.all` method.
    See that method for details.

    )Úallr.   s      r/   ÚAllr4   >   r0   r1   c                  ó”   ‡ — e Zd ZU dZd ZdZdej        fdej        fgZ	de
d<   ddœdˆ fd„Zed d„¦   «         Z	 	 d!d"d„Z	 d#d$d„Zˆ xZS )%ÚarrayaÝ  A PostgreSQL ARRAY literal.

    This is used to produce ARRAY literals in SQL expressions, e.g.::

        from sqlalchemy.dialects.postgresql import array
        from sqlalchemy.dialects import postgresql
        from sqlalchemy import select, func

        stmt = select(array([1, 2]) + array([3, 4, 5]))

        print(stmt.compile(dialect=postgresql.dialect()))

    Produces the SQL:

    .. sourcecode:: sql

        SELECT ARRAY[%(param_1)s, %(param_2)s] ||
            ARRAY[%(param_3)s, %(param_4)s, %(param_5)s]) AS anon_1

    An instance of :class:`.array` will always have the datatype
    :class:`_types.ARRAY`.  The "inner" type of the array is inferred from the
    values present, unless the :paramref:`_postgresql.array.type_` keyword
    argument is passed::

        array(["foo", "bar"], type_=CHAR)

    When constructing an empty array, the :paramref:`_postgresql.array.type_`
    argument is particularly important as PostgreSQL server typically requires
    a cast to be rendered for the inner type in order to render an empty array.
    SQLAlchemy's compilation for the empty array will produce this cast so
    that::

        stmt = array([], type_=Integer)
        print(stmt.compile(dialect=postgresql.dialect()))

    Produces:

    .. sourcecode:: sql

        ARRAY[]::INTEGER[]

    As required by PostgreSQL for empty arrays.

    .. versionadded:: 2.0.40 added support to render empty PostgreSQL array
       literals with a required cast.

    Multidimensional arrays are produced by nesting :class:`.array` constructs.
    The dimensionality of the final :class:`_types.ARRAY`
    type is calculated by
    recursively adding the dimensions of the inner :class:`_types.ARRAY`
    type::

        stmt = select(
            array(
                [array([1, 2]), array([3, 4]), array([column("q"), column("x")])]
            )
        )
        print(stmt.compile(dialect=postgresql.dialect()))

    Produces:

    .. sourcecode:: sql

        SELECT ARRAY[
            ARRAY[%(param_1)s, %(param_2)s],
            ARRAY[%(param_3)s, %(param_4)s],
            ARRAY[q, x]
        ] AS anon_1

    .. versionadded:: 1.3.6 added support for multidimensional array literals

    .. seealso::

        :class:`_postgresql.ARRAY`

    Ú
postgresqlÚclausesÚtyper!   Ú_traverse_internalsN)Útype_úIterable[_T]r;   ú!Optional[_TypeEngineArgument[_T]]Úkwr&   c               óV  •—  t          ¦   «         j        t          j        g|¢R i |¤Ž |�|n$| j        r| j        d         j        nt          j        }t          |t          ¦  «        r.t          |j
        |j        �
|j        dz   nd¬¦  «        | _        dS t          |¦  «        | _        dS )a  Construct an ARRAY literal.

        :param clauses: iterable, such as a list, containing elements to be
         rendered in the array
        :param type\_: optional type.  If omitted, the type is inferred
         from the contents of the array.

        Nr   r   é   )Ú
dimensions)ÚsuperÚ__init__r   Úcomma_opr8   r9   ÚsqltypesÚNULLTYPEÚ
isinstanceÚARRAYÚ	item_typerA   )Úselfr8   r;   r>   Ú	main_typeÚ	__class__s        €r/   rC   zarray.__init__¢   sÅ   ø€ ð 	�‰ŒÔ�Ô+Ð<¨gÐ<Ð<Ð<¸Ð<Ð<Ð<ð Ð ð ˆEà)-¬ÐL�”˜a”Ô%Ð%½8Ô;Lð 	õ �i¥Ñ'Ô'ð 
	)ÝØÔ#ð !Ô+Ð7ð Ô(¨1Ñ,Ð,àðñ ô ˆDŒIˆIˆIõ ˜iÑ(Ô(ˆDŒIˆIˆIr1   r*   r   c                ó   — | fS ©N© ©rJ   s    r/   Ú_select_iterablezarray._select_iterableÅ   s	   € àˆwˆr1   Fr)   r   ÚobjúOptional[TypeEngine[_T]]Ú_assume_scalarÚboolúBindParameter[_T]c                ó    ‡ ‡‡— |s‰t           j        u rt          j        d |‰‰‰ j        d¬¦  «        S t          ˆˆ ˆfd„|D ¦   «         ¦  «        S )NT)Ú_compared_to_operatorr;   Ú_compared_to_typeÚuniquec                óB   •— g | ]}‰                      ‰|d ‰¬¦  «        ‘ŒS )T)rT   r;   )Ú_bind_param)Ú.0Úor)   rJ   r;   s     €€€r/   ú
<listcomp>z%array._bind_param.<locals>.<listcomp>Ü   sI   ø€ ð ð ð ð ð ×$Ò$Ø  !°DÀð %ñ ô ðð ð r1   )r   Úgetitemr   r   r9   r6   )rJ   r)   rR   r;   rT   s   `` ` r/   r\   zarray._bind_paramÉ   s�   øøø€ ð ð 	˜X­Ô):Ð:Ð:ÝÔ+ØØØ&.ØØ"&¤)Øðñ ô ð õ ðð ð ð ð ð ð !ð	ñ ô ñô ð r1   ÚagainstúOptional[OperatorType]úUnion[Self, Grouping[_T]]c                óx   — |t           j        t           j        t           j        fv rt	          j        | ¦  «        S | S rN   )r   Úany_opÚall_opr`   r   r   )rJ   ra   s     r/   Ú
self_groupzarray.self_groupä   s5   € ð •yÔ'­Ô)9½9Ô;LÐMÐMÐMÝÔ& tÑ,Ô,Ð,àˆKr1   )r8   r<   r;   r=   r>   r&   )r*   r   )NF)
r)   r   rR   r&   r;   rS   rT   rU   r*   rV   rN   )ra   rb   r*   rc   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__visit_name__Ústringify_dialectr   Údp_clauseelement_tupleÚdp_typer:   Ú__annotations__rC   ÚpropertyrQ   r\   rg   Ú__classcell__)rL   s   @r/   r6   r6   K   sþ   ø€ € € € € € ðKð KðZ €Nà$Ðð 
Ð%Ô<Ð=Ø	Ð"Ô*Ð+ð3Ðð ð ð ñ ð 48ð	!)ð !)ð !)ð !)ð !)ð !)ð !)ð !)ðF ðð ð ñ „Xðð +/Ø$ðð ð ð ð ð8 15ðð ð ð ð ð ð ð ð r1   r6   c                  óœ   — e Zd ZdZ	 	 	 ddd„Z G d„ dej        j        e         ¦  «        ZeZ	e
j        dd„¦   «         Zdd„Zdd„Zdd„ZdS ) rH   an
  PostgreSQL ARRAY type.

    The :class:`_postgresql.ARRAY` type is constructed in the same way
    as the core :class:`_types.ARRAY` type; a member type is required, and a
    number of dimensions is recommended if the type is to be used for more
    than one dimension::

        from sqlalchemy.dialects import postgresql

        mytable = Table(
            "mytable",
            metadata,
            Column("data", postgresql.ARRAY(Integer, dimensions=2)),
        )

    The :class:`_postgresql.ARRAY` type provides all operations defined on the
    core :class:`_types.ARRAY` type, including support for "dimensions",
    indexed access, and simple matching such as
    :meth:`.types.ARRAY.Comparator.any` and
    :meth:`.types.ARRAY.Comparator.all`.  :class:`_postgresql.ARRAY`
    class also
    provides PostgreSQL-specific methods for containment operations, including
    :meth:`.postgresql.ARRAY.Comparator.contains`
    :meth:`.postgresql.ARRAY.Comparator.contained_by`, and
    :meth:`.postgresql.ARRAY.Comparator.overlap`, e.g.::

        mytable.c.data.contains([1, 2])

    Indexed access is one-based by default, to match that of PostgreSQL;
    for zero-based indexed access, set
    :paramref:`_postgresql.ARRAY.zero_indexes`.

    Additionally, the :class:`_postgresql.ARRAY`
    type does not work directly in
    conjunction with the :class:`.ENUM` type.  For a workaround, see the
    special type at :ref:`postgresql_array_of_enum`.

    .. container:: topic

        **Detecting Changes in ARRAY columns when using the ORM**

        The :class:`_postgresql.ARRAY` type, when used with the SQLAlchemy ORM,
        does not detect in-place mutations to the array. In order to detect
        these, the :mod:`sqlalchemy.ext.mutable` extension must be used, using
        the :class:`.MutableList` class::

            from sqlalchemy.dialects.postgresql import ARRAY
            from sqlalchemy.ext.mutable import MutableList


            class SomeOrmClass(Base):
                # ...

                data = Column(MutableList.as_mutable(ARRAY(Integer)))

        This extension will allow "in-place" changes such to the array
        such as ``.append()`` to produce events which will be detected by the
        unit of work.  Note that changes to elements **inside** the array,
        including subarrays that are mutated in place, are **not** detected.

        Alternatively, assigning a new array value to an ORM element that
        replaces the old one will always trigger a change event.

    .. seealso::

        :class:`_types.ARRAY` - base array type

        :class:`_postgresql.array` - produces a literal array value.

    FNrI   ú_TypeEngineArgument[_T]Úas_tuplerU   rA   úOptional[int]Úzero_indexesc                óÄ   — t          |t          ¦  «        rt          d¦  «        ‚t          |t          ¦  «        r
 |¦   «         }|| _        || _        || _        || _        dS )a-  Construct an ARRAY.

        E.g.::

          Column("myarray", ARRAY(Integer))

        Arguments are:

        :param item_type: The data type of items of this array. Note that
          dimensionality is irrelevant here, so multi-dimensional arrays like
          ``INTEGER[][]``, are constructed as ``ARRAY(Integer)``, not as
          ``ARRAY(ARRAY(Integer))`` or such.

        :param as_tuple=False: Specify whether return results
          should be converted to tuples from lists. DBAPIs such
          as psycopg2 return lists by default. When tuples are
          returned, the results are hashable.

        :param dimensions: if non-None, the ARRAY will assume a fixed
         number of dimensions.  This will cause the DDL emitted for this
         ARRAY to include the exact number of bracket clauses ``[]``,
         and will also optimize the performance of the type overall.
         Note that PG arrays are always implicitly "non-dimensioned",
         meaning they can store any number of dimensions no matter how
         they were declared.

        :param zero_indexes=False: when True, index values will be converted
         between Python zero-based and PostgreSQL one-based indexes, e.g.
         a value of one will be added to all index values before passing
         to the database.

        zUDo not nest ARRAY types; ARRAY(basetype) handles multi-dimensional arrays of basetypeN)rG   rH   Ú
ValueErrorr9   rI   ru   rA   rw   )rJ   rI   ru   rA   rw   s        r/   rC   zARRAY.__init__5  sp   € õN �i¥Ñ'Ô'ð 	Ýð?ñô ð õ �i¥Ñ&Ô&ð 	$Ø!˜	™œˆIØ"ˆŒØ ˆŒØ$ˆŒØ(ˆÔÐÐr1   c                  ó*   — e Zd ZdZdd„Zdd„Zdd	„Zd
S )úARRAY.Comparatora*  Define comparison operations for :class:`_types.ARRAY`.

        Note that these operations are in addition to those provided
        by the base :class:`.types.ARRAY.Comparator` class, including
        :meth:`.types.ARRAY.Comparator.any` and
        :meth:`.types.ARRAY.Comparator.all`.

        r%   r&   Úkwargsr*   r+   c                óP   — |                       t          |t          j        ¬¦  «        S )zåBoolean expression.  Test if elements are a superset of the
            elements of the argument array expression.

            kwargs may be ignored by this operator but are required for API
            conformance.
            ©Úresult_type)Úoperater   rE   ÚBoolean)rJ   r%   r|   s      r/   ÚcontainszARRAY.Comparator.containsr  s   € ð —<’<¥¨%½XÔ=M�<ÑNÔNÐNr1   c                óP   — |                       t          |t          j        ¬¦  «        S )z„Boolean expression.  Test if elements are a proper subset of the
            elements of the argument array expression.
            r~   )r€   r   rE   r�   ©rJ   r%   s     r/   Úcontained_byzARRAY.Comparator.contained_by}  s)   € ð —<’<Ý˜eµÔ1Að  ñ ô ð r1   c                óP   — |                       t          |t          j        ¬¦  «        S )zuBoolean expression.  Test if array has elements in common with
            an argument array expression.
            r~   )r€   r   rE   r�   r„   s     r/   ÚoverlapzARRAY.Comparator.overlap…  s   € ð —<’<¥¨½HÔ<L�<ÑMÔMÐMr1   N)r%   r&   r|   r&   r*   r+   )r%   r&   r*   r+   )rh   ri   rj   rk   r‚   r…   r‡   rO   r1   r/   Ú
Comparatorr{   h  sd   € € € € € ð	ð 	ð		Oð 		Oð 		Oð 		Oð	ð 	ð 	ð 	ð	Nð 	Nð 	Nð 	Nð 	Nð 	Nr1   rˆ   r*   c                óX   — t          | j        t          j        ¦  «        o| j        j        S rN   )rG   rI   rE   ÚEnumÚnative_enumrP   s    r/   Ú_against_native_enumzARRAY._against_native_enum�  s'   € õ �t”~¥x¤}Ñ5Ô5ð +Ø”Ô*ð	
r1   Údialectr   ú#Optional[_LiteralProcessorType[_T]]c                ó†   ‡ ‡‡— ‰ j                              |¦  «                             |¦  «        Š‰€d S d	d„Šd
ˆˆ ˆfd„}|S )NÚelementsúIterable[typing_Any]r*   Ústrc                ó4   — dd                      | ¦  «        › d�S )NzARRAY[z, ú])Újoin)r�   s    r/   Úto_strz'ARRAY.literal_processor.<locals>.to_str�  s   € Ø2˜DŸIšI hÑ/Ô/Ð2Ð2Ð2Ð2r1   ÚvalueúSequence[typing_Any]c                óB   •— ‰                      | ‰‰j        ‰¦  «        }|S rN   )Ú_apply_item_processorrA   )r—   ÚinnerÚ	item_procrJ   r–   s     €€€r/   Úprocessz(ARRAY.literal_processor.<locals>.process   s*   ø€ Ø×.Ò.Ø�y $¤/°6ñô ˆEð ˆLr1   )r�   r‘   r*   r’   )r—   r˜   r*   r’   )rI   Údialect_implÚliteral_processor)rJ   r�   r�   rœ   r–   s   `  @@r/   rŸ   zARRAY.literal_processor”  s   øøø€ ð ”N×/Ò/°Ñ8Ô8×JÒJØñ
ô 
ˆ	ð ÐØ�4ð	3ð 	3ð 	3ð 	3ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ˆr1   ú2Optional[_BindProcessorType[Sequence[typing_Any]]]c                ór   ‡ ‡— ‰ j                              |¦  «                             |¦  «        Šdˆˆ fd„}|S )Nr—   úOptional[Sequence[typing_Any]]r*   úOptional[list[typing_Any]]c                óP   •— | €| S ‰                      | ‰‰j        t          ¦  «        S rN   )rš   rA   Úlist©r—   rœ   rJ   s    €€r/   r�   z%ARRAY.bind_processor.<locals>.process¯  s2   ø€ ð ˆ}Ø�à×1Ò1Ø˜9 d¤oµtñô ð r1   )r—   r¢   r*   r£   )rI   rž   Úbind_processor)rJ   r�   r�   rœ   s   `  @r/   r§   zARRAY.bind_processor¨  sX   øø€ ð ”N×/Ò/°Ñ8Ô8×GÒGØñ
ô 
ˆ	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ˆr1   ÚcoltypeÚobjectú*_ResultProcessorType[Sequence[typing_Any]]c                óÎ   ‡ ‡‡‡‡— ‰ j                              |¦  «                             ||¦  «        Šdˆˆ fd„}‰ j        r#|Št	          j        d¦  «        Šdˆfd	„Šdˆˆfd
„}|S )Nr—   r˜   r*   r¢   c                ól   •— | €| S ‰                      | ‰‰j        ‰j        rt          nt          ¦  «        S rN   )rš   rA   ru   Útupler¥   r¦   s    €€r/   r�   z'ARRAY.result_processor.<locals>.processÂ  s@   ø€ ð ˆ}Ø�à×1Ò1ØØØ”OØ!œ]Ð4•E�Eµñ	ô ð r1   z^{(.*)}$r’   ú	list[str]c                ór   •— ‰                      | ¦  «                             d¦  «        }t          |¦  «        S )Nr   )ÚmatchÚgroupÚ_split_enum_values)r—   r›   Úpatterns     €r/   Úhandle_raw_stringz1ARRAY.result_processor.<locals>.handle_raw_stringÓ  s0   ø€ ØŸš eÑ,Ô,×2Ò2°1Ñ5Ô5�Ý)¨%Ñ0Ô0Ð0r1   c                ób   •— | €| S  ‰t          | t          ¦  «        r ‰| ¦  «        n| ¦  «        S rN   )rG   r’   )r—   r´   Úsuper_rps    €€r/   r�   z'ARRAY.result_processor.<locals>.process×  sK   ø€ ð �=Ø �Lð  �xå! %­Ñ-Ô-ðÐ%Ð% eÑ,Ô,Ð,àñô ð r1   )r—   r˜   r*   r¢   )r—   r’   r*   r®   )rI   rž   Úresult_processorrŒ   ÚreÚcompile)rJ   r�   r¨   r�   r´   rœ   r³   r¶   s   `   @@@@r/   r·   zARRAY.result_processor»  s¿   øøøøø€ ð ”N×/Ò/°Ñ8Ô8×IÒIØ�Wñ
ô 
ˆ	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ô$ð 	ØˆHÝ”j Ñ-Ô-ˆGð1ð 1ð 1ð 1ð 1ð 1ðð ð ð ð ð ð ð ˆr1   )FNF)rI   rt   ru   rU   rA   rv   rw   rU   )r*   rU   )r�   r   r*   rŽ   )r�   r   r*   r    )r�   r   r¨   r©   r*   rª   )rh   ri   rj   rk   rC   rE   rH   rˆ   r#   Úcomparator_factoryr   Úmemoized_propertyrŒ   rŸ   r§   r·   rO   r1   r/   rH   rH   í   sé   € € € € € ðEð EðT Ø$(Ø"ð1)ð 1)ð 1)ð 1)ð 1)ðf!Nð !Nð !Nð !Nð !N�X”^Ô.¨rÔ2ñ !Nô !Nð !NðF $Ðà	Ôð
ð 
ð 
ñ Ôð
ðð ð ð ð(ð ð ð ð&*ð *ð *ð *ð *ð *r1   rH   Úarray_stringr’   r®   c                ó�  — d| vr| r|                       d¦  «        ng S |                      dd¦  «        }|                     dd¦  «        }g }t          j         d|¦  «        }d}|D ]`}|dk    r| }Œ|r*|                     |                     dd¦  «        ¦  «         Œ8|                     t          j        d	|¦  «        ¦  «         Œa|S )
Nú"ú,z\"z_$ESC_QUOTE$_z\\ú\z(")Fz([^\s,]+),?)ÚsplitÚreplacer¸   ÚappendÚextendÚfindall)r¼   ÚtextÚresultÚ	on_quotesÚ	in_quotesÚtoks         r/   r²   r²   è  sâ   € Ø
�,ÐÐà*6Ð>ˆ|×!Ò! #Ñ&Ô&Ð&¸BÐ>ð ×Ò  Ñ7Ô7€DØ�<Š<˜˜tÑ$Ô$€DØ€FÝ”˜ Ñ&Ô&€IØ€IØð ;ð ;ˆØ�#Š:ˆ:Ø%˜ˆIˆIØð 	;Ø�MŠM˜#Ÿ+š+ o°sÑ;Ô;Ñ<Ô<Ð<Ð<à�MŠM�"œ* ^°SÑ9Ô9Ñ:Ô:Ð:Ð:Ø€Mr1   )r%   r&   r'   r(   r)   r   r*   r+   )r¼   r’   r*   r®   )5Ú
__future__r   r¸   Útypingr   r&   r   r   r   r   r	   r
   r   r   r   r   Ú r   rE   r   Úsqlr   Úsql.visitorsr   Úengine.interfacesr   Úsql._typingr   r   Úsql.elementsr   r   Úsql.expressionr   Úsql.operatorsr   Úsql.selectabler   Úsql.type_apir   r   r   r    r!   Úutil.typingr"   r#   Úeqr4   ÚExpressionClauseListr6   rH   r²   rO   r1   r/   ú<module>rÚ      s  ðð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -àð $Ø,Ð,Ð,Ð,Ð,Ð,Ø8Ð8Ð8Ð8Ð8Ð8Ø2Ð2Ð2Ð2Ð2Ð2Ø-Ð-Ð-Ð-Ð-Ð-Ø(Ð(Ð(Ð(Ð(Ð(Ø/Ð/Ð/Ð/Ð/Ð/Ø-Ð-Ð-Ð-Ð-Ð-Ø1Ð1Ð1Ð1Ð1Ð1Ø2Ð2Ð2Ð2Ð2Ð2Ø5Ð5Ð5Ð5Ð5Ð5Ø4Ð4Ð4Ð4Ð4Ð4Ø*Ð*Ð*Ð*Ð*Ð*Ø6Ð6Ð6Ð6Ð6Ð6Ø#Ð#Ð#Ð#Ð#Ð#ð €WˆT˜Ð$Ñ$Ô$€ð 'œ\ð
(ð 
(ð 
(ð 
(ð 
(ð  'œ\ð
(ð 
(ð 
(ð 
(ð 
(ð_ð _ð _ð _ð _ˆJÔ+¨BÔ/ñ _ô _ð _ðDxð xð xð xð xˆHŒN˜2Ôñ xô xð xðvð ð ð ð ð r1   