Ë
    	¯éh:  ã                   óX
  — d Z ddlZddlZddlmZ ddlmZ ddlZddlm	Z	 ddl
mZmZ ddlmZ dd	lmZ  ej"                  «        ej$                  d
¬«      d„ «       «       Zej)                  «        ej*                  d ej                  d¬«      ¬«       ej,                  dddd¬«       ej,                  dd ej.                  eD � cg c]  } | j0                  ‘Œ c} «      d¬«       ej,                  ddd¬«       ej,                  dded ¬!«       ej,                  d"d#dd$¬%«      ded&ed'ee   d(ee   d)ed*efd+„«       «       «       «       «       «       «       Zej)                  «        ej*                  d, ej                  dd-d¬.«      ¬«       ej,                  dddd/¬«       ej,                  dd ej.                  eD � cg c]  } | j0                  ‘Œ c} «      d0¬«       ej,                  ddd1¬«       ej,                  dded2¬!«       ej,                  d3d4d5¬«      d,ed&ed'ee   d(ee   d)ed6efd7„«       «       «       «       «       «       «       Zej)                  «        ej,                  dd ej.                  eD � cg c]  } | j0                  ‘Œ c} «      d8¬«       ej,                  d9d:dd;¬%«      d'ee   d<efd=„«       «       «       Zej#                  «       d>„ «       Zej)                  «        ej,                  d?dd@¬%«       ej,                  d"d#dd$¬%«      dAed*efdB„«       «       «       Z ej)                  «        ej*                  dC ej                  d¬«      ¬«       ej,                  dDddE¬%«       ej,                  d"d#dd$¬%«      dCedFed*efdG„«       «       «       «       Z!ej)                  «        ej*                  d, ej                  dd-d¬.«      ¬«       ej,                  d3dHdI¬«       ej,                  dDddE¬%«       ej,                  d"d#dd$¬%«      d,ed6edFed*efdJ„«       «       «       «       «       Z"ej)                  «        ej,                  d"d#dd$¬%«      d*efdK„«       «       Z#ej)                  «        ej,                  d ej.                  dLdMg«      dN¬«       ej,                  dO ej.                  dPdQg«      dR¬«       ej,                  dSdTedU¬!«       ej,                  d"d#dd$¬%«      d'ee   dVee   dWed*efdX„«       «       «       «       «       Z$dY„ Z%e&dZk(  r e%«        yyc c} w c c} w c c} w )[z3
Command-line interface for Quber table inference.
é    N)ÚPath)ÚOptional)Úloggeré   )ÚModelConfigÚModelProvider)ÚTableInferenceProcessor)ÚConfigz0.2.5)Úversionc                   ó   — y)z7Quber - Advanced table extraction and inference system.N© r   ó    ú'/home/mande/repo/quber/src/quber/cli.pyÚclir      s   € ð 	r   Úpdf_pathT)Úexists)Útypez--output-dirz-oÚoutputz"Output directory (default: output))ÚdefaultÚhelpz
--providerz-pz6Model provider to use (auto-detected if not specified))r   r   z--modelz-mz>Specific model to use (uses provider default if not specified))r   z--max-concurrenté   z.Maximum concurrent table analyses (default: 5))r   r   r   z	--verbosez-vzEnable verbose logging)Úis_flagr   Ú
output_dirÚproviderÚmodelÚmax_concurrentÚverbosec                 óÎ  ‡ ‡‡— |rdnd}t        j                  «        t        j                  t        j                  |¬«       t        j                  «       }||_        ||_        |rt        |«      nd}	 t        |||¬«      Št        j                  d
‰ › �«       ˆˆ ˆfd„}
t        j                    |
«       «      \  }}}t        j                  d«       t        j                  d|d   › d�«       t        j                  d|› �«       t        j                  d|› �«       y# t        $ r9}	t        j                  d|	› �d¬«       t        j                  d	«       Y d}	~	ŒÜd}	~	ww xY w)zÆ
    Analyze tables in a PDF document with LLM inference.

    Example:
        quber analyze document.pdf
        quber analyze document.pdf --provider anthropic --model claude-3-opus-20240229
    ÚDEBUGÚINFO©ÚlevelN©r   r   ÚconfigúError: T©Úerrr   z
