§
    ’Þjw?  ã            	       ó  — d dl 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g d¢Zg d¢ZdddddœZg d¢ZddddddddœddddddddœgZd „ Zd!„ Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ Zd'„ Z d(„ Z!d)„ Z"d*„ Z#d+„ Z$ G d,„ d-¦  «        Z%dS ).é    N)Ú	find_spec)Úfiles_locator)Úbuild_hf_urlé   )Ú!get_stable_audio3_prompt_enhancerzDeepBeepMeep/TTSÚstable_audio3_smallÚstable_audio3_mediumzt5gemma-b-b-ul2z t5gemma-b-b-ul2_bf16.safetensorszstable_audio3_small_config.jsonz stable_audio3_medium_config.jsonz%stable_audio3_same_s_bf16.safetensorsz%stable_audio3_same_l_bf16.safetensors)zconfig.jsonzspecial_tokens_map.jsonztokenizer.jsonztokenizer.modelztokenizer_config.json)Ú ÚAEÚAIÚACzText to audiozAudio to audio editzInpaint source audiozContinue source audio))ÚPingPongÚpingpong)ÚEulerÚeuler)zDPM++Údpmpp)ÚRK4Úrk4Úinpaint_start_secondszInpaint Start SecondsÚfloatg        gš™™™™™¹?)ÚidÚlabelÚnameÚtypeÚdefaultÚminÚincÚinpaint_end_secondszInpaint End Secondsg      $@c                 ó2   — t          j        | d¬¦  «        p| S )NF)Úerror_if_none)ÚflÚlocate_file)Úfilenames    úHC:\Users\johnn\OneDrive\Documents\AI\models\TTS\stable_audio3_handler.pyÚ_root_checkpoint_pathr%   0   s   € ÝŒ>˜(°%Ð8Ñ8Ô8ÐD¸HÐDó    c                 ó¤   — t           j                             t           j                             t          ¦  «        ddt          | ¦  «        ¦  «        S )NÚstable_audio3Úconfigs)ÚosÚpathÚjoinÚdirnameÚ__file__Ú_config_name©Úbase_model_types    r$   Ú_config_pathr2   4   s3   € ÝŒ7�<Š<�œŸš­Ñ1Ô1°?ÀIÍ|Ð\kÑOlÔOlÑmÔmÐmr&   c                 ó4   — | t           k    rt          nt          S ©N)ÚSTABLE_AUDIO3_MEDIUMÚSTABLE_AUDIO3_SAME_L_WEIGHTSÚSTABLE_AUDIO3_SAME_S_WEIGHTSr0   s    r$   Ú_asset_weightsr8   8   s   € Ø+:Õ>RÒ+RÐ+RÕ'Ð'ÕXtÐtr&   c                 ó4   — | t           k    rt          nt          S r4   )r5   ÚSTABLE_AUDIO3_MEDIUM_CONFIGÚSTABLE_AUDIO3_SMALL_CONFIGr0   s    r$   r/   r/   <   s   € Ø*9Õ=QÒ*QÐ*QÕ&Ð&ÕWqÐqr&   c                 ó    — | t           k    rdndS )Ni|  éx   )r5   r0   s    r$   Ú_max_durationr>   @   s   € Ø!Õ%9Ò9Ð9ˆ3ˆ3¸sÐBr&   c                 ó.   — dddt          | ¦  «        dddœS )NzDuration (seconds)zTarget Durationr   é   )r   r   r   ÚmaxÚ	incrementr   )r>   r0   s    r$   Ú_duration_sliderrC   D   s6   € Ø)Ð3DÈQÕWdÐetÑWuÔWuð  EFð  SUð  Vð  Vð  Vr&   c                 ó*   ‡ — ˆ fd„t           D ¦   «         S )Nc           
      óf   •— g | ]-}t          |t          t          ‰¦  «        ¦  «        ¬ ¦  «        ‘Œ.S ))rA   )Údictr   r>   )Ú.0Úoner1   s     €r$   ú
