+
    UV-jB  ã                   óì
  € ^ RI t ^ RIt^ RIt^ RIt ^ RIt^ RIH	t
 ^ RIHt ^RIHtHt ^RIHtHt ^RIHtHt ^RIHt R t ! R	 R
4      t]! 4       t]! 4       t]P                  ]P8                  4       Rt]P<                  ! 4       sR t ]PB                  ! 4       3R lt"R t#R t$R t%R t&R t']PP                  PS                  RRR7      PU                  RRRRR7      t+] ! 4       t,Rt-Rt.Rt/Rt0]Pb                  ! RR R!7      ;_uu_ 4       t2]Pf                  ! R"4       ]Ph                  ! 4       ;_uu_ 4        ]Pj                  ! ^R#7      ;_uu_ 4        ]Pl                  ! R$],]Pn                  RRR%7      t8RRR4       ]Pj                  ! ^ R#7      ;_uu_ 4        ]Pr                  ! R&R'^^ R(7      t:]Pr                  ! R)R'^^ R(7      t;RRR4       ]Pj                  ! ^R#7      ;_uu_ 4        ]Px                  ! R*R+R,R-7      t=RRR4       RRR4       ]Ph                  ! 4       ;_uu_ 4        ]Pj                  ! ^R#7      ;_uu_ 4        ]P|                  ! R.R,R/7      ;_uu_ 4        ]Ph                  ! 4       ;_uu_ 4        ]P~                  ! ^ ^R0R1R2R3R47      t@]P~                  ! ^€R5^@R6R7R8R47      tARRR4       ]Ph                  ! 4       ;_uu_ 4        ]P~                  ! R1R9R0R9R:R;R47      tB]P~                  ! R9R<R0R9R=R>R47      tCRRR4       ]Ph                  ! 4       ;_uu_ 4        ]Px                  ! R?R@^^RA7      tDRRR4       RRR4       RRR4       ]Pj                  ! ^^ÈRB7      ;_uu_ 4        ]Pr                  ! RCRDR'RE7      tERRR4       RRR4       ]PŒ                  ! ]^RFRG.RH7      tG]P�                  ! ]&]@]A]B]C]D.RR]GRRI7      tI]8P•                  ]"]8.]=]G.RJ7      P—                  R]8.]/RK7       ]:P™                  ]#]8.RL7       ];P™                  R].];.RM7       ]2P                  R]-];.RM7       ]2P                  RN . ]8.]0RO7       ]EP™                  ]']E.RL7       RRR4       RP tM]NRQ8X  d
   ]M! 4        R# R#   ] d
    ]! R4      hi ; i  + '       g   i     EL; i  + '       g   i     ELÞ; i  + '       g   i     EL¹; i  + '       g   i     ELÅ; i  + '       g   i     EL4; i  + '       g   i     ELö; i  + '       g   i     ELÒ; i  + '       g   i     ELÞ; i  + '       g   i     ELê; i  + '       g   i     ELÄ; i  + '       g   i     ELÐ; i  + '       g   i     EL; i)Ré    NzMmlx_vlm.chat_ui requires 'gradio'. Install it with: pip install 'mlx-vlm[ui]')Úload)ÚPromptCacheStateÚstream_generate)Úget_chat_templateÚget_message_json)Úload_configÚload_image_processor)ÚVisionFeatureCachec                  ó‚   € \         P                  ! R R7      p V P                  R\        RRR7       V P	                  4       # )z*Generate text from an image using a model.)Údescriptionz--modelzqnguyen3/nanoLLaVAz;The path to the local model directory or Hugging Face repo.)ÚtypeÚdefaultÚhelp)ÚargparseÚArgumentParserÚadd_argumentÚstrÚ
