ó
    Ñ]jPg  ã                  óü  • 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   ó    Úc/home/mande/repo/quber/.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)Ú_PsycopgMultiRangei4  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   ¬=A0)r   r{   r|   Ú_psycopg_MultirangeÚtype)r5   r6   ry   r�   r‘   rx   s      @@@r(   r7   Ú!_PsycopgMultiRange.bind_processor5  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>T  sK   é € ð )ò !&˜ô —L’LØŸ™ØŸ™Ø/3¯|¯|˜tŸ|š|ÀØ"&§,¡,Ô.ö	ò !&ùs   ‚A$A&)r   Ú
MultiRanger†   s    r(   ry   Ú5_PsycopgMultiRange.result_processor.<locals>.to_rangeP  s,   € Ø‰}Øä×(Ò(ñ )ñ !&ó)ó ð r'   r   rˆ   s       r(   r<   Ú#_PsycopgMultiRange.result_processorO  s   € ò	ð ˆr'   r   Nr?   r   r'   r(   r‹   r‹   4  s   † òõ4r'   r‹   c                  ó   • \ rS rSrSrg)ÚPGExecutionContext_psycopgia  r   NrV   r   r'   r(   r¡   r¡   a  rW   r'   r¡   c                  ó   • \ rS rSrSrg)ÚPGCompiler_psycopgie  r   NrV   r   r'   r(   r£   r£   e  rW   r'   r£   c                  ó   • \ rS rSrSrg)ÚPGIdentifierPreparer_psycopgii  r   NrV   r   r'   r(   r¥   r¥   i  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¬   m  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S jrO S S jrP S S jrQ\R‚                  S 5       rRSrSU =rT$ )!r{   iq  Ú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_readonly7  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_connectE  s   ø€ Ø×(Ñ(¨¨t×/CÑ/CÕDr'   c                ó(   >• T H  nU" U 5        M     g r1   r   )r:  ÚfnÚfnss     €r(   r>  r?  K  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_disconnectQ  s3   € Ü�aŸ™×)Ñ)×*Ñ*¨zÑ/EØ× ×  J×$5×$5ØØr'   c                ó–  • UR                   R                  nU(       d.  UR                  R                  U R                  R
                  :w  a  UR                  5         UR                  n U(       d  U R                  US5        UR                  U5        U(       d  U R                  XE5        g g ! U(       d  U R                  XE5        f f = f)NT)
rã   r%  r¨   r!  r  r#  r$  r  Ú_do_autocommitÚexecute)r5   rã   ÚcommandÚrecoverÚ
dbapi_connÚbefore_autocommits         r(   Ú_do_prepared_twophaseÚ'PGDialect_psycopg._do_prepared_twophaseW  s¨   € Ø×*Ñ*×;Ñ;ˆ
æð �‰×1Ñ1Ø×.Ñ.×3Ñ3ó4ð ×ÑÔ!Ø&×1Ñ1Ðð	CÞ$Ø×#Ñ# J°Ô5Ø×Ñ˜wÔ'æ$Ø×#Ñ# JÕBð %øÖ$Ø×#Ñ# JÕBð %ús   Á)*B- Â-Cc                ót   • U(       a  U R                  USU S3US9  g U R                  UR                  5        g )NzROLLBACK PREPARED 'Ú'©rQ  )rT  Údo_rollbackrã   ©r5   rã   ÚxidÚis_preparedrQ  s        r(   Údo_rollback_twophaseÚ&PGDialect_psycopg.do_rollback_twophasej  sA   € ö Ø×&Ñ&ØÐ1°#°°aÐ8À'ð 'ò ð ×Ñ˜Z×2Ñ2Õ3r'   c                ót   • U(       a  U R                  USU S3US9  g U R                  UR                  5        g )NzCOMMIT PREPARED 'rW  rX  )rT  Ú	do_commitrã   rZ  s        r(   Údo_commit_twophaseÚ$PGDialect_psycopg.do_commit_twophaset  s?   € ö Ø×&Ñ&ØÐ/°¨u°AÐ6Àð 'ò ð �N‰N˜:×0Ñ0Õ1r'   c                ó   • g)NÚ;r   r  s    r(   Ú_dialect_specific_select_oneÚ.PGDialect_psycopg._dialect_specific_select_one~  s   € àr'   )rï   rÇ   rí   rÃ   )F)TF)Ur!   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  rT  r]  ra  re  r&   Ú__classcell__)rÔ   s   @r(   r{   r{   q  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õò
ò%ò$òò(ôCð( :?ô4ð :?ô2ð 
×Ññó ö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_cursoriƒ  )Ú_cursorÚawait_Ú_rowsNc                ó:   • Xl         X l        [        5       U l        g r1   )r‚  rƒ  r   r„  )r5   rJ  rƒ  s      r(   r¼   Ú"AsyncAdapt_psycopg_cursor.__init__ˆ  s   € ØŒØŒÜ“Wˆ�
r'   c                ó.   • [        U R                  U5      $ r1   )Úgetattrr‚  ©r5   rå   s     r(   Ú__getattr__Ú%AsyncAdapt_psycopg_cursor.__getattr__�  s   € Ü�t—|‘| TÓ*Ð*r'   c                ó.   • U R                   R                  $ r1   ©r‚  Ú	arraysizer  s    r(   rŽ  Ú#AsyncAdapt_psycopg_cursor.arraysize�  s   € à�|‰|×%Ñ%Ð%r'   c                ó$   • XR                   l        g r1   r�  ©r5   rw   s     r(   rŽ  r�  ”  s   € à!&�‰Õr'   c              ƒ  ó   #   • g 7fr1   r   r  s    r(   Ú_async_soft_closeÚ+AsyncAdapt_psycopg_cursor._async_soft_close˜  s   é € Øùs   ‚c                ól   • U R                   R                  5         U R                  R                  5         g r1   )r„  Úclearr‚  Ú_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   )
rƒ  r‚  rO  ÚpgresultÚstatusÚ_psycopg_ExecStatusÚ	TUPLES_OKÚfetchallr   r„  )r5   ÚqueryÚparamsÚkwÚresultÚresÚrowss          r(   rO  Ú!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   )rƒ  r‚  Ú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   ©r„  Ú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   )r‚  rŽ  r„  Ú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   )Úlistr„  r–  )r5   Úretvals     r(   rŸ  Ú"AsyncAdapt_psycopg_cursor.fetchallÀ  s%   € Ü�d—j‘jÓ!ˆØ�
‰
×ÑÔØˆr'   )r‚  r„  rƒ  ©ÚreturnÚNoner1   )r!   r"   r#   r$   Ú	__slots__r�  r¼   rŠ  ÚpropertyrŽ  Úsetterr“  r˜  rO  r¨  r®  r±  rº  rŸ  r&   r   r'   r(   r�  r�  ƒ  so   † Ø.€IàÐôò
+ð ñ&ó ð&ð ×Ññ'ó ð'ôòô

òHò'òôAõr'   r�  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   )rƒ  r‚  rO  )r5   r   r¡  r¢  s       r(   rO  Ú$AsyncAdapt_psycopg_ss_cursor.executeÇ  s'   € Ø�‰�D—L‘L×(Ò(¨Ñ=¸"Ñ=Ô>Øˆr'   c                óV   • U R                  U R                  R                  5       5        g r1   )rƒ  r‚  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   )rƒ  r‚  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   )rƒ  r‚  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   )rƒ  r‚  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   )r‚  Ú	__aiter__rƒ  Ú	__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$   rO  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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   )rˆ  rÛ  r‰  s     r(   rŠ  Ú)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   )rƒ  rÛ  rO  r�  )r5   r   r¡  r¢  rJ  s        r(   rO  Ú%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Ç  rƒ  r�  )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   )rƒ  rÛ  Úcommitr  s    r(   rè  Ú$AsyncAdapt_psycopg_connection.commitö  s   € Ø�‰�D×$Ñ$×+Ñ+Ó-Õ.r'   c                óV   • U R                  U R                  R                  5       5        g r1   )rƒ  rÛ  r$  r  s    r(   r$  Ú&AsyncAdapt_psycopg_connection.rollbackù  s   € Ø�‰�D×$Ñ$×-Ñ-Ó/Õ0r'   c                óV   • U R                  U R                  R                  5       5        g r1   )rƒ  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   )rƒ  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   )rƒ  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   )rƒ  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   )rƒ  rÛ  Úset_deferrabler‘  s     r(   rü  Ú,AsyncAdapt_psycopg_connection.set_deferrable  rõ  r'   rÝ  rÀ  r1   )r!   r"   r#   r$   Ú__annotations__rÃ  Ústaticmethodr   rƒ  r¼   rŠ  rO  rJ  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   rƒ  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ø   i0  Tc                óB   • SS K nSSKJn  U[        l        [        U5      $ )Nr   )Ú
ExecStatus)r®   r  r  r�  r�  r  )rô   r®   r  s      r(   rõ   Ú#PGDialectAsync_psycopg.import_dbapi4  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ã   rƒ  râ   rä   )r5   rã   rå   rà   Úadapteds        r(   ræ   Ú'PGDialectAsync_psycopg._type_info_fetchF  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_levelL  s   € Ø×!Ñ! *Ô-Ø×&Ñ& Õ7r'   c                ó&   • UR                  U5        g r1   rñ  r0  s      r(   rN  Ú%PGDialectAsync_psycopg._do_autocommitP  ó   € Ø×!Ñ! %Õ(r'   c                ó&   • UR                  U5        g r1   )rù  r0  s      r(   r1  Ú#PGDialectAsync_psycopg.set_readonlyS  s   € Ø× Ñ  Õ'r'   c                ó&   • UR                  U5        g r1   )rü  r0  s      r(   rü  Ú%PGDialectAsync_psycopg.set_deferrableV  r$  r'   c                ó   • UR                   $ r1   rÝ  r4  s     r(   Úget_driver_connectionÚ,PGDialectAsync_psycopg.get_driver_connectionY  s   € Ø×%Ñ%Ð%r'   r   N)r!   r"   r#   r$   Úis_asyncrh  r}  rõ   r  ræ   r  rN  r1  rü  r*  r&   r   r'   r(   rø   rø   0  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§   rq  r   r+   r.   rA   rr  rI   rs  rP   rT   rY   rv  r\   ru  r_   rw  rb   rx  rd   ry  rf   ÚNullTyperh   rz  rj   ÚBooleanrl   ÚAbstractSingleRangeImplrn   ÚAbstractMultiRangeImplr‹   r¡   r£   r¥   r¬   r{   r�  rÇ  rÚ  r  r  rø   r6   Údialect_asyncr   r'   r(   Ú<module>r>     s+  ðñaõD #å Û Û 	Ý Ý  å Ý 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Ð#<ô ô41<Ð$5ô 1<ôh*Ð,Iô *÷
ñ ô.*&Ð.ô *&ðZ €Ø&�r'   