§
    ªöÉg¦M  ã                   óŠ  — d dl m Z m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Zd dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ ej        d
„ ¦   «         Zej        d„ ¦   «         Zej                             dddg¦  «        d„ ¦   «         Zd„ Z d„ Z!d„ Z"ej                             dd dd e#d¦  «        dgfdd e#d¦  «        dgfdddgfd dd e#d¦  «        gfd ddgfdd e#d¦  «        gfg¦  «        d„ ¦   «         Z$ej                             dd„ d„ d„ d„ d„ g¦  «        d„ ¦   «         Z%d „ Z&ej                             dg d!¢g d"¢d#œg d$¢g d"¢d#œ ej'        g d%¢¦  «         ej'        g d$¢¦  «         ej'        g d"¢¦  «        d&œg¦  «        d'„ ¦   «         Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,ej         -                    ed,¬-¦  «        d.„ ¦   «         Z.ej                             di d/g ig¦  «        d0„ ¦   «         Z/dld2„Z0dld3„Z1d4„ Z2ej                             d5d6d7g¦  «        ej                             d8g d9¢¦  «        d:„ ¦   «         ¦   «         Z3d;„ Z4dld<„Z5d=„ Z6d>„ Z7d?„ Z8d@„ Z9ej                             dAg dB¢dCdDfg dB¢dEdDfg dB¢dFdGfg dB¢dHdGfg dB¢dIdJfg dB¢dKdJfg dL¢dMdNfg dL¢dOdNfg dP¢dQdRfg dP¢dSdRfg dT¢dUdVfg dT¢dWdVf e dXdd¦  «         e dXdd¦  «        dgdYdZf e dXdd¦  «         e dXdd¦  «        dgd[d\f e dXddej:        ¬]¦  «         e dXddej:        ¬]¦  «        dgd^d_fg¦  «        de;d`e<dae<d1dfdb„¦   «         Z=ej                             dAg dc¢dCdDfg dc¢dEdDfg dc¢dFdGfg dc¢dHdGfg dc¢dIdJfg dc¢dKdJfg dd¢dMdNfg dd¢dOdNfg de¢dQdRfg de¢dSdRfg df¢dUdVfg df¢dWdVf e dXdd¦  «         e dXdd¦  «         e dXddg¦  «        gdYdZf e dXdd¦  «         e dXdd¦  «         e dXddg¦  «        gd[d\f e dXddej:        ¬]¦  «         e dXddej:        ¬]¦  «         e dXddgej:        ¬]¦  «        gd^d_fg¦  «        de;d`e<dae<d1dfdh„¦   «         Z>dldi„Z?dldj„Z@dk„ ZAdS )mé    )ÚdatetimeÚtimezoneN)ÚiNaT)Úis_ci_environmentÚis_platform_windows)Únp_version_lt1p23)ÚPandasColumn)ÚColumnNullTypeÚ	DtypeKind©Úfrom_dataframe)ÚArrowCTypesc                  óœ   — t          j        t          d¦  «        dz  d¬¦  «        t          j        t          d¦  «        dz  d¬¦  «        dœS )NÚtestdataé   T)ÚorderedF)r   Ú	unordered)ÚpdÚCategoricalÚlist© ó    ún/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/pandas/tests/interchange/test_impl.pyÚdata_categoricalr      sQ   € õ ”>¥$ zÑ"2Ô"2°RÑ"7ÀÐFÑFÔFÝ”^¥D¨Ñ$4Ô$4°rÑ$9À5ÐIÑIÔIðð ð r   c                  ó(   — dddddt           j        giS )Núseparator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad|)ÚnpÚnanr   r   r   Ústring_datar   #   s'   € ð 	ØØØØÝŒFð
ðð r   Údata)r   T)r   Fc                 óª  — t          j        d|| d                  i¦  «        }|                     ¦   «                              d¦  «        }|j        d         t
          j        k    sJ ‚|j        dk    sJ ‚|j        t          j
        dfk    sJ ‚|                     ¦   «         dk    sJ ‚|j        }|d         | d         k    sJ ‚|d         du sJ ‚t          |d         t          ¦  «        sJ ‚t          j        |d         j        t          j        g d	¢¦  «        ¦  «         t          j        |t)          |                     ¦   «         ¦  «        ¦  «         d S )
NÚAr   éÿÿÿÿé   Ú
is_orderedÚis_dictionaryTÚ
categories)ÚaÚdÚeÚsÚt)r   Ú	DataFrameÚ__dataframe__Úget_column_by_nameÚdtyper   ÚCATEGORICALÚ
null_countÚdescribe_nullr
   ÚUSE_SENTINELÚ