parse_args)Úparsers    Ú`/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/chat_ui.pyÚparse_argumentsr      sG   € Ü×$Ò$Ø@ô€Fð ×ÑØÜØ$ØJð	 ô ð ×ÑÓÐó    c                   ó,   a € ] tR t^%t o R tR tRtV tR# )Ú
ModelStatec                óˆ   € R V n         R V n        R V n        R V n        R V n        \        4       V n        \        4       V n        R # ©N)	ÚmodelÚ	processorÚconfigÚimage_processorÚcurrent_model_namer
   Úvision_cacher   Úprompt_cache_state)Úselfs   &r   Ú__init__ÚModelState.__init__&   s=   € ØˆŒ
ØˆŒØˆŒØ#ˆÔØ"&ˆÔÜ.Ó0ˆÔÜ"2Ó"4ˆÖr   c                ón  € V P                   e<   V = V =V =V =\        P
                  P                  4        \        P                  ! 4        \        V4      V n        \        VRR/R7      w  V n         V n        \        V4      V n        Wn        V P                  P                  4        \        4       V n        R# )z0Load a model, clearing previous one from memory.NÚtrust_remote_codeT)Úprocessor_kwargs)r   r   r   r    ÚmxÚmetalÚclear_cacheÚgcÚcollectr   r   r	   r!   r"   Úclearr   r#   )r$   Ú
model_names   &&r   r   ÚModelState.load/   sš   € ð �:‰:Ò!Ø�
Ø�Ø�ØÐ$Ü�H‰H× Ñ Ô"Ü�JŠJŒLô " *Ó-ˆŒÜ%)ØÐ*=¸tÐ)Dô&
Ñ"ˆŒ
�D”Nô  4°JÓ?ˆÔØ",ÔØ×Ñ×ÑÔ!Ü"2Ó"4ˆÖr   )r   r!   r    r   r   r#   r"   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   r   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   %   s   ø‡ € ò5÷5ð 5r   r   z(clamp(380px, calc(100vh - 450px), 820px)c            	     ó8  €  ^ RI Hp  . pV ! 4       pVP                   EF  pVP                  R8w  d   K  \	        VR/ 4      pV'       d   RV9  d±   \	        VRR4      pV'       dš   V F“  p\	        VRR4      pV'       g   K  VR,          pVP                  4       '       g   K;   \        VR	4      ;_uu_ 4       p	\        P                  ! V	4      p
RRR4       R
X
9   d   VP                  VP                  4        MK•  	  Kã  VR,          p\	        VRR4      pV'       g   EK  VR,          pVP                  4       '       g   EK&   \        VR	4      ;_uu_ 4       p	\        P                  ! V	4      p
RRR4       R
X
9   d   VP                  VP                  4       EK  EK‚  	  \        P                  '       d6   \        P                  V9  d!   VP                  ^ \        P                  4       \        \!        V4      4      #   + '       g   i     EL;; i  \         d     EK¼  i ; i  + '       g   i     LÀ; i  \         d     EK,  i ; i  \         dB   p\#        RT 24       \        P                  '       d   \        P                  .M. u Rp?# Rp?ii ; i)z(Scan HF cache for vision-capable models.)Úscan_cache_dirr   ÚrefsÚmainÚ	revisionsNÚsnapshot_pathzconfig.jsonÚrÚvision_configzError scanning cache: )Úhuggingface_hubr:   ÚreposÚ	repo_typeÚgetattrÚexistsÚopenÚjsonr   ÚappendÚrepo_idÚ	ExceptionÚstater!   ÚinsertÚsortedÚsetÚprint)r:   Ú
vlm_modelsÚ
cache_infoÚrepor;   r=   Úrevr>   Úconfig_pathÚfr   Úmain_refÚes                r   Úget_cached_vlm_modelsrX   R   s   € ð5NÝ2àˆ
Ù#Ó%ˆ
à×$Õ$ˆDØ�~‰~ Ô(Ùô ˜4 ¨Ó,ˆDß˜6¨Ô-ä# D¨+°tÓ<�	ßÛ(˜Ü(/°°_ÀdÓ(K˜ß(™=Ø*7¸-Õ*G˜KØ*×1Ñ1×3Ô3ð!)Ü)-¨k¸3×)?Ô)?À1Ü15·²¸1³¨÷ *@à'6¸&Ô'@Ø(2×(9Ñ(9¸$¿,¹,Ô(GÙ(-ñ (Añ  )ñ ð ˜F•|ˆHÜ# H¨o¸tÓDˆMßŠ}Ø+¨mÕ;�Ø×%Ñ%×'Õ'ðÜ! +¨s×3Ô3°qÜ%)§Y¢Y¨q£\˜F÷ 4à*¨fÔ4Ø&×-Ñ-¨d¯l©l×;ò 5ñE %ôP ×#×#Ð#¬×(@Ñ(@È
Ô(RØ×Ñ˜a¤×!9Ñ!9Ô:ä”c˜*“oÓ&Ð&÷7 *@×)?Ð)?ûô
 (1ô !)Û$(ð!)ú÷ 4×3ûô %ô Ûðûô ô NÜÐ& q cÐ*Ô+ä-2×-E×-EÐ-E”×(Ñ(Ñ)È2ÕMûðNús©   ‚A:I ÂI Â#HÂ7H 	Ã*HÃ8#I Ä!I ÅH:ÅH'Å/*H:ÆI Æ7AI È HÈ	HÈH$ÈI È#H$È$I È'H7È2H:È:I
ÉI É	I
É
I ÉJÉ6JÊJÊJc                óð  € V '       g   R\         P                  ! 4       3# V \        P                  8X  d   R\         P                  ! 4       3#  V! RRR7       V! RRR7       \        P	                  V 4       V! RRR7       R\         P                  ! . R	7      3#   \
         dR   p\        T4      p\        T4      ^<8”  d   TR
,          R,           MTpRT 2\         P                  ! 4       3u Rp?# Rp?ii ; i)zLoad a model and return status.õ
   âœ“ Loadedçš™™™™™¹?zClearing memory...)Údescg333333Ó?z
Loading...ç      ð?zDone!)Úvalue:Né<   Nz...u   âš  N)ÚgrÚupdaterK   r!   r   rJ   r   Úlen)r0   ÚprogressrW   Ú	error_msgÚ	short_errs   &&   r   Úload_model_by_namerf   Œ   sÅ   € çØœRŸYšY›[Ð(Ð(à”U×-Ñ-Ô-ØœRŸYšY›[Ð(Ð(ð/Ù�Ð/Õ0Ù�˜<Õ(Ü�
‰
�:ÔÙ�˜7Õ#àœRŸYšY¨RÔ0Ð0Ð0øÜô /Ü˜“Fˆ	ä.1°)«n¸rÔ.A�I˜c•N UÖ*Àyˆ	Ø�i�[Ð!¤2§9¢9£;Ð.Õ.ûð	/ús    ÁAB ÂC5Â$AC0Ã*C5Ã0C5c                 ób   € \        4       p \        P                  ! V \        P                  R7      # )z"Refresh the list of cached models.)Úchoicesr^   )rX   r`   ra   rK   r!   )Úmodelss    r   Úrefresh_model_listrj   ¢   s!   € ä"Ó$€FÜ�9Š9˜V¬5×+CÑ+CÔDÐDr   c                óü  € \        V \        4      '       dÄ   RV 9   d^   V R,          '       dO   V R,          R,          p\        V\        4      '       d   RV9   d
   VR,          # \        V\        4      '       d   V# RV 9   dW   V R,          '       dH   V R,          p\        V\        4      '       d   RV9   d
   VR,          # \        V\        4      '       d   V# R# \        V \        4      '       d   V '       d   V # R# R# )z5Extract image file path from various message formats.ÚfilesÚpathÚfileÚ éÿÿÿÿ)Ú
