§
    cŠtjþR  ã                  óô  — 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
Z
d dl
mZ d dlmZmZmZmZmZmZmZmZm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 m!Z! d dl"m#Z# er€d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/Z0d dl1Z2d dl
m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlmAZA d dlBmCZC d dlmDZD d dlEmFZF d dlGmHZH d dlImJZK d dlLmMZMmNZNmOZO  G d„ ded          e¦  «        ZPdS )!é    )Úannotations)Úreduce)Úand_)ÚTYPE_CHECKINGÚAnyÚLiteralN)ÚStarExpression)	ÚDeferredTimeZoneÚFÚcatch_duckdb_exceptionÚcolÚevaluate_exprs_and_aliasesÚjoin_column_namesÚlitÚnative_to_narwhals_dtypeÚwindow_expression)ÚSQLLazyFrame)ÚImplementationÚValidateBackendVersionÚVersionÚextend_boolÚgenerate_temporary_column_nameÚparse_columns_to_dropÚrequires©Ú
get_duckdb)ÚInvalidOperationError)ÚIterableÚIteratorÚMappingÚSequence)ÚBytesIO)ÚPath)Ú
ModuleType)Ú
Expression)ÚSelfÚTypeIs)ÚCompliantDataFrameAny)Ú
DuckDBExpr©ÚDuckDBGroupBy©ÚDuckDBNamespace©ÚDuckDBInterchangeSeries)Úduckdb_dtypes)Ú_EagerAllowedImpl)Ú_LimitedContext)Ú	LazyFrame)ÚDType©Ú	DataFrame)ÚAsofJoinStrategyÚJoinStrategyÚUniqueKeepStrategyc                  óØ  — e Zd Zej        Zddœdzd„Zed{d„¦   «         Ze	d|d„¦   «         Z
ed}d„¦   «         Zd~d„Zdd„Zdd„Zd€d„Zd�d!„Zd‚d%„Zdƒd'„Zd„d,„Zd…d/„Zd†d1„Zd‡d4„Zd‡d5„Zdˆd9„Zd‰dŠd<„Zd‡d=„Zd‹d?„ZedŒdA„¦   «         Zed�dC„¦   «         ZdŽdE„Zd�dG„Z d�dH„Z!d‘dI„Z"d’dN„Z#d“dQ„Z$d”dY„Z%d•d^„Z&dŒd_„Z'd–dd„Z(d—di„Z)d˜dm„Z*d™dn„Z+dšdo„Z,d›dt„Z- e.j/        du¦  «        dœdv„¦   «         Z0d�dy„Z1d:S )žÚDuckDBLazyFrameF)Úvalidate_backend_versionÚdfúduckdb.DuckDBPyRelationÚversionr   r<   ÚboolÚreturnÚNonec               ón   — || _         || _        d | _        d | _        |r|                      ¦   «          d S d S ©N)Ú_native_frameÚ_versionÚ_cached_native_schemaÚ_cached_columnsÚ_validate_backend_version)Úselfr=   r?   r<   s       úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_duckdb/dataframe.pyÚ__init__zDuckDBLazyFrame.__init__E   sM   € ð 79ˆÔØˆŒØSWˆÔ"Ø15ˆÔØ#ð 	-Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-ó    útuple[int, ...]c                ó4   — | j                              ¦   «         S rD   )Ú_implementationÚ_backend_version©rJ   s    rK   rQ   z DuckDBLazyFrame._backend_versionS   s   € àÔ#×4Ò4Ñ6Ô6Ð6rM   Úobjúduckdb.DuckDBPyRelation | AnyúTypeIs[duckdb.DuckDBPyRelation]c                ó6   — t          | t          j        ¦  «        S rD   )Ú
isinstanceÚduckdbÚDuckDBPyRelation)rS   s    rK   Ú
_is_nativezDuckDBLazyFrame._is_nativeW   s   € å˜#�vÔ6Ñ7Ô7Ð7rM   ÚdataÚcontextr2   r&   c              ó&   —  | ||j         ¬¦  «        S ©N©r?   )rF   )Úclsr[   r\   s      rK   Úfrom_nativezDuckDBLazyFrame.from_native[   s   € ð ˆs�4 Ô!1Ð2Ñ2Ô2Ð2rM   Úargsr   ÚkwdsúILazyFrame[duckdb.DuckDBPyRelation] | DataFrameV1[duckdb.DuckDBPyRelation]c                ó†   — | j         t          j        u rddlm}  || d¬¦  «        S | j                              | d¬¦  «        S )Nr   r5   Úinterchange)ÚlevelÚlazy)rF   r   ÚV1Únarwhals.stable.v1r6   Ú	lazyframe)rJ   rb   rc   ÚDataFrameV1s       rK   Úto_narwhalszDuckDBLazyFrame.to_narwhalsa   sU   € ð Œ=�GœJÐ&Ð&ØCÐCÐCÐCÐCÐCà�;˜t¨=Ð9Ñ9Ô9Ð9ØŒ}×&Ò& t°6Ð&Ñ:Ô:Ð:rM   c                óN   — | j         t          j        urd}t          |¦  «        ‚| S )Nz=__narwhals_dataframe__ is not implemented for DuckDBLazyFrame)rF   r   ri   ÚAttributeError)rJ   Úmsgs     rK   Ú__narwhals_dataframe__z&DuckDBLazyFrame.__narwhals_dataframe__j   s)   € àŒ=¥¤
Ð*Ð*ØQˆCÝ  Ñ%Ô%Ð%ØˆrM   c                ó   — | S rD   © rR   s    rK   Ú__narwhals_lazyframe__z&DuckDBLazyFrame.__narwhals_lazyframe__q   s   € ØˆrM   r$   c                ó   — t          ¦   «         S rD   r   rR   s    rK   Ú__native_namespace__z$DuckDBLazyFrame.__native_namespace__t   s   € Ý‰|Œ|ÐrM   r-   c                ó0   — ddl m}  || j        ¬¦  «        S )Nr   r,   r_   )Únarwhals._duckdb.namespacer-   rF   )rJ   r-   s     rK   Ú__narwhals_namespace__z&DuckDBLazyFrame.__narwhals_namespace__w   s)   € Ø>Ð>Ð>Ð>Ð>Ð>àˆ t¤}Ð5Ñ5Ô5Ð5rM   ÚnameÚstrr/   c                ób   — ddl m}  || j                             |¦  «        | j        ¬¦  «        S )Nr   r.   r_   )Únarwhals._duckdb.seriesr/   ÚnativeÚselectrF   )rJ   rz   r/   s      rK   Ú
get_columnzDuckDBLazyFrame.get_column|   s<   € ØCÐCÐCÐCÐCÐCà&Ð& t¤{×'9Ò'9¸$Ñ'?Ô'?ÈÌÐWÑWÔWÐWrM   úIterator[Expression]c              #  ó@   K  — | j         D ]}t          |¦  «        V — Œd S rD   )Úcolumnsr   )rJ   rz   s     rK   Ú_iter_columnszDuckDBLazyFrame._iter_columns�   s2   è è € Ø”Lð 	ð 	ˆDÝ�d‘)”)ˆOˆOˆOˆOð	ð 	rM   Úbackendú_EagerAllowedImpl | NoneÚkwargsr(   c                ó  — |�|t           j        u rWddlm} | j        dk    r| j                             ¦   «         n| j                             ¦   «         } ||d| j        d¬¦  «        S |t           j	        u r<ddl
m}  || j                             ¦   «         t           j	        d| j        d¬¦  «        S |t           j        u r0ddlm}  || j                             ¦   «         d| j        ¬	¦  «        S d
|› �}t#          |¦  «        ‚)Nr   )ÚArrowDataFrame)é   é   T)r<   r?   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr<   r?   rŒ   )ÚPolarsDataFrame)r<   r?   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframer‰   rQ   r~   Úto_arrow_tableÚfetch_arrow_tablerF   ÚPANDASÚnarwhals._pandas_like.dataframer�   r=   ÚPOLARSÚnarwhals._polars.dataframer�   ÚplÚ
ValueError)rJ   r…   r‡   r‰   Ú
res_nativer�   r�   rp   s           rK   ÚcollectzDuckDBLazyFrame.collect…   sT  € ð ˆ?˜g­Ô)?Ð?Ð?Ø@Ð@Ð@Ð@Ð@Ð@ð Ô(¨FÒ2Ð2ð ”×*Ò*Ñ,Ô,Ð,à”[×2Ò2Ñ4Ô4ð ð
 "�>ØØ)-ØœØ&*ð	ñ ô ð ð •nÔ+Ð+Ð+ØKÐKÐKÐKÐKÐKà&Ð&Ø”—’Ñ Ô Ý-Ô4Ø)-ØœØ&*ðñ ô ð ð •nÔ+Ð+Ð+ØBÐBÐBÐBÐBÐBà"�?Ø”—’Ñ Ô ¸4ÈÌðñ ô ð ð 8¨gÐ7Ð7ˆÝ˜‰oŒoÐrM   ÚnÚintc                ó\   — |                       | j                             |¦  «        ¦  «        S rD   )Ú_with_nativer~   Úlimit)rJ   rœ   s     rK   ÚheadzDuckDBLazyFrame.head¬   s&   € Ø× Ò  ¤×!2Ò!2°1Ñ!5Ô!5Ñ6Ô6Ð6rM   Úcolumn_namesc                óF   — |                        | j        j        |Ž ¦  «        S rD   )rŸ   r~   r   )rJ   r¢   s     rK   Úsimple_selectzDuckDBLazyFrame.simple_select¯   s#   € Ø× Ò Ð!3 ¤Ô!3°\Ð!BÑCÔCÐCrM   Úexprsr)   c                óÒ   — d„ t          | g|¢R Ž D ¦   «         }	 |                      | j                             |¦  «        ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc                ó>   — g | ]\  }}|                      |¦  «        ‘ŒS rs   ©Úalias©Ú.0rz   Úvals      rK   ú
