Ë
    kQêjö7  ã                   óâ  — U d dl mZ d dlmZ d dlZd dlmZ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 dZd	Zd
ZdZdZdZdZdZdZdZdej>                  dee    fd„Z!	 d,dejD                  deej>                     de fd„Z#	 d,dejH                  deejJ                     de fd„Z&dedejJ                  f   deejJ                     fd„Z'	 d,dejH                  deejJ                     de(fd„Z)e G d„ d«      «       Z*ede*fd„«       Z+e+jY                  ejZ                  «      dejZ                  de*fd „«       Z.e+jY                  ej^                  «      dej^                  de*fd!„«       Z0e+jY                  ejJ                  «      dejJ                  de*fd"„«       Z1e+jY                  ejd                  «      dejd                  de*fd#„«       Z3e+jY                  ejh                  «      dejh                  de*fd$„«       Z5e+jY                  e6«      de6de*fd%„«       Z7e+jY                  e(«      de(de*fd&„«       Z8e+jY                  e«      dede*fd'„«       Z9dede*fd(„Z: e;«       Z<e;e=   e>d)<   d*„ Z?d+„ Z@ e@«        y)-é    )Ú	dataclass)ÚsingledispatchN)ÚCallableÚIteratorÚOptional©Úto_arrowé   )Ú
LanceModeli   @i   i   i   é   é   é   é€   é
   ÚsampleÚreturnc                 ó¾   — t        | «      dk(  ryt        j                  t        j                  | «      «      j	                  «       }|€dS t        dt        |«      «      S )zCAverage element count per row observed in a list/large_list sample.r   Nr
   )ÚlenÚpcÚmeanÚlist_value_lengthÚas_pyÚmaxÚround)r   r   s     úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/scannable.pyÚ_observed_list_lengthr   *   sM   € ä
ˆ6ƒ{�aÒØÜ�7‰7”2×'Ñ'¨Ó/Ó0×6Ñ6Ó8€DØ�<ˆ4Ð8¤S¨¬E°$«KÓ%8Ð8ó    Údtypec                 óH  ‡ ‡— t         j                  j                  ‰ «      r"‰ j                  t	        ‰ j
                  «      z  S t         j                  j                  ‰ «      r(t        ˆ ˆfd„t        ‰ j                  «      D «       «      S t         j                  j                  ‰ «      rt	        ‰ j
                  «      S t         j                  j                  ‰ «      r‰ j                  S t         j                  j                  ‰ «      ryt         j                  j                  ‰ «      st         j                  j                  ‰ «      r'‰�%t!        ‰«      }|�|t	        ‰ j
                  «      z  S 	 t#        d‰ j$                  dz  «      S # t&        t(        f$ r	 t*        cY S w xY w)Nc              3   óš   •K  — | ]B  }t        ‰j                  |«      j                  ‰�t        j                  ‰|g«      nd «      –— ŒD y ­w©N)Ú_estimate_field_widthÚfieldÚtyper   Ústruct_field)Ú.0Úir   r   s     €€r   ú	<genexpr>z(_estimate_field_width.<locals>.<genexpr>8   sH   øè ø€ ò 
ð
 ô	 "Ø—‘˜A“×#Ñ#Ø06Ð0B”—‘ ¨¨Ô,È÷ñ
ùs   ƒAAr
   é   )ÚpaÚtypesÚis_fixed_size_listÚ	list_sizer"   Ú
value_typeÚ	is_structÚsumÚrangeÚ
num_fieldsÚis_dictionaryÚis_fixed_size_binaryÚ
byte_widthÚ
is_booleanÚis_listÚis_large_listr   r   Ú	bit_widthÚ
ValueErrorÚAttributeErrorÚ_VARIABLE_WIDTH_ESTIMATE)r   r   Úobserved_lengths   `` r   r"   r"   2   sH  ù€ ô 
‡x�x×"Ñ" 5Ô)Ø�‰Ô!6°u×7GÑ7GÓ!HÑHÐHÜ	‡x�x×Ñ˜%Ô Üô 
ô
 ˜5×+Ñ+Ó,ô