num_chunksÚdescribe_categoricalÚ
isinstancer	   ÚtmÚassert_series_equalÚ_colÚSeriesÚassert_frame_equalr   )r    r   ÚdfÚcolÚdesc_cats        r   Útest_categorical_dtyper@   0   sX  € å	Œ�sÐ-¨d°1¬gÔ6Ð8Ñ	9Ô	9€Bà
×
Ò
Ñ
Ô
×
/Ò
/°Ñ
4Ô
4€CØŒ9�QŒ<�9Ô0Ò0Ð0Ð0Ð0ØŒ>˜QÒÐÐÐØÔ¥Ô!<¸bÐ AÒAÐAÐAÐAØ�>Š>ÑÔ˜qÒ Ð Ð Ð ØÔ'€HØ�LÔ! T¨!¤WÒ,Ð,Ð,Ð,Ø�OÔ$¨Ð,Ð,Ð,Ð,Ý�h˜|Ô,­lÑ;Ô;Ð;Ð;Ð;ÝÔØ�ÔÔ#¥R¤YÐ/HÐ/HÐ/HÑ%IÔ%Iñô ð õ Ô˜"�n¨R×-=Ò-=Ñ-?Ô-?Ñ@Ô@ÑAÔAÐAÐAÐAr   c                  ó|  — t          j        dd¦  «        } g d¢}|                      d|                      |¦  «                             ¦   «         i¦  «        }|                     ¦   «         }t          |¦  «        }t          j        |g d¢¬¦  «        }t          j	        d|i¦  «        }t          j        ||¦  «         d S )NÚpyarrowú11.0.0)	ÚMonÚTuerD   ÚWedrD   ÚThuÚFriÚSatÚSunÚweekday)rD   rE   rF   rG   rH   rI   rJ   )r'   )ÚpytestÚimportorskipÚtableÚarrayÚdictionary_encoder.   r   r   r   r-   r8   r<   )ÚpaÚarrrN   Úexchange_dfÚresultrK   Úexpecteds          r   Útest_categorical_pyarrowrV   D   sº   € å	Ô	˜Y¨Ñ	1Ô	1€Bà
IÐ
IÐ
I€CØ�HŠH�i §¢¨#¡¤×!@Ò!@Ñ!BÔ!BÐCÑDÔD€EØ×%Ò%Ñ'Ô'€KÝ˜KÑ(Ô(€FÝŒnØÐIÐIÐIðñ ô €Gõ Œ|˜Y¨Ð0Ñ1Ô1€HÝÔ˜& (Ñ+Ô+Ð+Ð+Ð+r   c                  ó°  — t          j        dd¦  «        } d g}|                      d|                      |d¦  «                             ¦   «         i¦  «        }|                     ¦   «         }t          j        j         	                    |¦  «        }t          j
        dt          j        t          j        g¦  «        i¦  «        }t          j        ||¦  «         d S )NrB   rC   rR   Úfloat64)rL   rM   rN   rO   rP   r.   r   ÚapiÚinterchanger   r-   r   r   r   r8   r<   ©rQ   rR   rN   rS   rT   rU   s         r   Útest_empty_categorical_pyarrowr\   S   s¯   € å	Ô	˜Y¨Ñ	1Ô	1€Bàˆ&€CØ�HŠH�e˜RŸXšX c¨9Ñ5Ô5×GÒGÑIÔIÐJÑKÔK€EØ×%Ò%Ñ'Ô'€KÝŒVÔ×.Ò.¨{Ñ;Ô;€FÝŒ|˜U¥B¤NµB´F°8Ñ$<Ô$<Ð=Ñ>Ô>€HÝÔ˜& (Ñ+Ô+Ð+Ð+Ð+r   c                  ó˜  — t          j        dd¦  «        } ddg}|                      d|                      |d¦  «        i¦  «        }|                     ¦   «         }t          |¦  «        }t          j        dddgi¦  «        }t          j	        ||¦  «         | j
                             | j                             |¦  «        |¦  «        sJ ‚d S )NrB   rC   rD   rE   rK   Úlarge_string)rL   rM   rN   rO   r.   r   r   r-   r8   r<   ÚTableÚequalsrZ   r[   s         r   Útest_large_string_pyarrowra   _   s¾   € å	Ô	˜Y¨Ñ	1Ô	1€Bà�%ˆ.€CØ�HŠH�i §¢¨#¨~Ñ!>Ô!>Ð?Ñ@Ô@€EØ×%Ò%Ñ'Ô'€KÝ˜KÑ(Ô(€FÝŒ|˜Y¨°¨Ð7Ñ8Ô8€HÝÔ˜& (Ñ+Ô+Ð+ð Œ8�?Š?˜2œ>×8Ò8¸Ñ@Ô@À%ÑHÔHÐHÐHÐHÐHÐHr   )ÚoffsetÚlengthÚexpected_valuesçffffff
@r   çÍÌÌÌÌÌ @r$   é   c                 ó”  — t          j        dd¦  «        }g d¢}|                     d|i¦  «                             | |¦  «        }|                     ¦   «         }t          |¦  «        }t          j        d|i¦  «        }t          j	        ||¦  «         |j
                             |j                             |¦  «        |¦  «        sJ ‚d S )NrB   rC   )re   Nrf   rR   )rL   rM   rN   Úslicer.   r   r   r-   r8   r<   r_   r`   rZ   )	rb   rc   rd   rQ   rR   rN   rS   rT   rU   s	            r   Útest_bitmasks_pyarrowrj   n   s¿   € õ 
Ô	˜Y¨Ñ	1Ô	1€Bà
Ð
Ð
€CØ�HŠH�e˜S�\Ñ"Ô"×(Ò(¨°Ñ8Ô8€EØ×%Ò%Ñ'Ô'€KÝ˜KÑ(Ô(€FÝŒ|˜U OÐ4Ñ5Ô5€HÝÔ˜& (Ñ+Ô+Ð+ð Œ8�?Š?˜2œ>×8Ò8¸Ñ@Ô@À%ÑHÔHÐHÐHÐHÐHÐHr   c                  óh   — t           j                             d¦  «                             dd¦  «        S )Nrg   iœÿÿÿéd   ©r   ÚrandomÚdefault_rngÚintegersr   r   r   ú<lambda>rq   ‹   s&   € •”	×%Ò% aÑ(Ô(×1Ò1°$¸Ñ<Ô<€ r   c                  óh   — t           j                             d¦  «                             dd¦  «        S )Nrg   r$   rl   rm   r   r   r   rq   rq   Œ   s&   € •”	×%Ò% aÑ(Ô(×1Ò1°!°SÑ9Ô9€ r   c                  ód   — t           j                             d¦  «                             ¦   «         S )Nrg   )r   rn   ro   r   r   r   rq   rq   �   s"   € •”	×%Ò% aÑ(Ô(×/Ò/Ñ1Ô1€ r   c                  ój   — t           j                             d¦  «                             ddg¦  «        S )Nrg   TF)r   rn   ro   Úchoicer   r   r   rq   rq   Ž   s(   € •”	×%Ò% aÑ(Ô(×/Ò/°°u°Ñ>Ô>€ r   c                  óL  — t          t          j                             d¦  «                             dd¦  «        t          j                             d¦  «                             dd¦  «        t          j                             d¦  «                             dd¦  «        ¬¦  «        S )Nrg   il  i4  r$   é   é   )ÚyearÚmonthÚday)r   r   rn   ro   rp   r   r   r   rq   rq   �   s~   € •Ý”×&Ò& qÑ)Ô)×2Ò2°4¸Ñ>Ô>Ý”)×'Ò'¨Ñ*Ô*×3Ò3°A°rÑ:Ô:Ý”	×%Ò% aÑ(Ô(×1Ò1°!°RÑ8Ô8ð
ñ 
ô 
€ r   c                 ó  ‡ ‡‡— d\  ŠŠˆˆˆ fd„t          ‰¦  «        D ¦   «         Š t          j        ‰ ¦  «        }|                     ¦   «         }|                     ¦   «         ‰k    sJ ‚|                     ¦   «         ‰k    sJ ‚t          |                     ¦   «         ¦  «        t          ‰                      ¦   «         ¦  «        k    sJ ‚d}t          ˆ fd„|D ¦   «         ¦  «        }t          |                     |¦  «        ¦  «        }t          |                     |¦  «        ¦  «        }t          j        ||¦  «         t          |j        d         t          ¦  «        sJ ‚t          |j        d         t          ¦  «        sJ ‚d S )N)é
   rx   c                 ó€   •— i | ]:}d t          |‰dz  z
  ‰z  dz   ¦  «        › �ˆfd„t          ‰¦  «        D ¦   «         “Œ;S )r>   rg   r$   c                 ó$   •— g | ]} ‰¦   «         ‘ŒS r   r   )Ú.0Ú_r    s     €r   ú
<listcomp>z-test_dataframe.<locals>.<dictcomp>.<listcomp>™   s   ø€ Ð2PÐ2PÐ2P¸a°4°4±6´6Ð2PÐ2PÐ2Pr   )ÚintÚrange)r€   ÚiÚNCOLSÚNROWSr    s     €€€r   ú
<dictcomp>z"test_dataframe.<locals>.<dictcomp>˜   sh   ø€ ð ð ð àð 	1�c�1�u˜q‘y‘= EÑ)¨AÑ-Ñ.Ô.Ð0Ð0Ð2PÐ2PÐ2PÐ2PÅ5ÈÁ<Ä<Ð2PÑ2PÔ2Pðð ð r   )r   rg   c              3   óf   •K  — | ]+}t          ‰                     ¦   «         ¦  «        |         V — Œ,d S ©N)r   Úkeys)r€   Úidxr    s     €r   ú	<genexpr>z!test_dataframe.<locals>.<genexpr>¦   s8   øè è € Ð<Ð<¨S•$�t—y’y‘{”{Ñ#Ô# CÔ(Ð<Ð<Ð<Ð<Ð<Ð<r   Ú_INTERCHANGE_PROTOCOL_BUFFERS)r„   r   r-   r.   Únum_columnsÚnum_rowsr   Úcolumn_namesr‹   Útupler   Úselect_columnsÚselect_columns_by_namer8   r<   r7   Úattrs)	r    r=   Údf2ÚindicesÚnamesrT   rU   r†   r‡   s	   `      @@r   Útest_dataframer™   ˆ   s…  øøø€ ð �L€Eˆ5ðð ð ð ð ð å�u‘”ðñ ô €Dõ 
Œ�dÑ	Ô	€Bà
×
Ò
Ñ
Ô
€Cà�?Š?ÑÔ Ò%Ð%Ð%Ð%Ø�<Š<‰>Œ>˜UÒ"Ð"Ð"Ð"å�× Ò Ñ"Ô"Ñ#Ô#¥t¨D¯IªI©K¬KÑ'8Ô'8Ò8Ð8Ð8Ð8à€GÝÐ<Ð<Ð<Ð<°GÐ<Ñ<Ô<Ñ<Ô<€Eå˜C×.Ò.¨wÑ7Ô7Ñ8Ô8€FÝ˜c×8Ò8¸Ñ?Ô?Ñ@Ô@€HÝÔ˜& (Ñ+Ô+Ð+å�f”lÐ#BÔCÅTÑJÔJÐJÐJÐJÝ�h”nÐ%DÔEÅtÑLÔLÐLÐLÐLÐLÐLr   c            	      óô  ‡‡— t          j        t          j        g d¢¦  «        t          j        g d¢¦  «        t          j        g d¢¦  «        dœ¦  «        Št          j                             d¦  «        Šˆˆfd„‰j        D ¦   «         } |                      ¦   «         D ]S\  }}‰j        ‰ 	                    t          j
        t          ‰¦  «        ¦  «        |d¬¦  «                 }d ‰j        ||f<   ŒT‰                     ¦   «         }|                     d	¦  «        j        | d	         k    sJ ‚|                     d
