§
    Ÿj;  ã                   óÞ  — d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( d„ Z)d„ Z*d„ Z+d„ Z, ej-        ddj.        ¦  «          ej-        d e)e¦  «        ¦  «          ej-        d e)e¦  «        ¦  «          ej-        d e)e¦  «        ¦  «          ej-        d e)e¦  «        ¦  «          ej/        ej0        e1¦  «          ej/        ej2        e*¦  «          ej/        ej        e+¦  «          G d„ de¦  «        Z3 ed ¦  «        Z4 G d!„ d"ej5        ¦  «        Z6dS )#z@
SQLite backend for the sqlite3 module in the standard library.
é    N)ÚMapping)ÚchainÚtee)Údbapi2)ÚImproperlyConfigured)ÚIntegrityError)ÚBaseDatabaseWrapper)Úasync_unsafe)Ú
parse_dateÚparse_datetimeÚ
parse_time)Ú_lazy_re_compileé   )Úregister)ÚDatabaseClient)ÚDatabaseCreation)ÚDatabaseFeatures)ÚDatabaseIntrospection)ÚDatabaseOperations)ÚDatabaseSchemaEditorc                 ó   ‡ — ˆ fd„S )zR
    Convert bytestrings from Python's sqlite3 interface to a regular string.
    c                 ó>   •—  ‰|                       ¦   «         ¦  «        S ©N)Údecode)ÚsÚ	conv_funcs    €úl/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/db/backends/sqlite3/base.pyú<lambda>zdecoder.<locals>.<lambda>    s   ø€ �Y�Y˜qŸxšx™zœzÑ*Ô*€ ó    © )r   s   `r   Údecoderr!      s   ø€ ð +Ð*Ð*Ð*Ð*r   c                 ó*   — |                       ¦   «         S r   ©Ú	isoformat©Úvals    r   Ú
adapt_dater'   #   s   € Ø�=Š=‰?Œ?Ðr   c                 ó,   — |                       d¦  «        S )Nú r#   r%   s    r   Úadapt_datetimer*   '   s   € Ø�=Š=˜ÑÔÐr   c                 ó    — | d         €dS d| z  S )NÚ
max_lengthÚvarcharúvarchar(%(max_length)s)r    )Údatas    r   Ú_get_varchar_columnr0   +   s   € ØˆLÔÐ!ØˆyØ$ tÑ+Ð+r   Úbooló   1ÚdateÚtimeÚdatetimeÚ	timestampc                   ó”  — e Zd ZdZdZi dd“dd“dd“dd	“d
e“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd d!d"ddd#dd$d%d&œ
¥Zd'd(d'd'd)œZd*d*d*d+œZd,d-d-d-d.d/d0d1d2d3d-d-d-d-d4œZ	d5Z
d6d7d8d9d:d;d<œZ eg d=¢¦  «        ZeZeZeZeZeZeZeZd>„ Zd?„ Zed@„ ¦   «         ZdLdB„ZedC„ ¦   «         Z dD„ Z!dE„ Z"dF„ Z#dG„ Z$dLdH„Z%dI„ Z&dJ„ Z'dK„ Z(dAS )MÚDatabaseWrapperÚsqliteÚSQLiteÚ	AutoFieldÚintegerÚBigAutoFieldÚBinaryFieldÚBLOBÚBooleanFieldr1   Ú	CharFieldÚ	DateFieldr3   ÚDateTimeFieldr5   ÚDecimalFieldÚdecimalÚDurationFieldÚbigintÚ	FileFieldr.   ÚFilePathFieldÚ
FloatFieldÚrealÚIntegerFieldÚBigIntegerFieldÚIPAddressFieldzchar(15)ÚGenericIPAddressFieldzchar(39)Ú	JSONFieldÚtextzbigint unsignedzinteger unsignedzsmallint unsignedÚsmallintr4   zchar(32))
ÚOneToOneFieldÚPositiveBigIntegerFieldÚPositiveIntegerFieldÚPositiveSmallIntegerFieldÚ	SlugFieldÚSmallAutoFieldÚSmallIntegerFieldÚ	TextFieldÚ	TimeFieldÚ	UUIDFieldz"%(column)s" >= 0z2(JSON_VALID("%(column)s") OR "%(column)s" IS NULL))rT   rP   rU   rV   ÚAUTOINCREMENT)r;   r=   rX   z= %szLIKE %s ESCAPE '\'z	REGEXP %szREGEXP '(?i)' || %sz> %sz>= %sz< %sz<= %s)ÚexactÚiexactÚcontainsÚ	icontainsÚregexÚiregexÚgtÚgteÚltÚlteÚ
startswithÚendswithÚistartswithÚ	iendswithz@REPLACE(REPLACE(REPLACE({}, '\', '\\'), '%%', '\%%'), '_', '\_')z"LIKE '%%' || {} || '%%' ESCAPE '\'z)LIKE '%%' || UPPER({}) || '%%' ESCAPE '\'zLIKE {} || '%%' ESCAPE '\'z!LIKE UPPER({}) || '%%' ESCAPE '\'zLIKE '%%' || {} ESCAPE '\'z!LIKE '%%' || UPPER({}) ESCAPE '\')r`   ra   rh   rj   ri   rk   )ÚDEFERREDÚ	EXCLUSIVEÚ	IMMEDIATEc           	      ó°  — | j         }|d         st          d¦  «        ‚|d         t          j        t          j        z  dœ|d         ¥}d|v r"|d         rt          j        dt          ¦  «         |                     ddd	œ¦  «         | 	                    d
d ¦  «        }|�j| 
                    ¦   «         | j        vrOd                     d„ t          | j        ¦  «        D ¦   «         ¦  «        }t          d| j        ›d|› d|› d�¦  «        ‚|r| 
                    ¦   «         nd | _        | 	                    dd¦  «        }|                     d¦  «        | _        |S )NÚNAMEzJsettings.DATABASES is improperly configured. Please supply the NAME value.)ÚdatabaseÚdetect_typesÚOPTIONSÚcheck_same_threadzÃThe `check_same_thread` option was provided and set to True. It will be overridden with False. Use the `DatabaseWrapper.allow_thread_sharing` property instead for controlling thread shareability.FT)rt   ÚuriÚtransaction_modeú, c                 ó   — g | ]}|›‘ŒS r    r    )Ú.0Úmodes     r   ú
