§
    >Ä³g†J  ã                   ó  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 ddl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 erdd
lmZ  edej        dz   ¦  «        Zedk     r edd¦  «        Zn edd¦  «        Z G d„ de¦  «        ZdS )zDatabase Introspection.é    )Ú
namedtuple)ÚTYPE_CHECKINGÚAnyÚDictÚListÚOptionalÚSetÚTupleN)ÚVERSION)ÚBaseDatabaseIntrospectionÚ	FieldInfoÚ	TableInfo)ÚIndex)Ú
OrderedSet)Ú	FieldType)ÚCursorWrapperr   )ÚextraÚis_unsignedÚhas_json_constraint©é   é   r   ÚInfoLinezNcol_name data_type max_len num_prec num_scale extra column_default is_unsignedzXcol_name data_type max_len num_prec num_scale extra column_default collation is_unsignedc                   óê  ‡ — e Zd ZdZi ej        d“ej        d“ej        d“ej        d“ej	        d“ej
        d“ej        d“ej        d“ej        d“ej        d“ej        d	“ej        d
“ej        d“ej        d“ej        d“ej        d“ej        d“ej        dej        d
i¥Zdededefˆ fd„Zdddee         fd„Zdddedee         fd„Zdddede e!e ee"f         f         fd„Z#dddede$e!         fd„Z%	 d!dddede&dee eef                  fd„Z'dddede ee(eef         f         fd„Z)dddedee(eeef                  fd„Z*dddedefd„Z+de&de,e         de-fd„Z.dddede ee&f         fd „Z/ˆ xZ0S )"ÚDatabaseIntrospectionz5Encapsulate backend-specific introspection utilities.Ú	TextFieldÚDecimalFieldÚ	DateFieldÚDateTimeFieldÚ
FloatFieldÚIntegerFieldÚBigIntegerFieldÚSmallIntegerFieldÚ	CharFieldÚ	TimeFieldÚ	data_typeÚdescriptionÚreturnc                 óÞ   •— t          ¦   «                              ||¦  «        }d|j        v r|dk    rdS |dk    rdS |dk    rdS |j        r|dk    rdS |dk    rd	S |dk    rd
S |j        rdS |S )NÚauto_incrementr!   Ú	AutoFieldr"   ÚBigAutoFieldr#   ÚSmallAutoFieldÚPositiveBigIntegerFieldÚPositiveIntegerFieldÚPositiveSmallIntegerFieldÚ	JSONField)ÚsuperÚget_field_typer   r   r   )Úselfr&   r'   Ú
field_typeÚ	__class__s       €úb/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/mysql/connector/django/introspection.pyr3   z$DatabaseIntrospection.get_field_typel   sµ   ø€ Ý‘W”W×+Ò+¨I°{ÑCÔCˆ
Ø˜{Ô0Ð0Ð0Ø˜^Ò+Ð+Ø"�{ØÐ.Ò.Ð.Ø%�~ØÐ0Ò0Ð0Ø'Ð'ØÔ"ð 	3ØÐ.Ò.Ð.Ø0Ð0Ø˜^Ò+Ð+Ø-Ð-ØÐ0Ò0Ð0Ø2Ð2ð Ô*ð 	Ø�;ØÐó    Úcursorr   c                 óh   — |                      d¦  «         d„ |                     ¦   «         D ¦   «         S )z>Return a list of table and view names in the current database.zSHOW FULL TABLESc           	      ór   — g | ]4}t          |d          dddœ                     |d         ¦  «        ¦  «        ‘Œ5S )r   ÚtÚv)z
BASE TABLEÚVIEWé   )r   Úget)Ú.0Úrows     r7   ú
<listcomp>z8DatabaseIntrospection.get_table_list.<locals>.<listcomp>…   sP   € ð 
ð 
ð 
àõ �c˜!”f¨S¸#Ð>Ð>×BÒBÀ3ÀqÄ6ÑJÔJÑKÔKð
ð 
ð 
r8   )ÚexecuteÚfetchall)r4   r9   s     r7   Úget_table_listz$DatabaseIntrospection.get_table_list‚   s@   € à�ŠÐ)Ñ*Ô*Ð*ð
ð 
à—’Ñ(Ô(ð
ñ 
ô 
ð 	
r8   Ú
table_namec           	      ó†  — i }|                      d|g¦  «         |                     ¦   «         }|r|d         nd}t          dk     r|                      d|g¦  «         n|                      d||g¦  «         d„ |                     ¦   «         D ¦   «         }|                      d| j        j                             |¦  «        › d	�¦  «         d
t          dt          t                   fd„}g }|j
        D �]P}	||	d                  }