Analyzing: c               “   ó”  •K  — 	 ‰j                  ‰«      ƒ d {  –—† } t        ‰«      }|j                  dd¬«       t        ‰«      j                  }||› d�z  }||› d�z  }‰j	                  | t        |«      «       ‰j                  | t        |«      «       | ||fS 7 Œ‚# t        $ r}t        j                  d|› �«       ‚ d }~ww xY w­w)NT©ÚparentsÚexist_okú_analysis.jsonú_summary.mdzAnalysis failed: )
Úprocess_documentr   ÚmkdirÚstemÚ	save_jsonÚstrÚsave_summaryÚ	Exceptionr   Úerror)	ÚresultsÚoutput_pathÚ	base_nameÚ	json_fileÚsummary_fileÚer   r   Ú	processors	         €€€r   Úrun_analysiszanalyze.<locals>.run_analysisM   s×   øè ø€ ð	Ø%×6Ñ6°xÓ@×@ˆGô ˜zÓ*ˆKØ×Ñ d°TÐÔ:ô ˜X›×+Ñ+ˆIØ#¨¨°>Ð&BÑBˆIØ&¨I¨;°kÐ)BÑBˆLð ×Ñ ¬¨Y«Ô8Ø×"Ñ" 7¬C°Ó,=Ô>à˜I |Ð3Ð3ð Aùô  ò 	Ü�L‰LÐ,¨Q¨CÐ0Ô1Øûð	üs9   ƒC…B ™BšBB ÂCÂB Â	CÂ'C Ã CÃCu   
âœ“ Analysis completez
  - Found Útotal_tablesú tablesz  - JSON output: z  - Summary: )r   ÚremoveÚaddÚsysÚstderrr
   ÚloadÚ	log_levelÚmax_concurrent_tablesr   r	   Ú
ValueErrorÚclickÚechoÚexitÚasyncioÚrun)r   r   r   r   r   r   rE   r$   Úprovider_enumr;   r=   r6   r9   r:   r<   s   ``            @r   ÚanalyzerN      s"  ú€ ñ< #‘¨€IÜ
‡M�M„OÜ
‡J�JŒs�z‰z Õ+ô �[‰[‹]€FØ €FÔØ#1€FÔ ñ 08”M (Ô+¸T€MðÜ+°]È%ÐX^Ô_ˆ	ô 
‡J�J�˜x˜jÐ)Ô*öô, (/§{¡{±<³>Ó'BÑ$€GˆY˜ô 
‡J�JÐ(Ô)Ü	‡J�J�˜G NÑ3Ð4°GÐ<Ô=Ü	‡J�JÐ" 9 +Ð.Ô/Ü	‡J�J�˜|˜nÐ-Õ.øôG ò Ü�
‰
�W˜Q˜C�= dÕ+Ü�‰��‰ûðús   Á5D" Ä"	E$Ä+/EÅE$Ú	directoryF)r   Ú	file_okayÚdir_okayz.Output directory for results (default: output)zModel provider to usezSpecific model to usez;Maximum concurrent table analyses per document (default: 5)z	--patternz*.pdfz&File pattern to match (default: *.pdf)Úpatternc                 ó†  ‡‡‡— t        j                  «       }||_        t        | «      }t	        |j                  |«      «      Š‰s/t        j                  d|› �d¬«       t        j                  d«       t        j                  dt        ‰«      › d�«       t        |«      Š‰j                  dd¬«       |rt        |«      nd}	 t        |||¬	«      Šˆˆˆfd„}
t        j                    |
«       «      }t        |«      }t#        d„ |D «       «      }t        j                  d«       t        j                  d|› dt        ‰«      › d�«       t        j                  d|› d�«       t        j                  d|› d�«       y# t        $ r9}	t        j                  d
|	› �d¬«       t        j                  d«       Y d}	~	Œèd}	~	ww xY w)z¬
    Process multiple PDF documents in a directory.

    Example:
        quber batch documents/
        quber batch documents/ --pattern "*.pdf" --output-dir results/
    z!No files found matching pattern: Tr&   r   úFound z PDF files to processr)   Nr#   r%   c               “   óF  •K  — g } ‰D ]Æ  }t        j                  d|j                  › �«       	 ‰	j                  t	        |«      «      ƒ d {  –—† }|j
                  }‰|› d�z  }‰|› d�z  }‰	j                  |t	        |«      «       ‰	j                  |t	        |«      «       t        j                  d|d   › d�«       | j                  |«       ŒÈ | S 7 Œ‡# t        $ r@}t        j                  d|› �d¬	«       t        j                  d
