§
    bíhhä4  ã                   óÈ   — d dl Zd dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZ d dlmZmZ  e¦   «         ZdZd„ ZdZ G d„ d	ee¬
¦  «        Z G d„ dee¬
¦  «        ZdS )é    N)ÚQObjectÚQUrlÚSlotÚQStringListModelÚPropertyÚSignalÚQTimerÚQThreadPoolÚ	QRunnableÚQMetaObjectÚQt)ÚLooperThreadÚloop_parametersÚlooper_parameters)ÚPropertyMetar   )Úredo_is_tapÚuse_rateÚuse_common_insÚuse_common_outsÚuse_safety_feedbackÚpan_3Úpan_4Úinput_latencyÚoutput_latencyÚtrigger_latencyÚautoset_latencyc                 ó>   — t          t          | |¦  «        |¦  «        S ©N)ÚmaxÚmin)ÚvÚ	min_valueÚ	max_values      ú/home/debian/UI/loopler.pyÚclampr%      s   € Ý�s�1�iÑ Ô  )Ñ,Ô,Ð,ó    )Ú	tap_tempoÚ	save_loopÚauto_disable_latencyÚselect_next_loopÚselect_prev_loopÚselect_all_loopsc                   ó  ‡ — e Zd Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z	 ee¦  «        Z
 ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z  ee¦  «        Z! ee¦  «        Z" ee¦  «        Z# ee¦  «        Z$ ee¦  «        Z% ee¦  «        Z& ee¦  «        Z'dˆ fd„	Z(ˆ xZ)S )ÚLoopNc                 óV  •— t          ¦   «                              |¦  «         t          t          j        |         j                             ¦   «         ¦  «        }d| _        d| _        t          t          ¦  «        t          t          ¦  «        z
  }|D ]c\  }}|t          v rU|t          vrLt          | ¦  «        j        |                              | |¦  «         	 |                     |¦  «         Œ\#  Y Œ`xY wŒd|D ]0}t          | ¦  «        j        |                              | d¦  «         Œ1d S )Nr   é   )ÚsuperÚ__init__ÚlistÚl_threadÚloopsÚ__dict__ÚitemsÚloop_lenÚchannel_countÚsetr   ÚunusedÚtypeÚsetterÚremove)ÚselfÚloop_numÚparentÚaÚ
set_paramsÚkr!   Ú	__class__s          €r$   r2   zLoop.__init__S   s  ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý•” Ô)Ô2×8Ò8Ñ:Ô:Ñ;Ô;ˆØˆŒØˆÔÝ�Ñ)Ô)­Cµ©K¬KÑ7ˆ
Øð 	ð 	‰DˆAˆqØ•OÐ#Ð#¨µ¨¨õ �T‘
”
Ô# AÔ&×-Ò-¨d°AÑ6Ô6Ð6ðØ×%Ò% aÑ(Ô(Ð(Ð(øðØ�Døøøøð
 ð 	3ð 	3ˆAÝ�‰JŒJÔ Ô"×)Ò)¨$°Ñ2Ô2Ð2Ð2ð	3ð 	3s   ÃC.Ã.C2r   )*Ú__name__Ú