t          dk     r—|                     t          g |	dd…         ¢ ||
j        ¦  «        p|	d         ‘ ||
j        ¦  «        p|	d         ‘ ||
j        ¦  «        p|	d         ‘|	d         ‘|
j        ‘|
j        ‘|
j        ‘|	d         |v ‘R Ž ¦  «         Œ³|                     t          g |	dd…         ¢ ||
j        ¦  «        p|	d         ‘ ||
j        ¦  «        p|	d         ‘ ||
j        ¦  «        p|	d         ‘|	d         ‘|
j        ‘|
j        ‘|
j        ‘|
j        ‘|	d         |v ‘R Ž ¦  «         �ŒR|S )zj
        Return a description of the table with the DB-API cursor.description
        interface."
        z­
            SELECT  table_collation
            FROM    information_schema.tables
            WHERE   table_schema = DATABASE()
            AND     table_name = %s
        r   Ú r   aÍ  
                SELECT
                    column_name, data_type, character_maximum_length,
                    numeric_precision, numeric_scale, extra, column_default,
                    CASE
                        WHEN column_type LIKE '%% unsigned' THEN 1
                        ELSE 0
                    END AS is_unsigned
                FROM information_schema.columns
                WHERE table_name = %s AND table_schema = DATABASE()
            ax  
                SELECT
                    column_name, data_type, character_maximum_length,
                    numeric_precision, numeric_scale, extra, column_default,
                    CASE
                        WHEN collation_name = %s THEN NULL
                        ELSE collation_name
                    END AS collation_name,
                    CASE
                        WHEN column_type LIKE '%% unsigned' THEN 1
                        ELSE 0
                    END AS is_unsigned
                FROM information_schema.columns
                WHERE table_name = %s AND table_schema = DATABASE()
            c                 ó.   — i | ]}|d          t          |Ž “ŒS )r   )r   )rA   Úlines     r7   ú
<dictcomp>z?DatabaseIntrospection.get_table_description.<locals>.<dictcomp>Å   s"   € ÐMÐMÐM°4�d˜1”g�x¨˜ÐMÐMÐMr8   zSELECT * FROM z LIMIT 1Úir(   c                 ó(   — | �t          | ¦  «        n| S ©N)Úint)rM   s    r7   Úto_intz;DatabaseIntrospection.get_table_description.<locals>.to_intË   s   € Ø˜]•3�q‘6”6�6°Ð1r8   Nr   é   é   é   )rD   ÚfetchoneÚDJANGO_VERSIONrE   Ú
connectionÚopsÚ
quote_namer   r   rP   r'   Úappendr   Úmax_lenÚnum_precÚ	num_scaleÚcolumn_defaultr   r   Ú	collation)r4   r9   rG   Újson_constraintsrB   Údefault_column_collationÚ
field_inforQ   ÚfieldsrK   Úinfos              r7   Úget_table_descriptionz+DatabaseIntrospection.get_table_descriptionŠ   s/  € ð ,.Ðà�Šðð ˆLñ	
ô 	
ð 	
ð �oŠoÑÔˆØ-0Ð#8 3 q¤6 6°bÐ õ ˜IÒ%Ð%Ø�NŠNð
ð �ñô ð ð ð �NŠNðð *¨:Ð6ñ!ô ð ð$ NÐM¸6¿?º?Ñ;LÔ;LÐMÑMÔMˆ
à�ŠØQ˜Tœ_Ô0×;Ò;¸JÑGÔGÐQÐQÐQñ	
ô 	
ð 	
ð	2•cð 	2�h¥sœmð 	2ð 	2ð 	2ð 	2ð ˆØÔ&ð 	ñ 	ˆDØ˜d 1œgÔ&ˆDÝ 	Ò)Ð)Ø—’Ýð 
Ø˜b˜q˜bœð
à˜˜tœ|Ñ,Ô,Ð7°°Q´ð
ð ˜˜tœ}Ñ-Ô-Ð8°°a´ð
ð ˜˜tœ~Ñ.Ô.Ð9°$°q´'ð	
ð
 ˜Qœð