isinstanceÚdictr   )ÚmessageÚimgrU   s   &  r   Úextract_image_from_messageru   ¨   sË   € ä�'œ4× Ò Ø�gÔ '¨'×"2Ô"2Ø˜'Õ" 2Õ&ˆCÜ˜#œt×$Ò$¨°3¬Ø˜6•{Ð"Ü˜C¤×%Ò%Ø�
Ø�WÔ ¨§¤Ø˜•ˆAÜ˜!œT×"Ò" v°¤{Ø˜•yÐ Ü˜Aœs×#Ò#Ø�ñ ô 
�GœS×	!Ò	!ß!ˆwÐ) rÐ)Ùr   c                ó>  € \        V \        4      '       d   V # \        V \        4      '       dï   RV 9   d   V R,          ;'       g    R# RV 9   dÎ   V R,          p\        V\        4      '       d   V# \        V\        4      '       d—   . pV F}  p\        V\        4      '       d   VP	                  V4       K,  \        V\        4      '       g   KD  VP                  R4      R8X  g   K\  VP	                  VP                  RR4      4       K  	  RP                  V4      # R# )z2Extract text content from various message formats.Útextro   Úcontentr   Ú )rq   r   rr   ÚlistrH   ÚgetÚjoin)rs   rx   Ú
text_partsÚcs   &   r   Úextract_text_from_messager   ¼   sß   € ä�'œ3×ÒØˆÜ�'œ4× Ò Ø�WÔØ˜6•?×(Ð( bÐ(Ø˜ÔØ˜iÕ(ˆGÜ˜'¤3×'Ò'Ø�Ü˜G¤T×*Ò*Ø�
Û �AÜ! !¤S×)Ò)Ø"×)Ñ)¨!Ö,Ü# A¤t×,Ô,°·±°v³À&Ö1HØ"×)Ñ)¨!¯%©%°¸Ó*;Ö<ñ	 !ð
 —x‘x 