¦  «        j        | d
         k    sJ ‚|                     d¦  «        j        | d         k    sJ ‚d S )N)ç      ð?ç       @g      @g      @ç        )ç      ø?ç      @ç      @g      @r   )r›   r�   r›   r›   r›   ©ÚxÚyÚzrg   c           	      óZ   •— i | ]'}|‰                      d t          ‰¦  «        ¬¦  «        “Œ(S )r   )ÚlowÚhigh)rp   Úlen)r€   r>   r=   Úrngs     €€r   rˆ   z,test_missing_from_masked.<locals>.<dictcomp>º   s1   ø€ ÐNÐNÐN¸C��c—l’l q­s°2©w¬w�lÑ7Ô7ÐNÐNÐNr   F)ÚsizeÚreplacer¢   r£   r¤   )r   r-   r   rO   rn   ro   ÚcolumnsÚitemsÚindexru   Úaranger¨   Úlocr.   r/   r2   )Ú	dict_nullr>   Ú	num_nullsÚnull_idxr–   r=   r©   s        @@r   Útest_missing_from_maskedr´   °   s|  øø€ Ý	Œå”Ð3Ð3Ð3Ñ4Ô4Ý”Ð1Ð1Ð1Ñ2Ô2Ý”Ð3Ð3Ð3Ñ4Ô4ð	
ð 	
ñ
ô 
€Bõ Œ)×
Ò
 Ñ