ð Ô+ð
ð œ
ð
ð Ô(ð
ð ˜QœÐ#3Ð3ð
ð 
ð 
ñô ð ð ð —’Ýð Ø˜b˜q˜bœðà˜˜tœ|Ñ,Ô,Ð7°°Q´ðð ˜˜tœ}Ñ-Ô-Ð8°°a´ðð ˜˜tœ~Ñ.Ô.Ð9°$°q´'ð	ð
 ˜Qœðð Ô+ðð œðð œ
ðð Ô(ðð ˜QœÐ#3Ð3ðð ð ñô ð ñ ð ˆr8   c                 óæ  — |                      d| j        j                             |¦  «        › �¦  «         t	          |                     ¦   «         ¦  «        }t          ¦   «         }|D ])}|d         dk    r|                     |d         ¦  «         Œ*i }|D ][}|d         |v rŒ|d         |vrdddœ||d         <   |d         dk    rd	||d                  d
<   |d         sd	||d                  d<   Œ\|S )zReturn indexes from table.úSHOW INDEX FROM r   r?   r   rR   F)Úprimary_keyÚuniqueÚPRIMARYTrh   ri   )rD   rW   rX   rY   ÚlistrE   ÚsetÚadd)r4   r9   rG   ÚrowsÚmulticol_indexesrB   Úindexess          r7   Úget_indexesz!DatabaseIntrospection.get_indexesð   s  € ð 	�ŠÐV¨$¬/Ô*=×*HÒ*HÈÑ*TÔ*TÐVÐVÑWÔWÐWõ �F—O’OÑ%Ô%Ñ&Ô&ˆÝ™5œ5ÐØð 	-ð 	-ˆCØ�1Œv˜ŠzˆzØ ×$Ò$ S¨¤VÑ,Ô,Ð,øØ.0ˆØð 
	1ð 
	1ˆCØ�1ŒvÐ)Ð)Ð)ØØ�1Œv˜WÐ$Ð$Ø27À5Ð"IÐ"I�˜˜Aœ‘ð �1Œv˜Ò"Ð"Ø15�˜˜Aœ” Ñ.Ø�q”6ð 1Ø,0�˜˜Aœ” Ñ)øØˆr8   c                 óŒ   — |                       ||¦  «                             ¦   «         D ]}|d         d         r
|d         c S ŒdS )zP
        Returns the name of the primary key column for the given table
        r?   rh   r   N)rq   Úitems)r4   r9   rG   Úcolumns       r7   Úget_primary_key_columnz,DatabaseIntrospection.get_primary_key_column  sZ   € ð ×&Ò& v¨zÑ:Ô:×@Ò@ÑBÔBð 	!ð 	!ˆFØ�aŒy˜Ô'ð !Ø˜a”yÐ Ð Ð ð!àˆtr8   © Útable_fieldsc                 ód   — |                       ||¦  «        D ]}d|j        v r||j        dœgc S Œg S )Nr*   )Útablert   )re   r   Úname)r4   r9   rG   rw   rb   s        r7   Úget_sequencesz#DatabaseIntrospection.get_sequences  sX   € ð ×4Ò4°V¸ZÑHÔHð 	Jð 	JˆJØ :Ô#3Ð3Ð3à",¸
¼ÐHÐHÐIÐIÐIÐIð 4ð ˆ	r8   c                 óV   — |                       ||¦  «        }i }|D ]\  }}}||f||<   Œ|S )z—
        Return a dictionary of {field_name: (field_name_other_table, other_table)}
        representing all relationships to the given table.
        )Úget_key_columns)r4   r9   rG   ÚconstraintsÚ	relationsÚmy_fieldnameÚother_tableÚother_fields           r7   Úget_relationsz#DatabaseIntrospection.get_relations  sN   € ð ×*Ò*¨6°:Ñ>Ô>ˆØˆ	Ø6Að 	Að 	AÑ2ˆL˜+ {Ø'2°KÐ&@ˆI�lÑ#Ð#ØÐr8   c                 ó†   — g }|                      d|g¦  «         |                     |                     ¦   «         ¦  «         |S )z�
        Return a list of (column_name, referenced_table_name, referenced_column_name)
        for all key columns in the given table.
        a@  
            SELECT column_name, referenced_table_name, referenced_column_name
            FROM information_schema.key_column_usage
            WHERE table_name = %s
                AND table_schema = DATABASE()
                AND referenced_table_name IS NOT NULL
                AND referenced_column_name IS NOT NULL)rD   ÚextendrE   )r4   r9   rG   Úkey_columnss       r7   r}   z%DatabaseIntrospection.get_key_columns,  sQ   € ð "$ˆØ�Šð:ð ˆLñ		