<listcomp>z$_custom_settings.<locals>.<listcomp>I   s6   ø€ ÐjÐjÐjÀS�D��%¥¨oÑ >Ô >Ñ?Ô?Ð@Ñ@Ô@ÐjÐjÐjr&   )ÚSTABLE_AUDIO3_CUSTOM_SETTINGSr0   s   `r$   Ú_custom_settingsrK   H   s   ø€ ØjÐjÐjÐjÕLiÐjÑjÔjÐjr&   c                 ó|   — t          | pd¦  «                             ¦   «         } d| vrdS d| v rdS d| v rdS d| v rd	S dS )
Nr
   ÚAÚtextÚEÚaudio_to_audioÚIÚinpaintÚCÚcontinue)ÚstrÚupper)Úaudio_prompt_types    r$   Ú_mode_from_audio_prompt_typerX   L   sl   € ÝÐ-Ð3°Ñ4Ô4×:Ò:Ñ<Ô<ÐØ
Ð#Ð#Ð#ØˆvØ
ÐÐÐØÐØ
ÐÐÐØˆyØ
ÐÐÐØˆzØˆ6r&   c                  óŽ   — t          d¦  «        €dS 	 dd l} n# t          $ r Y dS w xY wt          t	          | dd ¦  «        ¦  «        S )NÚ
flash_attnFr   Úflash_attn_varlen_func)r   rZ   Ú	ExceptionÚcallableÚgetattr)rZ   s    r$   Ú_flash_attention2_availabler_   Y   sf   € Ý�ÑÔÐ&ØˆuðØÐÐÐÐøÝð ð ð Øˆuˆuðøøøå•G˜JÐ(@À$ÑGÔGÑHÔHÐHs   “ ˜
&¥&c                  ó   — dS )Nz�Stable Audio 3 Medium requires Flash Attention 2 for SAME-L sliding-window attention. Install flash-attn or use Stable Audio 3 Small Music/SFX.© ra   r&   r$   Ú_medium_flash_attention_errorrb   c   s   € ð ]ð  ]r&   c                 ór   — | t           k    r)t          ¦   «         st          t          ¦   «         ¦  «        ‚d S d S r4   )r5   r_   ÚRuntimeErrorrb   r0   s    r$   Ú_require_medium_flash_attentionre   g   s=   € ØÕ.Ò.Ð.Õ7RÑ7TÔ7TÐ.ÝÕ8Ñ:Ô:Ñ;Ô;Ð;ð /Ð.Ð.Ð.r&   c                 ól   — | t           k    rdnd}t          |pi                      d¦  «        p|¦  «        S )NÚmediumúsmall-musicÚstable_audio3_model_id)r5   rU   Úget)r1   Ú	model_defÚdefault_model_ids      r$   Ú	_model_idrm   l   s?   € Ø#2Õ6JÒ#JÐ#J�x�xÐP]ÐÝ�	�˜R×$Ò$Ð%=Ñ>Ô>ÐRÐBRÑSÔSÐSr&   c                   ó,  — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	edd„¦   «         Z
e	 	 	 	 	 	 	 	 	 dd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )Úfamily_handlerc                  ó   — t           t          gS r4   )ÚSTABLE_AUDIO3_SMALLr5   ra   r&   r$   Úquery_supported_typesz$family_handler.query_supported_typesr   s   € å#Õ%9Ð:Ð:r&   c                  ó
   — i i fS r4   ra   ra   r&   r$   Úquery_family_mapsz family_handler.query_family_mapsv   s   € à�2ˆvˆr&   c                  ó   — dS )NÚttsra   ra   r&   r$   Úquery_model_familyz!family_handler.query_model_familyz   s   € àˆur&   c                  ó   — dddœS )N)i“  ÚMusic)i˜  ÚTTS)Úmusicrv   ra   ra   r&   r$   Úquery_family_infosz!family_handler.query_family_infos~   s   € à(°Ð?Ð?Ð?r&   c                 ó4   — | t           k    rt           S t          S r4   )r5   rq   r0   s    r$   Úget_lora_dirzfamily_handler.get_lora_dir‚   s   € àÕ2Ò2Ð2Ý'Ð'Ý"Ð"r&   c                 óž  — t          | |¦  «        }t          |¦  «        \  }}}ddddœ|         \  }}d|› dt          | ¦  «        › d�}| t          k    r|dz  }d	|› d
|› �}	i dd“dd|z   “dd|	z   “dd„ dddg|dk    rdnd¢|dk    rdnd¢R D ¦   «         “dd|› dt          | ¦  «        › d�| t          k    rdnd z   “d!d"|› d#|› �“d$d%“d&d%“d'd(“d)d(“d*d+“d,d “d-d%“d.| g“d/t	          t
          t          t          ¦  «        g“d0t          “d1|“||d2gd%t          d(d%d%d%d3d4t          t          d d5d6d7œt          | ¦  «        t          | ¦  «        d(d8œ¥S )9N)z%instrumental music, loops and groovesz A relaxed 90 BPM instrumental with warm electric piano, rounded bass and brushed drums; a gentle introduction builds into a steady groove, then resolves softly.)z!sound effects, foley and ambiencez„A heavy wooden door creaks open close to the listener, followed by footsteps across a stone floor and a short reverberant door slam.)z8longer music, evolving ambience and layered sound designz›A slow cinematic instrumental with low strings and soft piano, gradually joined by distant thunder and wind, building to a restrained climax before fading.)rh   ú	small-sfxrg   zStable Audio 3 is suited to z^. It produces stereo audio at 44.1 kHz. **Duration** sets the target output length, from 1 to au   seconds; audible sound may finish earlier.

### Choose a Workflow

- **Text to Audio:** describe a new sound or piece of music.
- **Edit Audio:** supply source audio and describe the desired change. Audio strength 0 retains more source detail; 1 changes it more.
- **Inpaint Audio:** supply source audio and select the start/end seconds of the interval to regenerate.
- **Continue Audio:** supply source audio and choose a total duration longer than the source. The duration includes the original section.

Inpainting and continuation may also change the sound slightly outside the regenerated region; preservation is not sample-exact.

Start with 8 inference steps, guidance 1 and the PingPong solver. Prompt enhancement is optional. This model is not designed for speech or voice generation, or transcription. Inspect the result for silence and level before combining it with video.z³ Medium requires Flash Attention 2 for its audio codec. WanGP allows up to 380 seconds, but the upstream Medium checkpoint is documented for about 4.75 minutes; prefer that range.z<Describe the sound in English, choosing details relevant to a)  . The model was trained on English descriptions; other languages may underperform. For music, specify genre, tempo or BPM, instruments, mood, production texture and a simple progression. For effects, specify the source, action, material, distance, environment and how the sound develops. For source editing, describe the desired resulting sound and the intended change. Use the duration control for timing; prose alone does not set the output length. Exact lyrics, spoken wording, seamless loops and precisely timed events are not guaranteed.

Example: Úgroupr{   Úinfosz## Stable Audio 3

Úprompt_infosz## Describe the Sound

Úspecialitiesc                 ó   — g | ]}d |i‘ŒS )r   ra   )rG   r   s     r$   rI   z2family_handler.query_model_def.<locals>.<listcomp>¬   s.   € ð  nð  nð  n°˜f d˜^ð  nð  nð  nr&   zaudio editingzaudio inpaintingzaudio continuationrh   )zsound effectsra   r€   )zmusic generationÚdeepy_infoszStereo 44.1 kHz; u   ; target 1â€“a­  s. Modes audio_prompt_type: empty=text; AE=edit audio_guide (audio_scale 0..1, higher changes more); AI=inpaint audio_guide using custom_settings.inpaint_start_seconds/end_seconds; AC=continue audio_guide, duration_seconds is total length and must exceed the source. Codec reconstruction is not sample-exact. Start 8 steps, guidance 1, pingpong. Not designed for speech/voice generation or transcription; inspect silence/levels. zsMedium needs Flash Attention 2. WanGP allows 380s, but upstream documents Medium for about 285s; prefer that range.r
   Údeepy_prompt_infoszEnglish description of a  : audible sources/instruments, rhythm, mood, texture, space and development. English-trained; other languages may underperform. Describe the target change when editing. Set timing with duration_seconds. Exact words, event timing and seamless loops are not guaranteed. Example: Údevice_explicitTÚ
audio_onlyÚimage_outputsFÚsliding_windowÚguidance_max_phasesr   Úimage_prompt_types_allowedÚsupports_early_stopÚprofiles_dirÚtext_encoder_URLsÚtext_encoder_folderÚ!text_prompt_enhancer_instructionsÚTzSource audiozEdit Noise LevelzSource AudioÚAEIC)Ú	selectionÚlabelsr   r   Úletters_filter)Útext_prompt_enhancer_max_tokensÚprompt_enhancer_button_labelÚprompt_enhancer_choices_allowedÚinference_stepsÚsample_solversÚtemperatureÚany_audio_promptÚaudio_prompt_choicesÚenabled_audio_loraÚaudio_guide_labelÚaudio_scale_nameÚaudio_prompt_type_sourcesÚduration_sliderÚcustom_settingsÚcompile)rm   r   r>   r5   r   ÚSTABLE_AUDIO3_REPO_IDÚ!STABLE_AUDIO3_TEXT_ENCODER_FOLDERÚSTABLE_AUDIO3_TEXT_ENCODER_BF16ÚSTABLE_AUDIO3_SAMPLE_SOLVERSÚ STABLE_AUDIO3_AUDIO_MODE_CHOICESÚSTABLE_AUDIO3_AUDIO_MODE_LABELSrC   rK   )
r1   rk   Úmodel_idÚprompt_enhancer_instructionsÚprompt_enhancer_max_tokensr™   Ú
specialityÚexampleÚ
input_helpÚprompt_helps
             r$   Úquery_model_defzfamily_handler.query_model_defˆ   sv  € å˜_¨iÑ8Ô8ˆõ bCð  DLñ  bMô  bMÑ^Ð$Ð&@ÐB^ð ið Gð rð
ð 
ð ô	Ñˆ
�Gð	d¨:ð 	dð 	dÝERÐSbÑEcÔEcð	dð 	dð 	dð 	ð Õ2Ò2Ð2Øð  Pñ  PˆJð"È:ð "ð "ð  ð"ð "ð 	ð'
Ø�Wð'
àÐ,¨zÑ9ð'
ð Ð7¸+ÑEð'
ð ð  nð  n¸ÐJ\Ð^rð  9mð  MUð  Yfò  Mfð  Mfð  wIð  wIð  lnð  9mð  LTð  Xcò  Lcð  Lcð  sHð  sHð  ikð  9mð  9mð  nñ  nô  nð	'
ð
 ð  V¨zð  Vð  VÍÐVeÑHfÔHfð  Vð  Vð  Vð  S
b
õ  f
z
ò  S
z
ð  S
z
ð  ZO
ð  ZO
ð  @Bñ  Cð'
ð !ð  #g¸Jð  #gð  #gð  ^eð  #gð  #gð'
ð ˜tð'
ð ˜$ð'
ð ˜Uð'
ð ˜eð'
ð " 1ð'
ð )¨"ð'
ð " 4ð'
ð ˜_Ð-ð'
ð  ¥,Õ/DÕFgõ  jIñ  #Jô  #Jð  "Kð'
ð  "Õ#Dð!'
ð" 0Ð1Mð#'
ð$ 0JØ,HØ03¨uØ#Ý:Ø Ø $Ø$(Ø"&Ø!/Ø 2å=Ý9ØØ'Ø"(ð*ð *õ  0°Ñ@Ô@Ý/°Ñ@Ô@ØðM'
ð '
ð '
ð '	
r&   Nc                 óP   — t           dt          gt          |¦  «        gt          gdœS )Nr
   )ÚrepoIdÚsourceFolderListÚfileList)r§   r¨   r8   ÚSTABLE_AUDIO3_TOKENIZER_FILES)ÚcomputeListr1   rk   s      r$   Úquery_model_filesz family_handler.query_model_filesÑ   s3   € õ ,Ø!#Õ%FÐ GÝ(¨Ñ9Ô9Ð:Õ<YÐZð
ð 
ð 	
r&   Fr   c                 óŽ  — t          |¦  «         ddlm} t          | t          t
          f¦  «        r| d         n| }t          |¦  «        }t          t          |¦  «        ¦  «        }t          j
        t          ¦  «        } ||||||t          ||¦  «        t          |¦  «        |pt          j        ¬¦  «        }d|j        j        j        v r|j        j        j        d         nd }|j        |j        j        dœ}|�t+          |d¦  «        r
|j        |d<   |	r(|r&dd	lm}  ||j        |||pt          j        |¦  «         ||i d
œfS )Nr   )ÚStableAudio3Pipeliner   )r­   Úmax_durationÚdtypeÚprompt)ÚtransformerÚcodecÚmodelÚtext_encoder)Úsave_quantized_model)ÚpipeÚcoTenantsMap)re   Ústable_audio3.pipeliner½   Ú
isinstanceÚlistÚtupler2   r%   r8   r!   Úlocate_folderr¨   rm   r>   ÚtorchÚbfloat16rÃ   ÚconditionerÚconditionersÚ
main_modelÚpretransformÚhasattrÚwgprÅ   )Úmodel_filenameÚ
model_typer1   rk   ÚquantizeTransformerÚtext_encoder_quantizationr¿   Ú	VAE_dtypeÚmixed_precision_transformerÚsave_quantizedÚsubmodel_no_listÚtext_encoder_filenameÚprofileÚkwargsr½   Útransformer_weightsÚconfig_pathÚautoencoder_weightsÚtokenizer_dirÚpipelineÚprompt_conditionerrÆ   rÅ   s                          r$   Ú
load_modelzfamily_handler.load_modelÙ   s¤  € õ" 	(¨Ñ8Ô8Ð8à@Ð@Ð@Ð@Ð@Ð@å3=¸nÍtÕUZÈmÑ3\Ô3\Ðp˜n¨QÔ/Ð/ÐbpÐÝ" ?Ñ3Ô3ˆÝ3µNÀ?Ñ4SÔ4SÑTÔTÐÝÔ(Õ)JÑKÔKˆØ'Ð'ØØØØ!ØÝ˜°	Ñ:Ô:Ý& Ñ7Ô7ØÐ)�5œ>ð	
ñ 	
ô 	
ˆð S[Ð^fÔ^lÔ^xô  _Fð  SFð  SF˜Xœ^Ô7ÔDÀXÔNÐNð  LPÐà#Ô.Ø”^Ô0ð
ð 
ˆð Ð)­gÐ6HÈ'Ñ.RÔ.RÐ)Ø#5Ô#;ˆD�Ñ àð 	}Ð1ð 	}Ø0Ð0Ð0Ð0Ð0Ð0à Ð  Ô!4°jÐBUÐW\ÐWnÕ`eÔ`nÐp{Ñ|Ô|Ð|à $¸Ð;Ð;Ð;Ð;r&   c                 ó^   — |                      dd¦  «         |                      dd¦  «         d S )NrW   r
   Úsample_solverr   )Ú
setdefault)r1   Úsettings_versionrk   Úui_defaultss       r$   Úfix_settingszfamily_handler.fix_settings  s5   € à×ÒÐ2°BÑ7Ô7Ð7Ø×Ò˜°
Ñ;Ô;Ð;Ð;Ð;r&   c                 óH   — |                      ddddddddd	d
ddœ¦  «         d S )Nr
   zeAn anthemic pop rock instrumental with bright guitars, punchy drums, and a nostalgic festival chorus.r@   r   r   é   g      ð?zpoor quality, distorted, noisyr   gÍÌÌÌÌÌì?ÚFG)rW   rÀ   Úduration_secondsÚrepeat_generationÚvideo_lengthÚnum_inference_stepsÚguidance_scaleÚnegative_promptrè   Úaudio_scaleÚmulti_prompts_gen_type)Úupdate)r1   rk   rë   s      r$   Úupdate_default_settingsz&family_handler.update_default_settings  sR   € à×Òà%'ð BØ$&Ø%&Ø !Ø'(Ø"%Ø#CØ!+Ø"Ø*.ðð ñ	
ô 	
ð 	
ð 	
ð 	
r&   c                 ór   — |�2t          t          |¦  «                             ¦   «         ¦  «        dk    rdS d S )Nr   z/Prompt text cannot be empty for Stable Audio 3.)ÚlenrU   Ústrip)r1   rk   ÚinputsÚ
one_prompts       r$   Úvalidate_generative_promptz)family_handler.validate_generative_prompt#  s7   € àÐ¥¥S¨¡_¤_×%:Ò%:Ñ%<Ô%<Ñ!=Ô!=ÀÒ!BÐ!BØDÐDØˆtr&   c                 ó¢  — | t           k    rt          ¦   «         st          ¦   «         S |                     dd¦  «        pd}t	          |¦  «        }|dv r|                     d¦  «        €dS |dk    r^|                     d¦  «        �I	 t          |d         ¦  «        |d<   n# t          t          f$ r Y dS w xY wd	|d         cxk    rd
k    sn dS |                     dd ¦  «        }t          |t          ¦  «        rVdD ]S}|                     |d ¦  «        }|�|dk    rŒ!	 t          |¦  «        ||<   Œ5# t          t          f$ r d|› d�cY c S w xY wd S )NrW   r
   )rP   rR   rT   Úaudio_guidez>Stable Audio 3 source-audio modes require a source audio file.rP   rö   z1Stable Audio 3 Edit Noise Level must be a number.r   r   z8Stable Audio 3 Edit Noise Level must be between 0 and 1.r¥   )r   r   zStable Audio 3 custom setting 'z' must be a number.)
r5   r_   rb   rj   rX   r   Ú	TypeErrorÚ
ValueErrorrÉ   rF   )r1   rk   rý   rW   Úmoder¥   ÚkeyÚvalues           r$   Úvalidate_generative_settingsz+family_handler.validate_generative_settings)  sÁ  € àÕ2Ò2Ð2Õ;VÑ;XÔ;XÐ2Ý0Ñ2Ô2Ð2Ø"ŸJšJÐ':¸BÑ?Ô?ÐEÀ2ÐÝ+Ð,=Ñ>Ô>ˆØÐ<Ð<Ð<ÀÇÂÈMÑAZÔAZÐAbØSÐSØÐ#Ò#Ð#¨¯
ª
°=Ñ(AÔ(AÐ(MðKÝ(-¨f°]Ô.CÑ(DÔ(D��}Ñ%Ð%øÝ�zÐ*ð Kð Kð KØJÐJÐJðKøøøà˜˜}Ô-Ð2Ð2Ò2Ð2°Ò2Ð2Ð2Ð2ØQÐQØ Ÿ*š*Ð%6¸Ñ=Ô=ˆÝ�o¥tÑ,Ô,ð 	VØGð Vð V�Ø'×+Ò+¨C°Ñ6Ô6�Ø�= E¨R¢K KØðVÝ+0°©<¬<�O CÑ(Ð(øÝ!¥:Ð.ð Vð Vð VØU¸SÐUÐUÐUÐUÐUÐUÐUÐUðVøøøàˆts$   ÂB ÂB4Â3B4ÄD0Ä0EÅEr4   )	FNNNFFNNr   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodrr   rt   rw   r|   r~   r´   r»   ræ   rì   rù   rÿ   r  ra   r&   r$   ro   ro   q   s…  € € € € € Øð;ð ;ñ „\ð;ð ðð ñ „\ðð ðð ñ „\ðð ð@ð @ñ „\ð@ð ð#ð #ñ „\ð#ð
 ðF
ð F
ñ „\ðF
ðP ð
ð 
ð 
ñ „\ð
ð ð "Ø"&ØØØ$)ØØØ"Øð0<ð 0<ð 0<ñ „\ð0<ðd ð<ð <ñ „\ð<ð ð
ð 
ñ „\ð
ð" ðð ñ „\ðð
 ðð ñ „\ðð ð r&   ro   )&r*   Úimportlib.utilr   rÍ   Úshared.utilsr   r!   Úshared.utils.hfr   Ústable_audio3_prompt_enhancersr   r§   rq   r5   r¨   r©   r;   r:   r7   r6   r¹   r«   r¬   rª   rJ   r%   r2   r8   r/   r>   rC   rK   rX   r_   rb   re   rm   ro   ra   r&   r$   ú<module>r     sT  ðà 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $à €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (à MÐ MÐ MÐ MÐ MÐ Mð +Ð Ø+Ð Ø-Ð Ø$5Ð !Ø"DÐ Ø>Ð Ø@Ð ØFÐ ØFÐ ð!ð !ð !Ð ð $:Ð#9Ð#9Ð  àØ
Ø
 Ø
!ð	#ð #Ð ð ð  ð  Ð ð #Ð-DÐNeÐovð  DGð  PSð  \_ð  `ð  `Ø Ð+@ÐJ_Ðipð  ~Bð  KNð  WZð  [ð  [ð!Ð ðEð Eð Eðnð nð nðuð uð uðrð rð rðCð Cð CðVð Vð Vðkð kð kð
ð 
ð 
ðIð Ið Ið]ð ]ð ]ð<ð <ð <ð
Tð Tð Tð
Qð Qð Qð Qð Qñ Qô Qð Qð Qð Qr&   