ó 
ð 	
ô 
‡x�x×Ñ˜eÔ$Ü$ U×%5Ñ%5Ó6Ð6Ü	‡x�x×$Ñ$ UÔ+Ø×ÑÐÜ	‡x�x×Ñ˜5Ô!ØÜ
�‰×Ñ˜Ô¤2§8¡8×#9Ñ#9¸%Ô#@ØÐä/°Ó7ˆØÐ&Ø"Ô%:¸5×;KÑ;KÓ%LÑLÐLð(Ü�1�e—o‘o¨Ñ*Ó+Ð+øÜœÐ'ò (Ü'Ò'ð(ús   Å0F	 Æ	F!Æ F!Úschemac                 ó@   ‡— t        dt        ˆfd„| D «       «      «      S )Nr
   c              3   ó„   •K  — | ]7  }t        |j                  ‰�‰j                  |j                  «      nd «      –— Œ9 y ­wr!   )r"   r$   ÚcolumnÚname)r&   r#   r   s     €r   r(   z*_estimate_bytes_per_row.<locals>.<genexpr>X   s>   øè ø€ ò 
ð ô "Ø—
‘
¸Ð9K˜FŸM™M¨%¯*©*Ô5ÐQU÷ñ
ùs   ƒ=A )r   r0   )r>   r   s    `r   Ú_estimate_bytes_per_rowrC   S   s,   ø€ ô Ø	Üó 
ð  ô	
ó 	
óð r   Úhead.c                 óp   — 	  | t         t         dd¬«      }|j                  dkD  r|S dS # t        $ r Y yw xY w)aT  Best-effort peek at a few rows to refine the bytes-per-row estimate.

    Uses a tight batch size and no read-ahead so the peek itself can't trigger
    the wide-row memory blowup this module exists to avoid. Returns None (fall
    back to the schema-only estimate) if sampling isn't possible for any
    reason, e.g. an empty dataset.
    r
   ©Ú
batch_sizeÚbatch_readaheadÚfragment_readaheadNr   )Ú_SAMPLE_ROWSÚ	ExceptionÚnum_rows)rD   r   s     r   Ú_sample_headrM   a   sI   € ðÙÜÜ#ØØ ô	
ˆð —_‘_ qÒ(ˆ6Ð2¨dÐ2øô ò Ùðús   ‚) ©	5´5c                 óÄ   — t        | |«      }t        |z  t        t        z   z  }|t        k  ri S t        t        t        t        t        |z  «      «      }|t        t        dœS )a�  Scanner kwargs that cap in-flight memory for wide rows.

    Narrow datasets keep pyarrow's defaults unchanged (no throughput
    regression). For wide rows (e.g. embedding columns) pyarrow's default
    read-ahead buffers many large batches/row-groups at once, which can OOM the
    client during bulk ingestion, so we shrink the batch size and read-ahead to
    keep the estimated in-flight memory near the budget.

    Read-ahead (not just batch size) has to drop: pyarrow reads a whole parquet
    row group at a time and keeps `batch_readahead`/`fragment_readahead` of them
    resident, so a small batch size alone still pins large row-group buffers.

    `sample`, if given, is a small (see `_SAMPLE_ROWS`) table of rows from the
    source used to refine the estimate for variable-length list columns (e.g.
    embeddings stored without a fixed size), whose width the schema alone
    can't tell us.
    rF   )rC   Ú_PA_DEFAULT_BATCH_ROWSÚ_PA_DEFAULT_BATCH_READAHEADÚ_PA_DEFAULT_FRAGMENT_READAHEADÚ_SCAN_MEMORY_BUDGET_BYTESÚminr   Ú_MIN_BATCH_ROWSÚ_TARGET_BATCH_BYTESÚ_WIDE_BATCH_READAHEADÚ_WIDE_FRAGMENT_READAHEAD)r>   r   Úbytes_per_rowÚdefault_in_flightrG   s        r   Ú_bounded_scanner_kwargsrZ   u   su   € ô( ,¨F°FÓ;€Mô 	Ø
ñ	ä&Ô)GÑGñ	Ið ð
 Ô5Ò5Øˆ	ô ÜÜŒOÔ0°MÑAÓBó€Jð
 !Ü0Ü6ñð r   c                   ór   — e Zd ZU ej                  ed<   ee   ed<   eg ej                  f   ed<   dZ
eed<   y)Ú	Scannabler>   rL   ÚreaderTÚrescannableN)Ú__name__Ú
__module__Ú__qualname__r*   ÚSchemaÚ__annotations__r   Úintr   ÚRecordBatchReaderr^   Úbool© r   r   r\   r\   £   s8   … à�I‰IÓØ�s‰mÓà�R˜×-Ñ-Ð-Ñ.Ó.ð €K�Ôr   r\   c                 óp   — t        | d«      rt        t        | «      «      S t        dt	        | «      › �«      ‚)NÚ__iter__z&to_scannable not implemented for type )ÚhasattrÚ_from_iterableÚiterÚNotImplementedErrorr$   ©Údatas    r   Úto_scannablerp   ¯   s4   € ô ˆt�ZÔ Üœd 4›jÓ)Ð)Ü
Ð FÄtÈDÃzÀlÐSÓ
TÐTr   ro   c                 ó<   ‡ — t        ‰ j                  d ˆ fd„d¬«      S )Nc                  ó   •— ‰ S r!   rg   rn   s   €r   ú<lambda>z_from_reader.<locals>.<lambda>»   s   ø€ ¸$€ r   F©r>   rL   r]   r^   )r\   r>   rn   s   `r   Ú_from_readerru   ·   s   ø€ ô Ø�{‰{ T³,ÈEôð r   c                 óN   ‡ — t        ‰ j                  ‰ j                  ˆ fd„¬«      S )Nc                  óZ   •— t         j                  j                  ‰ j                  ‰ g«      S r!   )r*   re   Úfrom_batchesr>   rn   s   €r   rs   z_from_batch.<locals>.<lambda>Ä   s    ø€ ”r×+Ñ+×8Ñ8¸¿¹ÀtÀfÓM€ r   ©r>   rL   r]   )r\   r>   rL   rn   s   `r   Ú_from_batchrz   ¿   s!   ø€ äØ�{‰{Ø—‘ÛMôð r   c                 óZ   — t        | j                  | j                  | j                  ¬«      S ©Nry   )r\   r>   rL   Ú	to_readerrn   s    r   Ú_from_tabler~   È   s   € ä˜DŸK™K°$·-±-ÈÏÉÔWÐWr   c                 ó°   ‡ ‡— t        ‰ j                  «      }t        ‰ j                  |«      Št	        ‰ j                  ‰ j                  «       ˆ ˆfd„¬«      S )Nc                  óD   •—  ‰ j                   di ‰¤Žj                  «       S ©Nrg   ©Úscannerr}   ©ro   Úscanner_kwargss   €€r   rs   z_from_dataset.<locals>.<lambda>Ô   s   ø€ �|�t—|‘|Ñ5 nÑ5×?Ñ?ÓA€ r   ry   ©rM   rD   rZ   r>   r\   Ú
count_rows©ro   r   r…   s   ` @r   Ú_from_datasetr‰   Í   sB   ù€ ä˜$Ÿ)™)Ó$€FÜ,¨T¯[©[¸&ÓA€NÜØ�{‰{Ø—‘Ó"ÜAôð r   c                 óH   — t        | j                  d | j                  d¬«      S )NFrt   )r\   Úprojected_schemar}   rn   s    r   Ú_from_scannerrŒ   Ø   s'   € ô Ø×$Ñ$ØØ�~‰~Øô	ð r   c                 óŠ   — | st        d«      ‚t        | «      }t        |j                  |j                  |j
                  ¬«      S )Nz4Cannot create table from empty list without a schemary   )r:   r	   r\   r>   rL   r}   ©ro   Útables     r   Ú
_from_listr�   ã   s:   € áÜÐOÓPÐPÜ�T‹N€EÜØ�|‰| e§n¡n¸U¿_¹_ôð r   c                 ó   — t        d«      ‚)NzWCannot create or add rows from a single dictionary. Use a list of dictionaries instead.©r:   rn   s    r   Ú
_from_dictr“   í   s   € ä
ð	.óð r   c                 ó   — t        d«      ‚)Nz6Cannot add a single LanceModel to a table. Use a list.r’   rn   s    r   Ú_from_lance_modelr•   õ   s   € ä
ÐMÓ
NÐNr   c                 óÖ   ‡ ‡‡— t        ‰ d «      }|€t        d«      ‚t        |«      Š‰j                  Šˆ ˆˆfd„}t        j
                  j                  ‰ |«       «      }t        |«      S )Nz'Cannot create table from empty iteratorc               3   óT  •K  — ‰j                  «       E d {  –—†  ‰D ]F  } t        | «      }|j                  ‰k7  r	 |j                  ‰«      }|j                  «       E d {  –—†  ŒH y 7 ŒP# t        j
                  j                  $ r t        d‰› d|j                  › �«      ‚w xY w7 ŒE­w)NzfInput iterator yielded a batch with schema that does not match the schema of other batches.