__module__Ú__qualname__r   ÚintÚstateÚ
next_stater9   Úfloatr8   Úloop_posÚ	cycle_lenÚ	free_timeÚ
total_timeÚrate_outputÚin_peak_meterÚout_peak_meterÚ	is_soloedÚ
rec_threshÚfeedbackÚdryÚwetÚ
input_gainÚrateÚscratch_posÚdelay_triggerÚroundÚsyncÚplayback_syncÚuse_feedback_playÚpan_1Úpan_2Úmute_quantizedÚoverdub_quantizedÚpitch_shiftÚstretch_ratioÚwaitingÚfade_samplesÚrelative_syncÚquantizer2   Ú__classcell__©rE   s   @r$   r.   r.   #   sý  ø€ € € € € ØˆH�S‰MŒM€EØ�˜#‘”€JØ�H˜S‘M”M€MØˆx˜‰Œ€HØˆx˜‰Œ€HØ�˜‘”€IØ�˜‘”€IØ�˜%‘”€JØ�(˜5‘/”/€KØ�H˜U‘O”O€MØ�X˜e‘_”_€NØ�˜‘”€IØ�˜%‘”€JØˆx˜‰Œ€HØ
ˆ(�5‰/Œ/€CØ
ˆ(�5‰/Œ/€CØ�˜%‘”€JØˆ8�E‰?Œ?€DØ�(˜5‘/”/€KØ�H˜U‘O”O€MØˆH�U‰OŒO€EØˆ8�E‰?Œ?€DØ�H˜U‘O”O€MØ ˜ ™œÐð ˆH�U‰OŒO€EØˆH�U‰OŒO€Eð �X˜e‘_”_€NØ ˜ ™œÐØ�(˜5‘/”/€KØ�H˜U‘O”O€MØˆh�u‰oŒo€GØ�8˜E‘?”?€LØ�H˜U‘O”O€MØˆx˜‰}Œ}€Hð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3r&   r.   )Ú	metaclassc                   ó  ‡ — e Zd ZdZ ee¦  «        Z ee¦  «        Z	 ee¦  «        Z
 ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        Z ee¦  «        ZdZdZi Zˆ fd„Z e¦   «         d„ ¦   «         Z e¦   «         d„ ¦   «         Z eee¦  «        d„ ¦   «         Z d„ Z! eeed¦  «        d	„ ¦   «         Z" ee¦  «        d
„ ¦   «         Z# eed¦  «        d„ ¦   «         Z$ eed¦  «        d„ ¦   «         Z% ee¦  «        d„ ¦   «         Z& ee¦  «        d„ ¦   «         Z' ee¦  «        d„ ¦   «         Z( e¦   «         d„ ¦   «         Z) eed¦  «        d„ ¦   «         Z* e¦   «         d„ ¦   «         Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3 eee¦  «        d„ ¦   «         Z4 e¦   «         d„ ¦   «         Z5d„ Z6d„ Z7d „ Z8ˆ xZ9S )!ÚLooplerFNc                 óü   •— t          ¦   «                              ¦   «          d| _        d| _        d| _        d| _        | j                             | j        ¦  «         | j	                             | j
        ¦  «         d S ©Nr   F)r1   r2   Úselected_loop_numÚoutput_midi_clockÚsmart_eighthsÚmidi_learn_waitingÚloopAddedSignalÚconnectÚadd_loopÚloopRemovedSignalÚremove_loop)r?   rE   s    €r$   r2   zLoopler.__init__�   sr   ø€ Ý‰Œ×ÒÑÔÐØ!"ˆÔØ!"ˆÔØˆÔØ"'ˆÔØÔ×$Ò$ T¤]Ñ3Ô3Ð3ØÔ×&Ò& tÔ'7Ñ8Ô8Ð8Ð8Ð8r&   c                 ó  — d| _         t                               ¦   «          d„ t          t          j        ¦  «        D ¦   «         | _        d| _        t          j                             | j        ¦  «         t          j	                             | j
        ¦  «         t          j                             | j        ¦  «         t          j                             | j        ¦  «         t          j                             | j        ¦  «         t#          t          j                             ¦   «         ¦  «        }|D ]E\  }}|t(          v r7|t*          vr.t-          | ¦  «        j        |                              | |¦  «         ŒFd| _        | j        �€|                      | j        ¦  «         | j                             dd¦  «        d         dz   }t8          j                             |¦  «        rt                               |¦  «         d | _        d S d S )Nr   c                 ó2   — g | ]\  }}t          |¦  «        ‘ŒS © )r.   )Ú.0ÚiÚls      r$   ú