<listcomp>z9DatabaseWrapper.get_connection_params.<locals>.<listcomp>¼   s   € ÐHÐHÐH �D�ÐHÐHÐHr   zsettings.DATABASES[z>]['OPTIONS']['transaction_mode'] is improperly configured to 'z'. Use one of z
, or None.Úinit_commandÚ ú;)Úsettings_dictr   ÚDatabaseÚPARSE_DECLTYPESÚPARSE_COLNAMESÚwarningsÚwarnÚRuntimeWarningÚupdateÚpopÚupperÚtransaction_modesÚjoinÚsortedÚaliasrv   ÚsplitÚinit_commands)Úselfr   Úkwargsrv   Úallowed_transaction_modesr|   s         r   Úget_connection_paramsz%DatabaseWrapper.get_connection_params›   s¯  € ØÔ*ˆØ˜VÔ$ð 	Ý&ð0ñô ð ð
 & fÔ-Ý$Ô4µxÔ7NÑNð
ð 
ð ˜IÔ&ð
ˆð  &Ð(Ð(¨VÐ4GÔ-HÐ(ÝŒMð7õ ñô ð ð 	�Š¨E¸$Ð?Ð?Ñ@Ô@Ð@Ø!Ÿ:š:Ð&8¸$Ñ?Ô?ÐàÐ(Ø ×&Ò&Ñ(Ô(°Ô0FÐFÐFà(,¯	ª	ØHÐH­°Ô0FÑ)GÔ)GÐHÑHÔHñ)ô )Ð%õ 'ð9 d¤jð 9ð 9Ø0@ð9ð 9à,ð9ð 9ð 9ñô ð ð
 =MÐ VÐ 0× 6Ò 6Ñ 8Ô 8Ð 8ÐRVˆÔà—z’z .°"Ñ5Ô5ˆØ)×/Ò/°Ñ4Ô4ˆÔØˆr   c                 ó   — | j         j        S r   )r€   Úsqlite_version_info©r�   s    r   Úget_database_versionz$DatabaseWrapper.get_database_versionÉ   s   € ØŒ}Ô0Ð0r   c                 ó  — t          j        di |¤Ž}t          |¦  «         |                     d¦  «         |                     d¦  «         | j        D ]-}|                     ¦   «         x}r|                     |¦  «         Œ.|S )NúPRAGMA foreign_keys = ONzPRAGMA legacy_alter_table = OFFr    )r€   ÚconnectÚregister_functionsÚexecuterŽ   Ústrip)r�   Úconn_paramsÚconnr|   s       r   Úget_new_connectionz"DatabaseWrapper.get_new_connectionÌ   s‘   € åÔÐ.Ð. +Ð.Ð.ˆÝ˜4Ñ Ô Ð à�ŠÐ/Ñ0Ô0Ð0ð 	�ŠÐ6Ñ7Ô7Ð7Ø Ô.ð 	+ð 	+ˆLØ+×1Ò1Ñ3Ô3Ð3ˆ|ð +Ø—’˜\Ñ*Ô*Ð*øØˆr   Nc                 óB   — | j                              t          ¬¦  «        S )N)Úfactory)Ú