Expected:
z
Got:
)Ú
to_batchesr	   r>   Úcastr*   ÚlibÚArrowInvalidr:   )ÚitemÚbatchro   Úfirstr>   s     €€€r   rl   z_from_iterable.<locals>.iter  s°   øè ø€ Ø×#Ñ#Ó%×%Ð%Øò 	*ˆDÜ˜T“NˆEØ�|‰|˜vÒ%ðØ!ŸJ™J vÓ.�Eð ×'Ñ'Ó)×)Ñ)ñ	*ð 	&ùô —v‘v×*Ñ*ò Ü$ð&à&, X¨X°e·l±l°^ðEóð ðúð *ús2   ƒB(—A(˜#B(¼A*ÁB(Á B&Á!B(Á*9B#Â#B()Únextr:   r	   r>   r*   re   rx   rp   )ro   Ú
first_itemrl   r]   rž   r>   s   `   @@r   rk   rk   ú   s`   ú€ Ü�d˜DÓ!€JØÐÜÐBÓCÐCÜ�ZÓ €EØ�\‰\€Fö*ô ×!Ñ!×.Ñ.¨v±t³vÓ>€FÜ˜ÓÐr   Ú_registered_modulesc              #   óî   K  — | j                   €#| j                  j                  «       E d {  –—†  y | j                  d«      j	                  d¬«      D ]  }|j                  «       E d {  –—†  Œ y 7 ŒD7 Œ	­w)NÚarrowiè  )rG   )Ú_indicesro   r˜   Úwith_formatrl   rŽ   s     r   Ú_hf_batchesr¦     sk   è ø€ Ø‡}�}ÐØ—9‘9×'Ñ'Ó)×)Ñ)à×%Ñ% gÓ.×3Ñ3¸tÐ3ÓDò 	*ˆEØ×'Ñ'Ó)×)Ñ)ñ	*ð 	*øð *ús!   ‚*A5¬A1­<A5Á)A3Á*A5Á3A5c                  ó  ‡— dt         j                  v r�dt        vr•t        j                  d«       ddl} t        j                  | j                  «      d| j                  dt        j                  fd„«       Št        j                  | j                  «      d| j                  dt        fˆfd„«       }dt         j                  v rÓdt        vrËt        j                  d«       ddl}t        j                  |j                  «      d|j                  dt        j                  fd	„«       }t        j                  |j                  «      d|j                  dt        fd
„«       }t        j                  |j                  «      d|j                  dt        fd„«       }dt         j                  v rqdt        vrit        j                  d«       ddlm} ddlm} t        j                  |«      d|dt        fd„«       }t        j                  |«      d|dt        fd„«       }	dt         j                  v r[dt        vrRt        j                  d«       ddl}
t        j                  |
j$                  «      d|
j$                  dt        fd„«       }yyy)zHRegister converters for optional dependencies that are already imported.Úpandasr   Nro   r   c                 óf   — t         j                  j                  | d¬«      }|j                  d «      S )NF)Úpreserve_index)r*   ÚTableÚfrom_pandasÚreplace_schema_metadatarŽ   s     r   Ú_arrow_from_pandasz9_register_optional_converters.<locals>._arrow_from_pandas&  s,   € ä—H‘H×(Ñ(¨¸eÐ(ÓDˆEØ×0Ñ0°Ó6Ð6r   c                 ó&   •— t         ‰| «      «      S r!   )rp   )ro   r®   s    €r   Ú_from_pandasz3_register_optional_converters.<locals>._from_pandas+  s   ø€ äÑ 2°4Ó 8Ó9Ð9r   Úpolarsc                 ó"   — | j                  «       S r!   r   rn   s    r   Ú_arrow_from_polarsz9_register_optional_converters.<locals>._arrow_from_polars3  s   € à—=‘=“?Ð"r   c                 óx   — | j                  «       }t        |j                  t        | «      |j                  ¬«      S r|   )r	   r\   r>   r   r}   ©ro   r£   s     r   Ú_from_polarsz3_register_optional_converters.<locals>._from_polars7  s-   € à—M‘M“OˆEÜØ—|‘|¬c°$«iÀÇÁôð r   c                 ó–   — | j                  «       j                  «       }t        |j                  |j                  |j
                  ¬«      S r|   )Úcollectr	   r\   r>   rL   r}   rµ   s     r   Ú_from_polars_lazyz8_register_optional_converters.<locals>._from_polars_lazy>  s6   € à—L‘L“N×+Ñ+Ó-ˆEÜØ—|‘|¨e¯n©nÀUÇ_Á_ôð r   Údatasets)ÚDataset)ÚDatasetDictc                 ó¶   ‡ ‡— ‰ j                   j                  Št        ‰j                  t	        ‰ «      ‰ j
                  €‰j                  ¬«      S ˆ ˆfd„¬«      S )Nc                  ój   •— t         j                  j                  ‰j                  t	        ‰ «      «      S r!   )r*   re   rx   r>   r¦   rŽ   s   €€r   rs   zI_register_optional_converters.<locals>._from_hf_dataset.<locals>.<lambda>S  s&   ø€ ¤×!5Ñ!5×!BÑ!BØŸ™¤k°$Ó&7ó"€ r   ry   )ro   r�   r\   r>   r   r¤   r}   rŽ   s   `@r   Ú_from_hf_datasetz7_register_optional_converters.<locals>._from_hf_datasetJ  sO   ù€ à—I‘I—O‘OˆEÜØ—|‘|Ü˜T›ð —}‘}Ð,ð —O‘Oô	