|› d|› �«       Y d }~�Œd }~ww xY w­w)Nz
Processing: r,   r-   u     âœ“ r>   z tables analyzedu     âœ— Failed: Tr&   zFailed to process ú: )rH   rI   Únamer.   r2   r0   r1   r3   Úappendr4   r   r5   )
r6   Úpdf_fileÚresultr8   Ú	json_pathÚsummary_pathr;   r7   Ú	pdf_filesr<   s
          €€€r   Úprocess_batchzbatch.<locals>.process_batch¨   s  øè ø€ ØˆÛ!ˆHÜ�J‰J˜¨¯© Ð7Ô8ðCØ(×9Ñ9¼#¸h»-ÓH×H�ð %ŸM™M�	Ø'¨Y¨K°~Ð*FÑF�	Ø*°	¨{¸+Ð-FÑF�à×#Ñ# F¬C°	«NÔ;Ø×&Ñ& v¬s°<Ó/@ÔAä—
‘
˜V F¨>Ñ$:Ð#;Ð;KÐLÔMØ—‘˜vÕ&ð "ð( ˆð# Iùô ò CÜ—
‘
˜^¨A¨3Ð/°TÕ:Ü—‘Ð1°(°¸2¸a¸SÐA×BÒBûðCüsA   ƒ*D!®CÁCÁBCÃD!ÃCÃ	DÃ5DÄD!ÄDÄD!c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r>   Nr   )Ú.0Úrs     r   Ú	<genexpr>zbatch.<locals>.<genexpr>Ä   s   è ø€ Ð:±'¨Q�q˜Õ(±'ùs   ‚u   
âœ“ Batch processing complete!z  - Processed Ú/z
 documentsz  - Analyzed ú total tablesz  - Results saved to: )r
   rD   rF   r   ÚlistÚglobrH   rI   rB   rJ   Úlenr/   r   r	   rG   rK   rL   Úsum)rO   r   r   r   r   rR   r$   Údir_pathrM   r;   r^   r6   Útotal_documentsr>   r7   r]   r<   s                 @@@r   Úbatchrk   l   sx  ú€ ô@ �[‰[‹]€FØ#1€FÔ ô �I‹€HÜ�X—]‘] 7Ó+Ó,€IáÜ�
‰
Ð6°w°iÐ@ÀdÕKÜ�‰�Œä	‡J�J�œ˜I›Ð'Ð'<Ð=Ô>ô �zÓ"€KØ×Ñ˜d¨TÐÔ2ñ 08”M (Ô+¸T€MðÜ+°]È%ÐX^Ô_ˆ	öô0 �k‰k™-›/Ó*€Gô ˜'“l€OÜÑ:±'Ó:Ó:€Lä	‡J�JÐ1Ô2Ü	‡J�J� Ð0°´#°i³.Ð1AÀÐLÔMÜ	‡J�J�˜|˜n¨MÐ:Ô;Ü	‡J�JÐ'¨
 |°1Ð5Õ6øôM ò Ü�
‰
�W˜Q˜C�= dÕ+Ü�‰��‰ûðús   ÃE> Å>	G Æ/F;Æ;G z&Show models for specific provider onlyz--allz-az"Show all models (can be very long)Úallc                 óV  — ddl m}  |d¬«      }|j                  «       }| rt        | «      g}nt	        t        «      }t        j                  d«       t        j                  d«       t        j                  d«       t        j                  d«       |D �]'  }|j                  |«      }|j                  |v }|rd	nd
}	t        j                  d|j                  j                  «       › d|	› �«       t        j                  d«       ||j                     }
|s"t        |
«      dkD  r|
dd }t        |
«      dz
  }n|
}d}|D ][  }|t        j                  j                  |«      k(  rdnd}t        |«      dkD  r	|dd dz   }n|}t        j                  d|› |› �«       Œ] |dkD  s�Œt        j                  d|› d�«       �Œ* |sit        j                  d«       t        D ]J  }t        j                  j                  |«      }|sŒ%t        j                  d|› d|j                  › d�«       ŒL yy)z(List available models for each provider.r   )ÚAgentFactoryF)Úenable_logfirez%Model Providers and Available Models:ú2==================================================z?
Note: You can use any model name directly, even if not listed.z?The list below shows commonly used models from known_models.py
u   âœ“ (API key found)u   âœ— (no API key)Ú
Ú z(----------------------------------------é
   Nr   z
 (default)Ú é<   é9   z...õ     â€¢ z
  ... and z# more models (use --all to see all)u9   
âš  No API keys found. Please set environment variables:z (for Ú))Úagentsrn   Úget_available_providersr   re   rH   rI   Úlist_available_modelsÚvalueÚupperrg   r   ÚDEFAULT_MODELSÚgetÚAPI_KEY_VARS)r   rl   rn   ÚfactoryÚ	availableÚproviders_to_showÚpÚmodelsÚis_availableÚstatusÚ
model_listÚdisplay_modelsÚ	remainingr   r   Úmodel_displayÚkey_vars                    r   r…   r…   Ì   sî  € õ %á¨%Ô0€Gð ×/Ñ/Ó1€Iñ Ü*¨8Ó4Ð5Ñä ¤Ó/Ðä	‡J�JÐ6Ô7Ü	‡J�JˆxÔÜ	‡J�JÐQÔRÜ	‡J�JÐQÔRäˆØ×.Ñ.¨qÓ1ˆØ—w‘w )Ð+ˆá*6Ñ&Ð<NˆÜ�
‰
�R˜Ÿ™Ÿ™›Ð(¨¨&¨Ð2Ô3Ü�
‰
�8Ôà˜AŸG™G‘_ˆ
ñ ”s˜:“¨Ò+Ø'¨¨˜_ˆNÜ˜J›¨"Ñ,‰Ià'ˆNØˆIã#ˆEØ&+¬{×/IÑ/I×/MÑ/MÈaÓ/PÒ&P‘lÐVXˆGä�5‹z˜BŠØ % c r 
¨UÑ 2‘à %�Ü�J‰J˜ ˜¨w¨iÐ8Õ9ð $ð �qŒ=Ü�J‰J˜ I ;Ð.QÐRÖSð9 ñ< Ü�
‰
ÐOÔPßˆAÜ!×.Ñ.×2Ñ2°1Ó5ˆGÚÜ—
‘
˜V G 9¨F°1·7±7°)¸1Ð=Õ>ñ ð r   c                   ó   — y)zDatabase management commands.Nr   r   r   r   ÚdbrŽ     s   € ð 	r   z--dropz9Drop existing tables before creating (WARNING: data loss)Údropc                 ó”  — ddl m}m} |rdnd}t        j                  «        t        j
                  t        j                  |¬«       t        j                  d«       	  |«       } ||| ¬«       t        j                  d«       y# t        $ r9}t        j                  d	|› �d