"Ô
"€CØNÐNÐNÐNÐNÀ2Ä:ÐNÑNÔN€IØ#Ÿ/š/Ñ+Ô+ð %ð %‰ˆˆYØ”8Ø�JŠJ•r”y¥ R¡¤Ñ)Ô)°	À5ˆJÑIÔIô
ˆð !%ˆŒˆx˜ˆ}ÑÐà
×
Ò
Ñ
Ô
€Cà×!Ò! #Ñ&Ô&Ô1°Y¸s´^ÒCÐCÐCÐCØ×!Ò! #Ñ&Ô&Ô1°Y¸s´^ÒCÐCÐCÐCØ×!Ò! #Ñ&Ô&Ô1°Y¸s´^ÒCÐCÐCÐCÐCÐCr   )rž   rŸ   r    )çffffff"@ç      %@çš™™™™™'@)r¢   r£   )r$   rg   r   )TTFr¡   c                 óª   — t          j        | ¦  «        }|                     ¦   «         }|j        D ]"}|                     |¦  «        j        dk    sJ ‚Œ#d S )Nr   )r   r-   r.   r¬   r/   r2   )r    r=   r–   Úcol_names       r   Útest_mixed_datarº   È   sh   € õ 
Œ�dÑ	Ô	€BØ
×
Ò
Ñ
Ô
€Cà”Jð @ð @ˆØ×%Ò% hÑ/Ô/Ô:¸aÒ?Ð?Ð?Ð?Ð?ð@ð @r   c                  ó*  — t          j        t          j        g d¢¦  «        t          j        g d¢¦  «        t          j        g d¢¦  «        dœ¦  «        } |                      ¦   «         }| j        D ]"}|                     |¦  «        j        dk    sJ ‚Œ#d S )N)TNFNT)Nrg   Nr$   rg   )rµ   r¶   Nr·   Nr¡   rg   )r   r-   r   rO   r.   r¬   r/   r2   )r=   r–   r¹   s      r   Útest_mixed_missingr¼   Ü   s°   € Ý	Œå”Ð9Ð9Ð9Ñ:Ô:Ý”Ð/Ð/Ð/Ñ0Ô0Ý”Ð7Ð7Ð7Ñ8Ô8ð	
ð 	
ñ
ô 
€Bð ×
Ò
Ñ
Ô
€Cà”Jð @ð @ˆØ×%Ò% hÑ/Ô/Ô:¸aÒ?Ð?Ð?Ð?Ð?ð@ð @r   c                 ón  — | d         dgz   }t          j        d|i¦  «        }|                     ¦   «                              d¦  «        }|                     ¦   «         dk    sJ ‚|j        dk    sJ ‚|j        d         t          j        k    sJ ‚|j	        t          j        dfk    sJ ‚|dd …         }|                     ¦   «                              d¦  «        }|                     ¦   «         dk    sJ ‚|j        dk    sJ ‚|j        d         t          j        k    sJ ‚|j	        t          j        dfk    sJ ‚d S )Nr   Ú r"   é   r$   r   é   )r   r-   r.   r/   rª   r2   r0   r   ÚSTRINGr3   r
   ÚUSE_BYTEMASK)r   Útest_str_datar=   r>   Ú	df_sliceds        r   Útest_stringrÅ   ë   s5  € ØÐ 0Ô1°R°DÑ8€MÝ	Œ�s˜MÐ*Ñ	+Ô	+€BØ
×
Ò
Ñ
Ô
×
/Ò
/°Ñ
4Ô
4€Cà�8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ØŒ>˜QÒÐÐÐØŒ9�QŒ<�9Ô+Ò+Ð+Ð+Ð+ØÔ¥Ô!<¸aÐ @Ò@Ð@Ð@Ð@à�1�2�2”€IØ
×
!Ò
!Ñ
#Ô
#×
6Ò
6°sÑ
;Ô
;€CØ�8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ØŒ>˜QÒÐÐÐØŒ9�QŒ<�9Ô+Ò+Ð+Ð+Ð+ØÔ¥Ô!<¸aÐ @Ò@Ð@Ð@Ð@Ð@Ð@r   c                  óú   — t          j        dg d¢i¦  «        } |                      ¦   «                              d¦  «        }t	          j        t          d¬¦  «        5  |j         d d d ¦  «         d S # 1 swxY w Y   d S )Nr"   )r(   r}   r›   r   znot supported yet©Úmatch)r   r-   r.   r/   rL   ÚraisesÚNotImplementedErrorr0   ©r=   r>   s     r   Útest_nonstring_objectrÌ   ý   s¾   € Ý	Œ�sÐ.Ð.Ð.Ð/Ñ	0Ô	0€BØ
×
Ò
Ñ
Ô
×
/Ò
/°Ñ
4Ô
4€CÝ	ŒÕ*Ð2EÐ	FÑ	FÔ	Fð ð ØŒ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA0Á0A4Á7A4c                  óè  — t          j        dt          j        d¦  «        t           j        gi¦  «        } |                      ¦   «                              d¦  «        }|                     ¦   «         dk    sJ ‚|j        dk    sJ ‚|j        d         t          j
        k    sJ ‚|j        t          j        t          fk    sJ ‚t          j        | t#          |                      ¦   «         ¦  «        ¦  «         d S )Nr"   z
2022-01-01rg   r$   r   )r   r-   Ú	TimestampÚNaTr.   r/   rª   r2   r0   r   ÚDATETIMEr3   r
   r4   r   r8   r<   r   rË   s     r   Útest_datetimerÑ     sÑ   € Ý	Œ�s�Rœ\¨,Ñ7Ô7½¼Ð@ÐAÑ	BÔ	B€BØ
×
Ò
Ñ
Ô
×
/Ò
/°Ñ
4Ô
4€Cà�8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ØŒ>˜QÒÐÐÐØŒ9�QŒ<�9Ô-Ò-Ð-Ð-Ð-ØÔ¥Ô!<½dÐ CÒCÐCÐCÐCåÔ˜"�n¨R×-=Ò-=Ñ-?Ô-?Ñ@Ô@ÑAÔAÐAÐAÐAr   zNumpy > 1.23 required)Úreasonc                  óf  — t          j        dt          j        g d¢¦  «        i¦  «        } |                      ¦   «                              d¦  «        }t          j        |                     ¦   «         d         d         ¦  «        }t          j        g d¢d¬¦  «        }t          j
        ||¦  «         d S )Nr"   )r(   Úbr(   r    r   )r   r$   r   Úint8©r0   )r   r-   r   r.   r/   r   Úfrom_dlpackÚget_buffersrO   r8   Úassert_numpy_array_equal)r=   r>   rT   rU   s       r   Ú test_categorical_to_numpy_dlpackrÚ     s™   € õ 