<listcomp>z)Loopler.start_loopler.<locals>.<listcomp>“   s"   € ÐCÐCÐC¡# ! A•d˜1‘g”gÐCÐCÐCr&   FTú.r0   z.slb) rr   r4   Ústart_serverÚ	enumerater5   ru   Úloop_callbacksÚappendÚloop_responderÚlooper_callbacksÚlooper_responderÚloop_added_callbacksÚloop_added_responderÚloop_removed_callbacksÚloop_removed_responderÚmidi_binding_callbacksÚmidi_binding_responderr3   r6   r7   r   Úunused_looperr<   r=   Ú
is_runningÚsession_fileÚload_sessionÚrsplitÚosÚpathÚexistsÚload_midi_bindings)r?   rB   rD   r!   Úmidi_bindings_files        r$   Ústart_looplerzLoopler.start_loopler�   s¼  € à!"ˆÔÝ×ÒÑÔÐØCÐC­µ8´>Ñ)BÔ)BÐCÑCÔCˆŒ
Ø"'ˆÔÝÔ×&Ò& tÔ':Ñ;Ô;Ð;ÝÔ!×(Ò(¨Ô)>Ñ?Ô?Ð?ÝÔ%×,Ò,¨TÔ-FÑGÔGÐGÝÔ'×.Ò.¨tÔ/JÑKÔKÐKÝÔ'×.Ò.¨tÔ/JÑKÔKÐKå•Ô"×(Ò(Ñ*Ô*Ñ+Ô+ˆØð 	7ð 	7‰DˆAˆqØÕ%Ð%Ð%¨!µ=Ð*@Ð*@Ý�T‘
”
Ô# AÔ&×-Ò-¨d°AÑ6Ô6Ð6øØˆŒàÔÐ(Ø×Ò˜dÔ/Ñ0Ô0Ð0à!%Ô!2×!9Ò!9¸#¸qÑ!AÔ!AÀ!Ô!DÀVÑ!KÐÝŒw�~Š~Ð0Ñ1Ô1ð @Ý×+Ò+Ð,>Ñ?Ô?Ð?à $ˆDÔÐÐð )Ð(r&   c                 óœ  — t           j                             ¦   «          t           j                             ¦   «          t           j                             ¦   «          t           j                             ¦   «          t           j                             ¦   «          g | _        d| _        d| _	        t            
                    ¦   «          d| _        d S rq   )r4   r…   Úclearrˆ   rŠ   rŒ   rŽ   r5   rr   ru   Ústop_serverr‘   ©r?   s    r$   Ústop_looplerzLoopler.stop_looplerª   sŸ   € åÔ×%Ò%Ñ'Ô'Ð'ÝÔ!×'Ò'Ñ)Ô)Ð)ÝÔ%×+Ò+Ñ-Ô-Ð-ÝÔ'×-Ò-Ñ/Ô/Ð/ÝÔ'×-Ò-Ñ/Ô/Ð/ØˆŒ
Ø!"ˆÔØ"'ˆÔÝ×ÒÑÔÐØˆŒˆˆr&   c                 ót   — 	 t           j        |                              |¦  «         d S # t          $ r Y d S w xY wr   )r4   r5   ÚhitÚ
IndexError©r?   Úloop_idÚcommands      r$   Úui_loop_commandzLoopler.ui_loop_command·   sJ   € ð	ÝŒN˜7Ô#×'Ò'¨Ñ0Ô0Ð0Ð0Ð0øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚%) ©
7¶7c                 ó’   — t          |¦  «        }	 t          j        |                              |¦  «         d S # t          $ r Y d S w xY wr   )rI   r4   r5   r¡   r¢   r£   s      r$   Úloop_commandzLoopler.loop_command¾   sU   € Ý�g‘,”,ˆð	ÝŒN˜7Ô#×'Ò'¨Ñ0Ô0Ð0Ð0Ð0øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‘%8 ¸
AÁAÚdoublec                 óv   — 	 t           j        |                              ||¦  «         d S # t          $ r Y d S w xY wr   )r4   r5   Úloop_setr¢   )r?   r¤   Ú	parameterÚvalues       r$   Úui_setzLoopler.ui_setÅ   sL   € ð	ÝŒN˜7Ô#×,Ò,¨Y¸Ñ>Ô>Ð>Ð>Ð>øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚&* ª
8·8c                 óü   — 	 t           j        |         j        dk     r(t           j        |                              dd¦  «         d S t           j        |                              dd¦  «         d S # t          $ r Y d S w xY w)Nr   r\   r0   éÿÿÿÿ)r4   r5   r\   r«   r¢   ©r?   r¤   s     r$   Úui_set_delayzLoopler.ui_set_delayÌ   s„   € ð	ÝŒ~˜gÔ&Ô4°qÒ8Ð8Ý”˜wÔ'×0Ò0°À!ÑDÔDÐDÐDÐDå”˜wÔ'×0Ò0°À"ÑEÔEÐEÐEÐEøÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚AA- Á&A- Á-
A;Á:A;c                 óP   — t           j        D ]}|                     ||¦  «         Œd S r   )r4   r5   r«   )r?   r¬   r­   Úloops       r$   Ú
ui_set_allzLoopler.ui_set_allÖ   s4   € å”Nð 	,ð 	,ˆDØ�MŠM˜) UÑ+Ô+Ð+Ð+ð	,ð 	,r&   c                 ó<   — t                                ||¦  «         d S r   )r4   r:   )r?   r¬   r­   s      r$   Úui_set_globalzLoopler.ui_set_globalÛ   s   € å�Š�Y Ñ&Ô&Ð&Ð&Ð&r&   c                 ó  — || j         v rN| j         |         dk     rd| j         |<   n
d| j         |<   t                               || j         |         ¦  «         d S d| j         |<   t                               || j         |         ¦  «         d S )Nr   r0   r°   )Úchange_onlyr4   r:   )r?   r¬   s     r$   Úui_set_global_changezLoopler.ui_set_global_changeß   s‘   € à˜Ô(Ð(Ð(ØÔ 	Ô*¨QÒ.Ð.Ø./�Ô  Ñ+Ð+à.0�Ô  Ñ+Ý�LŠL˜ DÔ$4°YÔ$?Ñ@Ô@Ð@Ð@Ð@à*,ˆDÔ˜YÑ'Ý�LŠL˜ DÔ$4°YÔ$?Ñ@Ô@Ð@Ð@Ð@r&   c                 ó:   — t                                |¦  «         d S r   )r4   Úselect_loopr±   s     r$   r¼   zLoopler.select_loopë   s   € å×Ò˜WÑ%Ô%Ð%Ð%Ð%r&   c                 ó:   — t                                |¦  «         d S r   )r4   rx   )r?   Únum_channelss     r$   Úui_add_loopzLoopler.ui_add_loopï   s   € å×Ò˜,Ñ'Ô'Ð'Ð'Ð'r&   c                 ó8   — t                                ¦   «          d S r   )r4   rz   rž   s    r$   Úui_remove_loopzLoopler.ui_remove_loopó   s   € å×ÒÑÔÐÐÐr&   ÚQVariantListc                 ó   — ||f| _         d S r   ©Úcurrent_command_params)r?   r¥   Úargss      r$   Úui_set_current_commandzLoopler.ui_set_current_command÷   s   € à'.° oˆÔ#Ð#Ð#r&   c                 ó   — d | _         d S r   rÄ   rž   s    r$   Úui_unset_current_commandz Loopler.ui_unset_current_commandü   s   € ð '+ˆÔ#Ð#Ð#r&   c                 óø   — 	 | j         |d                  }n# t          $ r Y dS w xY w|dd…         \  }}|t          |¦  «        j        v r0t          |¦  «        j        |                              ||¦  «         dS dS )zO Listens for replies from SL about loops, then updates loop object accordingly.r   Nr0   )r5   r¢   r<   r6   r=   )r?   rÆ   r´   Úcontrolr­   s        r$   r‡   zLoopler.loop_responder  s’   € ð	Ø”:˜d 1œgÔ&ˆDˆDøÝð 	ð 	ð 	ØˆFˆFð	øøøà˜a˜b˜bœ‰ˆ�Ø•d˜4‘j”jÔ)Ð)Ð)Ý�‰JŒJÔ Ô(×/Ò/°°eÑ<Ô<Ð<Ð<Ð<ð *Ð)s   ‚ –
$£$c                 óX  — |dd…         \  }}|t          | ¦  «        j        v r.t          | ¦  «        j        |                              | |¦  «         | j        dk     r d| _        t                               ¦   «          | j        dk    r"d| _        t                               ¦   «          dS dS )z6 Listens for replies from SL about looper global stater0   Nr   )r<   r6   r=   rs   r4   Úenable_midi_clockrt   Údisable_smart_eighths)r?   rÆ   rË   r­   s       r$   r‰   zLoopler.looper_responder  s©   € à˜a˜b˜bœ‰ˆ�Ø•d˜4‘j”jÔ)Ð)Ð)Ý�‰JŒJÔ Ô(×/Ò/°°eÑ<Ô<Ð<àÔ! AÒ%Ð%à%&ˆDÔ"Ý×&Ò&Ñ(Ô(Ð(àÔ Ò!Ð!à!"ˆDÔÝ×*Ò*Ñ,Ô,Ð,Ð,Ð,ð "Ð!r&   c                 ó:   — | j                              |¦  «         d S r   )rv   Úemit©r?   r@   s     r$   r‹   zLoopler.loop_added_responder  s   € àÔ×!Ò! (Ñ+Ô+Ð+Ð+Ð+r&   c                 ó   — d| _         d S ©NF)ru   )r?   rÆ   s     r$   r�   zLoopler.midi_binding_responder  s   € à"'ˆÔÐÐr&   c                 óT   — | j                              t          |¦  «        ¦  «         d S r   )r5   r†   r.   rÑ   s     r$   rx   zLoopler.add_loop#  s$   € ØŒ
×Ò�$˜x™.œ.Ñ)Ô)Ð)Ð)Ð)r&   c                 ó:   — | j                              |¦  «         d S r   )ry   rÐ   rÑ   s     r$   r�   zLoopler.loop_removed_responder&  s   € ØÔ×#Ò# HÑ-Ô-Ð-Ð-Ð-r&   c                 ó8   — | j                              ¦   «          d S r   )r5   ÚpoprÑ   s     r$   rz   zLoopler.remove_loop)  s   € ØŒ
�ŠÑÔÐÐÐr&   c                 óÂ  — |dk    r?| j         d|z            ||z  z   }t          |||¦  «        }|                      ||¦  «         d S |dk    rK| j        |         j         d|z            ||z  z   }t          |||¦  «        }|                      |||¦  «         d S | j        d         j         d|z            ||z  z   }t          |||¦  «        }|                      ||¦  «         d S )Nr·   Ú_r®   r   )r6   r%   r·   r5   r®   rµ   )	r?   r¥   r¬   r@   ÚchangeÚ
knob_speedÚrminÚrmaxr!   s	            r$   Úchange_from_knobzLoopler.change_from_knob,  sú   € Ø�oÒ%Ð%Ø”˜c I™oÔ.°&¸:Ñ2EÑFˆAÝ�a˜˜tÑ$Ô$ˆAØ×Ò˜y¨!Ñ,Ô,Ð,Ð,Ð,Ø˜Ò Ð Ø”
˜8Ô$Ô-¨c°I©oÔ>À&È:ÑBUÑVˆAÝ�a˜˜tÑ$Ô$ˆAØ�KŠK˜ )¨QÑ/Ô/Ð/Ð/Ð/à”
˜1”Ô& s¨Y¡Ô7¸6ÀJÑ;NÑOˆAÝ�a˜˜tÑ$Ô$ˆAØ�OŠO˜I qÑ)Ô)Ð)Ð)Ð)r&   c                 óJ   — d| _         t                               ||¦  «         d S )NT)ru   r4   Ú
midi_learn)r?   rË   r@   s      r$   Úui_bind_requestzLoopler.ui_bind_request<  s&   € à"&ˆÔÝ×Ò˜G XÑ.Ô.Ð.Ð.Ð.r&   c                 óF   — d| _         t                               ¦   «          d S rÓ   )ru   r4   Úcancel_midi_learnrž   s    r$   Úui_cancel_bind_requestzLoopler.ui_cancel_bind_requestA  s"   € à"'ˆÔÝ×"Ò"Ñ$Ô$Ð$Ð$Ð$r&   c                 ó:   — t                                |¦  «         d S r   )r4   Úsave_session©r?   Úfs     r$   ræ   zLoopler.save_sessionF  ó   € Ý×Ò˜aÑ Ô Ð Ð Ð r&   c                 ó:   — t                                |¦  «         d S r   )r4   Úsave_midi_bindingsrç   s     r$   rë   zLoopler.save_midi_bindingsI  s   € Ý×#Ò# AÑ&Ô&Ð&Ð&Ð&r&   c                 ó:   — t                                |¦  «         d S r   )r4   r“   rç   s     r$   r“   zLoopler.load_sessionL  ré   r&   ):rF   rG   rH   r‘   r   r3   r5   r   rI   rv   ry   rr   rL   rY   rX   rW   ÚtempoÚeighth_per_cycleÚsync_sourcers   rt   ri   Úboolru   rÅ   r’   r¹   r2   r   rš   rŸ   Ústrr¦   r¨   r®   r²   rµ   r·   rº   r¼   r¿   rÁ   rÇ   rÉ   r‡   r‰   r‹   r�   rx   r�   rz   rÞ   rá   rä   ræ   rë   r“   rk   rl   s   @r$   ro   ro   i   sà  ø€ € € € € Ø€Jð ˆH�T‰NŒN€EØ�f˜S‘k”k€OØ˜˜s™œÐØ ˜ ™œÐØ�˜%‘”€JØ
ˆ(�5‰/Œ/€CØ
ˆ(�5‰/Œ/€CØˆH�U‰OŒO€EØ�x ‘}”}ÐØ�(˜3‘-”-€KØ ˜ ™œÐØ�H˜U‘O”O€MØ�H˜U‘O”O€MØ!˜ $™œÐð "ÐØ€LØ€Kð9ð 9ð 9ð 9ð 9ð 
€T�V„Vð%ð %ñ „Vð%ð4 
€T�V„Vð
 ð 
 ñ „Vð
 ð 
€Tˆ#ˆs�^„^ðð ñ „^ððð ð ð 
€Tˆ#ˆs�HÑÔðð ñ Ôðð 
€Tˆ#�Y„Yðð ñ „Yðð 
€Tˆ#ˆxÑÔð,ð ,ñ Ôð,ð 
€Tˆ#ˆxÑÔð'ð 'ñ Ôð'ð 
€Tˆ#�Y„Yð	Að 	Añ „Yð	Að 
€Tˆ#�Y„Yð&ð &ñ „Yð&ð 
€Tˆ#�Y„Yð(ð (ñ „Yð(ð 
€T�V„Vðð ñ „Vðð 
€Tˆ#ˆ~ÑÔð6ð 6ñ Ôð6ð 
€T�V„Vð+ð +ñ „Vð+ð=ð =ð =ð-ð -ð -ð ,ð ,ð ,ð(ð (ð (ð*ð *ð *ð.ð .ð .ðð ð ð*ð *ð *ð  
€Tˆ#ˆs�^„^ð/ð /ñ „^ð/ð 
€T�V„Vð%ð %ñ „Vð%ð!ð !ð !ð'ð 'ð 'ð!ð !ð !ð !ð !ð !ð !r&   ro   )Úos.pathr•   ÚPySide2.QtCorer   r   r   r   r   r   r	   r
   r   r   r   Údooperr   r   r   Ú
propertiesr   r4   r;   r%   r�   r.   ro   r}   r&   r$   ú<module>rö      sŠ  ðØ €€€ð Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  DØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ -Ð -Ð -Ð -Ð -Ð -Ð -Ð -àˆ<‰>Œ>€ð 
|€ð-ð -ð -ð€ð*D3ð D3ð D3ð D3ð D3ˆ7˜lð D3ñ D3ô D3ð D3ðLd!ð d!ð d!ð d!ð d!ˆg ð d!ñ d!ô d!ð d!ð d!ð d!r&   