¬«       t        j                  d«       Y d}~yd}~ww xY w)zInitialize the database schema.r   )Ú
get_engineÚinit_dbr   r    r!   zInitializing database...)Údrop_allu%   âœ“ Database initialized successfullyu#   âœ— Failed to initialize database: Tr&   N)Údb.connectionr‘   r’   r   r@   rA   rB   rC   rH   rI   r4   rJ   )r�   r   r‘   r’   rE   Úenginer;   s          r   Úinitr–     sŽ   € ÷
 3á"‘¨€IÜ
‡M�M„OÜ
‡J�JŒs�z‰z Õ+ä	‡J�JÐ)Ô*ðÙ“ˆÙ� Õ&Ü�
‰
Ð:Õ;øÜò Ü�
‰
Ð8¸¸Ð<À$ÕGÜ�‰��‰ûðús   Á&B Â	CÂ/CÃCr[   z--generate-embeddingsz!Generate embeddings during importÚgenerate_embeddingsc                 ó�  — ddl m} |rdnd}t        j                  «        t        j                  t
        j                  |¬«       	  || |¬«      \  }}|rdnd}t        j                  d	|j                  › d
|› d|› �«       y# t        $ r9}t        j                  d|› �d¬«       t        j                  d«       Y d}~yd}~ww xY w)z5Import a single JSON analysis file into the database.r   )Úimport_json_filer   r    r!   )r—   ú with embeddingsrt   õ   âœ“ Imported rV   r?   õ   âœ— Import failed: Tr&   N)Údb.importerr™   r   r@   rA   rB   rC   rH   rI   Úfilenamer4   rJ   )	r[   r—   r   r™   rE   ÚdocÚtable_countÚemb_msgr;   s	            r   Úimport_jsonr¢   )  s¢   € õ .á"‘¨€IÜ
‡M�M„OÜ
‡J�JŒs�z‰z Õ+ðÙ+¨IÐK^Ô_Ñˆˆ[Ù(;Ñ$ÀˆÜ�
‰
�] 3§<¡< .°°;°-¸wÀwÀiÐPÕQøÜò Ü�
‰
Ð(¨¨Ð,°$Õ7Ü�‰��‰ûðúó   Á;B Â	CÂ/C Ã Cz*_analysis.jsonz0File pattern to match (default: *_analysis.json)c                 ó�  — ddl m} |rdnd}t        j                  «        t        j                  t
        j                  |¬«       	  || ||¬«      \  }}|rdnd}t        j                  d	t        |«      › d