ô 		
ð 		
ð 	×Ò˜6Ÿ?š?Ñ,Ô,Ñ-Ô-Ð-ØÐr8   c                 óŽ   — |                      d|g¦  «         |                     ¦   «         }|s| j        j        j        S |d         S )z†
        Retrieve the storage engine for a given table. Return the default
        storage engine if the table doesn't exist.
        zBSELECT engine FROM information_schema.tables WHERE table_name = %sr   )rD   rU   rW   ÚfeaturesÚ_mysql_storage_engine)r4   r9   rG   Úresults       r7   Úget_storage_enginez(DatabaseIntrospection.get_storage_engineA  sT   € ð
 	�ŠØPØˆLñ	
ô 	
ð 	
ð —’Ñ"Ô"ˆàð 	BØ”?Ô+ÔAÐAà�aŒyÐr8   Úcheck_clauseÚcolumnsc                 ó�  — t          ¦   «         }t          j        |¦  «        d         }d„ |                     ¦   «         D ¦   «         }|D ]|}|j        t          j        j        k    r`| j        j         	                    |j
        ¦  «        |j
        k    r3|j
        dd…         |v r"|                     |j
        dd…         ¦  «         Œ}|S )Nr   c              3   ó(   K  — | ]}|j         °	|V — Œd S rO   )Úis_whitespace)rA   Útokens     r7   ú	<genexpr>zBDatabaseIntrospection._parse_constraint_columns.<locals>.<genexpr>V  s*   è è € ÐTÐT˜EÀÔ@SÐT�%ÐTÐTÐTÐTÐTÐTr8   r?   éÿÿÿÿ)r   ÚsqlparseÚparseÚflattenÚttypeÚtokensÚNamerW   rX   rY   Úvaluerm   )r4   rŒ   r�   Úcheck_columnsÚ	statementr˜   r‘   s          r7   Ú_parse_constraint_columnsz/DatabaseIntrospection._parse_constraint_columnsQ  s¿   € õ %/¡L¤LˆÝ”N <Ñ0Ô0°Ô3ˆ	ØTÐT Y×%6Ò%6Ñ%8Ô%8ÐTÑTÔTˆØð 	5ð 	5ˆEà”�xœÔ3Ò3Ð3Ø”OÔ'×2Ò2°5´;Ñ?Ô?À5Ä;ÒNÐNØ”K  " Ô%¨Ð0Ð0à×!Ò! %¤+¨a°¨dÔ"3Ñ4Ô4Ð4øØÐr8   c                 ó<  — i }d}|                      ||g¦  «         |                     ¦   «         D ]f\  }}}}||vr:t          ¦   «         dddd|r||fnddœ||<   | j        j        j        rg ||         d<   ||         d                              |¦  «         Œgd}	|                      |	|g¦  «         |                     ¦   «         D ]W\  }}
|
                     ¦   «         dk    rd	||         d
<   d	||         d<   Œ4|
                     ¦   «         dk    rd	||         d<   ŒX| j        j        j        r–d}d„ |  	                    ||¦  «        D ¦   «         }d}	|                      |	|g¦  «         |                     ¦   «         D ]F\  }}|  
                    ||¦  «        }t          |¦  «        |hk    r|dz  }d|› d�}|dddd	ddœ||<   ŒG|                      d| j        j                             |¦  «        › �¦  «         d„ |                     ¦   «         D ¦   «         D ]Ö\  }}}}}}}||vr3t          ¦   «         dddddœ||<   | j        j        j        rg ||         d<   d	||         d<   |dk    rt          j        n|                     ¦   «         ||         d<   ||         d                              |¦  «         | j        j        j        r)||         d                              |dk    rdnd¦  «         Œ×|                     ¦   «         D ]}t%          |d         ¦  «        |d<   Œ|S )zu
        Retrieve any constraints or keys (unique, pk, fk, check, index) across
        one or more columns.
        aX  
            SELECT kc.`constraint_name`, kc.`column_name`,
                kc.`referenced_table_name`, kc.`referenced_column_name`
            FROM information_schema.key_column_usage AS kc
            WHERE
                kc.table_schema = DATABASE() AND
                kc.table_name = %s
            ORDER BY kc.`ordinal_position`
        FN)r�   rh   ri   ÚindexÚcheckÚforeign_keyÚordersr�   zà
            SELECT c.constraint_name, c.constraint_type
            FROM information_schema.table_constraints AS c
            WHERE
                c.table_schema = DATABASE() AND
                c.table_name = %s
        zprimary keyTrh   ri   r   c                 ó   — h | ]	}|j         ’Œ
S rv   )rz   )rA   rd   s     r7   ú	<setcomp>z8DatabaseIntrospection.get_constraints.<locals>.<setcomp>’  s'   € ð ð ð Ø"�”	ðð ð r8   a  
                SELECT cc.constraint_name, cc.check_clause
                FROM
                    information_schema.check_constraints AS cc,
                    information_schema.table_constraints AS tc
                WHERE
                    cc.constraint_schema = DATABASE() AND
                    tc.table_schema = cc.constraint_schema AND
                    cc.constraint_name = tc.constraint_name AND
                    tc.constraint_type = 'CHECK' AND
                    tc.table_name = %s
            r?   Ú__unnamed_constraint_Ú__rg   c                 ó6   — g | ]}|d d…         |d         fz   ‘ŒS )NrT   é
   rv   )rA   Úxs     r7   rC   z9DatabaseIntrospection.get_constraints.<locals>.<listcomp>¶  s8   € ð 5
ð 5
ð 5
Ø!"ˆAˆbˆqˆbŒE�Q�r”U�HÑð5
ð 5
ð 5
r8   )r�   rh   ri   r    r¡   rŸ   ÚBTREEÚtypeÚDÚDESCÚASC)rD   rE   r   rW   rˆ   Úsupports_index_column_orderingrm   ÚlowerÚ can_introspect_check_constraintsre   r�   rl   rX   rY   r   ÚsuffixrZ   Úvaluesrk   )r4   r9   rG   r~   Ú
name_queryÚ
constraintrt   Ú	ref_tableÚ
ref_columnÚ
type_queryÚkindÚunnamed_constraints_indexr�   rŒ   Úconstraint_columnsÚ_rŸ   ÚorderÚtype_s                      r7   Úget_constraintsz%DatabaseIntrospection.get_constraints`  sï  € ð ')ˆðˆ
ð 	�Š�z J <Ñ0Ô0Ð0Ø9?¿ºÑ9JÔ9Jð 	;ð 	;Ñ5ˆJ˜ 	¨:Ø Ð,Ð,å)™|œ|Ø#(Ø#Ø"Ø"Ø>HÐ#R I¨zÐ#:Ð#:Èdð+ð +�˜JÑ'ð ”?Ô+ÔJð ;Ø8:�K 
Ô+¨HÑ5Ø˜
Ô# IÔ.×2Ò2°6Ñ:Ô:Ð:Ð:ðˆ
ð 	�Š�z J <Ñ0Ô0Ð0Ø &§¢Ñ 1Ô 1ð 	9ð 	9ÑˆJ˜Ø�zŠz‰|Œ|˜}Ò,Ð,Ø9=�˜JÔ'¨Ñ6Ø48�˜JÔ'¨Ñ1Ð1Ø—’‘” Ò)Ð)Ø48�˜JÔ'¨Ñ1øàŒ?Ô#ÔDð #	Ø()Ð%ðð Ø&*×&@Ò&@ÀÈÑ&TÔ&Tðñ ô ˆGðˆJð �NŠN˜:¨
 |Ñ4Ô4Ð4Ø,2¯OªOÑ,=Ô,=ð ð Ñ(�
˜LØ%)×%CÒ%CØ  'ñ&ô &Ð"õ Ð)Ñ*Ô*¨z¨lÒ:Ð:Ø-°Ñ2Ð-Ø!VÐ9RÐ!VÐ!VÐ!V�Jà1Ø#(Ø#Ø"Ø!Ø#'ð+ð +�˜JÑ'Ð'ð 	�ŠÐV¨$¬/Ô*=×*HÒ*HÈÑ*TÔ*TÐVÐVÑWÔWÐWð5
ð 5
Ø&,§o¢oÑ&7Ô&7ð5
ñ 5
ô 5
ð 	Wð 	WÑ0ˆAˆq�%˜˜F E¨5ð ˜KÐ'Ð'å)™|œ|Ø#(Ø#Ø"Ø#'ð&ð &�˜EÑ"ð ”?Ô+ÔJð 6Ø35�K Ô& xÑ0Ø*.ˆK˜Ô˜wÑ'à %¨Ò 0Ð 0•”�°e·k²k±m´mð ˜Ô˜vÑ&ð ˜Ô˜yÔ)×-Ò-¨fÑ5Ô5Ð5ØŒÔ'ÔFð WØ˜EÔ" 8Ô,×3Ò3¸eÀsºl¸l°F°FÐPUÑVÔVÐVøà%×,Ò,Ñ.Ô.ð 	@ð 	@ˆJÝ$(¨°IÔ)>Ñ$?Ô$?ˆJ�yÑ!Ð!ØÐr8   )rv   )1Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚBLOBÚDECIMALÚ
NEWDECIMALÚDATEÚDATETIMEÚDOUBLEÚFLOATÚINT24ÚLONGÚLONGLONGÚSHORTÚSTRINGÚTIMEÚ	TIMESTAMPÚTINYÚ	TINY_BLOBÚMEDIUM_BLOBÚ	LONG_BLOBÚ
VAR_STRINGÚdata_types_reverseÚstrr   r3   r   r   rF   re   r   rP   Úboolrq   r   ru   r   r{   r
   rƒ   r}   r‹   r	   r   r�   r¿   Ú__classcell__)r6   s   @r7   r   r   S   sœ  ø€ € € € € Ø?Ð?ðØŒ˜ðàÔ˜>ðð 	Ô˜nðð 	Œ˜ð	ð
 	Ô˜Oðð 	Ô˜,ðð 	Œ˜ðð 	Œ˜ðð 	Œ˜ðð 	ÔÐ-ðð 	ŒÐ,ðð 	Ô˜+ðð 	Œ˜ðð 	Ô˜_ðð 	Œ˜ðð  	Ô˜[ð!ð" 	Ô˜{ð#ð$ 	Ô˜[ØÔ˜kð'ð Ðð,¨ð ¸)ð Èð ð ð ð ð ð ð,
 _ð 
¸¸i¼ð 
ð 
ð 
ð 
ðdØ%ðdØ36ðdà	ˆiŒðdð dð dð dðLØ%ðØ36ðà	ˆc�4˜˜T˜	”?Ð"Ô	#ðð ð ð ð6	Ø%ð	Ø36ð	à	�#Œð	ð 	ð 	ð 	ð MOðð Ø%ðØ36ðØFIðà	ˆd�3˜�8ŒnÔ	ðð ð ð ðØ%ðØ36ðà	ˆc�5˜˜c˜”?Ð"Ô	#ðð ð ð ðØ%ðØ36ðà	ˆe�C˜˜c�MÔ"Ô	#ðð ð ð ð*¨ð Àcð Ècð ð ð ð ð ØðØ*-¨c¬(ðà	ðð ð ð ðmØ%ðmØ36ðmà	ˆc�3ˆhŒðmð mð mð mð mð mð mð mr8   r   )rÃ   Úcollectionsr   Útypingr   r   r   r   r   r	   r
   r”   Údjangor   rV   Ú%django.db.backends.base.introspectionr   r   ÚBaseFieldInfor   Údjango.db.modelsr   Údjango.utils.datastructuresr   Úmysql.connector.constantsr   Úmysql.connector.django.baser   Ú_fieldsr   r   rv   r8   r7   ú<module>rå      sš  ðð> Ð à "Ð "Ð "Ð "Ð "Ð "Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð
 #Ð "Ð "Ð "Ð "Ð "Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à /Ð /Ð /Ð /Ð /Ð /ð ð :à9Ð9Ð9Ð9Ð9Ð9ð ˆJØØÔÐKÑKñô €	ð �IÒÐØˆzØð	ñô €H€Hð ˆzØð	 ñô €Hðzð zð zð zð zÐ5ñ zô zð zð zð zr8   