ó
    øÞ jÐd  ã                  óü  • S r SSKJr  SSKJr  SSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK
Jr  SSK
Jr  SSKJr  SSKJr  SSK J!r!  SSK J"r"  \	(       a  SSKJ#r#  SSK$J%r%  \RL                  " S5      r' " S S\RP                  5      r) " S S \5      r* " S! S"\5      r+ " S# S$\5      r, " S% S&\R*                  RZ                  5      r. " S' S(\R*                  R^                  5      r0 " S) S*\5      r1 " S+ S,\5      r2 " S- S.\Rf                  5      r4 " S/ S0\Rj                  5      r6 " S1 S2\Rn                  5      r8 " S3 S4\Rr                  5      r: " S5 S6\Rv                  5      r< " S7 S8\Rz                  5      r> " S9 S:\R~                  5      r@ " S; S<\R‚                  5      rB " S= S>\R†                  5      rD " S? S@\RŠ                  5      rF " SA SB\5      rG " SC SD\5      rH " SE SF\5      rISG rJ " SH SI\5      rK " SJ SK5      rL " SL SM\L5      rM " SN SO\5      rN " SP SQ\N5      rO " SR SS5      rP " ST SU\K5      rQ\KrR\QrSg)Vah  
.. dialect:: postgresql+psycopg
    :name: psycopg (a.k.a. psycopg 3)
    :dbapi: psycopg
    :connectstring: postgresql+psycopg://user:password@host:port/dbname[?key=value&key=value...]
    :url: https://pypi.org/project/psycopg/

``psycopg`` is the package and module name for version 3 of the ``psycopg``
database driver, formerly known as ``psycopg2``.  This driver is different
enough from its ``psycopg2`` predecessor that SQLAlchemy supports it
via a totally separate dialect; support for ``psycopg2`` is expected to remain
for as long as that package continues to function for modern Python versions,
and also remains the default dialect for the ``postgresql://`` dialect
series.

The SQLAlchemy ``psycopg`` dialect provides both a sync and an async
implementation under the same dialect name. The proper version is
selected depending on how the engine is created:

* calling :func:`_sa.create_engine` with ``postgresql+psycopg://...`` will
  automatically select the sync version, e.g.::

    from sqlalchemy import create_engine

    sync_engine = create_engine(
        "postgresql+psycopg://scott:tiger@localhost/test"
    )

* calling :func:`_asyncio.create_async_engine` with
  ``postgresql+psycopg://...`` will automatically select the async version,
  e.g.::

    from sqlalchemy.ext.asyncio import create_async_engine

    asyncio_engine = create_async_engine(
        "postgresql+psycopg://scott:tiger@localhost/test"
    )

The asyncio version of the dialect may also be specified explicitly using the
``psycopg_async`` suffix, as::

    from sqlalchemy.ext.asyncio import create_async_engine

    asyncio_engine = create_async_engine(
        "postgresql+psycopg_async://scott:tiger@localhost/test"
    )

.. seealso::

    :ref:`postgresql_psycopg2` - The SQLAlchemy ``psycopg``
    dialect shares most of its behavior with the ``psycopg2`` dialect.
    Further documentation is available there.

Using psycopg Connection Pooling
--------------------------------

The ``psycopg`` driver provides its own connection pool implementation that
may be used in place of SQLAlchemy's pooling functionality.
This pool implementation provides support for fixed and dynamic pool sizes
(including automatic downsizing for unused connections), connection health
pre-checks, and support for both synchronous and asynchronous code
environments.

Here is an example that uses the sync version of the pool, using
``psycopg_pool >= 3.3`` that introduces support for ``close_returns=True``::

    import psycopg_pool
    from sqlalchemy import create_engine
    from sqlalchemy.pool import NullPool

    # Create a psycopg_pool connection pool
    my_pool = psycopg_pool.ConnectionPool(
        conninfo="postgresql://scott:tiger@localhost/test",
        close_returns=True,  # Return "closed" active connections to the pool
        # ... other pool parameters as desired ...
    )

    # Create an engine that uses the connection pool to get a connection
    engine = create_engine(
        url="postgresql+psycopg://",  # Only need the dialect now
        poolclass=NullPool,  # Disable SQLAlchemy's default connection pool
        creator=my_pool.getconn,  # Use Psycopg 3 connection pool to obtain connections
    )

Similarly an the async example::

    import psycopg_pool
    from sqlalchemy.ext.asyncio import create_async_engine
    from sqlalchemy.pool import NullPool


    async def define_engine():
        # Create a psycopg_pool connection pool
        my_pool = psycopg_pool.AsyncConnectionPool(
            conninfo="postgresql://scott:tiger@localhost/test",
            open=False,  # See comment below
            close_returns=True,  # Return "closed" active connections to the pool
            # ... other pool parameters as desired ...
        )

        # Must explicitly open AsyncConnectionPool outside constructor
        # https://www.psycopg.org/psycopg3/docs/api/pool.html#psycopg_pool.AsyncConnectionPool
        await my_pool.open()

        # Create an engine that uses the connection pool to get a connection
        engine = create_async_engine(
            url="postgresql+psycopg://",  # Only need the dialect now
            poolclass=NullPool,  # Disable SQLAlchemy's default connection pool
            async_creator=my_pool.getconn,  # Use Psycopg 3 connection pool to obtain connections
        )

        return engine, my_pool

The resulting engine may then be used normally. Internally, Psycopg 3 handles
connection pooling::

    with engine.connect() as conn:
        print(conn.scalar(text("select 42")))

.. seealso::

    `Connection pools <https://www.psycopg.org/psycopg3/docs/advanced/pool.html>`_ -
    the Psycopg 3 documentation for ``psycopg_pool.ConnectionPool``.

    `Example for older version of psycopg_pool
    <https://github.com/sqlalchemy/sqlalchemy/discussions/12522#discussioncomment-13024666>`_ -
    An example about using the ``psycopg_pool<3.3`` that did not have the
    ``close_returns``` parameter.

Using a different Cursor class
------------------------------

One of the differences between ``psycopg`` and the older ``psycopg2``
is how bound parameters are handled: ``psycopg2`` would bind them
client side, while ``psycopg`` by default will bind them server side.

It's possible to configure ``psycopg`` to do client side binding by
specifying the ``cursor_factory`` to be ``ClientCursor`` when creating
the engine::

    from psycopg import ClientCursor

    client_side_engine = create_engine(
        "postgresql+psycopg://...",
        connect_args={"cursor_factory": ClientCursor},
    )

Similarly when using an async engine the ``AsyncClientCursor`` can be
specified::

    from psycopg import AsyncClientCursor

    client_side_engine = create_async_engine(
        "postgresql+psycopg://...",
        connect_args={"cursor_factory": AsyncClientCursor},
    )

.. seealso::

    `Client-side-binding cursors <https://www.psycopg.org/psycopg3/docs/advanced/cursors.html#client-side-binding-cursors>`_

é    )Úannotations)ÚdequeN)Úcast)ÚTYPE_CHECKINGé   )Úranges)Ú_PGDialect_common_psycopg)Ú"_PGExecutionContext_common_psycopg)ÚINTERVAL)Ú
PGCompiler)ÚPGIdentifierPreparer)Ú	REGCONFIG)ÚJSON)ÚJSONB)ÚJSONPathType)ÚCITEXTé   )Úpool)Úutil)ÚAdaptedConnection)Úsqltypes)Úawait_fallback)Ú
await_only)ÚIterable)ÚAsyncConnectionzsqlalchemy.dialects.postgresqlc                  ó   • \ rS rSrSrSrg)Ú	_PGStringéÎ   T© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úrender_bind_castÚ__static_attributes__r   ó    Ú`/var/www/html/gaurav/venv/lib/python3.13/site-packages/sqlalchemy/dialects/postgresql/psycopg.pyr   r   Î   ó   † ØÓr'   r   c                  ó   • \ rS rSrSrSrg)Ú_PGREGCONFIGéÒ   Tr   Nr    r   r'   r(   r+   r+   Ò   r)   r'   r+   c                  ó    • \ rS rSrS rS rSrg)Ú_PGJSONéÖ   c                ó:   • U R                  S UR                  5      $ ©N)Ú_make_bind_processorÚ_psycopg_Json©ÚselfÚdialects     r(   Úbind_processorÚ_PGJSON.bind_processor×   s   € Ø×(Ñ(¨¨w×/DÑ/DÓEÐEr'   c                ó   • g r1   r   ©r5   r6   Úcoltypes      r(   Úresult_processorÚ_PGJSON.result_processorÚ   ó   € Ør'   r   N©r!   r"   r#   r$   r7   r<   r&   r   r'   r(   r.   r.   Ö   s   † òFõr'   r.   c                  ó    • \ rS rSrS rS rSrg)Ú_PGJSONBéÞ   c                ó:   • U R                  S UR                  5      $ r1   )r2   Ú_psycopg_Jsonbr4   s     r(   r7   Ú_PGJSONB.bind_processorß   s   € Ø×(Ñ(¨¨w×/EÑ/EÓFÐFr'   c                ó   • g r1   r   r:   s      r(   r<   Ú_PGJSONB.result_processorâ   r>   r'   r   Nr?   r   r'   r(   rA   rA   Þ   s   † òGõr'   rA   c                  ó   • \ rS rSrSrSrSrg)Ú_PGJSONIntIndexTypeéæ   Újson_int_indexTr   N©r!   r"   r#   r$   Ú__visit_name__r%   r&   r   r'   r(   rI   rI   æ   ó   † Ø%€NàÓr'   rI   c                  ó   • \ rS rSrSrSrSrg)Ú_PGJSONStrIndexTypeéì   Újson_str_indexTr   NrL   r   r'   r(   rP   rP   ì   rN   r'   rP   c                  ó   • \ rS rSrSrg)Ú_PGJSONPathTypeéò   r   N©r!   r"   r#   r$   r&   r   r'   r(   rT   rT   ò   ó   † Úr'   rT   c                  ó   • \ rS rSrSrSrg)Ú_PGIntervaléö   Tr   Nr    r   r'   r(   rY   rY   ö   r)   r'   rY   c                  ó   • \ rS rSrSrSrg)Ú_PGTimeStampéú   Tr   Nr    r   r'   r(   r\   r\   ú   r)   r'   r\   c                  ó   • \ rS rSrSrSrg)Ú_PGDateéþ   Tr   Nr    r   r'   r(   r_   r_   þ   r)   r'   r_   c                  ó   • \ rS rSrSrSrg)Ú_PGTimei  Tr   Nr    r   r'   r(   rb   rb     r)   r'   rb   c                  ó   • \ rS rSrSrSrg)Ú
_PGIntegeri  Tr   Nr    r   r'   r(   rd   rd     r)   r'   rd   c                  ó   • \ rS rSrSrSrg)Ú_PGSmallIntegeri
  Tr   Nr    r   r'   r(   rf   rf   
  r)   r'   rf   c                  ó   • \ rS rSrSrSrg)Ú_PGNullTypei  Tr   Nr    r   r'   r(   rh   rh     r)   r'   rh   c                  ó   • \ rS rSrSrSrg)Ú_PGBigIntegeri  Tr   Nr    r   r'   r(   rj   rj     r)   r'   rj   c                  ó   • \ rS rSrSrSrg)Ú
_PGBooleani  Tr   Nr    r   r'   r(   rl   rl     r)   r'   rl   c                  ó    • \ rS rSrS rS rSrg)Ú_PsycopgRangei  c                óH   ^• [        [        U5      R                  mU4S jnU$ )Nc                ó¬   >• [        U [        R                  5      (       a3  T" U R                  U R                  U R
                  U R                  5      n U $ r1   )Ú
isinstancer   ÚRangeÚlowerÚupperÚboundsÚempty)ÚvalueÚpsycopg_Ranges    €r(   Úto_rangeÚ._PsycopgRange.bind_processor.<locals>.to_range  s>   ø€ Ü˜%¤§¡×.Ñ.Ù%Ø—K‘K §¡¨e¯l©l¸E¿K¹Kó�ð ˆLr'   )r   ÚPGDialect_psycopgÚ_psycopg_Range)r5   r6   ry   rx   s      @r(   r7   Ú_PsycopgRange.bind_processor  s"   ø€ ÜÔ.°Ó8×GÑGˆõ	ð ˆr'   c                ó   • S nU$ )Nc                óº   • U bW  [         R                  " U R                  U R                  U R                  (       a  U R                  OSU R                  (       + S9n U $ )Nú[)©ru   rv   ©r   rr   Ú_lowerÚ_upperÚ_bounds©rw   s    r(   ry   Ú0_PsycopgRange.result_processor.<locals>.to_range(  sD   € ØÑ ÜŸšØ—L‘LØ—L‘LØ,1¯M¯M˜5Ÿ=š=¸tØ#Ÿm™mÔ+ñ	�ð ˆLr'   r   ©r5   r6   r;   ry   s       r(   r<   Ú_PsycopgRange.result_processor'  s   € ò	ð ˆr'   r   Nr?   r   r'   r(   rn   rn     s   † ò
õr'   rn   c                  ó    • \ rS rSrS rS rSrg)Ú_PsycopgMultiRangei5  c                óš   ^^^• [        [        U5      R                  m[        [        U5      R                  m[	        S 5      mUUU4S jnU$ )Nc                óè   >• [        U [        TT45      (       a  U $ T" [        SU 5       Vs/ sH6  nT" UR                  UR                  UR
                  UR                  5      PM8     sn5      $ s  snf )NzIterable[ranges.Range])rq   Ústrr   rs   rt   ru   rv   )rw   ÚelementÚNoneTypeÚpsycopg_Multirangerx   s     €€€r(   ry   Ú3_PsycopgMultiRange.bind_processor.<locals>.to_range>  s{   ø€ Ü˜%¤# xÐ1CÐ!D×EÑEØ�á%ô $(Ð(@À%Ô#Hóñ $I˜ñ "ØŸ™ØŸ™ØŸ™ØŸ™ö	ñ $Iñó
ð 
ùòs   ¬<A/)r   r{   r|   Ú_psycopg_MultirangeÚtype)r5   r6   ry   r�   r‘   rx   s      @@@r(   r7   Ú!_PsycopgMultiRange.bind_processor6  sE   ú€ ÜÔ.°Ó8×GÑGˆÜ!Ü˜wó
ç
Ñ
ð 	ô ˜“:ˆ÷	ð  ˆr'   c                ó   • S nU$ )Nc                óD   • U c  g [         R                  " S U  5       5      $ )Nc              3  óÎ   #   • U H\  n[         R                  " UR                  UR                  UR                  (       a  UR                  OS UR                  (       + S9v •  M^     g7f)r€   r�   Nr‚   )Ú.0Úelems     r(   Ú	<genexpr>ÚH_PsycopgMultiRange.result_processor.<locals>.to_range.<locals>.<genexpr>U  sK   é € ð )ñ !&˜ô —L’LØŸ™ØŸ™Ø/3¯|¯|˜tŸ|š|ÀØ"&§,¡,Ô.ö	ò !&ùs   ‚A#A%)r   Ú
MultiRanger†   s    r(   ry   Ú5_PsycopgMultiRange.result_processor.<locals>.to_rangeQ  s,   € Ø‰}Øä×(Ò(ñ )ñ !&ó)ó ð r'   r   rˆ   s       r(   r<   Ú#_PsycopgMultiRange.result_processorP  s   € ò	ð ˆr'   r   Nr?   r   r'   r(   r‹   r‹   5  s   † òõ4r'   r‹   c                  ó   • \ rS rSrSrg)ÚPGExecutionContext_psycopgib  r   NrV   r   r'   r(   r¡   r¡   b  rW   r'   r¡   c                  ó   • \ rS rSrSrg)ÚPGCompiler_psycopgif  r   NrV   r   r'   r(   r£   r£   f  rW   r'   r£   c                  ó   • \ rS rSrSrg)ÚPGIdentifierPreparer_psycopgij  r   NrV   r   r'   r(   r¥   r¥   j  rW   r'   r¥   c                óZ   • [         R                  SU R                  U R                  5        g )Nz%s: %s)ÚloggerÚinfoÚseverityÚmessage_primary)Ú
diagnostics    r(   Ú_log_noticesr¬   n  s   € Ü
‡K�K�˜*×-Ñ-¨z×/IÑ/IÕJr'   c                  óÄ  ^ • \ rS rSrSrSrSrSrSr\	r
\r\rSrSrSr\R&                  " \R*                  0 \R.                  \_\\_\\_\\_\R6                  \_\\_\R6                  R@                  \!_\R6                  RD                  \#_\R6                  RH                  \%_\RL                  \'_\(\'_\RR                  \*_\RV                  \,_\RZ                  \._\R^                  \0_\Rb                  \2_\Rf                  \4_\5Rl                  \7\5Rp                  \90E5      rU 4S jr:U 4S jr;S	 r<U 4S
 jr=\>S 5       r?\>S 5       r@\R‚                  S 5       rB\R‚                  S 5       rC\R‚                  S 5       rD\R‚                  S 5       rE\R‚                  S 5       rF\R‚                  S 5       rGS rHU 4S jrIS rJS rKS rLS rMS rNS rO\R‚                  S 5       rPSrQU =rR$ )r{   ir  ÚpsycopgTÚpyformat)r   r   Nc                ó  >• [         TU ]  " S0 UD6  U R                  (       Gag  [        R                  " SU R                  R
                  5      nU(       a(  [        S UR                  SSS5       5       5      U l        U R                  S:  a  [        S5      eSS	K
Jn  U" U R                  R                  5      =U l        nU R                  S
L ad  SS KnUR!                  SUR"                  R$                  R&                  5        UR!                  SUR"                  R$                  R&                  5        U R(                  (       a  SSKJn  U" U R(                  U5        U R.                  (       a  SSKJn  U" U R.                  U5        g g g )Nz(\d+)\.(\d+)(?:\.(\d+))?c              3  ó>   #   • U H  oc  M  [        U5      v •  M     g 7fr1   )Úint)r™   Úxs     r(   r›   Ú-PGDialect_psycopg.__init__.<locals>.<genexpr>¡  s   é € ð -Ù$4˜q“F”C˜—F�FÒ$4ùs   ‚‹r   é   r   )r   r   rµ   z,psycopg version 3.0.2 or higher is required.r   )ÚAdaptersMapFÚinetÚcidr)Úset_json_loads)Úset_json_dumpsr   )ÚsuperÚ__init__ÚdbapiÚreÚmatchÚ__version__ÚtupleÚgroupÚpsycopg_versionÚImportErrorÚpsycopg.adaptr¶   ÚadaptersÚ_psycopg_adapters_mapÚ_native_inet_typesÚpsycopg.types.stringÚregister_loaderÚtypesÚstringÚ
TextLoaderÚ_json_deserializerÚpsycopg.types.jsonr¹   Ú_json_serializerrº   )	r5   ÚkwargsÚmr¶   Úadapters_mapr®   r¹   rº   Ú	__class__s	           €r(   r¼   ÚPGDialect_psycopg.__init__›  sG  ø€ Ü‰ÒÑ"˜6Ò"à�:�:ˆ:Ü—’Ð4°d·j±j×6LÑ6LÓMˆAÞÜ',ñ -Ø$%§G¡G¨A¨q°!Ô$4ó-ó (�Ô$ð ×#Ñ# iÓ/Ü!ØBóð õ 2á8CØ—
‘
×#Ñ#ó9ð ˆDÔ&¨ð ×&Ñ&¨%Ò/Û+à×,Ñ,Ø˜GŸM™M×0Ñ0×;Ñ;ôð ×,Ñ,Ø˜GŸM™M×0Ñ0×;Ñ;ôð ×&×&Ý=á˜t×6Ñ6¸ÔEà×$×$Ý=á˜t×4Ñ4°lÕCð %ðC r'   c                ó¤   >• [         TU ]  U5      u  p#U R                  (       a  U R                  US'   U R                  b  U R                  US'   X#4$ )NÚcontextÚclient_encoding)r»   Úcreate_connect_argsrÇ   rØ   )r5   ÚurlÚcargsÚcparamsrÔ   s       €r(   rÙ   Ú%PGDialect_psycopg.create_connect_argsÄ  sR   ø€ ä™Ñ4°SÓ9‰ˆà×%×%Ø!%×!;Ñ!;ˆG�IÑØ×ÑÑ+Ø)-×)=Ñ)=ˆGÐ%Ñ&Øˆ~Ðr'   c                óZ   • SSK Jn  UR                  UR                  R                  U5      $ ©Nr   )ÚTypeInfo)Úpsycopg.typesrà   ÚfetchÚ
connectionÚdriver_connection)r5   rã   Únamerà   s       r(   Ú_type_info_fetchÚ"PGDialect_psycopg._type_info_fetchÎ  s"   € Ý*à�~‰~˜j×3Ñ3×EÑEÀtÓLÐLr'   c                ó†  >• [         TU ]  U5        U R                  (       d  SU l        U R                  (       aˆ  U R                  US5      nUS LU l        U R                  (       a[  SSKJn  U R                  (       d   eU" X R                  5        UR                  (       d   eU" X!R                  R                  5        g g g )NFÚhstorer   )Úregister_hstore)r»   Ú
initializeÚinsert_returningÚinsert_executemany_returningÚuse_native_hstoreræ   Ú_has_native_hstoreÚpsycopg.types.hstorerê   rÇ   rã   rä   )r5   rã   r¨   rê   rÔ   s       €r(   rë   ÚPGDialect_psycopg.initializeÓ  s§   ø€ Ü‰Ñ˜:Ô&ð ×$×$Ø05ˆDÔ-ð
 ×!×!Ø×(Ñ(¨°XÓ>ˆDØ&*°$Ð&6ˆDÔ#Ø×&×&Ý@ð ×1×1Ð1Ð1Ù ×&@Ñ&@ÔAð "×,×,Ð,Ð,Ù ×&;Ñ&;×&MÑ&MÕNð 'ð "r'   c                ó   • SS K nU$ )Nr   ©r®   )Úclsr®   s     r(   Úimport_dbapiÚPGDialect_psycopg.import_dbapií  s
   € ãàˆr'   c                ó   • [         $ r1   )ÚPGDialectAsync_psycopg)rô   rÚ   s     r(   Úget_async_dialect_clsÚ'PGDialect_psycopg.get_async_dialect_clsó  s   € ä%Ð%r'   c                ó   • U R                   R                  R                  U R                   R                  R                  U R                   R                  R                  U R                   R                  R
                  S.$ )N)zREAD COMMITTEDzREAD UNCOMMITTEDzREPEATABLE READÚSERIALIZABLE)r½   ÚIsolationLevelÚREAD_COMMITTEDÚREAD_UNCOMMITTEDÚREPEATABLE_READrü   ©r5   s    r(   Ú_isolation_lookupÚ#PGDialect_psycopg._isolation_lookup÷  sZ   € ð #Ÿj™j×7Ñ7×FÑFØ $§
¡
× 9Ñ 9× JÑ JØ#Ÿz™z×8Ñ8×HÑHØ ŸJ™J×5Ñ5×BÑBñ	
ð 	
r'   c                ó&   • SSK Jn  UR                  $ ©Nr   )Újson)rá   r  ÚJson©r5   r  s     r(   r3   ÚPGDialect_psycopg._psycopg_Json   s   € å&à�y‰yÐr'   c                ó&   • SSK Jn  UR                  $ r  )rá   r  ÚJsonbr  s     r(   rD   Ú PGDialect_psycopg._psycopg_Jsonb  s   € å&à�z‰zÐr'   c                ó   • SSK Jn  U$ )Nr   )ÚTransactionStatus)Ú
psycopg.pqr  )r5   r  s     r(   Ú_psycopg_TransactionStatusÚ,PGDialect_psycopg._psycopg_TransactionStatus  s   € å0à Ð r'   c                ó   • SSK Jn  U$ )Nr   )rr   )Úpsycopg.types.rangerr   )r5   rr   s     r(   r|   Ú PGDialect_psycopg._psycopg_Range  s
   € å-àˆr'   c                ó   • SSK Jn  U$ )Nr   )Ú
Multirange)Úpsycopg.types.multiranger  )r5   r  s     r(   r“   Ú%PGDialect_psycopg._psycopg_Multirange  s   € å7àÐr'   c                ó   • X!l         X1l        g r1   ©Ú
autocommitÚisolation_level©r5   rã   r  r  s       r(   Ú_do_isolation_levelÚ%PGDialect_psycopg._do_isolation_level  s   € Ø *ÔØ%4Õ"r'   c                ó¤   >• UR                   R                  n[        TU ]  U5      nX R                  R
                  :X  a  UR                  5         U$ r1   )r¨   Útransaction_statusr»   Úget_isolation_levelr  ÚIDLEÚrollback)r5   Údbapi_connectionÚstatus_beforerw   rÔ   s       €r(   r"  Ú%PGDialect_psycopg.get_isolation_level"  sI   ø€ Ø(×-Ñ-×@Ñ@ˆÜ‘Ñ+Ð,<Ó=ˆð ×;Ñ;×@Ñ@Ó@Ø×%Ñ%Ô'Øˆr'   c                óp   • US:X  a  U R                  USS S9  g U R                  USU R                  U   S9  g )NÚ
AUTOCOMMITTr  F)r  r  )r5   r%  Úlevels      r(   Úset_isolation_levelÚ%PGDialect_psycopg.set_isolation_level,  sM   € Ø�LÓ Ø×$Ñ$Ø ¨TÀ4ð %ò ð ×$Ñ$Ø Ø Ø $× 6Ñ 6°uÑ =ð %ò r'   c                ó   • X!l         g r1   ©Ú	read_only©r5   rã   rw   s      r(   Úset_readonlyÚPGDialect_psycopg.set_readonly8  s   € Ø$Õr'   c                ó   • UR                   $ r1   r.  ©r5   rã   s     r(   Úget_readonlyÚPGDialect_psycopg.get_readonly;  s   € Ø×#Ñ#Ð#r'   c                ój   ^ ^• S nU/mT R                   b  U 4S jnTR                  U5        U4S jnU$ )Nc                ó.   • U R                  [        5        g r1   )Úadd_notice_handlerr¬   )Úconns    r(   ÚnoticesÚ-PGDialect_psycopg.on_connect.<locals>.notices?  s   € Ø×#Ñ#¤LÕ1r'   c                ó>   >• TR                  U TR                  5        g r1   )r+  r  )r:  r5   s    €r(   Ú
on_connectÚ0PGDialect_psycopg.on_connect.<locals>.on_connectF  s   ø€ Ø×(Ñ(¨¨t×/CÑ/CÕDr'   c                ó(   >• T H  nU" U 5        M     g r1   r   )r:  ÚfnÚfnss     €r(   r>  r?  L  s   ø€ Û�Ù�4–ò r'   )r  Úappend)r5   r;  r>  rB  s   `  @r(   r>  ÚPGDialect_psycopg.on_connect>  s>   ù€ ò	2ð ˆiˆà×ÑÑ+õEð �J‰J�zÔ"õ	ð Ðr'   c                ó˜   • [        XR                  R                  5      (       a&  Ub#  UR                  (       d  UR                  (       a  gg)NTF)rq   r½   ÚErrorÚclosedÚbroken)r5   Úerã   Úcursors       r(   Úis_disconnectÚPGDialect_psycopg.is_disconnectR  s3   € Ü�aŸ™×)Ñ)×*Ñ*¨zÑ/EØ× ×  J×$5×$5ØØr'   c                ó\   • UR                   R                  U R                  R                  :H  $ r1   )r¨   r!  r  r#  )r5   Ú
dbapi_conns     r(   Ú_twophase_idle_checkÚ&PGDialect_psycopg._twophase_idle_checkX  s*   € ð �O‰O×.Ñ.Ø×.Ñ.×3Ñ3ñ4ð	
r'   c                ó   • g)NÚ;r   r  s    r(   Ú_dialect_specific_select_oneÚ.PGDialect_psycopg._dialect_specific_select_one_  s   € àr'   )rï   rÇ   rí   rÃ   )Sr!   r"   r#   r$   ÚdriverÚsupports_statement_cacheÚsupports_server_side_cursorsÚdefault_paramstyleÚsupports_sane_multi_rowcountr¡   Úexecution_ctx_clsr£   Ústatement_compilerr¥   ÚpreparerrÃ   rï   rÇ   r   Úupdate_copyr	   Úcolspecsr   ÚStringr   r   r+   r   r.   r   r   rA   r   rT   ÚJSONIntIndexTyperI   ÚJSONStrIndexTyperP   ÚIntervalrY   r   ÚDater_   ÚDateTimer\   ÚTimerb   ÚIntegerrd   ÚSmallIntegerrf   Ú
BigIntegerrj   r   ÚAbstractSingleRangern   ÚAbstractMultiRanger‹   r¼   rÙ   ræ   rë   Úclassmethodrõ   rù   Úmemoized_propertyr  r3   rD   r  r|   r“   r  r"  r+  r1  r5  r>  rK  rO  rS  r&   Ú__classcell__)rÔ   s   @r(   r{   r{   r  s²  ø† Ø€Fà#ÐØ#'Ð Ø#ÐØ#'Ð à2ÐØ+ÐØ+€HØ€OàÐØ Ðà×ÒØ!×*Ñ*ð	
Ø�O‰O˜Yð	
à�|ð	
ð �'ð	
ð �Fð		
ð
 �M‰M˜7ð	