|› d|› �«       y# t        $ r9}	t        j                  d|	› �d¬«       t        j                  d«       Y d}	~	yd}	~	ww xY w)z0Import all JSON analysis files from a directory.r   )Úimport_directoryr   r    r!   )rR   r—   rš   rt   r›   z documents with rd   rœ   Tr&   N)r�   r¥   r   r@   rA   rB   rC   rH   rI   rg   r4   rJ   )
rO   rR   r—   r   r¥   rE   Údocsr>   r¡   r;   s
             r   Ú
import_dirr§   >  s§   € õ .á"‘¨€IÜ
‡M�M„OÜ
‡J�JŒs�z‰z Õ+ðÙ-¨iÀÐ^qÔrÑˆˆlÙ(;Ñ$ÀˆÜ�
‰
�]¤3 t£9 +Ð-=¸l¸^È=ÐY`ÐXaÐbÕcøÜò Ü�
‰
Ð(¨¨Ð,°$Õ7Ü�‰��‰ûðúr£   c           
      ó¸  — ddl m} | rdnd}t        j                  «        t        j                  t
        j                  |¬«       	  |«       }t        j                  d«       t        j                  d«       t        j                  d|d	   › �«       t        j                  d
|d   › �«       t        j                  d|d   › �«       |d   rHt        j                  d«       |d   D ]*  }t        j                  d|d   › d|d   › d|d   › d�«       Œ, yy# t        $ r9}t        j                  d|› �d¬«       t        j                  d«       Y d}~yd}~ww xY w)zShow database statistics.r   )Úget_import_statsr   r    r!   z
Database Statisticsrp   zTotal documents: rj   zTotal tables: r>   zAvg tables/doc: Úavg_tables_per_docÚ	documentsz
Documents:rw   rž   rV   Útablesz	 tables, Úpagesz pagesu   âœ— Failed to retrieve stats: Tr&   N)r�   r©   r   r@   rA   rB   rC   rH   rI   r4   rJ   )r   r©   rE   Ú
stats_datarŸ   r;   s         r   Ústatsr¯   T  s-  € õ .á"‘¨€IÜ
‡M�M„OÜ
‡J�JŒs�z‰z Õ+ðÙ%Ó'ˆ
ä�
‰
Ð*Ô+Ü�
‰
�8ÔÜ�
‰
Ð& zÐ2CÑ'DÐ&EÐFÔGÜ�
‰
�^ J¨~Ñ$>Ð#?Ð@ÔAÜ�
‰
Ð% jÐ1EÑ&FÐ%GÐHÔIà�kÒ"Ü�J‰J�~Ô&Ø! +Ô.�Ü—
‘
˜V C¨
¡OÐ#4°B°s¸8±}°oÀYÈsÐSZÉ|ÈnÐ\bÐcÕdñ /ð #øô
 ò Ü�
‰
Ð3°A°3Ð7¸TÕBÜ�‰��‰ûðús   ÁCD Ä	EÄ /EÅEÚlocalÚopenaiz&Embedding provider (default: from env)z--deviceÚcudaÚcpuz&Device for local model (default: cuda)z--batch-sizeé    z'Batch size for processing (default: 32)ÚdeviceÚ
batch_sizec           	      ó†  — ddl m}m}m} |rdnd}t	        j
                  «        t	        j                  t        j                  |¬«       	 t        j                  d«        || |¬«      }t        j                  d«        |«       5 }	|	j                  |«      j                  «       }
t        |
«      }|d	k(  rt        j                  d
«       	 ddd«       yt        j                  d|› d�«       d	}t        |
d«      D ]©  \  }}|j                  sŒ|j                   sŒ |j#                  |j                  |j                   «      }|j%                  «       |_        |j%                  «       |_        |dz  }||z  d	k(  sŒ~|	j+                  «        t        j                  d|› d|› d�«       Œ« |	j+                  «        t        j                  d|› d|› d�«       ddd«       y# 1 sw Y   yxY w# t,        $ rN}t        j                  d|› �d¬«       t	        j.                  |«       t        j0                  d«       Y d}~yd}~ww xY w)z3Generate embeddings for all tables in the database.r   )Úget_embedding_serviceÚget_sessionÚExtractedTabler   r    r!   z!Initializing embedding service...)r   rµ   zLoading tables from database...r   zNo tables found in databaseNrT   z tables to processz  Processed rc   z
 tables...u   âœ“ Generated embeddings for r?   u#   âœ— Failed to generate embeddings: Tr&   )rŽ   r¸   r¹   rº   r   r@   rA   rB   rC   rH   rI   Úqueryrl   rg   Ú	enumerateÚ	llm_titleÚllm_descriptionÚembed_table_metadataÚtolistÚtitle_embeddingÚdescription_embeddingÚcommitr4   Ú	exceptionrJ   )r   rµ   r¶   r   r¸   r¹   rº   rE   Úembedding_serviceÚsessionr¬   ÚtotalÚupdatedÚiÚtableÚ	embeddingr;   s                    r   r—   r—   q  sÕ  € ÷ GÑFá"‘¨€IÜ
‡M�M„OÜ
‡J�JŒs�z‰z Õ+ð(Ü�
‰
Ð6Ô7Ù1¸8ÈFÔSÐä�
‰
Ð4Ô6ÙŒ]˜gØ—]‘] >Ó2×6Ñ6Ó8ˆFÜ˜“KˆEà˜ŠzÜ—
‘
Ð8Ô9Ø÷ ˆ]ô �J‰J˜ ˜wÐ&8Ð9Ô:ð ˆGÜ% f¨aÖ0‘��5Ø—?“? u×'<Ó'<à 1× FÑ FØŸ™¨×)>Ñ)>ó!�Ið
 -6×,<Ñ,<Ó,>�EÔ)Ø2;×2BÑ2BÓ2D�EÔ/Ø˜q‘L�Gà˜:‘~¨Ó*ØŸ™Ô(ÜŸ
™
 \°!°°A°e°W¸JÐ#GÕHð 1ð" �N‰NÔÜ�J‰JÐ6°w°i¸qÀÀÀwÐOÔP÷= �]‰]ûô@ ò Ü�
‰
Ð8¸¸Ð<À$ÕGÜ×Ñ˜ÔÜ�‰��‰ûðúsX   Á;G) ÂAGÃG) Ã9GÄGÄAGÅ:AGÇG) ÇG&Ç"G) Ç&G) Ç)	I Ç2AH;È;I c                  ó   — t        «        y)zMain entry point for the CLI.N)r   r   r   r   ÚmainrÍ   ©  s   € ä…Er   Ú__main__)'Ú__doc__rK   rB   Úpathlibr   Útypingr   rH   Úlogurur   Úagents.factoryr   r   Ú
processorsr	   Úutilsr
   ÚgroupÚversion_optionr   ÚcommandÚargumentÚoptionÚChoicer|   Úintr2   ÚboolrN   rk   r…   rŽ   r–   r¢   r§   r¯   r—   rÍ   Ú__name__)r„   s   0r   Ú<module>rß      s  ðñó Û 
Ý Ý ã Ý ç 6Ý /Ý ð €‡�ƒØ€×Ñ˜gÔ&ñ	ó 'ó ð	ð
 ‡�ƒØ€‡��
  §¡°4Ô!8Ô9Ø€‡�Ø�D (Ð1Uôð €‡�ØØØ	ˆ�‰©Ó6© 1�q—w“w¨Ñ6Ó	7Ø	Aô	ð €‡�ˆi˜Ð$dÔeØ€‡�Ð ¨!°#Ð<lÔmØ€‡�ˆk˜4¨Ð4LÔMðB/ØðB/àðB/ð �s‰mðB/ð �C‰=ð	B/ð
 ðB/ð òB/ó Nó nó fóóó :ó ðB/ðJ ‡�ƒØ€‡�� * %§*¡*°DÀEÐTXÔ"YÔZØ€‡�Ø�D (Ð1aôð €‡�Ø�$˜\˜UŸ\™\¹MÓ*J¹M°q¨1¯7«7¸MÑ*JÓKÐRiôð €‡�ˆi˜Ð$;Ô<Ø€‡�ØØØ	Ø	Fô	ð €‡�ˆk 7Ð1YÔZðM7ØðM7àðM7ð �s‰mðM7ð �C‰=ð	M7ð
 ðM7ð òM7ó [óó =óóó [ó ð M7ð` ‡�ƒØ€‡�ØØØ	ˆ�‰©Ó6© 1�q—w“w¨Ñ6Ó	7Ø	1ô	ð €‡�ˆg�t TÐ0TÔUð7?�X˜c‘]ð 7?¨ò 7?ó Vóó ð7?ðt ‡�ƒñ	ó ð	ð
 ‡�ƒØ€‡�ˆh Ð+fÔgØ€‡�ˆk˜4¨Ð4LÔMðˆtð ˜dò ó Nó hó ðð$ ‡�ƒØ€‡�� * %§*¡*°DÔ"9Ô:Ø€‡�Ð%¨tÐ:]Ô^Ø€‡�ˆk˜4¨Ð4LÔMð˜3ð °Tð ÀDò ó Nó _ó ;ó ðð" ‡�ƒØ€‡�� * %§*¡*°DÀEÐTXÔ"YÔZØ€‡�ˆkÐ#4Ð;mÔnØ€‡�Ð%¨tÐ:]Ô^Ø€‡�ˆk˜4¨Ð4LÔMð˜#ð ¨ð À$ð ÐQUò ó Nó _ó oó [ó ð
ð" ‡�ƒØ€‡�ˆk˜4¨Ð4LÔMð�4ò ó Nó ðð6 ‡�ƒØ€‡�ˆl  §¡¨w¸Ð.AÓ!BÐIqÔrØ€‡�ˆj˜|˜uŸ|™|¨V°U¨OÓ<ÐCkÔlØ€‡�ˆn b¨sÐ9bÔcØ€‡�ˆk˜4¨Ð4LÔMð0 (¨3¡-ð 0¸À#¹ð 0ÐTWð 0Ðbfò 0ó Nó dó mó só ð
0òf
ð
 ˆzÒÙ…Fð ùò[ 7ùòb +Kùò| 7s   ÃTÆ?T"É:T'