ð 
ôô
ð 
r   c                 óh  ‡ ‡‡— ‰ t        ‰ j                  «       «      d      j                  j                  Šd‰j                  vr7‰j                  t        j                  dt        j                  «       «      «      Šˆ ˆfd„Št        d„ ‰ j                  «       D «       «      }t        ‰|ˆˆfd„¬«      S )Nr   Úsplitc               3   ó>  •K  — ‰j                  «       D ]…  \  } }t        |«      D ]r  }t        j                  | gt	        |«      z  t        j
                  «       ¬«      }t        j                  j                  t        |j                  «      |gz   ‰¬«      –— Œt Œ‡ y ­w)N)r$   )r>   )
Úitemsr¦   r*   Úarrayr   ÚstringÚRecordBatchÚfrom_arraysÚlistÚcolumns)Ú
split_nameÚdatasetr�   Ú	split_arrro   r>   s       €€r   ÚgenzI_register_optional_converters.<locals>._from_hf_dataset_dict.<locals>.gen`  sŒ   øè ø€ Ø+/¯:©:«<ò Ñ'�J Ü!,¨WÓ!5ò ˜Ü$&§H¡HØ'˜L¬3¨u«:Ñ5¼B¿I¹I»Kô%˜	ô !Ÿn™n×8Ñ8Ü  §¡Ó/°9°+Ñ=Àfð 9ó ó ñ	ñùs   ƒBBc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr!   )r   )r&   rË   s     r   r(   zO_register_optional_converters.<locals>._from_hf_dataset_dict.<locals>.<genexpr>j  s   è ø€ ÒG¨gœS Ÿ\ÑGùs   ‚c                  óN   •— t         j                  j                  ‰ ‰ «       «      S r!   )r*   re   rx   )rÍ   r>   s   €€r   rs   zN_register_optional_converters.<locals>._from_hf_dataset_dict.<locals>.<lambda>n  s   ø€ œr×3Ñ3×@Ñ@ÀÉËÓO€ r   ry   )rÈ   ÚkeysÚfeaturesÚarrow_schemaÚnamesÚappendr*   r#   rÅ   r0   Úvaluesr\   )ro   Ú
total_rowsrÍ   r>   s   ` @@r   Ú_from_hf_dataset_dictz<_register_optional_converters.<locals>._from_hf_dataset_dictY  s‰   ú€ ð œ$˜tŸy™y›{Ó+¨AÑ.Ñ/×8Ñ8×EÑEˆFØ˜fŸl™lÑ*ØŸ™¤r§x¡x°¼¿¹»Ó'EÓF�õô ÑG¸¿¹»ÔGÓGˆJÜØØ#ÜOôð r   Úlancec                 ó°   ‡ ‡— t        ‰ j                  «      }t        ‰ j                  |«      Št	        ‰ j                  ‰ j                  «       ˆ ˆfd„¬«      S )Nc                  óD   •—  ‰ j                   di ‰¤Žj                  «       S r�   r‚   r„   s   €€r   rs   zD_register_optional_converters.<locals>._from_lance.<locals>.<lambda>|  s   ø€ ˜|˜tŸ|™|Ñ=¨nÑ=×GÑGÓI€ r   ry   r†   rˆ   s   ` @r   Ú_from_lancez2_register_optional_converters.<locals>._from_lanceu  sB   ù€ ä! $§)¡)Ó,ˆFÜ4°T·[±[À&ÓIˆNÜØ—{‘{ØŸ™Ó*ÜIôð r   )ÚsysÚmodulesr¡   Úaddr¨   r	   ÚregisterÚ	DataFramer*   r«   rp   r\   r±   Ú	LazyFramerº   r»   r¼   rØ   ÚLanceDataset)Úpdr°   Úplr³   r¶   r¹   Ú	HFDatasetÚHFDatasetDictr¿   r×   rØ   rÛ   r®   s               @r   Ú_register_optional_convertersrç     sG  ø€ ð ”3—;‘;Ñ 8Ô3FÑ#FÜ×Ñ Ô)Ûä	×	Ñ	˜2Ÿ<™<Ó	(ð	7 R§\¡\ð 	7´b·h±hò 	7ó 
)ð	7ô 
×	Ñ	˜rŸ|™|Ó	,ð	:˜rŸ|™|ð 	:´	ô 	:ó 
-ð	:ð ”3—;‘;Ñ 8Ô3FÑ#FÜ×Ñ Ô)Ûä	×	Ñ	˜2Ÿ<™<Ó	(ð	# R§\¡\ð 	#´b·h±hò 	#ó 
)ð	#ô 
×	Ñ	˜rŸ|™|Ó	,ð	˜rŸ|™|ð 	´	ò 	ó 
-ð	ô 
×	Ñ	˜rŸ|™|Ó	,ð	 B§L¡Lð 	´Yò 	ó 
-ð	ð ”S—[‘[Ñ  ZÔ7JÑ%JÜ×Ñ 
Ô+Ý1Ý9ä	×	Ñ	˜yÓ	)ð	 9ð 	´ò 	ó 
*ð	ô 
×	Ñ	˜}Ó	-ð	¨ð 	¼)ò 	ó 
.ð	ð. ”#—+‘+Ñ 'Ô1DÑ"DÜ×Ñ Ô(Ûä	×	Ñ	˜u×1Ñ1Ó	2ð	˜e×0Ñ0ð 	´Yò 	ó 
3ñ	ð #EÐr   r!   )AÚdataclassesr   Ú	functoolsr   rÜ   Útypingr   r   r   Úlancedb.arrowr	   Úpyarrowr*   Úpyarrow.computeÚcomputer   Úpyarrow.datasetrË   ÚdsÚpydanticr   rR   rU   rT   rO   rP   rQ   rV   rW   r<   rJ   ÚChunkedArrayrd   r   ÚDataTyper"   rb   r«   rC   rM   ÚdictrZ   r\   rp   rß   re   ru   rÆ   rz   r~   r»   r‰   ÚScannerrŒ   rÈ   r�   r“   r•   rk   Úsetr¡   Ústrrc   r¦   rç   rg   r   r   ú<module>rø      sH  ðö "Ý $Û 
ß /Ñ /Ý "Û Ý Ý å  ð /Ð Ø&Ð Ø€à Ð Ø Ð Ø!"Ð ð
 Ð ØÐ ð Ð ð €ð9 "§/¡/ð 9°h¸s±mó 9ð =Añ(Ø�;‰;ð(Ø (¨¯©Ñ 9ð(àó(ðD 59ñØ�I‰IðØ'¨¯©Ñ1ðàóð3�x  R§X¡X Ñ.ð 3°8¸B¿H¹HÑ3Eó 3ð* 59ñ+Ø�I‰Ið+Ø'¨¯©Ñ1ð+à	ó+ð\ ÷ð ó ðð ðU˜)ò Uó ðUð ×Ñ�r×+Ñ+Ó,ð�r×+Ñ+ð °	ò ó -ðð ×Ñ�r—~‘~Ó&ð�b—n‘nð ¨ò ó 'ðð ×Ñ�r—x‘xÓ ðX�b—h‘hð X 9ò Xó !ðXð ×Ñ�r—z‘zÓ"ð˜Ÿ
™
ð  yò ó #ðð ×Ñ�r—z‘zÓ"ð˜Ÿ
™
ð  yò ó #ðð ×Ñ�tÓð�Tð ˜iò ó ðð ×Ñ�tÓð�Tð ˜iò ó ðð ×Ñ�zÓ"ðO˜Jð O¨9ò Oó #ðOð ˜ð   ió  ñ4 !$£Ð �S˜‘XÓ %ò*ò^ñD Õ r   