ð �8ð	
ð �M‰M×&Ñ&¨ð	
ð �M‰M×*Ñ*Ð,?ð	
ð �M‰M×*Ñ*Ð,?ð	
ð ×Ñ˜{ð	
ð �kð	
ð �M‰M˜7ð	
ð ×Ñ˜|ð	
ð �M‰M˜7ð	
ð ×Ñ˜jð	
ð  ×!Ñ! ?ð!	
ð" ×Ñ ð#	
ð$ ×&Ñ&¨Ø×%Ñ%Ð'9ñ'	
ó€Hõ2'DõRòMõ
Oð4 ñó ðð
 ñ&ó ð&ð 
×Ññ
ó ð
ð 
×Ññó ðð
 
×Ññó ðð
 
×Ññ!ó ð!ð
 
×Ññó ðð
 
×Ññó ðò
5õò
ò%ò$òò(ò
ð 
×Ññó ör'   r{   c                  óœ   • \ rS rSrSrSrSS jrS r\S 5       r	\	R                  S 5       r	SS jrS	 rSS
 jrS rS rS rSS jrS rSrg)ÚAsyncAdapt_psycopg_cursorid  )Ú_cursorÚawait_Ú_rowsNc                ó:   • Xl         X l        [        5       U l        g r1   )rp  rq  r   rr  )r5   rJ  rq  s      r(   r¼   Ú"AsyncAdapt_psycopg_cursor.__init__i  s   € ØŒØŒÜ“Wˆ�
r'   c                ó.   • [        U R                  U5      $ r1   )Úgetattrrp  ©r5   rå   s     r(   Ú__getattr__Ú%AsyncAdapt_psycopg_cursor.__getattr__n  s   € Ü�t—|‘| TÓ*Ð*r'   c                ó.   • U R                   R                  $ r1   ©rp  Ú	arraysizer  s    r(   r|  Ú#AsyncAdapt_psycopg_cursor.arraysizeq  s   € à�|‰|×%Ñ%Ð%r'   c                ó$   • XR                   l        g r1   r{  ©r5   rw   s     r(   r|  r}  u  s   € à!&�‰Õr'   c              ƒ  ó   #   • g 7fr1   r   r  s    r(   Ú_async_soft_closeÚ+AsyncAdapt_psycopg_cursor._async_soft_closey  s   é € Øùs   ‚c                ól   • U R                   R                  5         U R                  R                  5         g r1   )rr  Úclearrp  Ú_closer  s    r(   ÚcloseÚAsyncAdapt_psycopg_cursor.close|  s"   € Ø�
‰
×ÑÔà�‰×ÑÕr'   c                óR  • U R                  U R                  R                  " X40 UD65      nU R                  R                  nU(       a]  UR                  U R
                  R                  :X  a9  U R                  U R                  R                  5       5      n[        U5      U l	        U$ r1   )
rq  rp  ÚexecuteÚpgresultÚstatusÚ_psycopg_ExecStatusÚ	TUPLES_OKÚfetchallr   rr  )r5   ÚqueryÚparamsÚkwÚresultÚresÚrowss          r(   r‰  Ú!AsyncAdapt_psycopg_cursor.execute�  sz   € Ø—‘˜TŸ\™\×1Ò1°%ÑFÀ2ÑFÓGˆà�l‰l×#Ñ#ˆö �3—:‘: ×!9Ñ!9×!CÑ!CÓCØ—;‘;˜tŸ|™|×4Ñ4Ó6Ó7ˆDÜ˜t›ˆDŒJØˆr'   c                óV   • U R                  U R                  R                  X5      5      $ r1   )rq  rp  Úexecutemany)r5   r�  Ú
params_seqs      r(   r—  Ú%AsyncAdapt_psycopg_cursor.executemany�  s    € Ø�{‰{˜4Ÿ<™<×3Ñ3°EÓFÓGÐGr'   c              #  óŽ   #   • U R                   (       a0  U R                   R                  5       v •  U R                   (       a  M/  g g 7fr1   ©rr  Úpopleftr  s    r(   Ú__iter__Ú"AsyncAdapt_psycopg_cursor.__iter__�  s*   é € Ø�j�jØ—*‘*×$Ñ$Ó&Ò&ð �j�j‹jùs   ‚?AÁAc                óZ   • U R                   (       a  U R                   R                  5       $ g r1   r›  r  s    r(   ÚfetchoneÚ"AsyncAdapt_psycopg_cursor.fetchone”  s   € Ø�:�:Ø—:‘:×%Ñ%Ó'Ð'àr'   c                óÌ   • Uc  U R                   R                  nU R                  n[        [	        U[        U5      5      5       Vs/ sH  o2R                  5       PM     sn$ s  snf r1   )rp  r|  rr  ÚrangeÚminÚlenrœ  )r5   ÚsizeÚrrÚ_s       r(   Ú	fetchmanyÚ#AsyncAdapt_psycopg_cursor.fetchmanyš  sM   € Ø‰<Ø—<‘<×)Ñ)ˆDà�Z‰ZˆÜ&+¬C°´c¸"³gÓ,>Ô&?Ó@Ñ&? —
‘
–Ñ&?Ñ@Ð@ùÒ@s   ÁA!c                ód   • [        U R                  5      nU R                  R                  5         U$ r1   )Úlistrr  r„  )r5   Úretvals     r(   rŽ  Ú"AsyncAdapt_psycopg_cursor.fetchall¡  s%   € Ü�d—j‘jÓ!ˆØ�
‰
×ÑÔØˆr'   )rp  rr  rq  ©ÚreturnÚNoner1   )r!   r"   r#   r$   Ú	__slots__rŒ  r¼   rx  Úpropertyr|  Úsetterr�  r†  r‰  r—  r�  r   r©  rŽ  r&   r   r'   r(   ro  ro  d  so   † Ø.€IàÐôò
+ð ñ&ó ð&ð ×Ññ'ó ð'ôòô

òHò'òôAõr'   ro  c                  ó@   • \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)ÚAsyncAdapt_psycopg_ss_cursori§  Nc                ó^   • U R                  U R                  R                  " X40 UD65        U $ r1   )rq  rp  r‰  )r5   r�  r�  r‘  s       r(   r‰  Ú$AsyncAdapt_psycopg_ss_cursor.execute¨  s'   € Ø�‰�D—L‘L×(Ò(¨Ñ=¸"Ñ=Ô>Øˆr'   c                óV   • U R                  U R                  R                  5       5        g r1   )rq  rp  r†  r  s    r(   r†  Ú"AsyncAdapt_psycopg_ss_cursor.close¬  s   € Ø�‰�D—L‘L×&Ñ&Ó(Õ)r'   c                óT   • U R                  U R                  R                  5       5      $ r1   )rq  rp  r   r  s    r(   r   Ú%AsyncAdapt_psycopg_ss_cursor.fetchone¯  ó   € Ø�{‰{˜4Ÿ<™<×0Ñ0Ó2Ó3Ð3r'   c                óV   • U R                  U R                  R                  U5      5      $ r1   )rq  rp  r©  )r5   r¦  s     r(   r©  Ú&AsyncAdapt_psycopg_ss_cursor.fetchmany²  s    € Ø�{‰{˜4Ÿ<™<×1Ñ1°$Ó7Ó8Ð8r'   c                óT   • U R                  U R                  R                  5       5      $ r1   )rq  rp  rŽ  r  s    r(   rŽ  Ú%AsyncAdapt_psycopg_ss_cursor.fetchallµ  r½  r'   c              #  ó¨   #   • U R                   R                  5       n  U R                  UR                  5       5      v •  M$  ! [         a     g f = f7fr1   )rp  Ú	__aiter__rq  Ú	__anext__ÚStopAsyncIteration)r5   Úiterators     r(   r�  Ú%AsyncAdapt_psycopg_ss_cursor.__iter__¸  sO   é € Ø—<‘<×)Ñ)Ó+ˆØðØ—k‘k (×"4Ñ"4Ó"6Ó7Ò7ñ øô &ó Ùðüs(   ‚AŸ!A Á AÁ
AÁAÁAÁAr   r1   )r   )r!   r"   r#   r$   r‰  r†  r   r©  rŽ  r�  r&   r   r'   r(   r¶  r¶  §  s    † ôò*ò4ô9ò4õr'   r¶  c                  óØ   • \ rS rSr% S\S'   Sr\" \5      rSS jr	S r
SS jrS	 rS
 rS rS r\S 5       r\R$                  S 5       rS rS rS rS rS rS rSS jrSS jrS rSrg)ÚAsyncAdapt_psycopg_connectioniÁ  r   Ú_connectionr   c                ó   • Xl         g r1   ©rÊ  r4  s     r(   r¼   Ú&AsyncAdapt_psycopg_connection.__init__Æ  s   € Ø%Õr'   c                ó.   • [        U R                  U5      $ r1   )rv  rÊ  rw  s     r(   rx  Ú)AsyncAdapt_psycopg_connection.__getattr__É  s   € Ü�t×'Ñ'¨Ó.Ð.r'   Nc                ó„   • U R                  U R                  R                  " X40 UD65      n[        X@R                   5      $ r1   )rq  rÊ  r‰  ro  )r5   r�  r�  r‘  rJ  s        r(   r‰  Ú%AsyncAdapt_psycopg_connection.executeÌ  s5   € Ø—‘˜T×-Ñ-×5Ò5°eÑJÀrÑJÓKˆÜ(¨·±Ó=Ð=r'   c                ó°   • U R                   R                  " U0 UD6n[        US5      (       a  [        X0R                  5      $ [        X0R                  5      $ )Nrå   )rÊ  rJ  Úhasattrr¶  rq  ro  )r5   Úargsr‘  rJ  s       r(   rJ  Ú$AsyncAdapt_psycopg_connection.cursorÐ  sH   € Ø×!Ñ!×(Ò(¨$Ð5°"Ñ5ˆÜ�6˜6×"Ñ"Ü/°¿¹ÓDÐDä,¨V·[±[ÓAÐAr'   c                óV   • U R                  U R                  R                  5       5        g r1   )rq  rÊ  Úcommitr  s    r(   r×  Ú$AsyncAdapt_psycopg_connection.commit×  s   € Ø�‰�D×$Ñ$×+Ñ+Ó-Õ.r'   c                óV   • U R                  U R                  R                  5       5        g r1   )rq  rÊ  r$  r  s    r(   r$  Ú&AsyncAdapt_psycopg_connection.rollbackÚ  s   € Ø�‰�D×$Ñ$×-Ñ-Ó/Õ0r'   c                óV   • U R                  U R                  R                  5       5        g r1   )rq  rÊ  r†  r  s    r(   r†  Ú#AsyncAdapt_psycopg_connection.closeÝ  s   € Ø�‰�D×$Ñ$×*Ñ*Ó,Õ-r'   c                ó.   • U R                   R                  $ r1   )rÊ  r  r  s    r(   r  Ú(AsyncAdapt_psycopg_connection.autocommità  s   € à×Ñ×*Ñ*Ð*r'   c                ó&   • U R                  U5        g r1   ©Úset_autocommitr  s     r(   r  rÞ  ä  s   € à×Ñ˜EÕ"r'   c                óX   • U R                  U R                  R                  U5      5        g r1   )rq  rÊ  rá  r  s     r(   rá  Ú,AsyncAdapt_psycopg_connection.set_autocommitè  ó   € Ø�‰�D×$Ñ$×3Ñ3°EÓ:Õ;r'   c                óX   • U R                  U R                  R                  U5      5        g r1   )rq  rÊ  r+  r  s     r(   r+  Ú1AsyncAdapt_psycopg_connection.set_isolation_levelë  s   € Ø�‰�D×$Ñ$×8Ñ8¸Ó?Õ@r'   c                óX   • U R                  U R                  R                  U5      5        g r1   )rq  rÊ  Úset_read_onlyr  s     r(   rè  Ú+AsyncAdapt_psycopg_connection.set_read_onlyî  s   € Ø�‰�D×$Ñ$×2Ñ2°5Ó9Õ:r'   c                óX   • U R                  U R                  R                  U5      5        g r1   )rq  rÊ  Úset_deferrabler  s     r(   rë  Ú,AsyncAdapt_psycopg_connection.set_deferrableñ  rä  r'   c                óV   • U R                  U R                  R                  U5      5      $ r1   )rq  rÊ  Ú	tpc_begin©r5   Úxids     r(   rî  Ú'AsyncAdapt_psycopg_connection.tpc_beginô  s"   € Ø�{‰{˜4×+Ñ+×5Ñ5°cÓ:Ó;Ð;r'   c                óT   • U R                  U R                  R                  5       5      $ r1   )rq  rÊ  Útpc_preparer  s    r(   ró  Ú)AsyncAdapt_psycopg_connection.tpc_prepare÷  ó    € Ø�{‰{˜4×+Ñ+×7Ñ7Ó9Ó:Ð:r'   c                óV   • U R                  U R                  R                  U5      5      $ r1   )rq  rÊ  Ú
tpc_commitrï  s     r(   r÷  Ú(AsyncAdapt_psycopg_connection.tpc_commitú  s"   € Ø�{‰{˜4×+Ñ+×6Ñ6°sÓ;Ó<Ð<r'   c                óV   • U R                  U R                  R                  U5      5      $ r1   )rq  rÊ  Útpc_rollbackrï  s     r(   rú  Ú*AsyncAdapt_psycopg_connection.tpc_rollbacký  s"   € Ø�{‰{˜4×+Ñ+×8Ñ8¸Ó=Ó>Ð>r'   c                óT   • U R                  U R                  R                  5       5      $ r1   )rq  rÊ  Útpc_recoverr  s    r(   rý  Ú)AsyncAdapt_psycopg_connection.tpc_recover   rõ  r'   rÌ  r¯  r1   )r!   r"   r#   r$   Ú__annotations__r²  Ústaticmethodr   rq  r¼   rx  r‰  rJ  r×  r$  r†  r³  r  r´  rá  r+  rè  rë  rî  ró  r÷  rú  rý  r&   r   r'   r(   rÉ  rÉ  Á  s—   ‡ Ø Ó Ø€IÙ˜*Ó%€Fô&ò/ô>òBò/ò1ò.ð ñ+ó ð+ð ×Ññ#ó ð#ò<òAò;ò<ò<ò;ô=ô?õ;r'   rÉ  c                  ó(   • \ rS rSrSr\" \5      rSrg)Ú%AsyncAdaptFallback_psycopg_connectioni  r   N)	r!   r"   r#   r$   r²  r   r   rq  r&   r   r'   r(   r  r    s   † Ø€IÙ˜.Ó)ƒFr'   r  c                  ó$   • \ rS rSrSS jrS rSrg)ÚPsycopgAdaptDBAPIi	  c                ó–   • Xl         U R                   R                  R                  5        H  u  p#US:w  d  M  X0R                  U'   M     g )NÚconnect)r®   Ú__dict__Úitems)r5   r®   ÚkÚvs       r(   r¼   ÚPsycopgAdaptDBAPI.__init__
  s9   € ØŒà—L‘L×)Ñ)×/Ñ/Ö1‰DˆAØ�I�~Ø#$—‘˜aÓ ò 2r'   c           	     ó$  • UR                  SS5      nUR                  SU R                  R                  R                  5      n[        R
                  " U5      (       a  [        [        U" U0 UD65      5      $ [        [        U" U0 UD65      5      $ )NÚasync_fallbackFÚasync_creator_fn)
Úpopr®   r   r  r   Úasboolr  r   rÉ  r   )r5   Úargr‘  r  Ú
creator_fns        r(   r  ÚPsycopgAdaptDBAPI.connect  s‡   € ØŸ™Ð 0°%Ó8ˆØ—V‘VØ §¡× <Ñ <× DÑ Dó
ˆ
ô �;Š;�~×&Ñ&Ü8Ü™z¨3Ð5°"Ñ5Ó6óð ô 1Ü™: sÐ1¨bÑ1Ó2óð r'   ró   Nr¯  )r!   r"   r#   r$   r¼   r  r&   r   r'   r(   r  r  	  s   † ô%õr'   r  c                  ó`   • \ rS rSrSrSr\S 5       r\S 5       rS r	S r
S rS rS	 rS
 rSrg)rø   i   Tc                óB   • SS K nSSKJn  U[        l        [        U5      $ )Nr   )Ú
ExecStatus)r®   r  r  ro  rŒ  r  )rô   r®   r  s      r(   rõ   Ú#PGDialectAsync_psycopg.import_dbapi$  s   € ãÝ)à8BÔ!Ô5ä  Ó)Ð)r'   c                ó°   • UR                   R                  SS5      n[        R                  " U5      (       a  [        R
                  $ [        R                  $ )Nr  F)r�  Úgetr   r  r   ÚFallbackAsyncAdaptedQueuePoolÚAsyncAdaptedQueuePool)rô   rÚ   r  s      r(   Úget_pool_classÚ%PGDialectAsync_psycopg.get_pool_class-  s>   € àŸ™Ÿ™Ð'7¸Ó?ˆä�;Š;�~×&Ñ&Ü×5Ñ5Ð5ä×-Ñ-Ð-r'   c                ó|   • SSK Jn  UR                  nUR                  UR	                  UR
                  U5      5      $ rß   )rá   rà   rã   rq  râ   rä   )r5   rã   rå   rà   Úadapteds        r(   ræ   Ú'PGDialectAsync_psycopg._type_info_fetch6  s0   € Ý*à×'Ñ'ˆØ�~‰~˜hŸn™n¨W×-FÑ-FÈÓMÓNÐNr'   c                óH   • UR                  U5        UR                  U5        g r1   )rá  r+  r  s       r(   r  Ú*PGDialectAsync_psycopg._do_isolation_level<  s   € Ø×!Ñ! *Ô-Ø×&Ñ& Õ7r'   c                ó&   • UR                  U5        g r1   rà  r0  s      r(   Ú_do_autocommitÚ%PGDialectAsync_psycopg._do_autocommit@  ó   € Ø×!Ñ! %Õ(r'   c                ó&   • UR                  U5        g r1   )rè  r0  s      r(   r1  Ú#PGDialectAsync_psycopg.set_readonlyC  s   € Ø× Ñ  Õ'r'   c                ó&   • UR                  U5        g r1   )rë  r0  s      r(   rë  Ú%PGDialectAsync_psycopg.set_deferrableF  r&  r'   c                ó   • UR                   $ r1   rÌ  r4  s     r(   Úget_driver_connectionÚ,PGDialectAsync_psycopg.get_driver_connectionI  s   € Ø×%Ñ%Ð%r'   r   N)r!   r"   r#   r$   Úis_asyncrV  rk  rõ   r  ræ   r  r$  r1  rë  r,  r&   r   r'   r(   rø   rø      sR   † Ø€HØ#Ðàñ*ó ð*ð ñ.ó ð.òOò8ò)ò(ò)õ&r'   rø   )TÚ__doc__Ú
__future__r   Úcollectionsr   Úloggingr¾   Útypingr   r   Ú r   Ú_psycopg_commonr	   r
   Úbaser   r   r   r   r  r   r   r   rË   r   r   r   Úenginer   Úsqlr   Úutil.concurrencyr   r   r   r®   r   Ú	getLoggerr§   r_  r   r+   r.   rA   r`  rI   ra  rP   rT   rY   rd  r\   rc  r_   re  rb   rf  rd   rg  rf   ÚNullTyperh   rh  rj   ÚBooleanrl   ÚAbstractSingleRangeImplrn   ÚAbstractMultiRangeImplr‹   r¡   r£   r¥   r¬   r{   ro  r¶  rÉ  r  r  rø   r6   Údialect_asyncr   r'   r(   Ú<module>r@     s-  ðñaõF #å Û Û 	Ý Ý  å Ý 6Ý ?Ý Ý Ý &Ý Ý Ý Ý Ý Ý Ý Ý 'Ý Ý .Ý *æÝå'à	×	Ò	Ð;Ó	<€ô�—‘ô ô�9ô ôˆdô ôˆuô ô˜(Ÿ-™-×8Ñ8ô ô˜(Ÿ-™-×8Ñ8ô ô	�lô 	ô�(ô ô�8×$Ñ$ô ôˆh�m‰mô ôˆh�m‰mô ô�×!Ñ!ô ô�h×+Ñ+ô ô�(×#Ñ#ô ô�H×'Ñ'ô ô�×!Ñ!ô ô�F×2Ñ2ô ô6*˜×6Ñ6ô *ôZ	Ð!Cô 	ô	˜ô 	ô	Ð#7ô 	òKôoÐ1ô o÷d@ñ @ôFÐ#<ô ô4@;Ð$5ô @;ôF*Ð,Iô *÷
ñ ô.*&Ð.ô *&ðZ €Ø&�r'   