Ó+Ð+Ùr   c              #   ój
  "  € \         P                  4        \        V 4      pV'       d   ^M^ pV'       d   V.MRp	\        P                  R,          R8w  Ed¿   . p
V'       d:   VP                  4       '       d$   V
P                  RRRVP                  4       /4       V EF¥  p\        V\        4      '       Ed|   VP                  RR4      pVP                  RR4      p\        V\        4      '       d   Mà\        V\        4      '       d   R	V9   d   VR	,          pM¹\        V\        4      '       d¢   . pV F}  p\        V\        4      '       d   VP                  V4       K,  \        V\        4      '       g   KD  VP                  R
4      R	8X  g   K\  VP                  VP                  R	R4      4       K  	  V'       d   RP                  V4      MRpMRpVR8X  d7   \        V\        4      '       d!   V'       d   VP                  R4      ^ ,          pV'       d   V
P                  RVRV/4       EK“  EK–  \        V\        \        34      '       g   EKµ  \        V^ ,          \        4      '       d   V
P                  RRRV^ ,          /4       MN\        V^ ,          \        4      '       d2   R	V^ ,          9   d$   V
P                  RRRV^ ,          R	,          /4       V^,          f   EKK  \        V^,          \        4      '       d    V^,          P                  R4      ^ ,          MV^,          pV
P                  RRRV/4       EK¨  	  V
P                  RRR\        V 4      /4       . p\!        V
4       Fƒ  w  ppRpV\#        V
4      ^,
          8X  d   VR,          R8X  d   V'       d   RpTP                  \%        \        P                  R,          VR,          VR,          TV'       g   TM^ R7      4       K…  	  \'        \        P(                  VRR7      pM\        V 4      pRpRpRVRVR\        P*                  R\        P,                  /pVR8  d   VVR&   VR8w  d   VVR&   \/        \        P0                  \        P(                  V3RV	/VB  FF  p\         P3                  4       '       d   VR,          pVx €  R# VVP4                  ,          pTpVx € KH  	  VeU   RVP6                   RVP8                  R RVP:                   RVP<                  R RVP>                  R  R!2pVV,           x € R# R# 5i)"é   NÚ
model_typeÚ	paligemmaÚroleÚsystemrx   Úuserro   rw   r   ry   Ú	assistantz