Œ�s�BœN¨?¨?¨?Ñ;Ô;Ð<Ñ	=Ô	=€BØ
×
Ò
Ñ
Ô
×
/Ò
/°Ñ
4Ô
4€CÝŒ^˜CŸOšOÑ-Ô-¨fÔ5°aÔ8Ñ9Ô9€FÝŒx˜	˜	˜	¨Ð0Ñ0Ô0€HÝÔ ¨Ñ1Ô1Ð1Ð1Ð1r   r(   c                 óÂ   — t          j        dd¦  «         ddlm} t	          j        | ¦  «        } ||¦  «        }t          |¦  «        }t          j        ||¦  «         d S )NrB   rC   r   r   )rL   rM   Úpyarrow.interchanger   r   r-   r8   r<   )r    Úpa_from_dataframerU   Úarrow_dfrT   s        r   Útest_empty_pyarrowrß     sn   € õ Ô˜	 8Ñ,Ô,Ð,ØGÐGÐGÐGÐGÐGåŒ|˜DÑ!Ô!€HØ Ð  Ñ*Ô*€HÝ˜HÑ%Ô%€FÝÔ˜& (Ñ+Ô+Ð+Ð+Ð+r   Úreturnc                  óP  — t          j        dd¦  «        } |                      g d¢g d¢g¦  «        }dg}|                      |g|¬¦  «        }t          j        t
          d¬¦  «        5  t          j        j         	                    |d	¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrB   rC   )rg   rg   é   )râ   rÀ   rl   Ún_legs)r˜   zHTo join chunks a copy is required which is forbidden by allow_copy=FalserÇ   F©Ú
allow_copy)
rL   rM   Úchunked_arrayrN   rÉ   ÚRuntimeErrorr   rY   rZ   r   )rQ   rã   r˜   rN   s       r   Útest_multi_chunk_pyarrowrè   &  s	  € Ý	Ô	˜Y¨Ñ	1Ô	1€BØ×Ò˜y˜y˜y¨+¨+¨+Ð6Ñ7Ô7€FØˆJ€EØ�HŠH�f�X UˆHÑ+Ô+€EÝ	ŒÝð(ð
ñ 
ô 
ð Cð Cõ
 	ŒÔ×)Ò)¨%¸EÐ)ÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs   Á''BÂBÂ"Bc                  óT  — t          j        dd¦  «         t          j        g d¢d¬¦  «        } t          j        | | gd¬¦  «                             d¦  «        }|                     ¦   «         }t          j        t          d	¬
¦  «        5  t          j	        j
                             |                     d¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        j
                             |                     d¬¦  «        ¦  «        }t          j        dg d¢id¬¦  «        }t          j        ||¦  «         t          j        ||¦  «         t!          |d         j        j        j        ¦  «        dk    sJ ‚t!          |d         j        j        j        ¦  «        dk    sJ ‚d S )NrB   rC   ©r$   rg   NúInt64[pyarrow]rÖ   T)Úignore_indexr(   z:Found multi-chunk pyarrow array, but `allow_copy` is FalserÇ   Frä   )r›   rœ   Nr›   rœ   NrX   rg   )rL   rM   r   r;   ÚconcatÚto_frameÚcopyrÉ   rç   rY   rZ   r   r.   r-   r8   r<   r¨   rO   Ú	_pa_arrayÚchunks)Úserr=   Údf_origrT   rU   s        r   Útest_multi_chunk_columnrô   3  sÖ  € Ý
Ô˜	 8Ñ,Ô,Ð,Ý
Œ)�L�L�LÐ(8Ð
9Ñ
9Ô
9€CÝ	Œ�C˜�:¨DÐ	1Ñ	1Ô	1×	:Ò	:¸3Ñ	?Ô	?€BØ�gŠg‰iŒi€GÝ	ŒÝÐXð
ñ 
ô 
ð Nð Nõ 	ŒÔ×)Ò)¨"×*:Ò*:ÀeÐ*:Ñ*LÔ*LÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nõ ŒVÔ×.Ò.¨r×/?Ò/?È4Ð/?Ñ/PÔ/PÑQÔQ€Fõ Œ|˜SÐ"BÐ"BÐ"BÐCÈ9ÐUÑUÔU€HÝÔ˜& (Ñ+Ô+Ð+õ Ô˜"˜gÑ&Ô&Ð&Ýˆr�#ŒwŒ}Ô&Ô-Ñ.Ô.°!Ò3Ð3Ð3Ð3Ýˆw�sŒ|Ô!Ô+Ô2Ñ3Ô3°qÒ8Ð8Ð8Ð8Ð8Ð8s   Â9CÃCÃCc                  ó|  — t          j        dd¦  «         dddddddœ} t          j        t	          d	i | ¤Žgdd¬¦  «                             ¦   «         }|                     ¦   «         }t          j        j         	                    |¦  «        d          
                    ¦   «         }t          j        d	i | ¤Ž}||k    sJ ‚d S )