<listcomp>z-DuckDBLazyFrame.aggregate.<locals>.<listcomp>³   s3   € ð 
ð 
ð 
Ù )  cˆC�IŠI�d‰OŒOð
ð 
ð 
rM   )r   rŸ   r~   Ú	aggregateÚ	Exceptionr   ©rJ   r¥   Ú	selectionÚes       rK   r®   zDuckDBLazyFrame.aggregate²   sŠ   € ð
ð 
Ý-GÈÐ-UÈuÐ-UÐ-UÐ-Uð
ñ 
ô 
ˆ	ð	<Ø×$Ò$ T¤[×%:Ò%:¸9Ñ%EÔ%EÑFÔFÐFøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   ™,A Á
A&ÁA!Á!A&c                ó¼   — d„ t          | g|¢R Ž D ¦   «         }	 |                       | j        j        |Ž ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S rD   r¨   rª   s      rK   ú	<genexpr>z)DuckDBLazyFrame.select.<locals>.<genexpr>¼   sA   è è € ð 
ð 
Ù )  cˆC�IŠI�d‰OŒOð
ð 
ð 
ð 
ð 
ð 
rM   )r   rŸ   r~   r   r¯   r   r°   s       rK   r   zDuckDBLazyFrame.select»   s‡   € ð
ð 
Ý-GÈÐ-UÈuÐ-UÐ-UÐ-Uð
ñ 
ô 
ˆ	ð	<Ø×$Ò$Ð%7 T¤[Ô%7¸Ð%CÑDÔDÐDøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   ™!; »
AÁAÁArƒ   úSequence[str]Ústrictc               ó’   ‡— t          | ||¬¦  «        Šˆfd„| j        D ¦   «         }|                       | j        j        |Ž ¦  «        S )N©r·   c                ó6   •— g | ]}|‰v¯t          |¦  «        ‘ŒS rs   ©r   )r«   rz   Úcolumns_to_drops     €rK   r­   z(DuckDBLazyFrame.drop.<locals>.<listcomp>Æ   s)   ø€ ÐWÐWÐW 4¸4ÀÐ;VÐ;V•S˜‘Y”YÐ;VÐ;VÐ;VrM   )r   rƒ   rŸ   r~   r   )rJ   rƒ   r·   r±   r¼   s       @rK   ÚdropzDuckDBLazyFrame.dropÄ   sS   ø€ Ý/°°gÀfÐMÑMÔMˆØWÐWÐWÐW¨4¬<ÐWÑWÔWˆ	Ø× Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rM   NÚ_c                ó,   — |�d}t          |¦  «        ‚| S )Nz.`backend` argument is not supported for DuckDB)r™   )rJ   r…   r¾   rp   s       rK   rh   zDuckDBLazyFrame.lazyÉ   s    € ð
 ÐØBˆCÝ˜S‘/”/Ð!ØˆrM   c                óL  ‡— t          t          | g|¢R Ž ¦  «        Šˆfd„| j        D ¦   «         }|                     d„ ‰                     ¦   «         D ¦   «         ¦  «         	 |                       | j        j        |Ž ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc                ó†   •— g | ]=}|‰v r(‰                      |¦  «                             |¦  «        nt          |¦  «        ‘Œ>S rs   )Úpopr©   r   )r«   rz   Únew_columns_maps     €rK   r­   z0DuckDBLazyFrame.with_columns.<locals>.<listcomp>Õ   s`   ø€ ð 
ð 
ð 
ð ð �Ð&Ð&ð ×Ò Ñ%Ô%×+Ò+¨DÑ1Ô1Ð1å�T‘”ð
ð 
ð 
rM   c              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S rD   r¨   )r«   rz   Úvalues      rK   rµ   z/DuckDBLazyFrame.with_columns.<locals>.<genexpr>Û   s2   è è € ÐSÐS©K¨D°%�e—k’k $Ñ'Ô'ÐSÐSÐSÐSÐSÐSrM   )
Údictr   rƒ   ÚextendÚitemsrŸ   r~   r   r¯   r   )rJ   r¥   Úresultr²   rÃ   s       @rK   Úwith_columnszDuckDBLazyFrame.with_columnsÓ   sÓ   ø€ ÝÕ9¸$ÐGÀÐGÐGÐGÑHÔHˆð
ð 
ð 
ð 
ð œð	
ñ 
ô 
ˆð 	�ŠÐSÐS¸?×;PÒ;PÑ;RÔ;RÐSÑSÔSÑSÔSÐSð	<Ø×$Ò$Ð%7 T¤[Ô%7¸Ð%@ÑAÔAÐAøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   Á!!B Â
B#ÂBÂB#Ú	predicatec                óÆ   —  || ¦  «        d         }	 |                       | j                             |¦  «        ¦  «        S # t          $ r}t	          || ¦  «        |‚d }~ww xY w)Nr   )rŸ   r~   Úfilterr¯   r   )rJ   rË   Úmaskr²   s       rK   Ú_filterzDuckDBLazyFrame._filterá   sn   € àˆy˜‰Œ˜qÔ!ˆð	9Ø×$Ò$ T¤[×%7Ò%7¸Ñ%=Ô%=Ñ>Ô>Ð>øÝð 	9ð 	9ð 	9Ý(¨¨DÑ1Ô1°qÐ8øøøøð	9øøøs   “,A  Á 
A Á
AÁA údict[str, DType]c                ó  ‡ ‡— ‰ j         €3t          t          ‰ j        ‰ j        j        d¬¦  «        ¦  «        ‰ _         t          ‰ j        ¦  «        Šˆˆ fd„t          ‰ j        j        ‰ j        j        d¬¦  «        D ¦   «         S )NFr¹   c                óD   •— i | ]\  }}|t          |‰j        ‰¦  «        “ŒS rs   )r   rF   )r«   Úcolumn_nameÚduckdb_dtypeÚdeferred_time_zonerJ   s      €€rK   ú
<dictcomp>z*DuckDBLazyFrame.schema.<locals>.<dictcomp>ó   sF   ø€ ð 
ð 
ð 
ñ *�˜\ð Õ1Ø˜dœmÐ-?ñô ð
ð 
ð 
rM   T)rG   rÆ   Úziprƒ   r~   Útypesr
   )rJ   rÕ   s   `@rK   ÚschemazDuckDBLazyFrame.schemaé   sž   øø€ àÔ%Ð-õ *.Ý�D”L $¤+Ô"3¸EÐBÑBÔBñ*ô *ˆDÔ&õ .¨d¬kÑ:Ô:Ðð