connectionÚcursorÚSQLiteCursorWrapper)r�   Únames     r   Úcreate_cursorzDatabaseWrapper.create_cursorÚ   s   € ØŒ×%Ò%Õ.AÐ%ÑBÔBÐBr   c                 ó‚   — |                       ¦   «          |                      ¦   «         st          j        | ¦  «         d S d S r   )Úvalidate_thread_sharingÚis_in_memory_dbr	   Úcloser•   s    r   rª   zDatabaseWrapper.closeÝ   sK   € à×$Ò$Ñ&Ô&Ð&ð ×#Ò#Ñ%Ô%ð 	,ÝÔ% dÑ+Ô+Ð+Ð+Ð+ð	,ð 	,r   c                 ó   — | j         S r   )Úin_atomic_blockr•   s    r   Ú_savepoint_allowedz"DatabaseWrapper._savepoint_allowedæ   s   € ð Ô#Ð#r   c                 ól   — |rd }nd}| j         5  || j        _        d d d ¦  «         d S # 1 swxY w Y   d S )Nr}   )Úwrap_database_errorsr¢   Úisolation_level)r�   Ú
autocommitÚlevels      r   Ú_set_autocommitzDatabaseWrapper._set_autocommitî   s‘   € Øð 	ØˆEˆEð ˆEð Ô&ð 	4ð 	4Ø.3ˆDŒOÔ+ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   �)©-°-c                 óþ   — |                       ¦   «         5 }|                     d¦  «         |                     d¦  «                             ¦   «         d         }d d d ¦  «         n# 1 swxY w Y   t          |¦  «         S )NzPRAGMA foreign_keys = OFFzPRAGMA foreign_keysr   )r£   r›   Úfetchoner1   )r�   r£   Úenableds      r   Údisable_constraint_checkingz+DatabaseWrapper.disable_constraint_checkingú   s»   € Ø�[Š[‰]Œ]ð 	J˜fØ�NŠNÐ6Ñ7Ô7Ð7ð —n’nÐ%:Ñ;Ô;×DÒDÑFÔFÀqÔIˆGð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jõ ˜‘=”=Ð Ð s   •AA$Á$A(Á+A(c                 óŠ   — |                       ¦   «         5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr˜   )r£   r›   )r�   r£   s     r   Úenable_constraint_checkingz*DatabaseWrapper.enable_constraint_checking  s„   € Ø�[Š[‰]Œ]ð 	7˜fØ�NŠNÐ5Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   •8¸<¿<c                 ó6  ‡ ‡— ‰                       ¦   «         5 Š|€(‰                     d¦  «                             ¦   «         }n!t          j        ˆˆ fd„|D ¦   «         ¦  «        }|D �]\  }}}}‰                     d‰ j                             |¦  «        z  ¦  «                             ¦   «         |         }|dd…         \  }}	‰ j                             ‰|¦  «        }
‰                     d‰ j                             |
¦  «        ›d‰ j                             |¦  «        ›d	‰ j                             |¦  «        ›d
�|f¦  «         	                    ¦   «         \  }}t          d|›d|›d|›d|›d|›d|›d|	›d�¦  «        ‚	 ddd¦  «         dS # 1 swxY w Y   dS )a]  
        Check each table name in `table_names` for rows with invalid foreign
        key references. This method is intended to be used in conjunction with
        `disable_constraint_checking()` and `enable_constraint_checking()`, to
        determine if rows with invalid references were entered while constraint
        checks were off.
        NzPRAGMA foreign_key_checkc              3   óœ   •K  — | ]F}‰                      d ‰j                             |¦  «        z  ¦  «                             ¦   «         V — ŒGdS )zPRAGMA foreign_key_check(%s)N)r›   ÚopsÚ