NrB   rC   iÐ  r$   )ry   rz   r{   ÚhourÚminuteÚsecondútimestamp[ns][pyarrow]Úcol0)r0   Únamer   )rL   rM   r   r;   r   rî   r.   rY   rZ   r   ÚitemrÎ   )Útimestamp_argsr=   ÚdfirT   rU   s        r   Útest_timestamp_ns_pyarrowrÿ   H  sÛ   € å
Ô˜	 8Ñ,Ô,Ð,àØØØØØðð €Nõ 
ŒÝ	Ð	#Ð	#�NÐ	#Ð	#Ð$Ø&Øð
ñ 
ô 
÷ ‚h�j„jð	 ð ×
Ò
Ñ
Ô
€CÝŒVÔ×.Ò.¨sÑ3Ô3°FÔ;×@Ò@ÑBÔB€FåŒ|Ð-Ð-˜nÐ-Ð-€HØ�XÒÐÐÐÐÐr   ÚtzÚUTCz
US/PacificÚunit)r+   ÚmsÚusÚnsc                 ó  — t          j        ddd¬¦  «                             | ¦  «                             |¦  «        }t          j        d|i¦  «        }t          j        |t          |                     ¦   «         ¦  «        ¦  «         d S )Nz
2018-01-01rÀ   ÚD)ÚperiodsÚfreqÚts_tz)	r   Ú
date_rangeÚtz_localizeÚas_unitr-   r8   r<   r   r.   )r   r  Útz_datar=   s       r   Útest_datetimetzdtyper  `  s}   € õ
 	Œ�l¨A°CÐ8Ñ8Ô8×DÒDÀRÑHÔH×PÒPÐQUÑVÔVð õ 
Œ�w Ð(Ñ	)Ô	)€BÝÔ˜"�n¨R×-=Ò-=Ñ-?Ô-?Ñ@Ô@ÑAÔAÐAÐAÐAr   c           	      óT  — t          j        dd¦  «        }dd lm} t	          ¦   «         rIt          ¦   «         r;t           j                             |j        d¬¦  «        }|  	                    |¦  «         | 
                    t          ddd¦  «        d t          ddd¦  «        g¦  «        }|                     |d	¦  «        }|                     d
|i¦  «        }|                     ¦   «         }t          |¦  «        }t!          j        g d¢d
gd¬¦  «        }t%          j        ||¦  «         d S )NrB   rC   r   z_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.)rÉ   rÒ   éä  r$   rg   úAsia/KathmandurR   )z2020-01-01 00:00:00+05:45rÏ   z2020-01-02 00:00:00+05:45zdatetime64[us, Asia/Kathmandu])r¬   r0   )rL   rM   Úpyarrow.computeÚcomputer   r   ÚmarkÚxfailÚArrowInvalidÚapplymarkerrO   r   Úassume_timezonerN   r.   r   r   r-   r8   r<   )	ÚrequestrQ   Úpcr  rR   rN   rS   rT   rU   s	            r   Ú)test_interchange_from_non_pandas_tz_awarer  k  s9  € å	Ô	˜Y¨Ñ	1Ô	1€BØ Ð Ð Ð Ð Ð åÑÔð "Õ!2Ñ!4Ô!4ð "ÝŒ{× Ò Ø”?ð;ð !ñ 
ô 
ˆð 	×Ò˜DÑ!Ô!Ð!à
�(Š(•H˜T 1 aÑ(Ô(¨$µ¸¸qÀ!Ñ0DÔ0DÐEÑ
FÔ
F€CØ
×
Ò
˜SÐ"2Ñ
3Ô
3€CØ�HŠH�e˜S�\Ñ"Ô"€EØ×%Ò%Ñ'Ô'€KÝ˜KÑ(Ô(€FåŒ|ØIÐIÐIØ�Ø.ðñ ô €Hõ
 Ô˜( FÑ+Ô+Ð+Ð+Ð+r   c                 óø  ‡‡‡— t          j        dddgi¦  «                             ¦   «         }|                     ¦   «         Š‰                     d¦  «        Š‰                     ¦   «         Š‰d         }|d         }t
          j        dt          j        |d         f}|d         |f‰d<   ˆfd	„‰_        ˆfd
„‰_        |  	                    |dˆfd„¦  «         t           j
        j                             |¦  «         d S )Nr(   ÚfooÚbarr    r$   é   é   r   c                  ó   •— ‰ S rŠ   r   )Úbufferss   €r   rq   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>—  s   ø€  € r   c                 ó   •— ‰S rŠ   r   )r�   Úcolumns    €r   rq   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>˜  s   ø€ ¨v€ r   r.   c                 ó   •— ‰S rŠ   r   )rå   rZ   s    €r   rq   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>™  s   ø€ À€ r   )r   r-   r.   r/   rØ   r   ÚUINTr   ÚUINT8ÚsetattrrY   rZ   r   )Úmonkeypatchr=   Úbuffers_dataÚbuffer_dtyper#  r%  rZ   s       @@@r   Ú-test_interchange_from_corrected_buffer_dtypesr-  ˆ  s   øøø€ å	Œ�s˜U E˜NÐ+Ñ	,Ô	,×	:Ò	:Ñ	<Ô	<€BØ×"Ò"Ñ$Ô$€KØ×+Ò+¨CÑ0Ô0€FØ× Ò Ñ"Ô"€GØ˜6”?€LØ ”?€LåŒØ	ÝÔØ�QŒð	€Lð $ A”¨Ð5€GˆF�OØ(˜˜˜€FÔØ%5Ð%5Ð%5Ð%5€KÔ"Ø×Ò˜˜OÐ-KÐ-KÐ-KÐ-KÑLÔLÐLÝ„FÔ×%Ò% bÑ)Ô)Ð)Ð)Ð)r   c                  óÚ   — t          j        dg it          ¬¦  «        } |                      ¦   «         }t           j        j                             |¦  «        }t          j        | |¦  «         d S )Nr(   rÖ   )	r   r-   Ústrr.   rY   rZ   r   r8   r<   )r=   r–   rT   s      r   Útest_empty_string_columnr0  �  s\   € å	Œ�s˜B�i¥sÐ	+Ñ	+Ô	+€BØ
×
Ò
Ñ
Ô
€CÝŒVÔ×.Ò.¨sÑ3Ô3€FÝÔ˜"˜fÑ%Ô%Ð%Ð%Ð%r   c                  ó(  — t          j        d¦  «         t          j        ddgid¬¦  «        } t          j        j                             |                      ¦   «         ¦  «        }t          j        ddgid¬¦  «        }t          j	        ||¦  «         d S )NrB   r(   r¢   úlarge_string[pyarrow]rÖ   Úobject)
rL   rM   r   r-   rY   rZ   r   r.   r8   r<   )r=   rT   rU   s      r   Útest_large_stringr4  ¥  s…   € å
Ô˜	Ñ"Ô"Ð"Ý	Œ�s˜S˜E�lÐ*AÐ	BÑ	BÔ	B€BÝŒVÔ×.Ò.¨r×/?Ò/?Ñ/AÔ/AÑBÔB€FÝŒ|˜S 3 %˜L°Ð9Ñ9Ô9€HÝÔ˜& (Ñ+Ô+Ð+Ð+Ð+r   c                  ó¸   — t          j        g d¢d¬¦  «                             ¦   «         } |                      ¦   «                              ¦   «         }|dgk    sJ ‚d S )N©r$   rg   r!  r   )rû   Ú0)r   r;   rî   r.   r‘   )r=   r˜   s     r   Útest_non_str_namesr8  ®  sV   € å	Œ�9�9�9 1Ð	%Ñ	%Ô	%×	.Ò	.Ñ	0Ô	0€BØ×ÒÑÔ×+Ò+Ñ-Ô-€EØ�S�EŠ>ˆ>ˆ>ˆ>ˆ>ˆ>r   c                  ó  — t          j        g d¢g d¢dœ¦  «        } |                      ¦   «         }t          j        t
          d¬¦  «        5  t           j        j                             |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr6  )râ   rÀ   r¿   )r7  r   a   Expected a Series, got a DataFrame. This likely happened because you called __dataframe__ on a DataFrame which, after converting column names to string, resulted in duplicated names: Index\(\['0', '0'\], dtype='object'\). Please rename these columns before using the interchange protocol.rÇ   Frä   )	r   r-   r.   rL   rÉ   Ú	TypeErrorrY   rZ   r   )r=   rþ   s     r   Útest_non_str_names_w_duplicatesr;  µ  sé   € å	Œ˜I˜I˜I¨)¨)¨)Ð4Ð4Ñ	5Ô	5€BØ
×
Ò
Ñ
Ô
€CÝ	ŒÝð$ð	
ñ 	
ô 	
ð 
Að 
Aõ 	ŒÔ×)Ò)¨#¸%Ð)Ñ@Ô@Ð@ð
Að 
Að 
Añ 
Aô 
Að 
Að 
Að 
Að 
Að 
Að 
Að 
Aøøøð 
Að 
Að 
Að 
Að 
Að 
As   Á'A?Á?BÂB)r    r0   Úexpected_dtyperê   ÚInt64Úint64rë   ÚInt8rÕ   zInt8[pyarrow]ÚUInt64Úuint64zUInt64[pyarrow])r›   ç      @NÚFloat32Úfloat32zFloat32[pyarrow])TFNÚbooleanÚboolzboolean[pyarrow])úmuch adoÚaboutNzstring[pyarrow_numpy]r^   zstring[pyarrow]r  rù   ztimestamp[ns]ztimestamp[us][pyarrow]ztimestamp[us])Útzinfoz&timestamp[us, Asia/Kathmandu][pyarrow]ú timestamp[us, tz=Asia/Kathmandu]r0   r<  c                 óè  — t          j        dd¦  «        }dd lm} |dk    r|                     dd¦  «        }t          j        d| i|¬¦  «        }|                     |                     ¦   «         ¦  «        d         }|j	        |k    sJ ‚|d          
                    ¦   «         | d         k    sJ ‚|d	          
                    ¦   «         | d	         k    sJ ‚|d
          
                    ¦   «         �J ‚d S ©NrB   rC   r   rJ  r  r  r(   rÖ   r$   rg   ©rL   rM   rÜ   rZ   Ú	timestampr   r-   r   r.   ÚtypeÚas_py©r    r0   r<  rQ   Úpair=   rT   s          r   Ú(test_pandas_nullable_with_missing_valuesrS  Æ  sþ   € õb 
Ô	˜Y¨Ñ	1Ô	1€BØ%Ð%Ð%Ð%Ð%Ð%àÐ;Ò;Ð;ØŸš dÐ,<Ñ=Ô=ˆå	Œ�s˜D�k¨Ð	/Ñ	/Ô	/€BØ×Ò × 0Ò 0Ñ 2Ô 2Ñ3Ô3°CÔ8€FØŒ;˜.Ò(Ð(Ð(Ð(Ø�!Œ9�?Š?ÑÔ  Q¤Ò'Ð'Ð'Ð'Ø�!Œ9�?Š?ÑÔ  Q¤Ò'Ð'Ð'Ð'Ø�!Œ9�?Š?ÑÔÐ$Ð$Ð$Ð$Ð$r   r6  )r›   rB  g      @)TFF)rG  rH  Únothingr!  c                 óü  — t          j        dd¦  «        }dd lm} |dk    r|                     dd¦  «        }t          j        d| i|¬¦  «        }|                     |                     ¦   «         ¦  «        d         }|j	        |k    sJ ‚|d          
                    ¦   «         | d         k    sJ ‚|d	          
                    ¦   «         | d	         k    sJ ‚|d
          
                    ¦   «         | d
         k    sJ ‚d S rL  rM  rQ  s          r   Ú+test_pandas_nullable_without_missing_valuesrV    s  € õ` 