---
TF)r„   Úskip_image_tokenÚ
num_images)Úadd_generation_promptÚ
max_tokensÚtemperaturer"   r#   r]   Útop_pÚrepetition_penaltyÚimagez

*[Generation stopped]*z

---
<sub>Prompt: z
 tokens @ z.1fz t/s | Generation: z t/s | Peak memory: z.2fz	 GB</sub>) Ústop_generationr/   ru   rK   r   ÚstriprH   rq   rr   r{   r   rz   r|   ÚsplitÚtupler   Ú	enumeraterb   r   r   r   r"   r#   r   r   Úis_setrw   Úprompt_tokensÚ
prompt_tpsÚgeneration_tokensÚgeneration_tpsÚpeak_memory)rs   ÚhistoryrŒ   r‹   r�   rŽ   Úsystem_promptÚ
image_filer‰   r�   Úchat_historyÚitemr„   rx   r}   r~   ÚmessagesÚiÚmÚ
skip_tokenÚpromptÚresponseÚ
last_chunkÚ
gen_kwargsÚchunkÚstatss   &&&&&&&                   r   Úchatrª   Ò   s„  é € ô ×ÑÔä+¨GÓ4€Jß ‘ a€Jß&ˆZ‰L¨D€Eä‡|�|�LÕ! [Õ0Øˆç˜]×0Ñ0×2Ò2Ø×Ñ ¨°9¸m×>QÑ>QÓ>SÐ TÔUäˆDÜ˜$¤×%Ó%Ø—x‘x ¨Ó/�ØŸ(™( 9¨bÓ1�Ü˜g¤s×+Ò+ØÜ ¬×.Ò.°6¸WÔ3DØ% f�o‘GÜ ¬×.Ò.Ø!#�JÛ$˜Ü% a¬×-Ò-Ø&×-Ñ-¨aÖ0Ü'¨¬4×0Ô0°Q·U±U¸6³]ÀfÖ5LØ&×-Ñ-¨a¯e©e°F¸BÓ.?Ö@ñ	 %÷
 7A˜cŸh™h zÔ2Àb‘Gà �GØ˜;Ô&¬:°g¼s×+CÒ+CÏØ%Ÿm™m¨KÓ8¸Õ;�GßØ ×'Ñ'¨°°yÀ'Ð(J×Kò ä˜D¤4¬ -×0Õ0Ü˜d 1�g¤s×+Ò+Ø ×'Ñ'¨°¸ÀDÈÅGÐ(LÕMÜ  Q¥¬×.Ò.°6¸TÀ!½WÔ3DØ ×'Ñ'¨°¸ÀDÈÅGÈFÅOÐ(TÔUØ˜•7Õ&ô & d¨1¥g¬s×3Ò3ð ˜Q�Ÿ™ kÓ2°1Ö5à! !�Wð ð
 !×'Ñ'¨°¸iÈÐ(Q×RñC ðF 	×ÑØ�V˜YÔ(AÀ'Ó(JÐKô	
ð
 ˆÜ˜lÖ+‰DˆAˆqØˆJØ”C˜Ó%¨Õ)Ô)¨a°­i¸6Ô.AÇjØ"�
Ø�O‰OÜ Ü—L‘L Õ.Ø�i•LØ˜6�Ø%/ß1;™zÀôöñ	 ,ô #Ü�O‰O˜X¸Tô
‰ô
 +¨7Ó3ˆà€HØ€Jð 	�jØ�{Øœ×*Ñ*Øœe×6Ñ6ð	€Jð ˆs„{Ø#ˆ
�7ÑØ˜SÔ Ø+=ˆ
Ð'Ñ(ä Ü�‰Ü�‰Øñð ð	ð
 ôˆô ×!Ñ!×#Ò#ØÐ4Õ4ˆHØŠNÚà�E—J‘JÕˆØˆ
ØŒñð  ÒðØ&×4Ñ4Ð5°ZÀ
×@UÑ@UÐVYÐ?Zð [Ø%×7Ñ7Ð8¸
À:×C\ÑC\Ð]`ÐBað bØ&×2Ñ2°3Ð7°yðBð 	ð ˜ÕÔñ ùsJ   ‚3T3¶+T3Á"T3Á8C;T3Å8T3Æ,T3Æ=:T3Ç8T3È4T3ÉBT3Ë(B>T3Î'FT3c                 óX   € \         P                  4        \        P                  ! RR7      # )z*Set the stop flag to interrupt generation.F)Úinteractive)r�   rN   r`   ra   © r   r   Ústop_generatingr®   O  s   € ä×ÑÔÜ�9Š9 Ô'Ð'r   ÚblueÚslate)Úprimary_hueÚsecondary_huez*neutral_50z*neutral_950z*neutral_100z*neutral_900)Úbody_background_fillÚbody_background_fill_darkÚblock_background_fillÚblock_background_fill_darku  
() => {
    // Always set dark mode on load unless user explicitly chose light
    const savedTheme = localStorage.getItem('theme');
    const isDark = savedTheme !== 'light';
    document.body.classList.toggle('dark', isDark);
    return isDark ? 'â˜€ï¸�' : 'ðŸŒ™';
}
u«   
() => {
    const isDark = document.body.classList.toggle('dark');
    localStorage.setItem('theme', isDark ? 'dark' : 'light');
    return isDark ? 'â˜€ï¸�' : 'ðŸŒ™';
}
zƒ
(model_name) => {
    if (model_name) {
        localStorage.setItem('mlx_vlm_model', model_name);
    }
    return model_name;
}
zÉ
(server_model) => {
    const savedModel = localStorage.getItem('mlx_vlm_model');
    // Return saved model if available, otherwise use server's current model
    return savedModel || server_model;
}
TzMLX-VLM Chat)Úfill_heightÚtitlez## MLX-VLM Chat UI)ÚscaleÚModel)Úlabelrh   r^   Ú
show_labelÚallow_custom_valueu   ðŸ”„Úsm)ÚsizeÚ	min_widthr¹   u   â˜€ï¸�rZ   ÚStatusF)r^   r»   r¬   u   âš™ï¸� Generation Settings)rF   gš™™™™™©?r[   ÚTemperaturez,Higher = more creative, lower = more focused)ÚminimumÚmaximumÚstepr^   r»   Úinfoi   i   z
Max TokenszMaximum length of responser]   zTop-p (Nucleus Sampling)z$1.0 = disabled, lower = more focusedg       @zRepetition Penaltyz(1.0 = disabled, higher = less repetitionzSystem Prompt (optional)zYou are a helpful assistant...)r»   ÚplaceholderÚlinesÚ	max_lines)r¹   rÀ   u   â�¹ï¸� StopÚstop)Úvariantr¿   ÚcopyÚcopy_all)Úheightr¹   Úbuttons)ÚfnÚadditional_inputsÚ
multimodalr·   ÚchatbotÚsave_history)rÐ   ÚinputsÚoutputs)rÐ   rÕ   Újs)rÐ   rÖ   )rÐ   r×   rÖ   c                  ó"   € \         P                  # r   )rK   r!   r­   r   r   Ú<lambda>rÙ   ü  s
   € ”5×+Ò+r   )rÐ   rÕ   rÖ   r×   c                  ó<   € \         P                  R \        R7       R# )T)Ú	inbrowserÚthemeN)ÚdemoÚlaunchrÜ   r­   r   r   r<   r<     s   € Ü‡K�K˜$¤e€KÖ,r   Ú__main__)Or   r-   rG   Ú	threadingÚgradior`   ÚImportErrorÚ