ð 
ð 
ð 
ð 
õ .1Ø”Ô# T¤[Ô%6¸tð.ñ .ô .ð	
ñ 
ô 
ð 	
rM   ú	list[str]c                óv   — | j         €,| j        �t          | j        ¦  «        n| j        j        | _         | j         S rD   )rH   rG   ÚlistrÙ   r~   rƒ   rR   s    rK   rƒ   zDuckDBLazyFrame.columnsü   sC   € àÔÐ'ð Ô-Ð9õ �T”[Ñ!Ô!Ð!à”[Ô(ð Ô ð
 Ô#Ð#rM   úpd.DataFramec                ó4   — | j                              ¦   «         S rD   )r~   r=   rR   s    rK   Ú	to_pandaszDuckDBLazyFrame.to_pandas  s   € àŒ{�~Š~ÑÔÐrM   úpa.Tablec                ón   — |                       ¦   «                              t          j        ¦  «        j        S rD   )rh   r›   r   r�   r~   rR   s    rK   Úto_arrowzDuckDBLazyFrame.to_arrow
  s$   € à�yŠy‰{Œ{×"Ò"¥>Ô#9Ñ:Ô:ÔAÐArM   c                ó:   — |                       | j        |¬¦  «        S r^   )Ú	__class__r~   )rJ   r?   s     rK   Ú_with_versionzDuckDBLazyFrame._with_version  s   € Ø�~Š~˜dœk°7ˆ~Ñ;Ô;Ð;rM   c                ó:   — |                       || j        ¬¦  «        S r^   )rä   rF   )rJ   r=   s     rK   rŸ   zDuckDBLazyFrame._with_native  s   € Ø�~Š~˜b¨$¬-ˆ~Ñ8Ô8Ð8rM   Úkeysú$Sequence[str] | Sequence[DuckDBExpr]Údrop_null_keysr+   c               ó*   — ddl m}  || ||¬¦  «        S )Nr   r*   )ré   )Únarwhals._duckdb.group_byr+   )rJ   rç   ré   r+   s       rK   Úgroup_byzDuckDBLazyFrame.group_by  s-   € ð 	<Ð;Ð;Ð;Ð;Ð;àˆ}˜T 4¸ÐGÑGÔGÐGrM   ÚmappingúMapping[str, str]c                ó|   ‡— | j         }ˆfd„|j        D ¦   «         }|                       | j         j        |Ž ¦  «        S )Nc              3  óŽ   •K  — | ]?}|‰v r(t          |¦  «                             ‰|         ¦  «        nt          |¦  «        V — Œ@d S rD   ©r   r©   )r«   rz   rí   s     €rK   rµ   z)DuckDBLazyFrame.rename.<locals>.<genexpr>  s`   øè è € ð 
ð 
àð /3°g¨o¨o�C�‰IŒI�OŠO˜G DœMÑ*Ô*Ð*Å3ÀtÁ9Ä9ð
ð 
ð 
ð 
ð 
ð 
rM   )r~   rƒ   rŸ   r   )rJ   rí   r=   r±   s    `  rK   ÚrenamezDuckDBLazyFrame.rename  sW   ø€ ØŒ[ˆð
ð 
ð 
ð 
àœ
ð
ñ 
ô 
ˆ	ð × Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rM   ÚotherÚhowr8   Úleft_onúSequence[str] | NoneÚright_onÚsuffixc               ól  — |dk    rdn|}|dk    rj| j         dk     rd| j         › �}t          |¦  «        ‚| j                             d¦  «                             |j                             d¦  «        ¦  «        }n�|€J ‚|€J ‚d„ t          ||d	¬
¦  «        D ¦   «         }	t          t          |	¦  «        }
| j                             d¦  «                             |j                             d¦  «        |
|¬¦  «        }|dv rïd„ | j	        D ¦   «         }|j	        D ]®}|| j	        v }|dk    r)|s'| 
                    t          d|› d�¦  «        ¦  «         Œ:|dk    s|rD|�||vr>| 
                    t          d|› d�¦  «                             |› |› �¦  «        ¦  «         Œ†|�||vr"| 
                    t          |¦  «        ¦  «         Œ¯ |j        |Ž                      | j        j        ¦  «        }n2|                     d¦  «                             | j        j        ¦  «        }|                      |¦  «        S )NÚfullÚouterÚcross)rŠ   rŠ   é   z;'duckdb>=1.1.4' is required for cross-join, found version: ÚlhsÚrhsc              3  ól   K  — | ]/\  }}t          d |› d�¦  «        t          d|› d�¦  «        k    V — Œ0dS ©úlhs."ú"úrhs."Nr»   ©r«   ÚleftÚrights      rK   rµ   z'DuckDBLazyFrame.join.<locals>.<genexpr>9  sc   è è € ð ð á�D˜%õ �O˜D�O�O�OÑ$Ô$­Ð,<°EÐ,<Ð,<Ð,<Ñ(=Ô(=Ò=ðð ð ð ð ð rM   Tr¹   )Ú	conditionrô   >   r  rü   Úinnerrû   c                ó4   — g | ]}t          d |› d�¦  «        ‘ŒS )r  r  r»   )r«   Úxs     rK   r­   z(DuckDBLazyFrame.join.<locals>.<listcomp>F  s(   € Ð>Ð>Ð>¨A•c˜, !˜,˜,˜,Ñ'Ô'Ð>Ð>Ð>rM   r  r  úlhs.*)rQ   ÚNotImplementedErrorr~   Ú	set_aliasrü   r×   r   r   Újoinrƒ   Úappendr   r©   r   rŸ   )rJ   ró   rô   rõ   r÷   rø   Ú
native_howrp   ÚrelÚitr  r   rz   Ú
col_in_lhsÚress                  rK   r  zDuckDBLazyFrame.join#  s|  € ð ˜f’}�}ˆGˆG¨#ð 	ð ˜Ò Ð ØÔ$ yÒ0Ð0ØkÐTXÔTiÐkÐk�Ý)¨#Ñ.Ô.Ð.Ø”+×'Ò'¨Ñ.Ô.×4Ò4°U´\×5KÒ5KÈEÑ5RÔ5RÑSÔSˆCˆCð Ð&Ð&Ð&ØÐ'Ð'Ð'ðð å#& w°ÀÐ#FÑ#FÔ#Fðñ ô ˆBõ %+­4°Ñ$4Ô$4ˆIØ”+×'Ò'¨Ñ.Ô.×3Ò3Ø”×&Ò& uÑ-Ô-à#Øð	 4ñ ô ˆCð Ð<Ð<Ð<Ø>Ð>°´Ð>Ñ>Ô>ˆFØœð 	-ð 	-�Ø#'¨4¬<Ð#7�
Ø Ò(Ð(°Ð(Ø—M’M¥# o¨d o o oÑ"6Ô"6Ñ7Ô7Ð7Ð7Ø  GÒ+Ð+Øð ,Ø$,Ð$4¸ÀHÐ8LÐ8Là—M’M¥# o¨d o o oÑ"6Ô"6×"<Ò"<ÀÐ=NÀfÐ=NÐ=NÑ"OÔ"OÑPÔPÐPÐPØÐ%¨°XÐ)=Ð)=Ø—M’M¥# d¡)¤)Ñ,Ô,Ð,øØ�#”*˜fÐ%×/Ò/°´Ô0AÑBÔBˆCˆCà—*’*˜WÑ%Ô%×/Ò/°´Ô0AÑBÔBˆCà× Ò  Ñ%Ô%Ð%rM   Úby_leftÚby_rightÚstrategyr7   c               ó€  ‡‡‡‡‡‡— | j         Š|j         Šg }|�2‰�0|                     d„ t          |‰d¬¦  «        D ¦   «         ¦  «         ng x}Š|dk    r<|                     t	          d|› d�¦  «        t	          d‰› d�¦  «        k    ¦  «         nS|dk    r<|                     t	          d|› d�¦  «        t	          d‰› d�¦  «        k    ¦  «         nd	}	t          |	¦  «        ‚t          t          |¦  «        }
ˆˆfd
„‰j        D ¦   «         }ˆˆfd„|D ¦   «         Šdg}|                     ˆfd„|D ¦   «         ¦  «         dd 	                    |¦  «        › d|
› d�}t          j        |¦  «        }d„ ‰j        D ¦   «         }|                     ˆˆfd„|D ¦   «         ¦  «         |                       |j        |Ž ¦  «        S )Nc              3  ól   K  — | ]/\  }}t          d |› d�¦  «        t          d|› d�¦  «        k    V — Œ0dS r  r»   r  s      rK   rµ   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>f  sc   è è € ð ð á�D˜%õ �O˜D�O�O�OÑ$Ô$­Ð,<°EÐ,<Ð,<Ð,<Ñ(=Ô(=Ò=ðð ð ð ð ð rM   Tr¹   Úbackwardr  r  r  ÚforwardzKOnly 'backward' and 'forward' strategies are currently supported for DuckDBc                ó"   •— g | ]}|‰h‰£v¯	|‘ŒS rs   rs   )r«   rz   r  r÷   s     €€rK   r­   z-DuckDBLazyFrame.join_asof.<locals>.<listcomp>|  s+   ø€ ÐWÐWÐW˜d°TÀ(ÐAVÈXÐAVÐ5VÐ5V�TÐ5VÐ5VÐ5VrM   c                ó`   •— i | ]*}|‰j         v ¯|t          d g ‰j         ¢‰j         ¢¦  «        “Œ+S )é   )rƒ   r   )r«   rz   rþ   rÿ   s     €€rK   rÖ   z-DuckDBLazyFrame.join_asof.<locals>.<dictcomp>}  sL   ø€ ð 
ð 
ð 
àØ�s”{Ð"Ð"ð Õ0°Ð4P°c´kÐ4PÀCÄKÐ4PÑQÔQà"Ð"Ð"rM   r  c              3  óJ   •K  — | ]}|‰v rd |› d‰|         › d�nd |› d�V — ŒdS )r  z" as "r  Nrs   )r«   rz   Ú	tmp_namess     €rK   rµ   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>ƒ  sk   øè è € ð 
ð 
ð ð �yÐ Ð ð 3�DÐ2Ð2 	¨$¤Ð2Ð2Ð2Ð2à ˜���ð
ð 
ð 
ð 
ð 
ð 
rM   z
            SELECT ú,zD
            FROM lhs
            ASOF LEFT JOIN rhs
            ON ú
            c                ó,   — g | ]}t          |¦  «        ‘ŒS rs   r»   ©r«   rz   s     rK   r­   z-DuckDBLazyFrame.join_asof.<locals>.<listcomp>‘  s   € Ð4Ð4Ð4 •#�d‘)”)Ð4Ð4Ð4rM   c              3  ó–   •K  — | ]C}|‰v r,t          ‰|         ¦  «                             |› ‰› �¦  «        nt          |¦  «        V — ŒDd S rD   rñ   )r«   rz   rø   r!  s     €€rK   rµ   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>’  sw   øè è € ð 