quote_nameÚfetchall)ry   Ú
table_namer£   r�   s     €€r   ú	<genexpr>z4DatabaseWrapper.check_constraints.<locals>.<genexpr>  sh   øè è € ð 1ð 1ð #ð —N’NØ6¸¼×9LÒ9LÈZÑ9XÔ9XÑXñô ç’h‘j”jð1ð 1ð 1ð 1ð 1ð 1r   zPRAGMA foreign_key_list(%s)é   é   zSELECT rw   z FROM z WHERE rowid = %szThe row in table 'z' with primary key 'z' has an invalid foreign key: ú.z contains a value 'z.' that does not have a corresponding value in )r£   r›   r¾   r   Úfrom_iterabler¼   r½   ÚintrospectionÚget_primary_key_columnrµ   r   )r�   Útable_namesÚ
violationsr¿   ÚrowidÚreferenced_table_nameÚforeign_key_indexÚforeign_keyÚcolumn_nameÚreferenced_column_nameÚprimary_key_column_nameÚprimary_key_valueÚ	bad_valuer£   s   `            @r   Úcheck_constraintsz!DatabaseWrapper.check_constraints  sH  øø€ ð �[Š[‰]Œ]ð .	˜fØÐ"Ø#Ÿ^š^Ð,FÑGÔG×PÒPÑRÔR�
�
å"Ô0ð 1ð 1ð 1ð 1ð 1ð '2ð	1ñ 1ô 1ñ ô �
ð ð#ñ #ñ ØØØ%Ø!à$ŸnšnØ1°D´H×4GÒ4GÈ
Ñ4SÔ4SÑSñô ç’(‘*”*Ð.ô0�ð 7BÀ!ÀAÀ#Ô6FÑ3�Ð3Ø*.Ô*<×*SÒ*SØ˜Jñ+ô +Ð'ð 06¯~ª~¨~ð œ×+Ò+Ð,CÑDÔDÐDÐDØœ×+Ò+¨KÑ8Ô8Ð8Ð8Øœ×+Ò+¨JÑ7Ô7Ð7Ð7ð	ð �Hñ0ô 0÷ ’(‘*”*ñ -Ð! 9õ %�nð
 #˜
˜
Ø)Ð)Ð)Ø"˜
˜
Ø#˜˜Ø!˜	˜	Ø-Ð-Ð-Ø.Ð.Ð.ðñô ð ð-#ð.	ð .	ð .	ñ .	ô .	ð .	ð .	ð .	ð .	ð .	ð .	ð .	øøøð .	ð .	ð .	ð .	ð .	ð .	s   —E)FÆFÆFc                 ó   — dS )NTr    r•   s    r   Ú	is_usablezDatabaseWrapper.is_usable?  s   € Øˆtr   c                 óÄ   — | j         €)|                      ¦   «                              d¦  «         dS |                      ¦   «                              d| j         › �¦  «         dS )zÂ
        Start a transaction explicitly in autocommit mode.

        Staying in autocommit mode works around a bug of sqlite3 that breaks
        savepoints when autocommit is disabled.
        NÚBEGINzBEGIN )rv   r£   r›   r•   s    r   Ú#_start_transaction_under_autocommitz3DatabaseWrapper._start_transaction_under_autocommitB  s]   € ð Ô Ð(Ø�KŠK‰MŒM×!Ò! 'Ñ*Ô*Ð*Ð*Ð*à�KŠK‰MŒM×!Ò!Ð"B¨4Ô+@Ð"BÐ"BÑCÔCÐCÐCÐCr   c                 óL   — | j                              | j        d         ¦  «        S )Nrp   )Úcreationr©   r   r•   s    r   r©   zDatabaseWrapper.is_in_memory_dbN  s    € ØŒ}×,Ò,¨TÔ-?ÀÔ-GÑHÔHÐHr   r   ))Ú__name__Ú
__module__Ú__qualname__ÚvendorÚdisplay_namer0   Ú
data_typesÚdata_type_check_constraintsÚdata_types_suffixÚ	operatorsÚpattern_escÚpattern_opsÚ	frozensetr‰   r€   r   ÚSchemaEditorClassr   Úclient_classr   Úcreation_classr   Úfeatures_classr   Úintrospection_classr   Ú	ops_classr’   r–   r
   rŸ   r¦   rª   r­   r³   r·   r¹   rÒ   rÔ   r×   r©   r    r   r   r8   r8   <   sá  € € € € € Ø€FØ€LðØ�Yðà˜	ðð 	�vðð 	˜ð	ð
 	Ð(ðð 	�Vðð 	˜ðð 	˜	ðð 	˜ðð 	Ð.ðð 	Ð2ðð 	�fðð 	˜	ðð 	˜8ðð 	˜*ðð  	  ð!ð" 	�Vð#ð$ #Ø#4Ø 2Ø%8Ø.Ø#Ø'ØØØð7ð ð €Jð< $7ØIØ 3Ø%8ð	#ð #Ðð %Ø'Ø)ðð Ðð Ø'Ø)Ø*ØØ'ØØØØØ+Ø)Ø,Ø*ðð €Ið2 V€Kà9ØAØ3Ø;Ø1Ø9ðð €Kð "˜	Ð"HÐ"HÐ"HÑIÔIÐà€HØ,Ðà!€LØ%€NØ%€NØ/ÐØ"€Ið,ð ,ð ,ð\1ð 1ð 1ð ðð ñ „\ððCð Cð Cð Cð ð,ð ,ñ „\ð,ð$ð $ð $ð
4ð 
4ð 
4ð!ð !ð !ð7ð 7ð 7ð6ð 6ð 6ð 6ðpð ð ð
Dð 
Dð 
DðIð Ið Ið Ið Ir   r8   z(?<!%)%sc                   ó:   ‡ — e Zd ZdZdˆ fd„	Zˆ fd„Zddœd„Zˆ xZS )r¤   aQ  
    Django uses the "format" and "pyformat" styles, but Python's sqlite3 module
    supports neither of these styles.

    This wrapper performs the following conversions:

    - "format" style to "qmark" style
    - "pyformat" style to "named" style

    In both cases, if you want to use a literal "%s", you'll need to use "%%s".
    Nc                 ó  •— |€!t          ¦   «                              |¦  «        S t          |t          ¦  «        rt	          |¦  «        nd }|                      ||¬¦  «        }t          ¦   «                              ||¦  «        S ©N©Úparam_names)Úsuperr›   Ú
isinstancer   ÚlistÚconvert_query)r�   ÚqueryÚparamsrð   Ú	__class__s       €r   r›   zSQLiteCursorWrapper.executeb  sl   ø€ Øˆ>Ý‘7”7—?’? 5Ñ)Ô)Ð)å&0°½Ñ&AÔ&AÐK•d˜6‘l”l�lÀtˆØ×"Ò" 5°kÐ"ÑBÔBˆÝ‰wŒw�Š˜u fÑ-Ô-Ð-r   c                 ó&  •— t          t          |¦  «        ¦  «        \  }}t          |d ¦  «        x}r%t          |t          ¦  «        rt          |¦  «        }nd }|                      ||¬¦  «        }t          ¦   «                              ||¦  «        S rî   )	r   ÚiterÚnextrò   r   ró   rô   rñ   Úexecutemany)r�   rõ   Ú
param_listÚpeekablerö   rð   r÷   s         €r   rû   zSQLiteCursorWrapper.executemanyj  s‹   ø€ õ  #¥4¨
Ñ#3Ô#3Ñ4Ô4Ñˆ�*Ý˜8 TÑ*Ô*Ð*ˆFð 	µ
¸6Å7Ñ0KÔ0Kð 	Ý˜v™,œ,ˆKˆKàˆKØ×"Ò" 5°kÐ"ÑBÔBˆÝ‰wŒw×"Ò" 5¨*Ñ5Ô5Ð5r   rï   c                ó‚   — |€/t                                d|¦  «                             dd¦  «        S |d„ |D ¦   «         z  S )Nú?z%%ú%c                 ó   — i | ]}|d |› �“Œ	S )ú:r    )ry   r¥   s     r   ú
<dictcomp>z5SQLiteCursorWrapper.convert_query.<locals>.<dictcomp>{  s    € ÐEÐEÐE°˜D * d * *ÐEÐEÐEr   )ÚFORMAT_QMARK_REGEXÚsubÚreplace)r�   rõ   rð   s      r   rô   z!SQLiteCursorWrapper.convert_queryu  sJ   € ØÐå%×)Ò)¨#¨uÑ5Ô5×=Ò=¸dÀCÑHÔHÐHð ÐEÐE¸ÐEÑEÔEÑEÐEr   r   )rÚ   rÛ   rÜ   Ú__doc__r›   rû   rô   Ú__classcell__)r÷   s   @r   r¤   r¤   U  s‡   ø€ € € € € ð
ð 
ð.ð .ð .ð .ð .ð .ð	6ð 	6ð 	6ð 	6ð 	6ð 37ð Fð Fð Fð Fð Fð Fð Fð Fð Fr   r¤   )7r  r5   rE   rƒ   Úcollections.abcr   Ú	itertoolsr   r   Úsqlite3r   r€   Údjango.core.exceptionsr   Ú	django.dbr   Údjango.db.backends.base.baser	   Údjango.utils.asyncior
   Údjango.utils.dateparser   r   r   Údjango.utils.regex_helperr   Ú
_functionsr   rš   Úclientr   rÙ   r   Úfeaturesr   rÅ   r   Ú
operationsr   Úschemar   r!   r'   r*   r0   Úregister_converterÚ__eq__Úregister_adapterÚDecimalÚstrr3   r8   r  ÚCursorr¤   r    r   r   ú<module>r     s  ððð ð €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø $Ð $Ð $Ð $Ð $Ð $Ø <Ð <Ð <Ð <Ð <Ð <Ø -Ð -Ð -Ð -Ð -Ð -Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 6Ð 6Ð 6Ð 6Ð 6Ð 6à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (ð+ð +ð +ðð ð ðð ð ð,ð ,ð ,ð €Ô ˜F D¤KÑ 0Ô 0Ð 0Ø €Ô ˜F G G¨JÑ$7Ô$7Ñ 8Ô 8Ð 8Ø €Ô ˜F G G¨JÑ$7Ô$7Ñ 8Ô 8Ð 8Ø €Ô ˜J¨¨°Ñ(?Ô(?Ñ @Ô @Ð @Ø €Ô ˜K¨¨°Ñ)@Ô)@Ñ AÔ AÐ Aà €Ô ˜'œ/¨3Ñ /Ô /Ð /Ø €Ô ˜(œ-¨Ñ 4Ô 4Ð 4Ø €Ô ˜(Ô+¨^Ñ <Ô <Ð <ðSIð SIð SIð SIð SIÐ)ñ SIô SIð SIðl &Ð% kÑ2Ô2Ð ð&Fð &Fð &Fð &Fð &F˜(œ/ñ &Fô &Fð &Fð &Fð &Fr   