Ô	˜Y¨Ñ	1Ô	1€BØ%Ð%Ð%Ð%Ð%Ð%àÐ;Ò;Ð;ØŸš dÐ,<Ñ=Ô=ˆå	Œ�s˜D�k¨Ð	/Ñ	/Ô	/€BØ×Ò × 0Ò 0Ñ 2Ô 2Ñ3Ô3°CÔ8€FØŒ;˜.Ò(Ð(Ð(Ð(Ø�!Œ9�?Š?ÑÔ  Q¤Ò'Ð'Ð'Ð'Ø�!Œ9�?Š?ÑÔ  Q¤Ò'Ð'Ð'Ð'Ø�!Œ9�?Š?ÑÔ  Q¤Ò'Ð'Ð'Ð'Ð'Ð'r   c                  óè   — t          j        dd¦  «         t          j        ddgid¬¦  «        } |                      ¦   «                              d¦  «                             ¦   «         d         }|�J ‚d S )NrB   rC   r(   r¢   r2  rÖ   Úvalidity)rL   rM   r   r-   r.   r/   rØ   )r=   rT   s     r   Útest_string_validity_bufferrY  C  sm   € å
Ô˜	 8Ñ,Ô,Ð,Ý	Œ�s˜S˜E�lÐ*AÐ	BÑ	BÔ	B€BØ×ÒÑÔ×2Ò2°3Ñ7Ô7×CÒCÑEÔEÀjÔQ€FØˆ>ˆ>ˆ>ˆ>ˆ>r   c                  ó>  — t          j        dd¦  «         t          j        ddd gid¬¦  «        } |                      ¦   «                              d¦  «                             ¦   «         d         }|€J ‚|d         }t          j        dt          j        d	f}||k    sJ ‚d S )
NrB   rC   r(   r¢   r2  rÖ   rX  r$   ú=)
rL   rM   r   r-   r.   r/   rØ   r   ÚBOOLr   )r=   rX  rT   rU   s       r   Ú&test_string_validity_buffer_no_missingr]  K  s¢   € å
Ô˜	 8Ñ,Ô,Ð,Ý	Œ�s˜S $˜KÐ(Ð0GÐ	HÑ	HÔ	H€BØ×ÒÑ!Ô!×4Ò4°SÑ9Ô9×EÒEÑGÔGÈ
ÔS€HØÐÐÐØ�aŒ[€FÝ” ¥;Ô#3°SÐ9€HØ�XÒÐÐÐÐÐr   c                  ó  — t          j        dg id¬¦  «        } |                      ¦   «         }t           j        j                             |d¬¦  «        }t          j        dg id¬¦  «        }t          j        ||¦  «         d S )Nr(   rÕ   rÖ   Frä   )r   r-   r.   rY   rZ   r   r8   r<   )r=   rþ   rT   rU   s       r   Útest_empty_dataframer_  V  sy   € å	Œ�s˜B�i vÐ	.Ñ	.Ô	.€BØ
×
Ò
Ñ
Ô
€CÝŒVÔ×.Ò.¨s¸uÐ.ÑEÔE€FÝŒ|˜S "˜I¨VÐ4Ñ4Ô4€HÝÔ˜& (Ñ+Ô+Ð+Ð+Ð+r   )rà   N)Br   r   Únumpyr   rL   Úpandas._libs.tslibsr   Úpandas.compatr   r   Úpandas.compat.numpyr   Úpandasr   Úpandas._testingÚ_testingr8   Úpandas.core.interchange.columnr	   Ú*pandas.core.interchange.dataframe_protocolr
   r   Ú&pandas.core.interchange.from_dataframer   Úpandas.core.interchange.utilsr   Úfixturer   r   r  Úparametrizer@   rV   r\   ra   Úfloatrj   r™   r´   rO   rº   r¼   rÅ   rÌ   rÑ   ÚskipifrÚ   rß   rè   rô   rÿ   r  r  r-  r0  r4  r8  r;  Úutcr   r/  rS  rV  rY  r]  r_  r   r   r   ú<module>rp     s8	  ððð ð ð ð ð ð ð ð
 Ð Ð Ð Ø €€€à $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð BÐ AÐ AÐ AÐ AÐ AØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ð „ðð ñ „ðð „ð	ð 	ñ „ð	ð „×Ò˜Ð"3Ð5IÐ!JÑKÔKðBð Bñ LÔKðBð&,ð ,ð ,ð	,ð 	,ð 	,ðIð Ið Ið „×ÒØ+à	
ˆD�3˜˜˜e™œ cÐ*Ð+Ø	
ˆD�5�5˜‘<”< Ð%Ð&Ø	
ˆD�3�%ÐØ	
ˆA��U�U˜5‘\”\Ð"Ð#Ø	
ˆA�ˆuˆØ	
ˆA���e‘”ˆ~Ððñ
ô 
ðIð Iñ
ô 
ðIð „×ÒØ
à<Ð<Ø9Ð9Ø1Ð1Ø>Ð>ð	
ð 	
ð
ñô ðMð Mñô ðMð4Dð Dð Dð0 „×ÒØ
àˆoˆoÐ$5Ð$5Ð$5Ð6Ð6ØˆiˆiÐ/Ð/Ð/Ð0Ð0à�”Ð-Ð-Ð-Ñ.Ô.Ø�”˜)˜)˜)Ñ$Ô$Ø�”Ð+Ð+Ð+Ñ,Ô,ð	
ð 	
ðñô ð@ð @ñô ð@ð@ð @ð @ðAð Að Að$ð ð ð	Bð 	Bð 	Bð „×ÒÐ%Ð.EÐÑFÔFð2ð 2ñ GÔFð2ð „×Ò˜ " s¨B i Ñ1Ô1ð,ð ,ñ 2Ô1ð,ð
Cð 
Cð 
Cð 
Cð9ð 9ð 9ð 9ð*ð ð ð0 „×Ò˜  |Ð4Ñ5Ô5Ø„×Ò˜Ð!8Ð!8Ð!8Ñ9Ô9ðBð Bñ :Ô9ñ 6Ô5ðBð,ð ,ð ,ð:*ð *ð *ð *ð*&ð &ð &ð,ð ,ð ,ðð ð ðAð Að Að" „×ÒØ'à	ˆˆ�w Ð(Ø	ˆˆÐ'¨Ð1Ø	ˆˆ�v˜vÐ&Ø	ˆˆ�¨Ð/àˆLˆLØØð	
ð ˆLˆLØØð	
ð
 