ð 
ð ð �yÐ Ð õ �	˜$”Ñ Ô ×&Ò&¨$Ð'8°Ð'8Ð'8Ñ9Ô9Ð9å�T‘”ð
ð 
ð 
ð 
ð 
ð 
rM   )r~   rÇ   r×   r  r   r  r   r   rƒ   r  rX   ÚsqlrŸ   r   )rJ   ró   rõ   r÷   r  r  r  rø   Ú
conditionsrp   r  Ú	keep_colsÚ
rhs_selectÚqueryÚjoinedr   rþ   rÿ   r!  s      ` ` `        @@@rK   Ú	join_asofzDuckDBLazyFrame.join_asofW  s�  øøøøøø€ ð ŒkˆØŒlˆØ')ˆ
ØÐ 8Ð#7Ø×Òð ð å#& w°ÀÐ#FÑ#FÔ#Fðñ ô ñ ô ð ð ð
 "$Ð#ˆG�hØ�zÒ!Ð!Ø×Ò�cÐ"4¨'Ð"4Ð"4Ð"4Ñ5Ô5½Ð=PÀXÐ=PÐ=PÐ=PÑ9QÔ9QÒQÑRÔRÐRÐRØ˜Ò"Ð"Ø×Ò�cÐ"4¨'Ð"4Ð"4Ð"4Ñ5Ô5½Ð=PÀXÐ=PÐ=PÐ=PÑ9QÔ9QÒQÑRÔRÐRÐRà_ˆCÝ% cÑ*Ô*Ð*Ý &¥t¨ZÑ 8Ô 8ˆ	ð XÐWÐWÐWÐW c¤kÐWÑWÔWˆ	ð
ð 
ð 
ð 
ð 
à!ð
ñ 
ô 
ˆ	ð
 �Yˆ
Ø×Òð 
ð 
ð 
ð 
ð "ð	
ñ 
ô 
ñ 	
ô 	
ð 	
ðØ—H’H˜ZÑ(Ô(ðð ð ð	ð ð ˆõ ”˜EÑ"Ô"ˆà4Ð4¨¬Ð4Ñ4Ô4ˆØ�Šð 
ð 
ð 
ð 
ð 
ð "ð	
ñ 
ô 
ñ 	
ô 	
ð 	
ð × Ò   ¤°Ð!7Ñ8Ô8Ð8rM   c                ó   — | j         S rD   )rÙ   rR   s    rK   Úcollect_schemazDuckDBLazyFrame.collect_schemaš  s
   € ØŒ{ÐrM   ÚsubsetÚkeepr9   Úorder_byc               óž  — |p| j         }|                      |¦  «        x}r|‚t          d| j         d¬¦  «        }|r#|dk    rt          dt	          |¦  «        ¦  «        nd }|dk    r1t          t          dt          ¦   «         ¦  «        ||pd||¬	¦  «        }n#t          t          d
¦  «        ||pd||¬	¦  «        }|                      | j	         
                    t          ¦   «         |                     |¦  «        ¦  «                             t          |¦  «        t          d¦  «        k    ¦  «        ¦  «                             |gd¬¦  «        S )Nr  Ú
row_index_)ÚprefixÚlastTÚnoneÚcountrs   )Ú
descendingÚ
nulls_lastÚ
row_numberrŠ   Fr¹   )rƒ   Ú_check_columns_existr   r   Úlenr   r   r	   rŸ   r~   r   r©   rÍ   r   r   r½   )	rJ   r0  r1  r2  Úsubset_ÚerrorÚtmp_nameÚflagsÚexprs	            rK   ÚuniquezDuckDBLazyFrame.unique�  sY  € ð Ð(˜DœLˆØ×-Ò-¨gÑ6Ô6Ð6ˆ5ð 	ØˆKÝ1°!°T´\È,ÐWÑWÔWˆØ4<ÐYÀÈÂÀ•˜D¥# h¡-¤-Ñ0Ô0Ð0ÐUYˆØ�6Š>ˆ>Ý$Ý�'�>Ñ+Ô+Ñ,Ô,ØØ�˜BØ Ø ðñ ô ˆDˆDõ %Ý�,‘”ØØ�˜BØ Ø ðñ ô ˆDð × Ò ØŒK×Ò�~Ñ/Ô/°·²¸HÑ1EÔ1EÑFÔF×MÒMÝ�H‘”¥ Q¡¤Ò'ñô ñ
ô 
÷ Š$�ˆz %ˆ$Ñ
(Ô
(ð		)rM   Úbyr9  úbool | Sequence[bool]r:  c               óö   — t          |t          |¦  «        ¦  «        }|rd„ t          ||d¬¦  «        D ¦   «         }nd„ t          ||d¬¦  «        D ¦   «         }|                       | j        j        |Ž ¦  «        S )Nc              3  óÈ   K  — | ]]\  }}|s!t          |¦  «                             ¦   «         n2t          |¦  «                             ¦   «                              ¦   «         V — Œ^d S rD   )r   r:  Údesc©r«   rz   rH  s      rK   rµ   z'DuckDBLazyFrame.sort.<locals>.<genexpr>Â  sr   è è € ð ð á�D˜$ð /3ÐU•�D‘	”	×$Ò$Ñ&Ô&Ð&½¸D¹	¼	¿ºÑ8HÔ8H×8SÒ8SÑ8UÔ8Uðð ð ð ð ð rM   Tr¹   c              3  óÈ   K  — | ]]\  }}|s!t          |¦  «                             ¦   «         n2t          |¦  «                             ¦   «                              ¦   «         V — Œ^d S rD   )r   Únulls_firstrH  rI  s      rK   rµ   z'DuckDBLazyFrame.sort.<locals>.<genexpr>Ç  sr   è è € ð ð á�D˜$ð 04ÐW•�D‘	”	×%Ò%Ñ'Ô'Ð'½¸T¹¼¿ºÑ9IÔ9I×9UÒ9UÑ9WÔ9Wðð ð ð ð ð rM   )r   r=  r×   rŸ   r~   Úsort)rJ   r9  r:  rD  r  s        rK   rL  zDuckDBLazyFrame.sort¿  sž   € Ý  ­S°©W¬WÑ5Ô5ˆ
Øð 		ðð å"% b¨*¸TÐ"BÑ"BÔ"Bðñ ô ˆBˆBð
ð å"% b¨*¸TÐ"BÑ"BÔ"Bðñ ô ˆBð × Ò Ð!1 ¤Ô!1°2Ð!6Ñ7Ô7Ð7rM   ÚkúIterable[str]Úreversec               ó¾  — | j         }t          |¦  «        }t          |t          ¦  «        rt	          | t          |¦  «        ¦  «        }nt          d„ |D ¦   «         ¦  «        }t          t          d¦  «        ||t	          dt          |¦  «        ¦  «        ¬¦  «        }|t          |¦  «        k    }d|› d�}|  
                    t          j        |¦  «        ¦  «        S )Nc              3  ó   K  — | ]}| V — Œd S rD   rs   )r«   Úrevs     rK   rµ   z(DuckDBLazyFrame.top_k.<locals>.<genexpr>Ó  s$   è è € Ð:Ð:¨3 3˜wÐ:Ð:Ð:Ð:Ð:Ð:rM   r;  T)r2  r9  r:  z@
            SELECT *
            FROM _rel
            QUALIFY z	
        )r~   rÜ   rW   r@   r   r=  Útupler   r   r   rŸ   rX   r'  )	rJ   rM  rD  rO  Ú_relr9  rB  r  r+  s	            rK   Útop_kzDuckDBLazyFrame.top_kÍ  sÝ   € ØŒ{ˆÝ�"‰XŒXˆÝ�g�tÑ$Ô$ð 	;Ý$¨ [µ#°b±'´'Ñ:Ô:ˆJˆJåÐ:Ð:°'Ð:Ñ:Ô:Ñ:Ô:ˆJÝ Ýˆl‰OŒOØØ!Ý" 4­¨R©¬Ñ1Ô1ð	
ñ 
ô 
ˆð �C ™FœF’Nˆ	ðð ðð ð ˆð
 × Ò ¥¤¨EÑ!2Ô!2Ñ3Ô3Ð3rM   c                ó°   — |�|n| j         }t          t          d„ |D ¦   «         ¦  «        }|                      | j                             |¦  «        ¦  «        S )Nc              3  óX   K  — | ]%}t          |¦  «                             ¦   «         V — Œ&d S rD   )r   Ú	isnotnullr%  s     rK   rµ   z-DuckDBLazyFrame.drop_nulls.<locals>.<genexpr>ä  s4   è è € Ð&QÐ&QÀ¥s¨4¡y¤y×':Ò':Ñ'<Ô'<Ð&QÐ&QÐ&QÐ&QÐ&QÐ&QrM   )rƒ   r   r   rŸ   r~   rÍ   )rJ   r0  r>  Úkeep_conditions       rK   Ú
drop_nullszDuckDBLazyFrame.drop_nullsâ  sT   € Ø"Ð.�&�&°D´LˆÝ¥Ð&QÐ&QÈÐ&QÑ&QÔ&QÑRÔRˆØ× Ò  ¤×!3Ò!3°NÑ!CÔ!CÑDÔDÐDrM   c                ó–  ‡‡— | j         j        }|                      ¦   «         }‰D ]*}||         }||j        k    rd|› d�}t	          |¦  «        ‚Œ+t          ‰¦  «        dk    rd}t          |¦  «        ‚t          ‰d         ¦  «        Š| j        }| j	        }t          d¦  «        }	‰                     ¦   «         t          d‰¦  «        z  |	k    }
 |                     |
¦  «        j        ˆˆfd„|D ¦   «         Ž } |                     |
 ¦  «        j        ˆfd„|D ¦   «         Ž }|                      |                     |¦  «        ¦  «        S )	Nz-`explode` operation not supported for dtype `z`, expected List typerŠ   z”Exploding on multiple columns is not supported with DuckDB backend since we cannot guarantee that the exploded columns have matching element counts.r   r=  c              3  ój   •K  — | ]-}|‰v r#t          d ‰¦  «                             |¦  «        n|V — Œ.dS )ÚunnestN)r   r©   )r«   rz   Úcol_to_exploderƒ   s     €€rK   rµ   z*DuckDBLazyFrame.explode.<locals>.<genexpr>  s^   øè è € ð ð àð <@À7¸?¸?•�(˜NÑ+Ô+×1Ò1°$Ñ7Ô7Ð7ÐPTðð ð ð ð ð rM   c              3  óh   •K  — | ],}|‰v r"t          d ¦  «                             |¦  «        n|V — Œ-d S rD   )r   r©   )r«   rz   rƒ   s     €rK   rµ   z*DuckDBLazyFrame.explode.<locals>.<genexpr>  sV   øè è € ð ð àð *.°¨¨•�D‘	”	—’ Ñ%Ô%Ð%¸dðð ð ð ð ð rM   )rF   Údtypesr/  ÚListr   r=  r  r   r~   rƒ   r   rX  r   rÍ   r   rŸ   Úunion)rJ   rƒ   r`  rÙ   rz   Údtyperp   r  Úoriginal_columnsÚzeroÚnot_null_conditionÚnon_null_relÚnull_relr^  s    `           @rK   ÚexplodezDuckDBLazyFrame.explodeç  s¤  øø€ Ø”Ô%ˆØ×$Ò$Ñ&Ô&ˆØð 	1ð 	1ˆDØ˜4”LˆEØ˜œÒ#Ð#ð)ÀEð )ð )ð )ð õ ,¨CÑ0Ô0Ð0ð $õ ˆw‰<Œ<˜1ÒÐð^ð õ & cÑ*Ô*Ð*å˜W QœZ™œˆØŒkˆØœ<Ðå�1‰vŒvˆØ+×5Ò5Ñ7Ô7½!¸EÀ>Ñ:RÔ:RÑRÐUYÒYÐØ<�s—z’zÐ"4Ñ5Ô5Ô<ðð ð ð ð à,ðñ ô ð
ˆð :�3—:’:Ð1Ð1Ñ2Ô2Ô9ðð ð ð à,ðñ ô ð
ˆð × Ò  ×!3Ò!3°HÑ!=Ô!=Ñ>Ô>Ð>rM   ÚonÚindexÚvariable_nameÚ
value_namec                óp  ‡
— |€g n|Š
|€ˆ
fd„| j         D ¦   «         n|}|dk    rd}t          |¦  «        ‚|dk    rd}t          |¦  «        ‚t          |Ž }| j        }d|› dt	          |¦  «        › dt	          |¦  «        › d�}	|                       t          j        |	¦  «        j        g ‰
¢|‘|‘Ž ¦  «        S )	Nc                ó   •— g | ]}|‰v¯|‘Œ	S rs   rs   )r«   ÚcÚindex_s     €rK   r­   z+DuckDBLazyFrame.unpivot.<locals>.<listcomp>  s   ø€ Ð:Ð:Ð:�Q¨!°6¨/¨/ˆq¨/¨/¨/rM   Ú z:`variable_name` cannot be empty string for duckdb backend.z7`value_name` cannot be empty string for duckdb backend.z)
            unpivot _rel
            on z'
            into
                name z
                value r#  )	rƒ   r  r   r~   r   rŸ   rX   r'  r   )rJ   rj  rk  rl  rm  Úon_rp   Ú
unpivot_onrT  r+  rq  s             @rK   ÚunpivotzDuckDBLazyFrame.unpivot  s
  ø€ ð �}��¨%ˆØ>@¸jÐ:Ð:Ð:Ð:˜$œ,Ð:Ñ:Ô:Ð:Èbˆà˜BÒÐØNˆCÝ% cÑ*Ô*Ð*à˜ÒÐØKˆCÝ% cÑ*Ô*Ð*å&¨Ð,ˆ
ØŒ{ˆðàðð õ ˜-Ñ(Ô(ð	ð õ
 ˜:‘”ðð ð ˆð × Ò Ø$�FŒJ�uÑÔÔ$Ð&J¨Ð&J°Ð&J¸zÐ&JÐKñ
ô 
ð 	
rM   )rŠ   é   c                ó  — |€d}t          |¦  «        ‚t          t          d¦  «        |¬¦  «        t          d¦  «        z
                       |¦  «        }|                      | j                             |t          ¦   «         ¦  «        ¦  «        S )Nz5Cannot pass `order_by` to `with_row_index` for DuckDBr;  )r2  rŠ   )	Ú	TypeErrorr   r   r   r©   rŸ   r~   r   r	   )rJ   rz   r2  rp   rB  s        rK   Úwith_row_indexzDuckDBLazyFrame.with_row_index1  s}   € àÐØIˆCÝ˜C‘.”.Ð Ý!¥! L¡/¤/¸HÐEÑEÔEÍÈAÉÌÑN×UÒUØñ
ô 
ˆð × Ò  ¤×!3Ò!3°D½.Ñ:JÔ:JÑ!KÔ!KÑLÔLÐLrM   Úfileústr | Path | BytesIOc                óT   — | j                              t          |¦  «        ¦  «         d S rD   )r~   Úwrite_parquetr{   )rJ   rz  s     rK   Úsink_parquetzDuckDBLazyFrame.sink_parquet;  s$   € ØŒ×!Ò!¥# d¡)¤)Ñ,Ô,Ð,Ð,Ð,rM   )r=   r>   r?   r   r<   r@   rA   rB   )rA   rN   )rS   rT   rA   rU   )r[   r>   r\   r2   rA   r&   )rb   r   rc   r   rA   rd   )rA   r&   )rA   r$   )rA   r-   )rz   r{   rA   r/   )rA   r�   )r…   r†   r‡   r   rA   r(   )rœ   r�   rA   r&   )r¢   r{   rA   r&   )r¥   r)   rA   r&   )rƒ   r¶   r·   r@   rA   r&   rD   )r…   rB   r¾   rB   rA   r&   )rË   r)   rA   r&   )rA   rÐ   )rA   rÚ   )rA   rÝ   )rA   rà   )r?   r   rA   r&   )r=   r>   rA   r&   )rç   rè   ré   r@   rA   r+   )rí   rî   rA   r&   )ró   r&   rô   r8   rõ   rö   r÷   rö   rø   r{   rA   r&   )ró   r&   rõ   r{   r÷   r{   r  rö   r  rö   r  r7   rø   r{   rA   r&   )r0  rö   r1  r9   r2  rö   rA   r&   )rD  r{   r9  rE  r:  r@   rA   r&   )rM  r�   rD  rN  rO  rE  rA   r&   )r0  rö   rA   r&   )rƒ   r¶   rA   r&   )
rj  rö   rk  rö   rl  r{   rm  r{   rA   r&   )rz   r{   r2  r¶   rA   r&   )rz  r{  rA   rB   )2Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBrP   rL   ÚpropertyrQ   ÚstaticmethodrZ   Úclassmethodra   rm   rq   rt   rv   ry   r€   r„   r›   r¡   r¤   r®   r   r½   rh   rÊ   rÏ   rÙ   rƒ   rß   râ   rå   rŸ   rì   rò   r  r-  r/  rC  rL  rU  rZ  ri  ru  r   Úbackend_versionry  r~  rs   rM   rK   r;   r;   ;   s¾  € € € € € ð %Ô+€Oð */ð-ð -ð -ð -ð -ð -ð ð7ð 7ð 7ñ „Xð7ð ð8ð 8ð 8ñ „\ð8ð ð3ð 3ð 3ñ „[ð3ð
;ð ;ð ;ð ;ðð ð ð ðð ð ð ðð ð ð ð6ð 6ð 6ð 6ð
Xð Xð Xð Xð
ð ð ð ð%ð %ð %ð %ðN7ð 7ð 7ð 7ðDð Dð Dð Dð<ð <ð <ð <ð<ð <ð <ð <ðAð Að Að Að
ð ð ð ð ð<ð <ð <ð <ð9ð 9ð 9ð 9ð ð
ð 
ð 
ñ „Xð
ð$ ð$ð $ð $ñ „Xð$ð ð  ð  ð  ðBð Bð Bð Bð<ð <ð <ð <ð9ð 9ð 9ð 9ðHð Hð Hð HðAð Að Að Að2&ð 2&ð 2&ð 2&ðhA9ð A9ð A9ð A9ðFð ð ð ð )ð  )ð  )ð  )ðD8ð 8ð 8ð 8ð4ð 4ð 4ð 4ð*Eð Eð Eð Eð
'?ð '?ð '?ð '?ðR
ð 
ð 
ð 
ðB €XÔ˜fÑ%Ô%ðMð Mð Mñ &Ô%ðMð-ð -ð -ð -ð -ð -rM   r;   )r)   r>   rd   )QÚ
__future__r   Ú	functoolsr   Úoperatorr   Útypingr   r   r   rX   r	   Únarwhals._duckdb.utilsr
   r   r   r   r   r   r   r   r   Únarwhals._sql.dataframer   Únarwhals._utilsr   r   r   r   r   r   r   Únarwhals.dependenciesr   Únarwhals.exceptionsr   Úcollections.abcr   r   r    r!   Úior"   Úpathlibr#   rØ   r$   ÚpandasÚpdÚpyarrowÚpar%   Útyping_extensionsr&   r'   Únarwhals._compliant.typingr(   Únarwhals._duckdb.exprr)   rë   r+   rx   r-   r}   r/   r0   Únarwhals._typingr1   r2   Únarwhals.dataframer3   Únarwhals.dtypesr4   rj   r6   rl   Únarwhals.typingr7   r8   r9   r;   rs   rM   rK   ú<module>rž     sN  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø !Ð !Ð !Ð !Ð !Ð !ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 1Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5àð SØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð àÐÐÐØÐÐÐØ!Ð!Ð!Ð!Ð!Ð!Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à@Ð@Ð@Ð@Ð@Ð@Ø0Ð0Ð0Ð0Ð0Ð0Ø7Ð7Ð7Ð7Ð7Ð7Ø:Ð:Ð:Ð:Ð:Ð:Ø?Ð?Ð?Ð?Ð?Ð?Ø4Ð4Ð4Ð4Ð4Ð4Ø2Ð2Ð2Ð2Ð2Ð2Ø/Ð/Ð/Ð/Ð/Ð/Ø,Ð,Ð,Ð,Ð,Ð,Ø%Ð%Ð%Ð%Ð%Ð%Ø;Ð;Ð;Ð;Ð;Ð;ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRðA-ð A-ð A-ð A-ð A-Øð	Uôð
 ñA-ô A-ð A-ð A-ð A-rM   