SystemExitÚmlx.coreÚcorer*   Úmlx_vlmr   Úgenerater   r   Úprompt_utilsr   r   Úutilsr   r	   r"   r
   r   r   rK   Úargsr   Úchatbot_heightÚEventr�   rX   ÚProgressrf   rj   ru   r   rª   r®   ÚthemesÚSoftrN   rÜ   Úinitial_modelsÚdark_mode_jsÚtoggle_dark_jsÚsave_model_jsÚload_model_jsÚBlocksrÝ   ÚMarkdownÚRowÚColumnÚDropdownr!   Úmodel_dropdownÚButtonÚrefresh_btnÚ	theme_btnÚTextboxÚmodel_statusÚ	AccordionÚSliderrŒ   r‹   r�   rŽ   rœ   Ústop_btnÚChatbotrÓ   ÚChatInterfaceÚchat_interfaceÚchangeÚthenÚclickr<   r2   r­   r   r   Ú<module>r	     s  ðÛ Û 	Û Û ðÛõ å ç 7ß =ß 4Ý ,ò
÷5ñ 5ñ@ 	‹€ñ Ó€Ø ‡
�
ˆ4�:‰:Ô ð <€ð —/’/Ó#€ò7Nðt -/¯KªK«Mô /ò,Eòò(ò,zòz(ð 	�	‰	�‰ØØð 	ó 	÷ �#Ø&Ø,Ø(Ø-ð	 ó ð ñ 'Ó(€ð€ð€ð€ð€ð ‡Y‚Y˜4 ~×6Õ6¸$Ø‡K‚KÐ$Ô%ð 
�Š��Ø�YŠY˜Q×ÖØŸ[š[ØØ&Ø×.Ñ.ØØ#'ôˆN÷  ð �YŠY˜Q×ÖØŸ)š) F°ÀÈ1ÔMˆKØŸ	š	 (°ÀÈ1ÔMˆI÷  ð �YŠY˜Q×ÖØŸ:š:Ø"ØØ!ôˆL÷  ÷ 
ð( 
�Š��Ø�YŠY˜Q×ÖØ—’Ð:À×GÖGØ—V’V—X•XØ"$§)¢)Ø !Ø !Ø!Ø!Ø+ØKô#�Kð "$§¢Ø #Ø $ØØ"Ø*Ø9ô"�J÷ ð" —V’V—X•XØŸIšIØ #Ø #Ø!Ø!Ø8ØCô�Eð *,¯ªØ #Ø #Ø!Ø!Ø2ØGô*Ð&÷ ð" —V’V—X•XØ$&§J¢JØ8Ø$DØØ"#ô	%�M÷ ÷G H÷  ðX �YŠY˜Q¨#×.Ö.Ø—y’y ¸ÀTÔJˆH÷ /÷[ 
ðb �jŠjØØØ˜Ð$ô€Gð ×%Ò%ØàØØØØð
ð ØØØô€Nð  ×ÑØØÐØ˜wÐ'ð ó ÷ �dØØÐØð ô ð
 ×ÑØØÐ ð ô ð ‡O�O�t ¸¸€OÔDð 	‡I�I�˜,°°€IÔ<Ø‡I�IÙ+ØØÐ Øð	 ô ð ‡N�N�o°¨z€NÔ:÷w 7ò|-ð ˆzÔÙ†Fñ øðE ô Ù
ð	5óð ðú÷J  ×Ðú÷  ×Ðú÷  ×Ðú÷ 
�ˆú÷. —X�Xú÷" —X�Xú÷" —X�Xú÷G H×GÐGú÷  ×Ðú÷X /×.Ð.ú÷[ 
�ˆú÷1 7×6Ð6ús   ’Q3 Ä,U"Ä7S	Å"RÅ5#S	Æ-RÇ#S	Ç(R.Ç>S	È!U"È'U	ÉT&É TÉ:1SÊ+!TË1S*Ë=!TÌS>Ì5TÌ=T&Í$U	Í)T:Í?U	ÎCU"Ñ3RÒRÒ	S	ÒR+Ò%	S	Ò.R?Ò9	S	ÓSÓ	U"ÓS'Ó!	TÓ*S;Ó5	TÓ>TÔ		TÔT#Ô	T&Ô&T7Ô1	U	Ô:UÕ	U	ÕUÕ	U"Õ"U3	