Ð	Ð	˜I yÐ1Ø	Ð	Ð	Ð.°	Ð:Ø	Ð	Ð	˜i¨Ð0Ø	Ð	Ð	Ð0°&Ð9Ø	$Ð	$Ð	$Ð&=¸~ÐNØ	$Ð	$Ð	$Ð&7¸ÐHàˆX�d˜A˜qÑ!Ô! 8 8¨D°!°QÑ#7Ô#7¸Ð>Ø$Øð	
ð ˆX�d˜A˜qÑ!Ô! 8 8¨D°!°QÑ#7Ô#7¸Ð>Ø$Øð	
ð �˜˜q !¨H¬LÐ9Ñ9Ô9Ø�˜˜q !¨H¬LÐ9Ñ9Ô9Øðð
 5Ø.ð	
ð?(ñ+ô +ðX%Ø
ð%Øð%Ø,/ð%à	ð%ð %ð %ñY+ô +ðX%ð& „×ÒØ'à	ˆˆ�G˜WÐ%Ø	ˆˆÐ$ gÐ.Ø	ˆˆ�F˜FÐ#Ø	ˆˆ�O VÐ,àˆIˆIØØð	
ð ˆIˆIØØð	
ð
 
Ð	Ð	˜9 iÐ0Ø	Ð	Ð	Ð-¨yÐ9Ø	Ð	Ð	˜y¨&Ð1Ø	Ð	Ð	Ð1°6Ð:Ø	)Ð	)Ð	)Ð+BÀNÐSØ	)Ð	)Ð	)Ð+<¸nÐMàˆX�d˜A˜qÑ!Ô! 8 8¨D°!°QÑ#7Ô#7¸¸À$ÈÈ1Ñ9MÔ9MÐNØ$Øð	
ð ˆX�d˜A˜qÑ!Ô! 8 8¨D°!°QÑ#7Ô#7¸¸À$ÈÈ1Ñ9MÔ9MÐNØ$Øð	
ð �˜˜q !¨H¬LÐ9Ñ9Ô9Ø�˜˜q !¨H¬LÐ9Ñ9Ô9Ø�˜˜q !¨H¬LÐ9Ñ9Ô9ðð
 5Ø.ð	
ð?(ñ+ô +ðX(Ø
ð(Øð(Ø,/ð(à	ð(ð (ð (ñY+ô +ðX(ð$ð ð ð ðð ð ð ð,ð ,ð ,ð ,ð ,r   